Init
This commit is contained in:
44
src/main.rs
Normal file
44
src/main.rs
Normal file
@@ -0,0 +1,44 @@
|
||||
use sha2::{Sha256, Digest};
|
||||
use std::fs::OpenOptions;
|
||||
use std::io::Write;
|
||||
use std::env;
|
||||
use clap::Parser;
|
||||
|
||||
#[derive(Parser,Default,Debug)]
|
||||
struct Argumets {
|
||||
#[clap(long, short = 'c')]
|
||||
command: String,
|
||||
#[clap(long, short = '6')]
|
||||
pref_v6: Vec<String>,
|
||||
#[clap(long, short = '4')]
|
||||
pref_v4: Vec<String>,
|
||||
#[clap(long, short = 'o')]
|
||||
out_file: String,
|
||||
}
|
||||
|
||||
fn main() {
|
||||
let args = Argumets::parse();
|
||||
|
||||
match args.command.as_str() {
|
||||
"connect" => {
|
||||
let common_name = env::var("common_name").expect("common_name variable is not set");
|
||||
let hash_binary = Sha256::digest(common_name.as_bytes());
|
||||
let hash_string: String = String::from(format!("{:x}", hash_binary));
|
||||
let mut file = OpenOptions::new().write(true).open(args.out_file.as_str()).expect("Can not open file");
|
||||
file.set_len(0).expect("failed to set len");
|
||||
let mut conf = String::new();
|
||||
for pref in args.pref_v4 {
|
||||
let conf_v4 = String::from(format!("ifconfig-push {0}.{1}.{2} 255.255.0.0\n",
|
||||
&pref, &hash_binary[0], &hash_binary[1]));
|
||||
conf.push_str(&conf_v4)
|
||||
}
|
||||
for pref in args.pref_v6 {
|
||||
let conf_v6 = String::from(format!("ifconfig-ipv6-push {0}:{1}:{2}:{3}:{4}/64\n",
|
||||
&pref, &hash_string[0..4], &hash_string[4..8], &hash_string[8..12], &hash_string[12..16]));
|
||||
conf.push_str(&conf_v6)
|
||||
}
|
||||
file.write(conf.as_bytes()).expect("Can not write file");
|
||||
}
|
||||
_ => {}
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user