30 lines
676 B
Rust
30 lines
676 B
Rust
|
mod http;
|
||
|
mod mail;
|
||
|
mod smtp;
|
||
|
|
||
|
use clap::Parser;
|
||
|
|
||
|
#[derive(Parser, Debug)]
|
||
|
#[clap(author, version, about, long_about = None)]
|
||
|
struct Args {
|
||
|
#[clap(short, long, value_parser, default_value = "7777")]
|
||
|
http_port: u16,
|
||
|
#[clap(short, long, value_parser, default_value = "7778")]
|
||
|
smtp_port: u16,
|
||
|
}
|
||
|
|
||
|
#[tokio::main]
|
||
|
async fn main() {
|
||
|
let args = Args::parse();
|
||
|
|
||
|
tracing_subscriber::fmt::init();
|
||
|
|
||
|
let mailbox = mail::Mailbox::new();
|
||
|
smtp::server(mailbox.clone(), args.smtp_port).await.unwrap();
|
||
|
http::server(mailbox.clone(), args.http_port).await.unwrap();
|
||
|
|
||
|
tokio::signal::ctrl_c()
|
||
|
.await
|
||
|
.expect("failed to listen for event");
|
||
|
}
|