use std::path::PathBuf; use structopt::StructOpt; #[derive(Debug, StructOpt)] #[structopt( name = "martillo-maldito", about = "A simple iptables wrapper, including a ban server" )] pub enum Cli { #[structopt(about = "Initialize ban server")] BanServer { #[structopt(name = "Ssh auth log file", short = "f", long = "ssh-file")] ssh_auth_log: PathBuf, #[structopt(name = "Iptables save file", short = "s", long = "iptables-save")] iptables_save: Option, }, #[structopt(about = "List all banned ips")] ListBannedIps { #[structopt(name = "Docker", short = "d", long = "docker")] docker: bool, }, #[structopt(about = "List all secured ports")] ListSecuredPorts { #[structopt(name = "Docker", short = "d", long = "docker")] docker: bool, }, #[structopt(about = "Map secured ports to allowed ips")] MapSecuredPortsAllowedIps { #[structopt(name = "Docker", short = "d", long = "docker")] docker: bool, }, #[structopt(about = "Check if a port is secured")] IsPortSecured { #[structopt(name = "Port to check", short = "p", long = "port")] port: u16, #[structopt(name = "Docker", short = "d", long = "docker")] docker: bool, }, #[structopt(about = "Ban port")] SecurePort { #[structopt(name = "Port to ban", short = "p", long = "port")] port: u16, #[structopt(name = "Docker", short = "d", long = "docker")] docker: bool, #[structopt(name = "Position", short = "P", long = "position")] position: Option, }, #[structopt(about = "Unban port")] UnsecurePort { #[structopt(name = "Port to unban", short = "p", long = "port")] port: u16, #[structopt(name = "Docker", short = "d", long = "docker")] docker: bool, }, #[structopt(about = "Allow ip and port")] AllowIpForPort { #[structopt(name = "Ip to allow", short = "i", long = "ip")] ip: String, #[structopt(name = "Port to allow", short = "p", long = "port")] port: u16, #[structopt(name = "Docker", short = "d", long = "docker")] docker: bool, #[structopt(name = "Position", short = "P", long = "position")] position: Option, }, #[structopt(about = "Allow port for only an ip")] OnlyIpForPort { #[structopt(name = "Ip to allow", short = "i", long = "ip")] ip: String, #[structopt(name = "Port to allow", short = "p", long = "port")] port: u16, #[structopt(name = "Docker", short = "d", long = "docker")] docker: bool, }, #[structopt(about = "Removes an allow port for an ip")] RemoveAllowIpPort { #[structopt(name = "Ip to remove", short = "i", long = "ip")] ip: String, #[structopt(name = "Port to remove", short = "p", long = "port")] port: u16, #[structopt(name = "Docker", short = "d", long = "docker")] docker: bool, }, #[structopt(about = "Saves the IPTables configuration")] SaveIPTables { #[structopt(name = "Iptables save file", short = "s", long = "iptables-save")] iptables_save: Option, }, }