3个不稳定版本
0.2.0 | 2024年4月7日 |
---|---|
0.1.1 | 2023年11月1日 |
0.1.0 | 2023年8月5日 |
#8 in #ports
用于 upnp-daemon
18KB
162 行
easy-upnp
轻松打开和关闭UPnP端口。
这是一个围绕IGD的简约封装,用于通过UPnP打开和关闭网络端口。主要这个库用于CLI应用upnp-daemon
,但也可以用作其他仅希望以最小配置打开和关闭端口的crate的库。
示例
以下是一个实际操作示例,演示其用法。它将添加一些端口,然后立即删除它们。
use std::error::Error;
use log::error;
use easy_upnp::{add_ports, delete_ports, Ipv4Cidr, PortMappingProtocol, UpnpConfig};
fn get_configs() -> Result<[UpnpConfig; 3], Box<dyn Error>> {
let config_no_address = UpnpConfig {
address: None,
port: 80,
protocol: PortMappingProtocol::TCP,
duration: 3600,
comment: "Webserver".to_string(),
};
let config_specific_address = UpnpConfig {
address: Some(Ipv4Cidr::from_str("192.168.0.10/24")?),
port: 8080,
protocol: PortMappingProtocol::TCP,
duration: 3600,
comment: "Webserver alternative".to_string(),
};
let config_address_range = UpnpConfig {
address: Some(Ipv4Cidr::from_str("192.168.0")?),
port: 8081,
protocol: PortMappingProtocol::TCP,
duration: 3600,
comment: "Webserver second alternative".to_string(),
};
Ok([
config_no_address,
config_specific_address,
config_address_range,
])
}
fn main() -> Result<(), Box<dyn Error>> {
for result in add_ports(get_configs()?) {
if let Err(err) = result {
error!("{}", err);
}
}
for result in delete_ports(get_configs()?) {
if let Err(err) = result {
error!("{}", err);
}
}
Ok(())
}
依赖项
~5.5–7.5MB
~165K SLoC