From 480fc8cbde2c6348fa527632ef75bac1b70e7db6 Mon Sep 17 00:00:00 2001 From: polaris Date: Mon, 4 Aug 2014 18:51:02 -0400 Subject: [PATCH] Added /json to stats server --- internal_stats_server.py | 73 ++++++++++++++++++++++++++++------------ 1 file changed, 51 insertions(+), 22 deletions(-) diff --git a/internal_stats_server.py b/internal_stats_server.py index f745016..369cc82 100644 --- a/internal_stats_server.py +++ b/internal_stats_server.py @@ -21,6 +21,15 @@ from twisted.internet.error import ReactorAlreadyRunning from multiprocessing.managers import BaseManager import time import datetime +import json +import logging +import other.utils as utils + +logger_output_to_console = True +logger_output_to_file = True +logger_name = "InternalStatsServer" +logger_filename = "internal_stats_server.log" +logger = utils.create_logger(logger_name, logger_filename, -1, logger_output_to_console, logger_output_to_file) class GameSpyServerDatabase(BaseManager): pass @@ -34,31 +43,51 @@ class StatsPage(resource.Resource): self.stats = stats def render_GET(self, request): - # TODO: Make this easier to modify later + raw = False + force_update = False - server_list = self.stats.get_server_list() + if '/'.join(request.postpath) == "json": + raw = True + force_update = True - output = "" - output += "" - output += "" - output += "" - output += "" + server_list = self.stats.get_server_list(force_update) - if server_list != None: - for game in server_list: - if not server_list[game]: - continue + if raw == True: + # List of keys to be removed + restricted = [ "publicip", "__session__", "localip0", "localip1" ] - output += "" - output += "" - output += "" % (len(server_list[game])) - output += "" + # Filter out certain fields before displaying raw data + if server_list != None: + for game in server_list: + for server in server_list[game]: + for r in restricted: + if r in server: + server.pop(r, None) - output += "
Game ID# Players
" + game + "
%d
" + output = json.dumps(server_list) - output += "
" - output += "Last updated: %s
" % (self.stats.get_last_update_time()) - output += "" + else: + output = "" + output += "" + output += "" + output += "" + output += "" + + if server_list != None: + for game in server_list: + if not server_list[game]: + continue + + output += "" + output += "" + output += "" % (len(server_list[game])) + output += "" + + output += "
Game ID# Players
" + game + "
%d
" + + output += "
" + output += "Last updated: %s
" % (self.stats.get_last_update_time()) + output += "" return output @@ -84,13 +113,13 @@ class InternalStatsServer(object): except ReactorAlreadyRunning: pass - def get_server_list(self): - if self.next_update == 0 or self.next_update - time.time() <= 0: + def get_server_list(self, force_update = False): + if force_update == True or self.next_update == 0 or self.next_update - time.time() <= 0: self.last_update = time.time() self.next_update = time.time() + self.seconds_per_update self.server_list = self.server_manager.get_server_list()._getvalue() - print self.server_list + logger.log(logging.DEBUG, self.server_list) return self.server_list