Function serve

Source
pub async fn serve<F>(
    addr: &str,
    dict: Arc<Dictionary>,
    secret: &str,
    handler: F,
) -> Result<(), Box<dyn Error>>
where F: Fn(RadiusPacket) -> Result<RadiusPacket, String> + Send + Sync + 'static,
Examples found in repository?
examples/server.rs (lines 11-26)
7async fn main() -> Result<(), Box<dyn std::error::Error>> {
8    let dict = Arc::new(Dictionary::load_embedded()?);
9    let secret = "test123";
10
11    serve("0.0.0.0:1812", dict, secret, |packet| {
12        println!("🔍 Incoming ID {} from {:?}", packet.identifier, packet.username());
13
14        if let Some(username) = packet.username() {
15            if username.trim() == "ec:30:b3:6d:24:6a" {
16                Ok(packet.reply_accept(vec![
17                    RadiusAttribute::session_timeout(3600),
18                    RadiusAttribute::reply_message("Welcome, admin."),
19                ]))
20            } else {
21                Ok(packet.reply_reject("User not allowed"))
22            }
23        } else {
24            Ok(packet.reply_reject("Missing username"))
25        }
26    }).await
27}