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