mirror of https://github.com/Mikaela/Limnoria.git
Made configurable.
This commit is contained in:
parent
5980afc86f
commit
9678560c98
|
@ -37,23 +37,43 @@ __revision__ = "$Id$"
|
||||||
|
|
||||||
import plugins
|
import plugins
|
||||||
|
|
||||||
import irclib
|
|
||||||
import ircmsgs
|
import ircmsgs
|
||||||
import ircutils
|
import ircutils
|
||||||
|
import callbacks
|
||||||
|
import configurable
|
||||||
|
|
||||||
###
|
###
|
||||||
# RootWarner: Warns users who join a channel as root.
|
# RootWarner: Warns users who join a channel as root.
|
||||||
###
|
###
|
||||||
class RootWarner(irclib.IrcCallback):
|
class RootWarner(callbacks.Privmsg, configurable.Mixin):
|
||||||
|
configurables = configurable.Dictionary(
|
||||||
|
[('warn', configurable.BoolType, True,
|
||||||
|
"""Determines whether the bot will warn people who join the channel
|
||||||
|
with an ident of 'root' or '~root'."""),
|
||||||
|
('warning', configurable.StrType,
|
||||||
|
'Don\'t IRC as root -- it\'s very possible that there is a '
|
||||||
|
'security flaw latent in your irc client (remember the BitchX '
|
||||||
|
'format string vulnerabilities of days past?) and if you\'re '
|
||||||
|
'IRCing as root, your entire box could be compromised.',
|
||||||
|
"""The message that is to be sent to users joining the channel with
|
||||||
|
an ident of 'root' or '~root'."""),
|
||||||
|
('kick', configurable.BoolType, False,
|
||||||
|
"""Determines whether the bot will kick people who join the channel
|
||||||
|
with an ident of 'root' or '~root'.""")]
|
||||||
|
)
|
||||||
|
def __init__(self):
|
||||||
|
callbacks.Privmsg.__init__(self)
|
||||||
|
configurable.Mixin.__init__(self)
|
||||||
|
|
||||||
def doJoin(self, irc, msg):
|
def doJoin(self, irc, msg):
|
||||||
user = ircutils.userFromHostmask(msg.prefix)
|
user = ircutils.userFromHostmask(msg.prefix)
|
||||||
if user == 'root' or user == '~root':
|
if user == 'root' or user == '~root':
|
||||||
irc.queueMsg(ircmsgs.privmsg(msg.nick,
|
channel = msg.args[0]
|
||||||
'Don\'t IRC as root -- it\'s very possible that there is a '\
|
s = self.configurables.get('warning', channel)
|
||||||
'security flaw in latent in your irc client (remember the '\
|
if self.configurables.get('warn', channel):
|
||||||
'BitchX format string vulnerabilities of days past?) and if '\
|
irc.queueMsg(ircmsgs.privmsg(msg.nick, s))
|
||||||
'you\'re IRCing as root, your entire box could be compromised.'))
|
if self.configurables.get('kick', channel):
|
||||||
|
irc.queueMsg(ircmsgs.kick(channel, msg.nick, s))
|
||||||
|
|
||||||
Class = RootWarner
|
Class = RootWarner
|
||||||
# vim:set shiftwidth=4 tabstop=8 expandtab textwidth=78:
|
# vim:set shiftwidth=4 tabstop=8 expandtab textwidth=78:
|
||||||
|
|
|
@ -33,7 +33,6 @@ from testsupport import *
|
||||||
|
|
||||||
class RootWarnerTestCase(PluginTestCase):
|
class RootWarnerTestCase(PluginTestCase):
|
||||||
plugins = ('RootWarner',)
|
plugins = ('RootWarner',)
|
||||||
|
|
||||||
def test(self):
|
def test(self):
|
||||||
self.irc.feedMsg(ircmsgs.join('#foo', prefix='foo!root@host'))
|
self.irc.feedMsg(ircmsgs.join('#foo', prefix='foo!root@host'))
|
||||||
self.assertNotError(' ')
|
self.assertNotError(' ')
|
||||||
|
@ -41,6 +40,26 @@ class RootWarnerTestCase(PluginTestCase):
|
||||||
self.assertNotError(' ')
|
self.assertNotError(' ')
|
||||||
self.irc.feedMsg(ircmsgs.join('#foo', prefix='foo!~foo@host'))
|
self.irc.feedMsg(ircmsgs.join('#foo', prefix='foo!~foo@host'))
|
||||||
self.assertNoResponse(' ', 1)
|
self.assertNoResponse(' ', 1)
|
||||||
|
|
||||||
|
def testConfigWarn(self):
|
||||||
|
self.irc.feedMsg(ircmsgs.join('#foo', prefix='foo!root@host'))
|
||||||
|
self.assertNotError(' ')
|
||||||
|
self.assertNotError('config #foo warn off')
|
||||||
|
self.irc.feedMsg(ircmsgs.join('#foo', prefix='foo!root@host'))
|
||||||
|
self.assertNoResponse(' ', 1)
|
||||||
|
|
||||||
|
def testConfigKick(self):
|
||||||
|
self.irc.feedMsg(ircmsgs.join('#foo', prefix='foo!root@host'))
|
||||||
|
self.assertNotError(' ')
|
||||||
|
self.assertNotError('config #foo warn off')
|
||||||
|
self.assertNotError('config #foo kick on')
|
||||||
|
self.irc.feedMsg(ircmsgs.join('#foo', prefix='foo!root@host'))
|
||||||
|
m = self.getMsg(' ')
|
||||||
|
self.assertEqual(m.command, 'KICK')
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue