This commit is contained in:
Eugene 2025-02-13 15:58:20 +01:00
parent e2036886fb
commit 9453879e1d
No known key found for this signature in database
GPG key ID: 5896FCBBDD1CF4F4
3 changed files with 16 additions and 10 deletions

View file

@ -168,9 +168,9 @@ impl russh::client::Handler for ClientHandler {
channel: Channel<Msg>,
_session: &mut Session,
) -> Result<(), Self::Error> {
let _ = self.event_tx.send(ClientHandlerEvent::ForwardedAgent(
channel,
));
let _ = self
.event_tx
.send(ClientHandlerEvent::ForwardedAgent(channel));
Ok(())
}
}

View file

@ -1,4 +1,5 @@
use std::fmt::Debug;
use bytes::Bytes;
use russh::keys::PublicKey;
use russh::server::{Auth, Handle, Msg, Session};
@ -517,9 +518,16 @@ impl russh::server::Handler for ServerHandler {
Ok(allowed)
}
async fn agent_request(&mut self, channel: ChannelId, session: &mut Session) -> Result<bool, Self::Error> {
async fn agent_request(
&mut self,
channel: ChannelId,
session: &mut Session,
) -> Result<bool, Self::Error> {
let (tx, rx) = oneshot::channel();
self.send_event(ServerHandlerEvent::AgentForward(ServerChannelId(channel), tx))?;
self.send_event(ServerHandlerEvent::AgentForward(
ServerChannelId(channel),
tx,
))?;
let allowed = rx.await.unwrap_or(false);
if allowed {
session.request_success()

View file

@ -581,7 +581,7 @@ impl ServerSession {
let _ = reply.send(true);
}
ServerHandlerEvent::AgentForward(channel,reply) => {
ServerHandlerEvent::AgentForward(channel, reply) => {
self._agent_forward(channel).await?;
let _ = reply.send(true);
}
@ -873,9 +873,7 @@ impl ServerSession {
}
RCEvent::ForwardedAgent(id) => {
if let Some(session) = &mut self.session_handle {
let server_channel = session
.channel_open_agent()
.await?;
let server_channel = session.channel_open_agent().await?;
self.channel_map
.insert(ServerChannelId(server_channel.id()), id);
@ -1271,7 +1269,7 @@ impl ServerSession {
channel_id,
ChannelOperation::AgentForward,
))
.await?;
.await?;
Ok(())
}