diff options
author | Daniil Baturin <daniil@baturin.org> | 2019-10-01 23:27:32 +0700 |
---|---|---|
committer | GitHub <noreply@github.com> | 2019-10-01 23:27:32 +0700 |
commit | 46895f5a527f610fa8f703d5e29c1fe5c7fe4438 (patch) | |
tree | a523dc507560ce3e8b139d244349c71cb54da451 /python/vyos/remote.py | |
parent | ab6d6ec47c8ea47b2ea05d62b72e2864d7895bd4 (diff) | |
parent | f26e8927f83c3a897d4f474762bca9775467e74e (diff) | |
download | vyos-1x-46895f5a527f610fa8f703d5e29c1fe5c7fe4438.tar.gz vyos-1x-46895f5a527f610fa8f703d5e29c1fe5c7fe4438.zip |
Merge pull request #144 from jestabro/rev-load-config
Rev load config
Diffstat (limited to 'python/vyos/remote.py')
-rw-r--r-- | python/vyos/remote.py | 26 |
1 files changed, 22 insertions, 4 deletions
diff --git a/python/vyos/remote.py b/python/vyos/remote.py index 49936ec08..f8a21f068 100644 --- a/python/vyos/remote.py +++ b/python/vyos/remote.py @@ -121,16 +121,34 @@ def get_remote_config(remote_file): if request['protocol'] in ('scp', 'sftp'): check_and_add_host_key(request['host']) + redirect_opt = '' + + if request['protocol'] in ('http', 'https'): + redirect_opt = '-L' + # Try header first, and look for 'OK' or 'Moved' codes: + curl_cmd = 'curl {0} -q -I {1}'.format(redirect_opt, remote_file) + try: + curl_output = subprocess.check_output(curl_cmd, shell=True, + universal_newlines=True) + except subprocess.CalledProcessError: + sys.exit(1) + + return_vals = re.findall(r'^HTTP\/\d+\.?\d\s+(\d+)\s+(.*)$', + curl_output, re.MULTILINE) + for val in return_vals: + if int(val[0]) not in [200, 301, 302]: + print('HTTP error: {0} {1}'.format(*val)) + sys.exit(1) + if request['user'] and not request['passwd']: curl_cmd = 'curl -# -u {0} {1}'.format(request['user'], remote_file) else: - curl_cmd = 'curl -# {0}'.format(remote_file) + curl_cmd = 'curl {0} -# {1}'.format(redirect_opt, remote_file) - config_file = None try: config_file = subprocess.check_output(curl_cmd, shell=True, universal_newlines=True) - except subprocess.CalledProcessError as err: - print("Called process error: {}.".format(err)) + except subprocess.CalledProcessError: + config_file = None return config_file |