This is an automated email from the ASF dual-hosted git repository. oleewere pushed a commit to branch branch-feature-logsearch-ga in repository https://gitbox.apache.org/repos/asf/ambari.git
commit b775674572a583905840e39f974def37a6b4c6f3 Author: Oliver Szabo <[email protected]> AuthorDate: Sun Sep 16 01:45:35 2018 +0200 jdk 10 support --- .../ambari-logsearch-logfeeder/pom.xml | 6 +-- .../org/apache/ambari/logfeeder/LogFeeder.java | 2 +- .../src/main/scripts/logfeeder.sh | 2 +- ambari-logsearch/ambari-logsearch-server/pom.xml | 58 ++++++++++++++++++---- .../org/apache/ambari/logsearch/LogSearch.java | 8 +-- .../conf/LogSearchJerseyResourceConfig.java | 3 +- .../logsearch/conf/LogSearchServletConfig.java | 33 ++++++------ .../logsearch/conf/LogSearchSessionConfig.java | 46 +++++++++++++++++ .../ambari/logsearch/conf/SecurityConfig.java | 7 +++ .../apache/ambari/logsearch/conf/SolrConfig.java | 3 -- .../org/apache/ambari/logsearch/dao/UserDao.java | 6 ++- .../apache/ambari/logsearch/util/CommonUtil.java | 41 --------------- .../LogsearchSecurityContextFormationFilter.java | 6 ++- .../logsearch/web/filters/NoServletContext.java | 35 +++++++++++++ .../LogsearchFileAuthenticationProvider.java | 15 ++++-- .../src/main/scripts/logsearch.sh | 2 +- .../converter/AuditLogRequestConverterTest.java | 4 +- .../AuditServiceLoadRequestQueryConverterTest.java | 4 +- .../BaseServiceLogRequestQueryConverterTest.java | 4 +- .../FieldAuditLogRequestQueryConverterTest.java | 4 +- .../ServiceLogAnyGraphRequestConverterTest.java | 4 +- ...LogComponentLevelRequestQueryConverterTest.java | 6 +-- ...LogComponentRequestFacetQueryConverterTest.java | 6 +-- ...viceLogLevelCountRequestQueryConverterTest.java | 4 +- ...rviceLogTreeRequestFacetQueryConverterTest.java | 6 +-- ...rviceLogTruncatedRequestQueryConverterTest.java | 4 +- .../TopFieldAuditLogRequestQueryConverterTest.java | 4 +- .../UserExportRequestQueryConverterTest.java | 4 +- .../LogsearchFileAuthenticationProviderTest.java | 14 ++++-- ambari-logsearch/docker/Dockerfile | 9 ++-- ambari-logsearch/pom.xml | 4 +- 31 files changed, 227 insertions(+), 127 deletions(-) diff --git a/ambari-logsearch/ambari-logsearch-logfeeder/pom.xml b/ambari-logsearch/ambari-logsearch-logfeeder/pom.xml index 1b116b3..585dbda 100644 --- a/ambari-logsearch/ambari-logsearch-logfeeder/pom.xml +++ b/ambari-logsearch/ambari-logsearch-logfeeder/pom.xml @@ -33,8 +33,8 @@ <properties> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> - <spring.version>4.3.17.RELEASE</spring.version> - <spring-boot.version>1.5.13.RELEASE</spring-boot.version> + <spring.version>5.0.9.RELEASE</spring.version> + <spring-boot.version>2.0.5.RELEASE</spring-boot.version> </properties> <dependencies> @@ -91,7 +91,7 @@ <dependency> <groupId>org.easymock</groupId> <artifactId>easymock</artifactId> - <version>3.4</version> + <version>3.6</version> <scope>test</scope> </dependency> <dependency> diff --git a/ambari-logsearch/ambari-logsearch-logfeeder/src/main/java/org/apache/ambari/logfeeder/LogFeeder.java b/ambari-logsearch/ambari-logsearch-logfeeder/src/main/java/org/apache/ambari/logfeeder/LogFeeder.java index 4025d3d..a0d8b4f 100644 --- a/ambari-logsearch/ambari-logsearch-logfeeder/src/main/java/org/apache/ambari/logfeeder/LogFeeder.java +++ b/ambari-logsearch/ambari-logsearch-logfeeder/src/main/java/org/apache/ambari/logfeeder/LogFeeder.java @@ -22,7 +22,7 @@ import org.springframework.boot.Banner; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.solr.SolrAutoConfiguration; import org.springframework.boot.builder.SpringApplicationBuilder; -import org.springframework.boot.system.ApplicationPidFileWriter; +import org.springframework.boot.context.ApplicationPidFileWriter; @SpringBootApplication( scanBasePackages = {"org.apache.ambari.logfeeder"}, diff --git a/ambari-logsearch/ambari-logsearch-logfeeder/src/main/scripts/logfeeder.sh b/ambari-logsearch/ambari-logsearch-logfeeder/src/main/scripts/logfeeder.sh index 7f1d8ec..b9141f0 100755 --- a/ambari-logsearch/ambari-logsearch-logfeeder/src/main/scripts/logfeeder.sh +++ b/ambari-logsearch/ambari-logsearch-logfeeder/src/main/scripts/logfeeder.sh @@ -80,7 +80,7 @@ else LOGFEEDER_GC_LOGFILE="$LOG_PATH_WITHOUT_SLASH/$LOGFEEDER_GC_LOGFILE" fi -LOGFEEDER_GC_OPTS="-XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:$LOGFEEDER_GC_LOGFILE" +LOGFEEDER_GC_OPTS="-Xlog:gc*:file=$LOGFEEDER_GC_LOGFILE:time" function print_usage() { cat << EOF diff --git a/ambari-logsearch/ambari-logsearch-server/pom.xml b/ambari-logsearch/ambari-logsearch-server/pom.xml index 783fba3..f7f2ba2 100755 --- a/ambari-logsearch/ambari-logsearch-server/pom.xml +++ b/ambari-logsearch/ambari-logsearch-server/pom.xml @@ -27,15 +27,19 @@ <url>http://maven.apache.org</url> <name>Ambari Logsearch Server</name> <properties> - <spring.version>4.3.17.RELEASE</spring.version> - <spring.security.version>4.2.4.RELEASE</spring.security.version> - <spring.ldap.version>2.3.2.RELEASE</spring.ldap.version> - <jersey.version>2.25.1</jersey.version> - <jetty.version>9.4.11.v20180605</jetty.version> + <spring-boot.version>2.0.5.RELEASE</spring-boot.version> + <!-- <spring-boot.version>2.1.0.M2</spring-boot.version> --> + <spring.version>5.0.9.RELEASE</spring.version> + <spring-session.version>1.3.3.RELEASE</spring-session.version> + <spring.security.version>5.0.8.RELEASE</spring.security.version> + <jersey.version>2.27</jersey.version> + <jetty.version>9.4.12.v20180830</jetty.version> <swagger.version>1.5.16</swagger.version> - <spring-data-solr.version>2.0.2.RELEASE</spring-data-solr.version> + <spring.ldap.version>2.3.2.RELEASE</spring.ldap.version> + <spring-data-solr.version>3.0.10.RELEASE</spring-data-solr.version> + <spring-data.version>2.0.10.RELEASE</spring-data.version> <jjwt.version>0.6.0</jjwt.version> - <spring-boot.version>1.5.13.RELEASE</spring-boot.version> + <javax-servlet.version>4.0.1</javax-servlet.version> </properties> <profiles> <profile> @@ -170,9 +174,14 @@ <dependency> <groupId>org.easymock</groupId> <artifactId>easymock</artifactId> - <version>3.4</version> + <version>3.6</version> <scope>test</scope> </dependency> + <dependency> + <groupId>javax.validation</groupId> + <artifactId>validation-api</artifactId> + <version>2.0.1.Final</version> + </dependency> <!-- Spring dependencies --> <dependency> <groupId>org.springframework</groupId> @@ -210,6 +219,11 @@ <artifactId>spring-security-ldap</artifactId> <version>${spring.security.version}</version> </dependency> + <dependency> + <groupId>org.springframework.session</groupId> + <artifactId>spring-session</artifactId> + <version>${spring-session.version}</version> + </dependency> <dependency> <groupId>org.springframework.security.kerberos</groupId> @@ -271,7 +285,7 @@ <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-jersey</artifactId> - <version>${spring-boot.version}</version> + <version>2.1.0.M2</version> </dependency> <dependency> <groupId>org.springframework.boot</groupId> @@ -294,6 +308,11 @@ <version>${jersey.version}</version> </dependency> <dependency> + <groupId>org.glassfish.jaxb</groupId> + <artifactId>jaxb-runtime</artifactId> + <version>2.3.0.1</version> + </dependency> + <dependency> <artifactId>guava</artifactId> <groupId>com.google.guava</groupId> <version>25.0-jre</version> @@ -312,7 +331,24 @@ <dependency> <groupId>javax.servlet</groupId> <artifactId>javax.servlet-api</artifactId> - <version>3.1.0</version> + <version>${javax-servlet.version}</version> + </dependency> + + <dependency> + <groupId>javax.xml.bind</groupId> + <artifactId>jaxb-api</artifactId> + <version>2.3.0</version> + </dependency> + + <dependency> + <groupId>javax.annotation</groupId> + <artifactId>javax.annotation-api</artifactId> + <version>1.3.2</version> + </dependency> + <dependency> + <groupId>javax.activation</groupId> + <artifactId>activation</artifactId> + <version>1.1.1</version> </dependency> <dependency> <groupId>org.apache.solr</groupId> @@ -484,7 +520,7 @@ <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-commons</artifactId> - <version>1.13.11.RELEASE</version> + <version>${spring-data.version}</version> </dependency> <dependency> <groupId>org.springframework</groupId> diff --git a/ambari-logsearch/ambari-logsearch-server/src/main/java/org/apache/ambari/logsearch/LogSearch.java b/ambari-logsearch/ambari-logsearch-server/src/main/java/org/apache/ambari/logsearch/LogSearch.java index 7d42a92..9707608 100644 --- a/ambari-logsearch/ambari-logsearch-server/src/main/java/org/apache/ambari/logsearch/LogSearch.java +++ b/ambari-logsearch/ambari-logsearch-server/src/main/java/org/apache/ambari/logsearch/LogSearch.java @@ -21,17 +21,19 @@ package org.apache.ambari.logsearch; import org.springframework.boot.Banner; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.data.rest.RepositoryRestMvcAutoConfiguration; +import org.springframework.boot.autoconfigure.data.solr.SolrRepositoriesAutoConfiguration; import org.springframework.boot.autoconfigure.solr.SolrAutoConfiguration; -import org.springframework.boot.autoconfigure.web.WebMvcAutoConfiguration; +import org.springframework.boot.autoconfigure.web.servlet.WebMvcAutoConfiguration; import org.springframework.boot.builder.SpringApplicationBuilder; -import org.springframework.boot.system.ApplicationPidFileWriter; +import org.springframework.boot.context.ApplicationPidFileWriter; @SpringBootApplication( scanBasePackages = {"org.apache.ambari.logsearch"}, exclude = { RepositoryRestMvcAutoConfiguration.class, WebMvcAutoConfiguration.class, - SolrAutoConfiguration.class + SolrAutoConfiguration.class, + SolrRepositoriesAutoConfiguration.class } ) public class LogSearch { diff --git a/ambari-logsearch/ambari-logsearch-server/src/main/java/org/apache/ambari/logsearch/conf/LogSearchJerseyResourceConfig.java b/ambari-logsearch/ambari-logsearch-server/src/main/java/org/apache/ambari/logsearch/conf/LogSearchJerseyResourceConfig.java index a3ce260..8027096 100644 --- a/ambari-logsearch/ambari-logsearch-server/src/main/java/org/apache/ambari/logsearch/conf/LogSearchJerseyResourceConfig.java +++ b/ambari-logsearch/ambari-logsearch-server/src/main/java/org/apache/ambari/logsearch/conf/LogSearchJerseyResourceConfig.java @@ -21,6 +21,7 @@ package org.apache.ambari.logsearch.conf; import javax.ws.rs.ApplicationPath; import org.apache.ambari.logsearch.rest.ServiceLogsResource; +import org.glassfish.jersey.jackson.internal.jackson.jaxrs.json.JacksonJaxbJsonProvider; import org.glassfish.jersey.server.ResourceConfig; import org.glassfish.jersey.servlet.ServletProperties; @@ -29,7 +30,7 @@ public class LogSearchJerseyResourceConfig extends ResourceConfig { public LogSearchJerseyResourceConfig() { packages(ServiceLogsResource.class.getPackage().getName()); - register(com.fasterxml.jackson.jaxrs.json.JacksonJaxbJsonProvider.class); + register(JacksonJaxbJsonProvider.class); property(ServletProperties.FILTER_FORWARD_ON_404, true); } diff --git a/ambari-logsearch/ambari-logsearch-server/src/main/java/org/apache/ambari/logsearch/conf/LogSearchServletConfig.java b/ambari-logsearch/ambari-logsearch-server/src/main/java/org/apache/ambari/logsearch/conf/LogSearchServletConfig.java index a7a27da..f945ca6 100644 --- a/ambari-logsearch/ambari-logsearch-server/src/main/java/org/apache/ambari/logsearch/conf/LogSearchServletConfig.java +++ b/ambari-logsearch/ambari-logsearch-server/src/main/java/org/apache/ambari/logsearch/conf/LogSearchServletConfig.java @@ -21,23 +21,23 @@ package org.apache.ambari.logsearch.conf; import org.apache.ambari.logsearch.configurer.SslConfigurer; import org.apache.ambari.logsearch.web.listener.LogSearchSessionListener; import org.eclipse.jetty.server.Connector; -import org.eclipse.jetty.server.Server; import org.eclipse.jetty.server.ServerConnector; import org.eclipse.jetty.util.ssl.SslContextFactory; import org.glassfish.jersey.servlet.ServletContainer; import org.glassfish.jersey.servlet.ServletProperties; import org.springframework.boot.autoconfigure.web.ServerProperties; -import org.springframework.boot.context.embedded.EmbeddedServletContainerFactory; -import org.springframework.boot.context.embedded.jetty.JettyEmbeddedServletContainer; -import org.springframework.boot.context.embedded.jetty.JettyEmbeddedServletContainerFactory; -import org.springframework.boot.context.embedded.jetty.JettyServerCustomizer; +import org.springframework.boot.web.embedded.jetty.JettyServerCustomizer; +import org.springframework.boot.web.embedded.jetty.JettyServletWebServerFactory; import org.springframework.boot.web.servlet.ServletRegistrationBean; +import org.springframework.boot.web.servlet.server.ConfigurableServletWebServerFactory; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import javax.inject.Inject; import javax.servlet.http.HttpSessionListener; +import java.time.Duration; + import static org.apache.ambari.logsearch.common.LogSearchConstants.LOGSEARCH_APPLICATION_NAME; import static org.apache.ambari.logsearch.common.LogSearchConstants.LOGSEARCH_SESSION_ID; @@ -67,29 +67,26 @@ public class LogSearchServletConfig { return registration; } + @Bean - public EmbeddedServletContainerFactory containerFactory() { - final JettyEmbeddedServletContainerFactory jettyEmbeddedServletContainerFactory = new JettyEmbeddedServletContainerFactory() { - @Override - protected JettyEmbeddedServletContainer getJettyEmbeddedServletContainer(Server server) { - return new JettyEmbeddedServletContainer(server); - } - }; - jettyEmbeddedServletContainerFactory.setSessionTimeout(SESSION_TIMEOUT); - serverProperties.getSession().getCookie().setName(LOGSEARCH_SESSION_ID); - serverProperties.setDisplayName(LOGSEARCH_APPLICATION_NAME); + public ConfigurableServletWebServerFactory webServerFactory() { + JettyServletWebServerFactory webServerFactory = new JettyServletWebServerFactory(); + serverProperties.getServlet().getSession().setTimeout(Duration.ofSeconds(SESSION_TIMEOUT)); + serverProperties.getServlet().getSession().getCookie().setName(LOGSEARCH_SESSION_ID); if ("https".equals(logSearchHttpConfig.getProtocol())) { sslConfigurer.ensureStorePasswords(); sslConfigurer.loadKeystore(); - jettyEmbeddedServletContainerFactory.addServerCustomizers((JettyServerCustomizer) server -> { + webServerFactory.addServerCustomizers((JettyServerCustomizer) server -> { SslContextFactory sslContextFactory = sslConfigurer.getSslContextFactory(); ServerConnector sslConnector = new ServerConnector(server, sslContextFactory); sslConnector.setPort(logSearchHttpConfig.getHttpsPort()); server.setConnectors(new Connector[]{sslConnector}); }); } else { - jettyEmbeddedServletContainerFactory.setPort(logSearchHttpConfig.getHttpPort()); + webServerFactory.setPort(logSearchHttpConfig.getHttpPort()); } - return jettyEmbeddedServletContainerFactory; + + return webServerFactory; } + } diff --git a/ambari-logsearch/ambari-logsearch-server/src/main/java/org/apache/ambari/logsearch/conf/LogSearchSessionConfig.java b/ambari-logsearch/ambari-logsearch-server/src/main/java/org/apache/ambari/logsearch/conf/LogSearchSessionConfig.java new file mode 100644 index 0000000..8023094 --- /dev/null +++ b/ambari-logsearch/ambari-logsearch-server/src/main/java/org/apache/ambari/logsearch/conf/LogSearchSessionConfig.java @@ -0,0 +1,46 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.apache.ambari.logsearch.conf; + +import org.springframework.context.annotation.Bean; +import org.springframework.context.annotation.Configuration; +import org.springframework.session.MapSessionRepository; +import org.springframework.session.config.annotation.web.http.EnableSpringHttpSession; +import org.springframework.session.web.context.AbstractHttpSessionApplicationInitializer; +import org.springframework.session.web.http.DefaultCookieSerializer; + +import static org.apache.ambari.logsearch.common.LogSearchConstants.LOGSEARCH_SESSION_ID; + +@Configuration +@EnableSpringHttpSession +public class LogSearchSessionConfig extends AbstractHttpSessionApplicationInitializer { + + @Bean + public DefaultCookieSerializer defaultCookieSerializer(){ + DefaultCookieSerializer defaultCookieSerializer = new DefaultCookieSerializer(); + defaultCookieSerializer.setCookieName(LOGSEARCH_SESSION_ID); + return defaultCookieSerializer; + } + + @Bean + public MapSessionRepository sessionRepository() { + return new MapSessionRepository(); + } + +} diff --git a/ambari-logsearch/ambari-logsearch-server/src/main/java/org/apache/ambari/logsearch/conf/SecurityConfig.java b/ambari-logsearch/ambari-logsearch-server/src/main/java/org/apache/ambari/logsearch/conf/SecurityConfig.java index 87dc22f..fc985af 100644 --- a/ambari-logsearch/ambari-logsearch-server/src/main/java/org/apache/ambari/logsearch/conf/SecurityConfig.java +++ b/ambari-logsearch/ambari-logsearch-server/src/main/java/org/apache/ambari/logsearch/conf/SecurityConfig.java @@ -60,6 +60,8 @@ import org.springframework.security.ldap.authentication.NullLdapAuthoritiesPopul import org.springframework.security.ldap.search.FilterBasedLdapUserSearch; import org.springframework.security.ldap.userdetails.DefaultLdapAuthoritiesPopulator; import org.springframework.security.ldap.userdetails.LdapAuthoritiesPopulator; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; +import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.security.web.access.intercept.FilterSecurityInterceptor; import org.springframework.security.web.authentication.www.BasicAuthenticationFilter; import org.springframework.security.web.util.matcher.AntPathRequestMatcher; @@ -262,6 +264,11 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter { return filter; } + @Bean + public PasswordEncoder passwordEncoder() { + return new BCryptPasswordEncoder(); + } + private LogsearchFilter logsearchServiceLogFilter() { return new LogsearchFilter(serviceLogsRequestMatcher(), new GlobalStateProvider(solrServiceLogsState, solrServiceLogPropsConfig)); } diff --git a/ambari-logsearch/ambari-logsearch-server/src/main/java/org/apache/ambari/logsearch/conf/SolrConfig.java b/ambari-logsearch/ambari-logsearch-server/src/main/java/org/apache/ambari/logsearch/conf/SolrConfig.java index 33f4f6f..4dc74ee 100644 --- a/ambari-logsearch/ambari-logsearch-server/src/main/java/org/apache/ambari/logsearch/conf/SolrConfig.java +++ b/ambari-logsearch/ambari-logsearch-server/src/main/java/org/apache/ambari/logsearch/conf/SolrConfig.java @@ -20,17 +20,14 @@ package org.apache.ambari.logsearch.conf; import org.apache.ambari.logsearch.conf.global.SolrAuditLogsState; import org.apache.ambari.logsearch.conf.global.SolrCollectionState; -import org.apache.ambari.logsearch.conf.global.LogLevelFilterManagerState; import org.apache.ambari.logsearch.conf.global.SolrServiceLogsState; import org.apache.ambari.logsearch.conf.global.SolrEventHistoryState; import org.apache.ambari.logsearch.dao.SolrSchemaFieldDao; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; -import org.springframework.data.solr.repository.config.EnableSolrRepositories; import org.springframework.scheduling.annotation.EnableScheduling; @Configuration -@EnableSolrRepositories @EnableScheduling public class SolrConfig { diff --git a/ambari-logsearch/ambari-logsearch-server/src/main/java/org/apache/ambari/logsearch/dao/UserDao.java b/ambari-logsearch/ambari-logsearch-server/src/main/java/org/apache/ambari/logsearch/dao/UserDao.java index 3e915a4..cf25bef 100644 --- a/ambari-logsearch/ambari-logsearch-server/src/main/java/org/apache/ambari/logsearch/dao/UserDao.java +++ b/ambari-logsearch/ambari-logsearch-server/src/main/java/org/apache/ambari/logsearch/dao/UserDao.java @@ -37,6 +37,7 @@ import org.apache.ambari.logsearch.web.model.Role; import org.apache.ambari.logsearch.web.model.User; import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; +import org.springframework.security.crypto.password.PasswordEncoder; import org.springframework.security.core.GrantedAuthority; import org.springframework.stereotype.Repository; @@ -53,6 +54,9 @@ public class UserDao { private AuthPropsConfig authPropsConfig; @Inject + private PasswordEncoder passwordEncoder; + + @Inject private RoleDao roleDao; private ArrayList<HashMap<String, String>> userList = null; @@ -125,7 +129,7 @@ public class UserDao { String username = user.get(USER_NAME); String password = user.get(PASSWORD); if (StringUtils.isNotBlank(password)) { - encPassword = CommonUtil.encryptPassword(username, password); + encPassword = passwordEncoder.encode(password); user.put(PASSWORD, ""); user.put(ENC_PASSWORD, encPassword); isUpdated = true; diff --git a/ambari-logsearch/ambari-logsearch-server/src/main/java/org/apache/ambari/logsearch/util/CommonUtil.java b/ambari-logsearch/ambari-logsearch-server/src/main/java/org/apache/ambari/logsearch/util/CommonUtil.java deleted file mode 100644 index 1cfe469..0000000 --- a/ambari-logsearch/ambari-logsearch-server/src/main/java/org/apache/ambari/logsearch/util/CommonUtil.java +++ /dev/null @@ -1,41 +0,0 @@ -/* - * Licensed to the Apache Software Foundation (ASF) under one - * or more contributor license agreements. See the NOTICE file - * distributed with this work for additional information - * regarding copyright ownership. The ASF licenses this file - * to you under the Apache License, Version 2.0 (the - * "License"); you may not use this file except in compliance - * with the License. You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, - * software distributed under the License is distributed on an - * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY - * KIND, either express or implied. See the License for the - * specific language governing permissions and limitations - * under the License. - */ -package org.apache.ambari.logsearch.util; - -import java.security.SecureRandom; - -import org.springframework.security.authentication.encoding.Md5PasswordEncoder; - -public class CommonUtil { - private CommonUtil() { - throw new UnsupportedOperationException(); - } - - private static SecureRandom secureRandom = new SecureRandom(); - private static int counter = 0; - - public static String genGUI() { - return System.currentTimeMillis() + "_" + secureRandom.nextInt(1000) + "_" + counter++; - } - - private static final Md5PasswordEncoder md5Encoder = new Md5PasswordEncoder(); - public static String encryptPassword(String username, String password) { - return md5Encoder.encodePassword(password, username); - } -} diff --git a/ambari-logsearch/ambari-logsearch-server/src/main/java/org/apache/ambari/logsearch/web/filters/LogsearchSecurityContextFormationFilter.java b/ambari-logsearch/ambari-logsearch-server/src/main/java/org/apache/ambari/logsearch/web/filters/LogsearchSecurityContextFormationFilter.java index fed86e8..b2cf041 100644 --- a/ambari-logsearch/ambari-logsearch-server/src/main/java/org/apache/ambari/logsearch/web/filters/LogsearchSecurityContextFormationFilter.java +++ b/ambari-logsearch/ambari-logsearch-server/src/main/java/org/apache/ambari/logsearch/web/filters/LogsearchSecurityContextFormationFilter.java @@ -19,6 +19,7 @@ package org.apache.ambari.logsearch.web.filters; import java.io.IOException; +import java.security.SecureRandom; import javax.inject.Inject; import javax.servlet.FilterChain; @@ -32,7 +33,6 @@ import javax.servlet.http.HttpSession; import org.apache.ambari.logsearch.common.LogSearchContext; import org.apache.ambari.logsearch.manager.SessionManager; -import org.apache.ambari.logsearch.util.CommonUtil; import org.apache.ambari.logsearch.web.model.User; import org.apache.log4j.Logger; import org.springframework.security.authentication.AnonymousAuthenticationToken; @@ -47,6 +47,8 @@ public class LogsearchSecurityContextFormationFilter extends GenericFilterBean { public static final String LOGSEARCH_SC_SESSION_KEY = "LOGSEARCH_SECURITY_CONTEXT"; public static final String USER_AGENT = "User-Agent"; + private static SecureRandom secureRandom = new SecureRandom(); + @Inject SessionManager sessionManager; @@ -80,7 +82,7 @@ public class LogsearchSecurityContextFormationFilter extends GenericFilterBean { } if (msaCookie == null) { HttpServletResponse httpResponse = (HttpServletResponse) response; - msaCookie = CommonUtil.genGUI(); + msaCookie = System.currentTimeMillis() + "_" + secureRandom.nextInt(1000); Cookie cookie = new Cookie("msa", msaCookie); // TODO: Need to revisit this cookie.setMaxAge(Integer.MAX_VALUE); diff --git a/ambari-logsearch/ambari-logsearch-server/src/main/java/org/apache/ambari/logsearch/web/filters/NoServletContext.java b/ambari-logsearch/ambari-logsearch-server/src/main/java/org/apache/ambari/logsearch/web/filters/NoServletContext.java index f1663bc..cff90f3 100644 --- a/ambari-logsearch/ambari-logsearch-server/src/main/java/org/apache/ambari/logsearch/web/filters/NoServletContext.java +++ b/ambari-logsearch/ambari-logsearch-server/src/main/java/org/apache/ambari/logsearch/web/filters/NoServletContext.java @@ -76,6 +76,36 @@ public class NoServletContext implements ServletContext { } @Override + public int getSessionTimeout() { + return 0; + } + + @Override + public void setSessionTimeout(int i) { + + } + + @Override + public String getRequestCharacterEncoding() { + return null; + } + + @Override + public void setRequestCharacterEncoding(String s) { + + } + + @Override + public String getResponseCharacterEncoding() { + return null; + } + + @Override + public void setResponseCharacterEncoding(String s) { + + } + + @Override public SessionCookieConfig getSessionCookieConfig() { return null; } @@ -259,6 +289,11 @@ public class NoServletContext implements ServletContext { } @Override + public ServletRegistration.Dynamic addJspFile(String s, String s1) { + return null; + } + + @Override public javax.servlet.ServletRegistration.Dynamic addServlet( String servletName, Servlet servlet) { return null; diff --git a/ambari-logsearch/ambari-logsearch-server/src/main/java/org/apache/ambari/logsearch/web/security/LogsearchFileAuthenticationProvider.java b/ambari-logsearch/ambari-logsearch-server/src/main/java/org/apache/ambari/logsearch/web/security/LogsearchFileAuthenticationProvider.java index 8c12e0a..1f04bdf 100644 --- a/ambari-logsearch/ambari-logsearch-server/src/main/java/org/apache/ambari/logsearch/web/security/LogsearchFileAuthenticationProvider.java +++ b/ambari-logsearch/ambari-logsearch-server/src/main/java/org/apache/ambari/logsearch/web/security/LogsearchFileAuthenticationProvider.java @@ -20,8 +20,8 @@ package org.apache.ambari.logsearch.web.security; import java.util.Collection; +import com.google.common.annotations.VisibleForTesting; import org.apache.ambari.logsearch.conf.AuthPropsConfig; -import org.apache.ambari.logsearch.util.CommonUtil; import org.apache.commons.lang.StringEscapeUtils; import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; @@ -32,6 +32,7 @@ import org.springframework.security.core.AuthenticationException; import org.springframework.security.core.GrantedAuthority; import org.springframework.security.core.userdetails.UserDetails; import org.springframework.security.core.userdetails.UserDetailsService; +import org.springframework.security.crypto.password.PasswordEncoder; import javax.inject.Inject; import javax.inject.Named; @@ -47,6 +48,9 @@ public class LogsearchFileAuthenticationProvider extends LogsearchAbstractAuthen @Inject private UserDetailsService userDetailsService; + @Inject + private PasswordEncoder passwordEncoder; + @Override public Authentication authenticate(Authentication authentication) throws AuthenticationException { if (!authPropsConfig.isAuthFileEnabled()) { @@ -75,8 +79,8 @@ public class LogsearchFileAuthenticationProvider extends LogsearchAbstractAuthen logger.error("Password can't be null or empty."); throw new BadCredentialsException("Password can't be null or empty."); } - String encPassword = CommonUtil.encryptPassword(username, password); - if (!encPassword.equals(user.getPassword())) { + String encPassword = passwordEncoder.encode(password); + if (!passwordEncoder.matches(user.getPassword(), encPassword)) { logger.error("Wrong password for user=" + username); throw new BadCredentialsException("Wrong password."); } @@ -85,4 +89,9 @@ public class LogsearchFileAuthenticationProvider extends LogsearchAbstractAuthen authentication = new UsernamePasswordAuthenticationToken(username, encPassword, authorities); return authentication; } + + @VisibleForTesting + public void setPasswordEncoder(PasswordEncoder passwordEncoder) { + this.passwordEncoder = passwordEncoder; + } } diff --git a/ambari-logsearch/ambari-logsearch-server/src/main/scripts/logsearch.sh b/ambari-logsearch/ambari-logsearch-server/src/main/scripts/logsearch.sh index a51775d..629e8f2 100755 --- a/ambari-logsearch/ambari-logsearch-server/src/main/scripts/logsearch.sh +++ b/ambari-logsearch/ambari-logsearch-server/src/main/scripts/logsearch.sh @@ -78,7 +78,7 @@ else LOGSEARCH_GC_LOGFILE="$LOG_PATH_WITHOUT_SLASH/$LOGSEARCH_GC_LOGFILE" fi -LOGSEARCH_GC_OPTS="-XX:+PrintGCDetails -XX:+PrintGCDateStamps -Xloggc:$LOGSEARCH_GC_LOGFILE" +LOGSEARCH_GC_OPTS="-Xlog:gc*:file=$LOGSEARCH_GC_LOGFILE:time" function print_usage() { cat << EOF diff --git a/ambari-logsearch/ambari-logsearch-server/src/test/java/org/apache/ambari/logsearch/converter/AuditLogRequestConverterTest.java b/ambari-logsearch/ambari-logsearch-server/src/test/java/org/apache/ambari/logsearch/converter/AuditLogRequestConverterTest.java index 2ccc741..a34b872 100644 --- a/ambari-logsearch/ambari-logsearch-server/src/test/java/org/apache/ambari/logsearch/converter/AuditLogRequestConverterTest.java +++ b/ambari-logsearch/ambari-logsearch-server/src/test/java/org/apache/ambari/logsearch/converter/AuditLogRequestConverterTest.java @@ -47,8 +47,8 @@ public class AuditLogRequestConverterTest extends AbstractRequestConverterTest { SimpleQuery simpleQuery = underTest.convert(request); SolrQuery queryResult = new DefaultQueryParser().doConstructSolrQuery(simpleQuery); // THEN - assertEquals("?q=*%3A*&start=0&rows=25&fq=repo%3A%28logsearch_app+OR+secure_log%29&fq=-repo%3A%28hst_agent+OR+system_message%29" + - "&fq=log_message%3Amyincludemessage&fq=-log_message%3Amyexcludemessage&fq=cluster%3Acl1&fq=reqUser%3A%28joe+OR+steven%29&sort=evtTime+desc%2Cseq_num+desc", + assertEquals("?q=*%3A*&start=0&rows=25&fq=repo%3A%28logsearch_app+%22OR%22+secure_log%29&fq=-repo%3A%28hst_agent+%22OR%22+system_message%29" + + "&fq=log_message%3Amyincludemessage&fq=-log_message%3Amyexcludemessage&fq=cluster%3Acl1&fq=reqUser%3A%28joe+%22OR%22+steven%29&sort=evtTime+desc%2Cseq_num+desc", queryResult.toQueryString()); } diff --git a/ambari-logsearch/ambari-logsearch-server/src/test/java/org/apache/ambari/logsearch/converter/AuditServiceLoadRequestQueryConverterTest.java b/ambari-logsearch/ambari-logsearch-server/src/test/java/org/apache/ambari/logsearch/converter/AuditServiceLoadRequestQueryConverterTest.java index 9d3d145..988be98 100644 --- a/ambari-logsearch/ambari-logsearch-server/src/test/java/org/apache/ambari/logsearch/converter/AuditServiceLoadRequestQueryConverterTest.java +++ b/ambari-logsearch/ambari-logsearch-server/src/test/java/org/apache/ambari/logsearch/converter/AuditServiceLoadRequestQueryConverterTest.java @@ -45,8 +45,8 @@ public class AuditServiceLoadRequestQueryConverterTest extends AbstractRequestCo SolrQuery solrQuery = new DefaultQueryParser().doConstructSolrQuery(underTest.convert(request)); // THEN assertEquals("?q=*%3A*&rows=0&fq=evtTime%3A%5B2016-09-13T22%3A00%3A01.000Z+TO+2016-09-14T22%3A00%3A01.000Z%5D" + - "&fq=log_message%3Amyincludemessage&fq=-log_message%3Amyexcludemessage&fq=repo%3A%28logsearch_app+OR+secure_log%29" + - "&fq=-repo%3A%28hst_agent+OR+system_message%29&fq=cluster%3Acl1&facet=true&facet.mincount=1&facet.limit=10&facet.field=repo", solrQuery.toQueryString()); + "&fq=log_message%3Amyincludemessage&fq=-log_message%3Amyexcludemessage&fq=repo%3A%28logsearch_app+%22OR%22+secure_log%29" + + "&fq=-repo%3A%28hst_agent+%22OR%22+system_message%29&fq=cluster%3Acl1&facet=true&facet.mincount=1&facet.limit=10&facet.field=repo", solrQuery.toQueryString()); } @Test diff --git a/ambari-logsearch/ambari-logsearch-server/src/test/java/org/apache/ambari/logsearch/converter/BaseServiceLogRequestQueryConverterTest.java b/ambari-logsearch/ambari-logsearch-server/src/test/java/org/apache/ambari/logsearch/converter/BaseServiceLogRequestQueryConverterTest.java index 45745da..e788bdc 100644 --- a/ambari-logsearch/ambari-logsearch-server/src/test/java/org/apache/ambari/logsearch/converter/BaseServiceLogRequestQueryConverterTest.java +++ b/ambari-logsearch/ambari-logsearch-server/src/test/java/org/apache/ambari/logsearch/converter/BaseServiceLogRequestQueryConverterTest.java @@ -53,9 +53,9 @@ public class BaseServiceLogRequestQueryConverterTest extends AbstractRequestConv SolrQuery solrQuery = defaultQueryParser.doConstructSolrQuery(query); SolrUtil.removeDoubleOrTripleEscapeFromFilters(solrQuery); // THEN - assertEquals("?q=*%3A*&start=0&rows=25&fq=type%3A%28logsearch_app+OR+secure_log%29&fq=-type%3A%28hst_agent+OR+system_message%29" + + assertEquals("?q=*%3A*&start=0&rows=25&fq=type%3A%28logsearch_app+%22OR%22+secure_log%29&fq=-type%3A%28hst_agent+%22OR%22+system_message%29" + "&fq=log_message%3Amyincludemessage&fq=-log_message%3Amyexcludemessage&fq=cluster%3Acl1&fq=path%3A%5C%2Fvar%5C%2Flog%5C%2Fmyfile%5C-%5C*%5C-hdfs.log" + - "&fq=type%3Acomponent&fq=level%3A%28FATAL+OR+ERROR+OR+WARN+OR+UNKNOWN%29&fq=host%3A%28logsearch1.com+OR+logsearch2.com%29" + + "&fq=type%3Acomponent&fq=level%3A%28FATAL+%22OR%22+ERROR+%22OR%22+WARN+%22OR%22+UNKNOWN%29&fq=host%3A%28logsearch1.com+%22OR%22+logsearch2.com%29" + "&fq=logtime%3A%5B2016-09-13T22%3A00%3A01.000Z+TO+2016-09-14T22%3A00%3A01.000Z%5D&sort=logtime+desc%2Cseq_num+desc", solrQuery.toQueryString()); } diff --git a/ambari-logsearch/ambari-logsearch-server/src/test/java/org/apache/ambari/logsearch/converter/FieldAuditLogRequestQueryConverterTest.java b/ambari-logsearch/ambari-logsearch-server/src/test/java/org/apache/ambari/logsearch/converter/FieldAuditLogRequestQueryConverterTest.java index 669ef1a..da6baac 100644 --- a/ambari-logsearch/ambari-logsearch-server/src/test/java/org/apache/ambari/logsearch/converter/FieldAuditLogRequestQueryConverterTest.java +++ b/ambari-logsearch/ambari-logsearch-server/src/test/java/org/apache/ambari/logsearch/converter/FieldAuditLogRequestQueryConverterTest.java @@ -46,8 +46,8 @@ public class FieldAuditLogRequestQueryConverterTest extends AbstractRequestConve SolrQuery query = new DefaultQueryParser().doConstructSolrQuery(underTest.convert(request)); // THEN assertEquals("?q=*%3A*&rows=0&fq=evtTime%3A%5B2016-09-13T22%3A00%3A01.000Z+TO+2016-09-14T22%3A00%3A01.000Z%5D" + - "&fq=log_message%3Amyincludemessage&fq=-log_message%3Amyexcludemessage&fq=repo%3A%28logsearch_app+OR+secure_log%29" + - "&fq=-repo%3A%28hst_agent+OR+system_message%29&fq=cluster%3Acl1&facet=true&facet.mincount=1&facet.limit=-1&facet.pivot=myfield%2Crepo", + "&fq=log_message%3Amyincludemessage&fq=-log_message%3Amyexcludemessage&fq=repo%3A%28logsearch_app+%22OR%22+secure_log%29" + + "&fq=-repo%3A%28hst_agent+%22OR%22+system_message%29&fq=cluster%3Acl1&facet=true&facet.mincount=1&facet.limit=-1&facet.pivot=myfield%2Crepo", query.toQueryString()); } diff --git a/ambari-logsearch/ambari-logsearch-server/src/test/java/org/apache/ambari/logsearch/converter/ServiceLogAnyGraphRequestConverterTest.java b/ambari-logsearch/ambari-logsearch-server/src/test/java/org/apache/ambari/logsearch/converter/ServiceLogAnyGraphRequestConverterTest.java index 02819f1..4091949 100644 --- a/ambari-logsearch/ambari-logsearch-server/src/test/java/org/apache/ambari/logsearch/converter/ServiceLogAnyGraphRequestConverterTest.java +++ b/ambari-logsearch/ambari-logsearch-server/src/test/java/org/apache/ambari/logsearch/converter/ServiceLogAnyGraphRequestConverterTest.java @@ -46,8 +46,8 @@ public class ServiceLogAnyGraphRequestConverterTest extends AbstractRequestConve SolrQuery query = new DefaultQueryParser().doConstructSolrQuery(underTest.convert(request)); // THEN assertEquals("?q=*%3A*&rows=0&fq=logtime%3A%5B2016-09-13T22%3A00%3A01.000Z+TO+2016-09-14T22%3A00%3A01.000Z%5D" + - "&fq=log_message%3Amyincludemessage&fq=-log_message%3Amyexcludemessage&fq=type%3A%28logsearch_app+OR+secure_log%29" + - "&fq=-type%3A%28hst_agent+OR+system_message%29&fq=cluster%3Acl1&facet=true&facet.mincount=1&facet.limit=-1&facet.field=level", + "&fq=log_message%3Amyincludemessage&fq=-log_message%3Amyexcludemessage&fq=type%3A%28logsearch_app+%22OR%22+secure_log%29" + + "&fq=-type%3A%28hst_agent+%22OR%22+system_message%29&fq=cluster%3Acl1&facet=true&facet.mincount=1&facet.limit=-1&facet.field=level", query.toQueryString()); } diff --git a/ambari-logsearch/ambari-logsearch-server/src/test/java/org/apache/ambari/logsearch/converter/ServiceLogComponentLevelRequestQueryConverterTest.java b/ambari-logsearch/ambari-logsearch-server/src/test/java/org/apache/ambari/logsearch/converter/ServiceLogComponentLevelRequestQueryConverterTest.java index f395c88..a417c07 100644 --- a/ambari-logsearch/ambari-logsearch-server/src/test/java/org/apache/ambari/logsearch/converter/ServiceLogComponentLevelRequestQueryConverterTest.java +++ b/ambari-logsearch/ambari-logsearch-server/src/test/java/org/apache/ambari/logsearch/converter/ServiceLogComponentLevelRequestQueryConverterTest.java @@ -47,8 +47,8 @@ public class ServiceLogComponentLevelRequestQueryConverterTest extends AbstractR SolrQuery query = new DefaultQueryParser().doConstructSolrQuery(underTest.convert(request)); // THEN assertEquals("?q=*%3A*&rows=0&fq=logtime%3A%5B2016-09-13T22%3A00%3A01.000Z+TO+2016-09-14T22%3A00%3A01.000Z%5D" + - "&fq=log_message%3Amyincludemessage&fq=-log_message%3Amyexcludemessage&fq=type%3A%28logsearch_app+OR+secure_log%29" + - "&fq=-type%3A%28hst_agent+OR+system_message%29&fq=type%3Amycomponent&fq=level%3A%28WARN+OR+ERROR+OR+FATAL%29&fq=cluster%3Acl1" + + "&fq=log_message%3Amyincludemessage&fq=-log_message%3Amyexcludemessage&fq=type%3A%28logsearch_app+%22OR%22+secure_log%29" + + "&fq=-type%3A%28hst_agent+%22OR%22+system_message%29&fq=type%3Amycomponent&fq=level%3A%28WARN+%22OR%22+ERROR+%22OR%22+FATAL%29&fq=cluster%3Acl1" + "&facet=true&facet.mincount=1&facet.limit=-1&facet.sort=index&facet.pivot=type%2Clevel", query.toQueryString()); } @@ -61,7 +61,7 @@ public class ServiceLogComponentLevelRequestQueryConverterTest extends AbstractR // WHEN SolrQuery query = new DefaultQueryParser().doConstructSolrQuery(underTest.convert(request)); // THEN - assertEquals("?q=*%3A*&rows=0&fq=logtime%3A%5B*+TO+*%5D&fq=level%3A%28WARN+OR+ERROR+OR+FATAL%29&facet=true" + + assertEquals("?q=*%3A*&rows=0&fq=logtime%3A%5B*+TO+*%5D&fq=level%3A%28WARN+%22OR%22+ERROR+%22OR%22+FATAL%29&facet=true" + "&facet.mincount=1&facet.limit=-1&facet.sort=index&facet.pivot=type%2Clevel", query.toQueryString()); } } diff --git a/ambari-logsearch/ambari-logsearch-server/src/test/java/org/apache/ambari/logsearch/converter/ServiceLogComponentRequestFacetQueryConverterTest.java b/ambari-logsearch/ambari-logsearch-server/src/test/java/org/apache/ambari/logsearch/converter/ServiceLogComponentRequestFacetQueryConverterTest.java index 8ece866..24af013 100644 --- a/ambari-logsearch/ambari-logsearch-server/src/test/java/org/apache/ambari/logsearch/converter/ServiceLogComponentRequestFacetQueryConverterTest.java +++ b/ambari-logsearch/ambari-logsearch-server/src/test/java/org/apache/ambari/logsearch/converter/ServiceLogComponentRequestFacetQueryConverterTest.java @@ -47,8 +47,8 @@ public class ServiceLogComponentRequestFacetQueryConverterTest extends AbstractR SolrQuery query = new DefaultQueryParser().doConstructSolrQuery(underTest.convert(request)); // THEN assertEquals("?q=*%3A*&rows=0&fq=logtime%3A%5B2016-09-13T22%3A00%3A01.000Z+TO+2016-09-14T22%3A00%3A01.000Z%5D" + - "&fq=log_message%3Amyincludemessage&fq=-log_message%3Amyexcludemessage&fq=type%3A%28logsearch_app+OR+secure_log%29" + - "&fq=-type%3A%28hst_agent+OR+system_message%29&fq=type%3Amycomponent&fq=level%3A%28WARN+OR+ERROR+OR+FATAL%29" + + "&fq=log_message%3Amyincludemessage&fq=-log_message%3Amyexcludemessage&fq=type%3A%28logsearch_app+%22OR%22+secure_log%29" + + "&fq=-type%3A%28hst_agent+%22OR%22+system_message%29&fq=type%3Amycomponent&fq=level%3A%28WARN+%22OR%22+ERROR+%22OR%22+FATAL%29" + "&fq=cluster%3Acl1&facet=true&facet.mincount=1&facet.limit=-1&facet.sort=index&facet.pivot=type%2Chost%2Clevel&facet.pivot=type%2Clevel", query.toQueryString()); } @@ -61,7 +61,7 @@ public class ServiceLogComponentRequestFacetQueryConverterTest extends AbstractR // WHEN SolrQuery query = new DefaultQueryParser().doConstructSolrQuery(underTest.convert(request)); // THEN - assertEquals("?q=*%3A*&rows=0&fq=logtime%3A%5B*+TO+*%5D&fq=level%3A%28WARN+OR+ERROR+OR+FATAL%29" + + assertEquals("?q=*%3A*&rows=0&fq=logtime%3A%5B*+TO+*%5D&fq=level%3A%28WARN+%22OR%22+ERROR+%22OR%22+FATAL%29" + "&facet=true&facet.mincount=1&facet.limit=-1&facet.sort=index&facet.pivot=type%2Chost%2Clevel&facet.pivot=type%2Clevel", query.toQueryString()); } diff --git a/ambari-logsearch/ambari-logsearch-server/src/test/java/org/apache/ambari/logsearch/converter/ServiceLogLevelCountRequestQueryConverterTest.java b/ambari-logsearch/ambari-logsearch-server/src/test/java/org/apache/ambari/logsearch/converter/ServiceLogLevelCountRequestQueryConverterTest.java index 54d3435..6326325 100644 --- a/ambari-logsearch/ambari-logsearch-server/src/test/java/org/apache/ambari/logsearch/converter/ServiceLogLevelCountRequestQueryConverterTest.java +++ b/ambari-logsearch/ambari-logsearch-server/src/test/java/org/apache/ambari/logsearch/converter/ServiceLogLevelCountRequestQueryConverterTest.java @@ -45,8 +45,8 @@ public class ServiceLogLevelCountRequestQueryConverterTest extends AbstractReque SolrQuery query = new DefaultQueryParser().doConstructSolrQuery(underTest.convert(request)); // THEN assertEquals("?q=*%3A*&rows=0&fq=logtime%3A%5B2016-09-13T22%3A00%3A01.000Z+TO+2016-09-14T22%3A00%3A01.000Z%5D" + - "&fq=log_message%3Amyincludemessage&fq=-log_message%3Amyexcludemessage&fq=type%3A%28logsearch_app+OR+secure_log%29" + - "&fq=-type%3A%28hst_agent+OR+system_message%29&fq=cluster%3Acl1&facet=true&facet.mincount=1&facet.limit=-1&facet.field=level", + "&fq=log_message%3Amyincludemessage&fq=-log_message%3Amyexcludemessage&fq=type%3A%28logsearch_app+%22OR%22+secure_log%29" + + "&fq=-type%3A%28hst_agent+%22OR%22+system_message%29&fq=cluster%3Acl1&facet=true&facet.mincount=1&facet.limit=-1&facet.field=level", query.toQueryString()); } diff --git a/ambari-logsearch/ambari-logsearch-server/src/test/java/org/apache/ambari/logsearch/converter/ServiceLogTreeRequestFacetQueryConverterTest.java b/ambari-logsearch/ambari-logsearch-server/src/test/java/org/apache/ambari/logsearch/converter/ServiceLogTreeRequestFacetQueryConverterTest.java index 7c6c9fd..b7ced1d 100644 --- a/ambari-logsearch/ambari-logsearch-server/src/test/java/org/apache/ambari/logsearch/converter/ServiceLogTreeRequestFacetQueryConverterTest.java +++ b/ambari-logsearch/ambari-logsearch-server/src/test/java/org/apache/ambari/logsearch/converter/ServiceLogTreeRequestFacetQueryConverterTest.java @@ -45,8 +45,8 @@ public class ServiceLogTreeRequestFacetQueryConverterTest extends AbstractReques SolrQuery query = new DefaultQueryParser().doConstructSolrQuery(underTest.convert(request)); // THEN assertEquals("?q=*%3A*&rows=0&fq=logtime%3A%5B2016-09-13T22%3A00%3A01.000Z+TO+2016-09-14T22%3A00%3A01.000Z%5D" + - "&fq=log_message%3Amyincludemessage&fq=-log_message%3Amyexcludemessage&fq=type%3A%28logsearch_app+OR+secure_log%29" + - "&fq=-type%3A%28hst_agent+OR+system_message%29&fq=level%3A%28WARN+OR+ERROR+OR+FATAL%29&fq=cluster%3Acl1&facet=true" + + "&fq=log_message%3Amyincludemessage&fq=-log_message%3Amyexcludemessage&fq=type%3A%28logsearch_app+%22OR%22+secure_log%29" + + "&fq=-type%3A%28hst_agent+%22OR%22+system_message%29&fq=level%3A%28WARN+%22OR%22+ERROR+%22OR%22+FATAL%29&fq=cluster%3Acl1&facet=true" + "&facet.mincount=1&facet.limit=-1&facet.sort=index&facet.pivot=host%2Ctype%2Clevel&facet.pivot=host%2Clevel", query.toQueryString()); } @@ -59,7 +59,7 @@ public class ServiceLogTreeRequestFacetQueryConverterTest extends AbstractReques // WHEN SolrQuery query = new DefaultQueryParser().doConstructSolrQuery(underTest.convert(request)); // THEN - assertEquals("?q=*%3A*&rows=0&fq=logtime%3A%5B*+TO+*%5D&fq=level%3A%28WARN+OR+ERROR+OR+FATAL%29" + + assertEquals("?q=*%3A*&rows=0&fq=logtime%3A%5B*+TO+*%5D&fq=level%3A%28WARN+%22OR%22+ERROR+%22OR%22+FATAL%29" + "&facet=true&facet.mincount=1&facet.limit=-1&facet.sort=index&facet.pivot=host%2Ctype%2Clevel&facet.pivot=host%2Clevel", query.toQueryString()); } diff --git a/ambari-logsearch/ambari-logsearch-server/src/test/java/org/apache/ambari/logsearch/converter/ServiceLogTruncatedRequestQueryConverterTest.java b/ambari-logsearch/ambari-logsearch-server/src/test/java/org/apache/ambari/logsearch/converter/ServiceLogTruncatedRequestQueryConverterTest.java index b2b7014..532afb4 100644 --- a/ambari-logsearch/ambari-logsearch-server/src/test/java/org/apache/ambari/logsearch/converter/ServiceLogTruncatedRequestQueryConverterTest.java +++ b/ambari-logsearch/ambari-logsearch-server/src/test/java/org/apache/ambari/logsearch/converter/ServiceLogTruncatedRequestQueryConverterTest.java @@ -47,8 +47,8 @@ public class ServiceLogTruncatedRequestQueryConverterTest extends AbstractReques // WHEN SolrQuery query = new DefaultQueryParser().doConstructSolrQuery(underTest.convert(request)); // THEN - assertEquals("?q=*%3A*&start=0&rows=10&fq=type%3A%28logsearch_app+OR+secure_log%29" + - "&fq=-type%3A%28hst_agent+OR+system_message%29&fq=log_message%3Amyincludemessage&fq=-log_message%3Amyexcludemessage" + + assertEquals("?q=*%3A*&start=0&rows=10&fq=type%3A%28logsearch_app+%22OR%22+secure_log%29" + + "&fq=-type%3A%28hst_agent+%22OR%22+system_message%29&fq=log_message%3Amyincludemessage&fq=-log_message%3Amyexcludemessage" + "&fq=cluster%3Acl1&sort=logtime+desc%2Cseq_num+desc", query.toQueryString()); } diff --git a/ambari-logsearch/ambari-logsearch-server/src/test/java/org/apache/ambari/logsearch/converter/TopFieldAuditLogRequestQueryConverterTest.java b/ambari-logsearch/ambari-logsearch-server/src/test/java/org/apache/ambari/logsearch/converter/TopFieldAuditLogRequestQueryConverterTest.java index b1b4d49..81b7f73 100644 --- a/ambari-logsearch/ambari-logsearch-server/src/test/java/org/apache/ambari/logsearch/converter/TopFieldAuditLogRequestQueryConverterTest.java +++ b/ambari-logsearch/ambari-logsearch-server/src/test/java/org/apache/ambari/logsearch/converter/TopFieldAuditLogRequestQueryConverterTest.java @@ -47,8 +47,8 @@ public class TopFieldAuditLogRequestQueryConverterTest extends AbstractRequestCo SolrQuery query = new DefaultQueryParser().doConstructSolrQuery(underTest.convert(request)); // THEN assertEquals("?q=*%3A*&rows=0&fq=evtTime%3A%5B2016-09-13T22%3A00%3A01.000Z+TO+2016-09-14T22%3A00%3A01.000Z%5D" + - "&fq=log_message%3Amyincludemessage&fq=-log_message%3Amyexcludemessage&fq=repo%3A%28logsearch_app+OR+secure_log%29" + - "&fq=-repo%3A%28hst_agent+OR+system_message%29&fq=cluster%3Acl1&facet=true&facet.mincount=1&facet.limit=10&facet.pivot=myfield%2Crepo", + "&fq=log_message%3Amyincludemessage&fq=-log_message%3Amyexcludemessage&fq=repo%3A%28logsearch_app+%22OR%22+secure_log%29" + + "&fq=-repo%3A%28hst_agent+%22OR%22+system_message%29&fq=cluster%3Acl1&facet=true&facet.mincount=1&facet.limit=10&facet.pivot=myfield%2Crepo", query.toQueryString()); } diff --git a/ambari-logsearch/ambari-logsearch-server/src/test/java/org/apache/ambari/logsearch/converter/UserExportRequestQueryConverterTest.java b/ambari-logsearch/ambari-logsearch-server/src/test/java/org/apache/ambari/logsearch/converter/UserExportRequestQueryConverterTest.java index 1ec6414..11be1bc 100644 --- a/ambari-logsearch/ambari-logsearch-server/src/test/java/org/apache/ambari/logsearch/converter/UserExportRequestQueryConverterTest.java +++ b/ambari-logsearch/ambari-logsearch-server/src/test/java/org/apache/ambari/logsearch/converter/UserExportRequestQueryConverterTest.java @@ -46,8 +46,8 @@ public class UserExportRequestQueryConverterTest extends AbstractRequestConverte SolrQuery query = new DefaultQueryParser().doConstructSolrQuery(underTest.convert(request)); // THEN assertEquals("?q=*%3A*&rows=0&fq=evtTime%3A%5B2016-09-13T22%3A00%3A01.000Z+TO+2016-09-14T22%3A00%3A01.000Z%5D" + - "&fq=log_message%3Amyincludemessage&fq=-log_message%3Amyexcludemessage&fq=repo%3A%28logsearch_app+OR+secure_log%29" + - "&fq=-repo%3A%28hst_agent+OR+system_message%29&facet=true&facet.mincount=1&facet.limit=-1&facet.pivot=reqUser%2Crepo&facet.pivot=resource%2Crepo", + "&fq=log_message%3Amyincludemessage&fq=-log_message%3Amyexcludemessage&fq=repo%3A%28logsearch_app+%22OR%22+secure_log%29" + + "&fq=-repo%3A%28hst_agent+%22OR%22+system_message%29&facet=true&facet.mincount=1&facet.limit=-1&facet.pivot=reqUser%2Crepo&facet.pivot=resource%2Crepo", query.toQueryString()); } diff --git a/ambari-logsearch/ambari-logsearch-server/src/test/java/org/apache/ambari/logsearch/web/security/LogsearchFileAuthenticationProviderTest.java b/ambari-logsearch/ambari-logsearch-server/src/test/java/org/apache/ambari/logsearch/web/security/LogsearchFileAuthenticationProviderTest.java index 407cc83..0c3ed29 100644 --- a/ambari-logsearch/ambari-logsearch-server/src/test/java/org/apache/ambari/logsearch/web/security/LogsearchFileAuthenticationProviderTest.java +++ b/ambari-logsearch/ambari-logsearch-server/src/test/java/org/apache/ambari/logsearch/web/security/LogsearchFileAuthenticationProviderTest.java @@ -19,7 +19,6 @@ package org.apache.ambari.logsearch.web.security; import org.apache.ambari.logsearch.conf.AuthPropsConfig; -import org.apache.ambari.logsearch.util.CommonUtil; import org.apache.ambari.logsearch.web.model.User; import org.junit.Before; import org.junit.Test; @@ -29,6 +28,8 @@ import org.springframework.security.core.Authentication; import org.springframework.security.core.GrantedAuthority; import org.springframework.security.core.authority.SimpleGrantedAuthority; import org.springframework.security.core.userdetails.UserDetailsService; +import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder; +import org.springframework.security.crypto.password.PasswordEncoder; import static junit.framework.Assert.assertEquals; import static junit.framework.Assert.assertSame; @@ -47,6 +48,7 @@ public class LogsearchFileAuthenticationProviderTest { private LogsearchFileAuthenticationProvider provider; private AuthPropsConfig mockAuthPropsConfig; private UserDetailsService mockUserDetailsService; + private PasswordEncoder passwordEncoder; @Before public void init() throws Exception { @@ -61,6 +63,9 @@ public class LogsearchFileAuthenticationProviderTest { Field userDetailsServiceField = LogsearchFileAuthenticationProvider.class.getDeclaredField("userDetailsService"); userDetailsServiceField.setAccessible(true); userDetailsServiceField.set(provider, mockUserDetailsService); + + passwordEncoder = new BCryptPasswordEncoder(); + provider.setPasswordEncoder(passwordEncoder); } @Test @@ -190,7 +195,7 @@ public class LogsearchFileAuthenticationProviderTest { @Test public void testAuthenticationWrongPassword() { List<GrantedAuthority> grantedAuths = Arrays.<GrantedAuthority>asList(new SimpleGrantedAuthority("ROLE_USER")); - User user = new User("principal", CommonUtil.encryptPassword("principal", "notCredentials"), grantedAuths); + User user = new User("principal", passwordEncoder.encode("notCredentials"), grantedAuths); expect(mockAuthPropsConfig.isAuthFileEnabled()).andReturn(true); expect(mockUserDetailsService.loadUserByUsername("principal")).andReturn(user); @@ -211,7 +216,8 @@ public class LogsearchFileAuthenticationProviderTest { @Test public void testAuthenticationSuccessful() { List<GrantedAuthority> grantedAuths = Arrays.<GrantedAuthority>asList(new SimpleGrantedAuthority("ROLE_USER")); - User user = new User("principal", CommonUtil.encryptPassword("principal", "credentials"), grantedAuths); + String encodedPassword = passwordEncoder.encode("credentials"); + User user = new User("principal", "credentials", grantedAuths); expect(mockAuthPropsConfig.isAuthFileEnabled()).andReturn(true); expect(mockUserDetailsService.loadUserByUsername("principal")).andReturn(user); @@ -219,10 +225,8 @@ public class LogsearchFileAuthenticationProviderTest { replay(mockAuthPropsConfig, mockUserDetailsService); Authentication authentication = new TestingAuthenticationToken("principal", "credentials"); - Authentication authenticationResult = provider.authenticate(authentication); assertEquals("principal", authenticationResult.getName()); - assertEquals(CommonUtil.encryptPassword("principal", "credentials"), authenticationResult.getCredentials()); assertEquals(1, authenticationResult.getAuthorities().size()); assertEquals(new SimpleGrantedAuthority("ROLE_USER"), authenticationResult.getAuthorities().iterator().next()); diff --git a/ambari-logsearch/docker/Dockerfile b/ambari-logsearch/docker/Dockerfile index c1101cb..4e7724c 100644 --- a/ambari-logsearch/docker/Dockerfile +++ b/ambari-logsearch/docker/Dockerfile @@ -22,10 +22,11 @@ RUN yum -y install glibc-common ENV HOME /root #Install JAVA -ENV JAVA_VERSION 8u131 -ENV BUILD_VERSION b11 -RUN wget --no-check-certificate --no-cookies --header "Cookie:oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/$JAVA_VERSION-$BUILD_VERSION/d54c1d3a095b4ff2b6607d096fa80163/jdk-$JAVA_VERSION-linux-x64.rpm -O jdk-8-linux-x64.rpm -RUN rpm -ivh jdk-8-linux-x64.rpm +ENV JAVA_VERSION 10.0.2 +ENV BUILD_VERSION 13 + +RUN wget --no-check-certificate --no-cookies --header "Cookie:oraclelicense=accept-securebackup-cookie" http://download.oracle.com/otn-pub/java/jdk/$JAVA_VERSION+$BUILD_VERSION/19aef61b38124481863b1413dce1855f/jdk-${JAVA_VERSION}_linux-x64_bin.rpm -O jdk-10-linux-x64.rpm +RUN rpm -ivh jdk-10-linux-x64.rpm ENV JAVA_HOME /usr/java/default/ #Install Selenium server diff --git a/ambari-logsearch/pom.xml b/ambari-logsearch/pom.xml index 3fc5974..bb434d9 100644 --- a/ambari-logsearch/pom.xml +++ b/ambari-logsearch/pom.xml @@ -39,7 +39,7 @@ <module>ambari-logsearch-config-solr</module> </modules> <properties> - <jdk.version>1.8</jdk.version> + <jdk.version>10</jdk.version> <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding> <python.ver>python >= 2.6</python.ver> <deb.python.ver>python (>= 2.6)</deb.python.ver> @@ -202,7 +202,7 @@ </plugin> <plugin> <artifactId>maven-compiler-plugin</artifactId> - <version>3.2</version> + <version>3.7.0</version> <configuration> <source>${jdk.version}</source> <target>${jdk.version}</target>
