sunset 0.4.0

A SSH library suitable for embedded and larger programs
Documentation
#[allow(unused_imports)]
use {
    crate::error::{Error, Result, TrapBug},
    log::{debug, error, info, log, trace, warn},
};

use crate::packets::{ServiceAccept, ServiceRequest};
use crate::servauth::ServAuth;
use crate::sshnames::{SSH_SERVICE_CONNECTION, SSH_SERVICE_USERAUTH};
use crate::*;
use traffic::TrafSend;

#[derive(Default, Debug)]
pub struct Server {
    pub(crate) auth: ServAuth,
}

impl Server {
    pub(crate) fn service_request(
        &self,
        p: &ServiceRequest,
        s: &mut TrafSend,
    ) -> Result<()> {
        let success = match p.name {
            SSH_SERVICE_USERAUTH => true,
            SSH_SERVICE_CONNECTION => self.auth.authed,
            _ => false,
        };
        if success {
            s.send(ServiceAccept { name: p.name })
        } else {
            warn!("Received unexpected service request '{}'", p.name);
            error::SSHProto.fail()
        }
    }
}