radius_rust/server/
mod.rs

1//! Module contains RADIUS Generic Server implementation and related traits definitions
2
3
4use crate::protocol::error::RadiusError;
5
6
7#[cfg(all(feature = "async-radius"))]
8use async_trait::async_trait;
9#[cfg(all(feature = "async-radius"))]
10#[async_trait]
11/// This trait is to be implemented by user, if they are planning to resolve AUTH, ACCT or CoA
12/// RADIUS requests for Async RADIUS Server
13pub trait AsyncServerTrait {
14    /// Main function, that starts and keeps server running
15    ///
16    /// For example see `examples/async_radius_server.rs`
17    async fn run(&mut self) -> Result<(), RadiusError>;
18
19    /// Function is responsible for resolving AUTH RADIUS request
20    ///
21    /// For example see `examples/async_radius_server.rs`
22    async fn handle_auth_request(&self) -> Result<(), RadiusError> {
23        Ok(())
24    }
25    /// Function is responsible for resolving AUTH RADIUS request
26    ///
27    /// For example see `examples/async_radius_server.rs`
28    async fn handle_acct_request(&self) -> Result<(), RadiusError> {
29        Ok(())
30    }
31    /// Function is responsible for resolving AUTH RADIUS request
32    ///
33    /// For example see `examples/async_radius_server.rs`
34    async fn handle_coa_request(&self) -> Result<(), RadiusError> {
35        Ok(())
36    }
37}
38
39/// This trait is to be implemented by user, if they are planning to resolve AUTH, ACCT or CoA
40/// RADIUS requests for Sync RADIUS Server
41pub trait SyncServerTrait {
42    /// Main function, that starts and keeps server running
43    ///
44    /// For example see `examples/sync_radius_server.rs`
45    fn run(&mut self) -> Result<(), RadiusError>;
46
47    /// Function is responsible for resolving AUTH RADIUS request
48    ///
49    /// For example see `examples/sync_radius_server.rs`
50    fn handle_auth_request(&self, request: &mut [u8])->Result<Vec<u8>, RadiusError> {
51        Ok(request.to_vec())
52    }
53    /// Function is responsible for resolving ACCT RADIUS request
54    ///
55    /// For example see `examples/sync_radius_server.rs`
56    fn handle_acct_request(&self, request: &mut [u8])->Result<Vec<u8>, RadiusError> {
57        Ok(request.to_vec())
58    }
59    /// Function is responsible for resolving CoA RADIUS request
60    ///
61    /// For example see `examples/sync_radius_server.rs`
62    fn handle_coa_request(&self, request: &mut [u8])->Result<Vec<u8>, RadiusError> {
63        Ok(request.to_vec())
64    }
65}
66
67pub mod server;