mirror of
https://github.com/nitnelave/lldap.git
synced 2023-04-12 14:25:13 +00:00
cli: Add a "send test email" command
Still unimplemented. This re-organizes the command-line flags.
This commit is contained in:
parent
18e3892e55
commit
fa0105fa96
@ -1,4 +1,5 @@
|
|||||||
use clap::Clap;
|
use clap::Clap;
|
||||||
|
use lettre::message::Mailbox;
|
||||||
|
|
||||||
/// lldap is a lightweight LDAP server
|
/// lldap is a lightweight LDAP server
|
||||||
#[derive(Debug, Clap, Clone)]
|
#[derive(Debug, Clap, Clone)]
|
||||||
@ -17,31 +18,93 @@ pub enum Command {
|
|||||||
/// Run the LDAP and GraphQL server.
|
/// Run the LDAP and GraphQL server.
|
||||||
#[clap(name = "run")]
|
#[clap(name = "run")]
|
||||||
Run(RunOpts),
|
Run(RunOpts),
|
||||||
|
/// Send a test email.
|
||||||
|
#[clap(name = "send_test_email")]
|
||||||
|
SendTestEmail(TestEmailOpts),
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Clap, Clone)]
|
#[derive(Debug, Clap, Clone)]
|
||||||
pub struct RunOpts {
|
pub struct GeneralConfigOpts {
|
||||||
/// Change config file name.
|
/// Change config file name.
|
||||||
#[clap(short, long, default_value = "lldap_config.toml")]
|
#[clap(
|
||||||
|
short,
|
||||||
|
long,
|
||||||
|
default_value = "lldap_config.toml",
|
||||||
|
env = "LLDAP_CONFIG_FILE"
|
||||||
|
)]
|
||||||
pub config_file: String,
|
pub config_file: String,
|
||||||
|
|
||||||
/// Change ldap port. Default: 3890
|
|
||||||
#[clap(long)]
|
|
||||||
pub ldap_port: Option<u16>,
|
|
||||||
|
|
||||||
/// Change ldap ssl port. Default: 6360
|
|
||||||
#[clap(long)]
|
|
||||||
pub ldaps_port: Option<u16>,
|
|
||||||
|
|
||||||
/// Change HTTP API port. Default: 17170
|
|
||||||
#[clap(long)]
|
|
||||||
pub http_port: Option<u16>,
|
|
||||||
|
|
||||||
/// Set verbose logging.
|
/// Set verbose logging.
|
||||||
#[clap(short, long)]
|
#[clap(short, long)]
|
||||||
pub verbose: bool,
|
pub verbose: bool,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(Debug, Clap, Clone)]
|
||||||
|
pub struct RunOpts {
|
||||||
|
#[clap(flatten)]
|
||||||
|
pub general_config: GeneralConfigOpts,
|
||||||
|
|
||||||
|
/// Change ldap port. Default: 3890
|
||||||
|
#[clap(long, env = "LLDAP_LDAP_PORT")]
|
||||||
|
pub ldap_port: Option<u16>,
|
||||||
|
|
||||||
|
/// Change ldap ssl port. Default: 6360
|
||||||
|
#[clap(long, env = "LLDAP_LDAPS_PORT")]
|
||||||
|
pub ldaps_port: Option<u16>,
|
||||||
|
|
||||||
|
/// Change HTTP API port. Default: 17170
|
||||||
|
#[clap(long, env = "LLDAP_HTTP_PORT")]
|
||||||
|
pub http_port: Option<u16>,
|
||||||
|
|
||||||
|
#[clap(flatten)]
|
||||||
|
pub smtp_opts: SmtpOpts,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Debug, Clap, Clone)]
|
||||||
|
pub struct TestEmailOpts {
|
||||||
|
#[clap(flatten)]
|
||||||
|
pub general_config: GeneralConfigOpts,
|
||||||
|
|
||||||
|
/// Email address to send an email to.
|
||||||
|
#[clap(long, env = "LLDAP_TEST_EMAIL_TO")]
|
||||||
|
pub to: String,
|
||||||
|
|
||||||
|
#[clap(flatten)]
|
||||||
|
pub smtp_opts: SmtpOpts,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Debug, Clap, Clone)]
|
||||||
|
pub struct SmtpOpts {
|
||||||
|
/// Sender email address.
|
||||||
|
#[clap(long)]
|
||||||
|
#[clap(long, env = "LLDAP_SMTP_OPTIONS__FROM")]
|
||||||
|
pub smtp_from: Option<Mailbox>,
|
||||||
|
|
||||||
|
/// Reply-to email address.
|
||||||
|
#[clap(long, env = "LLDAP_SMTP_OPTIONS__TO")]
|
||||||
|
pub smtp_reply_to: Option<Mailbox>,
|
||||||
|
|
||||||
|
/// SMTP server.
|
||||||
|
#[clap(long, env = "LLDAP_SMTP_OPTIONS__SERVER")]
|
||||||
|
pub smtp_server: Option<String>,
|
||||||
|
|
||||||
|
/// SMTP port, 587 by default.
|
||||||
|
#[clap(long, env = "LLDAP_SMTP_OPTIONS__PORT")]
|
||||||
|
pub smtp_port: Option<u16>,
|
||||||
|
|
||||||
|
/// SMTP user.
|
||||||
|
#[clap(long, env = "LLDAP_SMTP_OPTIONS__USER")]
|
||||||
|
pub smtp_user: Option<String>,
|
||||||
|
|
||||||
|
/// SMTP password.
|
||||||
|
#[clap(long, env = "LLDAP_SMTP_OPTIONS__PASSWORD", hide_env_values = true)]
|
||||||
|
pub smtp_password: Option<String>,
|
||||||
|
|
||||||
|
/// Whether TLS should be used to connect to SMTP.
|
||||||
|
#[clap(long, env = "LLDAP_SMTP_OPTIONS__TLS_REQUIRED")]
|
||||||
|
pub smtp_tls_required: Option<bool>,
|
||||||
|
}
|
||||||
|
|
||||||
#[derive(Debug, Clap, Clone)]
|
#[derive(Debug, Clap, Clone)]
|
||||||
pub struct ExportGraphQLSchemaOpts {
|
pub struct ExportGraphQLSchemaOpts {
|
||||||
/// Output to a file. If not specified, the config is printed to the standard output.
|
/// Output to a file. If not specified, the config is printed to the standard output.
|
||||||
|
@ -99,7 +99,7 @@ impl Configuration {
|
|||||||
}
|
}
|
||||||
|
|
||||||
fn merge_with_cli(mut self: Configuration, cli_opts: RunOpts) -> Configuration {
|
fn merge_with_cli(mut self: Configuration, cli_opts: RunOpts) -> Configuration {
|
||||||
if cli_opts.verbose {
|
if cli_opts.general_config.verbose {
|
||||||
self.verbose = true;
|
self.verbose = true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -138,9 +138,12 @@ fn get_server_setup(file_path: &str) -> Result<ServerSetup> {
|
|||||||
}
|
}
|
||||||
|
|
||||||
pub fn init(cli_opts: RunOpts) -> Result<Configuration> {
|
pub fn init(cli_opts: RunOpts) -> Result<Configuration> {
|
||||||
let config_file = cli_opts.config_file.clone();
|
let config_file = cli_opts.general_config.config_file.clone();
|
||||||
|
|
||||||
println!("Loading configuration from {}", cli_opts.config_file);
|
println!(
|
||||||
|
"Loading configuration from {}",
|
||||||
|
cli_opts.general_config.config_file
|
||||||
|
);
|
||||||
|
|
||||||
let config: Configuration = Figment::from(Serialized::defaults(
|
let config: Configuration = Figment::from(Serialized::defaults(
|
||||||
ConfigurationBuilder::default().build().unwrap(),
|
ConfigurationBuilder::default().build().unwrap(),
|
||||||
|
@ -104,5 +104,6 @@ fn main() -> Result<()> {
|
|||||||
match cli_opts.command {
|
match cli_opts.command {
|
||||||
Command::ExportGraphQLSchema(opts) => infra::graphql::api::export_schema(opts),
|
Command::ExportGraphQLSchema(opts) => infra::graphql::api::export_schema(opts),
|
||||||
Command::Run(opts) => run_server_command(opts),
|
Command::Run(opts) => run_server_command(opts),
|
||||||
|
Command::SendTestEmail(_opts) => Ok(()),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user