Upgraded all libraries, switched to npm, upgraded angular and jdk21
Locusworks Team/portal-webapp/pipeline/head There was a failure building this commit

This commit is contained in:
iparenteau committed 2026-09-04 15:22:35 -05:00
1 parent c2f8e20fad
commit a6df549919
335 files changed
+10923 -12700

No files matched your search

@@ -0,0 +1,36 @@
package net.locusworks.portal;
import java.io.IOException;
import java.nio.file.Files;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.context.annotation.Bean;
import org.springframework.security.web.session.HttpSessionEventPublisher;
import net.locusworks.portal.common.utils.Constants;
@SpringBootApplication
public class PortalApplication {
public static void main(String[] args) {
initializePortalHome();
SpringApplication.run(PortalApplication.class, args);
}
private static void initializePortalHome() {
var portalHome = Constants.getPortalHome();
System.setProperty(Constants.PORTAL_HOME_PROPERTY, portalHome.toString());
try {
Files.createDirectories(portalHome);
Files.createDirectories(portalHome.resolve("logs"));
Files.createDirectories(portalHome.resolve("keys"));
} catch (IOException ex) {
throw new IllegalStateException("Unable to initialize portal home: " + portalHome, ex);
}
}
@Bean
HttpSessionEventPublisher httpSessionEventPublisher() {
return new HttpSessionEventPublisher();
}
}
@@ -42,7 +42,7 @@ public class PortalQuartzSchedulerConfig {
public SchedulerFactoryBean schedulerFactory() {
SchedulerFactoryBean factory = new SchedulerFactoryBean();
factory.setAutoStartup(true);
factory.setSchedulerName("NGAS Portal scheduler");
factory.setSchedulerName("Locusworks Portal scheduler");
factory.setOverwriteExistingJobs(true);
factory.setJobFactory(jobFactory());
return factory;
@@ -1,11 +1,10 @@
package net.locusworks.portal.config;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.security.config.annotation.web.builders.HttpSecurity;
import org.springframework.security.config.annotation.web.configuration.EnableWebSecurity;
import org.springframework.security.config.annotation.web.configuration.WebSecurityConfigurerAdapter;
import org.springframework.security.web.header.writers.frameoptions.XFrameOptionsHeaderWriter;
import org.springframework.security.web.SecurityFilterChain;
import net.locusworks.portal.handlers.PortalAuthenticationFailureHandler;
import net.locusworks.portal.handlers.PortalAuthenticationSuccessHandler;
@@ -20,44 +19,34 @@ import net.locusworks.portal.providers.CustomAuthenticationProvider;
*/
@Configuration
@EnableWebSecurity
public class WebSecurityConfig extends WebSecurityConfigurerAdapter {
@Autowired
CustomAuthenticationProvider provider;
public class WebSecurityConfig {
/***
* Sets up the allowed pages and how to handle successful and failed login attempts
*/
@Override
protected void configure(HttpSecurity http) throws Exception {
http
.csrf().disable()
// See https://jira.springsource.org/browse/SPR-11496
.headers().addHeaderWriter(new XFrameOptionsHeaderWriter(XFrameOptionsHeaderWriter.XFrameOptionsMode.SAMEORIGIN))
.and()
.formLogin()
@Bean
SecurityFilterChain securityFilterChain(HttpSecurity http, CustomAuthenticationProvider provider) throws Exception {
http
.csrf(csrf -> csrf.disable())
// AccountController authenticates programmatically. Retain the resulting
// SecurityContext in the HTTP session for subsequent API requests.
.securityContext(context -> context.requireExplicitSave(false))
.headers(headers -> headers.frameOptions(frame -> frame.sameOrigin()))
.formLogin(form -> form
.successHandler(new PortalAuthenticationSuccessHandler()) // handle successful login
.failureHandler(new PortalAuthenticationFailureHandler()) // handle failure login
// specify our own login page rather than the default, this is what spring will forward to if an un-authenticated request come in
.loginPage("/client/index.html")
.loginProcessingUrl("/springLogin") // this is the magic spring page that we post our login request (there is no real page hint hint)
.permitAll() // all users can access the login form
.and()
.logout()
.permitAll())
.logout(logout -> logout
.logoutSuccessHandler(new PortalLogoutSuccessHandler()) // calls this on logout success
.logoutUrl("/logout") // where the client should be redirected for logout, no file exists
.permitAll()
.and()
.authorizeRequests()
.antMatchers("/").permitAll()
.antMatchers("/ws/**").permitAll()//allow to subscribe to stomp topics
.antMatchers("/index.html").permitAll()
.antMatchers("/assets/**").permitAll()
.antMatchers("/account/isLoggedIn.do").permitAll()
.antMatchers("/account/login.do").permitAll()
.antMatchers("/client/**").permitAll()
.anyRequest().authenticated()// all other URLs require just authenticated access
.and()
.authenticationProvider(provider); // our custom authenticator
}
}
.permitAll())
.authorizeHttpRequests(auth -> auth
.requestMatchers("/", "/ws/**", "/index.html", "/assets/**", "/account/isLoggedIn.do", "/account/login.do", "/client/**").permitAll()
.anyRequest().authenticated())
.authenticationProvider(provider); // our custom authenticator
return http.build();
}
}
@@ -1,16 +1,20 @@
package net.locusworks.portal.config;
import org.springframework.context.annotation.Configuration;
import org.springframework.messaging.simp.config.ChannelRegistration;
import org.springframework.messaging.simp.config.MessageBrokerRegistry;
import org.springframework.security.config.annotation.web.messaging.MessageSecurityMetadataSourceRegistry;
import org.springframework.security.config.annotation.web.socket.AbstractSecurityWebSocketMessageBrokerConfigurer;
import org.springframework.web.socket.config.annotation.EnableWebSocketMessageBroker;
import org.springframework.web.socket.config.annotation.StompEndpointRegistry;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.messaging.Message;
import org.springframework.messaging.simp.config.ChannelRegistration;
import org.springframework.messaging.simp.config.MessageBrokerRegistry;
import org.springframework.security.authorization.AuthorizationManager;
import org.springframework.security.config.annotation.web.socket.EnableWebSocketSecurity;
import org.springframework.security.messaging.access.intercept.MessageMatcherDelegatingAuthorizationManager;
import org.springframework.web.socket.config.annotation.EnableWebSocketMessageBroker;
import org.springframework.web.socket.config.annotation.StompEndpointRegistry;
import org.springframework.web.socket.config.annotation.WebSocketMessageBrokerConfigurer;
import org.springframework.web.socket.config.annotation.WebSocketTransportRegistration;
import net.locusworks.common.logger.ApplicationLogger;
import net.locusworks.common.logger.ApplicationLoggerFactory;
import net.locusworks.logger.ApplicationLogger;
import net.locusworks.logger.ApplicationLoggerFactory;
import net.locusworks.portal.common.enums.PermissionType;
import net.locusworks.portal.services.CommService;
import net.locusworks.portal.websocket.WebsocketOutboundChannelInterceptor;
@@ -21,16 +25,16 @@ import net.locusworks.portal.websocket.WebsocketOutboundChannelInterceptor;
* @since 1.0.0-RELEASE
* @version 1.0
*/
@Configuration
@EnableWebSocketMessageBroker
public class WebSocketConfig extends AbstractSecurityWebSocketMessageBrokerConfigurer {
@Configuration
@EnableWebSocketMessageBroker
@EnableWebSocketSecurity
public class WebSocketConfig implements WebSocketMessageBrokerConfigurer {
private static final Integer BUFFER_LIMIT = 512 * 1024;
private static ApplicationLogger logger = ApplicationLoggerFactory.getLogger(WebSocketConfig.class);
//Socks library uses version 1.1.4. The current library included with spring websockets is 1.0.0. need to override it with our current one
public static final String SOCKS_1_1_4_LOCATION = "../../client/yarn_components/sockjs-client/dist/sockjs.min.js";
private static final String SOCKJS_CLIENT_LOCATION = "/portal/client/vendor/sockjs.min.js";
//Define our allowed authorties
private static String[] authorities = new String[] {
@@ -47,28 +51,24 @@ public class WebSocketConfig extends AbstractSecurityWebSocketMessageBrokerConfi
@Override
public void registerStompEndpoints(StompEndpointRegistry registry) {
logger.info("Registering STOMP!");
registry.addEndpoint(CommService.STOMP_ENDPOINT)
.setAllowedOrigins("*")
.withSockJS()
.setClientLibraryUrl(SOCKS_1_1_4_LOCATION);
logger.info("Registering STOMP!");
registry.addEndpoint(CommService.STOMP_ENDPOINT)
.withSockJS()
.setClientLibraryUrl(SOCKJS_CLIENT_LOCATION);
}
@Override
protected void configureInbound(MessageSecurityMetadataSourceRegistry message) {
message
.nullDestMatcher().permitAll()
@Bean
AuthorizationManager<Message<?>> messageAuthorizationManager(
MessageMatcherDelegatingAuthorizationManager.Builder messages) {
messages
.nullDestMatcher().permitAll()
.simpSubscribeDestMatchers("/user/queue/pong").permitAll()
.simpDestMatchers("/start/ping").permitAll()
.simpDestMatchers("/app/**").hasAnyAuthority(authorities)
.simpSubscribeDestMatchers(CommService.STOMP_TOPIC_PREFIX + "**").permitAll()
.anyMessage().denyAll();
}
@Override
protected boolean sameOriginDisabled() {
return true;
}
.simpSubscribeDestMatchers(CommService.STOMP_TOPIC_PREFIX + "**").permitAll()
.anyMessage().denyAll();
return messages.build();
}
@Override
public void configureClientOutboundChannel(ChannelRegistration registration) {
@@ -4,8 +4,8 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.apache.commons.lang3.StringUtils;
import org.springframework.stereotype.Controller;
@@ -13,8 +13,8 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import net.locusworks.common.logger.ApplicationLogger;
import net.locusworks.common.logger.ApplicationLoggerFactory;
import net.locusworks.logger.ApplicationLogger;
import net.locusworks.logger.ApplicationLoggerFactory;
import net.locusworks.common.utils.Success;
import net.locusworks.portal.common.enums.PermissionType;
import net.locusworks.portal.common.enums.TriggerType;
@@ -7,8 +7,8 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import net.locusworks.common.logger.ApplicationLogger;
import net.locusworks.common.logger.ApplicationLoggerFactory;
import net.locusworks.logger.ApplicationLogger;
import net.locusworks.logger.ApplicationLoggerFactory;
import net.locusworks.common.utils.Success;
import net.locusworks.portal.common.enums.PermissionType;
import net.locusworks.portal.common.exceptions.PortalException;
@@ -4,7 +4,7 @@ import java.util.LinkedHashSet;
import java.util.Map;
import java.util.Set;
import javax.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletRequest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;
@@ -13,8 +13,8 @@ import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import net.locusworks.common.configuration.PropertiesManager;
import net.locusworks.common.logger.ApplicationLogger;
import net.locusworks.common.logger.ApplicationLoggerFactory;
import net.locusworks.logger.ApplicationLogger;
import net.locusworks.logger.ApplicationLoggerFactory;
import net.locusworks.common.utils.Success;
import net.locusworks.portal.common.enums.PermissionType;
import net.locusworks.portal.common.exceptions.PortalException;
@@ -8,8 +8,8 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import net.locusworks.common.logger.ApplicationLogger;
import net.locusworks.common.logger.ApplicationLoggerFactory;
import net.locusworks.logger.ApplicationLogger;
import net.locusworks.logger.ApplicationLoggerFactory;
import net.locusworks.common.utils.Success;
import net.locusworks.portal.common.enums.CredentialType;
import net.locusworks.portal.common.enums.PermissionType;
@@ -10,8 +10,8 @@ import org.springframework.web.context.request.WebRequest;
import org.springframework.web.servlet.mvc.method.annotation.ResponseEntityExceptionHandler;
import net.locusworks.common.exceptions.ApplicationException;
import net.locusworks.common.logger.ApplicationLogger;
import net.locusworks.common.logger.ApplicationLoggerFactory;
import net.locusworks.logger.ApplicationLogger;
import net.locusworks.logger.ApplicationLoggerFactory;
import net.locusworks.common.objectmapper.ObjectMapperError;
import net.locusworks.common.objectmapper.ObjectMapperHelper;
import net.locusworks.portal.services.ApplicationLogService;
@@ -2,7 +2,7 @@ package net.locusworks.portal.controllers;
import java.io.File;
import javax.servlet.http.HttpServletResponse;
import jakarta.servlet.http.HttpServletResponse;
import org.apache.commons.io.FileUtils;
import org.springframework.beans.factory.annotation.Autowired;
@@ -13,8 +13,8 @@ import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.ResponseBody;
import net.locusworks.common.logger.ApplicationLogger;
import net.locusworks.common.logger.ApplicationLoggerFactory;
import net.locusworks.logger.ApplicationLogger;
import net.locusworks.logger.ApplicationLoggerFactory;
import net.locusworks.common.utils.Success;
import net.locusworks.portal.common.enums.PermissionType;
import net.locusworks.portal.common.enums.TriggerType;
@@ -61,9 +61,7 @@ public class FileController extends BaseController {
try(FileDownloadServletResponse fdsr = new FileDownloadServletResponse(response, rfr.getFileName())) {
fdsr.sendFile(fileToDownload);
} catch (InterruptedException ex) {
logger.warn("File download was interrupted: %s", ex.getMessage());
}
}
}
/**
@@ -104,4 +102,4 @@ public class FileController extends BaseController {
throw (PortalException)ex;
}
}
}
}
@@ -8,8 +8,8 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import net.locusworks.common.logger.ApplicationLogger;
import net.locusworks.common.logger.ApplicationLoggerFactory;
import net.locusworks.logger.ApplicationLogger;
import net.locusworks.logger.ApplicationLoggerFactory;
import net.locusworks.common.utils.Success;
import net.locusworks.portal.common.enums.PermissionType;
import net.locusworks.portal.common.exceptions.PortalException;
@@ -7,9 +7,9 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import net.locusworks.common.logger.ApplicationLogger;
import net.locusworks.common.logger.ApplicationLoggerFactory;
import net.locusworks.common.logger.ApplicationLoggerFactory.LoggerInfo;
import net.locusworks.logger.ApplicationLogger;
import net.locusworks.logger.ApplicationLoggerFactory;
import net.locusworks.logger.ApplicationLoggerFactory.LoggerInfo;
import net.locusworks.common.utils.Success;
import net.locusworks.portal.common.enums.PermissionType;
import net.locusworks.portal.common.exceptions.PortalException;
@@ -7,8 +7,8 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import net.locusworks.common.logger.ApplicationLogger;
import net.locusworks.common.logger.ApplicationLoggerFactory;
import net.locusworks.logger.ApplicationLogger;
import net.locusworks.logger.ApplicationLoggerFactory;
import net.locusworks.common.utils.Success;
import net.locusworks.common.utils.Utils;
import net.locusworks.portal.common.enums.PermissionType;
@@ -6,8 +6,8 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import net.locusworks.common.logger.ApplicationLogger;
import net.locusworks.common.logger.ApplicationLoggerFactory;
import net.locusworks.logger.ApplicationLogger;
import net.locusworks.logger.ApplicationLoggerFactory;
import net.locusworks.common.utils.Success;
import net.locusworks.portal.common.enums.PermissionType;
import net.locusworks.portal.common.enums.TriggerType;
@@ -8,8 +8,8 @@ import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import net.locusworks.common.logger.ApplicationLogger;
import net.locusworks.common.logger.ApplicationLoggerFactory;
import net.locusworks.logger.ApplicationLogger;
import net.locusworks.logger.ApplicationLoggerFactory;
import net.locusworks.common.utils.Success;
import net.locusworks.portal.common.enums.PermissionType;
import net.locusworks.portal.common.enums.TriggerType;
@@ -1,7 +1,7 @@
package net.locusworks.portal.extendedlogger;
import net.locusworks.common.logger.ApplicationLogger;
import net.locusworks.common.logger.LogLevel;
import net.locusworks.logger.ApplicationLogger;
import net.locusworks.logger.LogLevel;
/**
* Extended the portal logger class to for specialized loggers such as the leak prevent and jsch
@@ -1,8 +1,8 @@
package net.locusworks.portal.extendedlogger;
import net.locusworks.common.logger.ApplicationLogger;
import net.locusworks.common.logger.ApplicationLoggerFactory;
import net.locusworks.common.logger.LogLevel;
import net.locusworks.logger.ApplicationLogger;
import net.locusworks.logger.ApplicationLoggerFactory;
import net.locusworks.logger.LogLevel;
/**
* Extended portal logger factory to create ExtendedApplicationLoggers to be used
@@ -3,8 +3,8 @@ package net.locusworks.portal.handlers;
import org.springframework.messaging.Message;
import org.springframework.messaging.simp.stomp.StompHeaderAccessor;
import net.locusworks.common.logger.ApplicationLogger;
import net.locusworks.common.logger.ApplicationLoggerFactory;
import net.locusworks.logger.ApplicationLogger;
import net.locusworks.logger.ApplicationLoggerFactory;
import static net.locusworks.common.Charsets.UTF_8;
@@ -16,7 +16,14 @@ import static net.locusworks.common.Charsets.UTF_8;
*/
public abstract class AbstractObjectMessageHandler implements StompMessageHandler {
private String destination;
private String destination;
protected AbstractObjectMessageHandler() {
}
protected AbstractObjectMessageHandler(String destination) {
this.destination = destination;
}
private static ApplicationLogger logger = ApplicationLoggerFactory.getLogger(AbstractObjectMessageHandler.class);
@@ -5,8 +5,8 @@ import org.springframework.context.ApplicationListener;
import org.springframework.messaging.simp.broker.BrokerAvailabilityEvent;
import org.springframework.stereotype.Component;
import net.locusworks.common.logger.ApplicationLogger;
import net.locusworks.common.logger.ApplicationLoggerFactory;
import net.locusworks.logger.ApplicationLogger;
import net.locusworks.logger.ApplicationLoggerFactory;
import net.locusworks.portal.common.http.HttpClientHelper;
import net.locusworks.portal.services.SchedulerService;
import net.locusworks.portal.services.WebCommService;
@@ -1,10 +1,12 @@
package net.locusworks.portal.handlers;
import static net.locusworks.portal.common.utils.Constants.PROPERTIES_FILE;
import static net.locusworks.portal.common.utils.Constants.PROPERTIES_FILE;
import static net.locusworks.portal.common.utils.Constants.getPortalHome;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.IOException;
import java.nio.file.Files;
import java.util.List;
import java.util.Map;
import java.util.Properties;
@@ -13,11 +15,11 @@ import java.util.stream.Collectors;
import org.apache.commons.lang3.StringUtils;
import net.locusworks.common.configuration.PropertiesManager;
import net.locusworks.common.logger.ApplicationLogger;
import net.locusworks.common.logger.ApplicationLoggerFactory;
import net.locusworks.common.logger.ApplicationLoggerFactory.LoggerInfo;
import net.locusworks.common.logger.ApplicationLoggerInitializer;
import net.locusworks.common.logger.LogLevel;
import net.locusworks.logger.ApplicationLogger;
import net.locusworks.logger.ApplicationLoggerFactory;
import net.locusworks.logger.ApplicationLoggerFactory.LoggerInfo;
import net.locusworks.logger.ApplicationLoggerInitializer;
import net.locusworks.logger.LogLevel;
import net.locusworks.common.properties.OrderedProperties;
import net.locusworks.portal.common.enums.Configuration;
@@ -37,13 +39,13 @@ public class LoggerInitializer implements ApplicationLoggerInitializer {
@Override
public void loadLoggers() {
File loggerFile = new File(String.format("%s/conf/%s", System.getProperty("catalina.base"), LOGGER_FILE));
File loggerFile = new File(getPortalHome().toFile(), LOGGER_FILE);
if (!loggerFile.exists()) {
return;
}
try {
Properties conf = PropertiesManager.loadConfiguration(loggerFile);
Properties conf = PropertiesManager.loadConfiguration(loggerFile.toPath());
List<LoggerInfo> loggerInfo = conf.entrySet()
.stream()
.map(item -> new LoggerInfo(String.valueOf(item.getKey()), String.valueOf(item.getValue())))
@@ -58,7 +60,7 @@ public class LoggerInitializer implements ApplicationLoggerInitializer {
@Override
public void saveLogLevels(Map<String, ApplicationLogger> loggers) {
OrderedProperties conf = new OrderedProperties();
File loggerFile = new File(String.format("%s/conf/%s", System.getProperty("catalina.base"), LOGGER_FILE));
File loggerFile = new File(getPortalHome().toFile(), LOGGER_FILE);
loggers.entrySet()
.stream()
@@ -68,7 +70,12 @@ public class LoggerInitializer implements ApplicationLoggerInitializer {
.sorted((item1, item2) -> item1.getName().compareTo(item2.getName()))
.forEach(item -> conf.setProperty(item.getName(), item.getLogLevel().toName()));
try(FileOutputStream fos = new FileOutputStream(loggerFile)) {
try {
Files.createDirectories(loggerFile.toPath().getParent());
} catch (IOException ex) {
throw new RuntimeException(ex);
}
try(FileOutputStream fos = new FileOutputStream(loggerFile)) {
conf.store(fos, "Portal Logger Levels");
} catch (IOException ex) {
throw new RuntimeException(ex);
@@ -79,8 +86,8 @@ public class LoggerInitializer implements ApplicationLoggerInitializer {
public LogLevel initialize() {
try {
Properties defaults = PropertiesManager.loadConfiguration(this.getClass(), PROPERTIES_FILE);
File patchRepoConfFile = new File(String.format("%s/conf/%s", System.getProperty("catalina.base"), PROPERTIES_FILE));
Properties conf = PropertiesManager.loadConfiguration(patchRepoConfFile);
File patchRepoConfFile = new File(getPortalHome().toFile(), PROPERTIES_FILE);
Properties conf = PropertiesManager.loadConfiguration(patchRepoConfFile.toPath());
String logLevel = conf.getProperty(Configuration.LOG_LEVEL.getValue());
if (StringUtils.isBlank(logLevel)) {
@@ -94,4 +101,4 @@ public class LoggerInitializer implements ApplicationLoggerInitializer {
throw new RuntimeException("Unable to get properites: ", ex);
}
}
}
}
@@ -1,8 +1,8 @@
package net.locusworks.portal.handlers;
import java.io.IOException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.security.core.AuthenticationException;
import org.springframework.security.web.authentication.AuthenticationFailureHandler;
import org.springframework.stereotype.Component;
@@ -2,8 +2,8 @@ package net.locusworks.portal.handlers;
import java.io.IOException;
import java.util.HashMap;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.core.Authentication;
import org.springframework.security.web.authentication.AuthenticationSuccessHandler;
@@ -1,18 +1,18 @@
package net.locusworks.portal.handlers;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;
import jakarta.servlet.ServletException;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.servlet.http.HttpSession;
import org.springframework.security.core.Authentication;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.security.web.authentication.logout.LogoutSuccessHandler;
import org.springframework.security.web.authentication.logout.SimpleUrlLogoutSuccessHandler;
import net.locusworks.common.logger.ApplicationLogger;
import net.locusworks.common.logger.ApplicationLoggerFactory;
import net.locusworks.logger.ApplicationLogger;
import net.locusworks.logger.ApplicationLoggerFactory;
/**
* Component to handle logout attempts
@@ -6,8 +6,8 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationListener;
import org.springframework.stereotype.Component;
import net.locusworks.common.logger.ApplicationLogger;
import net.locusworks.common.logger.ApplicationLoggerFactory;
import net.locusworks.logger.ApplicationLogger;
import net.locusworks.logger.ApplicationLoggerFactory;
import net.locusworks.portal.common.enums.TriggerType;
import net.locusworks.portal.common.services.AESService;
import net.locusworks.portal.common.services.ConfigurationService;
@@ -1,7 +1,7 @@
package net.locusworks.portal.handlers;
import net.locusworks.common.logger.ApplicationLogger;
import net.locusworks.common.logger.ApplicationLoggerFactory;
import net.locusworks.logger.ApplicationLogger;
import net.locusworks.logger.ApplicationLoggerFactory;
import net.locusworks.portal.handlers.AbstractObjectMessageHandler;
import net.locusworks.portal.services.CommService;
@@ -20,7 +20,7 @@ public class SystemTriggerMessageHandler extends AbstractObjectMessageHandler {
* Sets the destination to be the global system topic
*/
public SystemTriggerMessageHandler() {
setDestination(CommService.getStompAccountTopic(CommService.STOMP_SYSTEM_TOPIC_SUFFIX));
super(CommService.getStompAccountTopic(CommService.STOMP_SYSTEM_TOPIC_SUFFIX));
}
@Override
@@ -25,8 +25,8 @@ import org.springframework.web.socket.sockjs.client.SockJsClient;
import org.springframework.web.socket.sockjs.client.Transport;
import org.springframework.web.socket.sockjs.client.WebSocketTransport;
import net.locusworks.common.logger.ApplicationLogger;
import net.locusworks.common.logger.ApplicationLoggerFactory;
import net.locusworks.logger.ApplicationLogger;
import net.locusworks.logger.ApplicationLoggerFactory;
import net.locusworks.portal.common.http.HttpClientHelper.HttpSchema;
import net.locusworks.portal.common.services.ConfigurationService;
import net.locusworks.portal.handlers.StompMessageHandler;
@@ -141,7 +141,7 @@ public class SystemWebSocketHandler extends AbstractWebSocketHandler {
String endpoint = String.format("%s://%s:%s/%s", schema == HttpSchema.HTTPS ? "wss" : "ws",
endPoint.host, endPoint.port, "portal/ws/stomp");
SockJsClient sockJsClient = new SockJsClient(transports);
sockJsClient.doHandshake(this, endpoint);
sockJsClient.execute(this, endpoint);
} catch (Exception ex) {
logger.error("Unable to connect to stomp socket " + ex.getMessage(), ex);
@@ -6,8 +6,8 @@ import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpSession;
import org.apache.commons.lang3.StringUtils;
import org.springframework.beans.factory.annotation.Autowired;
@@ -17,7 +17,7 @@ import org.springframework.web.context.request.RequestAttributes;
import org.springframework.web.context.request.RequestContextHolder;
import org.springframework.web.context.request.ServletRequestAttributes;
import net.locusworks.common.logger.LogLevel;
import net.locusworks.logger.LogLevel;
import net.locusworks.common.utils.Utils;
import net.locusworks.portal.common.enums.EventType;
import net.locusworks.portal.common.enums.TriggerType;
@@ -27,8 +27,8 @@ import net.locusworks.portal.database.repos.ApplicationLogRepository;
import net.locusworks.portal.json.ApplicationLogRequest;
import net.locusworks.portal.json.ApplicationUserRequest;
import net.locusworks.portal.json.PurgeLogRequest;
import net.locusworks.common.logger.ApplicationLogger;
import net.locusworks.common.logger.ApplicationLoggerFactory;
import net.locusworks.logger.ApplicationLogger;
import net.locusworks.logger.ApplicationLoggerFactory;
/**
* Service that adds certain logs to the log database for viewing
@@ -6,8 +6,8 @@ import org.springframework.messaging.simp.SimpMessagingTemplate;
import org.springframework.messaging.support.MessageBuilder;
import org.springframework.stereotype.Service;
import net.locusworks.common.logger.ApplicationLogger;
import net.locusworks.common.logger.ApplicationLoggerFactory;
import net.locusworks.logger.ApplicationLogger;
import net.locusworks.logger.ApplicationLoggerFactory;
import net.locusworks.common.objectmapper.ObjectMapperError;
import net.locusworks.common.objectmapper.ObjectMapperHelper;
import net.locusworks.common.utils.Utils;
@@ -39,7 +39,7 @@ import javax.management.Query;
public class CommService {
public static final String STOMP_TOPIC_PREFIX = "/topic/";
public static final String STOMP_QUEUE_PREFIX = "/queue/";
public static final String STOMP_ENDPOINT = "/stomp";
public static final String STOMP_ENDPOINT = "/ws/stomp";
public static final String STOMP_ACCOUNT = "account|";
public static final String STOMP_SYSTEM_TOPIC_SUFFIX = "system";
@@ -219,7 +219,7 @@ public class CredentialService {
throw PortalException.constraintViolation("Unable to find credentials uid of %s", request.getUid());
}
boolean inUse = credRepo.inUse(creds.getUuid());
boolean inUse = credRepo.credentialCount(creds.getUuid()) > 0;
if (inUse) {
throw PortalException.constraintViolation("Credential is in use. Please delete records that use this credentials then try again.");
}
@@ -5,7 +5,7 @@ import java.util.Date;
import java.util.List;
import java.util.stream.Collectors;
import javax.annotation.PostConstruct;
import jakarta.annotation.PostConstruct;
import org.apache.commons.io.FileUtils;
import org.quartz.Job;
@@ -13,8 +13,8 @@ import org.quartz.JobExecutionContext;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import net.locusworks.common.logger.ApplicationLogger;
import net.locusworks.common.logger.ApplicationLoggerFactory;
import net.locusworks.logger.ApplicationLogger;
import net.locusworks.logger.ApplicationLoggerFactory;
import net.locusworks.portal.common.enums.FrequencyType;
import net.locusworks.portal.common.exceptions.PortalException;
import net.locusworks.portal.common.services.ConfigurationService;
@@ -4,18 +4,18 @@ import java.sql.Driver;
import java.sql.DriverManager;
import java.util.Enumeration;
import javax.servlet.ServletContextEvent;
import jakarta.annotation.PostConstruct;
import jakarta.annotation.PreDestroy;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.context.ApplicationListener;
import org.springframework.context.event.ContextRefreshedEvent;
import org.springframework.messaging.simp.SimpMessagingTemplate;
import org.springframework.stereotype.Component;
import org.springframework.web.context.ContextLoaderListener;
import com.mysql.cj.jdbc.AbandonedConnectionCleanupThread;
import net.locusworks.common.logger.ApplicationLogger;
import net.locusworks.common.logger.ApplicationLoggerFactory;
import net.locusworks.logger.ApplicationLogger;
import net.locusworks.logger.ApplicationLoggerFactory;
import net.locusworks.portal.common.PortalDataSource;
import net.locusworks.portal.extendedlogger.ExtendedLoggerFactory;
import net.locusworks.portal.handlers.LoggerInitializer;
@@ -30,7 +30,7 @@ import se.jiderhamn.classloader.leak.prevention.ClassLoaderLeakPreventorFactory;
* @version 1.0
*/
@Component
public class PortalContextService extends ContextLoaderListener implements ApplicationListener<ContextRefreshedEvent> {
public class PortalContextService implements ApplicationListener<ContextRefreshedEvent> {
private ClassLoaderLeakPreventor leakPreventor;
@@ -48,8 +48,8 @@ public class PortalContextService extends ContextLoaderListener implements Appli
}
}
@Override
public void contextInitialized(ServletContextEvent sce) {
@PostConstruct
public void contextInitialized() {
// Initialize the logger;
ApplicationLoggerFactory.init(new LoggerInitializer());
try {
@@ -58,18 +58,16 @@ public class PortalContextService extends ContextLoaderListener implements Appli
leakPreventor = lpf.newLeakPreventor();
} catch (Exception e) {}
super.contextInitialized(sce);
}
@Override
public void contextDestroyed(ServletContextEvent sce) {
@PreDestroy
public void contextDestroyed() {
ApplicationLoggerFactory.saveLogLevels();
cleanUpJDBCDrivers();
cleanUpDatasources();
cleanUpSchedulerService();
cleanUpThreads();
resetSystemOut();
super.contextDestroyed(sce);
}
private void resetSystemOut() {
@@ -11,8 +11,8 @@ import org.apache.commons.io.FileUtils;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import net.locusworks.common.logger.ApplicationLogger;
import net.locusworks.common.logger.ApplicationLoggerFactory;
import net.locusworks.logger.ApplicationLogger;
import net.locusworks.logger.ApplicationLoggerFactory;
import net.locusworks.portal.database.entities.ResourceFile;
import net.locusworks.portal.database.repos.ResourceFileRepository;
import net.locusworks.portal.json.ResourceFileRequest;
@@ -10,7 +10,7 @@ import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
import javax.annotation.PostConstruct;
import jakarta.annotation.PostConstruct;
import org.quartz.CalendarIntervalScheduleBuilder;
import org.quartz.Job;
@@ -27,8 +27,8 @@ import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.scheduling.quartz.SchedulerFactoryBean;
import org.springframework.stereotype.Service;
import net.locusworks.common.logger.ApplicationLogger;
import net.locusworks.common.logger.ApplicationLoggerFactory;
import net.locusworks.logger.ApplicationLogger;
import net.locusworks.logger.ApplicationLoggerFactory;
import net.locusworks.portal.common.enums.FrequencyType;
import net.locusworks.portal.common.utils.DateService;
import net.locusworks.portal.util.TaskScheduler;
@@ -13,12 +13,13 @@ import java.util.function.Function;
import java.util.stream.Collectors;
import java.util.stream.Stream;
import javax.annotation.PostConstruct;
import jakarta.annotation.PostConstruct;
import org.apache.commons.io.FileUtils;
import org.apache.commons.io.FilenameUtils;
import org.apache.commons.io.IOUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.commons.lang3.Strings;
import org.quartz.Job;
import org.quartz.JobExecutionContext;
import org.quartz.JobExecutionException;
@@ -28,7 +29,7 @@ import org.springframework.stereotype.Service;
import com.jcraft.jsch.JSch;
import net.locusworks.common.logger.LogLevel;
import net.locusworks.logger.LogLevel;
import net.locusworks.common.utils.Utils;
import net.locusworks.portal.common.enums.FrequencyType;
import net.locusworks.portal.common.enums.ScriptType;
@@ -80,8 +81,8 @@ import net.locusworks.portal.services.SendMailService.EmailMessageFormatter;
import net.locusworks.portal.util.JSchHelper;
import net.locusworks.portal.util.JSchResults;
import net.locusworks.portal.util.JSchHelper.SCP_DIRECTION;
import net.locusworks.common.logger.ApplicationLogger;
import net.locusworks.common.logger.ApplicationLoggerFactory;
import net.locusworks.logger.ApplicationLogger;
import net.locusworks.logger.ApplicationLoggerFactory;
import static net.locusworks.common.utils.Constants.TRUE;
import static net.locusworks.common.utils.Constants.EXIT_FAIL;
@@ -652,8 +653,8 @@ public class ScriptService implements Job {
String fromHost = scp.getFromHost();
String toHost = scp.getToHost();
boolean fromLocal = StringUtils.startsWithIgnoreCase(fromHost, LOCAL_LOCATION);
boolean toLocal = StringUtils.startsWithIgnoreCase(toHost, LOCAL_LOCATION);
boolean fromLocal = Strings.CI.startsWith(fromHost, LOCAL_LOCATION);
boolean toLocal = Strings.CI.startsWith(toHost, LOCAL_LOCATION);
JSchResults exitStatus = null;
if (!fromLocal && toLocal) {
@@ -3,7 +3,7 @@ package net.locusworks.portal.services;
import java.security.SecureRandom;
import java.util.Date;
import javax.annotation.PostConstruct;
import jakarta.annotation.PostConstruct;
import org.springframework.stereotype.Service;
@@ -7,20 +7,20 @@ import java.util.Set;
import java.util.TreeMap;
import java.util.stream.Collectors;
import javax.mail.Message;
import javax.mail.Session;
import javax.mail.Transport;
import javax.mail.internet.AddressException;
import javax.mail.internet.InternetAddress;
import javax.mail.internet.MimeMessage;
import jakarta.mail.Message;
import jakarta.mail.Session;
import jakarta.mail.Transport;
import jakarta.mail.internet.AddressException;
import jakarta.mail.internet.InternetAddress;
import jakarta.mail.internet.MimeMessage;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mail.MailSendException;
import org.springframework.stereotype.Service;
import net.locusworks.common.logger.ApplicationLogger;
import net.locusworks.common.logger.ApplicationLoggerFactory;
import net.locusworks.common.logger.SystemDebugLogger;
import net.locusworks.logger.ApplicationLogger;
import net.locusworks.logger.ApplicationLoggerFactory;
import net.locusworks.logger.SystemDebugLogger;
import net.locusworks.common.utils.Utils;
import net.locusworks.portal.common.exceptions.PortalException;
import net.locusworks.portal.common.services.AESService;
@@ -9,8 +9,8 @@ import java.util.stream.Collectors;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import net.locusworks.common.logger.ApplicationLogger;
import net.locusworks.common.logger.ApplicationLoggerFactory;
import net.locusworks.logger.ApplicationLogger;
import net.locusworks.logger.ApplicationLoggerFactory;
import net.locusworks.portal.common.exceptions.PortalException;
import net.locusworks.portal.common.services.AESService;
import net.locusworks.portal.database.entities.EmailTemplate;
@@ -10,18 +10,19 @@ import java.util.Map;
import java.util.Set;
import java.util.stream.Collectors;
import javax.annotation.PostConstruct;
import jakarta.annotation.PostConstruct;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.security.authentication.AbstractAuthenticationToken;
import org.springframework.security.authentication.UsernamePasswordAuthenticationToken;
import org.springframework.security.core.GrantedAuthority;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.stereotype.Service;
import org.springframework.security.core.context.SecurityContextHolder;
import org.springframework.context.annotation.Lazy;
import org.springframework.stereotype.Service;
import net.locusworks.common.crypto.HashSalt;
import net.locusworks.common.logger.ApplicationLogger;
import net.locusworks.common.logger.ApplicationLoggerFactory;
import net.locusworks.crypto.HashSalt;
import net.locusworks.logger.ApplicationLogger;
import net.locusworks.logger.ApplicationLoggerFactory;
import net.locusworks.common.utils.StreamUtils;
import net.locusworks.common.utils.Utils;
import net.locusworks.portal.common.exceptions.PortalException;
@@ -75,8 +76,9 @@ public class UserSecurityService {
@Autowired
private UserPasswordTrackingRepository usrPwdTrkRepo;
@Autowired
private CustomAuthenticationProvider provider;
@Autowired
@Lazy
private CustomAuthenticationProvider provider;
/**
* Initialize the user security service upon server startup
@@ -500,4 +502,4 @@ public class UserSecurityService {
return aur;
}
}
}
@@ -4,8 +4,8 @@ import org.springframework.context.ApplicationEvent;
import org.springframework.stereotype.Service;
import org.springframework.web.context.WebApplicationContext;
import net.locusworks.common.logger.ApplicationLogger;
import net.locusworks.common.logger.ApplicationLoggerFactory;
import net.locusworks.logger.ApplicationLogger;
import net.locusworks.logger.ApplicationLoggerFactory;
import net.locusworks.portal.handlers.StompMessageHandler;
import net.locusworks.portal.handlers.SystemWebSocketHandler;
@@ -1,15 +1,16 @@
package net.locusworks.portal.util;
import java.io.File;
import java.io.File;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpServletResponseWrapper;
import jakarta.servlet.http.HttpServletResponse;
import jakarta.servlet.http.HttpServletResponseWrapper;
import net.locusworks.common.logger.ApplicationLogger;
import net.locusworks.common.logger.ApplicationLoggerFactory;
import net.locusworks.logger.ApplicationLogger;
import net.locusworks.logger.ApplicationLoggerFactory;
/**
* Class to help download files
* @author Isaac Parenteau
@@ -69,7 +70,7 @@ public class FileDownloadServletResponse extends HttpServletResponseWrapper impl
}
@Override
public void close() throws Exception {
public void close() throws IOException {
super.getResponse().getOutputStream().close();
}
}
}
@@ -8,10 +8,10 @@ import org.apache.commons.io.FileUtils;
import org.apache.commons.lang3.StringUtils;
import org.eclipse.jgit.api.TransportConfigCallback;
import org.eclipse.jgit.transport.CredentialsProvider;
import org.eclipse.jgit.transport.JschConfigSessionFactory;
import org.eclipse.jgit.transport.ssh.jsch.JschConfigSessionFactory;
import org.eclipse.jgit.transport.SshTransport;
import org.eclipse.jgit.transport.Transport;
import org.eclipse.jgit.transport.OpenSshConfig.Host;
import org.eclipse.jgit.transport.ssh.jsch.OpenSshConfig.Host;
import org.eclipse.jgit.transport.UsernamePasswordCredentialsProvider;
import org.eclipse.jgit.util.FS;
@@ -19,8 +19,8 @@ import com.jcraft.jsch.ChannelExec;
import com.jcraft.jsch.JSch;
import com.jcraft.jsch.Session;
import net.locusworks.common.logger.ApplicationLogger;
import net.locusworks.common.logger.ApplicationLoggerFactory;
import net.locusworks.logger.ApplicationLogger;
import net.locusworks.logger.ApplicationLoggerFactory;
import net.locusworks.common.utils.Utils;
import net.locusworks.portal.common.enums.CredentialType;
import net.locusworks.portal.common.services.AESService;
@@ -247,7 +247,7 @@ public class JSchHelper implements AutoCloseable {
}
@Override
public void close() throws Exception {
public void close() {
if(session != null && session.isConnected()) {
session.disconnect();
}
@@ -466,4 +466,4 @@ public class JSchHelper implements AutoCloseable {
}
return b;
}
}
}
@@ -0,0 +1,7 @@
spring.application.name=portal
server.servlet.context-path=/portal
server.servlet.session.timeout=540m
spring.jpa.open-in-view=false
spring.jpa.hibernate.ddl-auto=none
spring.servlet.multipart.max-file-size=10MB
spring.servlet.multipart.max-request-size=10MB
+2 -2
View File
@@ -8,8 +8,8 @@
<Console name="ConsoleAppender" target="SYSTEM_OUT">
<PatternLayout pattern="${logFormat}" />
</Console>
<RollingFile name="portalLogger" fileName="${sys:catalina.base}/logs/portal.log"
filePattern="${sys:catalina.base}/logs/portal-%d{yyyy-MM-dd}.log.gz">
<RollingFile name="portalLogger" fileName="${sys:portal.home}/logs/portal.log"
filePattern="${sys:portal.home}/logs/portal-%d{yyyy-MM-dd}.log.gz">
<PatternLayout pattern="${logFormat}" />
<Policies>
<TimeBasedTriggeringPolicy />
@@ -1,6 +1,10 @@
userExpirationDays=3650
logLevel=INFO
dbHost=localhost
dbType=h2
h2Url=jdbc:h2:file:${portal.home}/data/portal;MODE=MySQL;DATABASE_TO_LOWER=TRUE;DEFAULT_NULL_ORDERING=HIGH;NON_KEYWORDS=VALUE;DB_CLOSE_ON_EXIT=FALSE;INIT=CREATE SCHEMA IF NOT EXISTS portal
h2Username=sa
h2Password=
dbHost=localhost
dbPort=3306
dbUsername=portalAdmin
dbPassword=VWUPJBKSje2S8J/YMdx15QhhRMRsy39URVR6c6ksrtE\=
@@ -8,4 +12,4 @@ dbRootUser=root
dbRootPassword=VvzxDy5E1o1Q8rL7XMO2mQ\=\=
caCertFile=${user.home}/cacerts.jks
caCertPassword=N/OQnJ9uQh1oYxadwGC3vA==
aesSeedFile=${catalina.base}/conf/portal.tomcat
aesSeedFile=${portal.home}/portal.tomcat
@@ -1,13 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE xml>
<Context antiJARLocking="true" antiResourceLocking="true" docBase="portal" path="/portal_webapp">
<!-- Default set of monitored resources -->
<WatchedResource>WEB-INF/web.xml</WatchedResource>
<!-- Uncomment this to disable session persistence across Tomcat restarts -->
<Manager pathname=""/>
<!-- Uncomment this to enable Comet connection tacking (provides events
on session expiration as well as webapp lifecycle) -->
<!--
<Valve className="org.apache.catalina.valves.CometConnectionManagerValve" />
-->
</Context>
@@ -1,58 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:websocket="http://www.springframework.org/schema/websocket"
xmlns:p="http://www.springframework.org/schema/p" xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc" xmlns:task="http://www.springframework.org/schema/task"
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.2.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd
http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util-3.2.xsd
http://www.springframework.org/schema/task
http://www.springframework.org/schema/task/spring-task-3.2.xsd
http://www.springframework.org/schema/websocket
http://www.springframework.org/schema/websocket/spring-websocket-4.0.xsd">
<!-- declares explicit support for annotation-driven MVC controllers (i.e.
@RequestMapping, @Controller, although support for those is the default behaviour),
as well as adding support for declarative validation via @Valid and message
body marshalling with @RequestBody/ResponseBody. -->
<mvc:annotation-driven />
<mvc:resources mapping="/assets/**" location="/assets/" />
<!-- If the client sends a defaultLocale cookie with a request, any error
messages generated by the request will be returned in the specified language -->
<bean id="localeResolver" class="org.springframework.web.servlet.i18n.CookieLocaleResolver">
<property name="cookieName" value="locale" />
<property name="defaultLocale" value="en" />
</bean>
<bean
class="org.springframework.web.servlet.view.InternalResourceViewResolver">
<property name="prefix">
<value>/view/</value>
</property>
<property name="suffix">
<value>.jsp</value>
</property>
</bean>
<bean id="multipartResolver" class="org.springframework.web.multipart.commons.CommonsMultipartResolver">
<property name="maxUploadSize" value="16777215" />
</bean>
<!-- <bean class="org.springframework.web.servlet.mvc.annotation.AnnotationMethodHandlerAdapter" /> -->
<!-- Scans the classpath for annotated components that will be auto-registered
as Spring beans -->
<context:component-scan base-package="net.locusworks.portal" />
<!-- perform flyway migration -->
<bean id="migration" class="net.locusworks.portal.migration.util.MigrationManager" init-method="migrate"/>
</beans>
@@ -1,25 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<beans
xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:websocket="http://www.springframework.org/schema/websocket"
xmlns:p="http://www.springframework.org/schema/p"
xmlns:context="http://www.springframework.org/schema/context"
xmlns:mvc="http://www.springframework.org/schema/mvc"
xmlns:task="http://www.springframework.org/schema/task"
xmlns:util="http://www.springframework.org/schema/util"
xsi:schemaLocation="http://www.springframework.org/schema/beans
http://www.springframework.org/schema/beans/spring-beans-3.2.xsd
http://www.springframework.org/schema/context
http://www.springframework.org/schema/context/spring-context-3.2.xsd
http://www.springframework.org/schema/mvc
http://www.springframework.org/schema/mvc/spring-mvc-3.2.xsd
http://www.springframework.org/schema/util
http://www.springframework.org/schema/util/spring-util-3.2.xsd
http://www.springframework.org/schema/task
http://www.springframework.org/schema/task/spring-task-3.2.xsd
http://www.springframework.org/schema/websocket
http://www.springframework.org/schema/websocket/spring-websocket-4.0.xsd">
</beans>
@@ -1,59 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" xmlns="http://java.sun.com/xml/ns/javaee" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://java.sun.com/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
<display-name>NG Portal</display-name>
<servlet>
<servlet-name>portal</servlet-name>
<servlet-class>org.springframework.web.servlet.DispatcherServlet</servlet-class>
<load-on-startup>1</load-on-startup>
<async-supported>true</async-supported>
</servlet>
<listener>
<listener-class>net.locusworks.portal.services.PortalContextService</listener-class>
</listener>
<!-- HttpSessionEventPublisher converts session events to a Spring event -->
<!-- and publishes the event to the ApplicationContext. -->
<listener>
<listener-class>
org.springframework.security.web.session.HttpSessionEventPublisher
</listener-class>
</listener>
<filter>
<filter-name>springSecurityFilterChain</filter-name>
<filter-class>org.springframework.web.filter.DelegatingFilterProxy</filter-class>
<async-supported>true</async-supported>
</filter>
<filter-mapping>
<filter-name>springSecurityFilterChain</filter-name>
<url-pattern>/*</url-pattern>
</filter-mapping>
<welcome-file-list>
<welcome-file>index.html</welcome-file>
</welcome-file-list>
<servlet-mapping>
<servlet-name>portal</servlet-name>
<url-pattern>/ws/*</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>portal</servlet-name>
<url-pattern>*.do</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>portal</servlet-name>
<url-pattern>*.view</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>portal</servlet-name>
<url-pattern>*.resf</url-pattern>
</servlet-mapping>
<servlet-mapping>
<servlet-name>portal</servlet-name>
<url-pattern>*.pdf</url-pattern>
</servlet-mapping>
<session-config>
<session-timeout>540</session-timeout>
</session-config>
<context-param>
<param-name>contextConfigLocation</param-name>
<param-value>/WEB-INF/portal-config.xml</param-value>
</context-param>
</web-app>