def render_GET(self, request): 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" sqlstatement = ('' 'select users.profileid,enabled,data,users.gameid,console,users.userid ' 'from nas_logins ' 'inner join users ' 'on users.userid = nas_logins.userid ' 'inner join ( ' ' select max(profileid) newestpid, userid, gameid, devname ' ' from users ' ' group by userid,gameid) ' 'ij on ij.userid = users.userid and ' 'users.profileid = ij.newestpid ' 'order by users.gameid ' '') dbconn = sqlite3.connect('gpcm.db') responsedata = ("<html><meta charset='utf-8'>\r\n" "<title>altwfc admin page</title>" '<a href="http://%20:%20@'+request.getHeader('host')+'">[CLICK HERE TO LOG OUT]</a>' "<br><br>" '<a href="http://'+request.getHeader('host')+'/whitelist">WhiteList</a>' "<table border='1'>" "<tr><td>ingamesn or devname</td><td>gameid</td>" "<td>Enabled</td><td>newest dwc_pid</td>" "<td>gsbrcd</td><td>userid</td></tr>\r\n") for row in dbconn.cursor().execute(sqlstatement): dwc_pid = str(row[0]) enabled = str(row[1]) nasdata = collections.defaultdict(lambda: '', json.loads(row[2])) gameid = str(row[3]) is_console = int(str(row[4])) userid = str(row[5]) gsbrcd = str(nasdata['gsbrcd']) ingamesn = '' if 'ingamesn' in nasdata: ingamesn = str(nasdata['ingamesn']) elif 'devname' in nasdata: ingamesn = str(nasdata['devname']) if ingamesn: ingamesn = gs_utils.base64_decode(ingamesn) if is_console: ingamesn = codecs.utf_16_be_decode(ingamesn)[0] else: ingamesn = codecs.utf_16_le_decode(ingamesn)[0] else: ingamesn = '[NOT AVAILABLE]' responsedata += "<tr>" responsedata += "<td>"+ingamesn+"</td>" responsedata += "<td>"+gameid+"</td>" responsedata += "<td>"+enabled+"</td>" responsedata += "<td>"+dwc_pid+"</td>" responsedata += "<td>"+gsbrcd+"</td>" responsedata += "<td>"+userid+"</td>" if enabled == "1": responsedata += ("<td><form action='disableuser' method='POST'>" "<input type='hidden' name='userid' value='"+userid+"'>" "<input type='hidden' name='gameid' value='"+gameid+"'>" "<input type='hidden' name='ingamesn' value='"+ingamesn+"'>" "<input type='submit' value='Ban'></form></td></tr>") else: responsedata += ("<td><form action='enableuser' method='POST'>" "<input type='hidden' name='userid' value='"+userid+"'>" "<input type='hidden' name='gameid' value='"+gameid+"'>" "<input type='hidden' name='ingamesn' value='"+ingamesn+"'>" "<input type='submit' value='----- unban -----'></form></td></tr>") responsedata += "</table></html>" dbconn.close() request.setHeader("Content-Type", "text/html; charset=utf-8") return responsedata.encode('utf-8')
def render_GET(self, request): 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" sqlstatement = ( '' 'select users.profileid,enabled,data,users.gameid,console,users.userid ' 'from nas_logins ' 'inner join users ' 'on users.userid = nas_logins.userid ' 'inner join ( ' ' select max(profileid) newestpid, userid, gameid, devname ' ' from users ' ' group by userid,gameid) ' 'ij on ij.userid = users.userid and ' 'users.profileid = ij.newestpid ' 'order by users.gameid ' '') dbconn = sqlite3.connect('gpcm.db') responsedata = ("<html><meta charset='utf-8'>\r\n" "<title>altwfc admin page</title>" '<a href="http://%20:%20@' + request.getHeader('host') + '">[CLICK HERE TO LOG OUT]</a>' "<br><br>" '<a href="http://' + request.getHeader('host') + '/whitelist">WhiteList</a>' "<table border='1'>" "<tr><td>ingamesn or devname</td><td>gameid</td>" "<td>Enabled</td><td>newest dwc_pid</td>" "<td>gsbrcd</td><td>userid</td></tr>\r\n") for row in dbconn.cursor().execute(sqlstatement): dwc_pid = str(row[0]) enabled = str(row[1]) nasdata = collections.defaultdict(lambda: '', json.loads(row[2])) gameid = str(row[3]) is_console = int(str(row[4])) userid = str(row[5]) gsbrcd = str(nasdata['gsbrcd']) ingamesn = '' if 'ingamesn' in nasdata: ingamesn = str(nasdata['ingamesn']) elif 'devname' in nasdata: ingamesn = str(nasdata['devname']) if ingamesn: ingamesn = gs_utils.base64_decode(ingamesn) if is_console: ingamesn = codecs.utf_16_be_decode(ingamesn)[0] else: ingamesn = codecs.utf_16_le_decode(ingamesn)[0] else: ingamesn = '[NOT AVAILABLE]' responsedata += "<tr>" responsedata += "<td>" + ingamesn + "</td>" responsedata += "<td>" + gameid + "</td>" responsedata += "<td>" + enabled + "</td>" responsedata += "<td>" + dwc_pid + "</td>" responsedata += "<td>" + gsbrcd + "</td>" responsedata += "<td>" + userid + "</td>" if enabled == "1": responsedata += ( "<td><form action='disableuser' method='POST'>" "<input type='hidden' name='userid' value='" + userid + "'>" "<input type='hidden' name='gameid' value='" + gameid + "'>" "<input type='hidden' name='ingamesn' value='" + ingamesn + "'>" "<input type='submit' value='Ban'></form></td></tr>") else: responsedata += ( "<td><form action='enableuser' method='POST'>" "<input type='hidden' name='userid' value='" + userid + "'>" "<input type='hidden' name='gameid' value='" + gameid + "'>" "<input type='hidden' name='ingamesn' value='" + ingamesn + "'>" "<input type='submit' value='----- unban -----'></form></td></tr>" ) responsedata += "</table></html>" dbconn.close() request.setHeader("Content-Type", "text/html; charset=utf-8") return responsedata.encode('utf-8')
def render_blacklist(self, request): sqlstatement = """ SELECT users.profileid, enabled, data, users.gameid, console, users.userid FROM nas_logins INNER JOIN users ON users.userid = nas_logins.userid INNER JOIN ( SELECT max(profileid) newestpid, userid, gameid, devname FROM users GROUP BY userid, gameid ) ij ON ij.userid = users.userid AND users.profileid = ij.newestpid ORDER BY users.gameid""" dbconn = sqlite3.connect('gpcm.db') banned_list = [] for row in dbconn.cursor().execute("SELECT * FROM BANNED"): banned_list.append(str(row[0]) + ":" + str(row[1])) responsedata = """ <a href="http://%%20:%%20@%s">[CLICK HERE TO LOG OUT]</a> <br><br> <table border='1'>" <tr> <td>ingamesn or devname</td> <td>gameid</td> <td>Enabled</td> <td>newest dwc_pid</td>" <td>gsbrcd</td> <td>userid</td> <td>ipAddr</td> </tr>""" % request.getHeader('host') for row in dbconn.cursor().execute(sqlstatement): dwc_pid = str(row[0]) enabled = str(row[1]) nasdata = collections.defaultdict(lambda: '', json.loads(row[2])) gameid = str(row[3]) is_console = int(str(row[4])) userid = str(row[5]) gsbrcd = str(nasdata['gsbrcd']) ipaddr = str(nasdata['ipaddr']) ingamesn = '' if 'ingamesn' in nasdata: ingamesn = str(nasdata['ingamesn']) elif 'devname' in nasdata: ingamesn = str(nasdata['devname']) if ingamesn: ingamesn = gs_utils.base64_decode(ingamesn) if is_console: ingamesn = codecs.utf_16_be_decode(ingamesn)[0] else: ingamesn = codecs.utf_16_le_decode(ingamesn)[0] else: ingamesn = '[NOT AVAILABLE]' responsedata += """ <tr> <td>%s</td> <td id="game">%s</td> <td>%s</td> <td>%s</td> <td>%s</td> <td>%s</td> <td>%s</td> """ % (ingamesn, gameid, enabled, dwc_pid, gsbrcd, userid, ipaddr) if gameid[:-1] + ":" + ipaddr in banned_list: responsedata += """ <td> <form action='updatebanlist' method='POST'> <input type='hidden' name='gameid' value='%s'> <input type='hidden' name='ipaddr' value='%s'> <input type='hidden' name='action' value='unban'> <input type='submit' value='----- unban -----'> </form> </td> </tr>""" % (gameid, ipaddr) else: responsedata += """ <td> <form action='updatebanlist' method='POST'> <input type='hidden' name='gameid' value='%s'> <input type='hidden' name='ipaddr' value='%s'> <input type='hidden' name='action' value='ban'> <input type='submit' value='Ban'> </form> </td> </tr> """ % (gameid, ipaddr) responsedata += "</table>" dbconn.close() request.setHeader("Content-Type", "text/html; charset=utf-8") return responsedata.encode('utf-8')
def render_blacklist(self, request): sqlstatement = ('' 'select users.profileid,enabled,data,users.gameid,console,users.userid ' 'from nas_logins ' 'inner join users ' 'on users.userid = nas_logins.userid ' 'inner join ( ' ' select max(profileid) newestpid, userid, gameid, devname ' ' from users ' ' group by userid,gameid) ' 'ij on ij.userid = users.userid and ' 'users.profileid = ij.newestpid ' 'order by users.gameid ' '') dbconn = sqlite3.connect('gpcm.db') banned_list = [] for row in dbconn.cursor().execute("SELECT * FROM IP_BANNED"): banned_list.append(str(row[0])) responsedata = ("" '<a href="http://%20:%20@'+request.getHeader('host')+'">[CLICK HERE TO LOG OUT]</a>' "<br><br>" "<table border='1'>" "<tr><td>ingamesn or devname</td><td>gameid</td>" "<td>Enabled</td><td>newest dwc_pid</td>" "<td>gsbrcd</td><td>userid</td><td>ipAddr</td><td>macadr</td><td>cfc</td><td>csnum</td><td>Ban/Unban IP</td></tr>\r\n") for row in dbconn.cursor().execute(sqlstatement): dwc_pid = str(row[0]) enabled = str(row[1]) nasdata = collections.defaultdict(lambda: '', json.loads(row[2])) gameid = str(row[3]) is_console = int(str(row[4])) userid = str(row[5]) gsbrcd = str(nasdata['gsbrcd']) ipaddr = str(nasdata['ipaddr']) macadr = str(nasdata['macadr']) cfc = str(nasdata['cfc']) csnum = str(nasdata['csnum']) ingamesn = '' if 'ingamesn' in nasdata: ingamesn = str(nasdata['ingamesn']) elif 'devname' in nasdata: ingamesn = str(nasdata['devname']) if ingamesn: ingamesn = gs_utils.base64_decode(ingamesn) if is_console: ingamesn = codecs.utf_16_be_decode(ingamesn)[0] else: ingamesn = codecs.utf_16_le_decode(ingamesn)[0] else: ingamesn = '[NOT AVAILABLE]' responsedata += "<tr>" responsedata += "<td>"+ingamesn+"</td>" responsedata += "<td>"+gameid+"</td>" responsedata += "<td>"+enabled+"</td>" responsedata += "<td>"+dwc_pid+"</td>" responsedata += "<td>"+gsbrcd+"</td>" responsedata += "<td>"+userid+"</td>" responsedata += "<td>"+ipaddr+"</td>" responsedata += "<td>"+macadr+"</td>" responsedata += "<td>"+cfc+"</td>" responsedata +="<td>"+csnum+"</td>" if ipaddr in banned_list: responsedata += ("<td><form action='updatebanlist' method='POST'>" "<input type='hidden' name='gameid' value='"+gameid+"'>" "<input type='hidden' name='ipaddr' value='"+ipaddr+"'>" "<input type='hidden' name='action' value='unban'>" "<input type='submit' value='----- unban -----'></form></td></tr>") else: responsedata += ("<td><form action='updatebanlist' method='POST'>" "<input type='hidden' name='gameid' value='"+gameid+"'>" "<input type='hidden' name='ipaddr' value='"+ipaddr+"'>" "<input type='hidden' name='action' value='ban'>" "<input type='submit' value='Ban'></form></td></tr>") responsedata += "</table>" dbconn.close() request.setHeader("Content-Type", "text/html; charset=utf-8") return responsedata.encode('utf-8')
def render_blacklist(self, request): sqlstatement = """ SELECT users.profileid, enabled, data, users.gameid, console, users.userid FROM nas_logins INNER JOIN users ON users.userid = nas_logins.userid INNER JOIN ( SELECT max(profileid) newestpid, userid, gameid, devname FROM users GROUP BY userid, gameid ) ij ON ij.userid = users.userid AND users.profileid = ij.newestpid ORDER BY users.gameid""" dbconn = sqlite3.connect('gpcm.db') banned_list = [] for row in dbconn.cursor().execute("SELECT * FROM BANNED"): banned_list.append(str(row[0])+":"+str(row[1])) responsedata = """ <a href="http://%%20:%%20@%s">[CLICK HERE TO LOG OUT]</a> <br><br> <table border='1'>" <tr> <td>ingamesn or devname</td> <td>gameid</td> <td>Enabled</td> <td>newest dwc_pid</td>" <td>gsbrcd</td> <td>userid</td> <td>ipAddr</td> </tr>""" % request.getHeader('host') for row in dbconn.cursor().execute(sqlstatement): dwc_pid = str(row[0]) enabled = str(row[1]) nasdata = collections.defaultdict(lambda: '', json.loads(row[2])) gameid = str(row[3]) is_console = int(str(row[4])) userid = str(row[5]) gsbrcd = str(nasdata['gsbrcd']) ipaddr = str(nasdata['ipaddr']) ingamesn = '' if 'ingamesn' in nasdata: ingamesn = str(nasdata['ingamesn']) elif 'devname' in nasdata: ingamesn = str(nasdata['devname']) if ingamesn: ingamesn = gs_utils.base64_decode(ingamesn) if is_console: ingamesn = codecs.utf_16_be_decode(ingamesn)[0] else: ingamesn = codecs.utf_16_le_decode(ingamesn)[0] else: ingamesn = '[NOT AVAILABLE]' responsedata += """ <tr> <td>%s</td> <td>%s</td> <td>%s</td> <td>%s</td> <td>%s</td> <td>%s</td> <td>%s</td> """ % (ingamesn, gameid, enabled, dwc_pid, gsbrcd, userid, ipaddr) if gameid[:-1] + ":" + ipaddr in banned_list: responsedata += """ <td> <form action='updatebanlist' method='POST'> <input type='hidden' name='gameid' value='%s'> <input type='hidden' name='ipaddr' value='%s'> <input type='hidden' name='action' value='unban'> <input type='submit' value='----- unban -----'> </form> </td> </tr>""" % (gameid, ipaddr) else: responsedata += """ <td> <form action='updatebanlist' method='POST'> <input type='hidden' name='gameid' value='%s'> <input type='hidden' name='ipaddr' value='%s'> <input type='hidden' name='action' value='ban'> <input type='submit' value='Ban'> </form> </td> </tr> """ % (gameid, ipaddr) responsedata += "</table>" dbconn.close() request.setHeader("Content-Type", "text/html; charset=utf-8") return responsedata.encode('utf-8')
def render_blacklist(self, request): sqlstatement = ( '' 'select users.profileid,enabled,data,users.gameid,console,users.userid ' 'from nas_logins ' 'inner join users ' 'on users.userid = nas_logins.userid ' 'inner join ( ' ' select max(profileid) newestpid, userid, gameid, devname ' ' from users ' ' group by userid,gameid) ' 'ij on ij.userid = users.userid and ' 'users.profileid = ij.newestpid ' 'order by users.gameid ' '') dbconn = sqlite3.connect('gpcm.db') banned_list = [] for row in dbconn.cursor().execute("SELECT * FROM BANNED"): banned_list.append(str(row[0]) + ":" + str(row[1])) responsedata = ( "" '<a href="http://%20:%20@' + request.getHeader('host') + '">[CLICK HERE TO LOG OUT]</a>' "<br><br>" "<table border='1'>" "<tr><td>ingamesn or devname</td><td>gameid</td>" "<td>Enabled</td><td>newest dwc_pid</td>" "<td>gsbrcd</td><td>userid</td><td>ipAddr</td></tr>\r\n") for row in dbconn.cursor().execute(sqlstatement): dwc_pid = str(row[0]) enabled = str(row[1]) nasdata = collections.defaultdict(lambda: '', json.loads(row[2])) gameid = str(row[3]) is_console = int(str(row[4])) userid = str(row[5]) gsbrcd = str(nasdata['gsbrcd']) ipaddr = str(nasdata['ipaddr']) ingamesn = '' if 'ingamesn' in nasdata: ingamesn = str(nasdata['ingamesn']) elif 'devname' in nasdata: ingamesn = str(nasdata['devname']) if ingamesn: ingamesn = gs_utils.base64_decode(ingamesn) if is_console: ingamesn = codecs.utf_16_be_decode(ingamesn)[0] else: ingamesn = codecs.utf_16_le_decode(ingamesn)[0] else: ingamesn = '[NOT AVAILABLE]' responsedata += "<tr>" responsedata += "<td>" + ingamesn + "</td>" responsedata += "<td>" + gameid + "</td>" responsedata += "<td>" + enabled + "</td>" responsedata += "<td>" + dwc_pid + "</td>" responsedata += "<td>" + gsbrcd + "</td>" responsedata += "<td>" + userid + "</td>" responsedata += "<td>" + ipaddr + "</td>" if gameid[:-1] + ":" + ipaddr in banned_list: responsedata += ( "<td><form action='updatebanlist' method='POST'>" "<input type='hidden' name='gameid' value='" + gameid + "'>" "<input type='hidden' name='ipaddr' value='" + ipaddr + "'>" "<input type='hidden' name='action' value='unban'>" "<input type='submit' value='----- unban -----'></form></td></tr>" ) else: responsedata += ( "<td><form action='updatebanlist' method='POST'>" "<input type='hidden' name='gameid' value='" + gameid + "'>" "<input type='hidden' name='ipaddr' value='" + ipaddr + "'>" "<input type='hidden' name='action' value='ban'>" "<input type='submit' value='Ban'></form></td></tr>") responsedata += "</table>" dbconn.close() request.setHeader("Content-Type", "text/html; charset=utf-8") return responsedata.encode('utf-8')