mirror of
https://github.com/ncoevoet/ChanTracker.git
synced 2025-04-26 13:01:06 -05:00
better supports of libera: added support for account-tag CAP, CHGHOST
This commit is contained in:
parent
c92c1ded5f
commit
f6ff5b8128
51
plugin.py
51
plugin.py
@ -990,6 +990,11 @@ class Chan (object):
|
|||||||
L.append(nick)
|
L.append(nick)
|
||||||
for nick in L:
|
for nick in L:
|
||||||
n = self.ircd.getNick(self.ircd.irc,nick)
|
n = self.ircd.getNick(self.ircd.irc,nick)
|
||||||
|
if not n.prefix:
|
||||||
|
try:
|
||||||
|
n.setPrefix(self.ircd.irc.state.nickToHostmask(nick))
|
||||||
|
except:
|
||||||
|
pass
|
||||||
m = match(value,n,self.ircd.irc,ct.registryValue('resolveIp'))
|
m = match(value,n,self.ircd.irc,ct.registryValue('resolveIp'))
|
||||||
if m:
|
if m:
|
||||||
i.affects.append(n.prefix)
|
i.affects.append(n.prefix)
|
||||||
@ -1903,11 +1908,15 @@ class ChanTracker(callbacks.Plugin,plugins.ChannelDBHandler):
|
|||||||
results = []
|
results = []
|
||||||
i = self.getIrc(irc)
|
i = self.getIrc(irc)
|
||||||
for nick in list(irc.state.channels[channel].users):
|
for nick in list(irc.state.channels[channel].users):
|
||||||
if nick in i.nicks:
|
n = self.getNick(irc,nick)
|
||||||
n = self.getNick(irc,nick)
|
if not n.prefix:
|
||||||
m = match(pattern,n,irc,self.registryValue('resolveIp'))
|
try:
|
||||||
if m:
|
n.setPrefix(self.ircd.irc.state.nickToHostmask(nick))
|
||||||
results.append('[%s - %s]' % (nick,m))
|
except:
|
||||||
|
pass
|
||||||
|
m = match(pattern,n,irc,self.registryValue('resolveIp'))
|
||||||
|
if m:
|
||||||
|
results.append('[%s - %s]' % (nick,m))
|
||||||
if len(results):
|
if len(results):
|
||||||
irc.reply('%s user(s): %s' % (len(results),' '.join(results)))
|
irc.reply('%s user(s): %s' % (len(results),' '.join(results)))
|
||||||
else:
|
else:
|
||||||
@ -2254,6 +2263,7 @@ class ChanTracker(callbacks.Plugin,plugins.ChannelDBHandler):
|
|||||||
# init irc db
|
# init irc db
|
||||||
if not irc.network in self._ircs:
|
if not irc.network in self._ircs:
|
||||||
i = self._ircs[irc.network] = Ircd (irc,self.registryValue('logsSize'))
|
i = self._ircs[irc.network] = Ircd (irc,self.registryValue('logsSize'))
|
||||||
|
irc.queueMsg(ircmsgs.IrcMsg('CAP REQ :account-tag'))
|
||||||
return self._ircs[irc.network]
|
return self._ircs[irc.network]
|
||||||
|
|
||||||
def getChan (self,irc,channel):
|
def getChan (self,irc,channel):
|
||||||
@ -2675,6 +2685,8 @@ class ChanTracker(callbacks.Plugin,plugins.ChannelDBHandler):
|
|||||||
self._logChan(irc,channel,"[%s] is ready" % ircutils.bold(channel))
|
self._logChan(irc,channel,"[%s] is ready" % ircutils.bold(channel))
|
||||||
else:
|
else:
|
||||||
self._logChan(irc,channel,"[%s] is ready" % channel)
|
self._logChan(irc,channel,"[%s] is ready" % channel)
|
||||||
|
for nick in list(irc.state.channels[channel].users):
|
||||||
|
chan.nicks[nick] = True
|
||||||
self._tickle(irc)
|
self._tickle(irc)
|
||||||
|
|
||||||
def _logChan (self,irc,channel,message):
|
def _logChan (self,irc,channel,message):
|
||||||
@ -2761,6 +2773,14 @@ class ChanTracker(callbacks.Plugin,plugins.ChannelDBHandler):
|
|||||||
break
|
break
|
||||||
self._tickle(irc)
|
self._tickle(irc)
|
||||||
|
|
||||||
|
def doChghost (self,irc,msg):
|
||||||
|
n = self.getNick(irc,msg.nick)
|
||||||
|
(user, host) = msg.args
|
||||||
|
hostmask = '%s!%s@%s' % (msg.nick, user, host)
|
||||||
|
n.setPrefix(hostmask)
|
||||||
|
if 'account' in msg.server_tags:
|
||||||
|
n.setAccount(msg.server_tags['account'])
|
||||||
|
|
||||||
def doJoin (self,irc,msg):
|
def doJoin (self,irc,msg):
|
||||||
channels = msg.args[0].split(',')
|
channels = msg.args[0].split(',')
|
||||||
n = self.getNick(irc,msg.nick)
|
n = self.getNick(irc,msg.nick)
|
||||||
@ -2769,14 +2789,19 @@ class ChanTracker(callbacks.Plugin,plugins.ChannelDBHandler):
|
|||||||
if len(msg.args) == 3:
|
if len(msg.args) == 3:
|
||||||
n.setRealname(msg.args[2])
|
n.setRealname(msg.args[2])
|
||||||
n.setAccount(msg.args[1])
|
n.setAccount(msg.args[1])
|
||||||
|
if 'account' in msg.server_tags:
|
||||||
|
n.setAccount(msg.server_tags['account'])
|
||||||
if msg.nick == irc.nick:
|
if msg.nick == irc.nick:
|
||||||
self.forceTickle = True
|
self.forceTickle = True
|
||||||
self._tickle(irc)
|
self._tickle(irc)
|
||||||
return
|
return
|
||||||
if self.registryValue('resolveIp') and not '/' in msg.prefix.split('@')[1] and n.ip == None:
|
if not '/' in msg.prefix.split('@')[1] and n.ip == None:
|
||||||
t = world.SupyThread(target=self.resolve,name=format('Resolving %s for %s', msg.prefix, channels),args=(irc,channels,msg.prefix))
|
if self.registryValue('resolveIp'):
|
||||||
t.setDaemon(True)
|
t = world.SupyThread(target=self.resolve,name=format('Resolving %s for %s', msg.prefix, channels),args=(irc,channels,msg.prefix))
|
||||||
t.start()
|
t.setDaemon(True)
|
||||||
|
t.start()
|
||||||
|
elif utils.net.isIP(msg.prefix.split('@')[1]):
|
||||||
|
n.setIp(msg.prefix.split('@')[1])
|
||||||
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:
|
||||||
bests = getBestPattern(n,irc,self.registryValue('useIpForGateway',channel=channel),self.registryValue('resolveIp'))
|
bests = getBestPattern(n,irc,self.registryValue('useIpForGateway',channel=channel),self.registryValue('resolveIp'))
|
||||||
@ -3234,6 +3259,8 @@ class ChanTracker(callbacks.Plugin,plugins.ChannelDBHandler):
|
|||||||
if msg.nick == irc.nick:
|
if msg.nick == irc.nick:
|
||||||
return
|
return
|
||||||
n = self.getNick(irc,msg.nick)
|
n = self.getNick(irc,msg.nick)
|
||||||
|
if 'account' in msg.server_tags:
|
||||||
|
n.setAccount(msg.server_tags['account'])
|
||||||
patterns = getBestPattern(n,irc,self.registryValue('useIpForGateway'),self.registryValue('resolveIp'))
|
patterns = getBestPattern(n,irc,self.registryValue('useIpForGateway'),self.registryValue('resolveIp'))
|
||||||
best = False
|
best = False
|
||||||
if len(patterns):
|
if len(patterns):
|
||||||
@ -3341,6 +3368,8 @@ class ChanTracker(callbacks.Plugin,plugins.ChannelDBHandler):
|
|||||||
# server msgs or plugin reload, or state not ready
|
# server msgs or plugin reload, or state not ready
|
||||||
self._tickle(irc)
|
self._tickle(irc)
|
||||||
return
|
return
|
||||||
|
if 'account' in msg.server_tags:
|
||||||
|
n.setAccount(msg.server_tags['account'])
|
||||||
for channel in recipients.split(','):
|
for channel in recipients.split(','):
|
||||||
if channel.startswith('@'):
|
if channel.startswith('@'):
|
||||||
channel = channel.replace('@','',1)
|
channel = channel.replace('@','',1)
|
||||||
@ -3583,6 +3612,8 @@ class ChanTracker(callbacks.Plugin,plugins.ChannelDBHandler):
|
|||||||
if ircutils.isUserHostmask(msg.prefix):
|
if ircutils.isUserHostmask(msg.prefix):
|
||||||
n = self.getNick(irc,msg.nick)
|
n = self.getNick(irc,msg.nick)
|
||||||
channel = msg.args[0]
|
channel = msg.args[0]
|
||||||
|
if 'account' in msg.server_tags:
|
||||||
|
n.setAccount(msg.server_tags['account'])
|
||||||
if channel in irc.state.channels:
|
if channel in irc.state.channels:
|
||||||
if n:
|
if n:
|
||||||
n.addLog(channel,'sets topic "%s"' % msg.args[1])
|
n.addLog(channel,'sets topic "%s"' % msg.args[1])
|
||||||
@ -3652,6 +3683,8 @@ class ChanTracker(callbacks.Plugin,plugins.ChannelDBHandler):
|
|||||||
# prevent server.netsplit to create a Nick
|
# prevent server.netsplit to create a Nick
|
||||||
n = self.getNick(irc,msg.nick)
|
n = self.getNick(irc,msg.nick)
|
||||||
n.setPrefix(msg.prefix)
|
n.setPrefix(msg.prefix)
|
||||||
|
if 'account' in msg.server_tags:
|
||||||
|
n.setAccount(msg.server_tags['account'])
|
||||||
# umode otherwise
|
# umode otherwise
|
||||||
db = self.getDb(irc.network)
|
db = self.getDb(irc.network)
|
||||||
c = db.cursor()
|
c = db.cursor()
|
||||||
|
Loading…
x
Reference in New Issue
Block a user