switch server.py to python3 thanks to Unit193

This commit is contained in:
Nicolas Coevoet 2020-10-28 08:02:09 +00:00
parent 2407d05aa7
commit 762163f44a

View File

@ -1,4 +1,4 @@
import BaseHTTPServer import http.server
import os import os
import time import time
import base64 import base64
@ -6,8 +6,8 @@ import re
import supybot.utils as utils import supybot.utils as utils
import sqlite3 import sqlite3
import collections import collections
import urllib import urllib.parse
from StringIO import StringIO from io import StringIO
host = 'http://domain.tld' host = 'http://domain.tld'
port = 80 port = 80
@ -19,8 +19,8 @@ filename = '/home/botaccount/data/networkname/ChanTracker.db'
channels = [] # empty to allows view of all channels recorded, otherwise restrict the views to channels channels = [] # empty to allows view of all channels recorded, otherwise restrict the views to channels
# usage python server.py # usage python server.py
auth = '%s:%s' % (username,password)
base64string = base64.encodestring('%s:%s' % (username,password))[:-1] base64string = base64.b64encode(auth.encode('UTF-8'))
def timeElapsed(elapsed, short=False, leadingZeroes=False, years=True, def timeElapsed(elapsed, short=False, leadingZeroes=False, years=True,
weeks=True, days=True, hours=True, minutes=True, seconds=True): weeks=True, days=True, hours=True, minutes=True, seconds=True):
@ -59,13 +59,13 @@ def timeElapsed(elapsed, short=False, leadingZeroes=False, years=True,
leadingZeroes = True leadingZeroes = True
Format('second', secs) Format('second', secs)
if not ret: if not ret:
raise ValueError, 'Time difference not great enough to be noted.' raise ValueError('Time difference not great enough to be noted.')
if short: if short:
return ' '.join(ret) return ' '.join(ret)
else: else:
return format('%L', ret) return format('%L', ret)
class MyHandler( BaseHTTPServer.BaseHTTPRequestHandler ): class MyHandler( http.server.BaseHTTPRequestHandler ):
server_version= "Ircd-Seven/1.1" server_version= "Ircd-Seven/1.1"
if not standalone: if not standalone:
def log_request(self, *args): def log_request(self, *args):
@ -93,11 +93,11 @@ class MyHandler( BaseHTTPServer.BaseHTTPRequestHandler ):
if aa[0] == 'password': if aa[0] == 'password':
p = aa[1] p = aa[1]
if u and p: if u and p:
raw = base64.encodestring('%s:%s' % (u,p))[:-1] raw = base64.encodebytes(bytes('%s:%s' % (u,p), 'UTF-8'))[:-1]
if not raw == base64string: if not raw == base64string:
query = '' query = ''
else: else:
query = '/?hash=%s' % base64string query = '/?hash=%s' % base64string.decode('UTF-8')
if not query.startswith('/?hash='): if not query.startswith('/?hash='):
body.append('<html>\n<head>\n<title>ChanTracker</title>\n') body.append('<html>\n<head>\n<title>ChanTracker</title>\n')
body.append('<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />\n') body.append('<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />\n')
@ -113,16 +113,16 @@ class MyHandler( BaseHTTPServer.BaseHTTPRequestHandler ):
full = ''.join(body) full = ''.join(body)
self.send_header("Content-length",str(len(full))) self.send_header("Content-length",str(len(full)))
self.end_headers() self.end_headers()
self.wfile.write(full) self.wfile.write(full.encode('UTF-8'))
return return
if query.startswith('/?hash='): if query.startswith('/?hash='):
a = query.split('&')[0] a = query.split('&')[0]
a = a.replace('/?hash=','') a = a.replace('/?hash=','')
query = query.replace('%3D','=') query = query.replace('%3D','=')
query = query.replace('/?hash=%s' % base64string,'/') query = query.replace('/?hash=%s' % base64string.decode('UTF-8'),'/')
q = '?hash=%s' % base64string q = '?hash=%s' % base64string.decode('UTF-8')
query = urllib.unquote( query ) query = urllib.parse.unquote( query )
print query print(query)
body.append('<html style="text-align:center;font-size:1.2em;">\n<head>\n<title>BanTracker - %s</title>\n' % query) body.append('<html style="text-align:center;font-size:1.2em;">\n<head>\n<title>BanTracker - %s</title>\n' % query)
body.append('<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />\n') body.append('<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />\n')
body.append('<link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css"></link>\n') body.append('<link rel="stylesheet" href="//maxcdn.bootstrapcdn.com/bootstrap/3.3.4/css/bootstrap.min.css"></link>\n')
@ -131,7 +131,7 @@ class MyHandler( BaseHTTPServer.BaseHTTPRequestHandler ):
body.append('<div class="row"><div class="col-xs-6">\n') body.append('<div class="row"><div class="col-xs-6">\n')
body.append('<form action="%s" class="form">\n' % q) body.append('<form action="%s" class="form">\n' % q)
body.append('<div class="input-group">') body.append('<div class="input-group">')
body.append('<input type="hidden" name="hash" value="%s">' % base64string) body.append('<input type="hidden" name="hash" value="%s">' % base64string.decode('UTF-8'))
body.append('<input name="search" class="form-control" />\n') body.append('<input name="search" class="form-control" />\n')
body.append('<span class="input-group-btn"><button type="submit" class="btn btn-default">Search</button></span>\n') body.append('<span class="input-group-btn"><button type="submit" class="btn btn-default">Search</button></span>\n')
body.append('</div></form></div></div>\n') body.append('</div></form></div></div>\n')
@ -256,7 +256,7 @@ class MyHandler( BaseHTTPServer.BaseHTTPRequestHandler ):
elif query.startswith('/&search='): elif query.startswith('/&search='):
search = query.split('/&search=')[1] search = query.split('/&search=')[1]
search = search.replace('+','*') search = search.replace('+','*')
print search print(search)
if search: if search:
s = '*%s*' % search s = '*%s*' % search
qu = '%'+search+'%' qu = '%'+search+'%'
@ -315,7 +315,7 @@ class MyHandler( BaseHTTPServer.BaseHTTPRequestHandler ):
else: else:
body.append('<p>nothing found</p>\n') body.append('<p>nothing found</p>\n')
if len(ar): if len(ar):
print 'found %s results' % len(ar) print('found %s results' % len(ar))
i = 0 i = 0
body.append('<h3>results <small>%s</small></h3>' % search) body.append('<h3>results <small>%s</small></h3>' % search)
body.append('<div class="row"><div class="col-xs-12"><table class="table table-bordered sortable">\n') body.append('<div class="row"><div class="col-xs-12"><table class="table table-bordered sortable">\n')
@ -327,9 +327,9 @@ class MyHandler( BaseHTTPServer.BaseHTTPRequestHandler ):
body.append('<tr>\n') body.append('<tr>\n')
body.append('<td><a href="%s%s&id=%s">%s</a></td>\n' % (h,q,id,id)) body.append('<td><a href="%s%s&id=%s">%s</a></td>\n' % (h,q,id,id))
body.append('<td><a href="%s%s&channel=%s">%s</a></td>\n' % (h,q,channel.split('#')[1],channel)) body.append('<td><a href="%s%s&channel=%s">%s</a></td>\n' % (h,q,channel.split('#')[1],channel))
body.append('<td><a href="%s%s&%s">%s</a></td>\n' % (h,q,urllib.urlencode({'oper':oper}),oper)) body.append('<td><a href="%s%s&%s">%s</a></td>\n' % (h,q,urllib.parse.urlencode({'oper':oper}),oper))
body.append('<td>+%s</td>\n' % kind) body.append('<td>+%s</td>\n' % kind)
body.append('<td><a href="%s%s&%s">%s</a></td>\n' % (h,q,urllib.urlencode({'mask':mask}),mask)) body.append('<td><a href="%s%s&%s">%s</a></td>\n' % (h,q,urllib.parse.urlencode({'mask':mask}),mask))
s = time.strftime('%Y-%m-%d %H:%M:%S GMT',time.gmtime(float(begin_at))) s = time.strftime('%Y-%m-%d %H:%M:%S GMT',time.gmtime(float(begin_at)))
body.append('<td>%s</td>\n' % s) body.append('<td>%s</td>\n' % s)
if end_at and end_at != begin_at: if end_at and end_at != begin_at:
@ -343,7 +343,7 @@ class MyHandler( BaseHTTPServer.BaseHTTPRequestHandler ):
else: else:
body.append( '<td></td>\n' ) body.append( '<td></td>\n' )
if removed_by: if removed_by:
body.append( '<td><a href="%s%s&%s">%s</a></td>\n' % (h,q,urllib.urlencode({'removed_by':removed_by}),removed_by)) body.append( '<td><a href="%s%s&%s">%s</a></td>\n' % (h,q,urllib.parse.urlencode({'removed_by':removed_by}),removed_by))
else: else:
body.append( '<td></td>\n') body.append( '<td></td>\n')
# affected = '' # affected = ''
@ -361,10 +361,10 @@ class MyHandler( BaseHTTPServer.BaseHTTPRequestHandler ):
self.send_response(200) self.send_response(200)
self.send_header("Content-type","text/html") self.send_header("Content-type","text/html")
full = ''.join(body) full = ''.join(body)
print 'html lines %s' % len(full) print('html lines %s' % len(full))
self.send_header("Content-length",len(full)) self.send_header("Content-length",len(full))
self.end_headers() self.end_headers()
self.wfile.write(full) self.wfile.write(full.encode('UTF-8'))
c.close() c.close()
def _getbandb (self): def _getbandb (self):
@ -402,7 +402,7 @@ class MyHandler( BaseHTTPServer.BaseHTTPRequestHandler ):
return db return db
def httpd(handler_class=MyHandler, server_address = ('', port), ): def httpd(handler_class=MyHandler, server_address = ('', port), ):
srvr = BaseHTTPServer.HTTPServer(server_address, handler_class) srvr = http.server.HTTPServer(server_address, handler_class)
srvr.serve_forever() srvr.serve_forever()
if __name__ == "__main__": if __name__ == "__main__":