use clap::Args;
#[derive(Args, Debug, Clone, Default)]
pub struct StarttlsArgs {
#[arg(short = 't', long = "starttls", value_name = "PROTOCOL")]
pub protocol: Option<String>,
#[arg(long = "starttls-smtp")]
pub smtp: bool,
#[arg(long = "starttls-imap")]
pub imap: bool,
#[arg(long = "starttls-pop3")]
pub pop3: bool,
#[arg(long = "starttls-ftp")]
pub ftp: bool,
#[arg(long = "starttls-ldap")]
pub ldap: bool,
#[arg(long = "starttls-xmpp")]
pub xmpp: bool,
#[arg(long = "starttls-psql")]
pub psql: bool,
#[arg(long = "starttls-mysql")]
pub mysql: bool,
#[arg(long = "starttls-irc")]
pub irc: bool,
#[arg(long = "xmpp-server")]
pub xmpp_server: bool,
#[arg(long = "xmpphost", value_name = "DOMAIN")]
pub xmpphost: Option<String>,
#[arg(long = "rdp")]
pub rdp: bool,
}
impl StarttlsArgs {
pub fn starttls_protocol(&self) -> Option<crate::starttls::StarttlsProtocol> {
use crate::starttls::StarttlsProtocol;
if self.smtp {
Some(StarttlsProtocol::SMTP)
} else if self.imap {
Some(StarttlsProtocol::IMAP)
} else if self.pop3 {
Some(StarttlsProtocol::POP3)
} else if self.ftp {
Some(StarttlsProtocol::FTP)
} else if self.ldap {
Some(StarttlsProtocol::LDAP)
} else if self.xmpp || self.xmpp_server {
Some(StarttlsProtocol::XMPP)
} else if self.psql {
Some(StarttlsProtocol::POSTGRES)
} else if self.mysql {
Some(StarttlsProtocol::MYSQL)
} else if self.irc {
Some(StarttlsProtocol::IRC)
} else {
None
}
}
}