Перейти к содержимому
Калькуляторы

tma

Активный участник
  • Публикации

    114
  • Зарегистрирован

  • Посещение

Все публикации пользователя tma


  1. Добрый день! Кто-нибудь полноценно скрещивал Yate и radius? authentication и accounting работает, правда accounting'ом с глюками -- плодит лишние start/stop записи, но вот authorization не работает. Сделал небольшой патч для поддержки authorization (см yate maillist). Вроде даже работает, но больше на костыль похоже. Очень не хватает возможности задать значение calledid/callerid для передачи через radius в биллинг, чтобы Yate преобразовывал номер к e164 (для биллинга). Сейчас у меня работает связка Yate+radius с моим мини-патчем, но клиент должен использовать нумерацию только в формате e164, а они привыкли к 8 и 810... С клиентами, у который Linksys'ы и др. адаптеры все просто -- задал правильный dialplan, а вот со всякими X-Lite что делать?
  2. Интересно на чем?.. Причем тут гарнитуры? Теперь от них зависит надежность? 8-) У меня практически нет гарнитур. А я и не переходил на Callweaver. У меня и asterisk и callweaver используются. Речь вообще не об этом, а о заложенных в asterisk проблемах. Callweaver получил эти проблемы по-наследству... Причем в callweaver добавили в некоторых местах дополнительное протоколирование действий и становится понятным, в какой момент и где спотыкается asterisk. Но во-первых я не профессиональный программист, чтобы решить это проблемы, а во-вторых хотелось бы получать что-то без геморроя, особенно если за это еще и деньги платятся.
  3. Вот бы пошаговый пример такого взаимодействия найти... Может дадите ссылочку? Заранее спасибо.
  4. Добрый день! Проблему с разбором атрибутов решил. Оказалось, что нужно вернуть пароль и 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-сервера? Заранее спасибо!
  5. Попробовал с 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
  6. Похоже модуль не конвертирует атрибуты, нашел пример: "rlm_digest: Converting Digest-Attributes to something sane... " Кто может подсказать причину?
  7. Добрый день! Пытаюсь доработать свой биллинг для поддержки 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. Натолкните, пожалуйста, на мысль! Ссылки приветствуются!
  8. Да я на самом деле не очнь в ней разбираюсь. Просто проект интересный и я взялся ковырять и дописывать местами. Разработчики разбираются гораздо лучше :-) Ну разработчики -- ясное дело. :-) Как позвонить на транковую линию я разобрался. Звонить на зарегистрированного пользователя по номеру я не пробовал, да и нужно мне звонить на зарегистрированную линию как на транковую, т.е. указывая произвольный номер. Т.е. для этого нужно патчить Yate, как я понимаю? Ох! А можно воспользоваться Вашими наработками? Я немного php знаю, но честно говоря отношусь к php исключительно как к WEB-примочке. Может я и не прав. Но в любом случае plain C будет работать быстрее любого php/питона. Да и знаю я только plain C, проще мне на нем... Имея какой-нибудь пример (не php с питоном, который я вообще не знаю), я бы сделал свою библиотеку. А нативный модуль для Yate я даже и не думал делать -- C++ не знаю, увы. Хотя может был бы самый лучший вариант!
  9. to ram_scan: Добрый день! Я вижу, Вы хорошо разбираетесь в Yate! Я недавно достаточно активно стал его использовать и у меня появилось несколько вопросов по нему. Можно ли как-то связаться с Вами по email или ICQ? Мой email: tma <at> tma <dot> spb <dot> ru Отправить личное сообщение через форум почему-то не получается -- пишет, что мне запрещена отправка ЛС... Вопросы пока такие: 1. Я понял, как отправить исходящий звонок на SIP-trunk (в случае, когда Yate регистрируется по SIP'у), но я так и не понял, как можно позвонить на SIP-аккаунт, который зарегистрировался на Yate через regfile.conf ? Интересует возможность маршрутизировать звонки через SIP-аккаунт (в моем случае это GSM-шлюз). Пока прописал в regexroute.conf звонок по IP:port, но это абсолютно не правильно. 2. Хотелось бы построить на Yate свой IVR сервер (взамен asterisk'а), но не хочется использовать PHP или питон, т.к. их не знаю. Есть ли наработки на Си (plain C, не C++) для работы с сообщениями Yate, что-нибудь вроде библиотеки? Есть ли опыт по созданию подобные систем? В перспективе бы хотелось создать полноценный сервер IVR с очередями, voicemail, faxserver'ом и записью разговоров. Заранее благодарен! P.S. Забыл добавить -- использую Yate2. В частности использовал его в качестве SIP-H323 транслятора без проксирования между MVTS и asterisk. Но почему-то время от времени возникают проблемы с отсутствием звука, отдиагностировать не смог, т.к. звонков много, а со всех сторон орут, чтобы срочно решал проблему. Настраивал простенькую маршрутизацию по DID'ам и во внешний мир между теми же MVTS и asterisk. Использую как транслятор SIP-H323 при терминации по H323 на SIP-GSM шлюзы (с регистрацией через regfile, но на IP:port).