Sync SSH metadata over Iroh
This commit is contained in:
parent
e4b788fec2
commit
9887b47a40
7 changed files with 686 additions and 20 deletions
|
|
@ -393,6 +393,9 @@ pub enum SshCertCommand {
|
|||
cert: PathBuf,
|
||||
},
|
||||
List,
|
||||
Sync {
|
||||
node: String,
|
||||
},
|
||||
}
|
||||
|
||||
#[derive(Debug, Subcommand)]
|
||||
|
|
@ -417,6 +420,9 @@ pub enum SshRevocationCommand {
|
|||
#[arg(long, default_value = "jsonl")]
|
||||
format: String,
|
||||
},
|
||||
Sync {
|
||||
node: String,
|
||||
},
|
||||
}
|
||||
|
||||
#[derive(Debug, Args)]
|
||||
|
|
@ -681,6 +687,7 @@ fn request_for_command(command: Command) -> Result<ControlRequest> {
|
|||
cert_path: cert,
|
||||
},
|
||||
SshCertCommand::List => ControlRequest::SshCertList,
|
||||
SshCertCommand::Sync { node } => ControlRequest::SshCertSync { node },
|
||||
},
|
||||
SshCommand::Revocation { command } => match command {
|
||||
SshRevocationCommand::Add {
|
||||
|
|
@ -705,6 +712,7 @@ fn request_for_command(command: Command) -> Result<ControlRequest> {
|
|||
SshRevocationCommand::Import { path, format } => {
|
||||
ControlRequest::SshRevocationImport { path, format }
|
||||
}
|
||||
SshRevocationCommand::Sync { node } => ControlRequest::SshRevocationSync { node },
|
||||
},
|
||||
},
|
||||
Command::Init | Command::Daemon { .. } => bail!("command is handled directly"),
|
||||
|
|
@ -1140,6 +1148,29 @@ fn print_response(response: ControlResponse, json: bool) -> Result<()> {
|
|||
}
|
||||
}
|
||||
}
|
||||
ControlResponse::SshCertSynced {
|
||||
peer_node_id,
|
||||
peer_agent_id,
|
||||
endpoint_id,
|
||||
requests_imported,
|
||||
certificates_imported,
|
||||
allowed,
|
||||
reason,
|
||||
note,
|
||||
} => {
|
||||
if allowed {
|
||||
println!(
|
||||
"synced ssh cert metadata from {peer_node_id}: {requests_imported} requests, {certificates_imported} certificates"
|
||||
);
|
||||
} else {
|
||||
println!("ssh cert metadata sync denied by {peer_node_id}");
|
||||
}
|
||||
println!("agent: {peer_agent_id}");
|
||||
println!("endpoint: {endpoint_id}");
|
||||
println!("allowed: {allowed}");
|
||||
println!("reason: {reason}");
|
||||
println!("note: {note}");
|
||||
}
|
||||
ControlResponse::SshRevocationAdded { revocation } => {
|
||||
println!("added ssh revocation: {}", revocation.id);
|
||||
println!("kind: {}", revocation.kind);
|
||||
|
|
@ -1189,6 +1220,26 @@ fn print_response(response: ControlResponse, json: bool) -> Result<()> {
|
|||
}
|
||||
println!("note: {note}");
|
||||
}
|
||||
ControlResponse::SshRevocationSynced {
|
||||
peer_node_id,
|
||||
peer_agent_id,
|
||||
endpoint_id,
|
||||
revocations_imported,
|
||||
allowed,
|
||||
reason,
|
||||
note,
|
||||
} => {
|
||||
if allowed {
|
||||
println!("synced {revocations_imported} ssh revocations from {peer_node_id}");
|
||||
} else {
|
||||
println!("ssh revocation sync denied by {peer_node_id}");
|
||||
}
|
||||
println!("agent: {peer_agent_id}");
|
||||
println!("endpoint: {endpoint_id}");
|
||||
println!("allowed: {allowed}");
|
||||
println!("reason: {reason}");
|
||||
println!("note: {note}");
|
||||
}
|
||||
ControlResponse::DbAdded { db } => {
|
||||
println!("registered db: {}", db.name);
|
||||
println!("id: {}", db.id);
|
||||
|
|
|
|||
Loading…
Reference in a new issue