AF
Asterisk Forum
обсуждения телефонии, VoIP и IP-PBX
12разделов
5 423тем
34 385сообщений
← К списку тем

[solved]Не матчится хост из базы trusted

OpenSER 2 сообщений -
#1

У меня kamailio 3.0.1. Модули auth, auth_db, usrloc, permissions работают с БД через db_text (базы данных в виде обычных текстовых файликов). REGISTER и INVITE аутентифицируются (через сообщения 401 и 407 соответственно).
Хочу иметь возможность не аутентифицировать некоторые устройства. Для этого в модуле 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', то тогда не аутентифицируем.
#2

Спасибо что не поленились отписаться о решении, может комуто будет полезным Smile