OBHPOIUH2CPAB2ORVMOGAAQVN4NYP6GHGTIODEQ46VUFNZIUAIRQC P5SAD7JF4RWKLAZU77AHEN6YCYKBUNTCSEQVNYDKPNCZH4C25ZQAC 2B2UUFXGXMUGYT7KW6PYXSXIRVLXNBUNY6I47ULENHCSLOR4OG5QC DLPZJCIAWYHXUB5GG3O7KMYXRECSTVR7NWEAOBHEXYMTIFVJIYWQC UT24SM2F62FI6AJV6DN3TJXPKAZYCEAK4VXCNAFWLPGVEB5UQ67AC SMUTYV2CTAFI2CCZW3K6FSO2PNTIBQZOPKKURC3P2HZYBQNMP7CAC 7FRJYUI62VW257VVFQXND6OKSAILVTHGEJCXFE6CG6FIOIUTDVYAC Q323RFJSTFYUJ5FPTKT4NI7DK3KDC3O4YLBDEYWKEYCA7G276SUQC 2WEO7OZLWJJPUYK4WXLT5FD46G2MAEIHEYMDW5GASCBUNKOPXCVAC VJIXIN4TVZX2ZELE3H5PVZIO6JIG7JZ3UKEJC7TAUYLOPW6GOGOQC UHAEQPZUODJ5YVBZJPPJVLO7EBW6DC2JXHQBN26ARELAVULG3JUQC 32GIIFWR6CUE24WCZJHM2D76QVXV4SNPOUNXJB62LGALJJSWCZUQC D6H7OWTTMHHX6BTB3B6MNBOBX2L66CBL4LGSEUSAI2MCRCJDQFRQC EUHO3DAZ4D3LMHYJDLVLXBHIFAUKXMNFNDLE5ZHG4T7SVJMG55EAC ZGJF6NR27RHVKL5VNPYVTAS5RVJSGNX7YRPBH5YX4UAVY7HAJHGAC EZTTZ6OWY4X4COIXNQZFE3C7G6F36XOVCST7PXU7THFNSPRKNWWAC KGIUIQYIBBUEGBOQIFYJJNZGGSPV3KERBPYTKKCOBKZZ5CHIJ24AC HDEDMPBT6TKIKQ67T2UYC7QEKF7PG5I6Y4CMRPBDACFY4S3XEWZQC 2Q3SZY2CYYLQU5KOTZMVYBQ5B2T4K2Z37VN7PPR4DLBAAHS6XJUAC NHOSLQGG4CIWBE7VKL5MB7PSY3RZ5IVDFENMGZG6X755GGZ6B3VQC Y67GNDVBCXX5V3SL3OAQCU3NX52OR34NXK7ARKHK7EQDGCLVTHTQC let packet = self.compress.compress(&self.write[(self.write_cursor + 4)..(self.write_cursor + 4 + len)],&mut self.compress_buffer,)?;
let packet = self.compress.compress(&self.write[(self.write_cursor + 4)..(self.write_cursor + 4 + len)],&mut self.compress_buffer,)?;
/// The type of authentications, which can be a future ultimately/// resolving totype FutureAuth: Future<Output = Result<(Self, Auth), Self::Error>> + Send;/// The type of units returned by some parts of this handler.type FutureUnit: Future<Output = Result<(Self, Session), Self::Error>> + Send;/// The type of future bools returned by some parts of this handler.type FutureBool: Future<Output = Result<(Self, Session, bool), Self::Error>> + Send;/// Convert an `Auth` to `Self::FutureAuth`. This is used to/// produce the default handlers.fn finished_auth(self, auth: Auth) -> Self::FutureAuth;/// Convert a `bool` to `Self::FutureBool`. This is used to/// produce the default handlers.fn finished_bool(self, b: bool, session: Session) -> Self::FutureBool;/// Produce a `Self::FutureUnit`. This is used to produce the/// default handlers.fn finished(self, session: Session) -> Self::FutureUnit;
fn auth_password(self, user: &str, password: &str) -> Self::FutureAuth {self.finished_auth(Auth::Reject)
fn auth_password(self,user: &str,password: &str,) -> impl Future<Output = Result<(Self, Auth), Self::Error>> + Send {async { Ok((self, Auth::Reject)) }
fn auth_publickey(self, user: &str, public_key: &key::PublicKey) -> Self::FutureAuth {self.finished_auth(Auth::Reject)
fn auth_publickey(self,user: &str,public_key: &key::PublicKey,) -> impl Future<Output = Result<(Self, Auth), Self::Error>> + Send {async { Ok((self, Auth::Reject)) }
fn channel_close(self, channel: ChannelId, session: Session) -> Self::FutureUnit {self.finished(session)
fn channel_close(self,channel: ChannelId,session: Session,) -> impl Future<Output = Result<(Self, Session), Self::Error>> + Send {async { Ok((self, session)) }
fn channel_eof(self, channel: ChannelId, session: Session) -> Self::FutureUnit {self.finished(session)
fn channel_eof(self,channel: ChannelId,session: Session,) -> impl Future<Output = Result<(Self, Session), Self::Error>> + Send {async { Ok((self, session)) }
fn channel_open_session(self, channel: ChannelId, session: Session) -> Self::FutureUnit {self.finished(session)
fn channel_open_session(self,channel: ChannelId,session: Session,) -> impl Future<Output = Result<(Self, Session), Self::Error>> + Send {async { Ok((self, session)) }
fn data(self, channel: ChannelId, data: &[u8], session: Session) -> Self::FutureUnit {self.finished(session)
fn data(self,channel: ChannelId,data: &[u8],session: Session,) -> impl Future<Output = Result<(Self, Session), Self::Error>> + Send {async { Ok((self, session)) }
fn shell_request(self, channel: ChannelId, session: Session) -> Self::FutureUnit {self.finished(session)
fn shell_request(self,channel: ChannelId,session: Session,) -> impl Future<Output = Result<(Self, Session), Self::Error>> + Send {async { Ok((self, session)) }
fn exec_request(self, channel: ChannelId, data: &[u8], session: Session) -> Self::FutureUnit {self.finished(session)
fn exec_request(self,channel: ChannelId,data: &[u8],session: Session,) -> impl Future<Output = Result<(Self, Session), Self::Error>> + Send {async { Ok((self, session)) }
fn signal(self, channel: ChannelId, signal_name: Sig, session: Session) -> Self::FutureUnit {self.finished(session)
fn signal(self,channel: ChannelId,signal_name: Sig,session: Session,) -> impl Future<Output = Result<(Self, Session), Self::Error>> + Send {async { Ok((self, session)) }
fn tcpip_forward(self, address: &str, port: u32, session: Session) -> Self::FutureBool {self.finished_bool(false, session)
fn tcpip_forward(self,address: &str,port: u32,session: Session,) -> impl Future<Output = Result<(Self, Session, bool), Self::Error>> + Send {async { Ok((self, session, false)) }
fn cancel_tcpip_forward(self, address: &str, port: u32, session: Session) -> Self::FutureBool {self.finished_bool(false, session)
fn cancel_tcpip_forward(self,address: &str,port: u32,session: Session,) -> impl Future<Output = Result<(Self, Session, bool), Self::Error>> + Send {async { Ok((self, session, false)) }
//! type FutureAuth = futures::future::Ready<Result<(Self, server::Auth), anyhow::Error>>;//! type FutureUnit = futures::future::Ready<Result<(Self, Session), anyhow::Error>>;//! type FutureBool = futures::future::Ready<Result<(Self, Session, bool), anyhow::Error>>;
//! fn finished_auth(mut self, auth: Auth) -> Self::FutureAuth {//! futures::future::ready(Ok((self, auth)))//! }//! fn finished_bool(self, b: bool, s: Session) -> Self::FutureBool {//! futures::future::ready(Ok((self, s, b)))//! }//! fn finished(self, s: Session) -> Self::FutureUnit {//! futures::future::ready(Ok((self, s)))//! }//! fn channel_open_session(self, channel: ChannelId, session: Session) -> Self::FutureUnit {
//! fn channel_open_session(self, channel: ChannelId, session: Session) -> impl Future<Output = Result<(Self, Session), Self::Error>> + Send {
//! fn auth_publickey(self, _: &str, _: &key::PublicKey) -> Self::FutureAuth {//! self.finished_auth(server::Auth::Accept)
//! fn auth_publickey(self, _: &str, _: &key::PublicKey) -> impl Future<Output = Result<(Self, Auth), Self::Error>> + Send {//! async { Ok((self, server::Auth::Accept)) }
//! fn finished_bool(self, b: bool) -> Self::FutureBool {//! futures::future::ready(Ok((self, b)))//! }//! fn finished(self, session: client::Session) -> Self::FutureUnit {//! futures::future::ready(Ok((self, session)))//! }//! fn check_server_key(self, server_public_key: &key::PublicKey) -> Self::FutureBool {
//! fn check_server_key(self, server_public_key: &key::PublicKey) -> impl Future<Output = Result<(Self, bool), Self::Error>> + Send {
//! fn channel_open_confirmation(self, channel: ChannelId, max_packet_size: u32, window_size: u32, session: client::Session) -> Self::FutureUnit {
//!//! fn channel_open_confirmation(self, channel: ChannelId, max_packet_size: u32, window_size: u32, session: client::Session) -> impl Future<Output = Result<(Self, client::Session), Self::Error>> + Send {
//! fn data(self, channel: ChannelId, data: &[u8], session: client::Session) -> Self::FutureUnit {
//!//! fn data(self, channel: ChannelId, data: &[u8], session: client::Session) -> impl Future<Output = Result<(Self, client::Session), Self::Error>> + Send {
type FutureAuth = futures::future::Ready<Result<(Self, server::Auth), Self::Error>>;type FutureUnit = futures::future::Ready<Result<(Self, Session), Self::Error>>;type FutureBool = futures::future::Ready<Result<(Self, Session, bool), Self::Error>>;fn finished_auth(self, auth: Auth) -> Self::FutureAuth {futures::future::ready(Ok((self, auth)))}fn finished_bool(self, b: bool, s: Session) -> Self::FutureBool {futures::future::ready(Ok((self, s, b)))}fn finished(self, s: Session) -> Self::FutureUnit {futures::future::ready(Ok((self, s)))}fn channel_open_session(self, channel: ChannelId, session: Session) -> Self::FutureUnit {
fn channel_open_session(self,channel: ChannelId,session: Session,) -> impl Future<Output = Result<(Self, Session), Error>> + Send {
type FutureUnit = futures::future::Ready<Result<(Self, client::Session), Self::Error>>;type FutureBool = futures::future::Ready<Result<(Self, bool), Self::Error>>;fn finished_bool(self, b: bool) -> Self::FutureBool {futures::future::ready(Ok((self, b)))}fn finished(self, session: client::Session) -> Self::FutureUnit {futures::future::ready(Ok((self, session)))}
/// A future ultimately resolving into a boolean, which can be/// returned by some parts of this handler.type FutureBool: Future<Output = Result<(Self, bool), Self::Error>> + Send;/// A future ultimately resolving into unit, which can be/// returned by some parts of this handler.type FutureUnit: Future<Output = Result<(Self, Session), Self::Error>> + Send;/// Convert a `bool` to `Self::FutureBool`. This is used to/// produce the default handlers.fn finished_bool(self, b: bool) -> Self::FutureBool;
fn auth_banner(self, banner: &str, session: Session) -> Self::FutureUnit {self.finished(session)
fn auth_banner(self,banner: &str,session: Session,) -> impl Future<Output = Result<(Self, Session), Self::Error>> + Send {async { Ok((self, session)) }
fn check_server_key(self, server_public_key: &key::PublicKey) -> Self::FutureBool {self.finished_bool(false)
fn check_server_key(self,server_public_key: &key::PublicKey,) -> impl Future<Output = Result<(Self, bool), Self::Error>> + Send {async { Ok((self, false)) }
type FutureUnit = futures::future::Ready<Result<(Self, client::Session), Self::Error>>;type FutureBool = futures::future::Ready<Result<(Self, bool), Self::Error>>;fn finished_bool(self, b: bool) -> Self::FutureBool {futures::future::ready(Ok((self, b)))}fn finished(self, session: client::Session) -> Self::FutureUnit {futures::future::ready(Ok((self, session)))}fn check_server_key(self, _server_public_key: &key::PublicKey) -> Self::FutureBool {self.finished_bool(true)
fn check_server_key(self,_server_public_key: &key::PublicKey,) -> impl Future<Output = Result<(Self, bool), Self::Error>> + Send {async { Ok((self, true)) }
type FutureUnit = futures::future::Ready<Result<(Self, client::Session), Self::Error>>;type FutureBool = futures::future::Ready<Result<(Self, bool), Self::Error>>;fn finished_bool(self, b: bool) -> Self::FutureBool {futures::future::ready(Ok((self, b)))}fn finished(self, session: client::Session) -> Self::FutureUnit {futures::future::ready(Ok((self, session)))}fn check_server_key(self, server_public_key: &key::PublicKey) -> Self::FutureBool {
fn check_server_key(self,server_public_key: &key::PublicKey,) -> impl Future<Output = Result<(Self, bool), Self::Error>> + Send {