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;
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;
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<String, Map<String, Object>> bundles(HttpServletRequest request) {
@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<Resource> 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();
}
@RequestMapping(value = "logout")
- public String login(Map<String, Object> model,
- final HttpServletRequest request) {
+ public String logout(Map<String, Object> model, final HttpServletRequest request) {
IUserManager userManager = (IUserManager) ServiceHelper
.getGlobalInstance(IUserManager.class, this);