Список форумов Asterisk Forum Asterisk Forum
The Asterisk Open Source PBX - Russian Community
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ПравилаПравила   ГруппыГруппы   ИзбранноеИзбранное    LinksСсылки   РегистрацияРегистрация 
 RSSRSS   ПрофильПрофиль   Войти и проверить личные сообщения   ВходВход 

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

 
Список форумов Asterisk Forum -> OpenSER    вывод темы на печать
Предыдущая тема :: Следующая тема  
Автор Сообщение
bishop



Зарегистрирован:
25.03.2008
Сообщения: 21
Откуда: Novosibirsk

Статус: Оффлайн 

СообщениеДобавлено: Ср Авг 18, 2010 11:41    Заголовок сообщения:

У меня 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: <script>:
$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', то тогда не аутентифицируем.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
anest
Модератор


Зарегистрирован:
28.11.2004
Сообщения: 5636

Статус: Оффлайн 

СообщениеДобавлено: Ср Авг 18, 2010 21:03    Заголовок сообщения:

Спасибо что не поленились отписаться о решении, может комуто будет полезным Smile
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Список форумов Asterisk Forum -> OpenSER Ответить на тему
Страница 1 из 1

Добавить в Избранное

 
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах
You cannot attach files in this forum
You cannot download files in this forum