Skip to content

Commit

Permalink
classify request earlier
Browse files Browse the repository at this point in the history
* sanity, antiflood, core will have way to differentiate requests
  • Loading branch information
lazedo committed Aug 18, 2023
1 parent a794f6c commit a020417
Show file tree
Hide file tree
Showing 5 changed files with 27 additions and 12 deletions.
6 changes: 6 additions & 0 deletions kamailio/antiflood-role.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -34,10 +34,14 @@ route[ANTIFLOOD_RATE_LIMIT]

if (has_totag()
|| isflagset(FLAG_TRUSTED_SOURCE)
|| isflagset(FLAG_TRUSTED_PROXY)
|| isflagset(FLAG_TRUSTED_PARTNER)
|| isflagset(FLAG_INTERNALLY_SOURCED)) {
return;
}

if (is_method("OPTIONS")) return;

# use pike to control the rates
if (!pike_check_req()) {
if($sel(cfg_get.kazoo.antiflood_rate_drop) == 1) {
Expand All @@ -55,6 +59,8 @@ route[ANTIFLOOD_AUTH_LIMIT]

if (has_totag()
|| isflagset(FLAG_TRUSTED_SOURCE)
|| isflagset(FLAG_TRUSTED_PROXY)
|| isflagset(FLAG_TRUSTED_PARTNER)
|| isflagset(FLAG_INTERNALLY_SOURCED)) {
return;
}
Expand Down
26 changes: 19 additions & 7 deletions kamailio/default.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -193,6 +193,8 @@ route
{
route(LOCAL_REQUEST);

route(CLASSIFY_SOURCE);

route(SANITY_CHECK);

routes(CORE_INIT_ROUTE);
Expand All @@ -215,8 +217,6 @@ route

route(LOG_REQUEST);

route(CLASSIFY_SOURCE);

#!ifdef NAT_TRAVERSAL_ROLE
route(NAT_DETECT);
#!endif
Expand Down Expand Up @@ -304,6 +304,23 @@ route[LOG_REQUEST]
routes(LOG_REQUEST);
}

route[LOG_REQUEST_CLASSIFIED_SOURCE]
{
if (isflagset(FLAG_TRUSTED_PROXY)) {
xlog("$var(log_request_level)", "originated from proxy $sht(proxies=>$hdr(X-Proxy-Core-UUID))\n");
} else if (isflagset(FLAG_INTERNALLY_SOURCED)) {
xlog("$var(log_request_level)", "originated from internal sources\n");
} else if (isflagset(FLAG_TRUSTED_SOURCE)) {
xlog("$var(log_request_level)", "request from trusted IP\n");
} else if (!isflagset(FLAG_NETWORK_CLASSIFIED)) {
if (is_myself("$ou")) {
xlog("$var(log_request_level)", "original R-URI ($ou) is this proxy, treating as external sources\n");
} else {
xlog("$var(log_request_level)", "originated from external sources\n");
}
}
}

route[CHECK_RETRANS]
{
# handle retransmissions
Expand All @@ -319,18 +336,13 @@ route[CHECK_RETRANS]
route[CLASSIFY_SOURCE]
{
if ($hdr(X-FS-Core-UUID) != $null && $sht(media=>$hdr(X-FS-Core-UUID)) != $null) {
xlog("$var(log_request_level)", "originated from internal sources\n");
setflag(FLAG_INTERNALLY_SOURCED);
routes(CLASSIFY_INTERNALLY_SOURCED);
return;
}

routes(CLASSIFY_SOURCE);

if (!isflagset(FLAG_NETWORK_CLASSIFIED)) {
xlog("$var(log_request_level)", "originated from external sources\n");
}

}

route[HANDLE_OPTIONS]
Expand Down
5 changes: 1 addition & 4 deletions kamailio/dispatcher-role-5.5.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -77,9 +77,7 @@ route[CLASSIFY_SOURCE_DISPATCHER]
route_if_exists("DISPATCHER_CUSTOM_NETWORK_CLASSIFY");

if (!isflagset(FLAG_NETWORK_CLASSIFIED)) {
if (is_myself("$ou")) {
xlog("$var(log_request_level)", "original R-URI ($ou) is this proxy, treating as external sources\n");
} else {
if (!is_myself("$ou")) {
$var(classify_dispatcher_flag) = $(sel(cfg_get.kazoo.dispatcher_classify_flags){s.int});
if (ds_is_from_list(KZ_DISPATCHER_PRIMARY_GROUP, "$var(classify_dispatcher_flag)") ||
ds_is_from_list(KZ_DISPATCHER_SECONDARY_GROUP, "$var(classify_dispatcher_flag)") ||
Expand All @@ -93,7 +91,6 @@ route[CLASSIFY_SOURCE_DISPATCHER]
ds_is_from_list(KZ_DISPATCHER_REGISTRAR_PRIMARY_GROUP, "$var(classify_dispatcher_flag)") ||
ds_is_from_list(KZ_DISPATCHER_REGISTRAR_SECONDARY_GROUP, "$var(classify_dispatcher_flag)") ||
($hdr(X-FS-Core-UUID) != $null && $sht(media=>$hdr(X-FS-Core-UUID)) != $null)) {
xlog("$var(log_request_level)", "originated from internal sources\n");
setflag(FLAG_INTERNALLY_SOURCED);
setflag(FLAG_NETWORK_CLASSIFIED);
}
Expand Down
1 change: 1 addition & 0 deletions kamailio/flags.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@ flags
FLAG_ASSOCIATE_USER,
FLAG_TRUSTED_SOURCE,
FLAG_TRUSTED_PROXY,
FLAG_TRUSTED_PARTNER,
FLAG_SESSION_PROGRESS,
FLAG_SIP_TRACE,
FLT_T38,
Expand Down
1 change: 0 additions & 1 deletion kamailio/trusted.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -143,7 +143,6 @@ route[CLASSIFY_SOURCE_TRUSTED]
if (isflagset(FLAG_NETWORK_CLASSIFIED)) return;

if (allow_source_address()) {
xlog("$var(log_request_level)", "request from trusted IP\n");
setflag(FLAG_TRUSTED_SOURCE);
setflag(FLAG_NETWORK_CLASSIFIED);
routes(CLASSIFY_TRUSTED_SOURCE);
Expand Down

0 comments on commit a020417

Please sign in to comment.