This is an automated email from the ASF dual-hosted git repository. solomax pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/openmeetings.git
The following commit(s) were added to refs/heads/master by this push: new ff7f413 [OPENMEETINGS-2593] wicket and friends ff7f413 is described below commit ff7f413bba288e571cf7088df3cf9e212f01c56f Author: Maxim Solodovnik <solomax...@gmail.com> AuthorDate: Sat Apr 3 23:38:49 2021 +0700 [OPENMEETINGS-2593] wicket and friends --- openmeetings-db/pom.xml | 8 +++++- .../src/site/xdoc/CommandLineAdmin.xml | 2 +- .../util/crypt/SCryptImplementation.java | 2 +- openmeetings-web/pom.xml | 16 ++++++------ .../apache/openmeetings/web/app/Application.java | 9 ++++--- .../web/app/OmAuthenticationStrategy.java | 14 ++++++++-- .../apache/openmeetings/web/room/RoomPanel.java | 3 +-- .../webapp/WEB-INF/classes/openmeetings.properties | 3 +++ .../web/app/TestOmAuthenticationStrategy.java | 4 ++- .../web/pages/install/TestInstall.java | 4 +-- pom.xml | 30 ++++++++++------------ 11 files changed, 57 insertions(+), 38 deletions(-) diff --git a/openmeetings-db/pom.xml b/openmeetings-db/pom.xml index af04d2f..70f725f 100644 --- a/openmeetings-db/pom.xml +++ b/openmeetings-db/pom.xml @@ -39,9 +39,15 @@ <artifactId>openmeetings-util</artifactId> </dependency> <dependency> + <!-- required for JAXB/CXF --> + <groupId>org.glassfish.jaxb</groupId> + <artifactId>jaxb-runtime</artifactId> + <version>2.3.3</version> + </dependency> + <dependency> <groupId>org.wicketstuff</groupId> <artifactId>wicketstuff-datastore-hazelcast</artifactId> - <version>${wickets.version}</version> + <version>${wicketstuff.version}</version> </dependency> <dependency> <groupId>org.apache.openjpa</groupId> diff --git a/openmeetings-server/src/site/xdoc/CommandLineAdmin.xml b/openmeetings-server/src/site/xdoc/CommandLineAdmin.xml index e49f897..bab505c 100644 --- a/openmeetings-server/src/site/xdoc/CommandLineAdmin.xml +++ b/openmeetings-server/src/site/xdoc/CommandLineAdmin.xml @@ -53,7 +53,7 @@ -r,--restore Restores OM -file <arg> file used for backup/restore/install -------------------------------------------------------------------------------------------------- - -l,--LDAP Import LDAP users into DB + -l,--ldap Import LDAP users into DB -d,--domain-id <arg> LDAP domain Id --print-only (optional) Print users found instead of importing -------------------------------------------------------------------------------------------------- diff --git a/openmeetings-util/src/main/java/org/apache/openmeetings/util/crypt/SCryptImplementation.java b/openmeetings-util/src/main/java/org/apache/openmeetings/util/crypt/SCryptImplementation.java index 560d824..542eef9 100644 --- a/openmeetings-util/src/main/java/org/apache/openmeetings/util/crypt/SCryptImplementation.java +++ b/openmeetings-util/src/main/java/org/apache/openmeetings/util/crypt/SCryptImplementation.java @@ -60,7 +60,7 @@ public class SCryptImplementation implements ICrypt { props.load(is); cost = Integer.valueOf(props.getProperty("scrypt.cost", "" + cost)); } catch (Exception e) { - log.error("Failed to initialize the cost", e); + log.error("Failed to initialize the cost {}", e.getMessage()); } } diff --git a/openmeetings-web/pom.xml b/openmeetings-web/pom.xml index 8f34c03..1929ad1 100644 --- a/openmeetings-web/pom.xml +++ b/openmeetings-web/pom.xml @@ -556,7 +556,7 @@ <dependency> <groupId>org.wicketstuff</groupId> <artifactId>wicketstuff-dashboard-core</artifactId> - <version>${wickets.version}</version> + <version>${wicketstuff.version}</version> </dependency> <dependency> <groupId>org.apache.wicket</groupId> @@ -576,37 +576,37 @@ <dependency> <groupId>com.googlecode.wicket-jquery-ui</groupId> <artifactId>wicket-jquery-ui-core</artifactId> - <version>${wicketju.version}</version> + <version>${wicket-jquery-ui.version}</version> </dependency> <dependency> <groupId>com.googlecode.wicket-jquery-ui</groupId> <artifactId>wicket-jquery-ui</artifactId> - <version>${wicketju.version}</version> + <version>${wicket-jquery-ui.version}</version> </dependency> <dependency> <groupId>com.googlecode.wicket-jquery-ui</groupId> <artifactId>wicket-jquery-ui-calendar</artifactId> - <version>${wicketju.version}</version> + <version>${wicket-jquery-ui.version}</version> </dependency> <dependency> <groupId>com.googlecode.wicket-jquery-ui</groupId> <artifactId>wicket-jquery-ui-plugins</artifactId> - <version>${wicketju.version}</version> + <version>${wicket-jquery-ui.version}</version> </dependency> <dependency> <groupId>org.wicketstuff</groupId> <artifactId>wicketstuff-urlfragment</artifactId> - <version>${wickets.version}</version> + <version>${wicketstuff.version}</version> </dependency> <dependency> <groupId>org.wicketstuff</groupId> <artifactId>wicketstuff-select2</artifactId> - <version>${wickets.version}</version> + <version>${wicketstuff.version}</version> </dependency> <dependency> <groupId>org.wicketstuff</groupId> <artifactId>jqplot</artifactId> - <version>${wickets.version}</version> + <version>${wicketstuff.version}</version> </dependency> <dependency> <groupId>de.agilecoders.wicket</groupId> diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java index 440db0f..c70725e 100644 --- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java +++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/Application.java @@ -111,7 +111,7 @@ import org.apache.wicket.markup.head.filter.FilteringHeaderResponse; import org.apache.wicket.markup.html.WebPage; import org.apache.wicket.pageStore.IPageStore; import org.apache.wicket.pageStore.SerializingPageStore; -import org.apache.wicket.protocol.ws.WebSocketAwareCsrfPreventionRequestCycleListener; +import org.apache.wicket.protocol.ws.WebSocketAwareResourceIsolationRequestCycleListener; import org.apache.wicket.request.IRequestHandler; import org.apache.wicket.request.Response; import org.apache.wicket.request.Url; @@ -129,6 +129,7 @@ import org.apache.wicket.validation.validator.UrlValidator; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.beans.factory.annotation.Value; import org.springframework.context.ApplicationContext; import org.springframework.stereotype.Component; import org.wicketstuff.dashboard.WidgetRegistry; @@ -190,11 +191,13 @@ public class Application extends AuthenticatedWebApplication implements IApplica private AppointmentDao appointmentDao; @Autowired private SipManager sipManager; + @Value("${remember.me.encryption.key}") + private String encryptionKey; @Override protected void init() { setWicketApplicationName(super.getName()); - getSecuritySettings().setAuthenticationStrategy(new OmAuthenticationStrategy()); + getSecuritySettings().setAuthenticationStrategy(new OmAuthenticationStrategy(encryptionKey)); getApplicationSettings().setAccessDeniedPage(AccessDeniedPage.class); getApplicationSettings().setInternalErrorPage(InternalErrorPage.class); getExceptionSettings().setUnexpectedExceptionDisplay(ExceptionSettings.SHOW_INTERNAL_ERROR_PAGE); @@ -263,7 +266,7 @@ public class Application extends AuthenticatedWebApplication implements IApplica //chain of Resource Loaders, if not found it will search in Wicket's internal //Resource Loader for a the property key getResourceSettings().getStringResourceLoaders().add(0, new LabelResourceLoader()); - getRequestCycleListeners().add(new WebSocketAwareCsrfPreventionRequestCycleListener() { + getRequestCycleListeners().add(new WebSocketAwareResourceIsolationRequestCycleListener() { @Override public void onBeginRequest(RequestCycle cycle) { String wsUrl = getWsUrl(cycle.getRequest().getUrl()); diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/OmAuthenticationStrategy.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/OmAuthenticationStrategy.java index b83266c..070f9ef 100644 --- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/OmAuthenticationStrategy.java +++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/app/OmAuthenticationStrategy.java @@ -20,13 +20,15 @@ package org.apache.openmeetings.web.app; import org.apache.openmeetings.db.entity.user.User.Type; import org.apache.wicket.authentication.strategy.DefaultAuthenticationStrategy; +import org.apache.wicket.util.crypt.ICrypt; +import org.apache.wicket.util.crypt.SunJceCrypt; import org.apache.wicket.util.string.Strings; public class OmAuthenticationStrategy extends DefaultAuthenticationStrategy { private static final String COOKIE_KEY = "LoggedIn"; - public OmAuthenticationStrategy() { - super(COOKIE_KEY); + public OmAuthenticationStrategy(String encryptionKey) { + super(COOKIE_KEY, defaultCrypt(encryptionKey)); } /** @@ -65,4 +67,12 @@ public class OmAuthenticationStrategy extends DefaultAuthenticationStrategy { super.save(username, password, type.name(), String.valueOf(domainId)); } } + + private static ICrypt defaultCrypt(String encryptionKey) { + byte[] salt = SunJceCrypt.randomSalt(); + + SunJceCrypt crypt = new SunJceCrypt(salt, 1000); + crypt.setKey(encryptionKey); + return crypt; + } } diff --git a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java index 98781c1..de66749 100644 --- a/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java +++ b/openmeetings-web/src/main/java/org/apache/openmeetings/web/room/RoomPanel.java @@ -529,7 +529,7 @@ public class RoomPanel extends BasePanel { wb.reloadWb(handler); } break; - case MODERATOR_IN_ROOM: { + case MODERATOR_IN_ROOM: if (!r.isModerated() || !r.isWaitModerator()) { log.warn("Something weird: `moderatorInRoom` in wrong room {}", r); } else if (!curClient.hasRight(Room.Right.MODERATOR)) { @@ -546,7 +546,6 @@ public class RoomPanel extends BasePanel { } } } - } break; case WB_PUT_FILE: onWbPutFile((TextRoomMessage)m); diff --git a/openmeetings-web/src/main/webapp/WEB-INF/classes/openmeetings.properties b/openmeetings-web/src/main/webapp/WEB-INF/classes/openmeetings.properties index 41727a7..b2aadca 100644 --- a/openmeetings-web/src/main/webapp/WEB-INF/classes/openmeetings.properties +++ b/openmeetings-web/src/main/webapp/WEB-INF/classes/openmeetings.properties @@ -18,6 +18,9 @@ # ################## Crypt ################## scrypt.cost=16384 +## please ensure this one is unique, better to regenerate it from time to time +## can be generated for ex. here https://www.uuidtools.com +remember.me.encryption.key=27574200-a56f-410a-b2c9-3aa3b4b9389a ################## Timeouts ################## # 5000 == 5 sec diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/web/app/TestOmAuthenticationStrategy.java b/openmeetings-web/src/test/java/org/apache/openmeetings/web/app/TestOmAuthenticationStrategy.java index ba0e5c9..59faea9 100644 --- a/openmeetings-web/src/test/java/org/apache/openmeetings/web/app/TestOmAuthenticationStrategy.java +++ b/openmeetings-web/src/test/java/org/apache/openmeetings/web/app/TestOmAuthenticationStrategy.java @@ -18,6 +18,7 @@ */ package org.apache.openmeetings.web.app; +import static java.util.UUID.randomUUID; import static org.junit.jupiter.api.Assertions.assertEquals; import static org.junit.jupiter.api.Assertions.assertNotNull; import static org.junit.jupiter.api.Assertions.assertNull; @@ -31,7 +32,8 @@ import org.junit.jupiter.api.Test; class TestOmAuthenticationStrategy extends AbstractWicketTester { @Test void test() { - OmAuthenticationStrategy s = new OmAuthenticationStrategy(); + String encKey = randomUUID().toString(); + OmAuthenticationStrategy s = new OmAuthenticationStrategy(encKey); s.save(null, null, User.Type.OAUTH, null); assertNull(s.load(), "Wasn't saved, should not be loaded"); diff --git a/openmeetings-web/src/test/java/org/apache/openmeetings/web/pages/install/TestInstall.java b/openmeetings-web/src/test/java/org/apache/openmeetings/web/pages/install/TestInstall.java index cab2612..de2da84 100644 --- a/openmeetings-web/src/test/java/org/apache/openmeetings/web/pages/install/TestInstall.java +++ b/openmeetings-web/src/test/java/org/apache/openmeetings/web/pages/install/TestInstall.java @@ -51,7 +51,7 @@ import org.apache.openmeetings.web.app.WebSession; import org.apache.wicket.ajax.AjaxClientInfoBehavior; import org.apache.wicket.behavior.AbstractAjaxBehavior; import org.apache.wicket.extensions.wizard.WizardButton; -import org.apache.wicket.protocol.ws.WebSocketAwareCsrfPreventionRequestCycleListener; +import org.apache.wicket.protocol.ws.WebSocketAwareResourceIsolationRequestCycleListener; import org.apache.wicket.request.cycle.IRequestCycleListener; import org.apache.wicket.request.cycle.RequestCycleListenerCollection; import org.apache.wicket.util.tester.FormTester; @@ -99,7 +99,7 @@ public class TestInstall { RequestCycleListenerCollection listeners = tester.getApplication().getRequestCycleListeners(); for (Iterator<IRequestCycleListener> iter = listeners.iterator(); iter.hasNext();) { IRequestCycleListener l = iter.next(); - if (l instanceof WebSocketAwareCsrfPreventionRequestCycleListener) { + if (l instanceof WebSocketAwareResourceIsolationRequestCycleListener) { listeners.remove(l); break; } diff --git a/pom.xml b/pom.xml index 08c012b..3c88983 100644 --- a/pom.xml +++ b/pom.xml @@ -78,15 +78,15 @@ <frontend-maven-plugin.version>1.11.0</frontend-maven-plugin.version> <!-- dependency versions --> <junit.version>5.7.1</junit.version> - <wicket.version>9.2.0</wicket.version> - <wicketju.version>9.2.1</wicketju.version> - <wickets.version>9.2.0</wickets.version> - <wicket-bootstrap.version>5.0.3</wicket-bootstrap.version> + <wicket.version>9.3.0</wicket.version> + <wicket-jquery-ui.version>9.3.1</wicket-jquery-ui.version> + <wicketstuff.version>9.3.0</wicketstuff.version> + <wicket-bootstrap.version>5.0.4</wicket-bootstrap.version> <font-awesome.version>5.15.2</font-awesome.version> - <spring.version>5.3.4</spring.version> + <spring.version>5.3.5</spring.version> <tomcat.version>9.0.44</tomcat.version> <ical4j.version>3.0.21</ical4j.version> - <cxf.version>3.4.2</cxf.version> + <cxf.version>3.4.3</cxf.version> <io.prometheus.version>0.10.0</io.prometheus.version> <aspectjtools.version>1.9.6</aspectjtools.version> <simple-xml.version>2.7.1</simple-xml.version> @@ -97,7 +97,7 @@ <commons-lang3.version>3.12.0</commons-lang3.version> <javax.mail.version>1.6.2</javax.mail.version> <openjpa.version>3.1.2</openjpa.version> - <asterisk-java.version>3.10.0</asterisk-java.version> + <asterisk-java.version>3.11.0</asterisk-java.version> <commons-dbcp.version>2.8.0</commons-dbcp.version> <commons-pool2.version>2.9.0</commons-pool2.version> <commons-cli.version>1.4</commons-cli.version> @@ -109,10 +109,10 @@ <mssql.version>9.2.1.jre11</mssql.version> <ojdbc.version>19.10.0.0</ojdbc.version> <commons-collections4.version>4.4</commons-collections4.version> - <xstream.version>1.4.15</xstream.version> + <xstream.version>1.4.16</xstream.version> <api-all.version>2.0.1</api-all.version> <caldav4j.version>1.0.1</caldav4j.version> - <tika-parsers.version>1.25</tika-parsers.version> + <tika-parsers.version>1.26</tika-parsers.version> <commons-text.version>1.9</commons-text.version> <slf4j.version>1.7.30</slf4j.version> <logback.version>1.2.3</logback.version> @@ -659,14 +659,6 @@ <groupId>org.slf4j</groupId> <artifactId>slf4j-log4j12</artifactId> </exclusion> - <exclusion> <!-- TIKA-2801 --> - <groupId>com.google.guava</groupId> - <artifactId>guava</artifactId> - </exclusion> - <exclusion> <!-- TIKA-2801 --> - <groupId>com.google.protobuf</groupId> - <artifactId>protobuf-java</artifactId> - </exclusion> <exclusion> <groupId>xml-apis</groupId> <artifactId>xml-apis</artifactId> @@ -675,6 +667,10 @@ <groupId>xerces</groupId> <artifactId>xercesImpl</artifactId> </exclusion> + <exclusion> + <groupId>org.glassfish.jaxb</groupId> + <artifactId>jaxb-runtime</artifactId> + </exclusion> </exclusions> </dependency> <dependency>