pub struct RadiusPacket {
pub code: u8,
pub identifier: u8,
pub length: u16,
pub authenticator: [u8; 16],
pub attributes: Vec<RadiusAttribute>,
}Fields§
§code: u8§identifier: u8§length: u16§authenticator: [u8; 16]§attributes: Vec<RadiusAttribute>Implementations§
Source§impl RadiusPacket
impl RadiusPacket
pub fn from_bytes(buf: &[u8]) -> Result<Self, String>
pub fn to_bytes(&self) -> Vec<u8> ⓘ
pub fn access_accept(identifier: u8, attributes: Vec<RadiusAttribute>) -> Self
pub fn access_reject(identifier: u8, msg: &str) -> Self
pub fn access_challenge(identifier: u8, msg: &str) -> Self
pub fn log(&self)
Sourcepub fn reply_accept(&self, attributes: Vec<RadiusAttribute>) -> RadiusPacket
pub fn reply_accept(&self, attributes: Vec<RadiusAttribute>) -> RadiusPacket
Examples found in repository?
examples/server.rs (lines 16-19)
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}Sourcepub fn reply_reject(&self, message: &str) -> RadiusPacket
pub fn reply_reject(&self, message: &str) -> RadiusPacket
Examples found in repository?
examples/server.rs (line 21)
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}pub fn reply_challenge(&self, message: &str) -> RadiusPacket
Sourcepub fn username(&self) -> Option<String>
pub fn username(&self) -> Option<String>
Examples found in repository?
examples/server.rs (line 12)
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}Trait Implementations§
Source§impl Clone for RadiusPacket
impl Clone for RadiusPacket
Source§fn clone(&self) -> RadiusPacket
fn clone(&self) -> RadiusPacket
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 RadiusPacket
impl RefUnwindSafe for RadiusPacket
impl Send for RadiusPacket
impl Sync for RadiusPacket
impl Unpin for RadiusPacket
impl UnwindSafe for RadiusPacket
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