diff --git a/admin_page_server.py b/admin_page_server.py
index 0d06490..578f8dc 100644
--- a/admin_page_server.py
+++ b/admin_page_server.py
@@ -71,6 +71,29 @@ class AdminPage(resource.Resource):
def __init__(self,adminpage):
self.adminpage = adminpage
+ def get_header(self, title = None):
+ if not title:
+ title = 'AltWfc Admin Page'
+ s = (
+ ''
+ '
'
+ '' + title + ''
+ ''
+ ''
+ ''
+ 'Blacklist '
+ 'Whitelist '
+ '
'
+ )
+ return s
+
+ def get_footer(self):
+ s = (
+ ''
+ ''
+ )
+ return s
+
def is_authorized(self, request):
is_auth = False
response_code = 401
@@ -112,14 +135,15 @@ class AdminPage(resource.Resource):
dbconn.close()
logger.log(logging.INFO,address+" "+responsedata)
request.setHeader("Content-Type", "text/html; charset=utf-8")
+ request.setHeader("Location", "/whitelist")
+ request.setResponseCode(303)
return responsedata
def render_whitelist(self, request):
address = request.getClientIP()
dbconn = sqlite3.connect('gpcm.db')
logger.log(logging.INFO,address+" Viewed whitelist")
- responsedata = ("\r\n"
- "altwfc admin page - WhiteList"
+ responsedata = (""
'[CLICK HERE TO LOG OUT]'
"\r\n")
- responsedata += ""
+ responsedata += ""
dbconn.close()
request.setHeader("Content-Type", "text/html; charset=utf-8")
return responsedata
-
+
def render_not_available(self, request):
request.setResponseCode(403)
request.setHeader('WWW-Authenticate', 'Basic realm="ALTWFC"')
request.write('No admin credentials set. Admin page is not available.')
-
- def render_GET(self, request):
- if not adminpageconf:
- self.render_not_available(request)
- return ""
-
- if not self.is_authorized(request):
- return ""
- if request.path == "/whitelist":
- return self.render_whitelist(request)
- if request.path != "/banhammer":
- request.setResponseCode(500)
- return "wrong url path"
+
+ def render_blacklist(self, request):
sqlstatement = (''
'select users.profileid,enabled,data,users.gameid,console,users.userid '
'from nas_logins '
@@ -176,11 +189,9 @@ class AdminPage(resource.Resource):
'order by users.gameid '
'')
dbconn = sqlite3.connect('gpcm.db')
- responsedata = ("\r\n"
- "altwfc admin page"
+ responsedata = (""
'[CLICK HERE TO LOG OUT]'
"
"
- 'WhiteList'
""
+ responsedata += ""
dbconn.close()
request.setHeader("Content-Type", "text/html; charset=utf-8")
return responsedata.encode('utf-8')
-
- def render_POST(self, request):
- if not adminpageconf:
- self.render_not_available(request)
- return ""
- if not self.is_authorized(request):
- return ""
- if request.path == "/updatewhitelist":
- return self.update_whitelist(request)
- if request.path != "/enableuser" and request.path != "/disableuser":
- request.setResponseCode(500)
- return "wrong url path"
+ def enable_disable_user(self, request, enable=True):
address = request.getClientIP()
responsedata = ""
userid = request.args['userid'][0]
@@ -253,7 +253,7 @@ class AdminPage(resource.Resource):
return "Bad data"
dbconn = sqlite3.connect('gpcm.db')
- if request.path == "/enableuser":
+ if enable:
dbconn.cursor().execute('update users set enabled=1 '
'where gameid=? and userid=?',(gameid,userid))
responsedata = "Enabled %s with gameid=%s, userid=%s" % \
@@ -267,13 +267,50 @@ class AdminPage(resource.Resource):
dbconn.close()
logger.log(logging.INFO,address+" "+responsedata)
request.setHeader("Content-Type", "text/html; charset=utf-8")
+ request.setHeader("Location", "/banhammer")
+ request.setResponseCode(303)
return responsedata
+ def render_GET(self, request):
+ if not adminpageconf:
+ self.render_not_available(request)
+ return ""
+ if not self.is_authorized(request):
+ return ""
+
+ title = None
+ response = ''
+ if request.path == "/whitelist":
+ title = 'AltWfc Whitelist'
+ response = self.render_whitelist(request)
+ elif request.path == "/banhammer":
+ title = 'AltWfc Blacklist'
+ response = self.render_blacklist(request)
+
+ return self.get_header(title) + response + self.get_footer()
+ def render_POST(self, request):
+ if not adminpageconf:
+ self.render_not_available(request)
+ return ""
+ if not self.is_authorized(request):
+ return ""
+
+ if request.path == "/updatewhitelist":
+ return self.update_whitelist(request)
+ elif request.path == "/enableuser":
+ return self.enable_disable_user(request, True)
+ elif request.path == "/disableuser":
+ return self.enable_disable_user(request, False)
+ else:
+ return self.get_header() + self.get_footer()
+
+port = 9009
class AdminPageServer(object):
def start(self):
site = server.Site(AdminPage(self))
- reactor.listenTCP(9009, site)
+ reactor.listenTCP(port, site)
+ logger.log(logging.INFO, "Now listening for connections on port %d...", port)
try:
if reactor.running == False:
reactor.run(installSignalHandlers=0)