[mio] 完善提示信息

This commit is contained in:
lubeilin
2024-03-13 21:17:01 +08:00
parent 066e655c30
commit d2c5aac178
4 changed files with 31 additions and 10 deletions
+11 -1
View File
@@ -2,7 +2,7 @@ use std::process;
use console::style; use console::style;
use vnt::handle::callback::ConnectInfo; use vnt::handle::callback::{ConnectInfo, ErrorType};
use vnt::{DeviceInfo, ErrorInfo, HandshakeInfo, RegisterInfo, VntCallback}; use vnt::{DeviceInfo, ErrorInfo, HandshakeInfo, RegisterInfo, VntCallback};
#[derive(Clone)] #[derive(Clone)]
@@ -32,6 +32,16 @@ impl VntCallback for VntHandler {
fn error(&self, info: ErrorInfo) { fn error(&self, info: ErrorInfo) {
println!("{}", style(format!("error {}", info)).red()); println!("{}", style(format!("error {}", info)).red());
match info.code {
ErrorType::TokenError
| ErrorType::AddressExhausted
| ErrorType::IpAlreadyExists
| ErrorType::InvalidIp
| ErrorType::LocalIpExists => {
self.stop();
}
_ => {}
}
} }
fn stop(&self) { fn stop(&self) {
+5 -2
View File
@@ -30,7 +30,6 @@ impl CommandServer {
let (len, addr) = udp.recv_from(&mut buf)?; let (len, addr) = udp.recv_from(&mut buf)?;
match std::str::from_utf8(&buf[..len]) { match std::str::from_utf8(&buf[..len]) {
Ok(cmd) => { Ok(cmd) => {
log::info!("收到cmd={:?}", cmd);
if let Ok(out) = command(cmd, &vnt) { if let Ok(out) = command(cmd, &vnt) {
if let Err(e) = udp.send_to(out.as_bytes(), addr) { if let Err(e) = udp.send_to(out.as_bytes(), addr) {
log::warn!("cmd={},err={:?}", cmd, e); log::warn!("cmd={},err={:?}", cmd, e);
@@ -56,6 +55,7 @@ fn save_port(port: u16) -> io::Result<()> {
} }
fn command(cmd: &str, vnt: &Vnt) -> io::Result<String> { fn command(cmd: &str, vnt: &Vnt) -> io::Result<String> {
let cmd = cmd.trim();
let out_str = match cmd { let out_str = match cmd {
"route" => serde_yaml::to_string(&crate::command::command_route(vnt)) "route" => serde_yaml::to_string(&crate::command::command_route(vnt))
.unwrap_or_else(|e| format!("error {:?}", e)), .unwrap_or_else(|e| format!("error {:?}", e)),
@@ -68,7 +68,10 @@ fn command(cmd: &str, vnt: &Vnt) -> io::Result<String> {
"stopped".to_string() "stopped".to_string()
} }
_ => { _ => {
format!("command '{}' not found. \n Try to enter: 'help'\n", cmd) format!(
"command '{}' not found. Try to enter: 'route'/'list'/'stop' \n",
cmd
)
} }
}; };
Ok(out_str) Ok(out_str)
+1 -1
View File
@@ -171,7 +171,7 @@ pub fn read_config(file_path: &str) -> io::Result<(Config, bool)> {
file_conf.device_name, file_conf.device_name,
use_channel_type, use_channel_type,
file_conf.packet_loss, file_conf.packet_loss,
file_conf.packet_delay file_conf.packet_delay,
) )
.unwrap(); .unwrap();
Ok((config, file_conf.cmd)) Ok((config, file_conf.cmd))
+14 -6
View File
@@ -296,8 +296,9 @@ fn main() {
.expect("--packet-loss"); .expect("--packet-loss");
let packet_delay = matches let packet_delay = matches
.opt_get::<u32>("packet-delay") .opt_get::<u32>("packet-delay")
.expect("--packet-delay").unwrap_or(0); .expect("--packet-delay")
let config = Config::new( .unwrap_or(0);
let config = match Config::new(
#[cfg(any(target_os = "windows", target_os = "linux"))] #[cfg(any(target_os = "windows", target_os = "linux"))]
tap, tap,
token, token,
@@ -324,9 +325,14 @@ fn main() {
device_name, device_name,
use_channel_type, use_channel_type,
packet_loss, packet_loss,
packet_delay packet_delay,
) ) {
.unwrap(); Ok(config) => config,
Err(e) => {
println!("config error: {}", e);
return;
}
};
(config, cmd) (config, cmd)
}; };
println!("version {}", vnt::VNT_VERSION); println!("version {}", vnt::VNT_VERSION);
@@ -467,7 +473,9 @@ fn print_usage(program: &str, _opts: Options) {
println!(" --use-channel <p2p> 使用通道 relay/p2p/all,默认两者都使用"); println!(" --use-channel <p2p> 使用通道 relay/p2p/all,默认两者都使用");
println!(" --nic <tun0> 指定虚拟网卡名称"); println!(" --nic <tun0> 指定虚拟网卡名称");
println!(" --packet-loss <0> 模拟丢包,取值0~1之间的小数,程序会按设定的概率主动丢包,可用于模拟弱网"); println!(" --packet-loss <0> 模拟丢包,取值0~1之间的小数,程序会按设定的概率主动丢包,可用于模拟弱网");
println!(" --packet-delay <0> 模拟延迟,整数,单位毫秒(ms),程序会按设定的值延迟发包,可用于模拟弱网"); println!(
" --packet-delay <0> 模拟延迟,整数,单位毫秒(ms),程序会按设定的值延迟发包,可用于模拟弱网"
);
println!(); println!();
println!( println!(