Updated Branches: refs/heads/api_refactoring efa034e82 -> 59fc89abe
api: Fix ApiServer role base acl logic and response type value Signed-off-by: Rohit Yadav <[email protected]> Project: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/repo Commit: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/commit/59fc89ab Tree: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/tree/59fc89ab Diff: http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/diff/59fc89ab Branch: refs/heads/api_refactoring Commit: 59fc89abe31df863e891c36b64336700eb100d3d Parents: 429b430 Author: Rohit Yadav <[email protected]> Authored: Sun Dec 16 18:13:29 2012 -0800 Committer: Rohit Yadav <[email protected]> Committed: Sun Dec 16 18:13:29 2012 -0800 ---------------------------------------------------------------------- server/src/com/cloud/api/ApiServer.java | 19 +++++++++++-------- 1 files changed, 11 insertions(+), 8 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/incubator-cloudstack/blob/59fc89ab/server/src/com/cloud/api/ApiServer.java ---------------------------------------------------------------------- diff --git a/server/src/com/cloud/api/ApiServer.java b/server/src/com/cloud/api/ApiServer.java index c7cbaa1..bb2044f 100755 --- a/server/src/com/cloud/api/ApiServer.java +++ b/server/src/com/cloud/api/ApiServer.java @@ -36,7 +36,6 @@ import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; -import java.util.Properties; import java.util.Set; import java.util.TimeZone; import java.util.concurrent.ExecutorService; @@ -243,6 +242,11 @@ public class ApiServer implements HttpRequestHandler { parameterMap.put(/* name */paramValue[0], /* value */new String[] { paramValue[1] }); } } + + // Check responseType, if not among valid types, fallback to XML + if (!(responseType.equals(BaseCmd.RESPONSE_TYPE_JSON) || responseType.equals(BaseCmd.RESPONSE_TYPE_XML))) + responseType = BaseCmd.RESPONSE_TYPE_XML; + try { // always trust commands from API port, user context will always be UID_SYSTEM/ACCOUNT_ID_SYSTEM UserContext.registerContext(_systemUser.getId(), _systemAccount, null, true); @@ -769,18 +773,17 @@ public class ApiServer implements HttpRequestHandler { } private boolean isCommandAvailable(User user, String commandName) { - for(APIAccessChecker apichecker : _apiAccessCheckers) { - // Break on the first adapter that validates - // FIXME: In case of multiple adapters, this may not be the best way of validation. See CLOUDSTACK-618 - if (apichecker.canAccessAPI(user, commandName)) - return true; + for (APIAccessChecker apiChecker : _apiAccessCheckers) { + // Fail the checking if any checker fails to verify + if (!apiChecker.canAccessAPI(user, commandName)) + return false; } - return false; + return true; } private String getCmdClassName(String cmdName) { String cmdClassName = null; - for(APIAccessChecker apiChecker : _apiAccessCheckers){ + for (APIAccessChecker apiChecker : _apiAccessCheckers){ cmdClassName = apiChecker.getApiCommands().getProperty(cmdName); // Break on the first non-null value if (cmdClassName != null)
