diff --git a/kamailio/default.cfg b/kamailio/default.cfg index 61ad856..e197fb5 100644 --- a/kamailio/default.cfg +++ b/kamailio/default.cfg @@ -441,57 +441,65 @@ route[CLASSIFY_SOURCE] route[HANDLE_OPTIONS] { - if (is_method("OPTIONS")) { - if (isflagset(FLAG_INTERNALLY_SOURCED)) { - route(INTERNAL_TO_EXTERNAL_RELAY); - } else { - #!ifdef TRAFFIC_FILTER_ROLE - if (!isflagset(FLAG_TRUSTED_SOURCE)) { - route(FILTER_REQUEST_DOMAIN); - } - #!endif + if (!is_method("OPTIONS")) { + return; + } - sl_send_reply("200", "Rawr!!"); + if (isflagset(FLAG_INTERNALLY_SOURCED)) { + route(INTERNAL_TO_EXTERNAL_RELAY); + } else { + #!ifdef TRAFFIC_FILTER_ROLE + if (!isflagset(FLAG_TRUSTED_SOURCE)) { + route(FILTER_REQUEST_DOMAIN); } - exit; + #!endif + + ## TODO: remove nat if client is sending options + + sl_send_reply("200", "Rawr!!"); } + exit; } route[HANDLE_NOTIFY] { + if (!is_method("NOTIFY")) return; + if (has_totag()) return; - if (is_method("NOTIFY")) { - if (isflagset(FLAG_INTERNALLY_SOURCED)) { - if (loose_route()) { - xlog("L_INFO", "$ci|log|Able to loose-route. Cool beans!\n"); - } + if (isflagset(FLAG_INTERNALLY_SOURCED)) { + if (loose_route()) { + xlog("L_INFO", "$ci|log|Able to loose-route. Cool beans!\n"); + } - #!ifdef REGISTRAR_ROLE - if (registered("location")) { - lookup("location"); - xlog("L_INFO", "$ci|log|routing to $ruid\n"); - } - #!endif + #!ifdef REGISTRAR_ROLE + if (registered("location")) { + lookup("location"); + xlog("L_INFO", "$ci|log|routing to $ruid\n"); + } + #!endif - route(INTERNAL_TO_EXTERNAL_RELAY); - } else { - #!ifdef TRAFFIC_FILTER_ROLE - if (!isflagset(FLAG_TRUSTED_SOURCE)) { - route(FILTER_REQUEST_DOMAIN); - } - #!endif + ## TODO: verify we're not routing to ourselves - if($hdr(Event) == "keep-alive") { - xlog("L_INFO", "$ci|stop|replying to keep alive\n"); - sl_send_reply("405", "Stay Alive / Method Not Allowed"); - } else { - xlog("L_INFO", "$ci|stop|consuming event $hdr(Event)\n"); - sl_send_reply("200", "Rawr!!"); - } + route(INTERNAL_TO_EXTERNAL_RELAY); + } else { + #!ifdef TRAFFIC_FILTER_ROLE + if (!isflagset(FLAG_TRUSTED_SOURCE)) { + route(FILTER_REQUEST_DOMAIN); + } + #!endif + + ## TODO: remove nat if client is sending notify for keepalive + + if($hdr(Event) == "keep-alive") { + xlog("L_INFO", "$ci|stop|replying to keep alive\n"); + sl_send_reply("405", "Stay Alive / Method Not Allowed"); + } else { + xlog("L_INFO", "$ci|stop|consuming event $hdr(Event)\n"); + sl_send_reply("200", "Rawr!!"); } - exit; } + exit; } route[HANDLE_MESSAGE]