Exemplo n.º 1
0
    def test_get_temp_key_post_account_exception(self, mock_get_account,
                                                 mock_post_account):
        mock_get_account.return_value = [{}]
        mock_post_account.side_effect = client.ClientException('')

        computed_key = utils.get_temp_key('http://fakeurl', 'faketoken', False)

        self.assertIsNone(computed_key)
Exemplo n.º 2
0
    def test_get_temp_key_get_account_no_key_retrieved_on_get_account(
            self, mock_get_account, mock_post_account):
        mock_get_account.return_value = [{}]
        retrieved_key = utils.get_temp_key('http://fakeurl', 'faketoken',
                                           False)

        name, args, kargs = mock_post_account.mock_calls[0]
        computed_key = kargs['headers']['x-account-meta-temp-url-key']

        self.assertEqual(retrieved_key, computed_key)
Exemplo n.º 3
0
    def test_get_temp_key(self, mock_get_account):
        expected_key = 'asgdia7239rgahsjbfhsd'
        mock_get_account.return_value = [{
            'x-account-meta-temp-url-key':
            expected_key
        }]

        computed_key = utils.get_temp_key('http://fakeurl', 'faketoken', False)

        self.assertEqual(expected_key, computed_key)
Exemplo n.º 4
0
def upload(request, container, prefix=None):
    """ Display upload form using swift formpost """

    storage_url = request.session.get('storage_url', '')
    auth_token = request.session.get('auth_token', '')

    redirect_url = get_base_url(request)
    redirect_url += reverse('objectview', kwargs={
        'container': container,
    })

    swift_url = storage_url + '/' + container + '/'
    if prefix:
        swift_url += prefix
        redirect_url += prefix

    url_parts = urlparse(swift_url)
    path = url_parts.path

    max_file_size = 5 * 1024 * 1024 * 1024
    max_file_count = 1
    expires = int(time.time() + 15 * 60)
    key = get_temp_key(storage_url, auth_token)
    if not key:
        messages.add_message(request, messages.ERROR, _("Access denied."))
        if prefix:
            return redirect(objectview, container=container, prefix=prefix)
        else:
            return redirect(objectview, container=container)

    hmac_body = '%s\n%s\n%s\n%s\n%s' % (path, redirect_url, max_file_size,
                                        max_file_count, expires)
    signature = hmac.new(bytes(key, "utf-8"), bytes(hmac_body, "utf-8"),
                         sha1).hexdigest()

    prefixes = prefix_list(prefix)

    return render(
        request, 'upload_form.html', {
            'swift_url': swift_url,
            'redirect_url': redirect_url,
            'max_file_size': max_file_size,
            'max_file_count': max_file_count,
            'expires': expires,
            'signature': signature,
            'container': container,
            'prefix': prefix,
            'prefixes': prefixes
        })
Exemplo n.º 5
0
def upload(request, container, prefix=None):
    """ Display upload form using swift formpost """

    storage_url = request.session.get('storage_url', '')
    auth_token = request.session.get('auth_token', '')

    redirect_url = get_base_url(request)
    redirect_url += reverse('objectview', kwargs={'container': container, })

    swift_url = storage_url + '/' + container + '/'
    if prefix:
        swift_url += prefix
        redirect_url += prefix

    url_parts = urlparse.urlparse(swift_url)
    path = url_parts.path

    max_file_size = 5 * 1024 * 1024 * 1024
    max_file_count = 1
    expires = int(time.time() + 15 * 60)
    key = get_temp_key(storage_url, auth_token)
    if not key:
        messages.add_message(request, messages.ERROR, _("Access denied."))
        if prefix:
            return redirect(objectview, container=container, prefix=prefix)
        else:
            return redirect(objectview, container=container)

    hmac_body = '%s\n%s\n%s\n%s\n%s' % (
        path, redirect_url, max_file_size, max_file_count, expires)
    signature = hmac.new(str(key), str(hmac_body), sha1).hexdigest()

    prefixes = prefix_list(prefix)

    return render_to_response('upload_form.html', {
                              'swift_url': swift_url,
                              'redirect_url': redirect_url,
                              'max_file_size': max_file_size,
                              'max_file_count': max_file_count,
                              'expires': expires,
                              'signature': signature,
                              'container': container,
                              'prefix': prefix,
                              'prefixes': prefixes,
                              }, context_instance=RequestContext(request))
Exemplo n.º 6
0
def upload(request, container, prefix=None):
    """ Display upload form using swift formpost """

    storage_url = request.session.get('storage_url', '')
    auth_token = request.session.get('auth_token', '')

    #redirect_url = get_base_url(request)
    redirect_url = reverse('objectview', kwargs={
        'container': container,
    })

    swift_url = storage_url + '/' + container + '/'
    if prefix:
        swift_url += prefix
        redirect_url += prefix

    url_parts = urlparse.urlparse(swift_url)
    path = url_parts.path

    max_file_size = 5 * 1024 * 1024 * 1024
    max_file_count = 1
    expires = int(time.time() + 15 * 60)
    key = get_temp_key(storage_url, auth_token)
    if not key:
        messages.add_message(request, messages.ERROR, _("Access denied."))
        if prefix:
            return redirect(objectview, container=container, prefix=prefix)
        else:
            return redirect(objectview, container=container)

    hmac_body = '%s\n%s\n%s\n%s\n%s' % (path, redirect_url, max_file_size,
                                        max_file_count, expires)
    signature = hmac.new(str(key), str(hmac_body), sha1).hexdigest()

    prefixes = prefix_list(prefix)

    if request.method == 'POST':
        post_file = request.FILES.values().pop()
        if prefix:
            post_file_name = prefix + post_file.name
        else:
            post_file_name = post_file.name
        try:
            client.put_object(storage_url, auth_token, container,
                              post_file_name, post_file)
            if prefix:
                return redirect(objectview, container=container, prefix=prefix)
            else:
                return redirect(objectview, container=container)
        except client.ClientException:
            traceback.print_exc()
            messages.add_message(request, messages.ERROR, _("Access denied."))

    return render_to_response('upload_form.html', {
        'swift_url': swift_url,
        'redirect_url': redirect_url,
        'max_file_size': max_file_size,
        'max_file_count': max_file_count,
        'expires': expires,
        'signature': signature,
        'container': container,
        'prefix': prefix,
        'prefixes': prefixes,
    },
                              context_instance=RequestContext(request))