diff options
-rw-r--r-- | misc/freeswitch/scripts/common/perimeter.lua | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/misc/freeswitch/scripts/common/perimeter.lua b/misc/freeswitch/scripts/common/perimeter.lua index de3f993..0815d33 100644 --- a/misc/freeswitch/scripts/common/perimeter.lua +++ b/misc/freeswitch/scripts/common/perimeter.lua @@ -128,6 +128,7 @@ function Perimeter.check(self, event) self:append_blacklist_file(event); end self:execute_ban(event); + event.ban_time = os.time(); end event.record.banned = event.record.banned + 1; @@ -136,6 +137,10 @@ function Perimeter.check(self, event) event.points = 0; end + if event.points then + self:update_intruder(event); + end + self:record_update(event); end @@ -145,6 +150,7 @@ function Perimeter.check_frequency(self, event) self.log:debug('[', event.key, '/', event.sequence, '] PERIMETER_FREQUENCY_CHECK - contacts: ', event.record.span_contact_count, ' in < ', (event.timestamp - event.record.span_start)/1000000, ' sec, threshold: ', self.contact_count_threshold, ' in ', self.contact_span_threshold, ' sec'); event.span_contact_count = 0; event.span_start = event.timestamp; + event.contacts_per_second = event.record.span_contact_count / ((event.timestamp - event.record.span_start)/1000000) return 1; elseif (event.timestamp - event.record.span_start) > (self.contact_span_threshold * 1000000) then event.span_contact_count = 0; @@ -222,6 +228,11 @@ function Perimeter.execute_ban(self, event) local result = os.execute(command); end +function Perimeter.update_intruder(self, event) + require 'common.intruder'; + local result = common.intruder.Intruder:new{ log = self.log, database = self.database }:update_blacklist(event); +end + function Perimeter.expand_variables(self, line, variables) return (line:gsub('{([%a%d%._]+)}', function(captured) |