mirror of
https://github.com/ncoevoet/ChanTracker.git
synced 2025-05-04 01:10:58 -05:00
fix a per channel settings, useIpForGateway
This commit is contained in:
parent
a7a83d6e03
commit
883bee94a8
30
plugin.py
30
plugin.py
@ -1666,7 +1666,7 @@ class ChanTracker(callbacks.Plugin,plugins.ChannelDBHandler):
|
|||||||
returns a list of hostmask's pattern, best first, mostly used for debug"""
|
returns a list of hostmask's pattern, best first, mostly used for debug"""
|
||||||
i = self.getIrc(irc)
|
i = self.getIrc(irc)
|
||||||
if prefix in i.nicks:
|
if prefix in i.nicks:
|
||||||
irc.reply(' '.join(getBestPattern(self.getNick(irc,prefix),irc,self.registryValue('useIpForGateway'))))
|
irc.reply(' '.join(getBestPattern(self.getNick(irc,prefix),irc,self.registryValue('useIpForGateway',channel=channel))))
|
||||||
else:
|
else:
|
||||||
n = Nick(0)
|
n = Nick(0)
|
||||||
#gecos ( $x )
|
#gecos ( $x )
|
||||||
@ -1679,7 +1679,7 @@ class ChanTracker(callbacks.Plugin,plugins.ChannelDBHandler):
|
|||||||
else:
|
else:
|
||||||
n.setPrefix(prefix)
|
n.setPrefix(prefix)
|
||||||
if ircutils.isUserHostmask(prefix):
|
if ircutils.isUserHostmask(prefix):
|
||||||
irc.reply(' '.join(getBestPattern(n,irc,self.registryValue('useIpForGateway'))))
|
irc.reply(' '.join(getBestPattern(n,irc,self.registryValue('useIpForGateway',channel=channel))))
|
||||||
return
|
return
|
||||||
irc.reply('nick not found or wrong hostmask given')
|
irc.reply('nick not found or wrong hostmask given')
|
||||||
getmask = wrap(getmask,['op','text'])
|
getmask = wrap(getmask,['op','text'])
|
||||||
@ -1702,7 +1702,7 @@ class ChanTracker(callbacks.Plugin,plugins.ChannelDBHandler):
|
|||||||
i = self.getIrc(irc)
|
i = self.getIrc(irc)
|
||||||
if nick in i.nicks:
|
if nick in i.nicks:
|
||||||
chan = self.getChan(irc,channel)
|
chan = self.getChan(irc,channel)
|
||||||
irc.reply(chan.isWrong(getBestPattern(self.getNick(irc,nick),irc,self.registryValue('useIpForGateway'))[0]))
|
irc.reply(chan.isWrong(getBestPattern(self.getNick(irc,nick),irc,self.registryValue('useIpForGateway',channel=channel))[0]))
|
||||||
else:
|
else:
|
||||||
irc.reply('nick not found')
|
irc.reply('nick not found')
|
||||||
isbad = wrap(isbad,['op','nick'])
|
isbad = wrap(isbad,['op','nick'])
|
||||||
@ -1763,7 +1763,7 @@ class ChanTracker(callbacks.Plugin,plugins.ChannelDBHandler):
|
|||||||
for item in items:
|
for item in items:
|
||||||
if item in chan.nicks or item in irc.state.channels[channel].users:
|
if item in chan.nicks or item in irc.state.channels[channel].users:
|
||||||
n = self.getNick(irc,item)
|
n = self.getNick(irc,item)
|
||||||
patterns = getBestPattern(n,irc,self.registryValue('useIpForGateway'))
|
patterns = getBestPattern(n,irc,self.registryValue('useIpForGateway',channel=channel))
|
||||||
# when resync patterns may be empty, until the bot computed WHO
|
# when resync patterns may be empty, until the bot computed WHO
|
||||||
if len(patterns):
|
if len(patterns):
|
||||||
targets.append(patterns[0])
|
targets.append(patterns[0])
|
||||||
@ -2261,13 +2261,13 @@ class ChanTracker(callbacks.Plugin,plugins.ChannelDBHandler):
|
|||||||
if 'LIST' in i.caps and 'extended-join' in i.caps['LIST'] and len(msg.args) == 3:
|
if 'LIST' in i.caps and 'extended-join' in i.caps['LIST'] and len(msg.args) == 3:
|
||||||
n.setRealname(msg.args[2])
|
n.setRealname(msg.args[2])
|
||||||
n.setAccount(msg.args[1])
|
n.setAccount(msg.args[1])
|
||||||
best = getBestPattern(n,irc,self.registryValue('useIpForGateway'))[0]
|
|
||||||
if msg.nick == irc.nick:
|
if msg.nick == irc.nick:
|
||||||
self.forceTickle = True
|
self.forceTickle = True
|
||||||
self._tickle(irc)
|
self._tickle(irc)
|
||||||
return
|
return
|
||||||
for channel in channels:
|
for channel in channels:
|
||||||
if ircutils.isChannel(channel) and channel in irc.state.channels:
|
if ircutils.isChannel(channel) and channel in irc.state.channels:
|
||||||
|
best = getBestPattern(n,irc,self.registryValue('useIpForGateway',channel=channel))[0]
|
||||||
chan = self.getChan(irc,channel)
|
chan = self.getChan(irc,channel)
|
||||||
chan.nicks[msg.nick] = True
|
chan.nicks[msg.nick] = True
|
||||||
n.addLog(channel,'has joined')
|
n.addLog(channel,'has joined')
|
||||||
@ -2332,7 +2332,6 @@ class ChanTracker(callbacks.Plugin,plugins.ChannelDBHandler):
|
|||||||
n = self.getNick(irc,msg.nick)
|
n = self.getNick(irc,msg.nick)
|
||||||
n.setPrefix(msg.prefix)
|
n.setPrefix(msg.prefix)
|
||||||
reason = ''
|
reason = ''
|
||||||
best = getBestPattern(n,irc,self.registryValue('useIpForGateway'))[0]
|
|
||||||
if len(msg.args) == 2:
|
if len(msg.args) == 2:
|
||||||
reason = msg.args[1].lstrip().rstrip()
|
reason = msg.args[1].lstrip().rstrip()
|
||||||
canRemove = True
|
canRemove = True
|
||||||
@ -2341,6 +2340,7 @@ class ChanTracker(callbacks.Plugin,plugins.ChannelDBHandler):
|
|||||||
del i.channels[channel]
|
del i.channels[channel]
|
||||||
continue
|
continue
|
||||||
if ircutils.isChannel(channel) and channel in irc.state.channels:
|
if ircutils.isChannel(channel) and channel in irc.state.channels:
|
||||||
|
best = getBestPattern(n,irc,self.registryValue('useIpForGateway',channel=channel))[0]
|
||||||
if len(reason):
|
if len(reason):
|
||||||
if reason.startswith('requested by') and self.registryValue('announceKick',channel=channel):
|
if reason.startswith('requested by') and self.registryValue('announceKick',channel=channel):
|
||||||
if self.registryValue('useColorForAnnounces',channel=channel):
|
if self.registryValue('useColorForAnnounces',channel=channel):
|
||||||
@ -2455,8 +2455,8 @@ class ChanTracker(callbacks.Plugin,plugins.ChannelDBHandler):
|
|||||||
if not found:
|
if not found:
|
||||||
if nick in i.nicks:
|
if nick in i.nicks:
|
||||||
del i.nicks[nick]
|
del i.nicks[nick]
|
||||||
best = patterns[0]
|
|
||||||
for channel in irc.state.channels:
|
for channel in irc.state.channels:
|
||||||
|
best = getBestPattern(n,irc,self.registryValue('useIpForGateway',channel=channel))[0]
|
||||||
if channel in i.channels:
|
if channel in i.channels:
|
||||||
chan = self.getChan(irc,channel)
|
chan = self.getChan(irc,channel)
|
||||||
if nick in chan.nicks:
|
if nick in chan.nicks:
|
||||||
@ -2530,6 +2530,7 @@ class ChanTracker(callbacks.Plugin,plugins.ChannelDBHandler):
|
|||||||
chan = self.getChan(irc,channel)
|
chan = self.getChan(irc,channel)
|
||||||
if msg.nick in chan.nicks:
|
if msg.nick in chan.nicks:
|
||||||
if not self._isVip(irc,channel,n):
|
if not self._isVip(irc,channel,n):
|
||||||
|
best = getBestPattern(n,irc,self.registryValue('useIpForGateway',channel=channel))[0]
|
||||||
isCycle = self._isSomething(irc,channel,best,'cycle')
|
isCycle = self._isSomething(irc,channel,best,'cycle')
|
||||||
if isCycle:
|
if isCycle:
|
||||||
isBad = self._isSomething(irc,channel,best,'bad')
|
isBad = self._isSomething(irc,channel,best,'bad')
|
||||||
@ -2575,6 +2576,7 @@ class ChanTracker(callbacks.Plugin,plugins.ChannelDBHandler):
|
|||||||
if not best:
|
if not best:
|
||||||
return
|
return
|
||||||
for channel in irc.state.channels:
|
for channel in irc.state.channels:
|
||||||
|
best = getBestPattern(n,irc,self.registryValue('useIpForGateway',channel=channel))[0]
|
||||||
if newNick in irc.state.channels[channel].users:
|
if newNick in irc.state.channels[channel].users:
|
||||||
chan = self.getChan(irc,channel)
|
chan = self.getChan(irc,channel)
|
||||||
if oldNick in chan.nicks:
|
if oldNick in chan.nicks:
|
||||||
@ -2669,12 +2671,12 @@ class ChanTracker(callbacks.Plugin,plugins.ChannelDBHandler):
|
|||||||
duration = -1
|
duration = -1
|
||||||
if found.expire and found.expire != found.when:
|
if found.expire and found.expire != found.when:
|
||||||
duration = int(found.expire-time.time())
|
duration = int(found.expire-time.time())
|
||||||
r = self.getIrcdMode(irc,found.mode,getBestPattern(n,irc,self.registryValue('useIpForGateway'))[0])
|
r = self.getIrcdMode(irc,found.mode,getBestPattern(n,irc,self.registryValue('useIpForGateway',channel=channel))[0])
|
||||||
self._act (irc,channel,r[0],r[1],duration,'evade of [#%s +%s %s]' % (found.uid,found.mode,found.value))
|
self._act (irc,channel,r[0],r[1],duration,'evade of [#%s +%s %s]' % (found.uid,found.mode,found.value))
|
||||||
f = None
|
f = None
|
||||||
if self.registryValue('announceBotMark',channel=found.channel):
|
if self.registryValue('announceBotMark',channel=found.channel):
|
||||||
f = self._logChan
|
f = self._logChan
|
||||||
i.mark(irc,found.uid,'evade with %s --> %s' % (msg.prefix,getBestPattern(n,irc,self.registryValue('useIpForGateway'))[0]),irc.prefix,self.getDb(irc.network),f,self)
|
i.mark(irc,found.uid,'evade with %s --> %s' % (msg.prefix,getBestPattern(n,irc,self.registryValue('useIpForGateway',channel=channel))[0]),irc.prefix,self.getDb(irc.network),f,self)
|
||||||
self.forceTickle = True
|
self.forceTickle = True
|
||||||
|
|
||||||
self._tickle(irc)
|
self._tickle(irc)
|
||||||
@ -2710,6 +2712,7 @@ class ChanTracker(callbacks.Plugin,plugins.ChannelDBHandler):
|
|||||||
return
|
return
|
||||||
for channel in targets.split(','):
|
for channel in targets.split(','):
|
||||||
if irc.isChannel(channel) and channel in irc.state.channels:
|
if irc.isChannel(channel) and channel in irc.state.channels:
|
||||||
|
best = getBestPattern(n,irc,self.registryValue('useIpForGateway',channel=channel))[0]
|
||||||
chan = self.getChan(irc,channel)
|
chan = self.getChan(irc,channel)
|
||||||
n.addLog(channel,'NOTICE | %s' % text)
|
n.addLog(channel,'NOTICE | %s' % text)
|
||||||
isVip = self._isVip(irc,channel,n)
|
isVip = self._isVip(irc,channel,n)
|
||||||
@ -2796,6 +2799,7 @@ class ChanTracker(callbacks.Plugin,plugins.ChannelDBHandler):
|
|||||||
return
|
return
|
||||||
for channel in recipients.split(','):
|
for channel in recipients.split(','):
|
||||||
if irc.isChannel(channel) and channel in irc.state.channels:
|
if irc.isChannel(channel) and channel in irc.state.channels:
|
||||||
|
best = getBestPattern(n,irc,self.registryValue('useIpForGateway',channel=channel))[0]
|
||||||
chan = self.getChan(irc,channel)
|
chan = self.getChan(irc,channel)
|
||||||
message = text
|
message = text
|
||||||
if isCtcpMsg and not isAction:
|
if isCtcpMsg and not isAction:
|
||||||
@ -3328,6 +3332,14 @@ class ChanTracker(callbacks.Plugin,plugins.ChannelDBHandler):
|
|||||||
chan = self.getChan(irc,channel)
|
chan = self.getChan(irc,channel)
|
||||||
if self._isSomething(irc,channel,channel,'attack') and not chan.attacked:
|
if self._isSomething(irc,channel,channel,'attack') and not chan.attacked:
|
||||||
# if number of bad users raise the allowed limit, bot has to set channel attackmode
|
# if number of bad users raise the allowed limit, bot has to set channel attackmode
|
||||||
|
# todo retreive all wrong users and find the best pattern to use against them
|
||||||
|
# L = []
|
||||||
|
# for n in chan.nicks:
|
||||||
|
# n = self.getNick(irc,n)
|
||||||
|
# patterns = getBestPattern(n,irc,self.registryValue('useIpForGateway'),channel=channel)
|
||||||
|
# if chan.isWrong(patterns[0]):
|
||||||
|
# L.append(n)
|
||||||
|
# self.log.debug('founds bads %s' % ' '.join(L))
|
||||||
chan.attacked = True
|
chan.attacked = True
|
||||||
chan.action.enqueue(ircmsgs.IrcMsg('MODE %s %s' % (channel,self.registryValue('attackMode',channel=channel))))
|
chan.action.enqueue(ircmsgs.IrcMsg('MODE %s %s' % (channel,self.registryValue('attackMode',channel=channel))))
|
||||||
def unAttack():
|
def unAttack():
|
||||||
|
Loading…
x
Reference in New Issue
Block a user