Add authorized remote pipe listen

This commit is contained in:
Eric Wendland 2026-05-19 19:21:42 +02:00
commit 3382899628
8 changed files with 322 additions and 21 deletions

View file

@ -365,6 +365,10 @@ pub enum PubsubCommand {
pub enum PipeCommand {
Listen {
name: String,
#[arg(long)]
node: Option<String>,
#[arg(long)]
bearer_secret: Option<String>,
},
Connect {
target: String,
@ -801,7 +805,15 @@ fn request_for_command(command: Command) -> Result<ControlRequest> {
},
},
Command::Pipe { command } => match command {
PipeCommand::Listen { name } => ControlRequest::PipeListen { name },
PipeCommand::Listen {
name,
node,
bearer_secret,
} => ControlRequest::PipeListen {
name,
node,
bearer_secret,
},
PipeCommand::Connect {
target,
node,
@ -1793,6 +1805,29 @@ fn print_response(response: ControlResponse, json: bool) -> Result<()> {
println!("connected_at_ms: {}", connection.connected_at.0);
println!("note: {}", connection.note);
}
ControlResponse::PipeRemoteListening {
peer_node_id,
peer_agent_id,
endpoint_id,
listener,
allowed,
reason,
note,
} => {
if let Some(listener) = listener {
println!("listening pipe: {}", listener.name);
println!("peer: {peer_node_id}");
println!("id: {}", listener.id);
println!("listened_at_ms: {}", listener.listened_at.0);
} else {
println!("pipe listen denied by {peer_node_id}");
}
println!("agent: {peer_agent_id}");
println!("endpoint: {endpoint_id}");
println!("allowed: {allowed}");
println!("reason: {reason}");
println!("note: {note}");
}
ControlResponse::PipeRemoteConnected {
peer_node_id,
peer_agent_id,