Вход | Регистрация
Вы здесь: Главная / Форум / Главный форум по Asterisk / Разработка / * и radius

* и radius

<1 2
Сообщений: 4

Re: * и radius

Господа, актуально еще или нет ? В-принципе, модуль работает. Если есть интерес, могу выложить (только бинарник). Патч для * не нужен. Хочется обкатать, да функциональность определить и какие атрибуты засылать куда, в-общем фенечки какие-куда. Alive пока нету, но сделать пока проблем не вижу, хотя все может быть.
2006-12-14 17:49

Сообщений: 4

Re: * и radius

Примерно вот так оно работает:
[Jan 16 00:48:05] DEBUG[4618]: app_radius.c:918 radius_send_packet:

[default] Send packet id=1 code=1(Access-Request) to 192.168.1.1:1812
User-Name = "50013"
User-Password = ""
Calling-Station-Id = "50013"
Called-Station-Id = "333"
NAS-Port-Type = Virtual
NAS-Port-Id = "SIP/50013-081e84a8"
Service-Type = Framed-User
Framed-IP-Address = 192.168.1.1
NAS-IP-Address = 192.168.1.1
Acct-Delay-Time = 0

[Jan 16 00:48:06] DEBUG[3971]: app_radius.c:791 radius_rcv_packet:

[default] Received packet id=1 code=2(Access-Accept) from 192.168.1.1:1812
Session-Timeout = 180
Cisco-AVPair = "h323-credit-amount=19.55"
Cisco-AVPair = "h323-credit-time=300"
Cisco-AVPair = "h323-preferred-lang=ru"
Cisco-AVPair = "h323-currency=RUR"

[Jan 16 00:48:06] DEBUG[4618]: app_radius.c:918 radius_send_packet:

[default] Send packet id=2 code=4(Accounting-Request) to 192.168.1.1:1813
User-Name = "50013"
Calling-Station-Id = "50013"
Called-Station-Id = "333"
NAS-Port-Type = Virtual
NAS-Port-Id = "SIP/50013-081e84a8"
NAS-Port = 136217768
Service-Type = Framed-User
Acct-Status-Type = Start
Framed-IP-Address = 192.168.1.1
Cisco-AVPair = "codec-type-rate=ulaw;useragent=app_radius;"
Acct-Session-Id = "00000002"
NAS-IP-Address = 192.168.1.1
Acct-Delay-Time = 0
[Jan 16 00:48:06] DEBUG[3971]: app_radius.c:791 radius_rcv_packet:

[default] Received packet id=2 code=5(Accounting-Response) from 192.168.1.1:1813

[Jan 16 00:48:11] DEBUG[4618]: app_radius.c:918 radius_send_packet:

[default] Send packet id=3 code=4(Accounting-Request) to 192.168.1.1:1813
User-Name = "50013"
Calling-Station-Id = "50013"
Called-Station-Id = "333"
NAS-Port-Type = Virtual
NAS-Port-Id = "SIP/50013-081e84a8"
NAS-Port = 136217768
Service-Type = Framed-User
Acct-Input-Packets = 0
Acct-Output-Packets = 0
Acct-Session-Time = 4
Acct-Status-Type = Stop
Framed-IP-Address = 192.168.1.1
Acct-Session-Id = "00000002"
NAS-IP-Address = 192.168.1.1
Acct-Delay-Time = 0
[Jan 16 00:48:11] DEBUG[3971]: app_radius.c:791 radius_rcv_packet:

[default] Received packet id=3 code=5(Accounting-Response) from 192.168.1.1:1813

Это то, что реализовано и пока только для SIP. Для других каналов тоже возможно, но надо смотреть. Ну и набор атрибутов и правильность подстановки данных в аттрибутах может быть не совсем корректной.
2007-01-15 17:55

Сообщений: 4

Re: * и radius

А вот так выглядит extensions.conf для app_radius (разумеется корявый, так как в разработке):
exten => _5XXXX,1,NoOP()
exten => _5XXXX,n,Set(Rad_Auth_OK=0|Rad_Auth_ACK=0|Rad_Acct_Start_OK=0|Cisco-AVPair_h323-credit-time=86400)
exten => _5XXXX,n,Radius_Auth(p1,p2,p3,p4|p41|p42,p5)
exten => _5XXXX,n,GotoIf($[${Rad_Auth_OK}=1 & ${Rad_Auth_ACK}=1]?:40)
exten => _5XXXX,n,Radius_Acct_Start(p5,p4,p3,p2|p21|p22,p1)
exten => _5XXXX,n,GotoIf($[${Rad_Acct_Start_OK}]?:40)
; exten => _5XXXX,n,Macro(stdexten|${EXTEN:0}|SIP/${EXTEN})
exten => _5XXXX,n,SetGlobalVar(LIMIT_PLAYAUDIO_CALLER=yes)
exten => _5XXXX,n,SetGlobalVar(LIMIT_PLAYAUDIO_CALLEE=yes)
exten => _5XXXX,n,Dial(SIP/${EXTEN},20,L($[${Cisco-AVPair_h323-credit-time}*1000]:10000))
exten => _5XXXX,n,Hangup()
exten => _5XXXX,40,HangUp()
2007-01-15 18:06

Avatara of litnimax
Откуда: Москва
Сообщений: 3421

Re: * и radius

Насколько я понял, это все авторизация звонка и эккаунтинг. Тут ничего сложного нет, есть в инете пол дюжины AGI-поделок для разных биллинговых систем. Однако без аутентификации регистрации полноценного решения не создать! Есть дока - http://www-rocq.inria.fr/who/Philippe.Sultan/Asterisk/asterisk_sip_external_authentication.html, но мы ее еще не пробовали...
Также Olle активно работает над res_auth - http://bugs.digium.com/view.php?id=5424...
В идеале я вижу регистрацию + набор простых функций, которые через radius протокол вытаскивают основные значения для разных бизнес приложений. Например для prepaid cards (регистрация через радиус уже типа есть):
exten => s,1,SET(balance=RADIUS(balance))
exten => s,2,Playback(you-have-balance)
exten => s,3,Playback(balance)
... тут запрашивается направление ...
exten => s,n,Dial(...|..|S(RADIUS(duration, number)) <-- Тут мы устанавливаем лимит звонка по направлению number в соотв. с тарифным планом.

Ну и так далее...
http://pbxware.ru - все для Asterisk! || Switchvox - сделано на Asterisk! Подробности на http://switchvox.ru
2007-01-17 00:48

Avatara of litnimax
Откуда: Москва
Сообщений: 3421

Re: * и radius

tma
Если сделать AGI скрипт, который обращается к radius'у (start), вызывает Dial, а по его завершению (опция 'g') обращается к radius'у (stop) выйдет половина дела.
Нужно еще решить вопрос с alive, с которыми проблема из-за того, что Dial не прерывается, пока работает.
Вторая проблема -- "прибить" Dial, если средства исчерпались.
Тут я не знаю не то, чтобы как это можно реализовать (прибить Dial, точнее канал, можно через Monitor), а как биллинг посредством radius'а собирается сообщить клиенту, что хватит ему болтать.
1. DeadAGI вместо Dial(...|...|g)
2. Dial прибивать не надо, надо лимит звонка устанваливать через S или L(buggy!!). Если надо разрешить больше чем один разговор под тем же экаунтом есть формулы установки лимита.
3. С Alive посложнее.. Надо заводить 3-й компонент, который будет отсылать alive записи радус серверу. Если использовать FastAGI, то для него это будет просто доп. функция в отдельном потоке, например.
http://pbxware.ru - все для Asterisk! || Switchvox - сделано на Asterisk! Подробности на http://switchvox.ru
2007-01-17 00:55

Сообщений: 4

Re: * и radius

litnimaxНасколько я понял, это все авторизация звонка и эккаунтинг. Тут ничего сложного нет, есть в инете пол дюжины AGI-поделок для разных биллинговых систем. Однако без аутентификации регистрации полноценного решения не создать!
Да вот как раз решено было, что пусть регистрируется абонент, все-равно звонить не сможет. Поэтому пусть себе регистрируется - оно даже лучше, всегда, например, будет напоминать, что денег нет.
2007-01-22 18:45

<1 2
Добавить страницу в закладки:  Delicious Google Slashdot Yahoo Yandex.ru Reddit Digg Technorati Bobrdobr.ru Newsland.ru Smi2.ru Rumarkz.ru Vaau.ru Memori.ru Rucity.com Moemesto.ru News2.ru Mister-Wong.ru Myscoop.ru 100zakladok.ru