if (is_method("INVITE")) {
# Если не получилось авторизовать данными из БД
if (!www_authorize("", "subscriber")) {
# Всегда пишем код возврата в переменную
$var(reg) = $retcode;
# Обработка неправильного пароля, начальный запрос без Authorization вернёт код -4
if ($var(reg)==-2) {
sl_send_reply(403,"Wrong side, dude");
exit;
}
# Запрос авторизации
www_challenge("");
exit;
}
# Убираем реквизиты DIGEST из проксируемых запросов
consume_credentials();
# Если username поля FROM не соответствует данным таблицы URI
if (!db_is_from_authorized("uri")) {
# Возвращаем 403 в stateless режиме, без предварительно 100 Trying
sl_send_reply(403,"You shall not pass");
exit;
};
# Если клиент не найден в таблице location, куда сохраняются зарегистрированные
if (!lookup("location")) {
# Тут нужен stateful режим, с возвратом 100 Trying
t_reply(404,"Not Found here");
exit;
}
append_hf("P-hint: usrloc applied\r\n");.
route(relay);
}
Комментариев нет:
Отправить комментарий