/* * Copyright 2011 Cloud.com, Inc. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.cloud.bridge.service.core.s3; import java.util.Set; import com.cloud.bridge.service.core.s3.S3ConditionFactory.PolicyConditions; import com.cloud.bridge.service.exception.PermissionDeniedException; /** * In the Bucket Policy language a condition block can hold one or more conditions. * A condition has one or more keys, where each key can have one or more values. */ public abstract class S3PolicyCondition { public enum ConditionKeys { UnknownKey, CurrentTime, SecureTransport, SourceIp, SourceArn, UserAgent, EpochTime, Referer, Acl, Location, Prefix, Delimiter, MaxKeys, CopySource, MetaData, VersionId } protected PolicyConditions condition = null; public S3PolicyCondition() { } public PolicyConditions getCondition() { return condition; } public void setCondition(PolicyConditions param) { condition = param; } public static ConditionKeys toConditionKeys(String keyName) { if (keyName.equalsIgnoreCase( "aws:CurrentTime" )) return ConditionKeys.CurrentTime; else if (keyName.equalsIgnoreCase( "aws:SecureTransport" )) return ConditionKeys.SecureTransport; else if (keyName.equalsIgnoreCase( "aws:SourceIp" )) return ConditionKeys.SourceIp; else if (keyName.equalsIgnoreCase( "aws:SourceArn" )) return ConditionKeys.SourceArn; else if (keyName.equalsIgnoreCase( "aws:UserAgent" )) return ConditionKeys.UserAgent; else if (keyName.equalsIgnoreCase( "aws:EpochTime" )) return ConditionKeys.EpochTime; else if (keyName.equalsIgnoreCase( "aws:Referer" )) return ConditionKeys.Referer; else if (keyName.equalsIgnoreCase( "s3:x-amz-acl" )) return ConditionKeys.Acl; else if (keyName.equalsIgnoreCase( "s3:LocationConstraint" )) return ConditionKeys.Location; else if (keyName.equalsIgnoreCase( "s3:prefix" )) return ConditionKeys.Prefix; else if (keyName.equalsIgnoreCase( "s3:delimiter" )) return ConditionKeys.Delimiter; else if (keyName.equalsIgnoreCase( "s3:max-keys" )) return ConditionKeys.MaxKeys; else if (keyName.equalsIgnoreCase( "s3:x-amz-copy-source" )) return ConditionKeys.CopySource; else if (keyName.equalsIgnoreCase( "s3:x-amz-metadata-directive" )) return ConditionKeys.MetaData; else if (keyName.equalsIgnoreCase( "s3:VersionId" )) return ConditionKeys.VersionId; else return ConditionKeys.UnknownKey; } public Set<ConditionKeys> getAllKeys() { return null; } /** * After calling getAllKeys(), pass in each key from that result to get * the key's associated list of values. * @param key * @return object[] */ public Object[] getKeyValues(ConditionKeys key) { return null; } public void setKey(ConditionKeys key, String[] values) throws Exception { } public boolean isTrue(S3PolicyContext params, String SID) throws Exception { return false; } public void verify() throws PermissionDeniedException { } public String toString() { return ""; } }