Made to require admin capabilities to add/remove lookups.

This commit is contained in:
Jeremy Fincher 2003-12-03 21:19:49 +00:00
parent ed5fede565
commit c6b232b588

View File

@ -40,6 +40,7 @@ import plugins
import os import os
import re import re
import sys import sys
import sets
import types import types
import sqlite import sqlite
@ -90,6 +91,7 @@ class LookupDB(plugins.DBHandler):
class Lookup(callbacks.Privmsg): class Lookup(callbacks.Privmsg):
def __init__(self): def __init__(self):
callbacks.Privmsg.__init__(self) callbacks.Privmsg.__init__(self)
self.domains = sets.Set()
self.dbHandler = LookupDB(name=os.path.join(conf.dataDir, 'Lookup')) self.dbHandler = LookupDB(name=os.path.join(conf.dataDir, 'Lookup'))
def die(self): def die(self):
@ -101,6 +103,10 @@ class Lookup(callbacks.Privmsg):
Removes the lookup for <name>. Removes the lookup for <name>.
""" """
name = privmsgs.getArgs(args) name = privmsgs.getArgs(args)
name = callbacks.canonicalName(name)
if name not in self.domains:
irc.error(msg, 'That\'s not a valid lookup to remove.')
return
db = self.dbHandler.getDb() db = self.dbHandler.getDb()
cursor = db.cursor() cursor = db.cursor()
try: try:
@ -110,6 +116,7 @@ class Lookup(callbacks.Privmsg):
irc.reply(msg, conf.replySuccess) irc.reply(msg, conf.replySuccess)
except sqlite.DatabaseError: except sqlite.DatabaseError:
irc.error(msg, 'No such lookup exists.') irc.error(msg, 'No such lookup exists.')
remove = privmsgs.checkCapability(remove, 'admin')
_splitRe = re.compile(r'(?<!\\):') _splitRe = re.compile(r'(?<!\\):')
def add(self, irc, msg, args): def add(self, irc, msg, args):
@ -122,6 +129,7 @@ class Lookup(callbacks.Privmsg):
""" """
(name, filename) = privmsgs.getArgs(args, required=2) (name, filename) = privmsgs.getArgs(args, required=2)
name = utils.depluralize(name) name = utils.depluralize(name)
name = callbacks.canonicalName(name)
db = self.dbHandler.getDb() db = self.dbHandler.getDb()
cursor = db.cursor() cursor = db.cursor()
try: try:
@ -157,8 +165,8 @@ class Lookup(callbacks.Privmsg):
cursor.execute("CREATE INDEX %s_keys ON %s (key)" %(name,name)) cursor.execute("CREATE INDEX %s_keys ON %s (key)" %(name,name))
db.commit() db.commit()
self.addCommand(name) self.addCommand(name)
cb = irc.getCallback('Alias')
irc.reply(msg, '%s (lookup %s added)' % (conf.replySuccess, name)) irc.reply(msg, '%s (lookup %s added)' % (conf.replySuccess, name))
add = privmsgs.checkCapability(add, 'admin')
def addCommand(self, name): def addCommand(self, name):
def f(self, irc, msg, args): def f(self, irc, msg, args):
@ -177,6 +185,7 @@ class Lookup(callbacks.Privmsg):
f = types.FunctionType(f.func_code, f.func_globals, f = types.FunctionType(f.func_code, f.func_globals,
f.func_name, closure=f.func_closure) f.func_name, closure=f.func_closure)
f.__doc__ = docstring f.__doc__ = docstring
self.domains.add(name)
setattr(self.__class__, name, f) setattr(self.__class__, name, f)
def _lookup(self, irc, msg, args): def _lookup(self, irc, msg, args):