diff --git a/e2e-test/src/test.rs b/e2e-test/src/test.rs index ee23729..373ed72 100644 --- a/e2e-test/src/test.rs +++ b/e2e-test/src/test.rs @@ -93,16 +93,9 @@ mod tests { let port = 1812; - let mut server = Server::listen( - "0.0.0.0", - port, - 1500, - true, - MyRequestHandler {}, - MySecretProvider {}, - ) - .await - .unwrap(); + let mut server = Server::listen("0.0.0.0", port, MyRequestHandler {}, MySecretProvider {}) + .await + .unwrap(); let server_proc = tokio::spawn(async move { server.run(receiver).await.unwrap(); @@ -140,8 +133,6 @@ mod tests { let mut server = Server::listen( "0.0.0.0", port, - 1500, - true, LongTimeTakingHandler {}, MySecretProvider {}, ) diff --git a/examples/server.rs b/examples/server.rs index 6c4afd3..29568ac 100644 --- a/examples/server.rs +++ b/examples/server.rs @@ -18,16 +18,11 @@ async fn main() { env_logger::init(); // start UDP listening - let mut server = Server::listen( - "0.0.0.0", - 1812, - 1500, - false, - MyRequestHandler {}, - MySecretProvider {}, - ) - .await - .unwrap(); + let mut server = Server::listen("0.0.0.0", 1812, MyRequestHandler {}, MySecretProvider {}) + .await + .unwrap(); + server.set_buffer_size(1500); // default value: 1500 + server.set_skip_authenticity_validation(false); // default value: false // once it has reached here, a RADIUS server is now ready info!( diff --git a/radius/src/server.rs b/radius/src/server.rs index 03240f9..bdc69aa 100644 --- a/radius/src/server.rs +++ b/radius/src/server.rs @@ -14,6 +14,9 @@ use crate::core::request::Request; use std::fmt::Debug; use std::marker::PhantomData; +const DEFAULT_BUFFER_SIZE: usize = 1500; +const DEFAULT_SKIP_AUTHENTICITY_VALIDATION: bool = false; + /// A basic implementation of the RADIUS server. /// /// ## Example Usage @@ -47,15 +50,11 @@ impl, U: SecretProvider> Server /// /// - `host` - a host to listen (e.g. `0.0.0.0`) /// - `port` - a port number to listen (e.g. `1812`) - /// - `buf_size` - a buffer size for receiving the request payload (e.g. `1500`) - /// - `skip_authenticity_validation` - a flag to specify whether to skip the authenticity validation or not. /// - `request_handler` - a request handler for the RADIUS requests. /// - `secret_provider` - a provider for shared-secret value. pub async fn listen( host: &str, port: u16, - buf_size: usize, - skip_authenticity_validation: bool, request_handler: T, secret_provider: U, ) -> Result { @@ -68,8 +67,8 @@ impl, U: SecretProvider> Server let conn_arc = Arc::new(conn); Ok(Server { - skip_authenticity_validation, - buf_size, + skip_authenticity_validation: DEFAULT_SKIP_AUTHENTICITY_VALIDATION, + buf_size: DEFAULT_BUFFER_SIZE, conn_arc, request_handler_arc, secret_provider_arc, @@ -96,6 +95,16 @@ impl, U: SecretProvider> Server } } + /// Set a buffer size for receiving the request payload (default: `1500`). + pub fn set_buffer_size(&mut self, buf_size: usize) { + self.buf_size = buf_size; + } + + /// Set a flag to specify whether to skip the authenticity validation or not (default: `false`). + pub fn set_skip_authenticity_validation(&mut self, skip_authenticity_validation: bool) { + self.skip_authenticity_validation = skip_authenticity_validation; + } + /// Returns the listening address. pub fn get_listen_address(&self) -> io::Result { self.conn_arc.local_addr()