Add authorized remote pipe listen
This commit is contained in:
parent
7e39a19c18
commit
3382899628
8 changed files with 322 additions and 21 deletions
|
|
@ -280,6 +280,8 @@ pub enum ControlRequest {
|
|||
},
|
||||
PipeListen {
|
||||
name: String,
|
||||
node: Option<String>,
|
||||
bearer_secret: Option<String>,
|
||||
},
|
||||
PipeConnect {
|
||||
target: String,
|
||||
|
|
@ -579,6 +581,15 @@ pub enum ControlResponse {
|
|||
PipeListening {
|
||||
listener: PipeListener,
|
||||
},
|
||||
PipeRemoteListening {
|
||||
peer_node_id: String,
|
||||
peer_agent_id: String,
|
||||
endpoint_id: String,
|
||||
listener: Option<PipeListener>,
|
||||
allowed: bool,
|
||||
reason: String,
|
||||
note: String,
|
||||
},
|
||||
PipeConnected {
|
||||
connection: PipeConnection,
|
||||
},
|
||||
|
|
@ -716,6 +727,12 @@ pub enum PeerControlRequest {
|
|||
nonce: String,
|
||||
bearer_proof: Option<BearerProof>,
|
||||
},
|
||||
PipeListen {
|
||||
peer_card: PeerCard,
|
||||
name: String,
|
||||
nonce: String,
|
||||
bearer_proof: Option<BearerProof>,
|
||||
},
|
||||
SshProxyConnect {
|
||||
peer_card: PeerCard,
|
||||
nonce: String,
|
||||
|
|
@ -864,6 +881,18 @@ pub enum PeerControlResponse {
|
|||
nonce: String,
|
||||
note: String,
|
||||
},
|
||||
PipeListening {
|
||||
node_id: String,
|
||||
agent_id: String,
|
||||
endpoint_id: String,
|
||||
remote_endpoint_id: String,
|
||||
listener: Option<PipeListener>,
|
||||
allowed: bool,
|
||||
reason: String,
|
||||
evaluated_ops: usize,
|
||||
nonce: String,
|
||||
note: String,
|
||||
},
|
||||
SshProxyConnected {
|
||||
node_id: String,
|
||||
agent_id: String,
|
||||
|
|
@ -1163,6 +1192,8 @@ mod tests {
|
|||
|
||||
let request = ControlRequest::PipeListen {
|
||||
name: "inbox".to_owned(),
|
||||
node: Some("node:peer".to_owned()),
|
||||
bearer_secret: Some("bearer:test".to_owned()),
|
||||
};
|
||||
assert_eq!(
|
||||
decode_request(&encode_request(&request).expect("encode")).expect("decode"),
|
||||
|
|
@ -1256,6 +1287,25 @@ mod tests {
|
|||
response
|
||||
);
|
||||
|
||||
let response = ControlResponse::PipeRemoteListening {
|
||||
peer_node_id: "node:peer".to_owned(),
|
||||
peer_agent_id: "agent:peer".to_owned(),
|
||||
endpoint_id: "endpoint:peer".to_owned(),
|
||||
listener: Some(PipeListener {
|
||||
id: "pipe:inbox".into(),
|
||||
name: "inbox".to_owned(),
|
||||
listened_at: geth_types::UnixMillis(1),
|
||||
note: "remote".to_owned(),
|
||||
}),
|
||||
allowed: true,
|
||||
reason: "direct grant".to_owned(),
|
||||
note: "pipe listen".to_owned(),
|
||||
};
|
||||
assert_eq!(
|
||||
decode_response(&encode_response(&response).expect("encode")).expect("decode"),
|
||||
response
|
||||
);
|
||||
|
||||
let request = ControlRequest::SshProxyConnect {
|
||||
node: "node:peer".to_owned(),
|
||||
bearer_secret: None,
|
||||
|
|
@ -1662,6 +1712,28 @@ mod tests {
|
|||
request
|
||||
);
|
||||
|
||||
let request = PeerControlRequest::PipeListen {
|
||||
peer_card: PeerCard {
|
||||
node_id: "node:caller".into(),
|
||||
agent_id: "agent:caller".into(),
|
||||
endpoints: Vec::new(),
|
||||
issued_at: geth_types::UnixMillis(1),
|
||||
signature: geth_discovery::SignatureMetadata {
|
||||
namespace: "geth.peer-card.v1@geth.local".to_owned(),
|
||||
signer: "agent:caller".to_owned(),
|
||||
public_key: "key".to_owned(),
|
||||
signature: "sig".to_owned(),
|
||||
},
|
||||
},
|
||||
name: "inbox".to_owned(),
|
||||
nonce: "nonce".to_owned(),
|
||||
bearer_proof: None,
|
||||
};
|
||||
assert_eq!(
|
||||
decode_peer_request(&encode_peer_request(&request).expect("encode")).expect("decode"),
|
||||
request
|
||||
);
|
||||
|
||||
let response = PeerControlResponse::SshProxyConnected {
|
||||
node_id: "node:peer".to_owned(),
|
||||
agent_id: "agent:peer".to_owned(),
|
||||
|
|
|
|||
Loading…
Reference in a new issue