blob: 31c0acc8592c38ebff6df26b105db4b7cb84c5cf (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
|
pub struct Args {
pub ip: String,
pub port: u16,
}
pub fn parse_args() -> Args {
let args: Vec<String> = std::env::args().collect();
let mut ip = "127.0.0.1".to_string();
let mut port = 11525;
let mut i = 1;
while i < args.len() {
if args[i] == "-p" {
if i + 1 < args.len() {
port = args[i + 1].parse::<u16>().unwrap_or_else(|_| {
eprintln!("Invalid port number: {}", args[i + 1]);
std::process::exit(1);
});
i += 2;
} else {
eprintln!("-p requires a port number");
std::process::exit(1);
}
} else if args[i] == "-i" {
if i + 1 < args.len() {
ip = args[i + 1].clone();
if ip != "127.0.0.1" && ip != "0.0.0.0" {
eprintln!("Invalid IP address: {}. Must be 127.0.0.1 or 0.0.0.0", ip);
std::process::exit(1);
}
i += 2;
} else {
eprintln!("-i requires an IP address");
std::process::exit(1);
}
} else {
eprintln!("Unknown argument: {}", args[i]);
std::process::exit(1);
}
}
Args { ip, port }
}
|