1 个不稳定发布

0.1.5 2021年5月22日
0.1.4 2021年5月22日
0.1.0 2021年3月25日

#534 in 配置

MIT/Apache

380KB
13K SLoC

C 10K SLoC // 0.1% comments Rust 2K SLoC // 0.0% comments Shell 653 SLoC // 0.0% comments Lua 59 SLoC // 0.1% comments

rust-uci

crates.io

OpenWRT libuci 对 Rust 编程语言的绑定。

文档

许可

libuci 在 GPLv2 许可下。

此存储库中的文件许可为以下之一

供您选择。

贡献

除非您明确说明,否则您提交的任何有意包含在作品中的贡献,根据 Apache-2.0 许可证的定义,应双许可如上所述,无任何额外条款或条件。


lib.rs:

OpenWRT UCI 绑定

此 crate 提供了对 OpenWRT 统一配置接口 C 库的安全接口。

构建

构建此 crate 需要 UCI 库和头文件。有多种方法可以定位 UCI。

OpenWRT SDK 内部

如果在 OpenWRT SDK 内部使用 OpenWRT 的 UCI 包构建,请使用相应的 Makefile 设置环境变量 UCI_DIR=$(STAGING_DIR)/usr。rust-uci 将自动使用目标系统的头文件和库。

供应商

如果没有设置 UCI_DIR 变量,rust-uci 将针对分发版 libuci 源文件(许可下 GPLv2)进行编译。

示例用法

use rust_uci::Uci;

let mut uci = Uci::new()?;
// Get type of a section
assert_eq!(uci.get("network.wan")?, "interface");
// Get value of an option, UCI's extended syntax is supported
assert_eq!(uci.get("network.@interface[0].proto")?, "static");
assert_eq!(uci.get("network.lan.proto")?, "static");

// Create a new section
uci.set("network.newnet", "interface")?;
uci.set("network.newnet.proto", "static")?;
uci.set("network.newnet.ifname", "en0")?;
uci.set("network.newnet.enabled", "1")?;
uci.set("network.newnet.ipaddr", "2.3.4.5")?;
uci.set("network.newnet.test", "123")?;
uci.delete("network.newnet.test")?;
// IMPORTANT: Commit or revert the changes
uci.commit("network")?;
uci.revert("network")?;

依赖项

~0–2.1MB
~41K SLoC