From 7a163f396274a1ebcda6916be85cfcd9ea6f403d Mon Sep 17 00:00:00 2001 From: Chris Beck Date: Fri, 5 Dec 2025 22:07:22 -0700 Subject: [PATCH] rename verified signal message to admin message, reformat --- signal-gateway-bin/src/admin_http/mod.rs | 4 ++-- signal-gateway-bin/src/admin_netcat/mod.rs | 4 ++-- signal-gateway/src/gateway/log_buffer.rs | 5 ++++- signal-gateway/src/gateway/log_handler.rs | 15 +++++++++++---- signal-gateway/src/gateway/mod.rs | 12 ++++++------ signal-gateway/src/lib.rs | 4 ++-- signal-gateway/src/log_format.rs | 21 ++++++++++++++++++--- signal-gateway/src/message_handler.rs | 4 ++-- 8 files changed, 47 insertions(+), 22 deletions(-) diff --git a/signal-gateway-bin/src/admin_http/mod.rs b/signal-gateway-bin/src/admin_http/mod.rs index 1202cd7..ffb5999 100644 --- a/signal-gateway-bin/src/admin_http/mod.rs +++ b/signal-gateway-bin/src/admin_http/mod.rs @@ -6,7 +6,7 @@ use async_trait::async_trait; use conf::Conf; use signal_gateway::{ - AdminMessageResponse, Context, MessageHandler, MessageHandlerResult, VerifiedSignalMessage, + AdminMessage, AdminMessageResponse, Context, MessageHandler, MessageHandlerResult, }; use std::time::Duration; @@ -49,7 +49,7 @@ struct AdminHttpHandler { impl MessageHandler for AdminHttpHandler { async fn handle_verified_signal_message( &self, - msg: VerifiedSignalMessage, + msg: AdminMessage, _context: &dyn Context, ) -> MessageHandlerResult { let response = self diff --git a/signal-gateway-bin/src/admin_netcat/mod.rs b/signal-gateway-bin/src/admin_netcat/mod.rs index 479349e..231f812 100644 --- a/signal-gateway-bin/src/admin_netcat/mod.rs +++ b/signal-gateway-bin/src/admin_netcat/mod.rs @@ -6,7 +6,7 @@ use async_trait::async_trait; use conf::Conf; use signal_gateway::{ - AdminMessageResponse, Context, MessageHandler, MessageHandlerResult, VerifiedSignalMessage, + AdminMessage, AdminMessageResponse, Context, MessageHandler, MessageHandlerResult, }; use std::time::Duration; use tokio::{ @@ -45,7 +45,7 @@ struct AdminNetcatHandler { impl MessageHandler for AdminNetcatHandler { async fn handle_verified_signal_message( &self, - msg: VerifiedSignalMessage, + msg: AdminMessage, _context: &dyn Context, ) -> MessageHandlerResult { // Connect to server diff --git a/signal-gateway/src/gateway/log_buffer.rs b/signal-gateway/src/gateway/log_buffer.rs index dd791e4..e39a580 100644 --- a/signal-gateway/src/gateway/log_buffer.rs +++ b/signal-gateway/src/gateway/log_buffer.rs @@ -51,7 +51,10 @@ impl LogBuffer { // caller-determined, but we need to pass our concrete iterator type. HRTB with the // concrete type (`F: for<'a> FnOnce(Rev>)`) works but leaks // implementation details. - pub fn with_iter(&self, f: impl FnOnce(&mut dyn ExactSizeIterator) -> R) -> R { + pub fn with_iter( + &self, + f: impl FnOnce(&mut dyn ExactSizeIterator) -> R, + ) -> R { let buf = self.buf.lock().unwrap(); let mut iter = buf.iter().rev(); f(&mut iter) diff --git a/signal-gateway/src/gateway/log_handler.rs b/signal-gateway/src/gateway/log_handler.rs index 24bfd58..425bff8 100644 --- a/signal-gateway/src/gateway/log_handler.rs +++ b/signal-gateway/src/gateway/log_handler.rs @@ -1,6 +1,6 @@ use super::log_buffer::LogBuffer; use super::route::{Destination, Limit, Route}; -use super::{SignalAlertMessage, LimitResult, Limiter, LimiterSet}; +use super::{LimitResult, Limiter, LimiterSet, SignalAlertMessage}; use crate::{ concurrent_map::ConcurrentMap, log_format::LogFormatConfig, @@ -85,7 +85,10 @@ pub struct LogHandler { impl LogHandler { /// Initialize a new log handler - pub fn new(config: LogHandlerConfig, signal_alert_mq_tx: UnboundedSender) -> Self { + pub fn new( + config: LogHandlerConfig, + signal_alert_mq_tx: UnboundedSender, + ) -> Self { let routes = config .routes .iter() @@ -133,7 +136,9 @@ impl LogHandler { // Guess at how much to reserve text.reserve(iter.len() * 128); for log_msg in iter { - self.config.log_format.write_log_msg(&mut text, log_msg, now); + self.config + .log_format + .write_log_msg(&mut text, log_msg, now); } }); text.push('\n'); @@ -180,7 +185,9 @@ impl LogHandler { let now = Utc::now(); buffer.push_back_and_drain(log_msg, |log_msg| { - self.config.log_format.write_log_msg(&mut text, log_msg, now); + self.config + .log_format + .write_log_msg(&mut text, log_msg, now); }); Some(text) diff --git a/signal-gateway/src/gateway/mod.rs b/signal-gateway/src/gateway/mod.rs index a6a993e..d42de3e 100644 --- a/signal-gateway/src/gateway/mod.rs +++ b/signal-gateway/src/gateway/mod.rs @@ -4,14 +4,14 @@ use crate::signal_jsonrpc::connect_ipc; use crate::{ alertmanager::AlertPost, + log_message::{LogMessage, Origin}, + message_handler::{ + AdminMessage, AdminMessageResponse, Context, MessageHandler, MessageHandlerResult, + }, + prometheus::{Prometheus, PrometheusConfig}, signal_jsonrpc::{ Envelope, Identity, MessageTarget, RpcClient, RpcClientError, SignalMessage, connect_tcp, }, - log_message::{LogMessage, Origin}, - message_handler::{ - AdminMessageResponse, Context, MessageHandler, MessageHandlerResult, VerifiedSignalMessage, - }, - prometheus::{Prometheus, PrometheusConfig}, }; use chrono::Utc; use conf::{Conf, Subcommands}; @@ -494,7 +494,7 @@ impl Gateway { self.handle_gateway_command(cmd).await } else if let Some(handler) = &self.message_handler { - let msg = VerifiedSignalMessage { + let msg = AdminMessage { message: data.message.clone(), timestamp: data.timestamp, sender_uuid: msg.source_uuid.clone(), diff --git a/signal-gateway/src/lib.rs b/signal-gateway/src/lib.rs index 503a75f..b975695 100644 --- a/signal-gateway/src/lib.rs +++ b/signal-gateway/src/lib.rs @@ -13,12 +13,12 @@ pub(crate) mod circular_buffer; pub(crate) mod concurrent_map; pub(crate) mod log_format; pub(crate) mod log_message; -pub(crate) mod signal_jsonrpc; pub(crate) mod prometheus; +pub(crate) mod signal_jsonrpc; pub(crate) mod transports; pub use gateway::{Gateway, GatewayConfig}; pub use log_message::{Level, LogFilter, LogMessage, LogMessageBuilder}; pub use message_handler::{ - AdminMessageResponse, Context, MessageHandler, MessageHandlerResult, VerifiedSignalMessage, + AdminMessage, AdminMessageResponse, Context, MessageHandler, MessageHandlerResult, }; diff --git a/signal-gateway/src/log_format.rs b/signal-gateway/src/log_format.rs index acfef7b..197b044 100644 --- a/signal-gateway/src/log_format.rs +++ b/signal-gateway/src/log_format.rs @@ -25,11 +25,20 @@ impl LogFormatConfig { /// /// The `now` parameter is the current time, used to calculate relative /// timestamps (e.g., "T-10s"). - pub fn write_log_msg(&self, mut writer: impl std::fmt::Write, log_msg: &LogMessage, now: DateTime) { + pub fn write_log_msg( + &self, + mut writer: impl std::fmt::Write, + log_msg: &LogMessage, + now: DateTime, + ) { // Format: "ERROR T-10s [foo bar.rs:42]: message" // Pad severity to 5 chars (left-aligned), time to 8 chars (right-aligned) if self.write_log_msg_inner(&mut writer, log_msg, now).is_err() { - error!("Couldn't write log message: {}: {}", log_msg.level.to_str(), log_msg.msg); + error!( + "Couldn't write log message: {}: {}", + log_msg.level.to_str(), + log_msg.msg + ); } } @@ -132,7 +141,13 @@ fn write_t_minus(writer: &mut impl Write, delta: TimeDelta, align: usize) -> std } // For durations < 1 minute, show hundredths; < 10 minutes, show tenths - let decimal_places = if total_secs < 60 { 2 } else if total_secs < 600 { 1 } else { 0 }; + let decimal_places = if total_secs < 60 { + 2 + } else if total_secs < 600 { + 1 + } else { + 0 + }; let frac = match decimal_places { 2 => nanos / 10_000_000, // hundredths 1 => nanos / 100_000_000, // tenths diff --git a/signal-gateway/src/message_handler.rs b/signal-gateway/src/message_handler.rs index d45bcec..e0dfe6d 100644 --- a/signal-gateway/src/message_handler.rs +++ b/signal-gateway/src/message_handler.rs @@ -9,7 +9,7 @@ use std::{error::Error, path::PathBuf}; /// that has been verified as coming from a trusted admin. #[non_exhaustive] #[derive(Clone, Debug)] -pub struct VerifiedSignalMessage { +pub struct AdminMessage { /// The text content of the message. pub message: String, /// The timestamp of the message (milliseconds since Unix epoch). @@ -111,7 +111,7 @@ pub trait MessageHandler: Send + Sync { /// handled as gateway commands). async fn handle_verified_signal_message( &self, - msg: VerifiedSignalMessage, + msg: AdminMessage, context: &dyn Context, ) -> MessageHandlerResult; }