forum.bitel.ru http://forum.bitel.ru/ |
|
Не авторизуется по Alias http://forum.bitel.ru/viewtopic.php?f=6&t=7048 |
Страница 1 из 1 |
Автор: | D.Davidov [ 06 авг 2012, 15:02 ] |
Заголовок сообщения: | Не авторизуется по Alias |
В логе звонка выдает такое сообщение: Код: 08-06/12:53:25 DEBUG [rdsLstnr-p-4-t-1] VoiceIpRadiusProcessor - Process accounting, flag=1 Packet type: Accounting-Request Identifier: 226 Authenticator: {5A 58 B6 AC 86 64 E2 79 EE 4F 77 5C 13 4D 3E D6} Attributes: User-Name=100 NAS-IP-Address=127.0.0.1 NAS-Port=0 Acct-Status-Type=2 Acct-Delay-Time=0 Acct-Session-Time=2 Calling-Station-Id=100 Acct-Session-Id=1344243199.146 Called-Station-Id=200 h323-setup-time=2012-08-06 12:53:19 +0400 h323-conf-id=1344243199.146 h323-call-type=VOIP h323-call-origin=originate h323-disconnect-time=2012-08-06 12:53:25 +0400 h323-connect-time=2012-08-06 12:53:23 +0400 h323-disconnect-cause=0 Asterisk-Src=100 Asterisk-Dst=200 Asterisk-Acc-Code= Asterisk-Start-Time=2012-08-06 12:53:19 +0400 Asterisk-Answer-Time=2012-08-06 12:53:23 +0400 Asterisk-Last-App=Dial Asterisk-Last-Data=SIP/200,,tT Asterisk-Chan=SIP/100-00000092 Asterisk-Dst-Chan=SIP/200-00000093 Asterisk-Dst-Ctx=sip_auth Asterisk-Clid="100" <100> Asterisk-User-Field="answer" Asterisk-Unique-ID=1344243199.146 Asterisk-AMA-Flags=DOCUMENTATION Asterisk-Disposition=ANSWERED Asterisk-Bill-Sec=2 Asterisk-Duration=6 Asterisk-End-Time=2012-08-06 12:53:25 +0400 08-06/12:53:25 DEBUG [rdsLstnr-p-4-t-1] VoiceIpRadiusProcessor - Saved connection not found 08-06/12:53:25 DEBUG [rdsLstnr-p-4-t-1] ProcessorRequest - Sending to /127.0.0.1:59456 08-06/12:53:25 INFO [rdsLstnr-p-4-t-1] RadiusListenerWorker - RESPONSE: Packet type: Accounting-Response Identifier: 226 Authenticator: {57 95 7F F2 80 B8 AE 1F 30 18 7E 95 54 80 CF B8} Attributes: Process time stop: 24 В типах логина стоит значение: поиск по User-Name=ALIAS В конфигурации модуля: findmode.0.title=Поиск по User-Name=LOGIN findmode.0.value=User-Name=LOGIN findmode.1.title=Поиск по User-Name=ALIAS findmode.1.value=User-Name=ALIAS findmode.2.title=Поиск по Calling-Station-Id=ALIAS findmode.2.value=Calling-Station-Id=ALIAS findmode.3.title=Поиск по Called-Station-Id=ALIAS findmode.3.value=Called-Station-Id=ALIAS find.order=0,1,2,3 Alias используется цифровой "200", совпадающий с логином заведенным в Asterisk. Версия системы 5,2. Не подскажете, в чем может быть проблема? |
Автор: | D.Davidov [ 08 авг 2012, 11:54 ] |
Заголовок сообщения: | Re: Не авторизуется по Alias |
Проблема решена. Был использован следующий скрипт пред обработки: Код: import bitel.billing.server.radius.*; import ru.bitel.bgbilling.kernel.network.radius.*; if (request.getIntAttribute(RadiusStandartAttributes.Acct_Status_Type) == 2) { // Устанавливаем Calling-Station-Id = Asterisk-Src CallingStationId = request.getStringAttribute(22736, 102, null); request.setStringAttribute(RadiusStandartAttributes.Calling_Station_Id, CallingStationId); // Проверяем наличие Asterisk-Acc-Code, и если он существует, // то устанавливаем User-Name = Asterisk-Acc-Code, если не существует, // то устанавливаем User-Name = Calling-Station-Id UserName = request.getStringAttribute(22736, 101, null); /* if (UserName != null) request.setStringAttribute(RadiusStandartAttributes.User_Name, UserName); else */ request.setStringAttribute(RadiusStandartAttributes.User_Name, CallingStationId); // Устанавливаем Called-Station-Id = Asterisk-Dst request.setStringAttribute(RadiusStandartAttributes.Called_Station_Id, request.getStringAttribute(22736, 103, null)); // Проверяем наличие Asterisk-User-Field, и если такой существует, // то на основании его значения устанавливаем h323-call-origin CallType = request.getStringAttribute(22736, 118, null); if (CallType != null && CallType.equals("answer")) { request.setStringAttribute(9, 26, "answer"); request.setFlag(2); } else { request.setStringAttribute(9, 26, "originate"); request.setFlag(1); } // Устанавливаем h323-call-type = voip request.setStringAttribute(9, 27, "voip"); // Устанавливаем Acct-Session-Time = Asterisk-Bill-Sec request.setIntAttribute( RadiusStandartAttributes.Acct_Session_Time, request.getIntAttribute(22736, 114, null)); // Устанавливаем h323-setup-time = Asterisk-Start-Time request.setStringAttribute(9, 25, request.getStringAttribute(22736, 110, null)); // Устанавливаем h323-connect-time = Asterisk-Answer-Time request.setStringAttribute(9, 28, request.getStringAttribute(22736, 111, null)); // Устанавливаем h323-disconnect-time = Asterisk-End-Time request.setStringAttribute(9, 29, request.getStringAttribute(22736, 112, null)); // Устанавливаем h323-disconnect-cause на основании Asterisk-Disposition AsteriskDisposition = request.getStringAttribute(22736, 115, null); if (AsteriskDisposition.equals("ANSWERED")) request.setStringAttribute(9, 30, "0"); else if (AsteriskDisposition.equals("NO ANSWER")) request.setStringAttribute(9, 30, "5"); else if (AsteriskDisposition.equals("BUSY")) request.setStringAttribute(9, 30, "17"); else request.setStringAttribute(9, 30, "22"); // Устанавливаем h323-conf-id = Acct-Session-Id request.setStringAttribute(9, 24, request.getStringAttribute(-1, RadiusStandartAttributes.Acct_Session_Id, null)); } // Конец if (Acct_Status_Type == 2) //Добавляем к нашему номеру N_ для успешной авторизации по ALIAS. userName = request.getStringAttribute(-1, RadiusStandartAttributes.User_Name, "") ; print("username="+userName); if (userName.matches("^[0-9]+$")) { print("matches ok"); request.setStringAttribute( RadiusStandartAttributes.User_Name, "N_"+userName); } Конфиг наса использовался: Код: auth.in=voip/answer auth.out=voip/originate acct.in=voip/answer acct.out=voip/originate service=1 find.order=0,1,2,3 VoiceIp.workmode=2 # nas.inspector.class=ru.bitel.bgbilling.kernel.network.radius.inspectors.PodNasConnectionInspector #на какой порт слать PoD/CoA запросы nas.inspector.radius.port=1812 #на какой хост слать (если не указан - берется IP адреса NASа) #nas.inspector.radius.host= #секрет для подписи пакетов (если не указан - берется секрет NASа) nas.inspector.radius.secret=billing #какие атрибуты добавлять в PoD/CoA запрос из сессии, если пустой параметр - высылаются все атрибуты nas.inspector.radius.attributes=User-Name;Framed-IP-Address;Acct-Session-Id;Alias #опции, относящиеся только к CoA пакетам #таймаут ожидания ответа в секундах ответа между попытками отправки пакета СoA nas.inspector.coa.timeout=5 #количество попыток отправить пакет CoA nas.inspector.coa.retries=2 #количество потоков отправки CoA пакетов nas.inspector.coa.threads=4 #отправка при смене CoA пакета всех атрибутов, аналогично ответу на авторизацию #nas.inspector.coa.send.all.attributes=1 #логирование в RADIUS логе сессии отправляемых CoA пакетов #coa.log=1 #фиксированные атрибуты CoA-пакета #nas.inspector.coa.fixed.attributes= #фиксированные атрибуты PoD-пакета #nas.inspector.pod.fixed.attributes= #отправка PoD пакета вместо CoA #nas.inspector.send.pod.instead.coa=1 Типы логинов везде: Поиск по User-Name=ALIAS |
Страница 1 из 1 | Часовой пояс: UTC + 5 часов [ Летнее время ] |
Powered by phpBB® Forum Software © phpBB Group http://www.phpbb.com/ |