Хочу иметь возможность не аутентифицировать некоторые устройства. Для этого в модуле permissions есть функция allow_trusted. Вот выдержка из конфига касательно всех его настроек:
| Код: |
| ... ----- loadmodule section ----- loadmodule "permissions.so" ... ----- modparam section ----- ... modparam("permissions", "db_mode", 0) modparam("permissions", "trusted_table", "trusted") modparam("permissions", "db_url", "text:///etc/kamailio") ... ----- route section ----- ... if (!allow_trusted("$si", "$proto")) { xlog("\n$$rc=$rc $$si=$si $$proto=$proto\n\n"); if (!proxy_authorize("", "subscriber")) { proxy_challenge("", "0"); exit; } } ... |
Так вот. Аутентификация всё-равно запрашивается. Это видно из вывода в дебаг сообщения от функции xlog:
| Код: |
| 1(1466) ERROR: : $rc=-1 $si=192.168.16.198 $proto=udp |
Вот содержание файлика trusted:
| Код: |
| id(int,auto) src_ip(string) proto(string) from_pattern(string,null) tag(string,null) 1:192.168.16.5:any:: 1:3001@192.168.16.5:any:: 1:192.168.16.198:any:: |
Вопрос: что я делаю не так?
Added after 1 hours 15 minutes:
Разобрался.
Строку modparam("permissions", "trusted_table", "trusted") вообще не надо вставлять.
А вот эту:
| Код: |
| if (!allow_trusted("$si", "$proto")) |
Пределал на эту:
| Код: |
| if (!allow_trusted()) |
Ну и там ещё с секциями намудрил, потом поправил. Сейчас выглядит так:
| Код: |
| # Authentication route route[AUTH] { #!ifdef WITH_AUTH if (is_method("REGISTER")) { # authenticate the REGISTER requests (uncomment to enable auth) if (!www_authorize("", "subscriber")) { www_challenge("", "0"); exit; } if ($au!=$tU) { sl_send_reply("403","Forbidden auth ID"); exit; } } else { # authenticate if from local subscriber (uncomment to enable auth) if (from_uri==myself) { if (!allow_trusted()) { if (!proxy_authorize("", "subscriber")) { proxy_challenge("", "0"); exit; } if (is_method("PUBLISH")) { if ($au!=$tU) { sl_send_reply("403","Forbidden auth ID"); exit; } } else { if ($au!=$fU) { sl_send_reply("403","Forbidden auth ID"); exit; } } } consume_credentials(); # caller authenticated } } #!endif |
При INVTE идёт проверка. Если хост в 'trusted', то тогда не аутентифицируем.