use url::Url;
#[derive(Debug, clap::Subcommand)]
enum LdapAction {
Search {
basedn: String,
filter: String,
},
Whoami,
Syncrepl {
basedn: String,
#[clap(long)]
cookie: Option<String>,
},
AdDirsync {
basedn: String,
#[clap(long)]
cookie: Option<String>,
},
}
#[derive(Debug, clap::Parser)]
#[clap(about = "Ldap Client Utility")]
struct LdapOpt {
#[structopt(short, long)]
verbose: bool,
#[clap(short = 'H', long = "url")]
url: Url,
#[clap(short = 'j', long = "json")]
json: bool,
#[clap(short = 'D', long = "dn")]
bind_dn: Option<String>,
#[clap(short = 'w', long = "pass")]
bind_passwd: Option<String>,
#[clap(short = 'C', long = "ca")]
ca_cert: Option<String>,
#[clap(subcommand)]
action: LdapAction,
}