Esempio n. 1
0
def sign_request_v4(access_key,
                    secret_key,
                    method,
                    host,
                    canonical_uri,
                    region,
                    service='ecs',
                    params=None,
                    body=b''):
    if not canonical_uri.endswith('/'):
        canonical_uri += '/'

    t = datetime.datetime.utcnow()
    sdkdate = t.strftime('%Y%m%dT%H%M%SZ')
    datestamp = t.strftime('%Y%m%d')

    signing_key = _getSignatureKey(secret_key, datestamp, region, service)

    canonical_uri = _uri_encode(canonical_uri,
                                quote_backslashes=False,
                                unicode_output=True)
    canonical_querystring = _format_param_str(
        params, always_have_equal=True).lstrip('?')

    payload_hash = convert_to_unicode(
        sha256(convert_to_string(body)).hexdigest())

    canonical_headers = {'host': host, 'x-sdk-date': sdkdate}
    signed_headers = 'host;x-sdk-date'

    canonical_headers_str = ''
    for k, v in sorted(canonical_headers.items()):
        canonical_headers_str += k + ":" + v + "\n"

    canonical_headers = canonical_headers_str
    signed_headers = ';'.join(sorted(signed_headers.split(';')))

    canonical_request = method + '\n' + canonical_uri + '\n' + canonical_querystring + '\n' + canonical_headers + '\n' + signed_headers + '\n' + payload_hash

    algorithm = 'SDK-HMAC-SHA256'
    credential_scope = datestamp + '/' + region + '/' + service + '/' + 'sdk_request'
    string_to_sign = algorithm + '\n' + sdkdate + '\n' + credential_scope + '\n' + convert_to_unicode(
        sha256(convert_to_string(canonical_request)).hexdigest())

    signature = convert_to_unicode(
        hmac.new(signing_key, convert_to_string(string_to_sign),
                 sha256).hexdigest())
    authorization_header = algorithm + ' ' + 'Credential=' + access_key + '/' + credential_scope + ', ' + 'SignedHeaders=' + signed_headers + ', ' + 'Signature=' + signature
    new_headers = {
        'X-Sdk-Date': sdkdate,
        'Authorization': authorization_header,
        'Host': host
    }
    return new_headers
Esempio n. 2
0
def main():
    utils.check_login_user()

    # parse input option
    argv = [encode.convert_to_unicode(a) for a in sys.argv[1:]]
    args = get_parser().parse_args(argv)

    # read and check args
    kwargs = {}
    if args.name is not None:
        kwargs['name'] = args.name
    if args.metadata is not None:
        kwargs['metadata'] = args.metadata
    if args.description is not None:
        kwargs['description'] = args.description
    if args.file_name is not None:
        kwargs['file_name'] = args.file_name
    if args.fpga_image_id is not None:
        kwargs['fpga_image_id'] = args.fpga_image_id
    if args.image_id is not None:
        kwargs['image_id'] = args.image_id
    if args.page is not None:
        kwargs['page'] = args.page
    if args.size is not None:
        kwargs['size'] = args.size
    try:
        utils.check_param(**kwargs)
    except Exception as e:
        utils.exit('Error: %s' % encode.exception_to_unicode(e))

    # read and check config file
    config.read_config_and_verify()
    access_key = os.getenv('OS_ACCESS_KEY')
    secret_key = os.getenv('OS_SECRET_KEY')
    bucket_name = os.getenv('OS_BUCKET_NAME')
    region_id = os.getenv('OS_REGION_ID')
    domain_id = os.getenv('OS_DOMAIN_ID')
    project_id = os.getenv('OS_PROJECT_ID')
    obs_endpoint = os.getenv('OS_OBS_ENDPOINT')
    vpc_endpoint = os.getenv('OS_VPC_ENDPOINT')
    fis_endpoint = os.getenv('OS_FIS_ENDPOINT')

    try:
        # configure intranet dns of ecs
        config.configure_intranet_dns_ecs(region_id)

        # check bucket
        utils._check_bucket_acl_location(bucket_name, access_key, secret_key,
                                         obs_endpoint, region_id, domain_id)
        # check fis
        rest.fpga_image_relation_list(access_key, secret_key, project_id,
                                      region_id, fis_endpoint)
    except Exception as e:
        utils.exit('Error: %s' % encode.exception_to_unicode(e))

    if kwargs:
        print('fis argument(s) and config file are OK')
    else:
        print('fis config file is OK')
Esempio n. 3
0
def getDictFromTree(tree):
    ret_dict = {}
    for child in tree.getchildren():
        if child.getchildren():
            content = getDictFromTree(child)
        elif child.text is not None:
            content = convert_to_unicode(child.text)
        else:
            content = None
        child_tag = convert_to_unicode(child.tag)
        if child_tag in ret_dict:
            if not isinstance(ret_dict[child_tag], list):
                ret_dict[child_tag] = [ret_dict[child_tag]]
            ret_dict[child_tag].append(content or "")
        else:
            ret_dict[child_tag] = content or ""
    return ret_dict
Esempio n. 4
0
def _uri_encode(param, quote_backslashes=True, unicode_output=False):
    if quote_backslashes:
        safe_chars = "~"
    else:
        safe_chars = "~/"
    param = convert_to_string(param)
    param = quote(param, safe=safe_chars)
    if unicode_output:
        param = convert_to_unicode(param)
    else:
        param = convert_to_string(param)
    return param
Esempio n. 5
0
def main():
    parser = get_parser()
    if len(sys.argv) <= 1:
        parser.print_help()
        return

    argv = [encode.convert_to_unicode(a) for a in sys.argv[1:]]
    args = parser.parse_args(argv)
    if args.subcmd.startswith('fpga-image'):
        config.read_config_and_verify()
    elif args.subcmd == 'help':
        args.subcommands = subcommands
        args.parser = parser
    try:
        args.func(args)
    except Exception as e:
        utils.exit('Error: %s' % encode.exception_to_unicode(e))
Esempio n. 6
0
def print_err(msg):
    print(encode.convert_to_unicode(msg), file=sys.stderr)
Esempio n. 7
0
 def __str__(self):
     return convert_to_unicode(self.message)