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;