Example usage for com.amazonaws.auth.policy.resources S3ObjectResource S3ObjectResource

List of usage examples for com.amazonaws.auth.policy.resources S3ObjectResource S3ObjectResource

Introduction

In this page you can find the example usage for com.amazonaws.auth.policy.resources S3ObjectResource S3ObjectResource.

Prototype

public S3ObjectResource(String bucketName, String keyPattern) 

Source Link

Document

Constructs a new object resource that represents the specified objects.

Usage

From source file:n3phele.storage.s3.CloudStorageImpl.java

License:Open Source License

public boolean setPermissions(Repository repo, String filename, boolean isPublic) {
    String bucket = repo.getRoot();
    Credential credential = repo.getCredential().decrypt();
    AmazonS3Client s3 = new AmazonS3Client(
            new BasicAWSCredentials(credential.getAccount(), credential.getSecret()));
    String key = new S3ObjectResource(bucket, filename).getId();
    boolean inserted = false;

    s3.setEndpoint(repo.getTarget().toString());
    try {//from  w  w w  . jav  a 2  s .c o m
        List<Statement> statements = new ArrayList<Statement>();
        Policy policy = null;
        BucketPolicy bp = s3.getBucketPolicy(repo.getRoot());
        if (bp != null && bp.getPolicyText() != null) {
            log.info("Policy text " + bp.getPolicyText());
            policy = PolicyHelper.parse(bp.getPolicyText());
            log.info("Policy object is " + (policy == null ? null : policy.toJson()));

            if (policy != null) {
                if (policy.getStatements() != null) {
                    for (Statement statement : policy.getStatements()) {
                        if (statement.getId().equals("n3phele")) {
                            List<com.amazonaws.auth.policy.Resource> resources = statement.getResources();
                            List<com.amazonaws.auth.policy.Resource> update = new ArrayList<com.amazonaws.auth.policy.Resource>();
                            if (resources != null) {
                                for (com.amazonaws.auth.policy.Resource resource : resources) {
                                    String resourceName = resource.getId();
                                    if (resourceName.endsWith("*")) {
                                        resourceName = resourceName.substring(0, resourceName.length() - 1);
                                    }
                                    if (!(resourceName + "/").startsWith(key + "/")) {
                                        update.add(resource);
                                    } else {
                                        log.info("Removing " + resource.getId());
                                    }
                                }
                            }
                            if (isPublic && !inserted)
                                update.add(new S3ObjectResource(repo.getRoot(), filename + "*"));
                            if (update.size() > 0) {
                                statement.setResources(update);
                                statements.add(statement);
                            }
                            inserted = true;
                        } else {
                            statements.add(statement);
                        }
                    }
                }
                if (!inserted && isPublic) {
                    Statement statement = new Statement(Effect.Allow);
                    statement.setId("n3phele");
                    statement.setPrincipals(Arrays.asList(new Principal("*")));
                    statement.setActions(Arrays.asList((Action) S3Actions.GetObject));
                    statement.setResources(Arrays
                            .asList((com.amazonaws.auth.policy.Resource) new S3ObjectResource(repo.getRoot(),
                                    filename + "*")));
                    statements.add(statement);
                }
            }
        }
        if (policy == null && isPublic) {
            policy = new Policy("n3phele-" + repo.getRoot());
            Statement statement = new Statement(Effect.Allow);
            statement.setId("n3phele");
            statement.setPrincipals(Arrays.asList(new Principal("*")));
            statement.setActions(Arrays.asList((Action) S3Actions.GetObject));
            statement.setResources(Arrays.asList(
                    (com.amazonaws.auth.policy.Resource) new S3ObjectResource(repo.getRoot(), filename + "*")));
            statements.add(statement);
        }
        if (policy != null) {
            if (statements.size() != 0) {
                policy.setStatements(statements);
                s3.setBucketPolicy(repo.getRoot(), policy.toJson());
                log.info("Set policy " + policy.toJson());
            } else {
                s3.deleteBucketPolicy(repo.getRoot());
            }
        }
        return true;

    } catch (AmazonServiceException e) {
        log.log(Level.WARNING, "Service Error processing " + repo, e);
    } catch (AmazonClientException e) {
        log.log(Level.SEVERE, "Client Error processing " + repo, e);
    } catch (IllegalArgumentException e) {
        log.log(Level.SEVERE, "parse error ", e);
        log.log(Level.SEVERE, "cause", e.getCause());
    }
    return false;
}

From source file:n3phele.storage.s3.CloudStorageImpl.java

License:Open Source License

/**
 * @param policy//from www .  ja  va  2s .  c om
 * @param bucket
 * @param foldername
 * @return
 */
private static boolean isPublicFolder(Policy policy, String bucket, String foldername) {
    if (policy == null)
        return false;
    String name = new S3ObjectResource(bucket, foldername).getId();
    if (policy.getStatements() != null) {
        for (Statement statement : policy.getStatements()) {
            if (statement.getId().equals("n3phele")) {
                List<com.amazonaws.auth.policy.Resource> resources = statement.getResources();
                if (resources != null) {
                    for (com.amazonaws.auth.policy.Resource resource : resources) {
                        String resourceKey = resource.getId();
                        if (resourceKey.endsWith("*"))
                            resourceKey = resourceKey.substring(0, resourceKey.length() - 1);
                        if ((name + "/").startsWith(resourceKey + "/"))
                            return true;
                    }
                }
            }
        }
    }
    return false;
}

From source file:org.apache.usergrid.apm.service.AWSUtil.java

License:Apache License

public static String getS3IPAddressWhiteListPolicy(String s3Bucket) {
    Policy policy = null;//from   w ww.ja  va2s . co m
    IpAddressCondition[] ipAddressConditions = AWSUtil.getIPAddressRangeWhiteList();
    if (ipAddressConditions != null && ipAddressConditions.length != 0) {
        policy = new Policy().withStatements(new Statement(Effect.Allow).withPrincipals(Principal.AllUsers)
                .withActions(S3Actions.PutObject, S3Actions.GetObject).withConditions(ipAddressConditions)
                .withResources(new S3ObjectResource(s3Bucket, "*")));
    } else {
        policy = new Policy().withStatements(new Statement(Effect.Allow).withPrincipals(Principal.AllUsers)
                .withActions(S3Actions.PutObject, S3Actions.GetObject)
                .withResources(new S3ObjectResource(s3Bucket, "*")));
    }

    return policy.toJson();
}