diff --git a/src/bin/ptth_server.rs b/src/bin/ptth_server.rs index 65a8189..4b4e047 100644 --- a/src/bin/ptth_server.rs +++ b/src/bin/ptth_server.rs @@ -17,6 +17,9 @@ struct Opt { #[structopt (long)] asset_root: Option , + + #[structopt (long)] + print_tripcode: bool, } fn main () -> Result <(), Box > { @@ -26,6 +29,11 @@ fn main () -> Result <(), Box > { let path = opt.config_path.clone ().unwrap_or_else (|| PathBuf::from ("./config/ptth_server.toml")); let config_file: ptth::server::ConfigFile = ptth::load_toml::load (&path); + if opt.print_tripcode { + println! (r#""{}" = "{}""#, config_file.name, config_file.tripcode ()); + return Ok (()); + } + let mut rt = if false { debug! ("Trying to use less RAM"); diff --git a/src/server/mod.rs b/src/server/mod.rs index 7171c68..334e8c8 100644 --- a/src/server/mod.rs +++ b/src/server/mod.rs @@ -119,6 +119,12 @@ pub struct ConfigFile { pub file_server_root: Option , } +impl ConfigFile { + pub fn tripcode (&self) -> String { + base64::encode (blake3::hash (self.api_key.as_bytes ()).as_bytes ()) + } +} + #[derive (Default)] pub struct Config { pub relay_url: String, @@ -145,10 +151,8 @@ pub async fn run_server ( server_name: config_file.name.clone (), }; - let tripcode = base64::encode (blake3::hash (config_file.api_key.as_bytes ()).as_bytes ()); - info! ("Server name is {}", config_file.name); - info! ("Tripcode is {}", tripcode); + info! ("Tripcode is {}", config_file.tripcode ()); let mut headers = reqwest::header::HeaderMap::new (); headers.insert ("X-ApiKey", config_file.api_key.try_into ().unwrap ()); @@ -255,3 +259,20 @@ pub async fn run_server ( Ok (()) } + +#[cfg (test)] +mod tests { + use super::*; + + #[test] + fn tripcode_algo () { + let config = ConfigFile { + name: "TestName".into (), + api_key: "PlaypenCausalPlatformCommodeImproveCatalyze".into (), + relay_url: "".into (), + file_server_root: None, + }; + + assert_eq! (config.tripcode (), "A9rPwZyY89Ag4TJjMoyYA2NeGOm99Je6rq1s0rg8PfY=".to_string ()); + } +} diff --git a/todo.md b/todo.md index 47e3694..1327803 100644 --- a/todo.md +++ b/todo.md @@ -1,4 +1,3 @@ -- Print tripcode without running the server - Reload relay config (or at least tripcodes) without downtime - "Preview as" feature for Markdown (It's not threaded through the relay yet) - Remote `tail -f` (_Complicated_) (Maybe use chunked encoding or something?)