From: Ruben Beltran del Rio Date: Sat, 25 Jan 2025 10:00:29 +0000 (+0100) Subject: Address clippy issues X-Git-Tag: 1.0.0~7 X-Git-Url: https://git.r.bdr.sh/rbdr/olden-mail/commitdiff_plain/2fdda21d13ed742bdb52ec3ba74538af83de2bf4?ds=inline Address clippy issues --- diff --git a/README.md b/README.md index 6c580f7..9e6e407 100644 --- a/README.md +++ b/README.md @@ -35,22 +35,22 @@ The proxy requires you to set environment variables, but otherwise takes no options. * `LOCAL_IMAP_PORT` u16, the port in which the server will listen for -IMAP clients. Defaults to 143. + IMAP clients. Defaults to 143. * `LOCAL_IMAP_BIND_ADDRESS` String, the address on which to listen for -IMAP clients. Defaults to 0.0.0.0. + IMAP clients. Defaults to 0.0.0.0. * `REMOTE_IMAP_PORT` u16, the port to which the server will forward the -IMAP messages. Defaults to 993. + IMAP messages. Defaults to 993. * `REMOTE_IMAP_HOST` String, the host to which the server will forward the -IMAP messages. Required. + IMAP messages. Required. * `LOCAL_SMTP_PORT` u16, the port in which the server will listen for -SMTP clients. Defaults to 25. + SMTP clients. Defaults to 25. * `LOCAL_SMTP_BIND_ADDRESS` String, the address on which to listen for -SMTP clients. Defaults to 0.0.0.0. + SMTP clients. Defaults to 0.0.0.0. * `REMOTE_SMTP_PORT` u16, the port to which the server will forward the -SMTP messages. Defaults to 465. + SMTP messages. Defaults to 465. * `REMOTE_SMTP_HOST` String, the host to which the server will forward the -SMTP messages. Required. + SMTP messages. Required. This means the minimum invocation is this (Shown here with inline environment variables) diff --git a/src/configuration.rs b/src/configuration.rs index af5c46d..49cd991 100644 --- a/src/configuration.rs +++ b/src/configuration.rs @@ -18,7 +18,7 @@ pub enum ConfigurationError { /// Configuration for any proxy #[derive(Debug)] -pub struct ProxyConfiguration { +pub struct Proxy { pub local_port: u16, pub bind_address: String, pub remote_host: String, @@ -28,8 +28,8 @@ pub struct ProxyConfiguration { /// Aggregated configuration for both proxies, already in a reference counter. pub struct Configuration { - pub imap_configuration: Arc, - pub smtp_configuration: Arc, + pub imap_configuration: Arc, + pub smtp_configuration: Arc, } impl Configuration { @@ -37,14 +37,14 @@ impl Configuration { /// variables. Exits if the right ones aren't found. pub fn new() -> Result { Ok(Configuration { - imap_configuration: Arc::new(ProxyConfiguration { + imap_configuration: Arc::new(Proxy { local_port: get_env_number("LOCAL_IMAP_PORT", 143)?, bind_address: get_env_var("LOCAL_IMAP_BIND_ADDRESS", Some("0.0.0.0".to_string()))?, remote_host: get_env_var("REMOTE_IMAP_DOMAIN", None)?, remote_port: get_env_number("REMOTE_IMAP_PORT", 993)?, protocol: "IMAP", }), - smtp_configuration: Arc::new(ProxyConfiguration { + smtp_configuration: Arc::new(Proxy { local_port: get_env_number("LOCAL_SMTP_PORT", 25)?, bind_address: get_env_var("LOCAL_SMTP_BIND_ADDRESS", Some("0.0.0.0".to_string()))?, remote_host: get_env_var("REMOTE_SMTP_DOMAIN", None)?, diff --git a/src/main.rs b/src/main.rs index 863b2ee..87ae738 100644 --- a/src/main.rs +++ b/src/main.rs @@ -11,8 +11,8 @@ //! //! ### Pre-built binaries and packages //! -//! Binaries are available for macos and linux, for both aarch64 and x86_64 -//! from https://build.r.bdr.sh/olden-mail, including `.deb` and `.rpm` +//! Binaries are available for macos and linux, for both aarch64 and `x86_64` +//! from , including `.deb` and `.rpm` //! packages. //! //! ### Homebrew @@ -35,22 +35,22 @@ //! no options. //! //! * `LOCAL_IMAP_PORT` u16, the port in which the server will listen for -//! IMAP clients. Defaults to 143. +//! IMAP clients. Defaults to 143. //! * `LOCAL_IMAP_BIND_ADDRESS` String, the address on which to listen for -//! IMAP clients. Defaults to 0.0.0.0. +//! IMAP clients. Defaults to 0.0.0.0. //! * `REMOTE_IMAP_PORT` u16, the port to which the server will forward the -//! IMAP messages. Defaults to 993. +//! IMAP messages. Defaults to 993. //! * `REMOTE_IMAP_HOST` String, the host to which the server will forward the -//! IMAP messages. Required. +//! IMAP messages. Required. //! //! * `LOCAL_SMTP_PORT` u16, the port in which the server will listen for -//! SMTP clients. Defaults to 25. +//! SMTP clients. Defaults to 25. //! * `LOCAL_SMTP_BIND_ADDRESS` String, the address on which to listen for -//! SMTP clients. Defaults to 0.0.0.0. +//! SMTP clients. Defaults to 0.0.0.0. //! * `REMOTE_SMTP_PORT` u16, the port to which the server will forward the -//! SMTP messages. Defaults to 465. +//! SMTP messages. Defaults to 465. //! * `REMOTE_SMTP_HOST` String, the host to which the server will forward the -//! SMTP messages. Required. +//! SMTP messages. Required. //! //! This means the minimum invocation is this (Shown here with inline //! environment variables) @@ -74,7 +74,7 @@ mod configuration; mod proxy; use configuration::Configuration; -use proxy::ProxyServer; +use proxy::Server; fn main() { Builder::from_env(Env::default().default_filter_or("info")) @@ -88,8 +88,8 @@ fn main() { let (tx, rx) = mpsc::channel(); - let mut imap_proxy = ProxyServer::new(configuration.imap_configuration); - let mut smtp_proxy = ProxyServer::new(configuration.smtp_configuration); + let mut imap_proxy = Server::new(configuration.imap_configuration); + let mut smtp_proxy = Server::new(configuration.smtp_configuration); ctrlc::set_handler(move || { info!("Shutting down..."); diff --git a/src/proxy.rs b/src/proxy.rs index c6954a0..a2f62e4 100644 --- a/src/proxy.rs +++ b/src/proxy.rs @@ -1,7 +1,7 @@ //! # Proxy Module //! //! This module has the actual proxy functionality, exposed through -//! `ProxyServer`. The proxy consists of a local unencrypted TCP stream +//! `Server`. The proxy consists of a local unencrypted TCP stream //! and a remote TLS stream. Messages are passed between them via two //! threads. //! @@ -9,24 +9,24 @@ //! - **Client to Server Thread**: Forwards data from client -> TLS server //! - **Serveer to Client Thread**: Forwards data from TLS server -> client //! -//! Finally, the ProxyServer may be shutdown by calling `.shutdown()`, +//! Finally, the `Server` may be shutdown by calling `.shutdown()`, //! this will stop new connections and wait for it to finish. //! //! # Example //! //! ``` //! use std::sync::Arc; -//! use crate::configuration::ProxyConfiguration; -//! use crate::proxy::ProxyServer; +//! use crate::configuration::Proxy; +//! use crate::proxy::Server; //! -//! let config = Arc::new(ProxyConfiguration { +//! let config = Arc::new(Proxy { //! protocol: "IMAP".to_string(), //! local_port: 143, //! remote_domain: "imap.example.com".to_string(), //! remote_port: 993, //! }); //! -//! let mut server = ProxyServer::new(config); +//! let mut server = Server::new(config); //! // The server runs in a background thread. To shut down gracefully: //! server.shutdown(); //! ``` @@ -41,33 +41,33 @@ use std::sync::{ use std::thread::{sleep, spawn, JoinHandle}; use std::time::Duration; -use crate::configuration::ProxyConfiguration; +use crate::configuration::Proxy; /// A proxy server that listens for plaintext connections and forwards them /// via TLS. /// -/// Creating a new `ProxyServer` spawns a dedicated thread that: +/// Creating a new `Server` spawns a dedicated thread that: /// - Binds to a local port (non-blocking mode). /// - Spawns additional threads for each incoming client connection. /// - Manages connection-lifetime until it receives a shutdown signal. -pub struct ProxyServer { +pub struct Server { running: Arc, thread_handle: Option>, } -impl ProxyServer { - /// Creates a new `ProxyServer` for the given `ProxyConfiguration` and +impl Server { + /// Creates a new `Server` for the given `Proxy` configuration and /// immediately starts it. /// /// # Arguments /// - /// * `configuration` - Shared (Arc) `ProxyConfiguration` + /// * `configuration` - Shared (Arc) `Proxy` /// /// # Returns /// - /// A `ProxyServer` instance that will keep running until its `.shutdown()` + /// A `Server` instance that will keep running until its `.shutdown()` /// method is called, or an error occurs. - pub fn new(configuration: Arc) -> Self { + pub fn new(configuration: Arc) -> Self { let running = Arc::new(AtomicBool::new(true)); let running_clone = Arc::clone(&running); @@ -75,7 +75,7 @@ impl ProxyServer { run_proxy(configuration, running_clone); }); - ProxyServer { + Server { running, thread_handle: Some(thread_handle), } @@ -93,7 +93,7 @@ impl ProxyServer { /// The main loop that listens for incoming (plaintext) connections on /// `configuration.bind_address:configuration.local_port`. -fn run_proxy(configuration: Arc, running: Arc) { +fn run_proxy(configuration: Arc, running: Arc) { let listener = match TcpListener::bind(format!( "{}:{}", configuration.bind_address, configuration.local_port @@ -152,7 +152,7 @@ fn run_proxy(configuration: Arc, running: Arc) { } /// Handles a single client connection by bridging it (plaintext) to a TLS connection. -fn handle_client(client_stream: TcpStream, configuration: Arc) { +fn handle_client(client_stream: TcpStream, configuration: Arc) { if let Err(e) = client_stream.set_nonblocking(true) { error!("Failed to set client stream to nonblocking: {}", e); return;