From 46596e0b33a9a5dc086028f8e0e023a4b599bc95 Mon Sep 17 00:00:00 2001 From: Georg Date: Tue, 31 Aug 2021 16:29:17 +0200 Subject: [PATCH] ipquery IP validation + repaired config integers Signed-off-by: Georg --- config.py | 12 ++++++------ plugin.py | 34 ++++++++++++++++++---------------- 2 files changed, 24 insertions(+), 22 deletions(-) diff --git a/config.py b/config.py index 90dd9c9..5a9ebbd 100644 --- a/config.py +++ b/config.py @@ -74,14 +74,14 @@ conf.registerGlobalValue(SnoParser, 'debug', ### conf.registerGroup(SnoParser, 'redis') conf.registerGlobalValue(SnoParser.redis, 'db1', - registry.Integer('1', + registry.Integer(1, """ Redis: Database number for counting of NICKNAMES. """ , private=True )) conf.registerGlobalValue(SnoParser.redis, 'db2', - registry.Integer('2', + registry.Integer(2, """ Redis: Database number for counting of IP ADDRESSES. """ @@ -95,7 +95,7 @@ conf.registerGlobalValue(SnoParser.redis, 'host', , private=True )) conf.registerGlobalValue(SnoParser.redis, 'port', - registry.Integer('6379', + registry.Integer(6379, """ Redis: Port. """ @@ -115,7 +115,7 @@ conf.registerGlobalValue(SnoParser.redis, 'password', """ )) conf.registerGlobalValue(SnoParser.redis, 'timeout', - registry.Integer('5', + registry.Integer(5, """ Redis: Socket Timeout. The developer does not know what to recommend here, but `5` seems to yield good results. """ @@ -141,7 +141,7 @@ conf.registerGlobalValue(SnoParser.whois, 'sample', , private=True )) conf.registerGlobalValue(SnoParser.whois, 'ttl', - registry.Integer('3600', + registry.Integer(3600, """ SnoParser: How long to cache WHOIS entries for. """ @@ -149,7 +149,7 @@ conf.registerGlobalValue(SnoParser.whois, 'ttl', )) conf.registerGroup(SnoParser.whois, 'redis') conf.registerGlobalValue(SnoParser.whois.redis, 'db', - registry.Integer('0', + registry.Integer(0, """ Redis: Database number for WHOIS query caching. """ diff --git a/plugin.py b/plugin.py index cf2e05c..d10c8e0 100644 --- a/plugin.py +++ b/plugin.py @@ -168,7 +168,7 @@ class SnoParser(callbacks.Plugin): print(data) data = json.dumps(data) state = self.whois_set_cache(key=sourceip, value=data) - + if state is True: return json.loads(data) else: @@ -243,11 +243,10 @@ class SnoParser(callbacks.Plugin): ttl = self.redis_client_whois.ttl(ipaddress) count = self.redis_client_ips.get(ipaddress) decoded_count = count.decode('utf-8') - print('SnoParser manual query: ', data, ' ', ttl) irc.reply(f'{decoded_data} - Count: {decoded_count} - Remaining: {ttl}s') - - ipquery = wrap(ipquery, ['anything']) + + ipquery = wrap(ipquery, ['ip']) def doNotice(self, irc, msg): @@ -342,7 +341,7 @@ class SnoParser(callbacks.Plugin): ip = couple.group(3) DictFromSnotice = {'notice': 'accreg', 'hostmask': hostmask, 'account': account, 'ip': ip} repl = f"\x02\x1FNOTICE: accreg -> [{account}] was registered by hostmask [{hostmask}] from IP {ip}" - + # Trigger HS SET self._setvhost(irc, msg, account) @@ -354,17 +353,20 @@ class SnoParser(callbacks.Plugin): account = couple.group(2) DictFromSnotice = {'notice': 'sareg', 'oper': oper, 'account': account} repl = f"\x02\x1FNOTICE: sareg -> [{account}] was registered by operator [{oper}]" - + self._setvhost(irc, msg, account) self._sendSnotice(irc, msg, repl) if 'OPER' in text and 'Client opered up' in text: - - operregex = "^-OPER- Client opered up \[(.*)\]" + operregex = "^-OPER- Client opered up \[(.*)\, \ (.*)\]$" couple = re.match(operregex, text) - account = couple.group(1) - DictFromSnotice = {'notice': 'oper'} - repl = f"\x02\x1FNOTICE:\x0F [{account}] opered up." + hostmask = couple.group(1) + oper = couple.group(2) + + print(couple) + + DictFromSnotice = {'notice': 'opered', 'hostmask': hostmask, 'oper': oper} + repl = f"\x02\x1FNOTICE:\x0F [{hostmask}] opered up as [{oper}]." self._sendSnotice(irc, msg, repl) @@ -373,14 +375,14 @@ class SnoParser(callbacks.Plugin): operregex = "^-OPER- Client deopered \[(.*)\]" couple = re.match(operregex, text) account = couple.group(1) - DictFromSnotice = {'notice': 'oper'} + DictFromSnotice = {'notice': 'deopered', 'name': account} repl = f"\x02\x1FNOTICE:\x0F [{account}] opered down." self._sendSnotice(irc, msg, repl) # Post Registration - + def _setvhost(self, irc, msg, account): arg = ['SET'] arg.append(account) @@ -390,18 +392,18 @@ class SnoParser(callbacks.Plugin): args=arg)) - # Send formatted SNO to channel + # Send formatted SNO to channel def _sendSnotice(self, irc, msg, repl): try: channel = self.registryValue('targetChannel') if channel[0] == '#': irc.queueMsg(msg=ircmsgs.IrcMsg(command='NOTICE', - args=(channel, repl))) + args=(channel, repl))) # what sort of exception does one raise except: pass - + Class = SnoParser