|
|
|
@ -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] |
|
|
|
|