X-Git-Url: https://git.opendaylight.org/gerrit/gitweb?a=blobdiff_plain;f=opendaylight%2Fweb%2Froot%2Fsrc%2Fmain%2Fjava%2Forg%2Fopendaylight%2Fcontroller%2Fweb%2FDaylightWeb.java;h=ca37f4b7c19658ca14facf9af29d6d83d2cd07cb;hb=0ae12c54560ef14cb8c08beef4553f7523d41578;hp=78f4b5449760e09f9d752e7477b53b49c16f10a7;hpb=738d46bed116293e3e42171ad2035ab805b0b2be;p=controller.git diff --git a/opendaylight/web/root/src/main/java/org/opendaylight/controller/web/DaylightWeb.java b/opendaylight/web/root/src/main/java/org/opendaylight/controller/web/DaylightWeb.java index 78f4b54497..ca37f4b7c1 100644 --- a/opendaylight/web/root/src/main/java/org/opendaylight/controller/web/DaylightWeb.java +++ b/opendaylight/web/root/src/main/java/org/opendaylight/controller/web/DaylightWeb.java @@ -8,14 +8,21 @@ package org.opendaylight.controller.web; +import java.io.FileInputStream; import java.util.HashMap; import java.util.Map; +import java.util.Properties; +import java.util.Set; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; +import org.opendaylight.controller.configuration.IConfigurationContainerService; import org.opendaylight.controller.configuration.IConfigurationService; +import org.opendaylight.controller.containermanager.IContainerAuthorization; +import org.opendaylight.controller.sal.authorization.Privilege; +import org.opendaylight.controller.sal.authorization.Resource; import org.opendaylight.controller.sal.authorization.UserLevel; import org.opendaylight.controller.sal.utils.ServiceHelper; import org.opendaylight.controller.sal.utils.Status; @@ -23,6 +30,7 @@ import org.opendaylight.controller.sal.utils.StatusCode; import org.opendaylight.controller.usermanager.IUserManager; import org.springframework.stereotype.Controller; import org.springframework.ui.Model; +import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.ResponseBody; @@ -47,6 +55,23 @@ public class DaylightWeb { return "main"; } + /** + * Read the version.properties file for the property + * + * @param request + * @return String value configured in the version.properties file + */ + @RequestMapping(value="/versionProperty/{property}", method = RequestMethod.GET) + @ResponseBody + public String getVersion(HttpServletRequest request, @PathVariable("property") String property) { + Properties prop = new Properties(); + try { + prop.load(new FileInputStream("version.properties")); + return prop.getProperty(property+".version"); + } catch (Exception e) { + return null; + } + } @RequestMapping(value = "web.json") @ResponseBody public Map> bundles(HttpServletRequest request) { @@ -75,27 +100,63 @@ public class DaylightWeb { @ResponseBody public String save(HttpServletRequest request) { String username = request.getUserPrincipal().getName(); - IUserManager userManager = (IUserManager) ServiceHelper - .getGlobalInstance(IUserManager.class, this); + IUserManager userManager = (IUserManager) ServiceHelper.getGlobalInstance(IUserManager.class, this); if (userManager == null) { return "User Manager is not available"; } - UserLevel level = userManager.getUserLevel(username); - if (level == UserLevel.NETWORKOPERATOR) { - return "Save not permitted for Operator"; - } - - Status status = new Status(StatusCode.UNAUTHORIZED, - "Operation not allowed for current user"); - if (level == UserLevel.NETWORKADMIN || level == UserLevel.SYSTEMADMIN) { - IConfigurationService configService = (IConfigurationService) ServiceHelper - .getGlobalInstance(IConfigurationService.class, this); + Status status; + switch (level) { + case SYSTEMADMIN: + case NETWORKADMIN: + IConfigurationService configService = (IConfigurationService) ServiceHelper.getGlobalInstance( + IConfigurationService.class, this); if (configService != null) { status = configService.saveConfigurations(); + } else { + status = new Status(StatusCode.NOSERVICE, "Configuration Service is not available"); } + break; + case NETWORKOPERATOR: + case CONTAINERUSER: + IContainerAuthorization containerAuth = (IContainerAuthorization) ServiceHelper.getGlobalInstance( + IContainerAuthorization.class, this); + if (containerAuth != null) { + boolean oneSaved = false; + Set authorizedContainers = containerAuth.getAllResourcesforUser(username); + if (authorizedContainers.isEmpty()) { + status = new Status(StatusCode.UNAUTHORIZED, "User is not authorized for any container"); + } else { + for (Resource container : authorizedContainers) { + if (container.getPrivilege() == Privilege.WRITE) { + String containerName = (String)container.getResource(); + IConfigurationContainerService containerConfigService = (IConfigurationContainerService) ServiceHelper + .getInstance(IConfigurationContainerService.class, containerName, this); + if (containerConfigService != null) { + status = containerConfigService.saveConfigurations(); + if (status.isSuccess()) { + oneSaved = true; + } + } + } + } + if (oneSaved) { + status = new Status(StatusCode.SUCCESS); + } else { + status = new Status(StatusCode.UNAUTHORIZED, "Operation not allowed for current user"); + } + } + } else { + status = new Status(StatusCode.NOSERVICE, "Container Authorization Service is not available"); + } + break; + case APPUSER: + case NOUSER: + default: + status = new Status(StatusCode.UNAUTHORIZED, "Operation not allowed for current user"); + break; } - + // This function will eventually return a Status return status.getDescription(); }