LP#1409055 Support specific protocols for OpenSRF gateway requests
authorDan Scott <dscott@laurentian.ca>
Thu, 18 Jun 2015 15:52:00 +0000 (11:52 -0400)
committerBill Erickson <berickxx@gmail.com>
Thu, 18 Jun 2015 17:21:26 +0000 (13:21 -0400)
If the user passes in a gateway hostname that contains a specific HTTP or HTTPS
protocol, let's just use that.

Signed-off-by: Dan Scott <dscott@laurentian.ca>
Signed-off-by: Bill Erickson <berickxx@gmail.com>

src/python/osrf/gateway.py

index eda1139..8796ce2 100644 (file)
@@ -50,6 +50,18 @@ class GatewayRequest:
     setDefaultHost = staticmethod(setDefaultHost)
 
     def buildURL(self):
+        """
+        Builds the URL for the OpenSRF gateway based on the host and path
+
+        Previous versions of the code assumed that the host would be a bare
+        hostname or IP address, and prepended the http:// protocol. However,
+        to enable more secure communications, now we check for the existence
+        of the HTTP or HTTPS prefix and use that if it has been supplied.
+        """
+
+        if defaultHost.lower().startswith(('http://', 'https://')):
+            return '%s/%s' % (defaultHost, self.path)
+
         return 'http://%s/%s' % (defaultHost, self.path)
 
 class JSONGatewayRequest(GatewayRequest):