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)
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
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
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):
"""