diff --git a/kamailio/block.cfg b/kamailio/block.cfg new file mode 100644 index 0000000..0b74219 --- /dev/null +++ b/kamailio/block.cfg @@ -0,0 +1,43 @@ +######## BLOCK BY IP[PORT] ######## + +#!ifndef KZ_BLOCK_DISABLE + +#!trydef KZ_BLOCK_ENABLE 1 +#!trydef KZ_BLOCK_LOG_LEVEL 1 +#!trydef KZ_BLOCK_LOG_BUFFER 0 +#!trydef KZ_BLOCK_DRY_RUN 0 + +#!ifdef KZ_BLOCK_COLD_CACHE +#!substdef "!BLOCK_S_WARM_CACHE!!g" +#!else +#!substdef "!BLOCK_S_WARM_CACHE!dbtable=block_cache;dbmode=1;!g" +#!endif + +modparam("htable", "htable", "block=>size=8;BLOCK_S_WARM_CACHE") +modparam("statistics","variable", "block:blocked_requests") + +kazoo.block_enable = KZ_BLOCK_ENABLE descr "enable block processing" +kazoo.block_log_level = KZ_BLOCK_LOG_LEVEL descr "block log level" +kazoo.block_log_buffer = KZ_BLOCK_LOG_BUFFER descr "log the received buffer" +kazoo.block_dry_run = KZ_BLOCK_DRY_RUN descr "log but keep processing" + +## global param to enable route +received_route_mode=1 + +event_route[core:msg-received] +{ + if($sel(cfg_get.kazoo.block_enable) == 1) { + if($sht(block=>$rcv(srcip)) || $sht(block=>$rcv(srcip)::$rcv(srcport))) { + if($sel(cfg_get.kazoo.block_log_buffer) == 1) { + xlog("$(sel(cfg_get.kazoo.block_log_level){s.int})", "|block|request from [$rcv(srcip):$rcv(srcport)] to [$rcv(rcvip):$rcv(rcvport)] was blocked => [$rcv(buf)]\n"); + } else { + xlog("$(sel(cfg_get.kazoo.block_log_level){s.int})", "|block|request from [$rcv(srcip):$rcv(srcport)] to [$rcv(rcvip):$rcv(rcvport)] was blocked\n"); + } + if($sel(cfg_get.kazoo.block_dry_run) == 0) { + drop; + } + } + } +} + +#!endif diff --git a/kamailio/default.cfg b/kamailio/default.cfg index 77dc71a..35206a4 100644 --- a/kamailio/default.cfg +++ b/kamailio/default.cfg @@ -269,6 +269,8 @@ include_file "sip_trace-role.cfg" ## auth ## include_file "auth.cfg" +## block ## +include_file "block.cfg" ####### Permissions module ########## loadmodule "permissions.so"