pub struct SSHServer<'a> { /* private fields */ }
Expand description
An async SSH server instance
The run()
method runs the session to completion. progress()
must be polled, and responses given to the events provided.
Once the client has opened sessions, those can be retrieved with stdio()
and stdio_stderr()
methods.
This is async executor agnostic.
Implementations§
Source§impl<'a> SSHServer<'a>
impl<'a> SSHServer<'a>
pub fn new(inbuf: &'a mut [u8], outbuf: &'a mut [u8]) -> Self
Sourcepub async fn run(
&self,
rsock: &mut impl Read,
wsock: &mut impl Write,
) -> Result<()>
pub async fn run( &self, rsock: &mut impl Read, wsock: &mut impl Write, ) -> Result<()>
Runs the session to completion.
rsock
and wsock
are the SSH network channel (TCP port 22 or equivalent).
Sourcepub async fn progress<'g, 'f>(
&'g self,
ph: &'f mut ProgressHolder<'g, 'a, Server>,
) -> Result<ServEvent<'f, 'a>>
pub async fn progress<'g, 'f>( &'g self, ph: &'f mut ProgressHolder<'g, 'a, Server>, ) -> Result<ServEvent<'f, 'a>>
Returns an event from the SSH session.
Note that on return ProgressHolder
holds a mutex over the session,
so most other calls to SSHServer
will block until the ProgressHolder
is dropped.
Sourcepub async fn stdio(&self, ch: ChanHandle) -> Result<ChanInOut<'_>>
pub async fn stdio(&self, ch: ChanHandle) -> Result<ChanInOut<'_>>
Returns a ChanInOut
representing a channel.
For a shell this is stdin/stdout, for other channel types it is the only
data type.
ch
is the ChanHandle
returned after accepting a ServEvent::OpenSession
event.
Sourcepub async fn stdio_stderr(
&self,
ch: ChanHandle,
) -> Result<(ChanInOut<'_>, ChanOut<'_>)>
pub async fn stdio_stderr( &self, ch: ChanHandle, ) -> Result<(ChanInOut<'_>, ChanOut<'_>)>
Retrieve the stdin/stdout/stderr streams.
If stderr is not required, use stdio()
instead to avoid needing to poll
the returned stderr.
The session will block until the streams are drained (they use the session buffer),
so they must be drained if used.