diff --git a/Bantracker/bans.cgi b/Bantracker/bans.cgi
index f4aa960..a124af8 100755
--- a/Bantracker/bans.cgi
+++ b/Bantracker/bans.cgi
@@ -211,10 +211,12 @@ cur = con.cursor()
cur.execute("SELECT channel,mask,operator,time,removal,removal_op,id FROM bans ORDER BY id DESC")
bans = cur.fetchall()
con.close()
-
-def myfilter(item, regex, kick, ban, oldban, mute, oldmute, floods, operator):
+
+def myfilter(item, regex, kick, ban, oldban, mute, oldmute, floods, operator, channel)
if operator:
if not operator.lower() in item[2].lower(): return False
+ if channel:
+ if not channel.lower() in item[0].lower(): return False
if '!' not in item[1]:
if not kick: return False
if not floods:
@@ -230,22 +232,34 @@ def myfilter(item, regex, kick, ban, oldban, mute, oldmute, floods, operator):
else:
if not ban: return False
if operator:
- return regex.search(item[0]) or regex.search(item[1]) or (item[5] and regex.search(item[5]))
- return regex.search(item[0]) or regex.search(item[1]) or regex.search(item[2]) or (item[5] and regex.search(item[5]))
+ return regex.search(item[1]) or regex.search(item[0]) or (item[5] and regex.search(item[5]))
+ return regex.search(item[1]) or regex.search(item[2]) or regex.search(item[0]) or (item[5] and regex.search(item[5]))
+
+def getQueryTerm(query, term):
+ if term[-1] != ':':
+ term += ':'
+ if term in query:
+ idx = query.index(term) + len(term)
+ ret = query[idx:].split(None, 1)[0]
+ query = query.replace(term + ret, '', 1).strip()
+ return (query, ret)
+ return (query, None)
if form.has_key('query'):
- k = b = ob = m = om = fb = oper = False
+ k = b = ob = m = om = fb = False
+ oper = chan = False
if form.has_key('kicks'): k = True
if form.has_key('oldbans'): ob = True
if form.has_key('bans'): b = True
if form.has_key('oldmutes'): om = True
if form.has_key('mutes'): m = True
if form.has_key('floods'): fb = True
- if form['query'].value.startswith("oper:"):
- oper = form['query'].value[4:].split(':', 1)[1].split(None, 1)[0]
- form['query'].value = form['query'].value[5+len(oper):].strip()
+ if "chan:" in form['query'].value:
+ (form['query'].value, chan) = getQueryTerm(form['query'].value, "chan:")
+ if "oper:" in form['query'].value:
+ (form['query'].value, oper) = getQueryTerm(form['query'].value, "oper:")
regex = re.compile(re.escape(form['query'].value).replace('\%','.*'), re.DOTALL | re.I)
- bans = filter(lambda x: myfilter(x, regex, k, b, ob, m, om, fb, oper), bans)
+ bans = filter(lambda x: myfilter(x, regex, k, b, ob, m, om, fb, oper, chan), bans)
start = 0; end = len(bans)
else:
page = 0
@@ -327,11 +341,18 @@ for b in bans[start:end]:
print '
'
- print ''
+ print ''
print ''
if not bans and form.has_key('query'):
- print "No matches for: "%s"" % form['query'].value
+ if chan and oper:
+ print "No matches for: "%s" in %s by %s;" % (form['query'].value, chan, oper)
+ elif chan:
+ print "No matches for: "%s" in %s" % (form['query'].value, chan)
+ elif oper:
+ print "No matches for: "%s" by %s" % (form['query'].value, oper)
+ else:
+ print "No matches for: "%s"" % form['query'].value
# Aaaaaaaaaaaaaaaaand send!
send_page('bans.tmpl')
diff --git a/Bantracker/bans.tmpl b/Bantracker/bans.tmpl
index 031f5bb..54fee8c 100644
--- a/Bantracker/bans.tmpl
+++ b/Bantracker/bans.tmpl
@@ -65,6 +65,7 @@
Ubottu Bantracker
+ %e
%s
diff --git a/Bantracker/empty.tmpl b/Bantracker/empty.tmpl
index 3aa8911..22d0be1 100644
--- a/Bantracker/empty.tmpl
+++ b/Bantracker/empty.tmpl
@@ -1 +1,2 @@
+%e
%s
diff --git a/bot.css b/bot.css
index 403528e..785683d 100644
--- a/bot.css
+++ b/bot.css
@@ -84,7 +84,7 @@ div.invisible {
div.log {
display: none;
color: black;
- width: 100%%;
+ width: 100%;
font-family: monospace;
white-space: normal;
text-align: left;
diff --git a/commoncgi.py b/commoncgi.py
index f2b1ce8..afc6a0b 100644
--- a/commoncgi.py
+++ b/commoncgi.py
@@ -37,10 +37,12 @@ class IOWrapper:
return self.buf
sys.stdout = IOWrapper()
+sys.stderr = IOWrapper()
def send_page(template):
data = sys.stdout.getvalue()
sys.stdout = sys.__stdout__
+ sys.stderr = sys.__stderr__
print "Content-Type: text/html"
print cookie
print ""
@@ -48,7 +50,11 @@ def send_page(template):
fd = open(template)
tmpl = fd.read()
fd.close()
- print tmpl[:tmpl.find('%s')]
+ print tmpl[:tmpl.find('%e')]
+ for e in errdata:
+ print e
+ print tmpl[tmpl.find('%e')+2:tmpl.find('%s')]
+# print tmpl[:tmpl.find('%s')]
for d in data:
print d
print tmpl[tmpl.find('%s')+2:]