Вторая задача, это авторизация, через AGI скрипт в диалплане. Но не тут было, биллинг отказывается кушать, выдаёт так:
Код: Выделить всё
?Debug : Apr 22 10:31:27 RadiusSocket: RADIUS packet successfully received
?Debug : Apr 22 10:31:27 RadiusSocket: RADIUS raw data obtained
?Debug : Apr 22 10:31:27 RADIUS Packet: Size <115>; HDR.Size <115>
?Debug : Apr 22 10:31:27 AuthServer: Recv...
?Debug : Apr 22 10:31:27 AuthServer: Packet from NAS <192.168.1.33>
?Debug : Apr 22 10:31:27 RADIUS DBA: NAS found. Data size <0>
?Debug : Apr 22 10:31:27 AuthServer: Packet from <192.168.1.33> packet dump: RPacket:
Code: 1; ID: 193
<Vendor: 0; Attr: 1>[6]: 363738333038
<Vendor: 0; Attr: 4>[4]: 59da5345
<Vendor: 0; Attr: 6>[4]: 0000000c
<Vendor: 0; Attr: 30>[6]: 363737373437
<Vendor: 0; Attr: 31>[6]: 363738333038
<Vendor: 9; Attr: 1>[24]: 63616c6c2d69643d313237313930393932352e3338353333
<Vendor: 9; Attr: 2>[19]: 5349502f3637383330382d6235336630346130
?Debug : Apr 22 10:31:27 AuthServer: User <567308> connecting
?Debug : Apr 22 10:31:27 AuthServer: Session for sessionid <567308> not found in <192.168.1.33> cache
?Debug : Apr 22 10:31:27 RADIUS DBA: Info for login <567308> found. type <3>
?Debug : Apr 22 10:31:27 RADIUS DBA: Password found for tel login:567308
ERROR : Apr 22 10:31:27 AuthServer: Auth scheme not detected!
Notice: Apr 22 10:31:27 AuthServer: Login incorrect <567308> from NAS <192.168.1.33> CLID <566747> Calling-station <567308>
Notice: Apr 22 10:31:27 AuthServer: Authorization failed for user <567308>
?Debug : Apr 22 10:31:27 AuthServer: Auth reply: RPacket:
Code: 3; ID: 193
<Vendor: 0; Attr: 18>[21]: 417574686f72697a6174696f6e206661696c65642e
Код: Выделить всё
Code: Access-Request (1)
Packet identifier: 0xc0 (192)
Length: 118
Authenticator: BC565FEC4E9050045DA1D12B3781443D
NAS-IP-Address: 192.168.1.33 (192.168.1.33)
Cisco-NAS-Port: SIP/567308-09953fa8
Calling-Station-Id: 567308
Called-Station-Id: 87057777777
Cisco-AVPair: call-id=1271838929.36478
Service-Type: Sip-session (12)
User-Name: 567308
В perl создания объекта, который в общем и отправляет радиус сообщения:
Код: Выделить всё
my $r = new Authen::Radius(Host => $AGI->get_variable('RADIUS_Server')."\:".$AGI->get_variable('RADIUS_Auth_Port'), Secret => $AGI->get_variable('RADIUS_Secret'));
Код: Выделить всё
$r->send_packet (ACCESS_REQUEST) and $type = $r->recv_packet;