diff --git a/config b/config index aaadc03..90c2e82 100644 --- a/config +++ b/config @@ -65,4 +65,6 @@ folder = ~/.config/radicale/calendars # http://docs.python.org/library/logging.config.html config = /etc/radicale/logging # Set the default logging level to debug -debug = False \ No newline at end of file +debug = False +# Store all environment variables (including those set in the shell) +full_environment = False diff --git a/radicale/__init__.py b/radicale/__init__.py index e0a75c9..9306443 100644 --- a/radicale/__init__.py +++ b/radicale/__init__.py @@ -30,6 +30,7 @@ should have been included in this package. import os import posixpath +import pprint import base64 import socket import ssl @@ -100,6 +101,16 @@ class Application(object): super(Application, self).__init__() self.acl = acl.load() self.encoding = config.get("encoding", "request") + if config.getboolean('logging', 'full_environment'): + self.headers_log = lambda environ: environ + + def headers_log(self, environ): + request_environ = dict(environ) + for shell_variable in os.environ: + #if shell_variable not in request_environ: + # continue + del request_environ[shell_variable] + return request_environ def decode(self, text, environ): """Try to magically decode ``text`` according to given ``environ``.""" @@ -128,7 +139,8 @@ class Application(object): """Manage a request.""" log.LOGGER.info("%s request at %s received" % ( environ["REQUEST_METHOD"], environ["PATH_INFO"])) - log.LOGGER.debug("Request headers:\n%s" % environ.items()) + headers = pprint.pformat(self.headers_log(environ)) + log.LOGGER.debug("Request headers:\n%s" % headers) # Get content content_length = int(environ.get("CONTENT_LENGTH") or 0) @@ -296,7 +308,8 @@ class Application(object): def report(self, environ, calendar, content): """Manage REPORT request.""" + headers = {'Content-Type': 'text/xml'} answer = xmlutils.report(environ["PATH_INFO"], content, calendar) - return client.MULTI_STATUS, {}, answer + return client.MULTI_STATUS, headers, answer # pylint: enable=W0612,W0613,R0201 diff --git a/radicale/xmlutils.py b/radicale/xmlutils.py index ceb2a8f..3c1d25a 100644 --- a/radicale/xmlutils.py +++ b/radicale/xmlutils.py @@ -35,10 +35,14 @@ from radicale import client, config, ical NAMESPACES = { "C": "urn:ietf:params:xml:ns:caldav", "D": "DAV:", - "CS": "http://calendarserver.org/ns/"} + "CS": "http://calendarserver.org/ns/", + "ICAL": "http://apple.com/ns/ical/", +} for short, url in NAMESPACES.items(): + if short == "D": + short = "" ET._namespace_map[url] = short