tma Опубликовано 8 ноября, 2008 · Жалоба Добрый день! Пытаюсь доработать свой биллинг для поддержки Digest авторизации (биллинг базируется на биллинге от gnugk): На настоящий момент есть следующая проблема. Есть пакет radius'а от Yate к FreeRadius: User-Name = "tma" Service-Type = Sip-Session Cisco-AVPair = "h323-session-protocol=sipv2" NAS-Identifier = "Yate" NAS-IP-Address = 192.168.128.3 Digest-Response = "fa96fef0b9320ae074838911df257a64" Digest-Attributes = "\002-851e610d10581ae4ed5e8be9a1bb84fe.1226160482" Digest-Attributes = "\003\nREGISTER" Digest-Attributes = "\004\023sip:10.0.0.1:5061" Digest-Attributes = "\n\005tma" Digest-Attributes = "\001\006Yate" Digest-Attributes = "\006\005MD5" h323-remote-address = "h323-remote-address=10.0.0.20" Вопрос -- как в программе разобрать аттрибут Digest-Attributes на составляющие? Можно, конечно, в конфиге написать что-то типа Digest-Attributes='%{Digest-Attributes[2]}' (как массив), но это не правильно, т.к. если вдруг поменяется порядок следования аттрибутов, то все нарушится. А в примере FreeRadius порядок как раз иной: NAS-IP-Address = d5 89 45 26 (213.137.69.38) NAS-Port-Type = 5 (Virtual) User-Name = "12345678" Digest-Response (206) = "2ae133421cda65d67dc50d13ba0eb9bc" Digest-Attributes (207) = [Realm (1) = "deltathree"] Digest-Attributes (207) = [Nonce (2) = "3bada1a0"] Digest-Attributes (207) = [Method (3) = "INVITE"] Digest-Attributes (207) = [URI (4) = "sip:97226491335@213.137.69.38"] Digest-Attributes (207) = [Algorithm (5) = "md5"] Digest-Attributes (207) = [User-Name (10) = "12345678"] Пример взят из draft-sterman-aaa-sip-00.txt. Натолкните, пожалуйста, на мысль! Ссылки приветствуются! Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
tma Опубликовано 9 ноября, 2008 · Жалоба Похоже модуль не конвертирует атрибуты, нашел пример: "rlm_digest: Converting Digest-Attributes to something sane... " Кто может подсказать причину? Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
tma Опубликовано 11 ноября, 2008 · Жалоба Попробовал с OpenSER, получил тот же результат: rad_recv: Access-Request packet from host 192.168.102.3 port 40438, id=221, length=252 User-Name = "tma@voip.zet" Digest-Attributes = "\n\005tma" Digest-Attributes = "\001\nvoip.zet" Digest-Attributes = "\002*4919a559371dcf3469748a4e19d18aa3f38f8fcc" Digest-Attributes = "\004\030sip:192.168.102.3:5061" Digest-Attributes = "\003\nREGISTER" Digest-Response = "185bf4620df28f6aa6752b18f241c186" Service-Type = Sip-Session Sip-Uri-User = "tma" Cisco-AVPair = "call-id=NDY3MWM2ZTVjMjZlYTA5YjFkNzA1OGRlODFiOGQyYmQ." NAS-Port = 5060 NAS-IP-Address = 192.168.102.3 +- entering group authorize {...} ++[preprocess] returns ok [digest] Adding Auth-Type = DIGEST ++[digest] returns ok [suffix] Looking up realm "voip.zet" for User-Name = "tma@voip.zet" [suffix] No such realm "voip.zet" В чем я могу ошибаться? Словарь неправильный или еще что-нибудь? P.S. FreeRADIUS обновил до 2.1.1 Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...
tma Опубликовано 2 декабря, 2008 · Жалоба Добрый день! Проблему с разбором атрибутов решил. Оказалось, что нужно вернуть пароль и digest модуль сам все разберет. Но т.к. возвращать пароль наобум нельзя, я думаю, то пришлось писать свой разбор атрибутов на pgplsql (у меня PostgreSQL). Но, возник новый вопрос -- какие нужно возвращать атрибуты в случае с SIP-сессией? Сейчас freeradius получает от SQL-сервера следующие атрибуты: h323-return-code=0 h323-credit-amount=2137.15 h323-currency=RUB h323-billing-model=2 h323-ivr-in=terminal-alias:^$ Что нужно вернуть для SIP-сервера? Заранее спасибо! Вставить ник Цитата Ответить с цитированием Поделиться сообщением Ссылка на сообщение Поделиться на других сайтах More sharing options...