SMRadius
Current project: https://wiki.smradius.org/
Purpose
High performance feature rich radius server.
Features
- Database independent design: MySQL, PostgreSQL, Oracle, SQLite3
- Replicated database support
- Custom database queries allowing usage of returned results as macros
- mod_auth_pap: PAP (RFC1334)
- mod_auth_chap: CHAP (RFC1944)
- mod_auth_mschap: MSCHAPv1 & MSCHAPv2, incl. MPPE (RFC2443, RFC2759, RFC2548, RFC3079)
- Vendor specific attributes (RFC2865, RFC2866)
- Supported attribute operators include =, :=, ==, +=, !=, >, >=, <, ⇐, =~, !~, =*, !*
- Extended Radius Practices:
- Packet of disconnect (RFC2882)
- CoA (RFC3576)
- Service provider control panel, including WiSP customizations
- Client control panel for viewing usage and plan details
- Data & time based capping
- Prepaid users
- Topups
- Account validity periods, including valid start and end dates
- Prepaid accounting based on usage/time
- Creation of accounting START records when no START record has been received but an interim update has - helps on slow/lossly links
- Bandwidth multipliers that can be added to radius clients, user groups or users
- Auto-Topups with customizable notification templates per client, realm, user group or user
- Plugin: Notifications, % based or approximate time based
- Radius proxy - with filtering of requests/values … etc in both directions + adding items. Persistent storing of radius items so inbound from client NAS is stored and sent back with accounting packet.
- Port 1700 proxy back to NAS
- Plugin: User denylists
- Plugin: Grouping of users and usage caps
- Radius proxy - enhancement: round-robin & random proxy destination tries, easy backoff
- Backstore logs for if proxy destinations go down
- Redis support
- Database load balancing
- IP Pools (in database)
Technologies
- Python
- Flask
- Possibly C network event engine
TODO
- Reverse engineer what we currently have in Perl and create something more flexible