mysql в chan_sip.c
правлю сорц
Откуда: Молдова
Сообщений: 5
|
mysql в chan_sip.c
передо мной вот такая вот задача : зделать так, чтоб если по сипу неправильно авторизируются более N раз , то чтоб астериск всегда проставлял AUTH_SECRET_FAILED для этого юзверя, ну и еще пару фичей тудаже доклеить. Так или иначе нужна поддержка Мускюля.
проблема : я хочу внести в chan_sip.c как можно меньше изменений, поэтому хочу пользоваться уже существующим соединением между астериской и Мускюлем. Или на худой конец подскожите где хранятся подгуженные значения dbhost, dbname,.. из конфига res_mysql.conf ибо самому дописывать подгрузку инфы с конфига геморно ,влом и вдобавок сделает сорц некрасивым.
заранее спасибо.
Тьма движется со скоростью света, только в обратном направлении...
|
Откуда: Киев
Сообщений: 1096
|
Re: mysql в chan_sip.c
а команда даялплана MYSQL вас чем не устраивает или интереснее все же залезть в chan_sip.c
воспользуйтесь поиском по форуму, подобный вопрос уже обсуждался в прошлом месяце
|
Откуда: Odessa
Сообщений: 20
|
Re: mysql в chan_sip.c
svoy: а команда даялплана MYSQL вас чем не устраивает
а что в диалплане можно получить когда по SIP неправильно авторизуются?
я понял что интересует реакция на следующее
[Jan 8 19:41:37] NOTICE[12840]: chan_sip.c:15236 handle_request_register: Registration from '2000 <sip:2002@192.168.80.144>' failed for '192.168.80.145' - No matching peer found
|
Сообщений: 866
|
Re: mysql в chan_sip.c
svoy,
а вы это просто так спросили или знаете? имхо никакие куски диалплана не вызываются когда юзер авторизуется. Тем более когда он НЕ авторизуется.
artyr_n,
я бы советовал:
1. использовать где можно odbc а не mysql. Разницы почти никакой зато привязки к конкретной базе нет. Можно и в постгрес писать и в mssql
2. подумать а не лучше ли использовать realtime архитектуру (это оно там так называется) вместо прямого доступа к базе. Придется правда почитать как настраивать реалтайм, но этого в сети полно. Потом в extconfig.conf прописать свою табличку типа:
mytable => odbc,asterisk,mytable
(база asterisk определяется в res_odbc.conf)
после чего вы сможете читать/писать строчки в эту свою реалтайм таблицу через API астериска - примеры в самом же chan_sip есть - ищите ast_update_realtime и ast_load_realtime.
И гуглите больше :)
|
Откуда: Киев
Сообщений: 1096
|
Re: mysql в chan_sip.c
сорри, действительно не вник в вопрос :( постараюсь реабилитироваться
имхо (я сторонник простых решений)
- при неудачной регистрации мы получаем сообщение об этом в CLI (Wrong password), разве не проще использовать это сообщение для блокирования абонента (AMI etc.)
- у абонента может быть выставлено очень маленький интервал между регистрациями, ничего если честного абона забанит?
- в реалтайм архитектуре (стандартной), я чето не видел в БД никаких упоминаний о попытке регистрации, я тока могу отследить до какого времени зарегистрирован абонент, и на основе этого сделать вывод в сети он или нет
|
Откуда: Уфа
Сообщений: 5856
|
Re: mysql в chan_sip.c
реалтайм как метод никакого отношения к этой задаче иметь не может.
есть способ выполнить какие-то действия диалплана при регистрации абонента, а вот по неверной регистрации сказать ничего не могу. да и врядли в AMI валятся сообщения о неверной регистрации...
думаю можно аналогично добавить в chan_sip.conf поддержку выполнения диалплана при неверной регистрации...
только кто это делать будет...
|
Откуда: Омск
Сообщений: 478
|
Re: mysql в chan_sip.c
Отдельное сообщение о неудачной авторизации SIP UAC добавили в исходники совсем недавно. В идеале взять патч добавляющий тот патч и ловить такие события по AMI и предпринимать какие-либо действия. Если это не подходит, то лучше предложения dimas'а не найти
OpenSUSE 11.2 / Asterisk 1.6.x / Vicidial / UniMRCP
|
Откуда: Уфа
Сообщений: 5856
|
Re: mysql в chan_sip.c
что-то не узрел в сообщении dimas`a как обнаружить неправильную попытку регистрации с помощью realtime.
а то, что odbc удобней в использовании - это однозначно, хоть и сложней немного...
|
Сообщений: 866
|
Re: mysql в chan_sip.c
switch,
в сообщении dimas не было описания как при помощи realtime обнаружить неудачную авторизацию. В его сообщении был совет НЕ использовать базу напрямую а работать с ней через realtime как некий abstraction layer.
Попрошу заметить что топикстартер НЕ спрашивает как поймать события - думаю он с этим справился сам. Все что он спрашивает - как подрубиться к mysql.
|
Откуда: Москва
Сообщений: 3421
|
Re: mysql в chan_sip.c
svoy: сорри, действительно не вник в вопрос :( постараюсь реабилитироваться
имхо (я сторонник простых решений)
- при неудачной регистрации мы получаем сообщение об этом в CLI (Wrong password), разве не проще использовать это сообщение для блокирования абонента (AMI etc.)
- у абонента может быть выставлено очень маленький интервал между регистрациями, ничего если честного абона забанит?
- в реалтайм архитектуре (стандартной), я чето не видел в БД никаких упоминаний о попытке регистрации, я тока могу отследить до какого времени зарегистрирован абонент, и на основе этого сделать вывод в сети он или нет
А я сторонник построения своей высокоуровневой бизнес-логики вокруг существующего низкоуровнего функционала. AMI - великая вещь!
Пишите своего демона, который будет отлавливать сообщения об ошибке регистрации, вести словарь таких попыток, и при превышении числа попыток в заданное время временно менять пароль, сохраняя старое значение. Через какой-то интервал вернуть все как было.
|
|