Cyberduck Mountain Duck CLI

#7428 closed defect (fixed)

S3 first request against root path instead of defined path

Reported by: din Owned by: dkocher
Priority: normal Milestone: 4.4
Component: s3 Version: 4.3.1
Severity: minor Keywords:
Cc: Architecture: Intel
Platform: Windows 7

Description

Hi,

I am using cyberduck to connect swift openstack with S3 compatibility (S3 connection). I have user in my account who has access only to specific contener and when I want to specify this contener in path in connection configuration, request are still made against root path:

Connection failed

[Content]
Request Error [<?xml version="1.0" encoding="UTF-8"?>
<Error>
  <Code>InvalidURI</Code>
  <Message>Could not parse the specified URI</Message>
</Error>
].

[Expanded Information]
GET / HTTP/1.1
Date: Wed, 04 Sep 2013 08:38:20 GMT
Authorization: AWS TestUser1234:user2:7eiwZgogQZHIH15ezrePKA/taKA=
Host: swift.example.com:443
Connection: Keep-Alive
User-Agent: Cyberduck/4.3.1 (11008) (Windows 7/6.1) (x86)
HTTP/1.1 400 Bad Request
Content-Type: text/xml; charset=UTF-8
Content-Length: 142
X-Trans-Id: tx19ff67fdd6324b2092f5a63f316bd20f
Date: Wed, 04 Sep 2013 08:38:24 GMT
Connection: keep-alive

This error appears because this user does not have permission to list all containers ("GET /"). This is example of what I want to achieve using s3curl:

./s3curl.pl --id 'TestUser1234:user2' --key '12345' --get -- -v -s http:/swift.example.com/write
> GET /write HTTP/1.1
> User-Agent: curl/7.22.0 (x86_64-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3
> Host: swift.example.com
> Accept: */*
> Date: Wed, 04 Sep 2013 09:27:59 +0000
> Authorization: AWS TestUser1234:user2:MMx5w6QnXMznzYorsR/v59UWbd0=
> 
< HTTP/1.1 200 OK
< Content-Type: application/xml; charset=UTF-8
< Content-Length: 634
< X-Trans-Id: txf872775ac3a141e490367e1281edde9d
< Date: Wed, 04 Sep 2013 09:27:59 GMT

and a I get the same error like in cyberduck when try get root path:

./s3curl.pl --id 'TestUser1234:user2' --key '12345' --get -- -v -s http://swift.example.com
> GET / HTTP/1.1
> User-Agent: curl/7.22.0 (x86_64-pc-linux-gnu) libcurl/7.22.0 OpenSSL/1.0.1 zlib/1.2.3.4 libidn/1.23 librtmp/2.3
> Host: swift.example.com
> Accept: */*
> Date: Wed, 04 Sep 2013 09:32:42 +0000
> Authorization: AWS TestUser1234:user2:+73L0pJhqXJSrF1le9POcjY594U=
> 
< HTTP/1.1 400 Bad Request
< Content-Type: text/xml; charset=UTF-8
< Content-Length: 142
< X-Trans-Id: tx782b945df6884d27ad3df0743148b7f7
< Date: Wed, 04 Sep 2013 09:32:42 GMT
< 
<?xml version="1.0" encoding="UTF-8"?>
<Error>
  <Code>InvalidURI</Code>
  <Message>Could not parse the specified URI</Message>
</Error>

when using user who has access to root path (admin in swift) cyberduck display content of container defined in path configuration.

Change History (2)

comment:1 Changed on Sep 4, 2013 at 9:08:41 PM by dkocher

  • Status changed from new to assigned

comment:2 Changed on Sep 5, 2013 at 8:51:20 PM by dkocher

  • Resolution set to fixed
  • Status changed from assigned to closed

In r12701.

Note: See TracTickets for help on using tickets.
swiss made software