Remove the hack that converted "$r:name" into "name (realname)"
Seems to be safe enough to do.
This commit is contained in:
@ -338,7 +338,10 @@ def guessBanType(mask):
|
||||
elif ircutils.isUserHostmask(mask) \
|
||||
or mask[0] == '$' \
|
||||
or mask.endswith('(realname)'):
|
||||
if not ('*' in mask or '?' in mask or '$' in mask):
|
||||
if not ('*' in mask or \
|
||||
'?' in mask or \
|
||||
'$' in mask or \
|
||||
' ' in mask):
|
||||
# XXX hack over hack, we are supposing these are marks as normal
|
||||
# bans aren't usually set to exact match, while marks are.
|
||||
return 'mark'
|
||||
@ -628,8 +631,6 @@ class Bantracker(callbacks.Plugin):
|
||||
except KeyError:
|
||||
bans = self.bans[channel] = []
|
||||
ban = Ban(msg.args)
|
||||
if ban.mask.startswith("$r:"):
|
||||
ban.mask = ban.mask[3:] + " (realname)"
|
||||
if ban not in bans:
|
||||
bans.append(ban)
|
||||
|
||||
@ -1132,25 +1133,21 @@ class Bantracker(callbacks.Plugin):
|
||||
continue
|
||||
|
||||
# channel mask stuff
|
||||
realname = mask = ''
|
||||
mask = ''
|
||||
comment = None
|
||||
if mode[1] not in "bq":
|
||||
continue
|
||||
|
||||
mask = param[1]
|
||||
if mask.startswith("$r:"):
|
||||
mask = mask[3:]
|
||||
realname = ' (realname)'
|
||||
|
||||
if mode[1] == 'q':
|
||||
mask = '%' + mask
|
||||
|
||||
if mode[0] == '+':
|
||||
comment = self.getHostFromBan(irc, msg, mask)
|
||||
ban = self.doKickban(irc, channel, msg.prefix, mask + realname,
|
||||
ban = self.doKickban(irc, channel, msg.prefix, mask,
|
||||
extra_comment=comment)
|
||||
elif mode[0] == '-':
|
||||
self.doUnban(irc,channel, msg.nick, mask + realname)
|
||||
self.doUnban(irc,channel, msg.nick, mask)
|
||||
|
||||
def getHostFromBan(self, irc, msg, mask):
|
||||
if irc not in self.lastStates:
|
||||
|
@ -391,6 +391,11 @@ class BantrackerTestCase(ChannelPluginTestCase):
|
||||
fetch = self.query("SELECT id,channel,mask,operator FROM bans")
|
||||
self.assertEqual((1, '#test', 'asd!*@*', 'op'), fetch[0])
|
||||
|
||||
def testBanRealname(self):
|
||||
self.feedBan('$r:asd')
|
||||
fetch = self.query("SELECT id,channel,mask,operator FROM bans")
|
||||
self.assertEqual((1, '#test', '$r:asd', 'op'), fetch[0])
|
||||
|
||||
def testQuiet(self):
|
||||
self.feedBan('asd!*@*', mode='q')
|
||||
fetch = self.query("SELECT id,channel,mask,operator FROM bans")
|
||||
@ -467,6 +472,17 @@ class BantrackerTestCase(ChannelPluginTestCase):
|
||||
msg = self.irc.takeMsg() # unban msg
|
||||
self.assertEqual(str(msg).strip(), "MODE #test -q :asd!*@*")
|
||||
|
||||
def testDurationRealname(self):
|
||||
self.op()
|
||||
cb = self.getCallback()
|
||||
self.feedBan('$r:asd?asd', mode='b')
|
||||
self.assertNotError('duration 1 1')
|
||||
print 'waiting 2 sec ...'
|
||||
time.sleep(2)
|
||||
cb.autoRemoveBans(self.irc)
|
||||
msg = self.irc.takeMsg() # unban msg
|
||||
self.assertEqual(str(msg).strip(), "MODE #test -b :$r:asd?asd")
|
||||
|
||||
def testDurationBadType(self):
|
||||
self.feedBan('nick', mode='k')
|
||||
self.assertResponse('duration 1 1',
|
||||
|
Reference in New Issue
Block a user