diff options
author | gennyble <gen@nyble.dev> | 2025-03-12 00:48:23 -0500 |
---|---|---|
committer | gennyble <gen@nyble.dev> | 2025-03-12 00:48:23 -0500 |
commit | a6edce3fa4c6b3c80047a072175eccefa81e7f58 (patch) | |
tree | af3c06b437abce5aed8106ca1085304ddec19fb9 | |
parent | dc6e61580411d07d966c6fe15f0f0e32e2c70e2e (diff) | |
download | corgi-a6edce3fa4c6b3c80047a072175eccefa81e7f58.tar.gz corgi-a6edce3fa4c6b3c80047a072175eccefa81e7f58.zip |
allow setting port in settings
-rw-r--r-- | src/main.rs | 24 |
1 files changed, 21 insertions, 3 deletions
diff --git a/src/main.rs b/src/main.rs index 31a5e00..0493fdb 100644 --- a/src/main.rs +++ b/src/main.rs @@ -4,7 +4,7 @@ use std::{ time::Instant, }; -use confindent::Confindent; +use confindent::{Confindent, ValueParseError}; use http_body_util::{BodyExt, Full}; use hyper::{ HeaderMap, Request, Response, StatusCode, @@ -34,12 +34,23 @@ fn main() { let env = environment .map(|e| e.values().map(|v| (v.key_owned(), v.value_owned().unwrap())).collect()); - let settings = Settings { + let mut settings = Settings { port: 26744, script_filename: script.value_owned().expect("'Script' key has no value'"), env: env.unwrap_or_default(), }; + if let Some(server) = conf.child("Server") { + match server.child_parse("Port") { + Err(ValueParseError::NoValue) => (), + Err(err) => { + eprintln!("Server.Port is malformed: {err}"); + std::process::exit(1); + } + Ok(port) => settings.port = port, + } + } + let rt = Runtime::new().unwrap(); rt.block_on(async { run(settings).await }); } @@ -101,6 +112,13 @@ impl Svc { let body = req.into_body().collect().await.unwrap().to_bytes(); let content_length = body.len(); + let uagent = headers + .get("user-agent") + .map(|s| s.to_str().ok()) + .flatten() + .unwrap_or_default() + .to_owned(); + // Find the client address let client_addr = { let x_forward = Self::parse_addr_from_header(headers.get("x-forwarded-for")); @@ -152,7 +170,7 @@ impl Svc { } println!( - "served to [{client_addr}]\n\tcgi took {}ms. total time {}ms", + "served to [{client_addr}]\n\tcgi took {}ms. total time {}ms\n\tUA: {uagent}", cgi_time.as_millis(), start.elapsed().as_millis() ); |