From e68413a752090628b77df9734fa343fa2b3cfd54 Mon Sep 17 00:00:00 2001 From: Hans-Christoph Steiner Date: Thu, 5 Jun 2014 16:21:12 -0400 Subject: [PATCH] server: specify an identity file for SSH when rsyncing This allows the SSH key used to sync with the server to be specified via the config.py or the command line. I need it for running automated tests and setups. --- completion/bash-completion | 4 ++-- examples/config.py | 3 +++ fdroidserver/server.py | 6 ++++++ 3 files changed, 11 insertions(+), 2 deletions(-) diff --git a/completion/bash-completion b/completion/bash-completion index 5916c669..42be8de3 100644 --- a/completion/bash-completion +++ b/completion/bash-completion @@ -247,8 +247,8 @@ __complete_stats() { } __complete_server() { - opts="-h -v -q" - lopts="--help --verbose --quiet update" + opts="-h -i -v -q" + lopts="--help --identity-file --verbose --quiet update" __complete_options } diff --git a/examples/config.py b/examples/config.py index 501a4f1e..df1ec79b 100644 --- a/examples/config.py +++ b/examples/config.py @@ -105,6 +105,9 @@ keyaliases['com.example.another.plugin'] = '@com.example.another' # sub-directories (i.e. /var/www/packagerepos/fdroid). # serverwebroot = 'user@example:/var/www/fdroid' +# optionally specific which identity file to use when using rsync over SSH +# identity_file = '~/.ssh/fdroid_id_rsa' + # To upload the repo to an Amazon S3 bucket using `fdroid server update`. # Warning, this deletes and recreates the whole fdroid/ directory each # time. This is based on apache-libcloud, which supports basically all cloud diff --git a/fdroidserver/server.py b/fdroidserver/server.py index 833a88e0..0d5874ec 100644 --- a/fdroidserver/server.py +++ b/fdroidserver/server.py @@ -121,6 +121,10 @@ def update_serverwebroot(repo_section): rsyncargs += ['--verbose'] if options.quiet: rsyncargs += ['--quiet'] + if options.identity_file is not None: + rsyncargs += ['-e', 'ssh -i ' + options.identity_file] + if 'identity_file' in config: + rsyncargs += ['-e', 'ssh -i ' + config['identity_file']] indexxml = os.path.join(repo_section, 'index.xml') indexjar = os.path.join(repo_section, 'index.jar') # serverwebroot is guaranteed to have a trailing slash in common.py @@ -142,6 +146,8 @@ def main(): # Parse command line... parser = OptionParser() + parser.add_option("-i", "--identity-file", default=None, + help="Specify an identity file to provide to SSH for rsyncing") parser.add_option("-v", "--verbose", action="store_true", default=False, help="Spew out even more information than normal") parser.add_option("-q", "--quiet", action="store_true", default=False, -- 2.30.2