* Enable repeat protection for LP OOPS * Make CVE and LP OOPS snarfing channel configurable * bugSnarfer disabled all when False * add cveSnarfer to disable CVEs specifically when bugSnarfer is True * add oopsSnarfer to disable LP OOPS specifically when bugSnarfer is True
135 lines
6.0 KiB
Python
135 lines
6.0 KiB
Python
# -*- Encoding: utf-8 -*-
|
|
###
|
|
# Copyright (c) 2005-2007 Dennis Kaarsemaker
|
|
# Copyright (c) 2008-2010 Terence Simpson
|
|
#
|
|
# This program is free software; you can redistribute it and/or modify
|
|
# it under the terms of version 2 of the GNU General Public License as
|
|
# published by the Free Software Foundation.
|
|
#
|
|
# This program is distributed in the hope that it will be useful,
|
|
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
# GNU General Public License for more details.
|
|
#
|
|
###
|
|
|
|
import supybot.conf as conf
|
|
import supybot.registry as registry
|
|
import supybot.ircutils as ircutils
|
|
|
|
class Bugtrackers(registry.SpaceSeparatedListOfStrings):
|
|
List = ircutils.IrcSet
|
|
|
|
def configure(advanced):
|
|
from supybot.questions import expect, something, yn, output
|
|
|
|
def anything(prompt, default=None):
|
|
"""Because supybot is pure fail"""
|
|
from supybot.questions import expect
|
|
return expect(prompt, [], default=default)
|
|
|
|
Bugtracker = conf.registerPlugin('Bugtracker', True)
|
|
|
|
def getRepeatdelay():
|
|
output("How many seconds should the bot wait before repeating bug information?")
|
|
repeatdelay = something("Enter a number greater or equal to 0", default=Bugtracker.repeatdelay._default)
|
|
|
|
try:
|
|
repeatdelay = int(repeatdelay)
|
|
if repeatdelay < 0:
|
|
raise TypeError
|
|
except TypeError:
|
|
output("%r is an invalid value, it must be an integer greater or equal to 0" % repeatdelay)
|
|
return getRepeatdelay()
|
|
else:
|
|
return repeatdelay
|
|
|
|
bugSnarfer = yn("Enable detecting bugs numbers and URL in all channels?", default=Bugtracker.bugSnarfer._default)
|
|
cveSnarfer = yn("Enable detecting CVE numbers and URL in all channels?", default=Bugtracker.cveSnarfer._default)
|
|
oopsSnarfer = yn("Enable detecting Launchpad OOPS IDs in all channels?", default=Bugtracker.oopsSnarfer._default)
|
|
if advanced:
|
|
replyNoBugtracker = something("What should the bot reply with when a a user requests information from an unknown bug tracker?", default=Bugtracker.replyNoBugtracker._default)
|
|
snarfTarget = something("What should be the default bug tracker used when one isn't specified?", default=Bugtracker.snarfTarget._default)
|
|
replyWhenNotFound = yn("Respond when a bug is not found?", default=Bugtracker.replyWhenNotFound._default)
|
|
repeatdelay = getRepeatdelay()
|
|
else:
|
|
replyNoBugtracker = Bugtracker.replyNoBugtracker._default
|
|
snarfTarget = Bugtracker.snarfTarget._default
|
|
replyWhenNotFound = Bugtracker.replyWhenNotFound._default
|
|
repeatdelay = Bugtracker.repeatdelay._default
|
|
|
|
showassignee = yn("Show the assignee of a bug in the reply?", default=Bugtracker.showassignee._default)
|
|
extended = yn("Show tracker-specific extended infomation?", default=Bugtracker.extended._default)
|
|
|
|
Bugtracker.bugSnarfer.setValue(bugSnarfer)
|
|
Bugtracker.cveSnarfer.setValue(cveSnarfer)
|
|
Bugtracker.oopsSnarfer.setValue(oopsSnarfer)
|
|
Bugtracker.replyNoBugtracker.setValue(replyNoBugtracker)
|
|
Bugtracker.snarfTarget.setValue(snarfTarget)
|
|
Bugtracker.replyWhenNotFound.setValue(replyWhenNotFound)
|
|
Bugtracker.repeatdelay.setValue(repeatdelay)
|
|
Bugtracker.showassignee.setValue(showassignee)
|
|
Bugtracker.extended.setValue(extended)
|
|
|
|
Bugtracker = conf.registerPlugin('Bugtracker')
|
|
|
|
conf.registerChannelValue(Bugtracker, 'bugSnarfer',
|
|
registry.Boolean(False, """Determines whether the bug snarfer will be
|
|
enabled, such that any Bugtracker URLs and bug ### seen in the channel
|
|
will have their information reported into the channel."""))
|
|
|
|
conf.registerChannelValue(Bugtracker, 'cveSnarfer',
|
|
registry.Boolean(False, """Determines whether the CVE snarfer will be
|
|
enabled, such that any CVE URLs and CVE-????-???? seen in the channel
|
|
will have their information reported into the channel."""))
|
|
|
|
conf.registerChannelValue(Bugtracker, 'oopsSnarfer',
|
|
registry.Boolean(False, """Determines whether the OOPS snarfer will be
|
|
enabled, such that any OOPS ### seen in the channel
|
|
will have their information reported into the channel."""))
|
|
|
|
conf.registerChannelValue(Bugtracker, 'bugReporter',
|
|
registry.String('', """Report new bugs (experimental)"""))
|
|
|
|
conf.registerChannelValue(Bugtracker, 'replyNoBugtracker',
|
|
registry.String('I don\'t have a bugtracker %s.', """Determines the phrase
|
|
to use when notifying the user that there is no information about that
|
|
bugtracker site."""))
|
|
|
|
conf.registerChannelValue(Bugtracker, 'snarfTarget',
|
|
registry.String('lp', """Determines the bugtracker to query when the
|
|
snarf command is triggered"""))
|
|
|
|
conf.registerGlobalValue(Bugtracker, 'bugtrackers',
|
|
Bugtrackers([], """Determines what bugtrackers will be added to the bot when it starts."""))
|
|
|
|
conf.registerGlobalValue(Bugtracker, 'replyWhenNotFound',
|
|
registry.Boolean(False, """Whether to send a message when a bug could not be
|
|
found"""))
|
|
|
|
conf.registerChannelValue(Bugtracker, 'repeatdelay',
|
|
registry.Integer(60, """Number of seconds to wait between repeated bug calls"""))
|
|
|
|
conf.registerChannelValue(Bugtracker, 'showassignee',
|
|
registry.Boolean(False, """Whether to show the assignee in bug reports"""))
|
|
|
|
conf.registerChannelValue(Bugtracker, 'extended',
|
|
registry.Boolean(False, "Show optional extneded bug information, specific to trackers"))
|
|
|
|
conf.registerGlobalValue(Bugtracker, 'reportercache',
|
|
registry.String('', """Name of the basedir for the bugreporter cache""", private=True))
|
|
|
|
conf.registerGlobalValue(Bugtracker, 'imap_server',
|
|
registry.String('', """IMAP server for bugmail account""",private=True))
|
|
|
|
conf.registerGlobalValue(Bugtracker, 'imap_user',
|
|
registry.String('', """IMAP user for bugmail account""", private=True))
|
|
|
|
conf.registerGlobalValue(Bugtracker, 'imap_password',
|
|
registry.String('', """IMAP password for bugmail account""", private=True))
|
|
|
|
conf.registerGlobalValue(Bugtracker, 'imap_ssl',
|
|
registry.Boolean(False, """Use SSL for imap connections""", private=True))
|
|
|