=============
I've decided to rewrite previous implementations of RADIUS Client and Server so they are now only have bare minimum in order to allow users to decide on the crates they want to use to get UdpSockets, async and runtimes
- There is now Generic RADIUS Client implementation
- There is now Generic RADIUS Server implementation
- Added SyncClientTrait & AsyncClientTrait
- Added SyncServerTrait & AsyncServerTrait
- Added dependency on
async-trait
crate to allow Async traits - Add a few more rust versions to Actions pipeline (crate compiles on
1.43.0+
for async version, and1.42.0+
for sync version)
mio
dependency is removed, so user can choosemio
's UdpSocket implementation,async-std
UdpSocket or any other- Any actual implementations related to UdpSockets and etc have been removed
- Breaking change - client module now only has Generic RADIUS Client implementation
- Breaking change - server module now only has Generic RADIUS Server implementation
- Breaking change - RadiusMsgType code as been moved from servers module into radius_packet module
- Breaking change - get prefix was removed for all functions where it was used before (C-GETTER Rust convention)
- Breaking change - client & server implementations now require related traits to be implemented. For more information have a look into
examples/
- All RADIUS defined errors now have Error suffix, ie MalformedPacketError
=============
Last minor release before publishing
- Add
log
crate to handle logs (instead ofprintln!
) - Add a few more rust versions to Actions pipeline (crate compiles on
1.45.0+
andnightly
versions)
- Upgrade dependencies so non of them are yanked
=============
First proper release with basic functionality in place, so it could be moved into more production-like environments
- Add GitHub action, so it checks library against stable/nightly Rust on Linux. Unfortunately macOS isn't nicely supported by GitHub Action, however development is done on macOS and all tests pass
- Message-Authenticator HMAC-MD5 hash generation and verification
- Various RADIUS packet verification methods, ie verify that all received RADIUS attributes match those defined in dictionary file (for the full list refer to docs)
- Various helper methods to ensure data is encoded/decoded correctly, ie convert IPv4/6 to bytes and bytes to IPv4/6 (for the full list, look into
tools
module) - User-Password now could be encoded/decoded (it is important one, since RADIUS packets are sent in plaintext by default)
- Add tests to ensure the core functionality is covered and all works as expected
- Add custom error struct (with the help of
thiserror
crate). This way, crate users would only need to handle singleRadiusError
error
- Various code refactoring and cleaning
Dictionary
is now should be passed to Server/Client, instead of&Dictionary
simple_radius_server.rs
example now has better error handling (removed all unwrap calls)
=============
Initial version with limited support - basically a PoC to see, how feasible is to create RADIUS server/client library from scratch. PoC turned out to be a great starting point for a future development