+++ /dev/null
-/*
- * Copyright (c) 2013, 2014 Cisco Systems, Inc. and others. All rights reserved.
- *
- * This program and the accompanying materials are made available under the
- * terms of the Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- */
-
-package org.opendaylight.controller.web;
-
-import java.io.FileInputStream;
-import java.io.IOException;
-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.apache.commons.io.IOUtils;
-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.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;
-
-@Controller
-@RequestMapping("/")
-public class DaylightWeb {
- @RequestMapping(value = "")
- public String index(Model model, HttpServletRequest request) {
- IUserManager userManager = (IUserManager) ServiceHelper
- .getGlobalInstance(IUserManager.class, this);
- if (userManager == null) {
- return "User Manager is not available";
- }
-
- String username = request.getUserPrincipal().getName();
-
- model.addAttribute("username", username);
- model.addAttribute("role", userManager.getUserLevel(username)
- .toNumber());
-
- 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();
- FileInputStream propertiesFile = null;
- try {
- propertiesFile = new FileInputStream("version.properties");
- prop.load(propertiesFile);
- return prop.getProperty(property+".version");
- } catch (IOException e) {
- // TODO: We should be logging the exception here
- // "Failed to open version.properties."
- return null;
- } finally {
- IOUtils.closeQuietly(propertiesFile);
- }
- }
- @RequestMapping(value = "web.json")
- @ResponseBody
- public Map<String, Map<String, Object>> bundles(HttpServletRequest request) {
- Object[] instances = ServiceHelper.getGlobalInstances(
- IDaylightWeb.class, this, null);
- Map<String, Map<String, Object>> bundles = new HashMap<String, Map<String, Object>>();
- Map<String, Object> entry;
- IDaylightWeb bundle;
- String username = request.getUserPrincipal().getName();
- IUserManager userManger = (IUserManager) ServiceHelper
- .getGlobalInstance(IUserManager.class, this);
- for (Object instance : instances) {
- bundle = (IDaylightWeb) instance;
- if (userManger != null
- && bundle.isAuthorized(userManger.getUserLevel(username))) {
- entry = new HashMap<String, Object>();
- entry.put("name", bundle.getWebName());
- entry.put("order", bundle.getWebOrder());
- bundles.put(bundle.getWebId(), entry);
- }
- }
- return bundles;
- }
-
- @RequestMapping(value = "save", method = RequestMethod.POST)
- @ResponseBody
- public String save(HttpServletRequest request) {
- String username = request.getUserPrincipal().getName();
- IUserManager userManager = (IUserManager) ServiceHelper.getGlobalInstance(IUserManager.class, this);
- if (userManager == null) {
- return "User Manager is not available";
- }
- UserLevel level = userManager.getUserLevel(username);
- 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 logout(Map<String, Object> model, final HttpServletRequest request) {
-
- IUserManager userManager = (IUserManager) ServiceHelper
- .getGlobalInstance(IUserManager.class, this);
- if (userManager == null) {
- return "User Manager is not available";
- }
- String username = request.getUserPrincipal().getName();
- HttpSession session = request.getSession(false);
- if (session != null) {
- if (username != null) {
- userManager.userLogout(username);
- }
- session.invalidate();
-
- }
- return "redirect:" + "/";
- }
-
- @RequestMapping(value = "login")
- public String login(Model model, final HttpServletRequest request,
- final HttpServletResponse response) {
- // response.setHeader("X-Page-Location", "/login");
- IUserManager userManager = (IUserManager) ServiceHelper
- .getGlobalInstance(IUserManager.class, this);
- if (userManager == null) {
- return "User Manager is not available";
- }
-
- String username = request.getUserPrincipal().getName();
-
- model.addAttribute("username", username);
- model.addAttribute("role", userManager.getUserLevel(username)
- .toNumber());
- return "forward:" + "/";
- }
-
-}