package org.jolokia.restrictor;
import javax.management.ObjectName;
import org.jolokia.util.HttpMethod;
import org.jolokia.util.RequestType;
/*
* Copyright 2009-2013 Roland Huss
*
* 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.
*/
/**
* A Restrictor is used to restrict the access to MBeans based on
* various parameters.
*
* @author roland
* @since Jul 28, 2009
*/
public interface Restrictor {
/**
* Check whether the HTTP method with which the request
* was sent is allowed.
*
* @param pMethod method to check
* @return true if there is no restriction on the method with which the request
* was sent, false otherwise
*/
boolean isHttpMethodAllowed(HttpMethod pMethod);
/**
* Check whether the provided command type is allowed in principal
*
* @param pType type to check
* @return true, if the type is allowed, false otherwise
*/
boolean isTypeAllowed(RequestType pType);
/**
* Check whether reading of an attribute is allowed
*
* @param pName MBean name
* @param pAttribute attribute to check
* @return true if access is allowed
*/
boolean isAttributeReadAllowed(ObjectName pName,String pAttribute);
/**
* Check whether writing of an attribute is allowed
*
* @param pName MBean name
* @param pAttribute attribute to check
* @return true if access is allowed
*/
boolean isAttributeWriteAllowed(ObjectName pName,String pAttribute);
/**
* Check whether execution of an operation is allowed
*
* @param pName MBean name
* @param pOperation attribute to check
* @return true if access is allowed
*/
boolean isOperationAllowed(ObjectName pName,String pOperation);
/**
* Check whether access from the connected client is allowed. If at least
* one of the given parameters matches, then this method returns true.
*
* @return true is access is allowed
* @param pHostOrAddress one or more host or address names.
*/
boolean isRemoteAccessAllowed(String ... pHostOrAddress);
/**
* Check whether cross browser access via CORS is allowed. See the
* <a href="https://developer.mozilla.org/en/http_access_control">CORS</a> specification
* for details
*
* @param pOrigin the "Origin:" header provided within the request
* @param pIsStrictCheck whether doing a strict check
* @return true if this cross browser request allowed, false otherwise
*/
boolean isOriginAllowed(String pOrigin, boolean pIsStrictCheck);
}