about summary refs log tree commit diff
diff options
context:
space:
mode:
authorgennyble <gen@nyble.dev>2025-03-12 00:48:23 -0500
committergennyble <gen@nyble.dev>2025-03-12 00:48:23 -0500
commita6edce3fa4c6b3c80047a072175eccefa81e7f58 (patch)
treeaf3c06b437abce5aed8106ca1085304ddec19fb9
parentdc6e61580411d07d966c6fe15f0f0e32e2c70e2e (diff)
downloadcorgi-a6edce3fa4c6b3c80047a072175eccefa81e7f58.tar.gz
corgi-a6edce3fa4c6b3c80047a072175eccefa81e7f58.zip
allow setting port in settings
-rw-r--r--src/main.rs24
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()
 		);