Remove the hack that converted "$r:name" into "name (realname)"

Seems to be safe enough to do.
This commit is contained in:
Elián Hanisch 2012-09-07 23:20:59 -03:00
commit b74850a092
2 changed files with 23 additions and 10 deletions

View File

@ -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:

View File

@ -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',