From 350f10bf3be9ce6c9eec4b3046afc9a05cf08454 Mon Sep 17 00:00:00 2001 From: Christian Schwede Date: Thu, 28 Jul 2016 08:32:17 +0000 Subject: [PATCH] Deprecate swift-temp-url python-swiftclient includes an improved and tested method to generate tempurls. The command syntax is essentially the same, therefore we can deprecate this one by importing that method. python-swiftclient is not added as a requirement; if the import fails due to a missing swiftclient module it will just raise a deprecation warning. Closes-Bug: #1607523 Closes-Bug: #1607519 Change-Id: Ifa8bf636f20f82db4845b02d1b58699edaa39356 --- bin/swift-temp-url | 65 +++++++--------------------------------------- 1 file changed, 10 insertions(+), 55 deletions(-) diff --git a/bin/swift-temp-url b/bin/swift-temp-url index 09b042fede..6420597f72 100755 --- a/bin/swift-temp-url +++ b/bin/swift-temp-url @@ -13,64 +13,19 @@ # limitations under the License. from __future__ import print_function -import hmac -from hashlib import sha1 -from os.path import basename +from gettext import gettext as _ from sys import argv, exit, stderr -from time import time - -from six.moves import urllib if __name__ == '__main__': - if len(argv) < 5: - prog = basename(argv[0]) - print('Syntax: %s ' % prog) - print() - print('Where:') - print(' The method to allow; GET for example.') - print(' The number of seconds from now to allow requests.') - print(' The full path to the resource.') - print(' Example: /v1/AUTH_account/c/o') - print(' The X-Account-Meta-Temp-URL-Key for the account.') - print() - print('Example output:') - print(' /v1/AUTH_account/c/o?temp_url_sig=34d49efc32fe6e3082e411e' - 'eeb85bd8a&temp_url_expires=1323482948') - print() - print('This can be used to form a URL to give out for the access ') - print('allowed. For example:') - print(' echo \\"https://swift-cluster.example.com`%s GET 60 ' - '/v1/AUTH_account/c/o mykey`\\"' % prog) - print() - print('Might output:') - print(' "https://swift-cluster.example.com/v1/AUTH_account/c/o?' - 'temp_url_sig=34d49efc32fe6e3082e411eeeb85bd8a&' - 'temp_url_expires=1323482948"') - exit(1) - method, seconds, path, key = argv[1:5] + argv[0:1] = ['swift', 'tempurl'] + print("", file=stderr) + print(_("NOTE: This command is deprecated and will be removed " + "in the future. Please use 'swift tempurl' instead."), file=stderr) + print("", file=stderr) try: - expires = int(time() + int(seconds)) - except ValueError: - expires = 0 - if expires < 1: - print('Please use a positive value.') + from swiftclient.shell import main + except ImportError: + print(_("ERROR: python-swiftclient not installed."), file=stderr) exit(1) - parts = path.split('/', 4) - # Must be five parts, ['', 'v1', 'a', 'c', 'o'], must be a v1 request, have - # account, container, and object values, and the object value can't just - # have '/'s. - if len(parts) != 5 or parts[0] or parts[1] != 'v1' or not parts[2] or \ - not parts[3] or not parts[4].strip('/'): - stderr.write( - 'WARNING: "%s" does not refer to an object ' - '(e.g. /v1/account/container/object).\n' % path) - stderr.write( - 'WARNING: Non-object paths will be rejected by tempurl.\n') - if '--quoted' in argv[5:]: - real_path = urllib.parse.unquote(path) - else: - real_path = path - sig = hmac.new(key, '%s\n%s\n%s' % (method, expires, real_path), - sha1).hexdigest() - print('%s?temp_url_sig=%s&temp_url_expires=%s' % (path, sig, expires)) + exit(main(argv))