[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