Fixed a bug and caught some interesting issues with strictRfc. Still need

to look into Channel.kban
This commit is contained in:
James Vega 2004-06-19 02:06:44 +00:00
parent d9d1aefac3
commit 90a0529696
2 changed files with 41 additions and 23 deletions

View File

@ -362,6 +362,24 @@ class Channel(callbacks.Privmsg):
irc.replySuccess()
unlobotomize = privmsgs.checkChannelCapability(unlobotomize, 'op')
def _getBanmask(self, irc, arg):
if ircutils.isNick(arg):
if not conf.supybot.protocols.irc.strictRfc():
try:
hostmask = irc.state.nickToHostmask(arg)
banmask = ircutils.banmask(hostmask)
except KeyError:
if ircutils.isUserHostmask(arg):
banmask = arg
else:
hostmask = irc.state.nickToHostmask(arg)
banmask = ircutils.banmask(hostmask)
elif ircutils.isUserHostmask(arg):
banmask = arg
else:
banmask = None
return banmask
def permban(self, irc, msg, args, channel):
"""[<channel>] <nick|hostmask>
@ -371,11 +389,8 @@ class Channel(callbacks.Privmsg):
necessary if the message isn't sent in the channel itself.
"""
arg = privmsgs.getArgs(args)
if ircutils.isNick(arg):
banmask = ircutils.banmask(irc.state.nickToHostmask(arg))
elif ircutils.isUserHostmask(arg):
banmask = arg
else:
banmask = self._getBanmask(irc, arg)
if banmask is None:
irc.error('That\'s not a valid nick or hostmask.')
return
c = ircdb.channels.getChannel(channel)
@ -407,11 +422,8 @@ class Channel(callbacks.Privmsg):
the channel itself.
"""
arg = privmsgs.getArgs(args)
if ircutils.isNick(arg):
banmask = ircutils.banmask(irc.state.nickToHostmask(arg))
elif ircutils.isUserHostmask(arg):
banmask = arg
else:
banmask = self._getBanmask(irc, arg)
if banmask is None:
irc.error('That\'s not a valid nick or hostmask.')
return
c = ircdb.channels.getChannel(channel)
@ -541,9 +553,12 @@ class Channel(callbacks.Privmsg):
"""
capability = privmsgs.getArgs(args)
c = ircdb.channels.getChannel(channel)
try:
c.removeCapability(capability)
ircdb.channels.setChannel(channel, c)
irc.replySuccess()
except KeyError:
irc.error('I do not know about that channel capability.')
unsetcapability = privmsgs.checkChannelCapability(unsetcapability, 'op')
def capabilities(self, irc, msg, args):

View File

@ -56,6 +56,9 @@ class ChannelTestCase(ChannelPluginTestCase, PluginDocumentation):
def testCapabilities(self):
self.assertNotError('channel capabilities')
self.assertNotError('channel setcapability -foo')
self.assertNotError('channel unsetcapability -foo')
self.assertError('channel unsetcapability -foo')
def testUnban(self):
self.assertError('unban foo!bar@baz')