From 58a771f85ceb3f452861f71a93ab98f3771b618e Mon Sep 17 00:00:00 2001 From: Griatch Date: Wed, 15 Jun 2016 23:08:42 +0200 Subject: [PATCH] Turn off http request logging unless settings.DEBUG is set. Relates to #983. --- evennia/server/server.py | 6 +++--- evennia/server/webserver.py | 20 ++++++++++++++++---- 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/evennia/server/server.py b/evennia/server/server.py index 7ddb5ccfc..8285aaed6 100644 --- a/evennia/server/server.py +++ b/evennia/server/server.py @@ -13,7 +13,7 @@ import time import sys import os -from twisted.web import server, static +from twisted.web import static from twisted.application import internet, service from twisted.internet import reactor, defer from twisted.internet.task import LoopingCall @@ -506,7 +506,7 @@ if WEBSERVER_ENABLED: # Start a django-compatible webserver. from twisted.python import threadpool - from evennia.server.webserver import DjangoWebRoot, WSGIWebServer + from evennia.server.webserver import DjangoWebRoot, WSGIWebServer, NonLoggingSite # start a thread pool and define the root url (/) as a wsgi resource # recognized by Django @@ -522,7 +522,7 @@ if WEBSERVER_ENABLED: # custom overloads web_root = WEB_PLUGINS_MODULE.at_webserver_root_creation(web_root) - web_site = server.Site(web_root, logPath=settings.HTTP_LOG_FILE) + web_site = NonLoggingSite(web_root, logPath=settings.HTTP_LOG_FILE) for proxyport, serverport in WEBSERVER_PORTS: # create the webserver (we only need the port for this) diff --git a/evennia/server/webserver.py b/evennia/server/webserver.py index ac19e0a0f..b60f7565a 100644 --- a/evennia/server/webserver.py +++ b/evennia/server/webserver.py @@ -13,7 +13,7 @@ a great example/aid on how to do this.) """ import urlparse from urllib import quote as urlquote -from twisted.web import resource, http +from twisted.web import resource, http, server from twisted.internet import reactor from twisted.application import internet from twisted.web.proxy import ReverseProxyResource @@ -23,8 +23,8 @@ from twisted.web.wsgi import WSGIResource from django.conf import settings from django.core.handlers.wsgi import WSGIHandler -UPSTREAM_IPS = settings.UPSTREAM_IPS - +_UPSTREAM_IPS = settings.UPSTREAM_IPS +_DEBUG = settings.DEBUG # # X-Forwarded-For Handler @@ -45,7 +45,7 @@ class HTTPChannelWithXForwardedFor(http.HTTPChannel): req = self.requests[-1] client_ip, port = self.transport.client proxy_chain = req.getHeader('X-FORWARDED-FOR') - if proxy_chain and client_ip in UPSTREAM_IPS: + if proxy_chain and client_ip in _UPSTREAM_IPS: forwarded = proxy_chain.split(', ', 1)[CLIENT] self.transport.client = (forwarded, port) @@ -136,6 +136,18 @@ class DjangoWebRoot(resource.Resource): request.postpath.insert(0, path0) return self.wsgi_resource +# +# Site with deactivateable logging +# + +class NonLoggingSite(server.Site): + """ + This class will only log http requests if settings.DEBUG is True. + """ + def log(self, request): + "Conditional logging" + if _DEBUG: + server.Site.log(self, request) # # Threaded Webserver