[CalendarServer-changes] [4884] CalendarServer/branches/users/cdaboo/partition-4464

source_changes at macosforge.org source_changes at macosforge.org
Mon Dec 21 09:25:42 PST 2009


Revision: 4884
          http://trac.macosforge.org/projects/calendarserver/changeset/4884
Author:   cdaboo at apple.com
Date:     2009-12-21 09:25:39 -0800 (Mon, 21 Dec 2009)
Log Message:
-----------
Make digest work with partitioning.

Modified Paths:
--------------
    CalendarServer/branches/users/cdaboo/partition-4464/calendarserver/provision/root.py
    CalendarServer/branches/users/cdaboo/partition-4464/twistedcaldav/client/reverseproxy.py
    CalendarServer/branches/users/cdaboo/partition-4464/twistedcaldav/directory/digest.py

Modified: CalendarServer/branches/users/cdaboo/partition-4464/calendarserver/provision/root.py
===================================================================
--- CalendarServer/branches/users/cdaboo/partition-4464/calendarserver/provision/root.py	2009-12-18 19:28:31 UTC (rev 4883)
+++ CalendarServer/branches/users/cdaboo/partition-4464/calendarserver/provision/root.py	2009-12-21 17:25:39 UTC (rev 4884)
@@ -245,6 +245,15 @@
                             "Your client software (%s) is not allowed to access this service." % (agent,)
                         ))
 
+        # Look for forwarding
+        if config.Partitioning.Enabled:
+            remote_ip = request.headers.getRawHeaders('x-forwarded-for')
+            if remote_ip and len(remote_ip) == 1:
+                request.forwarded_for = remote_ip[0]
+                if not hasattr(request, "extendedLogItems"):
+                    request.extendedLogItems = {}
+                request.extendedLogItems["xff"] = remote_ip[0]
+
         if request.method == "PROPFIND" and not getattr(request, "notInCache", False) and len(segments) > 1:
             try:
                 authnUser, authzUser = (yield self.authenticate(request))

Modified: CalendarServer/branches/users/cdaboo/partition-4464/twistedcaldav/client/reverseproxy.py
===================================================================
--- CalendarServer/branches/users/cdaboo/partition-4464/twistedcaldav/client/reverseproxy.py	2009-12-18 19:28:31 UTC (rev 4883)
+++ CalendarServer/branches/users/cdaboo/partition-4464/twistedcaldav/client/reverseproxy.py	2009-12-21 17:25:39 UTC (rev 4884)
@@ -24,6 +24,7 @@
 from twisted.web2.resource import LeafResource
 
 from twistedcaldav.client.pool import getHTTPClientPool
+from twistedcaldav.config import config
 from twistedcaldav.log import LoggingMixIn
 
 import urllib
@@ -65,4 +66,11 @@
         self.logger.info("%s %s %s" % (request.method, urllib.unquote(request.uri), "HTTP/%s.%s" % request.clientproto))
         clientPool = getHTTPClientPool(self.poolID)
         proxyRequest = ClientRequest(request.method, request.uri, request.headers, request.stream)
+        
+        # Need x-forwarded-(for|host) headers. First strip any existing ones out, then add ours
+        proxyRequest.headers.removeHeader("x-forwarded-host")
+        proxyRequest.headers.removeHeader("x-forwarded-for")
+        proxyRequest.headers.addRawHeader("x-forwarded-host", config.ServerHostName)
+        proxyRequest.headers.addRawHeader("x-forwarded-for", request.remoteAddr.host)
+
         return clientPool.submitRequest(proxyRequest)

Modified: CalendarServer/branches/users/cdaboo/partition-4464/twistedcaldav/directory/digest.py
===================================================================
--- CalendarServer/branches/users/cdaboo/partition-4464/twistedcaldav/directory/digest.py	2009-12-18 19:28:31 UTC (rev 4883)
+++ CalendarServer/branches/users/cdaboo/partition-4464/twistedcaldav/directory/digest.py	2009-12-21 17:25:39 UTC (rev 4884)
@@ -163,7 +163,7 @@
             raise AssertionError("nonce value already cached in credentials database: %s" % (c,))
 
         # The database record is a tuple of (client ip, nonce-count, timestamp)
-        yield self.db.set(c, (peer.host, 0, time.time()))
+        yield self.db.set(c, (str(peer.host), 0, time.time()))
 
         challenge = {
             'nonce': c,
@@ -262,7 +262,7 @@
         """
 
         nonce = auth.get('nonce')
-        clientip = request.remoteAddr.host
+        clientip = request.forwarded_for if hasattr(request, "forwarded_for") else str(request.remoteAddr.host)
         nonce_count = auth.get('nc')
 
         # First check we have this nonce
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20091221/1ac49145/attachment.html>


More information about the calendarserver-changes mailing list