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.