From 69a40d3db55200f70bc0488114561f5b42198e22 Mon Sep 17 00:00:00 2001 From: Diane Trout Date: Tue, 23 Jun 2009 23:46:49 +0000 Subject: [PATCH] The url validation code wasn't working on python2.4 the problem where rpc exception are being eaten by something is getting really annoying. --- htsworkflow/automation/copier.py | 18 +++++++++++++----- test/test_copier.py | 6 +++++- 2 files changed, 18 insertions(+), 6 deletions(-) diff --git a/htsworkflow/automation/copier.py b/htsworkflow/automation/copier.py index 775e6c6..0f52694 100644 --- a/htsworkflow/automation/copier.py +++ b/htsworkflow/automation/copier.py @@ -220,6 +220,7 @@ class CopierBot(rpc.XmlRpcBot): start our copy """ # Note, args comes in over the network, so don't trust it. + logging.debug("Arguments to startCopy %s" % (unicode(args),)) copy_urls = [] for a in args: clean_url = self.validate_url(a) @@ -293,12 +294,19 @@ class CopierBot(rpc.XmlRpcBot): return reply def validate_url(self, url): - split_url = urlparse.urlsplit(url) + user_url = urlparse.urlsplit(url) + user_scheme = user_url[0] + user_netloc = user_url[1] + user_path = user_url[2] + for source in self.sources: - split_source = urlparse.urlsplit(source) - if (split_url.scheme == split_source.scheme) and \ - (split_url.netloc == split_source.netloc) and \ - (split_url.path.startswith(split_source.path)): + source_url = urlparse.urlsplit(source) + source_scheme = source_url[0] + source_netloc = source_url[1] + source_path = source_url[2] + if (user_scheme == source_scheme) and \ + (user_netloc == source_netloc) and \ + (user_path.startswith(source_path)): return url return None diff --git a/test/test_copier.py b/test/test_copier.py index da48340..3a0890f 100644 --- a/test/test_copier.py +++ b/test/test_copier.py @@ -24,7 +24,7 @@ jid: copier@example.fake password: badpassword authorized_users: user1@example.fake user2@example.fake rsync_password_file: ~/.sequencer -rsync_sources: rsync://localhost/tmp/sequencer_source +rsync_sources: rsync://localhost/tmp/sequencer_source rsync://user@server:1234/other_sequencer rsync_destination: /tmp/sequencer_destination notify_users: user3@example.fake # who to run to @@ -57,6 +57,10 @@ notify_users: user3@example.fake self.failUnlessEqual( c.validate_url('rsync://localhost/tmp/sequencer_source/bleem'), 'rsync://localhost/tmp/sequencer_source/bleem') + self.failUnlessEqual( + c.validate_url('rsync://user@server:1234/other_sequencer'), + 'rsync://user@server:1234/other_sequencer') + def test_dirlist_filter(self): """ -- 2.30.2