moznion / radius-rs Goto Github PK
View Code? Open in Web Editor NEWAn async/await native implementation of the RADIUS server and client for Rust.
License: MIT License
An async/await native implementation of the RADIUS server and client for Rust.
License: MIT License
I'm using the library for radius load testing / pretty much just using the encode/decode functionality.
Right now there's no way to set the identifier of the packet to anything other then the rand value, which is a problem if you're sending multiple packets over the same socket.
The documentation does not specify how vendor specific attributes are encoded/accessed. In Particular RFC2865 specifies a format for encoding multiple attributes by a single vendor in a single Attribute 26. I do not see how i would get those.
Please add support for
rfc6613 - RADIUS over TCP
rfc6614 - Transport Layer Security (TLS) Encryption for RADIUS
This issue lists Renovate updates and detected dependencies. Read the Dependency Dashboard docs to learn more.
This repository currently has no open or pending branches.
code-generator/Cargo.toml
regex 1
getopts 0.2
Inflector 0.11
e2e-test/Cargo.toml
tokio 1.35.1
async-trait 0.1.77
radius/Cargo.toml
md5 0.7.0
openssl 0.10
chrono 0.4
rand 0.8.5
num_enum 0.7.2
thiserror 1.0
log 0.4.20
tokio 1.35.1
async-trait 0.1.77
.github/workflows/test.yaml
hecrj/setup-rust-action v2
actions/checkout v4
I seem to have found a "bald spot" in the otherwise well-annotated and commented code: encode()
and decode()
in attributes.rs
seem a bit sparse on why things are done the way that they are, and it does a fair deal of heavy lifting in the code. If you get a chance at some point, would be swell to have the ins and outs of that code clearly explained to us mortals ๐
APVs like Tunnel-Type are added to a packet using the function from_tagged_u32, which does not take into account the appropriate length of the attribute. Something similar happens with Tunnel-Medium-Type.
radius-rs/radius/src/core/rfc2868.rs
Lines 76 to 78 in 149e270
As mentioned in RFC2868, the length for Tunnel-Type is always 6, and this mismatch can cause problems with clients that strictly follow this. radtest
will show attributes that do not follow these standards as Attr-N
instead of decoding it into the appropriate name, so this can be useful when trying to detect these issues.
I am looking for a Radius lib for Rust and found this library and radius-rust.
Did a quick check of the supported features and API and I think I prefer radius-rs
but a copyleft license is a no go for my project.
I also think the current license might prevent more contribution to your lib.
What is your view on changing to a more permissive license like MIT or Apache 2.0?
Thank you
Now it does the liner searching, this should not be effective.
There doesn't seem to be a way to retrieve a list of all AVP
s from a Packet
currently, just get AVP
s with a specific AVPType
via Packet::lookup
and Packet::lookup_all
. Is this intentional?
I see Packet
's private attributes
field is of type core::attributes::Attributes
, which has visibility pub(crate)
instead of just pub
... so it seems like this might be intentional. If it is, could you provide some of the reasoning as to why? A blanket Packet::get_attributes
method would be quite helpful for my use-case.
One of the most common uses of RADIUS these days is for 802.1x authentication - EAP/RADIUS. RFC3748/RFC3579 requires "super-protocol" interaction in that EAP is embedded within RADIUS and the EAP protocol interactions (init/challenge/response/result) occur within the RADIUS packets atop higher OSI layers than ethernet-level EAPOL transactions.
In order to be able to use this code as a proxy between wireless clients and RADIUS services which themselves do not support EAP, support for RFC3579 would be required in the library.
@moznion - any chance you might have the cycles to implement in the near term, or should i try to pollute your otherwise clean code with my garbage hackery to achieve basic functionality?
Thanks for writing this, neat implementation.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. ๐๐๐
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google โค๏ธ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.