summaryrefslogtreecommitdiffstats
path: root/apps/patchwork/bin/pwclient
diff options
context:
space:
mode:
authorJeremy Kerr <jk@ozlabs.org>2010-03-19 15:20:47 +0800
committerJeremy Kerr <jk@ozlabs.org>2010-03-19 15:47:48 +0800
commitd9552d03e981f1164856fc57e43dde9bdb1bf3d9 (patch)
treefa1afbed7b791bcdfe8e159f7966941498f19125 /apps/patchwork/bin/pwclient
parentd5edf740c9c2c31fa60c757aa8d66e1dedbab74a (diff)
downloadpatchwork-d9552d03e981f1164856fc57e43dde9bdb1bf3d9.tar.bz2
patchwork-d9552d03e981f1164856fc57e43dde9bdb1bf3d9.tar.xz
pwclient: allow authenticated https connections
If the xmlrpc server is using HTTPS, we need to adapt our custom transport to use SafeTransport.make_connection Signed-off-by: Jeremy Kerr <jk@ozlabs.org> Tested-by: Paul Mundt <lethal@linux-sh.org>
Diffstat (limited to 'apps/patchwork/bin/pwclient')
-rwxr-xr-xapps/patchwork/bin/pwclient19
1 files changed, 15 insertions, 4 deletions
diff --git a/apps/patchwork/bin/pwclient b/apps/patchwork/bin/pwclient
index b480408..dc836e9 100755
--- a/apps/patchwork/bin/pwclient
+++ b/apps/patchwork/bin/pwclient
@@ -79,12 +79,13 @@ class Filter:
"""Return human-readable description of the filter."""
return str(self.d)
-class BasicHTTPAuthTransport(xmlrpclib.Transport):
+class BasicHTTPAuthTransport(xmlrpclib.SafeTransport):
- def __init__(self, username = None, password = None):
+ def __init__(self, username = None, password = None, use_https = False):
self.username = username
self.password = password
- xmlrpclib.Transport.__init__(self)
+ self.use_https = use_https
+ xmlrpclib.SafeTransport.__init__(self)
def authenticated(self):
return self.username != None and self.password != None
@@ -97,6 +98,13 @@ class BasicHTTPAuthTransport(xmlrpclib.Transport):
auth = 'Basic ' + base64.encodestring(credentials).strip()
connection.putheader('Authorization', auth)
+ def make_connection(self, host):
+ if self.use_https:
+ fn = xmlrpclib.SafeTransport.make_connection
+ else:
+ fn = xmlrpclib.Transport.make_connection
+ return fn(self, host)
+
def usage():
sys.stderr.write("Usage: %s <action> [options]\n\n" % \
(os.path.basename(sys.argv[0])))
@@ -365,9 +373,12 @@ def main():
if config.has_option('auth', 'username') and \
config.has_option('auth', 'password'):
+ use_https = url.startswith('https')
+
transport = BasicHTTPAuthTransport( \
config.get('auth', 'username'),
- config.get('auth', 'password'))
+ config.get('auth', 'password'),
+ use_https)
else:
sys.stderr.write(("The %s action requires authentication, "