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 += "| Game ID | # Players | "
- 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 += "| " + game + " | "
- output += "%d | " % (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 += "
"
+ output = json.dumps(server_list)
- output += "
"
- output += "Last updated: %s
" % (self.stats.get_last_update_time())
- output += ""
+ else:
+ output = ""
+ output += ""
+ output += ""
+ output += "| Game ID | # Players | "
+ output += "
"
+
+ if server_list != None:
+ for game in server_list:
+ if not server_list[game]:
+ continue
+
+ output += ""
+ output += "| " + game + " | "
+ output += "%d | " % (len(server_list[game]))
+ output += "
"
+
+ output += "
"
+
+ 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