====== 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 * [[..:topagex:start]] ===== TODO ===== * Reverse engineer what we currently have in Perl and create something more flexible