pybot-commits Mailing List for pybot (Page 3)
Brought to you by:
niemeyer
You can subscribe to this list here.
2001 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
(6) |
Dec
(7) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2002 |
Jan
|
Feb
|
Mar
(1) |
Apr
(7) |
May
(1) |
Jun
(14) |
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
2003 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(56) |
Jun
(4) |
Jul
|
Aug
(85) |
Sep
(2) |
Oct
|
Nov
|
Dec
|
From: Gustavo N. <nie...@us...> - 2003-08-25 17:42:53
|
Update of /cvsroot/pybot/pybot/pybot/modules In directory sc8-pr-cvs1:/tmp/cvs-serv24301 Modified Files: log.py notes.py plock.py remoteinfo.py servercontrol.py Log Message: Removed wrong "$" from regexp() calls. Index: log.py =================================================================== RCS file: /cvsroot/pybot/pybot/pybot/modules/log.py,v retrieving revision 1.16 retrieving revision 1.17 diff -C2 -d -r1.16 -r1.17 *** log.py 24 Aug 2003 19:30:53 -0000 1.16 --- log.py 25 Aug 2003 14:19:17 -0000 1.17 *************** *** 134,138 **** # [have you] seen <nick> ! self.re1 = regexp(r"(?:have you )?seen (?P<nick>[^\s!?]+)$", question=1) # [show|search] (log[s]|message[s]) [with] /<regexp>/ --- 134,138 ---- # [have you] seen <nick> ! self.re1 = regexp(r"(?:have you )?seen (?P<nick>[^\s!?]+)", question=1) # [show|search] (log[s]|message[s]) [with] /<regexp>/ Index: notes.py =================================================================== RCS file: /cvsroot/pybot/pybot/pybot/modules/notes.py,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** notes.py 24 Aug 2003 19:40:24 -0000 1.5 --- notes.py 25 Aug 2003 14:19:17 -0000 1.6 *************** *** 58,62 **** # note[s] ! mm.register_help(r"notes?$", HELP, "notes") mm.register_perm("notes", PERM_NOTES) --- 58,62 ---- # note[s] ! mm.register_help(r"notes?", HELP, "notes") mm.register_perm("notes", PERM_NOTES) Index: plock.py =================================================================== RCS file: /cvsroot/pybot/pybot/pybot/modules/plock.py,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** plock.py 24 Aug 2003 19:30:53 -0000 1.10 --- plock.py 25 Aug 2003 14:19:17 -0000 1.11 *************** *** 83,87 **** # plock <package> [,<package>] ? ! self.re5 = regexp(r"plock (?P<package>[\w_\.-]+(?:(?: *,? *and |[, ]+)[\w_\.-]+)*)$", question=1, needpunct=1) # [un]plock[ing] | <package|pkg> lock[ing] --- 83,87 ---- # plock <package> [,<package>] ? ! self.re5 = regexp(r"plock (?P<package>[\w_\.-]+(?:(?: *,? *and |[, ]+)[\w_\.-]+)*)", question=1, needpunct=1) # [un]plock[ing] | <package|pkg> lock[ing] Index: remoteinfo.py =================================================================== RCS file: /cvsroot/pybot/pybot/pybot/modules/remoteinfo.py,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** remoteinfo.py 24 Aug 2003 19:30:53 -0000 1.5 --- remoteinfo.py 25 Aug 2003 14:19:17 -0000 1.6 *************** *** 112,117 **** # remote[ ]info ! mm.register_help("remote *info?$", HELP, "remoteinfo") ! mm.register_help("remote *infos? *syntax$", HELP_SYNTAX, "remoteinfo syntax") --- 112,117 ---- # remote[ ]info ! mm.register_help("remote *info?", HELP, "remoteinfo") ! mm.register_help("remote *infos? *syntax", HELP_SYNTAX, "remoteinfo syntax") Index: servercontrol.py =================================================================== RCS file: /cvsroot/pybot/pybot/pybot/modules/servercontrol.py,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** servercontrol.py 24 Aug 2003 19:30:53 -0000 1.8 --- servercontrol.py 25 Aug 2003 14:19:17 -0000 1.9 *************** *** 120,124 **** # [dis|re]connect ! mm.register_help(r"(?:dis|re)?connect$", HELP_CONNECT, ["connect", "disconnect", "reconnect"]) --- 120,124 ---- # [dis|re]connect ! mm.register_help(r"(?:dis|re)?connect", HELP_CONNECT, ["connect", "disconnect", "reconnect"]) *************** *** 128,132 **** # show[ ](channels|servers) ! mm.register_help(r"show *(?:channels|servers)$", HELP_SHOW, ["show channels", "show servers"]) --- 128,132 ---- # show[ ](channels|servers) ! mm.register_help(r"show *(?:channels|servers)", HELP_SHOW, ["show channels", "show servers"]) |
From: Gustavo N. <nie...@us...> - 2003-08-25 14:11:34
|
Update of /cvsroot/pybot/pybot In directory sc8-pr-cvs1:/tmp/cvs-serv22819 Modified Files: ChangeLog Log Message: Introduced support for triggers, constraints, beforecreate, and aftercreate in SQLiteDB.table(). Index: ChangeLog =================================================================== RCS file: /cvsroot/pybot/pybot/ChangeLog,v retrieving revision 1.27 retrieving revision 1.28 diff -C2 -d -r1.27 -r1.28 *** ChangeLog 24 Aug 2003 23:23:16 -0000 1.27 --- ChangeLog 25 Aug 2003 14:10:33 -0000 1.28 *************** *** 10,14 **** on table creation. Changed SQLiteDB constructor to accept the path as a parameter, so that sqlitedb doesn't ! import pybot anymore. 2003-08-23 Gustavo Niemeyer <nie...@co...> --- 10,16 ---- on table creation. Changed SQLiteDB constructor to accept the path as a parameter, so that sqlitedb doesn't ! import pybot anymore. Introduced support for triggers, ! constraints, beforecreate, and aftercreate in ! SQLiteDB.table(). 2003-08-23 Gustavo Niemeyer <nie...@co...> |
From: Gustavo N. <nie...@us...> - 2003-08-25 14:11:32
|
Update of /cvsroot/pybot/pybot/pybot In directory sc8-pr-cvs1:/tmp/cvs-serv22819/pybot Modified Files: sqlitedb.py Log Message: Introduced support for triggers, constraints, beforecreate, and aftercreate in SQLiteDB.table(). Index: sqlitedb.py =================================================================== RCS file: /cvsroot/pybot/pybot/pybot/sqlitedb.py,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** sqlitedb.py 24 Aug 2003 23:23:16 -0000 1.4 --- sqlitedb.py 25 Aug 2003 14:10:33 -0000 1.5 *************** *** 40,44 **** self._conn.autocommit = enable ! def table(self, name, fields, oncreate=[]): """\ Besides creating tables when they don't exist, this function --- 40,45 ---- self._conn.autocommit = enable ! def table(self, name, fields, constraints="", ! triggers=[], beforecreate=[], aftercreate=[]): """\ Besides creating tables when they don't exist, this function *************** *** 47,59 **** """ cursor = self.cursor() ! # Check that the table exist. cursor.execute("select * from sqlite_master " "where type='table' and name=%s", name) row = cursor.fetchone() if not row: # No, it doesn't exist yet. ! cursor.execute("create table %s (%s)" % (name, fields)) ! for sql in oncreate: cursor.execute(sql) ! elif getxform(fields) != getfields(name, row.sql): # It exist, but is invalid. We'll have to fix it. self.autocommit(0) --- 48,70 ---- """ cursor = self.cursor() ! # First, drop old triggers, if existent ! cursor.execute("select name from sqlite_master where " ! "type='trigger' and tbl_name=%s", ! (name,)) ! for row in cursor.fetchall(): ! cursor.execute("drop trigger %s" % row.name) ! # Now check that the table exist. cursor.execute("select * from sqlite_master " "where type='table' and name=%s", name) row = cursor.fetchone() + if constraints: + constraints = ","+constraints if not row: # No, it doesn't exist yet. ! for sql in beforecreate: cursor.execute(sql) ! cursor.execute("create table %s (%s%s)" % ! (name, fields, constraints)) ! for sql in aftercreate: cursor.execute(sql) ! elif getxform(fields+constraints) != getfields(name, row.sql): # It exist, but is invalid. We'll have to fix it. self.autocommit(0) *************** *** 68,78 **** % (copyfields, copyfields, name)) cursor.execute("drop table %s" % name) ! cursor.execute("create table %s (%s)" % (name, fields)) cursor.execute("insert into %s select %s from temp_table" % (name, ",".join(newfieldnames))) cursor.execute("drop table temp_table") ! for sql in oncreate: cursor.execute(sql) self.commit() self.autocommit(1) def __getitem__(self, name): --- 79,96 ---- % (copyfields, copyfields, name)) cursor.execute("drop table %s" % name) ! for sql in beforecreate: cursor.execute(sql) ! createargs = fields ! if constraints: ! createargs += constraints ! cursor.execute("create table %s (%s)" % (name, createargs)) cursor.execute("insert into %s select %s from temp_table" % (name, ",".join(newfieldnames))) cursor.execute("drop table temp_table") ! for sql in aftercreate: cursor.execute(sql) self.commit() self.autocommit(1) + # Rebuild the triggers + for sql in triggers: + cursor.execute(sql) def __getitem__(self, name): |
From: Gustavo N. <nie...@us...> - 2003-08-24 23:23:27
|
Update of /cvsroot/pybot/pybot In directory sc8-pr-cvs1:/tmp/cvs-serv24986 Modified Files: ChangeLog Log Message: * pybot/{sqlite.db,__init__.py}: Improved SQLiteDB.table(). Now it handles spaces in the fields list gracefully without changing the table. Introduced new oncreate parameter to table() that accepts random sql commands on table creation. Changed SQLiteDB constructor to accept the path as a parameter, so that sqlitedb doesn't import pybot anymore. Index: ChangeLog =================================================================== RCS file: /cvsroot/pybot/pybot/ChangeLog,v retrieving revision 1.26 retrieving revision 1.27 diff -C2 -d -r1.26 -r1.27 *** ChangeLog 24 Aug 2003 19:30:53 -0000 1.26 --- ChangeLog 24 Aug 2003 23:23:16 -0000 1.27 *************** *** 4,7 **** --- 4,14 ---- and mm.register_help() convert them to \s+ and \s*. * pybot/misc.py: Fixed small issues on buildanswer(). + * pybot/{sqlite.db,__init__.py}: Improved SQLiteDB.table(). + Now it handles spaces in the fields list gracefully + without changing the table. Introduced new oncreate + parameter to table() that accepts random sql commands + on table creation. Changed SQLiteDB constructor to + accept the path as a parameter, so that sqlitedb doesn't + import pybot anymore. 2003-08-23 Gustavo Niemeyer <nie...@co...> |
From: Gustavo N. <nie...@us...> - 2003-08-24 23:23:27
|
Update of /cvsroot/pybot/pybot/pybot In directory sc8-pr-cvs1:/tmp/cvs-serv24986/pybot Modified Files: __init__.py sqlitedb.py Log Message: * pybot/{sqlite.db,__init__.py}: Improved SQLiteDB.table(). Now it handles spaces in the fields list gracefully without changing the table. Introduced new oncreate parameter to table() that accepts random sql commands on table creation. Changed SQLiteDB constructor to accept the path as a parameter, so that sqlitedb doesn't import pybot anymore. Index: __init__.py =================================================================== RCS file: /cvsroot/pybot/pybot/pybot/__init__.py,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** __init__.py 23 Aug 2003 22:04:09 -0000 1.7 --- __init__.py 24 Aug 2003 23:23:16 -0000 1.8 *************** *** 51,55 **** defaults["datadir"] = ("/var/lib/pybot") ! db = SQLiteDB() if config.has_option("global", "http_proxy"): --- 51,55 ---- defaults["datadir"] = ("/var/lib/pybot") ! db = SQLiteDB(config.get("sqlite", "path")) if config.has_option("global", "http_proxy"): Index: sqlitedb.py =================================================================== RCS file: /cvsroot/pybot/pybot/pybot/sqlitedb.py,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** sqlitedb.py 12 May 2003 20:42:20 -0000 1.3 --- sqlitedb.py 24 Aug 2003 23:23:16 -0000 1.4 *************** *** 17,29 **** # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - import pybot import sqlite import re - FIELDS = re.compile(r"\((.*)\)") - class SQLiteDB: ! def __init__(self): ! self._path = pybot.config.get("sqlite", "path") self._conn = sqlite.connect(self._path) self.error = sqlite.DatabaseError --- 17,26 ---- # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA import sqlite import re class SQLiteDB: ! def __init__(self, path): ! self._path = path self._conn = sqlite.connect(self._path) self.error = sqlite.DatabaseError *************** *** 32,36 **** def copy(self): ! return SQLiteDB() def cursor(self): --- 29,33 ---- def copy(self): ! return SQLiteDB(self._path) def cursor(self): *************** *** 43,47 **** self._conn.autocommit = enable ! def table(self, name, fields): """\ Besides creating tables when they don't exist, this function --- 40,44 ---- self._conn.autocommit = enable ! def table(self, name, fields, oncreate=[]): """\ Besides creating tables when they don't exist, this function *************** *** 57,70 **** # No, it doesn't exist yet. cursor.execute("create table %s (%s)" % (name, fields)) ! elif row.sql.find("(%s)" % fields) == -1: # It exist, but is invalid. We'll have to fix it. self.autocommit(0) cursor.execute("create temporary table temp_table (%s)" % fields) ! m = FIELDS.search(row.sql) ! if not m: ! raise ValueError, "invalid sql in table '%s'" % name ! oldfields = [x.strip() for x in m.group(1).split(",")] ! copyfields = ",".join([x for x in fields.split(",") ! if x in oldfields]) cursor.execute("insert into temp_table (%s) select %s from %s" % (copyfields, copyfields, name)) --- 54,68 ---- # No, it doesn't exist yet. cursor.execute("create table %s (%s)" % (name, fields)) ! for sql in oncreate: cursor.execute(sql) ! elif getxform(fields) != getfields(name, row.sql): # It exist, but is invalid. We'll have to fix it. self.autocommit(0) cursor.execute("create temporary table temp_table (%s)" % fields) ! oldfieldnames = [getname(x) for x in ! getfields(name, row.sql).split(",")] ! newfieldnames = [getname(x) for x in ! fields.split(",")] ! copyfields = ",".join([x for x in newfieldnames ! if x in oldfieldnames]) cursor.execute("insert into temp_table (%s) select %s from %s" % (copyfields, copyfields, name)) *************** *** 72,77 **** cursor.execute("create table %s (%s)" % (name, fields)) cursor.execute("insert into %s select %s from temp_table" ! % (name, fields)) cursor.execute("drop table temp_table") self.commit() self.autocommit(1) --- 70,76 ---- cursor.execute("create table %s (%s)" % (name, fields)) cursor.execute("insert into %s select %s from temp_table" ! % (name, ",".join(newfieldnames))) cursor.execute("drop table temp_table") + for sql in oncreate: cursor.execute(sql) self.commit() self.autocommit(1) *************** *** 92,95 **** --- 91,108 ---- cursor = self.cursor() cursor.execute("delete from dict where name=%s", name) + + def getxform(fields): + return ",".join([x.strip() for x in fields.split(",")]) + + GETFIELDS = re.compile(r"\((.*)\)") + def getfields(name, sql): + m = GETFIELDS.search(sql) + if not m: + raise ValueError, "invalid sql in table '%s': %s" % (name, sql) + return getxform(m.group(1)) + + GETNAME = re.compile(r"^\s*(\S+).*$") + def getname(field): + return GETNAME.sub(r"\1", field) # vim:ts=4:sw=4:et |
From: Gustavo N. <nie...@us...> - 2003-08-24 20:06:51
|
Update of /cvsroot/pybot/pybot/pybot/modules In directory sc8-pr-cvs1:/tmp/cvs-serv24587 Modified Files: google.py messages.py notes.py repeat.py testadora.py Log Message: Replaced some regex("...\s*...") by regexp("... *..."). Index: google.py =================================================================== RCS file: /cvsroot/pybot/pybot/pybot/modules/google.py,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** google.py 24 Aug 2003 19:30:53 -0000 1.5 --- google.py 24 Aug 2003 19:40:24 -0000 1.6 *************** *** 46,50 **** # [search] google [<n>]: <search> ! self.re1 = regexp(r"(?:search )?google(?: (?P<n>\d+))?:\s*(?P<search>.+)") mm.register_help("(?:search )?google(?: search)?", HELP, --- 46,50 ---- # [search] google [<n>]: <search> ! self.re1 = regexp(r"(?:search )?google(?: (?P<n>\d+))?: *(?P<search>.+)") mm.register_help("(?:search )?google(?: search)?", HELP, Index: messages.py =================================================================== RCS file: /cvsroot/pybot/pybot/pybot/modules/messages.py,v retrieving revision 1.12 retrieving revision 1.13 diff -C2 -d -r1.12 -r1.13 *** messages.py 24 Aug 2003 19:30:53 -0000 1.12 --- messages.py 24 Aug 2003 19:40:24 -0000 1.13 *************** *** 45,49 **** # [priv[ate]] message (to|for) <nick>: <message> ! self.re1 = regexp(r"(?P<private>priv(?:ate)? )?message (?:to|for) (?P<nick>\S+?)\s*: (?P<message>.*)") # [any] message[s]? --- 45,49 ---- # [priv[ate]] message (to|for) <nick>: <message> ! self.re1 = regexp(r"(?P<private>priv(?:ate)? )?message (?:to|for) (?P<nick>\S+?) *: (?P<message>.*)") # [any] message[s]? Index: notes.py =================================================================== RCS file: /cvsroot/pybot/pybot/pybot/modules/notes.py,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** notes.py 24 Aug 2003 19:30:53 -0000 1.4 --- notes.py 24 Aug 2003 19:40:24 -0000 1.5 *************** *** 49,56 **** # [add|new|create|include] note [about] <topic>: <note> ! self.re1 = regexp(r"(?:add |new |create |include )?note(?: about)? (?P<topic>[^:]+):\s*(?P<note>.+)") # [del|delete|remove] note[s] [about] <topic> [: <num> [, ...]] ! self.re2 = regexp(r"(?:del|delete|remove) notes?(?: about)? (?P<topic>[^:]+)(?:\s*:\s*(?P<nums>.+))?") # [show] note[s] [[about] <topic> [?]] --- 49,56 ---- # [add|new|create|include] note [about] <topic>: <note> ! self.re1 = regexp(r"(?:add |new |create |include )?note(?: about)? (?P<topic>[^:]+): *(?P<note>.+)") # [del|delete|remove] note[s] [about] <topic> [: <num> [, ...]] ! self.re2 = regexp(r"(?:del|delete|remove) notes?(?: about)? (?P<topic>[^:]+)(?: *: *(?P<nums>.+))?") # [show] note[s] [[about] <topic> [?]] Index: repeat.py =================================================================== RCS file: /cvsroot/pybot/pybot/pybot/modules/repeat.py,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** repeat.py 24 Aug 2003 19:30:53 -0000 1.6 --- repeat.py 24 Aug 2003 19:40:24 -0000 1.7 *************** *** 54,58 **** # [don[']t|do not] repeat [each <n>[ ](s[econds]|m[inutes]|h[ours])] (to|at|on) [channel|user] <target> [[on|at] server <server>]: [/me|/notice] ... ! self.re1 = regexp(r"(?:(?P<dont>don'?t|do not) )?repeat(?: each (?P<interval>[0-9]+)\s*(?P<intervalunit>se?c?o?n?d?s?|mi?n?u?t?e?s?|ho?u?r?s?))?(?: (?:to|at|on)(?: (?:channel|user))? (?P<target>\S+))?(?: (?:on|at)? server (?P<server>\S+))?\s*: (?P<action>/me\s)?(?P<notice>/notice\s)?(?P<phrase>.*)") # repeat --- 54,58 ---- # [don[']t|do not] repeat [each <n>[ ](s[econds]|m[inutes]|h[ours])] (to|at|on) [channel|user] <target> [[on|at] server <server>]: [/me|/notice] ... ! self.re1 = regexp(r"(?:(?P<dont>don'?t|do not) )?repeat(?: each (?P<interval>[0-9]+) *(?P<intervalunit>se?c?o?n?d?s?|mi?n?u?t?e?s?|ho?u?r?s?))?(?: (?:to|at|on)(?: (?:channel|user))? (?P<target>\S+))?(?: (?:on|at)? server (?P<server>\S+))? *: (?P<action>/me\s)?(?P<notice>/notice\s)?(?P<phrase>.*)") # repeat Index: testadora.py =================================================================== RCS file: /cvsroot/pybot/pybot/pybot/modules/testadora.py,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** testadora.py 24 Aug 2003 19:30:53 -0000 1.4 --- testadora.py 24 Aug 2003 19:40:24 -0000 1.5 *************** *** 44,48 **** # [show] (compiletime|compile time) [for] <package> ! self.re1 = regexp(r"(?:show )?compile\s*time (?:for )?(?P<package>\S+)") # testadora --- 44,48 ---- # [show] (compiletime|compile time) [for] <package> ! self.re1 = regexp(r"(?:show )?compile *time (?:for )?(?P<package>\S+)") # testadora *************** *** 50,54 **** # (compiletime|compile time) ! mm.register_help("compile\s*time", HELP_COMPILETIME) mm.register_perm("compiletime", PERM_COMPILETIME) --- 50,54 ---- # (compiletime|compile time) ! mm.register_help("compile *time", HELP_COMPILETIME) mm.register_perm("compiletime", PERM_COMPILETIME) |
Update of /cvsroot/pybot/pybot/pybot/modules In directory sc8-pr-cvs1:/tmp/cvs-serv22909/pybot/modules Modified Files: eval.py example.py forward.py freshmeat.py google.py help.py ignore.py infopack.py log.py messages.py modulecontrol.py notes.py options.py permission.py plock.py pong.py randnum.py remoteinfo.py repeat.py servercontrol.py social.py testadora.py threadedexample.py timer.py uptime.py userdata.py xmlrpc.py Log Message: * pybot/misc.py,modules/help.py,modules/*: Now regular expressions are using a single space, and misc.regexp() and mm.register_help() convert them to \s+ and \s*. * pybot/misc.py: Fixed small issues on buildanswer(). * pybot/locals.py,pybot/misc.py,modules/*: Introduced pybot.locals. All basic instances of the pybot API are now defined on this file, and all modules are running "from pybot.locals import *". * pybot/misc.py,modules/*: Introduced misc.regexp(). This function is a wrapper on top of re.compile() which will deal better with the pybot triggers expressions. Index: eval.py =================================================================== RCS file: /cvsroot/pybot/pybot/pybot/modules/eval.py,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** eval.py 12 May 2003 20:42:20 -0000 1.4 --- eval.py 24 Aug 2003 19:30:53 -0000 1.5 *************** *** 17,23 **** # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! from pybot import hooks, main, mm import math - import re HELP = """ --- 17,22 ---- # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! from pybot.locals import * import math HELP = """ *************** *** 68,73 **** self.dict["coerce"] = coerce ! # Match 'eval <expr>[!|.]' ! self.re1 = re.compile(r"eval\s+(?P<expr>.*?)[!.]*$") # eval[uate|uation] --- 67,72 ---- self.dict["coerce"] = coerce ! # Match 'eval <expr>' ! self.re1 = regexp(r"eval (?P<expr>.*?)") # eval[uate|uation] Index: example.py =================================================================== RCS file: /cvsroot/pybot/pybot/pybot/modules/example.py,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** example.py 12 May 2003 20:42:21 -0000 1.1 --- example.py 24 Aug 2003 19:30:53 -0000 1.2 *************** *** 17,21 **** # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! from pybot import mm, hooks, options, db import time import re --- 17,21 ---- # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! from pybot.locals import * import time import re *************** *** 37,41 **** # hello (world|irc) ! self.re1 = re.compile(r"hello\s+(?P<what>world|irc)\s*[.!]*$", re.I) mm.register_help(r"example", HELP, "example") --- 37,41 ---- # hello (world|irc) ! self.re1 = regexp(r"hello (?P<what>world|irc)") mm.register_help(r"example", HELP, "example") Index: forward.py =================================================================== RCS file: /cvsroot/pybot/pybot/pybot/modules/forward.py,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** forward.py 13 May 2003 14:13:40 -0000 1.5 --- forward.py 24 Aug 2003 19:30:53 -0000 1.6 *************** *** 17,23 **** # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! from pybot import mm, hooks, servers, db from string import join - import re HELP = """ --- 17,22 ---- # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! from pybot.locals import * from string import join HELP = """ *************** *** 54,64 **** # forward messages [for you] [(from|on|at) [user|channel] <fromtarget>] [(from|on|at) server <fromserver>]] to [user|channel] <totarget> [(on|at) server <toserver>] [with (server|channel [and server]|<withstring>)] [!|.] ! self.re1 = re.compile(r"(?P<dont>do\s+not\s+|don't\s+)?forward\s+messages\s+(?P<foryou>for\s+you\s+)?(?:(?:from\s+|on\s+|at\s+)(?:channel\s+|user\s+)?(?P<fromtarget>\S+)\s+)?(?:(?:from\s+|on\s+|at\s+)(?:server\s+)?(?P<fromserver>\S+)\s+)?to\s+(?:user\s+|channel\s+)?(?P<totarget>\S+)(?:\s+(?:on\s+|at\s+)server\s+(?P<toserver>\S+))?(?:\s+with\s+(?P<withchannel>channel)?(?:\s+and\s+)?(?P<withserver>server)?(?P<withstring>\S+)?)?\s*$", re.I) # show forwards ! self.re2 = re.compile(r"show\s+forwards\s*$", re.I) # [message] forward[ing] ! mm.register_help("(?:message\s+)?forward(?:ing)?", HELP, "forward") mm.register_perm("forward", PERM_FORWARD) --- 53,63 ---- # forward messages [for you] [(from|on|at) [user|channel] <fromtarget>] [(from|on|at) server <fromserver>]] to [user|channel] <totarget> [(on|at) server <toserver>] [with (server|channel [and server]|<withstring>)] [!|.] ! self.re1 = regexp(r"(?P<dont>do not |don't )?forward messages (?P<foryou>for you )?(?:(?:from |on |at )(?:channel |user )?(?P<fromtarget>\S+) )?(?:(?:from |on |at )(?:server )?(?P<fromserver>\S+) )?to (?:user |channel )?(?P<totarget>\S+)(?: (?:on |at )server (?P<toserver>\S+))?(?: with (?P<withchannel>channel)?(?: and)?(?P<withserver> server)?(?P<withstring>\S+)?)?") # show forwards ! self.re2 = regexp(r"show forwards") # [message] forward[ing] ! mm.register_help("(?:message )?forward(?:ing)?", HELP, "forward") mm.register_perm("forward", PERM_FORWARD) Index: freshmeat.py =================================================================== RCS file: /cvsroot/pybot/pybot/pybot/modules/freshmeat.py,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** freshmeat.py 23 Aug 2003 22:04:09 -0000 1.10 --- freshmeat.py 24 Aug 2003 19:30:53 -0000 1.11 *************** *** 17,25 **** # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! from pybot import mm, hooks, servers, config, db import urllib import thread import string - import re HELP = """ --- 17,24 ---- # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! from pybot.locals import * import urllib import thread import string HELP = """ *************** *** 50,57 **** # [don[']t|do not] show freshmeat news [(to|on|at|for) [channel|user] <target> [[on|at] server <server>]] ! self.re1 = re.compile(r"(?P<dont>don'?t\s+|do\s+not\s+)?show\s+freshmeat\s+news(?:\s+(?:to|on|at|for)(?:\s+channel|\s+user)?\s+(?P<target>\S+)(?:(?:\s+on|\s+at)?\s+server\s+(?P<server>\S+?))?)?\s*[!.]*$", re.I) # freshmeat [news] ! mm.register_help("freshmeat(?:\s+news)?", HELP, "freshmeat") mm.register_perm("freshmeat", PERM_FRESHMEAT) --- 49,56 ---- # [don[']t|do not] show freshmeat news [(to|on|at|for) [channel|user] <target> [[on|at] server <server>]] ! self.re1 = regexp(r"(?P<dont>don'?t |do not )?show freshmeat news(?: (?:to|on|at|for)(?: channel| user)? (?P<target>\S+)(?:(?: on| at)? server (?P<server>\S+?))?)?") # freshmeat [news] ! mm.register_help("freshmeat(?: news)?", HELP, "freshmeat") mm.register_perm("freshmeat", PERM_FRESHMEAT) Index: google.py =================================================================== RCS file: /cvsroot/pybot/pybot/pybot/modules/google.py,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** google.py 29 May 2003 17:44:43 -0000 1.4 --- google.py 24 Aug 2003 19:30:53 -0000 1.5 *************** *** 17,21 **** # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! from pybot import mm, hooks, config from pybot.util import SOAPpy import thread --- 17,21 ---- # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! from pybot.locals import * from pybot.util import SOAPpy import thread *************** *** 46,52 **** # [search] google [<n>]: <search> ! self.re1 = re.compile(r"(?:search\s+)?google(?:\s+(?P<n>\d+))?:\s*(?P<search>.+)$", re.I) ! mm.register_help("(?:search\s+)?google(?:\s+search)?", HELP, "google") --- 46,52 ---- # [search] google [<n>]: <search> ! self.re1 = regexp(r"(?:search )?google(?: (?P<n>\d+))?:\s*(?P<search>.+)") ! mm.register_help("(?:search )?google(?: search)?", HELP, "google") Index: help.py =================================================================== RCS file: /cvsroot/pybot/pybot/pybot/modules/help.py,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** help.py 12 May 2003 20:42:21 -0000 1.5 --- help.py 24 Aug 2003 19:30:53 -0000 1.6 *************** *** 17,21 **** # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! from pybot import hooks, mm, options from types import ListType, TupleType import re --- 17,21 ---- # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! from pybot.locals import * from types import ListType, TupleType import re *************** *** 40,44 **** # [show] help [about] <keyword> ! self.re1 = re.compile(r"(?:show\s+)?help(?:\s+about)?(?:\s+(?P<something>.+?))?\s*[.!]*$", re.I) self.mm_register_perm("help", PERM_HELP) --- 40,44 ---- # [show] help [about] <keyword> ! self.re1 = regexp(r"(?:show )?help(?: about)?(?: (?P<something>.+?))?") self.mm_register_perm("help", PERM_HELP) *************** *** 101,104 **** --- 101,107 ---- elif type(triggers) is not ListType: triggers = [triggers] + pattern = pattern.replace(" *", r"\s*") + pattern = pattern.replace(" ?", r"\s*") + pattern = pattern.replace(" ", r"\s+") self.data.append((re.compile(pattern, re.I), text, triggers)) Index: ignore.py =================================================================== RCS file: /cvsroot/pybot/pybot/pybot/modules/ignore.py,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** ignore.py 12 May 2003 20:42:21 -0000 1.4 --- ignore.py 24 Aug 2003 19:30:53 -0000 1.5 *************** *** 17,22 **** # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! from pybot import mm, hooks, db ! import re HELP = """ --- 17,21 ---- # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! from pybot.locals import * HELP = """ *************** *** 47,51 **** # [do not|don't] ignore [user <user>] [on|at] [this channel|channel <channel>] [on|at] [this server|server <server>] ! self.re1 = re.compile(r"(?P<dont>do\s+not\s+|don't\s+)?ignore\s+(?:user\s+(?P<user>\S+?))?(?:(?:on\s+|at\s+)?(?:(?P<thischannel>this\s+channel)|channel\s+(?P<channel>\S+)))?(?:(?:on\s+|at\s+)?(?:(?P<thisserver>this\s+server)|server\s+(?P<server>\S+?)))?\s*$", re.I) # [un]ignore --- 46,50 ---- # [do not|don't] ignore [user <user>] [on|at] [this channel|channel <channel>] [on|at] [this server|server <server>] ! self.re1 = regexp(r"(?P<dont>do not |don't )?ignore (?:user (?P<user>\S+?))?(?:(?:on |at )?(?:(?P<thischannel>this channel)|channel (?P<channel>\S+)))?(?:(?:on |at )?(?:(?P<thisserver>this server)|server (?P<server>\S+?)))?") # [un]ignore Index: infopack.py =================================================================== RCS file: /cvsroot/pybot/pybot/pybot/modules/infopack.py,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** infopack.py 2 Jun 2003 13:36:09 -0000 1.7 --- infopack.py 24 Aug 2003 19:30:53 -0000 1.8 *************** *** 17,21 **** # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! from pybot import config, hooks, mm, db import random import re --- 17,21 ---- # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! from pybot.locals import * import random import re *************** *** 195,208 **** # [load|reload|unload] infopack <name> [in memory] [.|!] ! self.re1 = re.compile(r"(?P<action>re|un)?load\s+infopack\s+(?P<name>\w+)(?P<inmemory>\s+in\s+memory)?\s*[.!]*$", re.I) # show infopacks ! self.re2 = re.compile(r"show\s+infopacks\s*[!.]*$", re.I) # infopack[s] ! mm.register_help("infopacks?$", HELP, "infopack") # infopack <name> ! mm.register_help("infopack\s+(?P<name>\S+)\s*$", self.help) mm.register_perm("infopackadmin", PERM_INFOPACKADMIN) --- 195,208 ---- # [load|reload|unload] infopack <name> [in memory] [.|!] ! self.re1 = regexp(r"(?P<action>re|un)?load infopack (?P<name>\w+)(?P<inmemory> in memory)?") # show infopacks ! self.re2 = regexp(r"show infopacks") # infopack[s] ! mm.register_help("infopacks?", HELP, "infopack") # infopack <name> ! mm.register_help("infopack (?P<name>\S+)", self.help) mm.register_perm("infopackadmin", PERM_INFOPACKADMIN) Index: log.py =================================================================== RCS file: /cvsroot/pybot/pybot/pybot/modules/log.py,v retrieving revision 1.15 retrieving revision 1.16 diff -C2 -d -r1.15 -r1.16 *** log.py 19 Aug 2003 22:42:37 -0000 1.15 --- log.py 24 Aug 2003 19:30:53 -0000 1.16 *************** *** 17,21 **** # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! from pybot import config, hooks, mm, servers, db from pybot.user import User import time --- 17,21 ---- # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! from pybot.locals import * from pybot.user import User import time *************** *** 133,141 **** hooks.register("OutCTCP", self.log_outctcp, 150) ! # [have you] seen <nick> [!?] ! self.re1 = re.compile(r"(?:have\s+you\s+)?seen\s+(?P<nick>[^\s!?]+)\s*[!?]*$", re.I) ! # [show|search] (log[s]|message[s]) [with] /<regexp>/[.!] ! self.re2 = re.compile("(?:show\s+|search\s+)?(?:log|message)s?\s+(?:with\s+|search\s+)?/(?P<regexp>.*)/\s*[.!?]*$", re.I) # seen --- 133,141 ---- hooks.register("OutCTCP", self.log_outctcp, 150) ! # [have you] seen <nick> ! self.re1 = regexp(r"(?:have you )?seen (?P<nick>[^\s!?]+)$", question=1) ! # [show|search] (log[s]|message[s]) [with] /<regexp>/ ! self.re2 = regexp(r"(?:show |search )?(?:log|message)s? (?:with |search )?/(?P<regexp>.*)/") # seen *************** *** 143,147 **** # log|(search|show) (log[s]|message[s]) ! mm.register_help("log|(?:search|show)\s+(?:log|message)s?", HELP_SEARCH, "log") --- 143,147 ---- # log|(search|show) (log[s]|message[s]) ! mm.register_help("log|(?:search|show) (?:log|message)s?", HELP_SEARCH, "log") Index: messages.py =================================================================== RCS file: /cvsroot/pybot/pybot/pybot/modules/messages.py,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -d -r1.11 -r1.12 *** messages.py 22 Aug 2003 14:35:09 -0000 1.11 --- messages.py 24 Aug 2003 19:30:53 -0000 1.12 *************** *** 17,21 **** # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! from pybot import hooks, mm, db import string import time --- 17,21 ---- # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! from pybot.locals import * import string import time *************** *** 45,55 **** # [priv[ate]] message (to|for) <nick>: <message> ! self.re1 = re.compile(r"(?P<private>priv(?:ate)?\s+)?message\s+(?:to|for)\s+(?P<nick>\S+?)\s*:\s+(?P<message>.*)$", re.I) # [any] message[s]? ! self.re2 = re.compile(r"(?:any\s+)?messages?\s*\?$", re.I) # [leav(e|ing)] message[s] ! mm.register_help("(?:leav(?:e|ing)\s+)?messages?", HELP, "messages") mm.register_perm("messages", PERM_MESSAGES) --- 45,55 ---- # [priv[ate]] message (to|for) <nick>: <message> ! self.re1 = regexp(r"(?P<private>priv(?:ate)? )?message (?:to|for) (?P<nick>\S+?)\s*: (?P<message>.*)") # [any] message[s]? ! self.re2 = regexp(r"(?:any )?messages?", question=1, needpunct=1) # [leav(e|ing)] message[s] ! mm.register_help("(?:leav(?:e|ing) )?messages?", HELP, "messages") mm.register_perm("messages", PERM_MESSAGES) Index: modulecontrol.py =================================================================== RCS file: /cvsroot/pybot/pybot/pybot/modules/modulecontrol.py,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** modulecontrol.py 12 May 2003 20:42:21 -0000 1.8 --- modulecontrol.py 24 Aug 2003 19:30:53 -0000 1.9 *************** *** 17,22 **** # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! from pybot import mm, hooks, modls, db ! import re HELP = """ --- 17,21 ---- # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! from pybot.locals import * HELP = """ *************** *** 34,44 **** # [re|un]load [the] [module] <module> ! self.re1 = re.compile(r"(?P<command>(?:re|un)?load)(?:\s+the)?(?:\s+module)?\s+(?P<module>[\w_-]+)\s*[.!]*$", re.I) # show modules ! self.re2 = re.compile(r"show\s+modules\s*[.!]*$", re.I) # [[un|re]load] module[s] ! mm.register_help(r"(?:(?:un|re)?load\s+)?modules?", HELP, "modules") def get_modules(self): --- 33,43 ---- # [re|un]load [the] [module] <module> ! self.re1 = regexp(r"(?P<command>(?:re|un)?load)(?: the)?(?: module)? (?P<module>[\w_-]+)") # show modules ! self.re2 = regexp(r"show modules") # [[un|re]load] module[s] ! mm.register_help(r"(?:(?:un|re)?load )?modules?", HELP, "modules") def get_modules(self): Index: notes.py =================================================================== RCS file: /cvsroot/pybot/pybot/pybot/modules/notes.py,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** notes.py 12 May 2003 20:42:21 -0000 1.3 --- notes.py 24 Aug 2003 19:30:53 -0000 1.4 *************** *** 17,21 **** # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! from pybot import mm, hooks, db import string import time --- 17,21 ---- # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! from pybot.locals import * import string import time *************** *** 49,59 **** # [add|new|create|include] note [about] <topic>: <note> ! self.re1 = re.compile(r"(?:add\s+|new\s+|create\s+|include\s+)?note(?:\s+about)?\s+(?P<topic>[^:]+):\s*(?P<note>.+)$", re.I) # [del|delete|remove] note[s] [about] <topic> [: <num> [, ...]] ! self.re2 = re.compile(r"(?:del|delete|remove)\s+notes?(?:\s+about)?\s+(?P<topic>[^:]+)(?:\s*:\s*(?P<nums>.+))?\s*$", re.I) # [show] note[s] [[about] <topic> [?]] ! self.re3 = re.compile(r"(?:show\s+)?notes?(?:(?:\s+about)?\s+(?P<topic>[^?]+))?\s*\?*$", re.I) # note[s] --- 49,59 ---- # [add|new|create|include] note [about] <topic>: <note> ! self.re1 = regexp(r"(?:add |new |create |include )?note(?: about)? (?P<topic>[^:]+):\s*(?P<note>.+)") # [del|delete|remove] note[s] [about] <topic> [: <num> [, ...]] ! self.re2 = regexp(r"(?:del|delete|remove) notes?(?: about)? (?P<topic>[^:]+)(?:\s*:\s*(?P<nums>.+))?") # [show] note[s] [[about] <topic> [?]] ! self.re3 = regexp(r"(?:show )?notes?(?:(?: about)? (?P<topic>[^?]+))?") # note[s] Index: options.py =================================================================== RCS file: /cvsroot/pybot/pybot/pybot/modules/options.py,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** options.py 12 May 2003 20:42:21 -0000 1.5 --- options.py 24 Aug 2003 19:30:53 -0000 1.6 *************** *** 17,26 **** # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! from pybot import mm, hooks, options, config from types import ListType, DictType import os import string import cPickle - import re HELP = """ --- 17,25 ---- # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! from pybot.locals import * from types import ListType, DictType import os import string import cPickle HELP = """ *************** *** 42,58 **** # (read|write) options ! self.re1 = re.compile(r"(?P<cmd>read|write)\s+options\s*[!.]*$", re.I) # set option <name> to <value> ! self.re2 = re.compile(r"set\s+option\s+(?P<name>\S+)\s+to\s+(?P<value>.+)$", re.I) # (show|del[ete]|remove) option <name> ! self.re3 = re.compile(r"(?P<cmd>show|del|delete|remove)\s+option\s+(?P<name>\S+)$", re.I) # show options ! self.re4 = re.compile(r"show\s+options$", re.I) # option[s] ! mm.register_help(r"options?$", HELP, "options") def unload(self): --- 41,57 ---- # (read|write) options ! self.re1 = regexp(r"(?P<cmd>read|write) options") # set option <name> to <value> ! self.re2 = regexp(r"set option (?P<name>\S+) to (?P<value>.+)") # (show|del[ete]|remove) option <name> ! self.re3 = regexp(r"(?P<cmd>show|del|delete|remove) option (?P<name>\S+)") # show options ! self.re4 = regexp(r"show options") # option[s] ! mm.register_help(r"options?", HELP, "options") def unload(self): Index: permission.py =================================================================== RCS file: /cvsroot/pybot/pybot/pybot/modules/permission.py,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** permission.py 12 May 2003 21:56:33 -0000 1.10 --- permission.py 24 Aug 2003 19:30:53 -0000 1.11 *************** *** 17,21 **** # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! from pybot import mm, hooks, options, config, db from pybot.user import User from types import StringType --- 17,21 ---- # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! from pybot.locals import * from pybot.user import User from types import StringType *************** *** 64,74 **** # (give|remove|del|delete|take) perm[ission] <perm> [to|from] [everyone | [user <user>] [[and] nick <nick>] [on|at] [this channel|channel <channel>] [on|at|to] [this server|server <server>]] ! self.re1 = re.compile("(?P<cmd>give|remove|del|delete|take)\s+(?:perm(?:ission)?\s+(?P<perm1>\S+)|(?P<perm2>\S+)\s+perm(?:ission)?)(?:\s+to|\s+from)?(?:(?P<everyone>\s+everyone)|(?:\s+user\s+(?P<user>\S+))?(?:(?:\s+and)?\s+nick\s+(?P<nick>\S+))?(?:\s+on|\s+at)?(?:\s+(?P<thischannel>this\s+channel)|\s+channel\s+(?P<channel>\S+))?(?:\s+on|\s+at|\s+to)?(?:\s+(?P<thisserver>this\s+server)|\s+server\s+(?P<server>\S+))?)?\s*[!.]*$", re.I) # (show|list) perm[ission][s] [<perm>] ! self.re2 = re.compile("(?:show|list)\s+perm(?:ission)?s?(?:\s+(?P<perm>\w+))?\s*[!.]*$", re.I) # perm[ission][s] [system] ! mm.register_help("perm(?:ission)?s?(?:\s+system)?", HELP, "permissions") --- 64,74 ---- # (give|remove|del|delete|take) perm[ission] <perm> [to|from] [everyone | [user <user>] [[and] nick <nick>] [on|at] [this channel|channel <channel>] [on|at|to] [this server|server <server>]] ! self.re1 = regexp("(?P<cmd>give|remove|del|delete|take) (?:perm(?:ission)? (?P<perm1>\S+)|(?P<perm2>\S+) perm(?:ission)?)(?: to| from)?(?:(?P<everyone> everyone)|(?: user (?P<user>\S+))?(?:(?: and)? nick (?P<nick>\S+))?(?: on| at)?(?: (?P<thischannel>this channel)| channel (?P<channel>\S+))?(?: on| at| to)?(?: (?P<thisserver>this server)| server (?P<server>\S+))?)?") # (show|list) perm[ission][s] [<perm>] ! self.re2 = regexp("(?:show|list) perm(?:ission)?s?(?: (?P<perm>\w+))?") # perm[ission][s] [system] ! mm.register_help("perm(?:ission)?s?(?: system)?", HELP, "permissions") Index: plock.py =================================================================== RCS file: /cvsroot/pybot/pybot/pybot/modules/plock.py,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** plock.py 12 May 2003 20:42:21 -0000 1.9 --- plock.py 24 Aug 2003 19:30:53 -0000 1.10 *************** *** 17,21 **** # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! from pybot import mm, hooks, config, db import time import sys --- 17,21 ---- # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! from pybot.locals import * import time import sys *************** *** 70,90 **** hooks.register("Message", self.message) ! # [force] plock <package> [,<package>] [!|.] ! self.re1 = re.compile(r"(?P<force>force\s+)?plock\s+(?P<package>[\w_\.-]+(?:(?:\s*,?\s*and\s+|[, ]+)[\w_\.-]+)*)\s*[!.]*$") # [force] (unplock|punlock) <package> [,<package>] [!|.] ! self.re2 = re.compile(r"(?P<force>force\s+)?(?:unplock|punlock)\s+(?P<package>[\w_\.-]+(?:(?:\s*,?\s*and\s+|[, ]+)[\w_\.-]+)*)\s*[!.]*$") # (my plocks|plocks of <user>) [?] ! self.re3 = re.compile(r"(?:(?P<my>my)\s+plocks|plocks\s+of\s+(?P<user>[\w\.@_-]+))\s*(?:!*\?[?!]*)?$") # ([who] [has] plocked|plocker [of]) <package> [,<package>] [?] ! self.re4 = re.compile(r"(?:(?:who\s+)?(?:has\s+)plocked|plocker\s+(?:of\s+)?)(?P<package>[\w_\.-]+(?:(?:\s*,?\s*and\s+|[, ]+)[\w_\.-]+)*)\s*(?:!*\?[?!]*)?$") # plock <package> [,<package>] ? ! self.re5 = re.compile(r"plock\s+(?P<package>[\w_\.-]+(?:(?:\s*,?\s*and\s+|[, ]+)[\w_\.-]+)*)\s*(?:!*\?[?!]*)$") # [un]plock[ing] | <package|pkg> lock[ing] ! mm.register_help("(?:un)?plock(?:ing)?|(?:package|pkg)\s+lock(?:ing)?", HELP, "plock") --- 70,90 ---- hooks.register("Message", self.message) ! # [force] plock <package> [,<package>] ! self.re1 = regexp(r"(?P<force>force )?plock (?P<package>[\w_\.-]+(?:(?: *,? *and |[, ]+)[\w_\.-]+)*)") # [force] (unplock|punlock) <package> [,<package>] [!|.] ! self.re2 = regexp(r"(?P<force>force )?(?:unplock|punlock) (?P<package>[\w_\.-]+(?:(?: *,? *and |[, ]+)[\w_\.-]+)*)") # (my plocks|plocks of <user>) [?] ! self.re3 = regexp(r"(?:(?P<my>my) plocks|plocks of (?P<user>[\w\.@_-]+))", question=1) # ([who] [has] plocked|plocker [of]) <package> [,<package>] [?] ! self.re4 = regexp(r"(?:(?:who )?(?:has )plocked|plocker (?:of )?)(?P<package>[\w_\.-]+(?:(?: *,? *and |[, ]+)[\w_\.-]+)*)", question=1) # plock <package> [,<package>] ? ! self.re5 = regexp(r"plock (?P<package>[\w_\.-]+(?:(?: *,? *and |[, ]+)[\w_\.-]+)*)$", question=1, needpunct=1) # [un]plock[ing] | <package|pkg> lock[ing] ! mm.register_help("(?:un)?plock(?:ing)?|(?:package|pkg) lock(?:ing)?", HELP, "plock") Index: pong.py =================================================================== RCS file: /cvsroot/pybot/pybot/pybot/modules/pong.py,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** pong.py 22 Aug 2003 13:49:10 -0000 1.6 --- pong.py 24 Aug 2003 19:30:53 -0000 1.7 *************** *** 17,21 **** # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! from pybot import hooks, mm, servers class Pong: --- 17,21 ---- # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! from pybot.locals import * class Pong: *************** *** 30,39 **** def pong(self, cmd): if cmd.cmd == "PING": ! cmd.server.sendcmd("", "PONG", cmd.line, priority=10) def ping(self): for server in servers.getall(): if server.servername != "console": ! server.sendcmd("", "PING", server.user.nick) def __loadmodule__(): --- 30,39 ---- def pong(self, cmd): if cmd.cmd == "PING": ! cmd.server.sendcmd(None, "PONG", cmd.line, priority=10) def ping(self): for server in servers.getall(): if server.servername != "console": ! server.sendcmd(None, "PING", server.user.nick) def __loadmodule__(): Index: randnum.py =================================================================== RCS file: /cvsroot/pybot/pybot/pybot/modules/randnum.py,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** randnum.py 12 May 2003 20:42:21 -0000 1.3 --- randnum.py 24 Aug 2003 19:30:53 -0000 1.4 *************** *** 17,23 **** # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! from pybot import hooks, mm from random import randint - import re HELP = """ --- 17,22 ---- # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! from pybot.locals import * from random import randint HELP = """ *************** *** 37,44 **** # [give|tell|show] [me] [a|one|<n>] [random] number[s] between <num1> and <num2> ! self.re1 = re.compile(r"(?:give|tell|show)\s+(?:me\s+)?(?P<n>a|one|\d+)\s+(?:random\s+)?numbers?\s+between\s+(?P<num1>\d+)\s+and\s+(?P<num2>\d+)\s*[.!]*$", re.I) # randnum[s]|random number[s] ! mm.register_help("randnums?|random\s+numbers?", HELP, "randnum") mm.register_perm("randnum", PERM_RANDNUM) --- 36,43 ---- # [give|tell|show] [me] [a|one|<n>] [random] number[s] between <num1> and <num2> ! self.re1 = regexp(r"(?:give|tell|show) (?:me )?(?P<n>a|one|\d+) (?:random )?numbers? between (?P<num1>\d+) and (?P<num2>\d+)") # randnum[s]|random number[s] ! mm.register_help("randnums?|random numbers?", HELP, "randnum") mm.register_perm("randnum", PERM_RANDNUM) Index: remoteinfo.py =================================================================== RCS file: /cvsroot/pybot/pybot/pybot/modules/remoteinfo.py,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** remoteinfo.py 23 Aug 2003 22:04:09 -0000 1.4 --- remoteinfo.py 24 Aug 2003 19:30:53 -0000 1.5 *************** *** 17,21 **** # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! from pybot import config, options, hooks, mm, db import thread, time import urllib --- 17,21 ---- # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! from pybot.locals import * import thread, time import urllib *************** *** 100,117 **** # load remote[ ]info [from] <url> [each <n>[ ](s[econds]|m[inutes]|h[ours])] [[with|using] regex <regex>] ! self.re1 = re.compile(r"load\s+remote\s*info\s+(?:from\s+)?(?P<url>\S+)(?:\s+each\s+(?P<interval>[0-9]+)\s*(?P<intervalunit>se?c?o?n?d?s?|mi?n?u?t?e?s?|ho?u?r?s?))?(?:\s+(?:with\s+|using\s+)?regex\s+(?P<regex>.*))?\s*$", re.I) # (un|re)load remote[ ]info [from] <url> ! self.re2 = re.compile(r"(?P<cmd>un|re)load\s+remote\s*info\s+(?:from\s+)?(?P<url>\S+)\s*$", re.I) # [(don[']t|do not)] allow remote[ ]info [from] <url> [(to|for|on|at|in) (user|channel) <target>] [(to|for|on|at|in) server <server>] ! self.re3 = re.compile(r"(?P<dont>don'?t\s+|do not\s+)?allow\s+remote\s*info\s+(?:from\s+)?(?P<url>\S+)(?:\s+(?:to|for|on|at|in)\s+(?:user|channel)\s+(?P<target>\S+))?(?:\s+(?:to|for|on|at|in)\s+server\s+(?P<server>\S+))?\s*$", re.I) # show remote[ ]info[s] ! self.re4 = re.compile(r"show\s+remote\s*infos?$", re.I) # remote[ ]info ! mm.register_help("remote\s*info?$", HELP, "remoteinfo") ! mm.register_help("remote\s*infos?\s*syntax$", HELP_SYNTAX, "remoteinfo syntax") --- 100,117 ---- # load remote[ ]info [from] <url> [each <n>[ ](s[econds]|m[inutes]|h[ours])] [[with|using] regex <regex>] ! self.re1 = regexp(r"load remote *info (?:from )?(?P<url>\S+)(?: each (?P<interval>[0-9]+) *(?P<intervalunit>se?c?o?n?d?s?|mi?n?u?t?e?s?|ho?u?r?s?))?(?: (?:with |using )?regex (?P<regex>.*))?") # (un|re)load remote[ ]info [from] <url> ! self.re2 = regexp(r"(?P<cmd>un|re)load remote *info (?:from )?(?P<url>\S+)") # [(don[']t|do not)] allow remote[ ]info [from] <url> [(to|for|on|at|in) (user|channel) <target>] [(to|for|on|at|in) server <server>] ! self.re3 = regexp(r"(?P<dont>don'?t |do not )?allow remote *info (?:from )?(?P<url>\S+)(?: (?:to|for|on|at|in) (?:user|channel) (?P<target>\S+))?(?: (?:to|for|on|at|in) server (?P<server>\S+))?") # show remote[ ]info[s] ! self.re4 = regexp(r"show remote *infos?") # remote[ ]info ! mm.register_help("remote *info?$", HELP, "remoteinfo") ! mm.register_help("remote *infos? *syntax$", HELP_SYNTAX, "remoteinfo syntax") Index: repeat.py =================================================================== RCS file: /cvsroot/pybot/pybot/pybot/modules/repeat.py,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** repeat.py 22 Aug 2003 14:16:29 -0000 1.5 --- repeat.py 24 Aug 2003 19:30:53 -0000 1.6 *************** *** 17,23 **** # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! from pybot import mm, hooks, servers from string import join - import re HELP = """ --- 17,22 ---- # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! from pybot.locals import * from string import join HELP = """ *************** *** 55,59 **** # [don[']t|do not] repeat [each <n>[ ](s[econds]|m[inutes]|h[ours])] (to|at|on) [channel|user] <target> [[on|at] server <server>]: [/me|/notice] ... ! self.re1 = re.compile(r"(?:(?P<dont>don'?t|do\s+not)\s+)?repeat(?:\s+each\s+(?P<interval>[0-9]+)\s*(?P<intervalunit>se?c?o?n?d?s?|mi?n?u?t?e?s?|ho?u?r?s?))?(?:\s+(?:to|at|on)(?:\s+(?:channel|user))?\s+(?P<target>\S+))?(?:\s+(?:on|at)?\s+server\s+(?P<server>\S+))?\s*:\s+(?P<action>/me\s)?(?P<notice>/notice\s)?(?P<phrase>.*)$") # repeat --- 54,58 ---- # [don[']t|do not] repeat [each <n>[ ](s[econds]|m[inutes]|h[ours])] (to|at|on) [channel|user] <target> [[on|at] server <server>]: [/me|/notice] ... ! self.re1 = regexp(r"(?:(?P<dont>don'?t|do not) )?repeat(?: each (?P<interval>[0-9]+)\s*(?P<intervalunit>se?c?o?n?d?s?|mi?n?u?t?e?s?|ho?u?r?s?))?(?: (?:to|at|on)(?: (?:channel|user))? (?P<target>\S+))?(?: (?:on|at)? server (?P<server>\S+))?\s*: (?P<action>/me\s)?(?P<notice>/notice\s)?(?P<phrase>.*)") # repeat Index: servercontrol.py =================================================================== RCS file: /cvsroot/pybot/pybot/pybot/modules/servercontrol.py,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** servercontrol.py 22 Aug 2003 13:49:10 -0000 1.7 --- servercontrol.py 24 Aug 2003 19:30:53 -0000 1.8 *************** *** 17,24 **** # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! from pybot import mm, hooks, servers, main, db, config from pybot.user import User from string import join - import re HELP_CONNECT = """ --- 17,23 ---- # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! from pybot.locals import * from pybot.user import User from string import join HELP_CONNECT = """ *************** *** 94,122 **** # connect [to] [server] <server> [[with|using] servername <servername>] [and] [[with|using] nick <nick>] ! self.re1 = re.compile(r"connect\s+(?:to\s+)?(?:server\s+)?(?P<server>\S+)(?:(?:\s+with|\s+using)?\s+servername\s+(?P<servername>\S+))?(?:\s+and)?(?:(?:\s+with|\s+using)?\s+nick\s+(?P<nick>\S+))?\s*$", re.I) # (re|dis)connect [to|from] <server> [with <reason>] ! self.re2 = re.compile(r"(?P<cmd>(?:re|dis)connect)(?:\s+(?:to\s+|from\s+)?(?:server\s+)?(?P<server>\S+))?(?:\s+with\s+(?P<reason>.+))?\s*$", re.I) # join [channel] <channel> [[with|using] keyword <keyword>] [[on|at] [server] <server>] ! self.re3 = re.compile(r"join\s+(?:channel\s+)?(?P<channel>\S+)(?:(?:\s+with|\s+using)?\s+keyword\s+(?P<keyword>\S+))?(?:(?:\s+on|\s+at)?(?:\s+server)?\s+(?P<server>\S+))?\s*$", re.I) # (leave|part) [[from] [channel] <channel> [[on|at] [server] <server>] [with <reason>]] ! self.re4 = re.compile(r"(?:leave|part)(?:\s+(?:from\s+)?(?:channel\s+)?(?P<channel>\S+)(?:(?:\s+on|\s+at)?(?:\s+server)?\s+(?P<server>\S+))?(?:\s+with\s+(?P<reason>\S+))?)?\s*$", re.I) # show servers ! self.re5 = re.compile(r"show\s+servers\s*$", re.I) # show channels [[at|on|from|in] [server] <server>] ! self.re6 = re.compile(r"show\s+channels(?:(?:\s+on|\s+at|\s+from)?(?:\s+server)?\s+(?P<server>\S+))?\s*$", re.I) # (quit|reboot) [with <reason>] ! self.re7 = re.compile(r"(?P<cmd>quit|reboot)(?:\s+with\s+(?P<reason>.+))?$", re.I) # [remove] connection message to <target> [on [server] <server>]: <msg> ! self.re8 = re.compile(r"(?P<remove>remove\s+)?connection\s+message\s+to\s+(?P<target>\S+)(?:\s+(?:on|at)\s+(?:server\s+)?(?P<server>\S+))?\s*:\s*(?P<msg>.*?)\s*$", re.I) # show connection messages ! self.re9 = re.compile(r"show\s+connection\s+messages?\s*$", re.I) # [dis|re]connect --- 93,121 ---- # connect [to] [server] <server> [[with|using] servername <servername>] [and] [[with|using] nick <nick>] ! self.re1 = regexp(r"connect (?:to )?(?:server )?(?P<server>\S+)(?:(?: with| using)? servername (?P<servername>\S+))?(?: and)?(?:(?: with| using)? nick (?P<nick>\S+))?") # (re|dis)connect [to|from] <server> [with <reason>] ! self.re2 = regexp(r"(?P<cmd>(?:re|dis)connect)(?: (?:to |from )?(?:server )?(?P<server>\S+))?(?: with (?P<reason>.+))?") # join [channel] <channel> [[with|using] keyword <keyword>] [[on|at] [server] <server>] ! self.re3 = regexp(r"join (?:channel )?(?P<channel>\S+)(?:(?: with| using)? keyword (?P<keyword>\S+))?(?:(?: on| at)?(?: server)? (?P<server>\S+))?") # (leave|part) [[from] [channel] <channel> [[on|at] [server] <server>] [with <reason>]] ! self.re4 = regexp(r"(?:leave|part)(?: (?:from )?(?:channel )?(?P<channel>\S+)(?:(?: on| at)?(?: server)? (?P<server>\S+))?(?: with (?P<reason>\S+))?)?") # show servers ! self.re5 = regexp(r"show servers") # show channels [[at|on|from|in] [server] <server>] ! self.re6 = regexp(r"show channels(?:(?: on| at| from)?(?: server)? (?P<server>\S+))?") # (quit|reboot) [with <reason>] ! self.re7 = regexp(r"(?P<cmd>quit|reboot)(?: with (?P<reason>.+))?") # [remove] connection message to <target> [on [server] <server>]: <msg> ! self.re8 = regexp(r"(?P<remove>remove )?connection message to (?P<target>\S+)(?: (?:on|at) (?:server )?(?P<server>\S+))? *: *(?P<msg>.*?)") # show connection messages ! self.re9 = regexp(r"show connection messages?") # [dis|re]connect *************** *** 129,137 **** # show[ ](channels|servers) ! mm.register_help(r"show\s*(?:channels|servers)$", HELP_SHOW, ["show channels", "show servers"]) # connection message[s] ! mm.register_help(r"connection\s+messages?", HELP_CONNECTION_MESSAGES, "connection messages") --- 128,136 ---- # show[ ](channels|servers) ! mm.register_help(r"show *(?:channels|servers)$", HELP_SHOW, ["show channels", "show servers"]) # connection message[s] ! mm.register_help(r"connection messages?", HELP_CONNECTION_MESSAGES, "connection messages") Index: social.py =================================================================== RCS file: /cvsroot/pybot/pybot/pybot/modules/social.py,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** social.py 2 Jun 2003 13:36:10 -0000 1.9 --- social.py 24 Aug 2003 19:30:53 -0000 1.10 *************** *** 17,23 **** # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! from pybot import hooks from time import time - import re class Social: --- 17,22 ---- # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! from pybot.locals import * from time import time class Social: *************** *** 28,56 **** # (re|hi|hello|hallo|olá|ola|hola|wb|welcome|good (morning|afternoon|evening)|bom dia|boa tarde|gutten tag) [there|back|everybody|all|guys|folks|people|pessoal|(a|para) todos|pybot] [!|.] ! self.re1 = re.compile(r'(?:re|hi|hello|hallo|olá|ola|hola|wb|welcome\s+back|good\s+(?:morning|afternoon|evening)|bom\s+dia|boa\s+tarde|gutten\s+tag)(?:\s+(?:there|everybody|all|guys|folks|people|pessoal|(à|a|para)\s+todos|(?P<nick>\w+)))?\s*[!.]*$', re.I) # pybot! ! self.re2 = re.compile(r'(?P<nick>\w+)\s*!+$', re.I) ! # [thank[']s|thank you|thx|tnk[']s] [!|.] ! self.re3 = re.compile(r'(?:thank|thx|tnk)(?:\'?s|\s+you)(?:\s+(?P<nick>\w+))?\s*[!.]*', re.I) # are you ok?|how are you [doing]? ! self.re4 = re.compile(r'(?:are\s+you\s+ok|how\s+are\s+you(?:\s+doing)?)\s*[!?]*$', re.I) ! # pybot? ! self.re5 = re.compile(r'!*\?[?!]*$', re.I) ! # never mind [!|.] ! self.re6 = re.compile(r'never\s+mind\s*[!.]*$', re.I) ! # [very|pretty] (nice|good|great) [.|!] ! self.re7 = re.compile(r'(?:(?:very|pretty)\s+)?(?:nice|good|great)\s*[.!]*$', re.I) # (gay|stupid|fuck|idiot|imbecile|cretin) ! self.re8 = re.compile(r'.*(?:gay|stupid|fuck|idiot|imbecile|cretin)', re.I) # h[e|u|a]h ! self.re9 = re.compile(r'h[eua]h', re.I) def unload(self): --- 27,55 ---- # (re|hi|hello|hallo|olá|ola|hola|wb|welcome|good (morning|afternoon|evening)|bom dia|boa tarde|gutten tag) [there|back|everybody|all|guys|folks|people|pessoal|(a|para) todos|pybot] [!|.] ! self.re1 = regexp(r'(?:re|hi|hello|hallo|olá|ola|hola|wb|welcome back|good (?:morning|afternoon|evening)|bom dia|boa tarde|gutten tag)(?: (?:there|everybody|all|guys|folks|people|pessoal|(à|a|para) todos|(?P<nick>\w+)))?') # pybot! ! self.re2 = regexp(r'(?P<nick>\w+)', needpunct=1) ! # [thank[']s|thank you|thx|tnk[']s] ! self.re3 = regexp(r'(?:thank|thx|tnk)(?:\'?s| you)(?: (?P<nick>\w+))?') # are you ok?|how are you [doing]? ! self.re4 = regexp(r'(?:are you ok|how are you(?: doing)?)', question=1) ! # pybot[?] ! self.re5 = regexp(r'', question=1) ! # never mind ! self.re6 = regexp(r'never mind') ! # [very|pretty] (nice|good|great) ! self.re7 = regexp(r'(?:(?:very|pretty) )?(?:nice|good|great)') # (gay|stupid|fuck|idiot|imbecile|cretin) ! self.re8 = regexp(r'.*(?:gay|stupid|fuck|idiot|imbecile|cretin).*') # h[e|u|a]h ! self.re9 = regexp(r'h[eua]h') def unload(self): *************** *** 112,116 **** if self.re9.match(msg.line): ! msg.answer("%:", ["Heh", "Huh"], ["?", "!?", "!?!?", ".."]) return 0 --- 111,115 ---- if self.re9.match(msg.line): ! msg.answer("%:", ["Heh", "Huh"], ["?", "!?", "!?!?"]) return 0 Index: testadora.py =================================================================== RCS file: /cvsroot/pybot/pybot/pybot/modules/testadora.py,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** testadora.py 12 May 2003 20:42:21 -0000 1.3 --- testadora.py 24 Aug 2003 19:30:53 -0000 1.4 *************** *** 17,23 **** # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! from pybot import mm, hooks, config from string import join - import re import os --- 17,22 ---- # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! from pybot.locals import * from string import join import os *************** *** 45,49 **** # [show] (compiletime|compile time) [for] <package> ! self.re1 = re.compile(r"(?:show\s+)?compile\s*time\s+(?:for\s+)?(?P<package>\S+)$") # testadora --- 44,48 ---- # [show] (compiletime|compile time) [for] <package> ! self.re1 = regexp(r"(?:show )?compile\s*time (?:for )?(?P<package>\S+)") # testadora Index: threadedexample.py =================================================================== RCS file: /cvsroot/pybot/pybot/pybot/modules/threadedexample.py,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** threadedexample.py 12 May 2003 20:42:21 -0000 1.3 --- threadedexample.py 24 Aug 2003 19:30:53 -0000 1.4 *************** *** 17,25 **** # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! from pybot import mm, hooks import time - import re - HELP = """ This is a module implementation showing how to work with threaded --- 17,23 ---- # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! from pybot.locals import * import time HELP = """ This is a module implementation showing how to work with threaded *************** *** 39,46 **** # test threaded message ! self.re1 = re.compile(r"test\s+threaded\s+message\s*[.!]*$", re.I) # (start|stop) threaded timer ! self.re2 = re.compile(r"(?P<cmd>start|stop)\s+threaded\s+timer\s*[.!]*$", re.I) mm.register_help(r"threadedexample", HELP, "threadedexample") --- 37,44 ---- # test threaded message ! self.re1 = regexp(r"test threaded message") # (start|stop) threaded timer ! self.re2 = regexp(r"(?P<cmd>start|stop) threaded timer") mm.register_help(r"threadedexample", HELP, "threadedexample") Index: timer.py =================================================================== RCS file: /cvsroot/pybot/pybot/pybot/modules/timer.py,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** timer.py 12 May 2003 20:42:21 -0000 1.4 --- timer.py 24 Aug 2003 19:30:54 -0000 1.5 *************** *** 17,21 **** # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! from pybot import mm, hooks, options from time import time from thread import start_new_thread --- 17,21 ---- # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! from pybot.locals import * from time import time from thread import start_new_thread Index: uptime.py =================================================================== RCS file: /cvsroot/pybot/pybot/pybot/modules/uptime.py,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** uptime.py 12 May 2003 20:42:21 -0000 1.5 --- uptime.py 24 Aug 2003 19:30:54 -0000 1.6 *************** *** 17,24 **** # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! from pybot import mm, hooks, options import calendar import time - import re HELP = """ --- 17,23 ---- # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! from pybot.locals import * import calendar import time HELP = """ *************** *** 34,41 **** # [show|display] uptime ! self.re1 = re.compile(r"(?:(?:show|display)\s+)?uptime\s*[!.?]*$") # reset uptime ! self.re2 = re.compile(r"reset\s+uptime\s*[!.]*$") # uptime --- 33,40 ---- # [show|display] uptime ! self.re1 = regexp(r"(?:(?:show|display) )?uptime") # reset uptime ! self.re2 = regexp(r"reset uptime") # uptime Index: userdata.py =================================================================== RCS file: /cvsroot/pybot/pybot/pybot/modules/userdata.py,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** userdata.py 22 Aug 2003 13:22:11 -0000 1.6 --- userdata.py 24 Aug 2003 19:30:54 -0000 1.7 *************** *** 17,23 **** # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! from pybot import mm, hooks, options, config, db import time - import re HELP_REGISTER = """ --- 17,22 ---- # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! from pybot.locals import * import time HELP_REGISTER = """ *************** *** 84,97 **** # ([un]register|ident[ify]) [with] [[nick] <nick> [and]] [password] <passwd> ! self.re1 = re.compile(r"(?P<cmd>(?:un)?register|ident(?:ify)?)\s+(?:with\s+)?(?:(?:nick\s+)?(?P<nick>\S+)\s+(?:and\s+)?)?(?:password\s+)?(?P<passwd>\S+)\s*[!.]?$", re.I) # (set|add) <type> <value> ! self.re2 = re.compile(r"(?P<cmd>set|add)\s+(?P<type>\S+)\s+(?P<value>.+?)\s*$", re.I) # unset <type>|remove <type> <value> ! self.re3 = re.compile(r"unset\s+(?P<type1>\S+)\s*|remove\s+(?P<type2>\S+)\s+(?P<value>.+?)\s*$", re.I) # unident[ify]|forget me ! self.re4 = re.compile(r"unident(?:ify)?|forget\s+me", re.I) # [un]register|identify --- 83,96 ---- # ([un]register|ident[ify]) [with] [[nick] <nick> [and]] [password] <passwd> ! self.re1 = regexp(r"(?P<cmd>(?:un)?register|ident(?:ify)?) (?:with )?(?:(?:nick )?(?P<nick>\S+) (?:and )?)?(?:password )?(?P<passwd>\S+)") # (set|add) <type> <value> ! self.re2 = regexp(r"(?P<cmd>set|add) (?P<type>\S+) (?P<value>.+?)") # unset <type>|remove <type> <value> ! self.re3 = regexp(r"unset (?P<type1>\S+) *|remove (?P<type2>\S+) (?P<value>.+?)") # unident[ify]|forget me ! self.re4 = regexp(r"unident(?:ify)?|forget me") # [un]register|identify Index: xmlrpc.py =================================================================== RCS file: /cvsroot/pybot/pybot/pybot/modules/xmlrpc.py,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** xmlrpc.py 12 May 2003 23:02:58 -0000 1.4 --- xmlrpc.py 24 Aug 2003 19:30:54 -0000 1.5 *************** *** 17,26 **** # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! from pybot import hooks, mm, rm, servers, db from SimpleXMLRPCServer import SimpleXMLRPCServer from types import StringType import xmlrpclib import traceback - import re HELP = """ --- 17,25 ---- # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! from pybot.locals import * from SimpleXMLRPCServer import SimpleXMLRPCServer from types import StringType import xmlrpclib import traceback HELP = """ *************** *** 80,90 **** # (add|create) xmlrpc user <user> with [pass|password] <passwd> [!.] ! self.re1 = re.compile(r"(?:add|create)\s+xmlrpc\s+user\s+(?P<user>\S+)\s+with\s+(?:password|pass)\s+(?P<passwd>\S+)\s*[.!]*$") # (del|delete|remove) xmlrpc user <user> ! self.re2 = re.compile(r"(?:del|delete|remove)\s+xmlrpc\s+user\s+(?P<user>\S+)\s*[.!]*$") # [don[']t|do not] allow xmlrpc (func[tion]|method) <method> [(to|for) user <user>] [(to|for|on|at) [user|channel] <target>] [[and] [on|at] server <server>] ! self.re3 = re.compile(r"(?P<dont>don'?t\s+|do not\s+)?allow\s+xmlrpc\s+(?:func(?:tion)?|method)\s+(?P<method>\S+)(?:\s+(?:to\s+|for\s+)user\s+(?P<user>\S+))?(?:\s+(?:to|for|on|at)\s+(?:user\s+|channel\s+)?(?P<target>\S+))?(?:\s+(?:and\s+)?(?:on\s+|at\s+)?server\s+(?P<server>\S+))?\s*[.!]*$") # xmlrpc --- 79,89 ---- # (add|create) xmlrpc user <user> with [pass|password] <passwd> [!.] ! self.re1 = regexp(r"(?:add|create) xmlrpc user (?P<user>\S+) with (?:password|pass) (?P<passwd>\S+)") # (del|delete|remove) xmlrpc user <user> ! self.re2 = regexp(r"(?:del|delete|remove) xmlrpc user (?P<user>\S+)") # [don[']t|do not] allow xmlrpc (func[tion]|method) <method> [(to|for) user <user>] [(to|for|on|at) [user|channel] <target>] [[and] [on|at] server <server>] ! self.re3 = regexp(r"(?P<dont>don'?t |do not )?allow xmlrpc (?:func(?:tion)?|method) (?P<method>\S+)(?: (?:to |for )user (?P<user>\S+))?(?: (?:to|for|on|at) (?:user |channel )?(?P<target>\S+))?(?: (?:and )?(?:on |at )?server (?P<server>\S+))?") # xmlrpc |
From: Gustavo N. <nie...@us...> - 2003-08-24 19:31:07
|
Update of /cvsroot/pybot/pybot/pybot In directory sc8-pr-cvs1:/tmp/cvs-serv22909/pybot Modified Files: misc.py Added Files: locals.py Log Message: * pybot/misc.py,modules/help.py,modules/*: Now regular expressions are using a single space, and misc.regexp() and mm.register_help() convert them to \s+ and \s*. * pybot/misc.py: Fixed small issues on buildanswer(). * pybot/locals.py,pybot/misc.py,modules/*: Introduced pybot.locals. All basic instances of the pybot API are now defined on this file, and all modules are running "from pybot.locals import *". * pybot/misc.py,modules/*: Introduced misc.regexp(). This function is a wrapper on top of re.compile() which will deal better with the pybot triggers expressions. --- NEW FILE: locals.py --- # Copyright (c) 2000-2003 Gustavo Niemeyer <nie...@co...> # # This file is part of pybot. # # pybot is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # pybot 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. # # You should have received a copy of the GNU General Public License # along with pybot; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA from pybot import * from pybot.misc import regexp # vim:ts=4:sw=4:et Index: misc.py =================================================================== RCS file: /cvsroot/pybot/pybot/pybot/misc.py,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** misc.py 12 May 2003 20:42:20 -0000 1.4 --- misc.py 24 Aug 2003 19:30:53 -0000 1.5 *************** *** 20,23 **** --- 20,24 ---- from random import randint from string import rfind + import re __all__ = ["buildanswer", "breakline"] *************** *** 40,74 **** recret = buildanswer(tmptok, target, nick) ret.append(recret) ! elif tok[0] == ":": ! tok = tok[1:] ! if tok[0] == "%": ! if nick != target: ret.append(":"+nick+tok[1:]) ! elif tok[0] == "/": ! ret.append(":"+nick+tok[1:]) ! elif tok[0] == "\\": ! ret.append(":"+tok[1:]) ! elif tok != None: ! ret.append(":"+tok) ! else: ! if tok[0] == "%": ! if nick != target: ret.append(nick+tok[1:]) ! elif tok[0] == "/": ! ret.append(nick+tok[1:]) ! elif tok[0] == "\\": ! ret.append(tok[1:]) ! elif tok != None: ! ret.append(tok) if ret: ! str = ret[0] for tok in ret[1:]: if tok[0] in [".","!","?",","]: ! str = str+tok else: ! str = str+" "+tok else: ! str = "" ! return str def breakline(line): --- 41,77 ---- recret = buildanswer(tmptok, target, nick) ret.append(recret) ! elif tok: ! tok = str(tok) ! if tok[0] == ":": ! tok = tok[1:] ! if tok[0] == "%": ! if nick != target: ! ret.append(":"+nick+tok[1:]) ! elif tok[0] == "/": ret.append(":"+nick+tok[1:]) ! elif tok[0] == "\\": ! ret.append(":"+tok[1:]) ! else: ! ret.append(":"+tok) ! else: ! if tok[0] == "%": ! if nick != target: ! ret.append(nick+tok[1:]) ! elif tok[0] == "/": ret.append(nick+tok[1:]) ! elif tok[0] == "\\": ! ret.append(tok[1:]) ! else: ! ret.append(tok) if ret: ! s = ret[0] for tok in ret[1:]: if tok[0] in [".","!","?",","]: ! s += tok else: ! s += " "+tok else: ! s = "" ! return s def breakline(line): *************** *** 87,90 **** --- 90,112 ---- startpos = endpos endpos = startpos+MAXLINESIZE + + def regexp(*args, **kwargs): + expr = "".join([str(x) for x in args]) + expr = expr.replace(" *", r"\s*") + expr = expr.replace(" ?", r"\s*") + expr = expr.replace(" ", r"\s+") + if kwargs.get("needpunct"): + if kwargs.get("question"): + expr += "[!\s]*\?[!?\s*]*$" + else: + expr += "\s*[.!][.!\s]*$" + else: + if kwargs.get("question"): + expr += "[!?.\s]*$" + elif not kwargs.get("nopunct"): + expr += "[!.\s]*$" + else: + expr += "\s*$" + return re.compile(expr, re.I) # vim:ts=4:sw=4:et |
From: Gustavo N. <nie...@us...> - 2003-08-24 19:31:07
|
Update of /cvsroot/pybot/pybot In directory sc8-pr-cvs1:/tmp/cvs-serv22909 Modified Files: ChangeLog Log Message: * pybot/misc.py,modules/help.py,modules/*: Now regular expressions are using a single space, and misc.regexp() and mm.register_help() convert them to \s+ and \s*. * pybot/misc.py: Fixed small issues on buildanswer(). * pybot/locals.py,pybot/misc.py,modules/*: Introduced pybot.locals. All basic instances of the pybot API are now defined on this file, and all modules are running "from pybot.locals import *". * pybot/misc.py,modules/*: Introduced misc.regexp(). This function is a wrapper on top of re.compile() which will deal better with the pybot triggers expressions. Index: ChangeLog =================================================================== RCS file: /cvsroot/pybot/pybot/ChangeLog,v retrieving revision 1.25 retrieving revision 1.26 diff -C2 -d -r1.25 -r1.26 *** ChangeLog 23 Aug 2003 22:04:09 -0000 1.25 --- ChangeLog 24 Aug 2003 19:30:53 -0000 1.26 *************** *** 1,2 **** --- 1,8 ---- + 2003-08-24 Gustavo Niemeyer <nie...@co...> + * pybot/misc.py,modules/help.py,modules/*: Now regular + expressions are using a single space, and misc.regexp() + and mm.register_help() convert them to \s+ and \s*. + * pybot/misc.py: Fixed small issues on buildanswer(). + 2003-08-23 Gustavo Niemeyer <nie...@co...> * pybot/__init__.py,modules/{remoteinfo.py,freshmeat.py}: *************** *** 4,7 **** --- 10,20 ---- using urllib, set the http_proxy environment variable in pybot.init(). + * pybot/locals.py,pybot/misc.py,modules/*: + Introduced pybot.locals. All basic instances of the pybot + API are now defined on this file, and all modules are + running "from pybot.locals import *". + * pybot/misc.py,modules/*: Introduced misc.regexp(). This + function is a wrapper on top of re.compile() which will + deal better with the pybot triggers expressions. 2003-08-22 Gustavo Niemeyer <nie...@co...> |
From: Gustavo N. <nie...@us...> - 2003-08-23 22:04:28
|
Update of /cvsroot/pybot/pybot In directory sc8-pr-cvs1:/tmp/cvs-serv27081 Modified Files: ChangeLog Log Message: * pybot/__init__.py,modules/{remoteinfo.py,freshmeat.py}: Instead of setting the proxy settings in each module using urllib, set the http_proxy environment variable in pybot.init(). Index: ChangeLog =================================================================== RCS file: /cvsroot/pybot/pybot/ChangeLog,v retrieving revision 1.24 retrieving revision 1.25 diff -C2 -d -r1.24 -r1.25 *** ChangeLog 22 Aug 2003 13:26:13 -0000 1.24 --- ChangeLog 23 Aug 2003 22:04:09 -0000 1.25 *************** *** 1,2 **** --- 1,8 ---- + 2003-08-23 Gustavo Niemeyer <nie...@co...> + * pybot/__init__.py,modules/{remoteinfo.py,freshmeat.py}: + Instead of setting the proxy settings in each module + using urllib, set the http_proxy environment variable + in pybot.init(). + 2003-08-22 Gustavo Niemeyer <nie...@co...> * modules/servercontrol.py: Implemented arbitrary setup of |
From: Gustavo N. <nie...@us...> - 2003-08-23 22:04:23
|
Update of /cvsroot/pybot/pybot/pybot/modules In directory sc8-pr-cvs1:/tmp/cvs-serv27081/pybot/modules Modified Files: freshmeat.py remoteinfo.py Log Message: * pybot/__init__.py,modules/{remoteinfo.py,freshmeat.py}: Instead of setting the proxy settings in each module using urllib, set the http_proxy environment variable in pybot.init(). Index: freshmeat.py =================================================================== RCS file: /cvsroot/pybot/pybot/pybot/modules/freshmeat.py,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** freshmeat.py 29 May 2003 05:11:29 -0000 1.9 --- freshmeat.py 23 Aug 2003 22:04:09 -0000 1.10 *************** *** 38,45 **** class Freshmeat: def __init__(self): - if config.has_option("global", "http_proxy"): - self.proxy = config.get("global", "http_proxy") - else: - self.proxy = None self.url = config.get("freshmeat", "url") self.interval = config.getint("freshmeat", "interval") --- 38,41 ---- *************** *** 85,94 **** def fetchnews(self): - urlopener = urllib.URLopener() - if self.proxy: - proxy = {"http": self.proxy} - urlopener.proxies.update(proxy) try: ! url = urlopener.open(self.url) except: pass --- 81,86 ---- def fetchnews(self): try: ! url = urllib.urlopen(self.url) except: pass Index: remoteinfo.py =================================================================== RCS file: /cvsroot/pybot/pybot/pybot/modules/remoteinfo.py,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** remoteinfo.py 21 Aug 2003 23:24:15 -0000 1.3 --- remoteinfo.py 23 Aug 2003 22:04:09 -0000 1.4 *************** *** 95,102 **** self.info_lock = options.get("RemoteInfo.info_lock", {}) self.lock = thread.allocate_lock() - if config.has_option("global", "http_proxy"): - self.proxy = config.get("global", "http_proxy") - else: - self.proxy = None hooks.register("Message", self.message) hooks.register("Message", self.message_remoteinfo, priority=1000) --- 95,98 ---- *************** *** 176,185 **** def _reload(self, url, regex): try: - urlopener = urllib.URLopener() - if self.proxy: - proxy = {"http": self.proxy} - urlopener.proxies.update(proxy) try: ! infourl = urlopener.open(url) except: import traceback --- 172,177 ---- def _reload(self, url, regex): try: try: ! infourl = urllib.urlopen(url) except: import traceback |
From: Gustavo N. <nie...@us...> - 2003-08-23 22:04:23
|
Update of /cvsroot/pybot/pybot/pybot In directory sc8-pr-cvs1:/tmp/cvs-serv27081/pybot Modified Files: __init__.py Log Message: * pybot/__init__.py,modules/{remoteinfo.py,freshmeat.py}: Instead of setting the proxy settings in each module using urllib, set the http_proxy environment variable in pybot.init(). Index: __init__.py =================================================================== RCS file: /cvsroot/pybot/pybot/pybot/__init__.py,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** __init__.py 12 May 2003 20:42:20 -0000 1.6 --- __init__.py 23 Aug 2003 22:04:09 -0000 1.7 *************** *** 53,56 **** --- 53,59 ---- db = SQLiteDB() + if config.has_option("global", "http_proxy"): + os.environ["http_proxy"] = config.get("global", "http_proxy") + main = Main() |
From: Gustavo N. <nie...@us...> - 2003-08-23 10:00:50
|
Update of /cvsroot/pybot/pybot/pybot In directory sc8-pr-cvs1:/tmp/cvs-serv7204/pybot Modified Files: command.py Log Message: Fixed code which were still using old code from the Command class. Index: command.py =================================================================== RCS file: /cvsroot/pybot/pybot/pybot/command.py,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** command.py 22 Aug 2003 13:26:13 -0000 1.5 --- command.py 22 Aug 2003 13:49:10 -0000 1.6 *************** *** 71,74 **** --- 71,76 ---- self.answered = 0 else: + self.prefix = "" + self.cmd = "" self.target = "" self.answertarget = "" |
From: Gustavo N. <nie...@us...> - 2003-08-23 08:31:06
|
Update of /cvsroot/pybot/pybot/pybot/modules In directory sc8-pr-cvs1:/tmp/cvs-serv7204/pybot/modules Modified Files: pong.py servercontrol.py Log Message: Fixed code which were still using old code from the Command class. Index: pong.py =================================================================== RCS file: /cvsroot/pybot/pybot/pybot/modules/pong.py,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** pong.py 12 May 2003 20:42:21 -0000 1.5 --- pong.py 22 Aug 2003 13:49:10 -0000 1.6 *************** *** 30,34 **** def pong(self, cmd): if cmd.cmd == "PING": ! cmd.server.sendcmd("", "PONG", cmd.params, priority=10) def ping(self): --- 30,34 ---- def pong(self, cmd): if cmd.cmd == "PING": ! cmd.server.sendcmd("", "PONG", cmd.line, priority=10) def ping(self): Index: servercontrol.py =================================================================== RCS file: /cvsroot/pybot/pybot/pybot/modules/servercontrol.py,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** servercontrol.py 22 Aug 2003 13:22:11 -0000 1.6 --- servercontrol.py 22 Aug 2003 13:49:10 -0000 1.7 *************** *** 211,243 **** def command(self, cmd): if cmd.cmd == "001": cmd.server.sendcmd("", "WHOIS", cmd.server.user.nick, priority=10) ! elif cmd.cmd == "311" and cmd.server.user.nick == cmd.params[1]: ! cmd.server.user.set(cmd.params[1], cmd.params[2], cmd.params[3]) hooks.call("Registered", cmd.server) elif cmd.cmd == "JOIN": if cmd.prefix == cmd.server.user.string: ! hooks.call("Joined", cmd.server, cmd.params[0][1:]) else: user = User() user.setstring(cmd.prefix) ! hooks.call("UserJoined", cmd.server, cmd.params[0][1:], user) elif cmd.cmd == "PART": if cmd.prefix == cmd.server.user.string: ! hooks.call("Parted", cmd.server, cmd.params[0]) else: user = User() user.setstring(cmd.prefix) ! if len(cmd.params) > 1: ! reason = join([cmd.params[1][1:]]+cmd.params[2:]) else: reason = None hooks.call("UserParted", ! cmd.server, cmd.params[0], user, reason) elif cmd.cmd == "QUIT": user = User() user.setstring(cmd.prefix) ! if len(cmd.params) > 0: ! reason = join([cmd.params[0][1:]]+cmd.params[2:]) else: reason = None --- 211,244 ---- def command(self, cmd): + params = cmd.line.split() if cmd.cmd == "001": cmd.server.sendcmd("", "WHOIS", cmd.server.user.nick, priority=10) ! elif cmd.cmd == "311" and cmd.server.user.nick == params[1]: ! cmd.server.user.set(params[1], params[2], params[3]) hooks.call("Registered", cmd.server) elif cmd.cmd == "JOIN": if cmd.prefix == cmd.server.user.string: ! hooks.call("Joined", cmd.server, params[0][1:]) else: user = User() user.setstring(cmd.prefix) ! hooks.call("UserJoined", cmd.server, params[0][1:], user) elif cmd.cmd == "PART": if cmd.prefix == cmd.server.user.string: ! hooks.call("Parted", cmd.server, params[0]) else: user = User() user.setstring(cmd.prefix) ! if len(params) > 1: ! reason = join([params[1][1:]]+params[2:]) else: reason = None hooks.call("UserParted", ! cmd.server, params[0], user, reason) elif cmd.cmd == "QUIT": user = User() user.setstring(cmd.prefix) ! if len(params) > 0: ! reason = join([params[0][1:]]+params[2:]) else: reason = None |
From: Gustavo N. <nie...@us...> - 2003-08-23 03:08:15
|
Update of /cvsroot/pybot/pybot/pybot/modules In directory sc8-pr-cvs1:/tmp/cvs-serv1170/pybot/modules Modified Files: servercontrol.py userdata.py Log Message: * modules/servercontrol.py: Implemented arbitrary setup of after-connection messages, allowing nick registration on nickserv and similars. Index: servercontrol.py =================================================================== RCS file: /cvsroot/pybot/pybot/pybot/modules/servercontrol.py,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** servercontrol.py 21 Aug 2003 23:24:15 -0000 1.5 --- servercontrol.py 22 Aug 2003 13:22:11 -0000 1.6 *************** *** 35,38 **** --- 35,47 ---- """ + HELP_CONNECTION_MESSAGES = """ + If necessary, you may ask me to send messages to given targets just + after connecting to some server. This is useful, for example, to + identify me to some nick controlling service (like nickserv). To + do that use "[remove] connection message to <target> [on [server] + <server>]: <msg>". To check which messages are configured, use + "show connection messages". Only admins are allowed to use this. + """ + HELP_JOIN = """ You can ask me to join in a given channel using "join [channel] <channel> *************** *** 77,80 **** --- 86,90 ---- db.table("host", "servername,host") db.table("channel", "servername,channel,keyword") + db.table("connectmsg", "servername,target,msg") if config.has_option("global", "default_nick"): *************** *** 104,107 **** --- 114,123 ---- self.re7 = re.compile(r"(?P<cmd>quit|reboot)(?:\s+with\s+(?P<reason>.+))?$", re.I) + # [remove] connection message to <target> [on [server] <server>]: <msg> + self.re8 = re.compile(r"(?P<remove>remove\s+)?connection\s+message\s+to\s+(?P<target>\S+)(?:\s+(?:on|at)\s+(?:server\s+)?(?P<server>\S+))?\s*:\s*(?P<msg>.*?)\s*$", re.I) + + # show connection messages + self.re9 = re.compile(r"show\s+connection\s+messages?\s*$", re.I) + # [dis|re]connect mm.register_help(r"(?:dis|re)?connect$", HELP_CONNECT, *************** *** 116,119 **** --- 132,139 ---- ["show channels", "show servers"]) + # connection message[s] + mm.register_help(r"connection\s+messages?", HELP_CONNECTION_MESSAGES, + "connection messages") + mm.register_perm("showchannels", PERM_SHOWCHANNELS) mm.register_perm("showservers", PERM_SHOWSERVERS) *************** *** 181,184 **** --- 201,208 ---- self.registered_server[server] = 1 cursor = db.cursor() + cursor.execute("select * from connectmsg where servername=%s", + server.servername) + for row in cursor.fetchall(): + server.sendmsg(row.target, None, row.msg) cursor.execute("select * from channel where servername=%s", server.servername) *************** *** 285,288 **** --- 309,314 ---- cursor.execute("delete from host where servername=%s", server.servername) + cursor.execute("delete from connectmsg where servername=%s", + server.servername) server.sendcmd("", "QUIT") server.kill() *************** *** 477,480 **** --- 503,567 ---- else: main.reboot = 1 + else: + msg.answer("%:", [("You're not", ["that good", + "allowed to do this", + "my lord"]), + "No", "Nope"], [".", "!"]) + return 0 + + m = self.re8.match(msg.line) + if m: + if mm.hasperm(msg, "admin"): + target = m.group("target") + servername = m.group("server") + _msg = m.group("msg") + if servername: + server = servers.get(servername) + if not servers.get(servername): + msg.answer("%:", ["Sorry,", "Oops!", "Hummm..."], + "I'm not in this server", [".", "!"]) + return 0 + else: + servername = msg.server.servername + cursor = db.cursor() + if m.group("remove"): + cursor.execute("delete from connectmsg where " + "servername=%s and target=%s and msg=%s", + (servername, target, _msg)) + if cursor.rowcount: + msg.answer("%:", ["Ok", "Done", "Sure", "No problems"], + [".", "!"]) + else: + msg.answer("%:", ["Message not found", + "Couldn't find that message", + "I wasn't able to find that message"], + [".", "!"]) + else: + cursor.execute("insert into connectmsg values (%s,%s,%s)", + (servername, target, _msg)) + msg.answer("%:", ["Ok", "Done", "Sure", "No problems"], + [".", "!"]) + else: + msg.answer("%:", [("You're not", ["that good", + "allowed to do this", + "my lord"]), + "No", "Nope"], [".", "!"]) + return 0 + + m = self.re9.match(msg.line) + if m: + if mm.hasperm(msg, "admin"): + cursor = db.cursor() + cursor.execute("select * from connectmsg") + if cursor.rowcount: + msg.answer("%:", + "The following messages are being sent after " + "connection:") + for row in cursor.fetchall(): + msg.answer("- \"%s\" to %s on server %s" % + (row.msg, row.target, row.servername)) + else: + msg.answer("%:", "No messages are being sent after " + "connection.") else: msg.answer("%:", [("You're not", ["that good", Index: userdata.py =================================================================== RCS file: /cvsroot/pybot/pybot/pybot/modules/userdata.py,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** userdata.py 12 May 2003 20:42:21 -0000 1.5 --- userdata.py 22 Aug 2003 13:22:11 -0000 1.6 *************** *** 65,69 **** class UserData: def __init__(self): ! hooks.register("Message", self.message) db.table("userdata", "servername,nick,type,value") db.table("login", "servername,userstr,lasttime,nick") --- 65,71 ---- class UserData: def __init__(self): ! # Use a lower priority, since we use some ! # regexes which are very generic here. ! hooks.register("Message", self.message, priority=600) db.table("userdata", "servername,nick,type,value") db.table("login", "servername,userstr,lasttime,nick") *************** *** 103,107 **** def unload(self): ! hooks.unregister("Message", self.message) mm.unregister("getuserdata") mm.unregister("setuserdata") --- 105,109 ---- def unload(self): ! hooks.unregister("Message", self.message, priority=600) mm.unregister("getuserdata") mm.unregister("setuserdata") *************** *** 152,156 **** self.login_update(msg) ! if not msg.forme: return None --- 154,160 ---- self.login_update(msg) ! # Check if it's already answered, since we use some ! # regexes which are very generic here. ! if not msg.forme or msg.answered: return None |
From: Gustavo N. <nie...@us...> - 2003-08-22 23:40:32
|
Update of /cvsroot/pybot/pybot/pybot In directory sc8-pr-cvs1:/tmp/cvs-serv1170/pybot Modified Files: command.py Log Message: * modules/servercontrol.py: Implemented arbitrary setup of after-connection messages, allowing nick registration on nickserv and similars. Index: command.py =================================================================== RCS file: /cvsroot/pybot/pybot/pybot/command.py,v retrieving revision 1.3 retrieving revision 1.4 diff -C2 -d -r1.3 -r1.4 *** command.py 12 May 2003 20:42:20 -0000 1.3 --- command.py 22 Aug 2003 13:22:11 -0000 1.4 *************** *** 66,69 **** --- 66,70 ---- self.direct = 0 self.answertarget = "" + self.answered = 0 else: self.target = m.group(4) *************** *** 85,88 **** --- 86,90 ---- self.direct = 0 self.answertarget = self.target + self.answered = 0 else: self.target = "" *************** *** 93,96 **** --- 95,99 ---- self.rawline = "" self._index = 2 + self.answered = 0 def _internalset(self): *************** *** 133,139 **** --- 136,144 ---- self.forme = 0 self.direct = 0 + self.answered = 0 def answer(self, *params, **kw): self.server.sendmsg(self.answertarget, self.user.nick, *params, **kw) + self.answered = 1 # vim:ts=4:sw=4:et |
From: Gustavo N. <nie...@us...> - 2003-08-22 23:06:40
|
Update of /cvsroot/pybot/pybot/pybot/modules In directory sc8-pr-cvs1:/tmp/cvs-serv15032/pybot/modules Modified Files: messages.py Log Message: Fixed small bug in messages, where checkmsgs() has a new argument but it is still used to hook into UserJoined. Index: messages.py =================================================================== RCS file: /cvsroot/pybot/pybot/pybot/modules/messages.py,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** messages.py 21 Aug 2003 21:01:41 -0000 1.10 --- messages.py 22 Aug 2003 14:35:09 -0000 1.11 *************** *** 61,65 **** mm.unregister_perm("messages") ! def checkmsgs(self, server, target, user, asked): # XXX: Must check if user is registered and logged! nick = STRIPNICK.sub(r"\1", user.nick.lower()) --- 61,65 ---- mm.unregister_perm("messages") ! def checkmsgs(self, server, target, user, asked=0): # XXX: Must check if user is registered and logged! nick = STRIPNICK.sub(r"\1", user.nick.lower()) |
From: Gustavo N. <nie...@us...> - 2003-08-22 22:48:01
|
Update of /cvsroot/pybot/pybot/pybot In directory sc8-pr-cvs1:/tmp/cvs-serv3351/pybot Modified Files: command.py Log Message: Removed compatibility code from Command class. Index: command.py =================================================================== RCS file: /cvsroot/pybot/pybot/pybot/command.py,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** command.py 22 Aug 2003 13:22:11 -0000 1.4 --- command.py 22 Aug 2003 13:26:13 -0000 1.5 *************** *** 29,49 **** def setline(self, server=None, line=None): self.server = server - ## Maintaining temporarly for compatibility with old modules - tokens = split(line) - if len(tokens) == 0: - return - if tokens[0][0] == ":": - if len(tokens) == 1: - return - self.prefix = tokens[0][1:] - self.cmd = tokens[1] - self.params = tokens[2:] - else: - self.prefix = "" - self.cmd = tokens[0] - self.params = tokens[1:] - self.line = line - self._internalset() - ## m = self.re.match(line) if m: --- 29,32 ---- *************** *** 97,141 **** self.answered = 0 - def _internalset(self): - self.user.setstring(self.prefix) - if self.params: - self.target = self.params[0] - nick = self.server.user.nick - if len(self.params) > 1: - self.msg = [self.params[1][1:]] + self.params[2:] - self.rawmsg = self.msg[:] - punct = "" - while self.msg and self.msg[-1] and self.msg[-1][-1] in [".","!","?"]: - punct = self.msg[-1][-1] + punct - self.msg[-1] = self.msg[-1][:-1] - if not self.msg[-1]: - del self.msg[-1] - if punct: - self.msg.append(punct) - if re.compile("\W*%s\W*$"%nick).match(self.msg[0]): - del self.msg[0] - self.forme = 1 - else: - self.forme = 0 - else: - self.msg = [] - self.rawmsg = [] - self.forme = 0 - if self.target == nick: - self.forme = 1 - self.direct = 1 - self.answertarget = self.user.nick - else: - self.direct = 0 - self.answertarget = self.target - else: - self.target = "" - self.answertarget = "" - self.msg = [] - self.rawmsg = [] - self.forme = 0 - self.direct = 0 - self.answered = 0 - def answer(self, *params, **kw): self.server.sendmsg(self.answertarget, self.user.nick, *params, **kw) --- 80,83 ---- |
From: Gustavo N. <nie...@us...> - 2003-08-22 22:07:55
|
Update of /cvsroot/pybot/pybot In directory sc8-pr-cvs1:/tmp/cvs-serv1170 Modified Files: ChangeLog TODO Log Message: * modules/servercontrol.py: Implemented arbitrary setup of after-connection messages, allowing nick registration on nickserv and similars. Index: ChangeLog =================================================================== RCS file: /cvsroot/pybot/pybot/ChangeLog,v retrieving revision 1.22 retrieving revision 1.23 diff -C2 -d -r1.22 -r1.23 *** ChangeLog 21 Aug 2003 23:24:15 -0000 1.22 --- ChangeLog 22 Aug 2003 13:22:11 -0000 1.23 *************** *** 1,2 **** --- 1,7 ---- + 2003-08-22 Gustavo Niemeyer <nie...@co...> + * modules/servercontrol.py: Implemented arbitrary setup of + after-connection messages, allowing nick registration on + nickserv and similars. + 2003-08-21 Gustavo Niemeyer <nie...@co...> * modules/servercontrol.py: Allow setting the bot nick when Index: TODO =================================================================== RCS file: /cvsroot/pybot/pybot/TODO,v retrieving revision 1.12 retrieving revision 1.13 diff -C2 -d -r1.12 -r1.13 *** TODO 21 Aug 2003 23:24:15 -0000 1.12 --- TODO 22 Aug 2003 13:22:11 -0000 1.13 *************** *** 9,14 **** - Cross identification between servers (is this useful?). - - Implement nickserv identification (with generic messages on connection). - - Develop admin module for direct sql access. --- 9,12 ---- |
From: Gustavo N. <nie...@us...> - 2003-08-22 21:41:27
|
Update of /cvsroot/pybot/pybot In directory sc8-pr-cvs1:/tmp/cvs-serv3351 Modified Files: ChangeLog Log Message: Removed compatibility code from Command class. Index: ChangeLog =================================================================== RCS file: /cvsroot/pybot/pybot/ChangeLog,v retrieving revision 1.23 retrieving revision 1.24 diff -C2 -d -r1.23 -r1.24 *** ChangeLog 22 Aug 2003 13:22:11 -0000 1.23 --- ChangeLog 22 Aug 2003 13:26:13 -0000 1.24 *************** *** 3,6 **** --- 3,8 ---- after-connection messages, allowing nick registration on nickserv and similars. + * pybot/command.py: Removed compatibility code from Command + class. 2003-08-21 Gustavo Niemeyer <nie...@co...> |
From: Gustavo N. <nie...@us...> - 2003-08-22 20:32:42
|
Update of /cvsroot/pybot/pybot/pybot/modules In directory sc8-pr-cvs1:/tmp/cvs-serv11860/pybot/modules Modified Files: repeat.py Log Message: Now repeat module requires a ":" before the message, like other similar commands do. Index: repeat.py =================================================================== RCS file: /cvsroot/pybot/pybot/pybot/modules/repeat.py,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** repeat.py 12 May 2003 20:42:21 -0000 1.4 --- repeat.py 22 Aug 2003 14:16:29 -0000 1.5 *************** *** 24,28 **** You can ask me to repeat or stop repeating something with the message "[don't] repeat [each <n>(s|m|h)] (to|at|on) [channel|user] <target> ! [[on|at] server <server>] [/me|/notice] <message>". You need the "repeat" permission for this. """ --- 24,28 ---- You can ask me to repeat or stop repeating something with the message "[don't] repeat [each <n>(s|m|h)] (to|at|on) [channel|user] <target> ! [[on|at] server <server>]: [/me|/notice] <message>". You need the "repeat" permission for this. """ *************** *** 54,59 **** hooks.register("Message", self.message) ! # [don[']t|do not] repeat [each <n>[ ](s[econds]|m[inutes]|h[ours])] (to|at|on) [channel|user] <target> [[on|at] server <server>] [/me|/notice] ... ! self.re1 = re.compile(r"(?:(?P<dont>don'?t|do\s+not)\s+)?repeat(?:\s+each\s+(?P<interval>[0-9]+)\s*(?P<intervalunit>se?c?o?n?d?s?|mi?n?u?t?e?s?|ho?u?r?s?))?(?:\s+(?:to|at|on)(?:\s+(?:channel|user))?\s+(?P<target>\S+))?(?:\s+(?:on|at)?\s+server\s+(?P<server>\S+))?\s+(?P<action>/me\s)?(?P<notice>/notice\s)?(?P<phrase>.*)$") # repeat --- 54,59 ---- hooks.register("Message", self.message) ! # [don[']t|do not] repeat [each <n>[ ](s[econds]|m[inutes]|h[ours])] (to|at|on) [channel|user] <target> [[on|at] server <server>]: [/me|/notice] ... ! self.re1 = re.compile(r"(?:(?P<dont>don'?t|do\s+not)\s+)?repeat(?:\s+each\s+(?P<interval>[0-9]+)\s*(?P<intervalunit>se?c?o?n?d?s?|mi?n?u?t?e?s?|ho?u?r?s?))?(?:\s+(?:to|at|on)(?:\s+(?:channel|user))?\s+(?P<target>\S+))?(?:\s+(?:on|at)?\s+server\s+(?P<server>\S+))?\s*:\s+(?P<action>/me\s)?(?P<notice>/notice\s)?(?P<phrase>.*)$") # repeat |
From: Gustavo N. <nie...@us...> - 2003-08-22 09:31:13
|
Update of /cvsroot/pybot/pybot/pybot/modules In directory sc8-pr-cvs1:/tmp/cvs-serv18373/pybot/modules Modified Files: messages.py Log Message: * modules/messages.py: Fixed sending of messages when user talks directly to the bot. Introduced command to ask for messages. Index: messages.py =================================================================== RCS file: /cvsroot/pybot/pybot/pybot/modules/messages.py,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** messages.py 21 Aug 2003 20:32:50 -0000 1.8 --- messages.py 21 Aug 2003 20:58:04 -0000 1.9 *************** *** 26,30 **** <nick>: <message>". I'll let <nick> know about your message when he joins or speaks something in one of the channels I'm in. You need the ! "messages" permission for that. """ --- 26,31 ---- <nick>: <message>". I'll let <nick> know about your message when he joins or speaks something in one of the channels I'm in. You need the ! "messages" permission for that. You may also ask explicitely if there are ! messages for you with "[any] message[s]?". """ *************** *** 46,49 **** --- 47,53 ---- self.re1 = re.compile(r"(?P<private>priv(?:ate)?\s+)?message\s+(?:to|for)\s+(?P<nick>\S+?)\s*:\s+(?P<message>.*)$", re.I) + # [any] message[s]? + self.re2 = re.compile(r"(?:any\s+)?messages?\s*\?$", re.I) + # [leav(e|ing)] message[s] mm.register_help("(?:leav(?:e|ing)\s+)?messages?", HELP, "messages") *************** *** 57,61 **** mm.register_perm("messages") ! def checkmsgs(self, server, target, user): # XXX: Must check if user is registered and logged! nick = STRIPNICK.sub(r"\1", user.nick.lower()) --- 61,65 ---- mm.register_perm("messages") ! def checkmsgs(self, server, target, user, asked): # XXX: Must check if user is registered and logged! nick = STRIPNICK.sub(r"\1", user.nick.lower()) *************** *** 69,72 **** --- 73,80 ---- else: trgt = target + if asked: + server.sendmsg(target, user.nick, "%:", + ["Yes!", "Yep!", "I think so!"]) + asked = 0 server.sendmsg(trgt, user.nick, "%:", "Message from %s:" % row.nickfrom, *************** *** 76,85 **** "servername=%s and nickto=%s", server.servername, nick) def message(self, msg): ! self.checkmsgs(msg.server, msg.target, msg.user) if not msg.forme: return None m = self.re1.match(msg.line) --- 84,104 ---- "servername=%s and nickto=%s", server.servername, nick) + if asked: + server.sendmsg(target, user.nick, "%:", + ["No.", "Nope.", "None.", "I don't think so."]) def message(self, msg): ! if msg.forme and self.re2.match(msg.line): ! asked = 1 ! else: ! asked = 0 ! ! self.checkmsgs(msg.server, msg.answertarget, msg.user, asked=asked) if not msg.forme: return None + + if asked: + return 0 m = self.re1.match(msg.line) |
From: Gustavo N. <nie...@us...> - 2003-08-22 07:56:45
|
Update of /cvsroot/pybot/pybot In directory sc8-pr-cvs1:/tmp/cvs-serv18373 Modified Files: ChangeLog Log Message: * modules/messages.py: Fixed sending of messages when user talks directly to the bot. Introduced command to ask for messages. Index: ChangeLog =================================================================== RCS file: /cvsroot/pybot/pybot/ChangeLog,v retrieving revision 1.20 retrieving revision 1.21 diff -C2 -d -r1.20 -r1.21 *** ChangeLog 21 Aug 2003 20:32:50 -0000 1.20 --- ChangeLog 21 Aug 2003 20:58:04 -0000 1.21 *************** *** 4,7 **** --- 4,9 ---- remoteinfo. * modules/messages.py: Prevent messages to the bot itself. + Fixed sending of messages when user talks directly to the + bot. Introduced command to ask for messages. 2003-08-19 Gustavo Niemeyer <nie...@co...> |
From: Gustavo N. <nie...@us...> - 2003-08-22 07:30:02
|
Update of /cvsroot/pybot/pybot/pybot/modules In directory sc8-pr-cvs1:/tmp/cvs-serv27745/pybot/modules Modified Files: remoteinfo.py Log Message: * modules/remoteinfo.py: Introduced "allow" concept, which defines which channels/servers are allowed to "see" some remoteinfo. Index: remoteinfo.py =================================================================== RCS file: /cvsroot/pybot/pybot/pybot/modules/remoteinfo.py,v retrieving revision 1.1 retrieving revision 1.2 diff -C2 -d -r1.1 -r1.2 *** remoteinfo.py 2 Jun 2003 13:36:10 -0000 1.1 --- remoteinfo.py 21 Aug 2003 18:43:08 -0000 1.2 *************** *** 32,38 **** "remoteinforeload" permission. """,""" ! The default reload interval is 10 minutes. To understand how to build the ! regex for the remote info command or how to build the remote information ! check "help remote info syntax". """ --- 32,45 ---- "remoteinforeload" permission. """,""" ! After you setup some URL for remote loading, you must say explicitly ! which users/channels and servers will be able to obtain information from ! it. To do that use the command "[don't] allow remote info [from] <url> ! [(for|on|at) (user|channel) <target>] [(for|on|at) server <server>]". ! Notice that you may omit user/channel and/or server to give wider ! permissions. ! """,""" ! The default reload interval is 10 minutes. To understand ! how to build the regex for the remote info command or how to build the ! remote information check "help remote info syntax". """ *************** *** 84,87 **** --- 91,95 ---- def __init__(self): db.table("remoteinfo", "url,regex,interval") + db.table("remoteinfoallow", "url,servername,target") self.info = options.get("RemoteInfo.info", {}) self.info_lock = options.get("RemoteInfo.info_lock", {}) *************** *** 100,105 **** self.re2 = re.compile(r"(?P<cmd>un|re)load\s+remote\s*info\s+(?:from\s+)?(?P<url>\S+)\s*$", re.I) # show remote[ ]info[s] ! self.re3 = re.compile(r"show\s+remote\s+infos?$", re.I) # remote[ ]info --- 108,116 ---- self.re2 = re.compile(r"(?P<cmd>un|re)load\s+remote\s*info\s+(?:from\s+)?(?P<url>\S+)\s*$", re.I) + # [(don[']t|do not)] allow remote[ ]info [from] <url> [(to|for|on|at|in) (user|channel) <target>] [(to|for|on|at|in) server <server>] + self.re3 = re.compile(r"(?P<dont>don'?t\s+|do not\s+)?allow\s+remote\s*info\s+(?:from\s+)?(?P<url>\S+)(?:\s+(?:to|for|on|at|in)\s+(?:user|channel)\s+(?P<target>\S+))?(?:\s+(?:to|for|on|at|in)\s+server\s+(?P<server>\S+))?\s*$", re.I) + # show remote[ ]info[s] ! self.re4 = re.compile(r"show\s+remote\s*infos?$", re.I) # remote[ ]info *************** *** 204,211 **** finally: self.unlock_url(url) def message_remoteinfo(self, msg): ret = None ! for info in self.info.values(): for p in info.patterns: flags, infomsg = info.patterns[p] --- 215,236 ---- finally: self.unlock_url(url) + + def get_allowed_urls(self, servername, target): + cursor = db.cursor() + cursor.execute("select * from remoteinfoallow") + allowed = {} + for row in cursor.fetchall(): + if (not row.servername or row.servername == servername) and \ + (not row.target or row.target == target): + allowed[row.url] = 1 + return allowed.keys() def message_remoteinfo(self, msg): ret = None ! allowed = self.get_allowed_urls(msg.server.servername, ! msg.answertarget) ! for url, info in self.info.items(): ! if url not in allowed: ! continue for p in info.patterns: flags, infomsg = info.patterns[p] *************** *** 330,333 **** --- 355,360 ---- cursor.execute("delete from remoteinfo where url=%s", (url,)) + cursor.execute("delete from remoteinfoallow where " + "url=%s", (url,)) msg.answer("%:", ["Done", "Of course", "Ready"], [".", "!"]) *************** *** 357,360 **** --- 384,439 ---- m = self.re3.match(msg.line) if m: + if mm.hasperm(msg, "remoteinfo"): + url = m.group("url") + target = m.group("target") or "" + server = m.group("server") or "" + cursor = db.cursor() + cursor.execute("select * from remoteinfo where url=%s", + (url,)) + if not cursor.rowcount: + msg.answer("%:", ["I can't do that.", "Nope.", None], + ["I'm not loading that url", + "This url is not in my database"], + [".", "!"]) + return 0 + cursor.execute("select * from remoteinfoallow where url=%s " + "and servername=%s and target=%s", + (url, server, target)) + if cursor.rowcount: + if m.group("dont"): + cursor.execute("delete from remoteinfoallow where " + "url=%s and servername=%s and target=%s", + (url, server, target)) + msg.answer("%:", ["Sure", "Done", "Removed", "Ok"], + [".", "!"]) + else: + msg.answer("%:", ["I can't do that.", "Nope.", None], + ["This target is already allowed", + "I'm already allowing this target", + "This target is already in my database"], + [".", "!"]) + else: + if m.group("dont"): + msg.answer("%:", ["I can't do that.", "Nope.", None], + ["This target doesn't exist", + "I'm not allowing this target", + "This target is not in my database"], + [".", "!"]) + else: + cursor.execute("insert into remoteinfoallow values " + "(%s,%s,%s)", + (url, server, target)) + msg.answer("%:", ["Sure", "Done", "Added", "Ok"], + [".", "!"]) + else: + msg.answer("%:", [("You're not", + ["allowed to change remote info options", + "that good", + "allowed to do this"]), + "Nope"], [".", "!"]) + return 0 + + m = self.re4.match(msg.line) + if m: if mm.hasperm(msg, "remoteinfo") or \ mm.hasperm(msg, "reloadremoteinfo"): *************** *** 376,381 **** if interval > 1: unit += "s" msg.answer("-", row.url, "each", str(interval), unit, ! "with regex", row.regex) else: msg.answer("%:", "No remote info urls are currently " --- 455,483 ---- if interval > 1: unit += "s" + cursor.execute("select * from remoteinfoallow where " + "url=%s", (row.url,)) + if cursor.rowcount: + allowed = "(for " + first = 1 + for _row in cursor.fetchall(): + if not first: + allowed += ", " + if _row.servername and _row.target: + allowed += "%s at %s" % (_row.target, + _row.servername) + elif _row.servername: + allowed += "server %s" % _row.servername + elif _row.target: + allowed += _row.target + else: + allowed = "(for everybody)" + break + first = 0 + else: + allowed += ")" + else: + allowed = "(for nobody)" msg.answer("-", row.url, "each", str(interval), unit, ! "with regex", row.regex, allowed) else: msg.answer("%:", "No remote info urls are currently " |
From: Gustavo N. <nie...@us...> - 2003-08-22 07:30:02
|
Update of /cvsroot/pybot/pybot In directory sc8-pr-cvs1:/tmp/cvs-serv27745 Modified Files: ChangeLog Log Message: * modules/remoteinfo.py: Introduced "allow" concept, which defines which channels/servers are allowed to "see" some remoteinfo. Index: ChangeLog =================================================================== RCS file: /cvsroot/pybot/pybot/ChangeLog,v retrieving revision 1.18 retrieving revision 1.19 diff -C2 -d -r1.18 -r1.19 *** ChangeLog 19 Aug 2003 21:59:10 -0000 1.18 --- ChangeLog 21 Aug 2003 18:43:08 -0000 1.19 *************** *** 1,2 **** --- 1,7 ---- + 2003-08-21 Gustavo Niemeyer <nie...@co...> + * modules/remoteinfo.py: Introduced "allow" concept, which + defines which channels/servers are allowed to "see" some + remoteinfo. + 2003-08-19 Gustavo Niemeyer <nie...@co...> * modules/servercontrol.py: Minor typos fixed. |