/* * Data Hub Service (DHuS) - For Space data distribution. * Copyright (C) 2013,2014,2015 Serco (http://serco.com/) and Gael System (http://www.gael.fr) consortium * * This file is part of DHuS software sources. * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package fr.gael.dhus.server.http.webapp.stub.controller.admin; import java.util.ArrayList; import java.util.Date; import java.util.List; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.springframework.http.HttpStatus; import org.springframework.http.ResponseEntity; import org.springframework.security.access.AccessDeniedException; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.bind.annotation.RestController; import fr.gael.dhus.database.object.config.Configuration; import fr.gael.dhus.database.object.config.messaging.MailConfiguration; import fr.gael.dhus.database.object.config.messaging.MailFromConfiguration; import fr.gael.dhus.database.object.config.messaging.MailServerConfiguration; import fr.gael.dhus.database.object.config.messaging.MessagingConfiguration; import fr.gael.dhus.service.exception.EmailNotSentException; import fr.gael.dhus.spring.context.ApplicationContextProvider; @RestController public class SystemConfigurationController { private static Log logger = LogFactory.getLog(SystemConfigurationController.class); /** * List * * @return */ @RequestMapping(value = "/admin/system/configurations", method= RequestMethod.GET) public ResponseEntity<?> configurations(){ fr.gael.dhus.service.SystemService systemService = ApplicationContextProvider .getBean (fr.gael.dhus.service.SystemService.class); try { Configuration cfg = systemService.getCurrentConfiguration (); return new ResponseEntity<>(convertConfiguration (cfg), HttpStatus.OK); } catch (AccessDeniedException e){ return new ResponseEntity<>("{\"code\":\"unauthorized\"}", HttpStatus.FORBIDDEN); } catch (Exception e) { e.printStackTrace (); return new ResponseEntity<>("{\"code\":\""+e.getMessage()+"\"}" , HttpStatus.INTERNAL_SERVER_ERROR); } } /** * UPDATE * * @param * @return */ @RequestMapping (value = "/admin/system/configurations", method= RequestMethod.PUT) public ResponseEntity<?> updateConfig (@RequestBody ConfigurationData configurationData){ fr.gael.dhus.service.SystemService systemService = ApplicationContextProvider .getBean (fr.gael.dhus.service.SystemService.class); try { Configuration cfg = systemService.saveSystemSettings(convertConfigurationData(configurationData)); return new ResponseEntity<>("{\"code\":\"OK\"}", HttpStatus.OK); } catch (EmailNotSentException e) { e.printStackTrace (); return new ResponseEntity<>("{\"code\":\"email_not_sent\"}" , HttpStatus.INTERNAL_SERVER_ERROR); } catch (AccessDeniedException e) { return new ResponseEntity<>("{\"code\":\"unauthorized\"}", HttpStatus.FORBIDDEN); } catch (Exception e) { e.printStackTrace(); return new ResponseEntity<>("{\"code\":\""+e.getMessage()+"\"}" , HttpStatus.INTERNAL_SERVER_ERROR); } } /** * CREATE * * @param * @return */ @RequestMapping (value = "/admin/system/defaultconfigurations", method= RequestMethod.POST) public ResponseEntity<?> defaultConfigurations (@RequestParam(value="reset", defaultValue="") String reset){ fr.gael.dhus.service.SystemService systemService = ApplicationContextProvider .getBean (fr.gael.dhus.service.SystemService.class); try { Configuration cfg = systemService.resetToDefaultConfiguration(); return new ResponseEntity<>(convertConfiguration (cfg), HttpStatus.OK); } catch (EmailNotSentException e) { e.printStackTrace (); return new ResponseEntity<>("{\"code\":\"email_not_sent\"}", HttpStatus.INTERNAL_SERVER_ERROR); } catch (AccessDeniedException e) { return new ResponseEntity<>("{\"code\":\"unauthorized\"}", HttpStatus.FORBIDDEN); } catch (Exception e) { e.printStackTrace (); return new ResponseEntity<>("{\"code\":\""+e.getMessage()+"\"}" , HttpStatus.INTERNAL_SERVER_ERROR); } } @RequestMapping (value = "/admin/system/archive", method= RequestMethod.POST) public ResponseEntity<?> vitaloca (@RequestParam(value="reset", defaultValue="") String reset) { fr.gael.dhus.service.ArchiveService archiveService = ApplicationContextProvider .getBean(fr.gael.dhus.service.ArchiveService.class); try { return new ResponseEntity<>("{\"code\":\""+archiveService.synchronizeLocalArchive()+"\"}", HttpStatus.OK); } catch (EmailNotSentException e) { e.printStackTrace (); return new ResponseEntity<>("{\"code\":\"email_not_sent\"}", HttpStatus.INTERNAL_SERVER_ERROR); } catch (AccessDeniedException e) { return new ResponseEntity<>("{\"code\":\"unauthorized\"}", HttpStatus.FORBIDDEN); } catch (Exception e) { e.printStackTrace (); return new ResponseEntity<>("{\"code\":\""+e.getMessage()+"\"}" , HttpStatus.INTERNAL_SERVER_ERROR); } } /** * UPDATE * * @param * @return */ @RequestMapping (value = "/admin/system/rootpassword", method= RequestMethod.PUT) public ResponseEntity<?> updateRootPassword (@RequestBody RootPasswordModel body){ fr.gael.dhus.service.SystemService systemService = ApplicationContextProvider .getBean (fr.gael.dhus.service.SystemService.class); try { systemService.changeRootPassword (body.getNewPassword(), body.getOldPassword()); return new ResponseEntity<>("{\"code\":\"OK\"}", HttpStatus.OK); } catch (EmailNotSentException e) { e.printStackTrace (); return new ResponseEntity<>("{\"code\":\"email_not_sent\"}" , HttpStatus.INTERNAL_SERVER_ERROR); } catch (AccessDeniedException e) { return new ResponseEntity<>("{\"code\":\"unauthorized\"}", HttpStatus.FORBIDDEN); } catch (Exception e) { e.printStackTrace(); return new ResponseEntity<>("{\"code\":\""+e.getMessage()+"\"}" , HttpStatus.INTERNAL_SERVER_ERROR); } } /** * List * * @return */ @RequestMapping(value = "/admin/system/dumpdatabases") public ResponseEntity<?> dumpDatabasesList () { fr.gael.dhus.service.SystemService systemService = ApplicationContextProvider .getBean (fr.gael.dhus.service.SystemService.class); try { List<Long> dates= new ArrayList<Long>(); for(Date date : systemService.getDumpDatabaseList ()){ dates.add(date.getTime()); } return new ResponseEntity<>(dates, HttpStatus.OK); } catch (AccessDeniedException e){ return new ResponseEntity<>("{\"code\":\"unauthorized\"}", HttpStatus.FORBIDDEN); } catch (Exception e) { e.printStackTrace (); return new ResponseEntity<>("{\"code\":\""+e.getMessage()+"\"}" , HttpStatus.INTERNAL_SERVER_ERROR); } } /** * List * * @return */ @RequestMapping(value = "/admin/system/database", method= RequestMethod.POST) public ResponseEntity<?> restoreDatabase (@RequestBody RestoreDatabaseRequestModel body) { fr.gael.dhus.service.SystemService systemService = ApplicationContextProvider .getBean (fr.gael.dhus.service.SystemService.class); try { systemService.restoreDumpDatabase (body.getDate()); return new ResponseEntity<>("{\"code\":\"OK\"}", HttpStatus.OK); } catch (AccessDeniedException e){ return new ResponseEntity<>("{\"code\":\"unauthorized\"}", HttpStatus.FORBIDDEN); } catch (Exception e) { e.printStackTrace (); return new ResponseEntity<>("{\"code\":\""+e.getMessage()+"\"}" , HttpStatus.INTERNAL_SERVER_ERROR); } } private ConfigurationData convertConfiguration (Configuration cfg) { ConfigurationData configurationData = new ConfigurationData (); configurationData.setMailWhenCreate (cfg.getMessagingConfiguration ().getMailConfiguration ().isOnUserCreate ()); configurationData.setMailWhenUpdate (cfg.getMessagingConfiguration ().getMailConfiguration ().isOnUserUpdate ()); configurationData.setMailWhenDelete (cfg.getMessagingConfiguration ().getMailConfiguration ().isOnUserDelete ()); configurationData.setMailServerSmtp (cfg.getMessagingConfiguration ().getMailConfiguration ().getServerConfiguration ().getSmtp ()); configurationData.setMailServerPassword (cfg.getMessagingConfiguration ().getMailConfiguration ().getServerConfiguration ().getPassword ()); configurationData.setMailServerTls (cfg.getMessagingConfiguration ().getMailConfiguration ().getServerConfiguration ().isTls ()); configurationData.setMailServerPort (cfg.getMessagingConfiguration ().getMailConfiguration ().getServerConfiguration ().getPort ()); configurationData.setMailServerUser (cfg.getMessagingConfiguration ().getMailConfiguration ().getServerConfiguration ().getUsername ()); configurationData.setMailServerFromMail (cfg.getMessagingConfiguration ().getMailConfiguration ().getServerConfiguration ().getMailFromConfiguration ().getAddress ()); configurationData.setMailServerFromName (cfg.getMessagingConfiguration ().getMailConfiguration ().getServerConfiguration ().getMailFromConfiguration ().getName ()); configurationData.setMailServerReplyTo (cfg.getMessagingConfiguration ().getMailConfiguration ().getServerConfiguration ().getReplyTo ()); configurationData.setRegistrationMail (cfg.getSystemConfiguration ().getSupportConfiguration ().getRegistrationMail ()); configurationData.setSupportMail (cfg.getSystemConfiguration ().getSupportConfiguration ().getMail ()); configurationData.setSupportName (cfg.getSystemConfiguration ().getSupportConfiguration ().getName ()); return configurationData; } private Configuration convertConfigurationData (ConfigurationData configurationData) { Configuration cfg = new Configuration (); MessagingConfiguration msgCfg = new MessagingConfiguration (); MailConfiguration mailCfg = new MailConfiguration (); mailCfg.setOnUserCreate (configurationData.isMailWhenCreate ()); mailCfg.setOnUserUpdate (configurationData.isMailWhenUpdate ()); mailCfg.setOnUserDelete (configurationData.isMailWhenDelete ()); MailServerConfiguration srvCfg = new MailServerConfiguration (); srvCfg.setSmtp (configurationData.getMailServerSmtp ()); srvCfg.setPassword (configurationData.getMailServerPassword ()); srvCfg.setTls (configurationData.isMailServerTls ()); srvCfg.setPort (configurationData.getMailServerPort ()); srvCfg.setUsername (configurationData.getMailServerUser ()); MailFromConfiguration mSrvCfg = new MailFromConfiguration (); mSrvCfg.setAddress (configurationData.getMailServerFromMail ()); mSrvCfg.setName (configurationData.getMailServerFromName ()); srvCfg.setMailFromConfiguration (mSrvCfg); srvCfg.setReplyTo (configurationData.getMailServerReplyTo ()); mailCfg.setServerConfiguration (srvCfg); msgCfg.setMailConfiguration (mailCfg); cfg.setMessagingConfiguration (msgCfg); fr.gael.dhus.database.object.config.system.SupportConfiguration supportCfg = new fr.gael.dhus.database.object.config.system.SupportConfiguration(); supportCfg.setRegistrationMail (configurationData.getRegistrationMail ()); supportCfg.setMail (configurationData.getSupportMail ()); supportCfg.setName (configurationData.getSupportName ()); fr.gael.dhus.database.object.config.system.SystemConfiguration sysCfg = new fr.gael.dhus.database.object.config.system.SystemConfiguration(); sysCfg.setSupportConfiguration (supportCfg); cfg.setSystemConfiguration (sysCfg); return cfg; } }