mirror of
https://github.com/jmcorgan/fips.git
synced 2026-08-09 08:14:42 +00:00
Reduce info-level noise by moving intermediate steps, periodic telemetry, cross-connection resolution details, and redundant messages to debug. Info output now focuses on operator-relevant state changes: lifecycle events, peer promotions, session establishment, parent switches, and transport start/stop. Key categories demoted: - Handshake cross-connection resolution mechanics (10 messages) - Periodic MMP link/session metric reports (4 messages) - TUN cleanup messages redundant with lifecycle shutdown (4 messages) - Transport "packet channel closed" shutdown messages (4 messages) - Retry scheduling, discovery lookup initiation, other intermediate steps Change default RUST_LOG from debug to info in systemd unit files.
69 lines
2.2 KiB
Rust
69 lines
2.2 KiB
Rust
//! Mutating control socket commands.
|
|
//!
|
|
//! Commands that modify node state (connect, disconnect) are handled here,
|
|
//! separate from read-only queries in `queries.rs`.
|
|
|
|
use super::protocol::Response;
|
|
use crate::node::Node;
|
|
use serde_json::Value;
|
|
use tracing::debug;
|
|
|
|
/// Dispatch a mutating command to the appropriate handler.
|
|
pub async fn dispatch(node: &mut Node, command: &str, params: Option<&Value>) -> Response {
|
|
match command {
|
|
"connect" => connect(node, params).await,
|
|
"disconnect" => disconnect(node, params),
|
|
_ => Response::error(format!("unknown command: {command}")),
|
|
}
|
|
}
|
|
|
|
/// Connect to a peer.
|
|
///
|
|
/// Params: `{"npub": "npub1...", "address": "host:port", "transport": "udp"}`
|
|
async fn connect(node: &mut Node, params: Option<&Value>) -> Response {
|
|
let Some(params) = params else {
|
|
return Response::error("missing params for connect");
|
|
};
|
|
|
|
let npub = match params.get("npub").and_then(|v| v.as_str()) {
|
|
Some(v) => v,
|
|
None => return Response::error("missing 'npub' parameter"),
|
|
};
|
|
let address = match params.get("address").and_then(|v| v.as_str()) {
|
|
Some(v) => v,
|
|
None => return Response::error("missing 'address' parameter"),
|
|
};
|
|
let transport = match params.get("transport").and_then(|v| v.as_str()) {
|
|
Some(v) => v,
|
|
None => return Response::error("missing 'transport' parameter"),
|
|
};
|
|
|
|
debug!(npub = %npub, address = %address, transport = %transport, "API connect requested");
|
|
|
|
match node.api_connect(npub, address, transport).await {
|
|
Ok(data) => Response::ok(data),
|
|
Err(msg) => Response::error(msg),
|
|
}
|
|
}
|
|
|
|
/// Disconnect a peer.
|
|
///
|
|
/// Params: `{"npub": "npub1..."}`
|
|
fn disconnect(node: &mut Node, params: Option<&Value>) -> Response {
|
|
let Some(params) = params else {
|
|
return Response::error("missing params for disconnect");
|
|
};
|
|
|
|
let npub = match params.get("npub").and_then(|v| v.as_str()) {
|
|
Some(v) => v,
|
|
None => return Response::error("missing 'npub' parameter"),
|
|
};
|
|
|
|
debug!(npub = %npub, "API disconnect requested");
|
|
|
|
match node.api_disconnect(npub) {
|
|
Ok(data) => Response::ok(data),
|
|
Err(msg) => Response::error(msg),
|
|
}
|
|
}
|