X-Git-Url: http://git.euphorik.ch/?p=rup.git;a=blobdiff_plain;f=src%2Fmain.rs;fp=src%2Fmain.rs;h=f385a0e861167119beb484366219341b2c2a9240;hp=8d0a5c9275d5453e1427f724a0c9ae49080e0b40;hb=0a8aa98e54e76ba7306eee635c3f3ef3d397173e;hpb=bec878adc200ba7794d8510e2599a95b9050f976 diff --git a/src/main.rs b/src/main.rs index 8d0a5c9..f385a0e 100644 --- a/src/main.rs +++ b/src/main.rs @@ -8,10 +8,9 @@ use actix_files as fs; use actix_web::{web, middleware, App, HttpServer, HttpResponse, web::Query}; use askama::Template; -use std::io::prelude::*; +use std::{fs::File, path::Path, env::args, io::prelude::*}; use ron::de::from_reader; use serde::Deserialize; -use std::{fs::File, env::args}; use itertools::Itertools; @@ -71,9 +70,25 @@ fn read_key() -> String { ) } +fn write_key(key : &str) { + let percent_encoded = percent_encoding::utf8_percent_encode(key, percent_encoding::NON_ALPHANUMERIC).to_string(); + let mut file = File::create(consts::FILE_KEY).unwrap(); + file.write_all(percent_encoded.as_bytes()).unwrap(); +} + #[actix_rt::main] async fn main() -> std::io::Result<()> { - let key = read_key(); + let key = { + // If the key file doesn't exist then create a new one with a random key in it. + if !Path::new(consts::FILE_KEY).exists() { + let new_key = crypto::generate_key(); + write_key(&new_key); + println!("A key has been generated here: {}", consts::FILE_KEY); + new_key + } else { + read_key() + } + }; if process_args(&key) { return Ok(()) } @@ -116,7 +131,7 @@ async fn main() -> std::io::Result<()> { fn process_args(key: &str) -> bool { fn print_usage() { println!("Usage:"); - println!(" {} [--help] [--encrypt |--decrypt ]", get_exe_name()); + println!(" {} [--help] [--encrypt | --decrypt ]", get_exe_name()); } let args: Vec = args().collect();