As yet another courtesy contribution to the Asterisk community PortaOne created a general public license client that brings RADIUS AAA capabilities to Asterisk 1.4. This piece of software is mainly written in Perl. Therefore, it is 100% portable and easy to understand and customize.
RADIUS attributes are used according to Cisco VSA Voice Implementation Guide which provides compatibility with billing platforms, including PortaBilling100. The new RADIUS module is issued right before AstriCon 2007 in Pheonix, AZ where PortaOne will present it to the general public.
PortaOne RADIUS client consists of three parts: Asterisk patches, accounting part and authentication/authorization part.
After adaptation to asterisk 1.4.11, patches bring the following functionality:
- SipGetHeader application to chan_sip (required for SIP authorization)
- DNID variable in manager events (for accounting)
- "externalauth" options for sip.conf
Accounting manager implemented as standalone daemon ast-rad-acc.pl and should be included into startup sequence. It utilizes the Asterisk Manager API to get notifications about call start and stop events, and then generates radius accounting packets of respective type.
Script accepts following options:
- AuthorizeBy is either SIP or Account
- IfFailed if set to DoNotHangup script does not issue Hangup command in case of negative response from Radius server and leaves an opportunity of notifiying the calling part of call failure reasons
- Password — is used as password if AuthorizedBy is set to Account
- Routing — if set to SIP, requests Routing information from PortaBilling100
More information about this RADIUS client, its installation and configuration examples can be found on the VoIP Wiki.