Skip to content
Merged
Show file tree
Hide file tree
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions S3/S3.py
Original file line number Diff line number Diff line change
Expand Up @@ -1224,6 +1224,14 @@ def set_policy(self, uri, policy):
response = self.send_request(request)
return response

def list_policy(self, uri):
headers = SortedDict(ignore_case = True)
headers['content-type'] = 'application/json'
request = self.create_request("BUCKET_LIST", uri = uri,
headers=headers, uri_params = {'policy': None})
response = self.send_request(request)
return response

def delete_policy(self, uri):
request = self.create_request("BUCKET_DELETE", uri = uri,
uri_params = {'policy': None})
Expand Down
37 changes: 37 additions & 0 deletions s3cmd
Original file line number Diff line number Diff line change
Expand Up @@ -2171,6 +2171,17 @@ def cmd_sync(args):
return cmd_sync_remote2remote(args)
raise ParameterError("Invalid source/destination: '%s'" % "' '".join(args))

def cmd_listacl(args):
cfg = Config()
s3 = S3(cfg)
if len(args) != 1:
raise ParameterError("Too few parameters! Expected: <bucket>")
if not S3Uri(args[0]).has_bucket():
raise ParameterError("Invalid bucket name: '%s'" % args[0])
uri = S3Uri(args[0])
acl = list_acl(s3, uri)
return acl
Comment thread
marsteg marked this conversation as resolved.
Outdated

def cmd_setacl(args):
cfg = Config()
s3 = S3(cfg)
Expand Down Expand Up @@ -2346,6 +2357,25 @@ def cmd_setpolicy(args):
output(u"%s: Policy updated" % uri)
return EX_OK

def cmd_listpolicy(args):
cfg = Config()
s3 = S3(cfg)
uri = S3Uri(args[0])

if len(args) != 1:
Comment thread
marsteg marked this conversation as resolved.
Outdated
raise ParameterError("Too few parameters! Expected: <bucket>")
if not uri.has_bucket():
Comment thread
marsteg marked this conversation as resolved.
Outdated
raise ParameterError("Invalid bucket name: '%s'" % args[0])
if uri.has_object():
raise ParameterError("No Object Names allowed: '%s'" % args[0])
Comment thread
marsteg marked this conversation as resolved.
Outdated

response = s3.list_policy(uri)

debug(u"response - %s" % response['status'])
if response['status'] == 200:
output(u"%s: Policy listed" % uri)
return EX_OK

def cmd_delpolicy(args):
cfg = Config()
s3 = S3(cfg)
Expand Down Expand Up @@ -2980,6 +3010,7 @@ def get_commands_list():
{"cmd":"cp", "label":"Copy object", "param":"s3://BUCKET1/OBJECT1 s3://BUCKET2[/OBJECT2]", "func":cmd_cp, "argc":2},
{"cmd":"modify", "label":"Modify object metadata", "param":"s3://BUCKET1/OBJECT", "func":cmd_modify, "argc":1},
{"cmd":"mv", "label":"Move object", "param":"s3://BUCKET1/OBJECT1 s3://BUCKET2[/OBJECT2]", "func":cmd_mv, "argc":2},
{"cmd":"listacl", "label":"List Access control list for Bucket or Files", "param":"s3://BUCKET[/OBJECT]", "func":cmd_listacl, "argc":0},
{"cmd":"setacl", "label":"Modify Access control list for Bucket or Files", "param":"s3://BUCKET[/OBJECT]", "func":cmd_setacl, "argc":1},
{"cmd":"setversioning", "label":"Modify Bucket Versioning", "param":"s3://BUCKET enable|disable", "func":cmd_setversioning, "argc":2},
{"cmd":"setownership", "label":"Modify Bucket Object Ownership", "param":"s3://BUCKET BucketOwnerPreferred|BucketOwnerEnforced|ObjectWriter", "func":cmd_setownership, "argc":2},
Expand All @@ -2989,6 +3020,7 @@ def get_commands_list():
{"cmd":"setobjectretention", "label":"Modify Object Retention", "param":"MODE RETAIN_UNTIL_DATE s3://BUCKET/OBJECT", "func":cmd_setobjectretention, "argc":3},

{"cmd":"setpolicy", "label":"Modify Bucket Policy", "param":"FILE s3://BUCKET", "func":cmd_setpolicy, "argc":2},
{"cmd":"listpolicy", "label":"List Bucket Policy", "param":"FILE s3://BUCKET", "func":cmd_listpolicy, "argc":0},
Comment thread
marsteg marked this conversation as resolved.
Outdated
Comment thread
marsteg marked this conversation as resolved.
Outdated
{"cmd":"delpolicy", "label":"Delete Bucket Policy", "param":"s3://BUCKET", "func":cmd_delpolicy, "argc":1},
{"cmd":"setcors", "label":"Modify Bucket CORS", "param":"FILE s3://BUCKET", "func":cmd_setcors, "argc":2},
{"cmd":"delcors", "label":"Delete Bucket CORS", "param":"s3://BUCKET", "func":cmd_delcors, "argc":1},
Expand Down Expand Up @@ -3041,6 +3073,11 @@ def format_commands(progname, commands_list):
help += " %s\n %s %s %s\n" % (cmd["label"], progname, cmd["cmd"], cmd["param"])
return help

def list_acl(s3, uri):
cfg = Config()
acl = s3.get_acl(uri)
output(u"%s: ACL Listed" % uri)
return acl

def update_acl(s3, uri, seq_label=""):
cfg = Config()
Expand Down