pub struct RadiusAttribute {
pub typ: u8,
pub len: u8,
pub value: Vec<u8>,
}
Fields§
§typ: u8
§len: u8
§value: Vec<u8>
Implementations§
Source§impl RadiusAttribute
impl RadiusAttribute
Sourcepub fn reply_message(msg: &str) -> Self
pub fn reply_message(msg: &str) -> Self
Examples found in repository?
examples/server.rs (line 36)
10async fn main() -> Result<(), Box<dyn std::error::Error>> {
11 let dict = Arc::new(Dictionary::load_embedded()?);
12 let secret = "test123";
13
14 let dict_acct = dict.clone();
15 let dict_auth = dict.clone();
16 let secret_acct = secret.to_string();
17 let secret_auth = secret.to_string();
18
19 let acct_server = serve_accounting_async("0.0.0.0:1813", dict_acct, &secret_acct, move |packet| async move {
20 println!("📨 Accounting ID {} from {:?}", packet.identifier, packet.username());
21 for attr in packet.attributes {
22 println!(" → Type {}: {:?}", attr.typ, attr.value);
23 }
24 Ok(())
25 });
26
27 let auth_server = serve_async("0.0.0.0:1812", dict_auth, &secret_auth, move |packet| async move {
28 println!("🔍 Incoming ID {} from {:?}", packet.identifier, packet.username());
29 let acc_pkt: AccountingPacket = packet.clone().into();
30 println!("{:?}", acc_pkt);
31
32 if let Some(username) = packet.username() {
33 if username.trim() == " " {
34 Ok(packet.reply_accept(vec![
35 RadiusAttribute::session_timeout(3600),
36 RadiusAttribute::reply_message("Welcome, admin."),
37 ]))
38 } else {
39 Ok(packet.reply_reject("User not allowed"))
40 }
41 } else {
42 Ok(packet.reply_reject("Missing username"))
43 }
44 });
45
46 // Run both servers concurrently
47 tokio::try_join!(acct_server, auth_server)?;
48
49 Ok(())
50}
pub fn user_name(name: &str) -> Self
pub fn vendor_specific(vendor_id: u32, payload: Vec<u8>) -> Self
pub fn wispr_bandwidth_max_up(bps: u32) -> Self
pub fn wispr_bandwidth_max_down(bps: u32) -> Self
Sourcepub fn session_timeout(seconds: u32) -> Self
pub fn session_timeout(seconds: u32) -> Self
Examples found in repository?
examples/server.rs (line 35)
10async fn main() -> Result<(), Box<dyn std::error::Error>> {
11 let dict = Arc::new(Dictionary::load_embedded()?);
12 let secret = "test123";
13
14 let dict_acct = dict.clone();
15 let dict_auth = dict.clone();
16 let secret_acct = secret.to_string();
17 let secret_auth = secret.to_string();
18
19 let acct_server = serve_accounting_async("0.0.0.0:1813", dict_acct, &secret_acct, move |packet| async move {
20 println!("📨 Accounting ID {} from {:?}", packet.identifier, packet.username());
21 for attr in packet.attributes {
22 println!(" → Type {}: {:?}", attr.typ, attr.value);
23 }
24 Ok(())
25 });
26
27 let auth_server = serve_async("0.0.0.0:1812", dict_auth, &secret_auth, move |packet| async move {
28 println!("🔍 Incoming ID {} from {:?}", packet.identifier, packet.username());
29 let acc_pkt: AccountingPacket = packet.clone().into();
30 println!("{:?}", acc_pkt);
31
32 if let Some(username) = packet.username() {
33 if username.trim() == " " {
34 Ok(packet.reply_accept(vec![
35 RadiusAttribute::session_timeout(3600),
36 RadiusAttribute::reply_message("Welcome, admin."),
37 ]))
38 } else {
39 Ok(packet.reply_reject("User not allowed"))
40 }
41 } else {
42 Ok(packet.reply_reject("Missing username"))
43 }
44 });
45
46 // Run both servers concurrently
47 tokio::try_join!(acct_server, auth_server)?;
48
49 Ok(())
50}
pub fn idle_timeout(seconds: u32) -> Self
Trait Implementations§
Source§impl Clone for RadiusAttribute
impl Clone for RadiusAttribute
Source§fn clone(&self) -> RadiusAttribute
fn clone(&self) -> RadiusAttribute
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source
. Read moreAuto Trait Implementations§
impl Freeze for RadiusAttribute
impl RefUnwindSafe for RadiusAttribute
impl Send for RadiusAttribute
impl Sync for RadiusAttribute
impl Unpin for RadiusAttribute
impl UnwindSafe for RadiusAttribute
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more