Turn off http request logging unless settings.DEBUG is set. Relates to #983.

This commit is contained in:
Griatch 2016-06-15 23:08:42 +02:00
parent 86096c3c74
commit 58a771f85c
2 changed files with 19 additions and 7 deletions

View file

@ -13,7 +13,7 @@ import time
import sys import sys
import os import os
from twisted.web import server, static from twisted.web import static
from twisted.application import internet, service from twisted.application import internet, service
from twisted.internet import reactor, defer from twisted.internet import reactor, defer
from twisted.internet.task import LoopingCall from twisted.internet.task import LoopingCall
@ -506,7 +506,7 @@ if WEBSERVER_ENABLED:
# Start a django-compatible webserver. # Start a django-compatible webserver.
from twisted.python import threadpool 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 # start a thread pool and define the root url (/) as a wsgi resource
# recognized by Django # recognized by Django
@ -522,7 +522,7 @@ if WEBSERVER_ENABLED:
# custom overloads # custom overloads
web_root = WEB_PLUGINS_MODULE.at_webserver_root_creation(web_root) 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: for proxyport, serverport in WEBSERVER_PORTS:
# create the webserver (we only need the port for this) # create the webserver (we only need the port for this)

View file

@ -13,7 +13,7 @@ a great example/aid on how to do this.)
""" """
import urlparse import urlparse
from urllib import quote as urlquote 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.internet import reactor
from twisted.application import internet from twisted.application import internet
from twisted.web.proxy import ReverseProxyResource from twisted.web.proxy import ReverseProxyResource
@ -23,8 +23,8 @@ from twisted.web.wsgi import WSGIResource
from django.conf import settings from django.conf import settings
from django.core.handlers.wsgi import WSGIHandler from django.core.handlers.wsgi import WSGIHandler
UPSTREAM_IPS = settings.UPSTREAM_IPS _UPSTREAM_IPS = settings.UPSTREAM_IPS
_DEBUG = settings.DEBUG
# #
# X-Forwarded-For Handler # X-Forwarded-For Handler
@ -45,7 +45,7 @@ class HTTPChannelWithXForwardedFor(http.HTTPChannel):
req = self.requests[-1] req = self.requests[-1]
client_ip, port = self.transport.client client_ip, port = self.transport.client
proxy_chain = req.getHeader('X-FORWARDED-FOR') 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] forwarded = proxy_chain.split(', ', 1)[CLIENT]
self.transport.client = (forwarded, port) self.transport.client = (forwarded, port)
@ -136,6 +136,18 @@ class DjangoWebRoot(resource.Resource):
request.postpath.insert(0, path0) request.postpath.insert(0, path0)
return self.wsgi_resource 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 # Threaded Webserver