From ceb1047ed6bcd45f756bc2b9b0e41ddfdd694d56 Mon Sep 17 00:00:00 2001 From: gennyble Date: Thu, 27 Mar 2025 11:48:36 -0500 Subject: improve saftey --- stats_module/src/lib.rs | 20 ++++++++------------ 1 file changed, 8 insertions(+), 12 deletions(-) (limited to 'stats_module') diff --git a/stats_module/src/lib.rs b/stats_module/src/lib.rs index 96cbaa9..a56d22d 100644 --- a/stats_module/src/lib.rs +++ b/stats_module/src/lib.rs @@ -1,5 +1,3 @@ -use std::ffi::CStr; - use rusqlite::{Connection, params}; use smalldog::{ModuleRequest, ModuleResponse, Request, Response}; use time::{Duration, OffsetDateTime}; @@ -7,6 +5,7 @@ use time::{Duration, OffsetDateTime}; #[unsafe(no_mangle)] extern "C" fn cgi_handle(req: *const ModuleRequest) -> *const ModuleResponse { let mut response = Response::new(); + let mut body = String::new(); let request = Request::from_mod_request(req); let db = if let Some(path) = request.header("CORGI_STATS_DB") { @@ -32,27 +31,24 @@ extern "C" fn cgi_handle(req: *const ModuleRequest) -> *const ModuleResponse { agents.sort_by(|a, b| a.0.cmp(&b.0).reverse()); - response.push_str("

In the last fifteen minutes:

");
-	response.push_str("total | req/m | agent\n");
+	body.push_str("

In the last fifteen minutes:

");
+	body.push_str("total | req/m | agent\n");
 	for (count, agent) in &agents {
-		response.push_str(&format!(
+		body.push_str(&format!(
 			"{count:<5} | {:<5.1} | {agent}\n",
 			*count as f32 / 15.0
 		));
 	}
-	response.push_str("

"); + body.push_str("

"); + response.body(body.into_bytes()); response.into_mod_response(200) } fn make_error>(code: u16, msg: S) -> *const ModuleResponse { - unsafe { - smalldog::HEADERS[0][0] = c"Content-Length".as_ptr(); - smalldog::HEADERS[0][1] = c"text/html".as_ptr(); - } - let mut response = Response::new(); - response.push_str(msg.as_ref()); + response.header(c"Content-Length", c"text/html"); + response.body(msg.as_ref().as_bytes().to_vec()); response.into_mod_response(code) } -- cgit 1.4.1-3-g733a5