1 个不稳定发布
0.1.5 | 2021年5月22日 |
---|---|
0.1.4 |
|
0.1.0 |
|
#534 in 配置
380KB
13K SLoC
rust-uci
OpenWRT libuci 对 Rust 编程语言的绑定。
许可
libuci 在 GPLv2 许可下。
此存储库中的文件许可为以下之一
- Apache License,版本 2.0 (LICENSE-APACHE 或 http://www.apache.org/licenses/LICENSE-2.0)
- MIT 许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
供您选择。
贡献
除非您明确说明,否则您提交的任何有意包含在作品中的贡献,根据 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