This is an automated email from the ASF dual-hosted git repository. ilgrosso pushed a commit to branch master in repository https://gitbox.apache.org/repos/asf/syncope.git
The following commit(s) were added to refs/heads/master by this push: new 7388f21987 [SYNCOPE-1723] Removing static paths from generated artifacts (#405) (#406) 7388f21987 is described below commit 7388f21987e3cc6ade291691a2ced6e6fa292cd4 Author: Francesco Chicchiriccò <ilgro...@users.noreply.github.com> AuthorDate: Tue Jan 24 11:32:43 2023 +0100 [SYNCOPE-1723] Removing static paths from generated artifacts (#405) (#406) --- archetype/pom.xml | 26 +++++++- .../resources/archetype-resources/core/pom.xml | 4 -- .../main/resources/archetype-resources/fit/pom.xml | 8 ++- archetype/src/main/resources/meta-pom.xml | 2 + core/idm/logic/pom.xml | 10 +++ core/persistence-jpa-json/pom.xml | 3 + .../resources/domains/jpa-json/MasterContent.xml | 4 +- .../src/test/resources/core-myjson-test.properties | 2 +- .../src/test/resources/core-ojson-test.properties | 2 +- .../test/resources/core-pgjsonb-test.properties | 2 +- .../src/test/resources/domains/MasterContent.xml | 20 +++--- core/persistence-jpa/pom.xml | 1 + .../src/main/resources/domains/MasterContent.xml | 4 +- .../src/test/resources/core-test.properties | 2 +- .../src/test/resources/domains/MasterContent.xml | 20 +++--- .../src/test/resources/domains/TwoContent.xml | 2 +- core/provisioning-java/pom.xml | 11 ++++ .../java/data/ConnInstanceDataBinderImpl.java | 14 ++--- core/starter/src/main/resources/core.properties | 4 +- docker/core/src/main/resources/Dockerfile | 2 +- .../core/src/main/resources/core-docker.properties | 2 - docker/pom.xml | 3 - docker/wa/src/main/resources/Dockerfile | 2 +- docker/wa/src/main/resources/wa-docker.properties | 4 -- ...tHandler.java => NoOpSessionLogoutHandler.java} | 4 +- .../syncope/core/logic/oidc/OIDCClientCache.java | 2 +- .../syncope/core/logic/init/SAML2SP4UILoader.java | 4 +- ...tHandler.java => NoOpSessionLogoutHandler.java} | 4 +- .../src/main/resources/core-saml2sp4ui.properties | 2 +- fit/build-tools/pom.xml | 6 -- fit/console-reference/pom.xml | 21 ------- .../src/main/resources/log4j2.xml | 4 +- fit/core-reference/pom.xml | 6 -- .../src/main/resources/core-all.properties | 2 +- .../src/main/resources/core-embedded.properties | 2 +- fit/core-reference/src/main/resources/log4j2.xml | 16 ++--- fit/core-reference/src/test/resources/log4j2.xml | 4 +- .../src/test/resources/test.properties | 2 +- fit/enduser-reference/pom.xml | 21 ------- .../src/main/resources/log4j2.xml | 4 +- fit/wa-reference/pom.xml | 6 +- fit/wa-reference/src/main/resources/log4j2.xml | 4 +- .../src/main/resources/wa-embedded.properties | 8 --- fit/wa-reference/src/test/resources/log4j2.xml | 4 +- pom.xml | 71 +++++++++++++++++++--- sra/pom.xml | 1 + .../org/apache/syncope/sra/SecurityConfig.java | 4 +- ...tHandler.java => NoOpSessionLogoutHandler.java} | 4 +- sra/src/main/resources/log4j2.xml | 8 +-- .../reference-guide/configuration/deployment.adoc | 50 +++++++++++---- .../asciidoc/reference-guide/howto/keystore.adoc | 2 +- .../asciidoc/reference-guide/usage/actuator.adoc | 2 +- .../reference-guide/usage/customization.adoc | 20 +++--- standalone/pom.xml | 27 ++++++-- standalone/src/main/resources/setenv.bat | 2 +- standalone/src/main/resources/setenv.sh | 2 +- .../wa/bootstrap/WABootstrapConfiguration.java | 2 +- wa/starter/pom.xml | 11 ++++ wa/starter/src/main/resources/wa.properties | 6 +- 59 files changed, 293 insertions(+), 199 deletions(-) diff --git a/archetype/pom.xml b/archetype/pom.xml index 12ffaf2882..97f939037c 100644 --- a/archetype/pom.xml +++ b/archetype/pom.xml @@ -42,7 +42,7 @@ under the License. <extension> <groupId>org.apache.maven.archetype</groupId> <artifactId>archetype-packaging</artifactId> - <version>3.2.0</version> + <version>3.2.1</version> </extension> </extensions> @@ -103,6 +103,30 @@ under the License. </configuration> </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-antrun-plugin</artifactId> + <executions> + <execution> + <id>adjust-MasterContent</id> + <goals> + <goal>run</goal> + </goals> + <phase>prepare-package</phase> + <configuration> + <target> + <replace file="${project.build.outputDirectory}/archetype-resources/core/src/main/resources/domains/MasterContent.xml" + token="http://localhost:" + value="https://localhost:"/> + <replace file="${project.build.outputDirectory}/archetype-resources/core/src/test/resources/domains/MasterContent.xml" + token="http://localhost:" + value="https://localhost:"/> + </target> + </configuration> + </execution> + </executions> + </plugin> + <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-checkstyle-plugin</artifactId> diff --git a/archetype/src/main/resources/archetype-resources/core/pom.xml b/archetype/src/main/resources/archetype-resources/core/pom.xml index 602e5280b2..9b380d03a4 100644 --- a/archetype/src/main/resources/archetype-resources/core/pom.xml +++ b/archetype/src/main/resources/archetype-resources/core/pom.xml @@ -158,10 +158,6 @@ under the License. <resource> <directory>src/main/resources</directory> <filtering>true</filtering> - <excludes> - <exclude>workflow.properties</exclude> - <exclude>provisioning.properties</exclude> - </excludes> </resource> <resource> <directory>src/main/resources/all</directory> diff --git a/archetype/src/main/resources/archetype-resources/fit/pom.xml b/archetype/src/main/resources/archetype-resources/fit/pom.xml index 5cc19bf4d4..b1538195ff 100644 --- a/archetype/src/main/resources/archetype-resources/fit/pom.xml +++ b/archetype/src/main/resources/archetype-resources/fit/pom.xml @@ -194,9 +194,10 @@ under the License. <arguments> <argument>-Djavax.net.ssl.trustStore=${basedir}/src/test/resources/keystore.jks</argument> <argument>-Djavax.net.ssl.trustStorePassword=password</argument> + <argument>-Dreactor.netty.http.server.accessLogEnabled=true</argument> + <argument>-Dsyncope.log.dir=${project.build.directory}/log</argument> <argument>-jar</argument> <argument>${basedir}/../sra/target/syncope-sra-exec.jar</argument> - <argument>-Dreactor.netty.http.server.accessLogEnabled=true</argument> </arguments> <environmentVariables> <LOADER_PATH>${basedir}/../sra/target/test-classes</LOADER_PATH> @@ -222,8 +223,6 @@ under the License. <extractDir>${project.build.directory}/cargo/extract</extractDir> </zipUrlInstaller> <timeout>600000</timeout> - <log>${cargo.log}</log> - <output>${cargo.output}</output> <dependencies> <dependency> @@ -240,6 +239,9 @@ under the License. <javax.net.ssl.trustStore>${basedir}/src/test/resources/keystore.jks</javax.net.ssl.trustStore> <javax.net.ssl.trustStorePassword>password</javax.net.ssl.trustStorePassword> + + <syncope.conf.dir>${basedir}/../core/target/test-classes</syncope.conf.dir> + <syncope.connid.location>file:${basedir}/../core/target/bundles/</syncope.connid.location> </systemProperties> </container> <configuration> diff --git a/archetype/src/main/resources/meta-pom.xml b/archetype/src/main/resources/meta-pom.xml index 0a453ee810..62a7b44c00 100644 --- a/archetype/src/main/resources/meta-pom.xml +++ b/archetype/src/main/resources/meta-pom.xml @@ -39,6 +39,8 @@ under the License. <ianal.phase>none</ianal.phase> <rat.skip>true</rat.skip> <checkstyle.skip>true</checkstyle.skip> + + <cargo.servlet.port>9443</cargo.servlet.port> </properties> <name>Apache Syncope sample project</name> diff --git a/core/idm/logic/pom.xml b/core/idm/logic/pom.xml index b1d154d902..9ec7bde15d 100644 --- a/core/idm/logic/pom.xml +++ b/core/idm/logic/pom.xml @@ -128,6 +128,16 @@ under the License. </testResources> <plugins> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-surefire-plugin</artifactId> + <configuration> + <systemProperties> + <syncope.connid.location>file:${bundles.directory}/</syncope.connid.location> + </systemProperties> + </configuration> + </plugin> + <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-checkstyle-plugin</artifactId> diff --git a/core/persistence-jpa-json/pom.xml b/core/persistence-jpa-json/pom.xml index bce5a57487..0b32de86df 100644 --- a/core/persistence-jpa-json/pom.xml +++ b/core/persistence-jpa-json/pom.xml @@ -252,6 +252,7 @@ under the License. <profileId>${project.activeProfiles[0].id}</profileId> <CORE_PROPERTIES>classpath:core-pgjsonb.properties,classpath:core-pgjsonb-test.properties</CORE_PROPERTIES> <DB_CONTAINER_IP>${docker.container.postgres.ip}</DB_CONTAINER_IP> + <syncope.connid.location>file:${bundles.directory}/</syncope.connid.location> </systemProperties> </configuration> </plugin> @@ -365,6 +366,7 @@ under the License. <profileId>${project.activeProfiles[0].id}</profileId> <CORE_PROPERTIES>classpath:core-myjson.properties,classpath:core-myjson-test.properties</CORE_PROPERTIES> <DB_CONTAINER_IP>${docker.container.mysql.ip}</DB_CONTAINER_IP> + <syncope.connid.location>file:${bundles.directory}/</syncope.connid.location> </systemProperties> </configuration> </plugin> @@ -479,6 +481,7 @@ under the License. <profileId>${project.activeProfiles[0].id}</profileId> <CORE_PROPERTIES>classpath:core-ojson.properties,classpath:core-ojson-test.properties</CORE_PROPERTIES> <DB_CONTAINER_IP>${docker.container.oracle.ip}</DB_CONTAINER_IP> + <syncope.connid.location>file:${bundles.directory}/</syncope.connid.location> </systemProperties> </configuration> </plugin> diff --git a/core/persistence-jpa-json/src/main/resources/domains/jpa-json/MasterContent.xml b/core/persistence-jpa-json/src/main/resources/domains/jpa-json/MasterContent.xml index d11e887c2a..6c786da789 100644 --- a/core/persistence-jpa-json/src/main/resources/domains/jpa-json/MasterContent.xml +++ b/core/persistence-jpa-json/src/main/resources/domains/jpa-json/MasterContent.xml @@ -63,7 +63,7 @@ a password reset was requested for ${user.getUsername()}. In order to complete this request, you need to visit this link: -http://localhost:9080/syncope-enduser/confirmpasswordreset?token=${input.get(0).replaceAll(' ', '%20')} +http://localhost:${cargo.servlet.port}/syncope-enduser/confirmpasswordreset?token=${input.get(0).replaceAll(' ', '%20')} If you did not request this reset, just ignore the present e-mail. @@ -74,7 +74,7 @@ Best regards." a password reset was requested for ${user.getUsername()}.</p> <p>In order to complete this request, you need to visit this -<a href="http://localhost:9080/syncope-enduser/confirmpasswordreset?token=${input.get(0).replaceAll(' ', '%20')}">link</a></p>. +<a href="http://localhost:${cargo.servlet.port}/syncope-enduser/confirmpasswordreset?token=${input.get(0).replaceAll(' ', '%20')}">link</a></p>. <p>If you did not request this reset, just ignore the present e-mail.</p> diff --git a/core/persistence-jpa-json/src/test/resources/core-myjson-test.properties b/core/persistence-jpa-json/src/test/resources/core-myjson-test.properties index 759c819729..4bd6124228 100644 --- a/core/persistence-jpa-json/src/test/resources/core-myjson-test.properties +++ b/core/persistence-jpa-json/src/test/resources/core-myjson-test.properties @@ -24,4 +24,4 @@ persistence.domain[0].jdbcURL=jdbc:mysql://${DB_CONTAINER_IP}:3306/syncope?useSS persistence.domain[0].poolMaxActive=10 persistence.domain[0].poolMinIdle=2 -provisioning.connIdLocation=${connid.location} +provisioning.connIdLocation=${syncope.connid.location} diff --git a/core/persistence-jpa-json/src/test/resources/core-ojson-test.properties b/core/persistence-jpa-json/src/test/resources/core-ojson-test.properties index 70b684cc23..96ce2aa12d 100644 --- a/core/persistence-jpa-json/src/test/resources/core-ojson-test.properties +++ b/core/persistence-jpa-json/src/test/resources/core-ojson-test.properties @@ -25,4 +25,4 @@ persistence.domain[0].jdbcURL=jdbc:oracle:thin:@${DB_CONTAINER_IP}:1521/XEPDB1 persistence.domain[0].poolMaxActive=10 persistence.domain[0].poolMinIdle=2 -provisioning.connIdLocation=${connid.location} +provisioning.connIdLocation=${syncope.connid.location} diff --git a/core/persistence-jpa-json/src/test/resources/core-pgjsonb-test.properties b/core/persistence-jpa-json/src/test/resources/core-pgjsonb-test.properties index fb3c8c2667..a7a7b9594a 100644 --- a/core/persistence-jpa-json/src/test/resources/core-pgjsonb-test.properties +++ b/core/persistence-jpa-json/src/test/resources/core-pgjsonb-test.properties @@ -24,4 +24,4 @@ persistence.domain[0].jdbcURL=jdbc:postgresql://${DB_CONTAINER_IP}:5432/syncope? persistence.domain[0].poolMaxActive=10 persistence.domain[0].poolMinIdle=2 -provisioning.connIdLocation=${connid.location} +provisioning.connIdLocation=${syncope.connid.location} diff --git a/core/persistence-jpa-json/src/test/resources/domains/MasterContent.xml b/core/persistence-jpa-json/src/test/resources/domains/MasterContent.xml index d752c340cb..e2fba179a1 100644 --- a/core/persistence-jpa-json/src/test/resources/domains/MasterContent.xml +++ b/core/persistence-jpa-json/src/test/resources/domains/MasterContent.xml @@ -454,7 +454,7 @@ under the License. <ConnInstance id="413bf072-678a-41d3-9d20-8c453b3a39d1" displayName="Errored" adminRealm_id="e4c28e7a-9dbf-4ee7-9441-93812a0d4a28" - location="${connid.location}" + location="${syncope.connid.location}" bundleName="net.tirasa.connid.bundles.missing" connectorName="net.tirasa.connid.bundles.missing.MissingConnector" version="none" @@ -462,7 +462,7 @@ under the License. <ConnInstance id="88a7a819-dab5-46b4-9b90-0b9769eabdb8" displayName="ConnInstance100" adminRealm_id="e4c28e7a-9dbf-4ee7-9441-93812a0d4a28" - location="${connid.location}" + location="${syncope.connid.location}" bundleName="net.tirasa.connid.bundles.soap" connectorName="net.tirasa.connid.bundles.soap.WebServiceConnector" version="${connid.soap.version}" @@ -480,7 +480,7 @@ under the License. <ConnInstance id="5ffbb4ac-a8c3-4b44-b699-11b398a1ba08" displayName="ConnInstance102" adminRealm_id="e4c28e7a-9dbf-4ee7-9441-93812a0d4a28" - location="${connid.location}" + location="${syncope.connid.location}" bundleName="net.tirasa.connid.bundles.soap" connectorName="net.tirasa.connid.bundles.soap.WebServiceConnector" version="${connid.soap.version}" @@ -490,7 +490,7 @@ under the License. <ConnInstance id="fcf9f2b0-f7d6-42c9-84a6-61b28255a42b" displayName="ConnInstance103" adminRealm_id="e4c28e7a-9dbf-4ee7-9441-93812a0d4a28" - location="${connid.location}" + location="${syncope.connid.location}" bundleName="net.tirasa.connid.bundles.soap" connectorName="net.tirasa.connid.bundles.soap.WebServiceConnector" version="${connid.soap.version}" @@ -498,7 +498,7 @@ under the License. <ConnInstance id="6c2acf1b-b052-46f0-8c56-7a8ad6905edf" displayName="CSVDir" adminRealm_id="e4c28e7a-9dbf-4ee7-9441-93812a0d4a28" - location="${connid.location}" + location="${syncope.connid.location}" bundleName="net.tirasa.connid.bundles.csvdir" connectorName="net.tirasa.connid.bundles.csvdir.CSVDirConnector" version="${connid.csvdir.version}" @@ -508,7 +508,7 @@ under the License. <ConnInstance id="74141a3b-0762-4720-a4aa-fc3e374ef3ef" bundleName="net.tirasa.connid.bundles.ldap" displayName="TestLDAP" adminRealm_id="e4c28e7a-9dbf-4ee7-9441-93812a0d4a28" - location="${connid.location}" + location="${syncope.connid.location}" connectorName="net.tirasa.connid.bundles.ldap.LdapConnector" version="${connid.ldap.version}" jsonConf='[{"schema":{"name":"host","type":"java.lang.String","required":true,"order":1,"confidential":false,"defaultValues":[]},"values":["localhost"],"overridable":false},{"schema":{"name":"port","type":"int","required":false,"order":2,"confidential":false,"defaultValues":[389]},"values":[${testds.port}],"overridable":false},{"schema":{"name":"ssl","type":"boolean","required":false,"order":3,"confidential":false,"defaultValues":[false]},"values":["false"],"overridable": [...] @@ -536,7 +536,7 @@ under the License. location="connid://${testconnectorserver.key}@localhost:${testconnectorserver.port}" connectorName="net.tirasa.connid.bundles.db.scriptedsql.ScriptedSQLConnector" displayName="Scripted SQL" version="${connid.database.version}" - jsonConf='[{"schema":{"name":"updateScriptFileName","displayName":"updateScriptFileName","helpMessage":"updateScriptFileName","type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":[]},"overridable":false,"values":["${conf.directory}/scriptedsql/UpdateScript.groovy"]},{"schem [...] + jsonConf='[{"schema":{"name":"updateScriptFileName","displayName":"updateScriptFileName","helpMessage":"updateScriptFileName","type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":[]},"overridable":false,"values":["${syncope.conf.dir}/scriptedsql/UpdateScript.groovy"]},{"sch [...] capabilities='["CREATE","UPDATE","UPDATE_DELTA","DELETE","SEARCH","SYNC"]'/> <ConnInstance id="44c02549-19c3-483c-8025-4919c3283c37" bundlename="net.tirasa.connid.bundles.rest" @@ -544,7 +544,7 @@ under the License. location="connid://${testconnectorserver.key}@localhost:${testconnectorserver.port}" connectorname="net.tirasa.connid.bundles.rest.RESTConnector" displayname="REST" version="${connid.rest.version}" - jsonconf="[{"schema":{"name":"authenticateScript","displayName":"authenticateScript","helpMessage":"authenticateScript","type":"java.lang.String","required":false,"order":6,"confidential":false,"defaultValues":[""]},"overridable":false,"values":[]},{"schema":{"name":"contentType"," [...] + jsonconf="[{"schema":{"name":"authenticateScript","displayName":"authenticateScript","helpMessage":"authenticateScript","type":"java.lang.String","required":false,"order":6,"confidential":false,"defaultValues":[""]},"overridable":false,"values":[]},{"schema":{"name":"contentType"," [...] capabilities='["AUTHENTICATE","CREATE","UPDATE","DELETE","SEARCH","SYNC"]'/> <ExternalResource id="ws-target-resource-1" connector_id="88a7a819-dab5-46b4-9b90-0b9769eabdb8" @@ -833,7 +833,7 @@ a password reset was requested for ${user.getUsername()}. In order to complete this request, you need to visit this link: -http://localhost:9080/syncope-enduser/confirmpasswordreset?token=${input.get(0).replaceAll(' ', '%20')} +http://localhost:${cargo.servlet.port}/syncope-enduser/confirmpasswordreset?token=${input.get(0).replaceAll(' ', '%20')} If you did not request this reset, just ignore the present e-mail. @@ -844,7 +844,7 @@ Best regards." a password reset was requested for ${user.getUsername()}.</p> <p>In order to complete this request, you need to visit this -<a href="http://localhost:9080/syncope-enduser/confirmpasswordreset?token=${input.get(0).replaceAll(' ', '%20')}">link</a></p>. +<a href="http://localhost:${cargo.servlet.port}/syncope-enduser/confirmpasswordreset?token=${input.get(0).replaceAll(' ', '%20')}">link</a></p>. <p>If you did not request this reset, just ignore the present e-mail.</p> diff --git a/core/persistence-jpa/pom.xml b/core/persistence-jpa/pom.xml index 7a5fe1b162..a33beac8cc 100644 --- a/core/persistence-jpa/pom.xml +++ b/core/persistence-jpa/pom.xml @@ -179,6 +179,7 @@ under the License. <artifactId>maven-surefire-plugin</artifactId> <configuration> <systemProperties> + <syncope.connid.location>file:${bundles.directory}/</syncope.connid.location> <h2.returnOffsetDateTime>true</h2.returnOffsetDateTime> <CORE_PROPERTIES>classpath:core-test.properties</CORE_PROPERTIES> </systemProperties> diff --git a/core/persistence-jpa/src/main/resources/domains/MasterContent.xml b/core/persistence-jpa/src/main/resources/domains/MasterContent.xml index 3e32eeffd9..9a7c89fa1f 100644 --- a/core/persistence-jpa/src/main/resources/domains/MasterContent.xml +++ b/core/persistence-jpa/src/main/resources/domains/MasterContent.xml @@ -63,7 +63,7 @@ a password reset was requested for ${user.getUsername()}. In order to complete this request, you need to visit this link: -http://localhost:9080/syncope-enduser/confirmpasswordreset?token=${input.get(0).replaceAll(' ', '%20')} +http://localhost:${cargo.servlet.port}/syncope-enduser/confirmpasswordreset?token=${input.get(0).replaceAll(' ', '%20')} If you did not request this reset, just ignore the present e-mail. @@ -74,7 +74,7 @@ Best regards." a password reset was requested for ${user.getUsername()}.</p> <p>In order to complete this request, you need to visit this -<a href="http://localhost:9080/syncope-enduser/confirmpasswordreset?token=${input.get(0).replaceAll(' ', '%20')}">link</a></p>. +<a href="http://localhost:${cargo.servlet.port}/syncope-enduser/confirmpasswordreset?token=${input.get(0).replaceAll(' ', '%20')}">link</a></p>. <p>If you did not request this reset, just ignore the present e-mail.</p> diff --git a/core/persistence-jpa/src/test/resources/core-test.properties b/core/persistence-jpa/src/test/resources/core-test.properties index d71e3c676a..bcd721e584 100644 --- a/core/persistence-jpa/src/test/resources/core-test.properties +++ b/core/persistence-jpa/src/test/resources/core-test.properties @@ -45,4 +45,4 @@ persistence.domain[1].adminCipherAlgorithm=SHA provisioning.quartz.delegate=org.quartz.impl.jdbcjobstore.StdJDBCDelegate provisioning.quartz.sql=tables_h2.sql -provisioning.connIdLocation=${connid.location} +provisioning.connIdLocation=${syncope.connid.location} diff --git a/core/persistence-jpa/src/test/resources/domains/MasterContent.xml b/core/persistence-jpa/src/test/resources/domains/MasterContent.xml index 21ff82ca72..abfbc39271 100644 --- a/core/persistence-jpa/src/test/resources/domains/MasterContent.xml +++ b/core/persistence-jpa/src/test/resources/domains/MasterContent.xml @@ -540,7 +540,7 @@ under the License. <ConnInstance id="413bf072-678a-41d3-9d20-8c453b3a39d1" displayName="Errored" adminRealm_id="e4c28e7a-9dbf-4ee7-9441-93812a0d4a28" - location="${connid.location}" + location="${syncope.connid.location}" bundleName="net.tirasa.connid.bundles.missing" connectorName="net.tirasa.connid.bundles.missing.MissingConnector" version="none" @@ -548,7 +548,7 @@ under the License. <ConnInstance id="88a7a819-dab5-46b4-9b90-0b9769eabdb8" displayName="ConnInstance100" adminRealm_id="e4c28e7a-9dbf-4ee7-9441-93812a0d4a28" - location="${connid.location}" + location="${syncope.connid.location}" bundleName="net.tirasa.connid.bundles.soap" connectorName="net.tirasa.connid.bundles.soap.WebServiceConnector" version="${connid.soap.version}" @@ -566,7 +566,7 @@ under the License. <ConnInstance id="5ffbb4ac-a8c3-4b44-b699-11b398a1ba08" displayName="ConnInstance102" adminRealm_id="e4c28e7a-9dbf-4ee7-9441-93812a0d4a28" - location="${connid.location}" + location="${syncope.connid.location}" bundleName="net.tirasa.connid.bundles.soap" connectorName="net.tirasa.connid.bundles.soap.WebServiceConnector" version="${connid.soap.version}" @@ -576,7 +576,7 @@ under the License. <ConnInstance id="fcf9f2b0-f7d6-42c9-84a6-61b28255a42b" displayName="ConnInstance103" adminRealm_id="e4c28e7a-9dbf-4ee7-9441-93812a0d4a28" - location="${connid.location}" + location="${syncope.connid.location}" bundleName="net.tirasa.connid.bundles.soap" connectorName="net.tirasa.connid.bundles.soap.WebServiceConnector" version="${connid.soap.version}" @@ -584,7 +584,7 @@ under the License. <ConnInstance id="6c2acf1b-b052-46f0-8c56-7a8ad6905edf" displayName="CSVDir" adminRealm_id="e4c28e7a-9dbf-4ee7-9441-93812a0d4a28" - location="${connid.location}" + location="${syncope.connid.location}" bundleName="net.tirasa.connid.bundles.csvdir" connectorName="net.tirasa.connid.bundles.csvdir.CSVDirConnector" version="${connid.csvdir.version}" @@ -594,7 +594,7 @@ under the License. <ConnInstance id="74141a3b-0762-4720-a4aa-fc3e374ef3ef" bundleName="net.tirasa.connid.bundles.ldap" displayName="TestLDAP" adminRealm_id="e4c28e7a-9dbf-4ee7-9441-93812a0d4a28" - location="${connid.location}" + location="${syncope.connid.location}" connectorName="net.tirasa.connid.bundles.ldap.LdapConnector" version="${connid.ldap.version}" jsonConf='[{"schema":{"name":"host","type":"java.lang.String","required":true,"order":1,"confidential":false,"defaultValues":[]},"values":["localhost"],"overridable":false},{"schema":{"name":"port","type":"int","required":false,"order":2,"confidential":false,"defaultValues":[389]},"values":[${testds.port}],"overridable":false},{"schema":{"name":"ssl","type":"boolean","required":false,"order":3,"confidential":false,"defaultValues":[false]},"values":["false"],"overridable": [...] @@ -622,7 +622,7 @@ under the License. location="connid://${testconnectorserver.key}@localhost:${testconnectorserver.port}" connectorName="net.tirasa.connid.bundles.db.scriptedsql.ScriptedSQLConnector" displayName="Scripted SQL" version="${connid.database.version}" - jsonConf='[{"schema":{"name":"updateScriptFileName","displayName":"updateScriptFileName","helpMessage":"updateScriptFileName","type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":[]},"overridable":false,"values":["${conf.directory}/scriptedsql/UpdateScript.groovy"]},{"schem [...] + jsonConf='[{"schema":{"name":"updateScriptFileName","displayName":"updateScriptFileName","helpMessage":"updateScriptFileName","type":"java.lang.String","required":false,"order":0,"confidential":false,"defaultValues":[]},"overridable":false,"values":["${syncope.conf.dir}/scriptedsql/UpdateScript.groovy"]},{"sch [...] capabilities='["CREATE","UPDATE","UPDATE_DELTA","DELETE","SEARCH","SYNC"]'/> <ConnInstance id="44c02549-19c3-483c-8025-4919c3283c37" bundlename="net.tirasa.connid.bundles.rest" @@ -630,7 +630,7 @@ under the License. location="connid://${testconnectorserver.key}@localhost:${testconnectorserver.port}" connectorname="net.tirasa.connid.bundles.rest.RESTConnector" displayname="REST" version="${connid.rest.version}" - jsonconf="[{"schema":{"name":"authenticateScript","displayName":"authenticateScript","helpMessage":"authenticateScript","type":"java.lang.String","required":false,"order":6,"confidential":false,"defaultValues":[""]},"overridable":false,"values":[]},{"schema":{"name":"contentType"," [...] + jsonconf="[{"schema":{"name":"authenticateScript","displayName":"authenticateScript","helpMessage":"authenticateScript","type":"java.lang.String","required":false,"order":6,"confidential":false,"defaultValues":[""]},"overridable":false,"values":[]},{"schema":{"name":"contentType"," [...] capabilities='["AUTHENTICATE","CREATE","UPDATE","DELETE","SEARCH","SYNC"]'/> <ExternalResource id="ws-target-resource-1" connector_id="88a7a819-dab5-46b4-9b90-0b9769eabdb8" @@ -919,7 +919,7 @@ a password reset was requested for ${user.getUsername()}. In order to complete this request, you need to visit this link: -http://localhost:9080/syncope-enduser/confirmpasswordreset?token=${input.get(0).replaceAll(' ', '%20')} +http://localhost:${cargo.servlet.port}/syncope-enduser/confirmpasswordreset?token=${input.get(0).replaceAll(' ', '%20')} If you did not request this reset, just ignore the present e-mail. @@ -930,7 +930,7 @@ Best regards." a password reset was requested for ${user.getUsername()}.</p> <p>In order to complete this request, you need to visit this -<a href="http://localhost:9080/syncope-enduser/confirmpasswordreset?token=${input.get(0).replaceAll(' ', '%20')}">link</a></p>. +<a href="http://localhost:${cargo.servlet.port}/syncope-enduser/confirmpasswordreset?token=${input.get(0).replaceAll(' ', '%20')}">link</a></p>. <p>If you did not request this reset, just ignore the present e-mail.</p> diff --git a/core/persistence-jpa/src/test/resources/domains/TwoContent.xml b/core/persistence-jpa/src/test/resources/domains/TwoContent.xml index 8724010633..c0b90e5d37 100644 --- a/core/persistence-jpa/src/test/resources/domains/TwoContent.xml +++ b/core/persistence-jpa/src/test/resources/domains/TwoContent.xml @@ -94,7 +94,7 @@ we are happy to inform you that the password request was successfully executed f <ConnInstance id="b7ea96c3-c633-488b-98a0-b52ac35850f7" bundleName="net.tirasa.connid.bundles.ldap" displayName="LDAP" adminRealm_id="ea696a4f-e77a-4ef1-be67-8f8093bc8686" - location="${connid.location}" + location="${syncope.connid.location}" connectorName="net.tirasa.connid.bundles.ldap.LdapConnector" version="${connid.ldap.version}" jsonConf='[{"schema":{"name":"synchronizePasswords","displayName":"Enable Password Synchronization","helpMessage":"If true, the connector will synchronize passwords. The Password Capture Plugin needs to be installed for password synchronization to work.","type":"boolean","required":false,"order":0,"confidential":false,"defaultValues":null},"overridable":false,"values":["false"]},{"schema":{"name":"maintainLdapGroupMembership","displayName":"Maintain LDAP Group Membership" [...] diff --git a/core/provisioning-java/pom.xml b/core/provisioning-java/pom.xml index 542e4314d4..16cce32ceb 100644 --- a/core/provisioning-java/pom.xml +++ b/core/provisioning-java/pom.xml @@ -175,6 +175,17 @@ under the License. </executions> </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-surefire-plugin</artifactId> + <configuration> + <systemProperties> + <syncope.conf.dir>${project.build.directory}/test-classes</syncope.conf.dir> + <syncope.connid.location>file:${bundles.directory}/</syncope.connid.location> + </systemProperties> + </configuration> + </plugin> + <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-checkstyle-plugin</artifactId> diff --git a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/ConnInstanceDataBinderImpl.java b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/ConnInstanceDataBinderImpl.java index 3d10cc299f..7bbdf8cce6 100644 --- a/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/ConnInstanceDataBinderImpl.java +++ b/core/provisioning-java/src/main/java/org/apache/syncope/core/provisioning/java/data/ConnInstanceDataBinderImpl.java @@ -22,7 +22,6 @@ import java.net.URI; import java.util.Collection; import java.util.Collections; import java.util.List; -import java.util.Optional; import org.apache.commons.lang3.tuple.Pair; import org.apache.syncope.common.lib.SyncopeClientException; import org.apache.syncope.common.lib.to.ConnInstanceTO; @@ -232,12 +231,13 @@ public class ConnInstanceDataBinderImpl implements ConnInstanceDataBinder { properties.getPropertyNames().forEach(propName -> { ConnConfPropSchema schema = build(properties.getProperty(propName)); - Optional<ConnConfProperty> property = connInstanceTO.getConf(propName); - if (property.isEmpty()) { - property = Optional.of(new ConnConfProperty()); - connInstanceTO.getConf().add(property.get()); - } - property.get().setSchema(schema); + ConnConfProperty property = connInstanceTO.getConf(propName). + orElseGet(() -> { + ConnConfProperty p = new ConnConfProperty(); + connInstanceTO.getConf().add(p); + return p; + }); + property.setSchema(schema); }); } catch (Exception e) { LOG.error("Could not get ConnId information for {} / {}#{}#{}", diff --git a/core/starter/src/main/resources/core.properties b/core/starter/src/main/resources/core.properties index b9c992abda..933aed4181 100644 --- a/core/starter/src/main/resources/core.properties +++ b/core/starter/src/main/resources/core.properties @@ -24,8 +24,6 @@ server.servlet.encoding.charset=UTF-8 server.servlet.encoding.enabled=true server.servlet.encoding.force=true -conf.directory=${conf.directory} - server.servlet.contextPath=/syncope cxf.path=/rest @@ -67,7 +65,7 @@ provisioning.propagationTaskExecutorAsyncExecutor.queueCapacity=100 provisioning.virAttrCacheSpec=maximumSize=5000,expireAfterAccess=1m -provisioning.connIdLocation=${connid.location} +provisioning.connIdLocation=${syncope.connid.location} provisioning.quartz.delegate=org.quartz.impl.jdbcjobstore.PostgreSQLDelegate provisioning.quartz.sql=tables_postgres.sql diff --git a/docker/core/src/main/resources/Dockerfile b/docker/core/src/main/resources/Dockerfile index 1f7840f390..71e0de25b5 100644 --- a/docker/core/src/main/resources/Dockerfile +++ b/docker/core/src/main/resources/Dockerfile @@ -40,7 +40,7 @@ COPY lib/syncope-docker-core-*war /opt/syncope/lib/syncope.war ENV SPRING_PROFILES_ACTIVE=docker ENV LOADER_PATH="/opt/syncope/conf,/opt/syncope/lib" -ENV JAVA_OPTS="-Dfile.encoding=UTF-8 -server -Xms1536m -Xmx1536m -XX:NewSize=256m -XX:MaxNewSize=256m -XX:+DisableExplicitGC -Djava.security.egd=file:/dev/./urandom" +ENV JAVA_OPTS="-Dfile.encoding=UTF-8 -Dsyncope.conf.dir=/opt/syncope/conf -Dsyncope.connid.location=file:/opt/syncope/bundles -server -Xms1536m -Xmx1536m -XX:NewSize=256m -XX:MaxNewSize=256m -XX:+DisableExplicitGC -Djava.security.egd=file:/dev/./urandom" COPY startup.sh /opt/syncope/bin RUN chmod 755 /opt/syncope/bin/startup.sh diff --git a/docker/core/src/main/resources/core-docker.properties b/docker/core/src/main/resources/core-docker.properties index 44fe8dc9b7..cc26066714 100644 --- a/docker/core/src/main/resources/core-docker.properties +++ b/docker/core/src/main/resources/core-docker.properties @@ -25,6 +25,4 @@ security.anonymousKey=${ANONYMOUS_KEY:anonymousKey} persistence.remoteCommitProvider=${OPENJPA_REMOTE_COMMIT} -provisioning.connIdLocation=${connid.location} - logging.config=file:///opt/syncope/conf/log4j2.xml diff --git a/docker/pom.xml b/docker/pom.xml index 0b0df83430..d0d3a40b49 100644 --- a/docker/pom.xml +++ b/docker/pom.xml @@ -34,10 +34,7 @@ under the License. <packaging>pom</packaging> <properties> - <conf.directory>/opt/syncope/conf</conf.directory> <bundles.directory>/opt/syncope/bundles</bundles.directory> - <connid.location>file:${bundles.directory}/</connid.location> - <log.directory>/opt/syncope/log</log.directory> <rootpom.basedir>${basedir}/..</rootpom.basedir> </properties> diff --git a/docker/wa/src/main/resources/Dockerfile b/docker/wa/src/main/resources/Dockerfile index ea5b7a6caa..f5b7c10f4a 100644 --- a/docker/wa/src/main/resources/Dockerfile +++ b/docker/wa/src/main/resources/Dockerfile @@ -33,7 +33,7 @@ COPY syncope-docker-wa-*war /opt/syncope/lib/syncope-wa.war ENV SPRING_PROFILES_ACTIVE=docker ENV LOADER_PATH="/opt/syncope/conf,/opt/syncope/lib" -ENV JAVA_OPTS="-Dfile.encoding=UTF-8 -server -Xms1536m -Xmx1536m -XX:NewSize=256m -XX:MaxNewSize=256m -XX:+DisableExplicitGC -Djava.security.egd=file:/dev/./urandom" +ENV JAVA_OPTS="-Dfile.encoding=UTF-8 -Dsyncope.conf.dir=/opt/syncope/conf -server -Xms1536m -Xmx1536m -XX:NewSize=256m -XX:MaxNewSize=256m -XX:+DisableExplicitGC -Djava.security.egd=file:/dev/./urandom" COPY startup.sh /opt/syncope/bin RUN chmod 755 /opt/syncope/bin/startup.sh diff --git a/docker/wa/src/main/resources/wa-docker.properties b/docker/wa/src/main/resources/wa-docker.properties index 024729f11c..b823b1ad76 100644 --- a/docker/wa/src/main/resources/wa-docker.properties +++ b/docker/wa/src/main/resources/wa-docker.properties @@ -20,10 +20,6 @@ keymaster.password=${KEYMASTER_PASSWORD} cas.server.name=${CAS_SERVER_NAME} -conf.directory=/opt/syncope/conf -cas.standalone.configuration-directory=${conf.directory} -cas.authn.saml-idp.metadata.http.metadata-backup-location=file:${conf.directory}/saml - service.discovery.address=${SERVICE_DISCOVERY_ADDRESS} wa.anonymousUser=${ANONYMOUS_USER:anonymous} diff --git a/ext/oidcc4ui/logic/src/main/java/org/apache/syncope/core/logic/oidc/NoOpLogoutHandler.java b/ext/oidcc4ui/logic/src/main/java/org/apache/syncope/core/logic/oidc/NoOpSessionLogoutHandler.java similarity index 86% rename from ext/oidcc4ui/logic/src/main/java/org/apache/syncope/core/logic/oidc/NoOpLogoutHandler.java rename to ext/oidcc4ui/logic/src/main/java/org/apache/syncope/core/logic/oidc/NoOpSessionLogoutHandler.java index 18fd27d4ad..3b0ecccca7 100644 --- a/ext/oidcc4ui/logic/src/main/java/org/apache/syncope/core/logic/oidc/NoOpLogoutHandler.java +++ b/ext/oidcc4ui/logic/src/main/java/org/apache/syncope/core/logic/oidc/NoOpSessionLogoutHandler.java @@ -18,7 +18,7 @@ */ package org.apache.syncope.core.logic.oidc; -import org.pac4j.core.logout.handler.LogoutHandler; +import org.pac4j.core.logout.handler.SessionLogoutHandler; -public class NoOpLogoutHandler implements LogoutHandler { +public class NoOpSessionLogoutHandler implements SessionLogoutHandler { } diff --git a/ext/oidcc4ui/logic/src/main/java/org/apache/syncope/core/logic/oidc/OIDCClientCache.java b/ext/oidcc4ui/logic/src/main/java/org/apache/syncope/core/logic/oidc/OIDCClientCache.java index 6a34c71d50..4304e677dd 100644 --- a/ext/oidcc4ui/logic/src/main/java/org/apache/syncope/core/logic/oidc/OIDCClientCache.java +++ b/ext/oidcc4ui/logic/src/main/java/org/apache/syncope/core/logic/oidc/OIDCClientCache.java @@ -108,7 +108,7 @@ public class OIDCClientCache { config.setProviderMetadata(metadata); config.setScope("openid profile email address phone offline_access"); config.setUseNonce(false); - config.setLogoutHandler(new NoOpLogoutHandler()); + config.setSessionLogoutHandler(new NoOpSessionLogoutHandler()); OidcClient client = new OidcClient(config); client.setName(op.getName()); diff --git a/ext/saml2sp4ui/logic/src/main/java/org/apache/syncope/core/logic/init/SAML2SP4UILoader.java b/ext/saml2sp4ui/logic/src/main/java/org/apache/syncope/core/logic/init/SAML2SP4UILoader.java index e090231b52..6472234b7c 100644 --- a/ext/saml2sp4ui/logic/src/main/java/org/apache/syncope/core/logic/init/SAML2SP4UILoader.java +++ b/ext/saml2sp4ui/logic/src/main/java/org/apache/syncope/core/logic/init/SAML2SP4UILoader.java @@ -27,7 +27,7 @@ import org.apache.syncope.common.lib.types.ImplementationTypesHolder; import org.apache.syncope.common.lib.types.SAML2SP4UIEntitlement; import org.apache.syncope.common.lib.types.SAML2SP4UIImplementationType; import org.apache.syncope.core.logic.SAML2SP4UIProperties; -import org.apache.syncope.core.logic.saml2.NoOpLogoutHandler; +import org.apache.syncope.core.logic.saml2.NoOpSessionLogoutHandler; import org.apache.syncope.core.persistence.api.SyncopeCoreLoader; import org.pac4j.saml.config.SAML2Configuration; import org.pac4j.saml.metadata.keystore.BaseSAML2KeystoreGenerator; @@ -88,7 +88,7 @@ public class SAML2SP4UILoader implements SyncopeCoreLoader { cfg.setAuthnRequestSigned(true); cfg.setSpLogoutRequestSigned(true); cfg.setAcceptedSkew(props.getSkew()); - cfg.setLogoutHandler(new NoOpLogoutHandler()); + cfg.setSessionLogoutHandler(new NoOpSessionLogoutHandler()); return cfg; } diff --git a/ext/saml2sp4ui/logic/src/main/java/org/apache/syncope/core/logic/saml2/NoOpLogoutHandler.java b/ext/saml2sp4ui/logic/src/main/java/org/apache/syncope/core/logic/saml2/NoOpSessionLogoutHandler.java similarity index 86% rename from ext/saml2sp4ui/logic/src/main/java/org/apache/syncope/core/logic/saml2/NoOpLogoutHandler.java rename to ext/saml2sp4ui/logic/src/main/java/org/apache/syncope/core/logic/saml2/NoOpSessionLogoutHandler.java index 301502ef92..73eb07e414 100644 --- a/ext/saml2sp4ui/logic/src/main/java/org/apache/syncope/core/logic/saml2/NoOpLogoutHandler.java +++ b/ext/saml2sp4ui/logic/src/main/java/org/apache/syncope/core/logic/saml2/NoOpSessionLogoutHandler.java @@ -18,7 +18,7 @@ */ package org.apache.syncope.core.logic.saml2; -import org.pac4j.core.logout.handler.LogoutHandler; +import org.pac4j.core.logout.handler.SessionLogoutHandler; -public class NoOpLogoutHandler implements LogoutHandler { +public class NoOpSessionLogoutHandler implements SessionLogoutHandler { } diff --git a/ext/saml2sp4ui/logic/src/main/resources/core-saml2sp4ui.properties b/ext/saml2sp4ui/logic/src/main/resources/core-saml2sp4ui.properties index 73c54d2df4..475ba7f2c5 100644 --- a/ext/saml2sp4ui/logic/src/main/resources/core-saml2sp4ui.properties +++ b/ext/saml2sp4ui/logic/src/main/resources/core-saml2sp4ui.properties @@ -15,7 +15,7 @@ # specific language governing permissions and limitations # under the License. saml2.sp4ui.skew=300 -saml2.sp4ui.keystore=file://${conf.directory}/saml.keystore.jks +saml2.sp4ui.keystore=file://${syncope.conf.dir}/saml.keystore.jks saml2.sp4ui.keystore.type=jks saml2.sp4ui.keystore.storepass=changeit saml2.sp4ui.keystore.keypass=changeit diff --git a/fit/build-tools/pom.xml b/fit/build-tools/pom.xml index 6a375e6450..986a74cd66 100644 --- a/fit/build-tools/pom.xml +++ b/fit/build-tools/pom.xml @@ -317,8 +317,6 @@ under the License. <extractDir>${project.build.directory}/cargo/extract</extractDir> </zipUrlInstaller> <timeout>300000</timeout> - <log>${cargo.log}</log> - <output>${cargo.output}</output> </container> <configuration> <properties> @@ -359,8 +357,6 @@ under the License. <extractDir>${project.build.directory}/cargo/extract</extractDir> </zipUrlInstaller> <timeout>300000</timeout> - <log>${cargo.log}</log> - <output>${cargo.output}</output> </container> <configuration> <properties> @@ -395,8 +391,6 @@ under the License. <extractDir>${project.build.directory}/cargo/extract</extractDir> </zipUrlInstaller> <timeout>300000</timeout> - <log>${cargo.log}</log> - <output>${cargo.output}</output> </container> <configuration> <properties> diff --git a/fit/console-reference/pom.xml b/fit/console-reference/pom.xml index b17e3e3699..bbd84dfe8f 100644 --- a/fit/console-reference/pom.xml +++ b/fit/console-reference/pom.xml @@ -113,8 +113,6 @@ under the License. <extractDir>${project.build.directory}/cargo/extract</extractDir> </zipUrlInstaller> <timeout>300000</timeout> - <log>${cargo.log}</log> - <output>${cargo.output}</output> <systemProperties> <java.security.egd>file:/dev/./urandom</java.security.egd> @@ -219,25 +217,6 @@ under the License. <!-- requires JAVA_HOME set to the latest JDK from https://github.com/TravaOpenJDK/trava-jdk-11-dcevm --> <profile> <id>hotswap</id> - - <dependencies> - <!-- wicket-ioc depends on cglib, need to exclude it for hotswap to work --> - <dependency> - <groupId>org.apache.syncope.client.idm</groupId> - <artifactId>syncope-client-idm-console</artifactId> - <version>${project.version}</version> - <exclusions> - <exclusion> - <groupId>cglib</groupId> - <artifactId>cglib</artifactId> - </exclusion> - </exclusions> - </dependency> - <dependency> - <groupId>cglib</groupId> - <artifactId>cglib-nodep</artifactId> - </dependency> - </dependencies> <build> <defaultGoal>clean verify cargo:run</defaultGoal> diff --git a/fit/console-reference/src/main/resources/log4j2.xml b/fit/console-reference/src/main/resources/log4j2.xml index 0750199eae..b52ad4e08d 100644 --- a/fit/console-reference/src/main/resources/log4j2.xml +++ b/fit/console-reference/src/main/resources/log4j2.xml @@ -21,8 +21,8 @@ under the License. <appenders> - <RollingRandomAccessFile name="main" fileName="${log.directory}/console.log" - filePattern="${log.directory}/console-%d{yyyy-MM-dd}.log.gz" + <RollingRandomAccessFile name="main" fileName="${sys:syncope.log.dir}/console.log" + filePattern="${sys:syncope.log.dir}/console-%d{yyyy-MM-dd}.log.gz" immediateFlush="false" append="true"> <PatternLayout> <pattern>%d{HH:mm:ss.SSS} %-5level %logger - %msg%n</pattern> diff --git a/fit/core-reference/pom.xml b/fit/core-reference/pom.xml index b1ea5108d0..7265902cbc 100644 --- a/fit/core-reference/pom.xml +++ b/fit/core-reference/pom.xml @@ -281,8 +281,6 @@ under the License. <extractDir>${project.build.directory}/cargo/extract</extractDir> </zipUrlInstaller> <timeout>300000</timeout> - <log>${cargo.log}</log> - <output>${cargo.output}</output> <systemProperties> <java.security.egd>file:/dev/./urandom</java.security.egd> <java.util.secureRandomSeed>true</java.util.secureRandomSeed> @@ -1485,8 +1483,6 @@ under the License. <downloadDir>${settings.localRepository}/org/codehaus/cargo/cargo-container-archives</downloadDir> <extractDir>${project.build.directory}/cargo/extract</extractDir> </zipUrlInstaller> - <log>${cargo.log}</log> - <output>${cargo.output}</output> </container> <configuration> <properties> @@ -1590,8 +1586,6 @@ under the License. <downloadDir>${settings.localRepository}/org/codehaus/cargo/cargo-container-archives</downloadDir> <extractDir>${project.build.directory}/cargo/extract</extractDir> </zipUrlInstaller> - <log>${cargo.log}</log> - <output>${cargo.output}</output> </container> <configuration> <properties> diff --git a/fit/core-reference/src/main/resources/core-all.properties b/fit/core-reference/src/main/resources/core-all.properties index 3946fa1a95..584df2005d 100644 --- a/fit/core-reference/src/main/resources/core-all.properties +++ b/fit/core-reference/src/main/resources/core-all.properties @@ -15,7 +15,7 @@ # specific language governing permissions and limitations # under the License. -saml2.sp4ui.keystore=file://${conf.directory}/saml.keystore.jks +saml2.sp4ui.keystore=file://${syncope.conf.dir}/saml.keystore.jks saml2.sp4ui.keystore-type=jks saml2.sp4ui.keystore-storepass=changeit saml2.sp4ui.keystore-keypass=changeit diff --git a/fit/core-reference/src/main/resources/core-embedded.properties b/fit/core-reference/src/main/resources/core-embedded.properties index 4aba37e36b..778a6d3478 100644 --- a/fit/core-reference/src/main/resources/core-embedded.properties +++ b/fit/core-reference/src/main/resources/core-embedded.properties @@ -68,7 +68,7 @@ provisioning.quartz.delegate=org.quartz.impl.jdbcjobstore.StdJDBCDelegate provisioning.quartz.sql=tables_h2.sql provisioning.quartz.waitForJobsToCompleteOnShutdown=false -provisioning.connIdLocation=${connid.location},\ +provisioning.connIdLocation=${syncope.connid.location},\ connid://${testconnectorserver.key}@localhost:${testconnectorserver.port} spring.mail.host=localhost diff --git a/fit/core-reference/src/main/resources/log4j2.xml b/fit/core-reference/src/main/resources/log4j2.xml index dc0f24be8b..476e7b9641 100644 --- a/fit/core-reference/src/main/resources/log4j2.xml +++ b/fit/core-reference/src/main/resources/log4j2.xml @@ -20,8 +20,8 @@ under the License. <configuration status="WARN"> <appenders> - <RollingRandomAccessFile name="main" fileName="${log.directory}/core.log" - filePattern="${log.directory}/core-%d{yyyy-MM-dd}.log.gz" + <RollingRandomAccessFile name="main" fileName="${sys:syncope.log.dir}/core.log" + filePattern="${sys:syncope.log.dir}/core-%d{yyyy-MM-dd}.log.gz" immediateFlush="false" append="true"> <PatternLayout> <pattern>%d{HH:mm:ss.SSS} %notEmpty{[operation.id=%X{operation.id}] }%-5level %logger - %msg%n</pattern> @@ -32,8 +32,8 @@ under the License. </Policies> </RollingRandomAccessFile> - <RollingRandomAccessFile name="persistence" fileName="${log.directory}/core-persistence.log" - filePattern="${log.directory}/core-persistence-%d{yyyy-MM-dd}.log.gz" + <RollingRandomAccessFile name="persistence" fileName="${sys:syncope.log.dir}/core-persistence.log" + filePattern="${sys:syncope.log.dir}/core-persistence-%d{yyyy-MM-dd}.log.gz" immediateFlush="false" append="true"> <PatternLayout> <pattern>%d{HH:mm:ss.SSS} %-5level %logger - %msg%n</pattern> @@ -44,8 +44,8 @@ under the License. </Policies> </RollingRandomAccessFile> - <RollingRandomAccessFile name="rest" fileName="${log.directory}/core-rest.log" - filePattern="${log.directory}/core-rest-%d{yyyy-MM-dd}.log.gz" + <RollingRandomAccessFile name="rest" fileName="${sys:syncope.log.dir}/core-rest.log" + filePattern="${sys:syncope.log.dir}/core-rest-%d{yyyy-MM-dd}.log.gz" immediateFlush="false" append="true"> <PatternLayout> <pattern>%d{HH:mm:ss.SSS} %-5level %logger - %msg%n</pattern> @@ -56,8 +56,8 @@ under the License. </Policies> </RollingRandomAccessFile> - <RollingRandomAccessFile name="connid" fileName="${log.directory}/core-connid.log" - filePattern="${log.directory}/core-connid-%d{yyyy-MM-dd}.log.gz" + <RollingRandomAccessFile name="connid" fileName="${sys:syncope.log.dir}/core-connid.log" + filePattern="${sys:syncope.log.dir}/core-connid-%d{yyyy-MM-dd}.log.gz" immediateFlush="false" append="true"> <PatternLayout> <pattern>%d{HH:mm:ss.SSS} %-5level %msg%n</pattern> diff --git a/fit/core-reference/src/test/resources/log4j2.xml b/fit/core-reference/src/test/resources/log4j2.xml index 875d5e727f..7f66aab5d8 100644 --- a/fit/core-reference/src/test/resources/log4j2.xml +++ b/fit/core-reference/src/test/resources/log4j2.xml @@ -19,8 +19,8 @@ under the License. --> <configuration status="WARN" shutdownHook="disable"> <appenders> - <RollingRandomAccessFile name="main" fileName="${log.directory}/core-fit.log" - filePattern="${log.directory}/core-fit-%d{yyyy-MM-dd}.log.gz" + <RollingRandomAccessFile name="main" fileName="${project.build.directory}/log/core-fit.log" + filePattern="${project.build.directory}/log/core-fit-%d{yyyy-MM-dd}.log.gz" immediateFlush="false" append="true"> <PatternLayout> <pattern>%d{HH:mm:ss.SSS} %-5level %logger - %msg%n</pattern> diff --git a/fit/core-reference/src/test/resources/test.properties b/fit/core-reference/src/test/resources/test.properties index b8a67ffac4..0d0312daef 100644 --- a/fit/core-reference/src/test/resources/test.properties +++ b/fit/core-reference/src/test/resources/test.properties @@ -19,7 +19,7 @@ basedir=${basedir} test.csv.src=${project.build.directory}/test-classes/test.csv test.csv.dst=${test.csvdir.path}/test.csv -test.log.dir=${log.directory} +test.log.dir=${project.build.directory}/log testmail.smtpport=${testmail.smtpport} testmail.pop3port=${testmail.pop3port} diff --git a/fit/enduser-reference/pom.xml b/fit/enduser-reference/pom.xml index 2756e16ae6..7563c826c2 100644 --- a/fit/enduser-reference/pom.xml +++ b/fit/enduser-reference/pom.xml @@ -108,8 +108,6 @@ under the License. <extractDir>${project.build.directory}/cargo/extract</extractDir> </zipUrlInstaller> <timeout>300000</timeout> - <log>${cargo.log}</log> - <output>${cargo.output}</output> <systemProperties> <java.security.egd>file:/dev/./urandom</java.security.egd> @@ -220,25 +218,6 @@ under the License. <!-- requires JAVA_HOME set to the latest JDK from https://github.com/TravaOpenJDK/trava-jdk-11-dcevm --> <profile> <id>hotswap</id> - - <dependencies> - <!-- wicket-ioc depends on cglib, need to exclude it for hotswap to work --> - <dependency> - <groupId>org.apache.syncope.client.idrepo</groupId> - <artifactId>syncope-client-idrepo-enduser</artifactId> - <version>${project.version}</version> - <exclusions> - <exclusion> - <groupId>cglib</groupId> - <artifactId>cglib</artifactId> - </exclusion> - </exclusions> - </dependency> - <dependency> - <groupId>cglib</groupId> - <artifactId>cglib-nodep</artifactId> - </dependency> - </dependencies> <build> <defaultGoal>clean verify cargo:run</defaultGoal> diff --git a/fit/enduser-reference/src/main/resources/log4j2.xml b/fit/enduser-reference/src/main/resources/log4j2.xml index bec86676a2..a04bdc04c2 100644 --- a/fit/enduser-reference/src/main/resources/log4j2.xml +++ b/fit/enduser-reference/src/main/resources/log4j2.xml @@ -21,8 +21,8 @@ under the License. <appenders> - <RollingRandomAccessFile name="main" fileName="${log.directory}/enduser.log" - filePattern="${log.directory}/enduser-%d{yyyy-MM-dd}.log.gz" + <RollingRandomAccessFile name="main" fileName="${sys:syncope.log.dir}/enduser.log" + filePattern="${sys:syncope.log.dir}/enduser-%d{yyyy-MM-dd}.log.gz" immediateFlush="false" append="true"> <PatternLayout> <pattern>%d{HH:mm:ss.SSS} %-5level %logger - %msg%n</pattern> diff --git a/fit/wa-reference/pom.xml b/fit/wa-reference/pom.xml index 4693ef4bc1..138a77e47a 100644 --- a/fit/wa-reference/pom.xml +++ b/fit/wa-reference/pom.xml @@ -155,8 +155,6 @@ under the License. <extractDir>${project.build.directory}/cargo/extract</extractDir> </zipUrlInstaller> <timeout>600000</timeout> - <log>${cargo.log}</log> - <output>${cargo.output}</output> <systemProperties> <java.security.egd>file:/dev/./urandom</java.security.egd> @@ -258,7 +256,7 @@ under the License. <artifactId>maven-surefire-plugin</artifactId> <inherited>true</inherited> <configuration> - <argLine>-Djavax.net.ssl.trustStore=${basedir}/src/test/resources/keystore.jks -Djavax.net.ssl.trustStorePassword=password</argLine> + <argLine>-Djavax.net.ssl.trustStore=${basedir}/src/test/resources/keystore.jks -Djavax.net.ssl.trustStorePassword=password</argLine> </configuration> </plugin> <plugin> @@ -266,7 +264,7 @@ under the License. <artifactId>maven-failsafe-plugin</artifactId> <inherited>true</inherited> <configuration> - <argLine>-Djavax.net.ssl.trustStore=${basedir}/src/test/resources/keystore.jks -Djavax.net.ssl.trustStorePassword=password</argLine> + <argLine>-Djavax.net.ssl.trustStore=${basedir}/src/test/resources/keystore.jks -Djavax.net.ssl.trustStorePassword=password</argLine> </configuration> <executions> <execution> diff --git a/fit/wa-reference/src/main/resources/log4j2.xml b/fit/wa-reference/src/main/resources/log4j2.xml index 2d3bb2e6ec..9254c8ecab 100644 --- a/fit/wa-reference/src/main/resources/log4j2.xml +++ b/fit/wa-reference/src/main/resources/log4j2.xml @@ -21,8 +21,8 @@ under the License. <appenders> - <RollingRandomAccessFile name="main" fileName="${log.directory}/wa.log" - filePattern="${log.directory}/wa-%d{yyyy-MM-dd}.log.gz" + <RollingRandomAccessFile name="main" fileName="${sys:syncope.log.dir}/wa.log" + filePattern="${sys:syncope.log.dir}/wa-%d{yyyy-MM-dd}.log.gz" immediateFlush="false" append="true"> <PatternLayout> <pattern>%d{HH:mm:ss.SSS} %-5level %logger - %msg%n</pattern> diff --git a/fit/wa-reference/src/main/resources/wa-embedded.properties b/fit/wa-reference/src/main/resources/wa-embedded.properties index 16f6bf6270..f050292fa7 100644 --- a/fit/wa-reference/src/main/resources/wa-embedded.properties +++ b/fit/wa-reference/src/main/resources/wa-embedded.properties @@ -23,14 +23,6 @@ keymaster.password=${anonymousKey} cas.server.name=https://localhost:9443 cas.server.prefix=${cas.server.name}/syncope-wa -conf.directory=${conf.directory} -cas.standalone.configuration-directory=${conf.directory} - -cas.authn.saml-idp.core.entity-id=${cas.server.prefix}/saml -cas.authn.saml-idp.metadata.http.metadata-backup-location=file:${conf.directory}/saml - -cas.authn.oidc.core.issuer=${cas.server.prefix}/oidc - service.discovery.address=https://localhost:9443/syncope-wa/ ## diff --git a/fit/wa-reference/src/test/resources/log4j2.xml b/fit/wa-reference/src/test/resources/log4j2.xml index d27ffdfc4a..b204e6f848 100644 --- a/fit/wa-reference/src/test/resources/log4j2.xml +++ b/fit/wa-reference/src/test/resources/log4j2.xml @@ -19,8 +19,8 @@ under the License. --> <configuration status="WARN" shutdownHook="disable"> <appenders> - <RollingRandomAccessFile name="main" fileName="${log.directory}/wa-fit.log" - filePattern="${log.directory}/wa-fit-%d{yyyy-MM-dd}.log.gz" + <RollingRandomAccessFile name="main" fileName="${project.build.directory}/log/wa-fit.log" + filePattern="${project.build.directory}/log/wa-fit-%d{yyyy-MM-dd}.log.gz" immediateFlush="false" append="true"> <PatternLayout> <pattern>%d{HH:mm:ss.SSS} %-5level %logger - %msg%n</pattern> diff --git a/pom.xml b/pom.xml index db00bfdbeb..ead40c69c5 100644 --- a/pom.xml +++ b/pom.xml @@ -492,8 +492,6 @@ under the License. <cargo.tomcat.ajp.port>9889</cargo.tomcat.ajp.port> <cargo.rmi.port>9805</cargo.rmi.port> <cargo.deployable.ping.timeout>60000</cargo.deployable.ping.timeout> - <cargo.log>${log.directory}/cargo.log</cargo.log> - <cargo.output>${log.directory}/cargo-output.log</cargo.output> <tomcat.version>10.1.5</tomcat.version> <wildfly.version>27.0.1.Final</wildfly.version> @@ -505,15 +503,12 @@ under the License. <docker.mariadb.version>10</docker.mariadb.version> <jdbc.postgresql.version>42.5.1</jdbc.postgresql.version> - <jdbc.mysql.version>8.0.31</jdbc.mysql.version> - <jdbc.mariadb.version>3.0.8</jdbc.mariadb.version> + <jdbc.mysql.version>8.0.32</jdbc.mysql.version> + <jdbc.mariadb.version>3.0.10</jdbc.mariadb.version> <jdbc.mssql.version>11.2.1.jre</jdbc.mssql.version> <jdbc.oracle.version>21.8.0.0</jdbc.oracle.version> - <conf.directory>${project.build.directory}/test-classes</conf.directory> <bundles.directory>${project.build.directory}/bundles</bundles.directory> - <connid.location>file:${bundles.directory}/</connid.location> - <log.directory>${project.build.directory}/log</log.directory> <adminUser>admin</adminUser> <anonymousUser>anonymous</anonymousUser> @@ -1633,6 +1628,15 @@ under the License. <artifactId>cargo-maven3-plugin</artifactId> <version>1.10.4</version> <configuration> + <container> + <log>${project.build.directory}/log/cargo.log</log> + <output>${project.build.directory}/log/cargo-output.log</output> + <systemProperties> + <syncope.conf.dir>${project.build.directory}/test-classes</syncope.conf.dir> + <syncope.connid.location>file:${bundles.directory}/</syncope.connid.location> + <syncope.log.dir>${project.build.directory}/log</syncope.log.dir> + </systemProperties> + </container> <configuration> <type>standalone</type> <properties> @@ -2291,6 +2295,59 @@ under the License. <module>docker</module> </modules> </profile> + + <profile> + <id>win</id> + + <activation> + <os> + <family>Windows</family> + </os> + </activation> + + <properties> + <syncope.conf.dir>${project.build.directory}/test-classes</syncope.conf.dir> + </properties> + + <build> + <plugins> + <plugin> + <groupId>org.codehaus.gmavenplus</groupId> + <artifactId>gmavenplus-plugin</artifactId> + <executions> + <execution> + <id>convert-win-paths</id> + <phase>generate-resources</phase> + <goals> + <goal>execute</goal> + </goals> + <configuration> + <bindAllProjectProperties>true</bindAllProjectProperties> + <scripts> + <script><![CDATA[ + project.properties['win.syncope.conf.dir'] = project.properties['syncope.conf.dir'].replace("\\", "/") + ]]></script> + </scripts> + </configuration> + </execution> + </executions> + </plugin> + + <plugin> + <groupId>org.codehaus.cargo</groupId> + <artifactId>cargo-maven3-plugin</artifactId> + <inherited>true</inherited> + <configuration> + <container> + <systemProperties> + <syncope.conf.dir>${win.syncope.conf.dir}</syncope.conf.dir> + </systemProperties> + </container> + </configuration> + </plugin> + </plugins> + </build> + </profile> </profiles> <modules> diff --git a/sra/pom.xml b/sra/pom.xml index 19c665398e..f71574f7a4 100644 --- a/sra/pom.xml +++ b/sra/pom.xml @@ -166,6 +166,7 @@ under the License. <configuration> <systemPropertyVariables> <reactor.netty.http.server.accessLogEnabled>true</reactor.netty.http.server.accessLogEnabled> + <syncope.log.dir>${project.build.directory}/log</syncope.log.dir> </systemPropertyVariables> </configuration> </plugin> diff --git a/sra/src/main/java/org/apache/syncope/sra/SecurityConfig.java b/sra/src/main/java/org/apache/syncope/sra/SecurityConfig.java index 6b4301ab97..8f69eccfe4 100644 --- a/sra/src/main/java/org/apache/syncope/sra/SecurityConfig.java +++ b/sra/src/main/java/org/apache/syncope/sra/SecurityConfig.java @@ -32,7 +32,7 @@ import org.apache.syncope.sra.security.LogoutRouteMatcher; import org.apache.syncope.sra.security.PublicRouteMatcher; import org.apache.syncope.sra.security.cas.CASSecurityConfigUtils; import org.apache.syncope.sra.security.oauth2.OAuth2SecurityConfigUtils; -import org.apache.syncope.sra.security.pac4j.NoOpLogoutHandler; +import org.apache.syncope.sra.security.pac4j.NoOpSessionLogoutHandler; import org.apache.syncope.sra.security.saml2.SAML2MetadataEndpoint; import org.apache.syncope.sra.security.saml2.SAML2SecurityConfigUtils; import org.apache.syncope.sra.security.saml2.SAML2WebSsoAuthenticationWebFilter; @@ -273,7 +273,7 @@ public class SecurityConfig { cfg.setServiceProviderMetadataResourceFilepath(props.getSaml2().getSpMetadataFilePath()); cfg.setAcceptedSkew(props.getSaml2().getSkew()); - cfg.setLogoutHandler(new NoOpLogoutHandler()); + cfg.setSessionLogoutHandler(new NoOpSessionLogoutHandler()); SAML2Client saml2Client = new SAML2Client(cfg); saml2Client.setName(SRAProperties.AMType.SAML2.name()); diff --git a/sra/src/main/java/org/apache/syncope/sra/security/pac4j/NoOpLogoutHandler.java b/sra/src/main/java/org/apache/syncope/sra/security/pac4j/NoOpSessionLogoutHandler.java similarity index 86% rename from sra/src/main/java/org/apache/syncope/sra/security/pac4j/NoOpLogoutHandler.java rename to sra/src/main/java/org/apache/syncope/sra/security/pac4j/NoOpSessionLogoutHandler.java index e41e7306c6..c99f0bd9ba 100644 --- a/sra/src/main/java/org/apache/syncope/sra/security/pac4j/NoOpLogoutHandler.java +++ b/sra/src/main/java/org/apache/syncope/sra/security/pac4j/NoOpSessionLogoutHandler.java @@ -18,8 +18,8 @@ */ package org.apache.syncope.sra.security.pac4j; -import org.pac4j.core.logout.handler.LogoutHandler; +import org.pac4j.core.logout.handler.SessionLogoutHandler; -public class NoOpLogoutHandler implements LogoutHandler { +public class NoOpSessionLogoutHandler implements SessionLogoutHandler { } diff --git a/sra/src/main/resources/log4j2.xml b/sra/src/main/resources/log4j2.xml index 3e0fa0c89a..bd7585adee 100644 --- a/sra/src/main/resources/log4j2.xml +++ b/sra/src/main/resources/log4j2.xml @@ -21,8 +21,8 @@ under the License. <appenders> - <RollingRandomAccessFile name="main" fileName="${log.directory}/sra.log" - filePattern="${log.directory}/sra-%d{yyyy-MM-dd}.log.gz" + <RollingRandomAccessFile name="main" fileName="${sys:syncope.log.dir}/sra.log" + filePattern="${sys:syncope.log.dir}/sra-%d{yyyy-MM-dd}.log.gz" immediateFlush="false" append="true"> <PatternLayout> <pattern>%d{HH:mm:ss.SSS} %-5level %logger - %msg%n</pattern> @@ -33,8 +33,8 @@ under the License. </Policies> </RollingRandomAccessFile> - <RollingRandomAccessFile name="access" fileName="${log.directory}/sra-access.log" - filePattern="${log.directory}/sra-access-%d{yyyy-MM-dd}.log.gz" + <RollingRandomAccessFile name="access" fileName="${sys:syncope.log.dir}/sra-access.log" + filePattern="${sys:syncope.log.dir}/sra-access-%d{yyyy-MM-dd}.log.gz" immediateFlush="false" append="true"> <PatternLayout> <pattern>%d{HH:mm:ss.SSS} %-5level %logger - %msg%n</pattern> diff --git a/src/main/asciidoc/reference-guide/configuration/deployment.adoc b/src/main/asciidoc/reference-guide/configuration/deployment.adoc index 7321ddec7e..0c1bd0cfd2 100644 --- a/src/main/asciidoc/reference-guide/configuration/deployment.adoc +++ b/src/main/asciidoc/reference-guide/configuration/deployment.adoc @@ -61,21 +61,21 @@ the Core application can be built and run as follows: [source,bash] ---- -$ mvn -P executable clean verify \ - -Dconf.directory=/opt/syncope/conf \ - -Dbundles.directory=/opt/syncope/bundles \ - -Dlog.directory=/opt/syncope/log +$ mvn -P executable clean verify $ cp core/target/syncope.war /opt/syncope/lib $ cp core/target/classes/*properties /opt/syncope/conf $ export LOADER_PATH=/opt/syncope/conf,/opt/syncope/lib -$ java -jar /opt/syncope/lib/syncope.war +$ java -Dsyncope.conf.dir=/opt/syncope/conf \ + -Dsyncope.connid.location=file:/opt/syncope/bundles \ + -Dsyncope.log.dir=/opt/syncope/log \ + -jar /opt/syncope/lib/syncope.war ---- Further options can be passed to last command, according to Spring Boot https://docs.spring.io/spring-boot/docs/current/reference/html/application-properties.html#appendix.application-properties[documentation^]; for example: -* `--spring.config.location=/path` + +* `--spring.config.additional-location=/path` + to customize the location of the configuration files * `--server.port=8080` + to change the default HTTP port @@ -114,6 +114,9 @@ On GNU / Linux - Mac OS X, create `$CATALINA_HOME/bin/setenv.sh` with similar co .... JAVA_OPTS="-Djava.awt.headless=true -Dfile.encoding=UTF-8 -server \ +-Dsyncope.conf.dir=/opt/syncope/conf \ +-Dsyncope.connid.location=file:/opt/syncope/bundles \ +-Dsyncope.log.dir=/opt/syncope/log \ -Xms1536m -Xmx1536m -XX:NewSize=256m -XX:MaxNewSize=256m -XX:+DisableExplicitGC \ -Djava.security.egd=file:/dev/./urandom" .... @@ -121,7 +124,10 @@ JAVA_OPTS="-Djava.awt.headless=true -Dfile.encoding=UTF-8 -server \ On MS Windows, create `%CATALINA_HOME%\bin\setenv.bat` with similar content (keep everything on a single line): .... -set JAVA_OPTS=-Djava.awt.headless=true -Dfile.encoding=UTF-8 -server +set JAVA_OPTS=-Djava.awt.headless=true -Dfile.encoding=UTF-8 -server \ +-Dsyncope.conf.dir=C:\opt\syncope\conf \ +-Dsyncope.connid.location=file:/C:\opt\syncope\bundles \ +-Dsyncope.log.dir=C:\opt\syncope\log \ -Xms1536m -Xmx1536m -XX:NewSize=256m -XX:MaxNewSize=256m -XX:+DisableExplicitGC .... @@ -175,13 +181,24 @@ When using a datasource for internal storage, be sure to add right after `</context-root>` in `core/src/main/webapp/WEB-INF/glassfish-web.xml`, assuming that your Payara Server instance provides a datasource named `jdbc/syncopeMasterDataSource`. +[WARNING] +==== +Do not forget to include the following system properties: + +* `-Dsyncope.conf.dir=/opt/syncope/conf` + +(required by Core and WA) +* `-Dsyncope.connid.location=file:/opt/syncope/bundles` + +(required by Core) +* `-Dsyncope.log.dir=/opt/syncope/log` + +(required by all components) +==== + [TIP] ==== -For better performance under GNU / Linux, do not forget to include +For better performance under GNU / Linux, do not forget to include the system property: .... -Djava.security.egd=file:/dev/./urandom .... -among JVM options. ==== ==== Wildfly 27 @@ -266,11 +283,22 @@ Do not forget to include `widlfly` as https://docs.spring.io/spring-boot/docs/current/reference/html/features.html#features.profiles.adding-active-profiles[Spring Boot profile^] for the Core application. +[WARNING] +==== +Do not forget to include the following system properties: + +* `-Dsyncope.conf.dir=/opt/syncope/conf` + +(required by Core and WA) +* `-Dsyncope.connid.location=file:/opt/syncope/bundles` + +(required by Core) +* `-Dsyncope.log.dir=/opt/syncope/log` + +(required by all components) +==== + [TIP] ==== -For better performance under GNU / Linux, do not forget to include +For better performance under GNU / Linux, do not forget to include the system property: .... -Djava.security.egd=file:/dev/./urandom .... -among JVM options. ==== diff --git a/src/main/asciidoc/reference-guide/howto/keystore.adoc b/src/main/asciidoc/reference-guide/howto/keystore.adoc index 70152dc27a..d1decbae5a 100644 --- a/src/main/asciidoc/reference-guide/howto/keystore.adoc +++ b/src/main/asciidoc/reference-guide/howto/keystore.adoc @@ -116,7 +116,7 @@ relevant part of the `core.properties` file should be: .... saml2.sp4ui.skew=300 -saml2.sp4ui.keystore=file://${conf.directory}/saml2sp4ui.jks +saml2.sp4ui.keystore=file://${syncope.conf.dir}/saml2sp4ui.jks saml2.sp4ui.keystore.type=jks saml2.sp4ui.keystore.storepass=astorepass saml2.sp4ui.keystore.keypass=akyepass diff --git a/src/main/asciidoc/reference-guide/usage/actuator.adoc b/src/main/asciidoc/reference-guide/usage/actuator.adoc index 6c6d488cb4..3e56563944 100644 --- a/src/main/asciidoc/reference-guide/usage/actuator.adoc +++ b/src/main/asciidoc/reference-guide/usage/actuator.adoc @@ -23,7 +23,7 @@ Spring Boot's actuator endpoints let you monitor and interact with Syncope compo Each individual endpoint can be enabled / disabled and exposed over HTTP (pre-defined, under the `/actuator` subcontext) or JMX. -Besides a number of https://docs.spring.io/spring-boot/docs/2.7.x/reference/htmlsingle/#actuator.endpoints[built-in endpoints^], +Besides a number of https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#actuator.endpoints[built-in endpoints^], more are made available for each component, as reported below. [NOTE] diff --git a/src/main/asciidoc/reference-guide/usage/customization.adoc b/src/main/asciidoc/reference-guide/usage/customization.adoc index a3c4fe193c..7894bac4e8 100644 --- a/src/main/asciidoc/reference-guide/usage/customization.adoc +++ b/src/main/asciidoc/reference-guide/usage/customization.adoc @@ -46,10 +46,7 @@ The artifacts are generated by running the Maven command (with reference to the <<deployment-directories,directory layout>>): .... -$ mvn clean verify \ - -Dconf.directory=/opt/syncope/conf \ - -Dbundles.directory=/opt/syncope/bundles \ - -Dlog.directory=/opt/syncope/log +$ mvn clean verify $ cp core/target/classes/*properties /opt/syncope/conf $ cp console/target/classes/*properties /opt/syncope/conf $ cp enduser/target/classes/*properties /opt/syncope/conf @@ -68,6 +65,15 @@ After downloading all of the dependencies that are needed, three following artif If no failures are encountered, your basic Apache Syncope project is now ready to be deployed. +Do not forget to define the following system properties: + +* `-Dsyncope.conf.dir=/opt/syncope/conf` + +(required by Core and WA) +* `-Dsyncope.connid.location=file:/opt/syncope/bundles` + +(required by Core) +* `-Dsyncope.log.dir=/opt/syncope/log` + +(required by all components) + [[embedded-debug]] [TIP] .JPDA Debug in Embedded Mode @@ -230,11 +236,11 @@ $ mkdir /opt/syncope/conf [TIP] ==== The `conf` directory must be configured for deployment, following Spring Boot's -https://docs.spring.io/spring-boot/docs/current/reference/html/features.html#features.external-config[Externalized Configuration^] +https://docs.spring.io/spring-boot/docs/current/reference/htmlsingle/#features.external-config.files[Externalized Configuration^] settings; with above reference: -* <<standalone>>: `--spring.config.location=/opt/syncope/conf/` -* <<javaee-container>>: `-Dspring.config.location=/opt/syncope/conf/` +* <<standalone>>: `--spring.config.additional-location=/opt/syncope/conf/` +* <<javaee-container>>: `-Dspring.config.additional-location=/opt/syncope/conf/` ==== [[customization-core]] diff --git a/standalone/pom.xml b/standalone/pom.xml index edc4a2d14e..f87ee8c2e3 100644 --- a/standalone/pom.xml +++ b/standalone/pom.xml @@ -36,9 +36,6 @@ under the License. <properties> <rootpom.basedir>${basedir}/..</rootpom.basedir> - <conf.directory>${CATALINA_HOME}/webapps/syncope/WEB-INF/classes</conf.directory> - <connid.location>connid://${testconnectorserver.key}@localhost:${testconnectorserver.port}</connid.location> - <log.directory>${sys:catalina.home}/logs</log.directory> <test.csvdir.path>./test-csvdir</test.csvdir.path> <work.dir>${project.build.directory}/standalone</work.dir> @@ -167,6 +164,7 @@ under the License. <copy todir="${work.dir}/apache-tomcat-${tomcat.version}/webapps/syncope-wa/WEB-INF/classes" overwrite="true"> <fileset dir="${project.build.outputDirectory}/wa"/> </copy> + <copy file="../fit/wa-reference/src/test/resources/keystore.jks" todir="${work.dir}/apache-tomcat-${tomcat.version}/conf" overwrite="true"/> <mkdir dir="${work.dir}/apache-tomcat-${tomcat.version}/${test.csvdir.path}"/> <copy file="../fit/core-reference/src/test/resources/test.csv" todir="${work.dir}/apache-tomcat-${tomcat.version}/${test.csvdir.path}"/> @@ -187,9 +185,17 @@ under the License. <!-- Other custom Tomcat resources --> <copy file="${project.build.outputDirectory}/context.xml" todir="${work.dir}/apache-tomcat-${tomcat.version}/conf" overwrite="true"/> - <copy file="src/main/resources/setenv.sh" todir="${work.dir}/apache-tomcat-${tomcat.version}/bin"/> - <copy file="src/main/resources/setenv.bat" todir="${work.dir}/apache-tomcat-${tomcat.version}/bin"/> + <copy file="${project.build.outputDirectory}/setenv.sh" todir="${work.dir}/apache-tomcat-${tomcat.version}/bin"/> + <copy file="${project.build.outputDirectory}/setenv.bat" todir="${work.dir}/apache-tomcat-${tomcat.version}/bin"/> <replace file="${work.dir}/apache-tomcat-${tomcat.version}/conf/server.xml" token="8080" value="${cargo.servlet.port}"/> + <replace file="${work.dir}/apache-tomcat-${tomcat.version}/conf/server.xml" token="8443" value="9443"/> + <replace file="${work.dir}/apache-tomcat-${tomcat.version}/conf/server.xml"> + <replacetoken><![CDATA[redirectPort="9443" />]]></replacetoken> + <replacevalue><![CDATA[redirectPort="9443" /> +<Connector protocol="org.apache.coyote.http11.Http11NioProtocol" port="9443" maxThreads="200" +scheme="https" secure="true" SSLEnabled="true" keystoreFile="conf/keystore.jks" keystorePass="password" +keystoreType="JKS" clientAuth="false" sslProtocol="TLS"/>]]></replacevalue> + </replace> <replace file="${work.dir}/apache-tomcat-${tomcat.version}/conf/server.xml" token="8009" value="${cargo.tomcat.ajp.port}"/> <replace file="${work.dir}/apache-tomcat-${tomcat.version}/conf/server.xml" token="8005" value="${cargo.rmi.port}"/> </target> @@ -297,6 +303,17 @@ under the License. <resource> <directory>src/main/resources</directory> + <includes> + <include>setenv.*</include> + </includes> + <filtering>true</filtering> + </resource> + <resource> + <directory>src/main/resources</directory> + <excludes> + <exclude>setenv.*</exclude> + </excludes> + <filtering>false</filtering> </resource> <resource> <directory>src/assemble</directory> diff --git a/standalone/src/main/resources/setenv.bat b/standalone/src/main/resources/setenv.bat index 035c2a4f1f..eea0988396 100644 --- a/standalone/src/main/resources/setenv.bat +++ b/standalone/src/main/resources/setenv.bat @@ -13,4 +13,4 @@ # See the License for the specific language governing permissions and # limitations under the License. -set JAVA_OPTS=-Djava.awt.headless=true -Dfile.encoding=UTF-8 -Dspring.profiles.active=embedded -server -Xms2048m -Xmx2048m -XX:NewSize=256m -XX:MaxNewSize=256m -XX:+DisableExplicitGC -DCATALINA_HOME=%CATALINA_HOME% +set JAVA_OPTS=-Djava.awt.headless=true -Dfile.encoding=UTF-8 -Djavax.net.ssl.trustStore=%CATALINA_HOME%\conf\keystore.jks -Dsyncope.connid.location=connid://${testconnectorserver.key}@localhost:${testconnectorserver.port} -Dsyncope.conf.dir=%CATALINA_HOME%\webapps\syncope\WEB-INF\classes -Dsyncope.log.dir=%CATALINA_HOME%\logs -Dspring.profiles.active=embedded -server -Xms2048m -Xmx2048m -XX:NewSize=256m -XX:MaxNewSize=256m -DCATALINA_HOME=%CATALINA_HOME% diff --git a/standalone/src/main/resources/setenv.sh b/standalone/src/main/resources/setenv.sh index 7756a66623..df66bfa9e1 100755 --- a/standalone/src/main/resources/setenv.sh +++ b/standalone/src/main/resources/setenv.sh @@ -13,4 +13,4 @@ # See the License for the specific language governing permissions and # limitations under the License. -JAVA_OPTS="-Djava.awt.headless=true -Dfile.encoding=UTF-8 -Dspring.profiles.active=embedded -server -Xms2048m -Xmx2048m -XX:NewSize=256m -XX:MaxNewSize=256m -XX:+DisableExplicitGC -DCATALINA_HOME=$CATALINA_HOME" +JAVA_OPTS="-Djava.awt.headless=true -Dfile.encoding=UTF-8 -Djavax.net.ssl.trustStore=$CATALINA_HOME/conf/keystore.jks -Djavax.net.ssl.trustStorePassword=password -Dsyncope.conf.dir=$CATALINA_HOME/webapps/syncope/WEB-INF/classes -Dsyncope.connid.location=connid://${testconnectorserver.key}@localhost:${testconnectorserver.port} -Dsyncope.log.dir=$CATALINA_HOME/logs -Dspring.profiles.active=embedded -server -Xms2048m -Xmx2048m -XX:NewSize=256m -XX:MaxNewSize=256m -DCATALINA_HOME=$CATALINA_HOME" diff --git a/wa/bootstrap/src/main/java/org/apache/syncope/wa/bootstrap/WABootstrapConfiguration.java b/wa/bootstrap/src/main/java/org/apache/syncope/wa/bootstrap/WABootstrapConfiguration.java index 1ffd7a7393..8c505bd3c4 100644 --- a/wa/bootstrap/src/main/java/org/apache/syncope/wa/bootstrap/WABootstrapConfiguration.java +++ b/wa/bootstrap/src/main/java/org/apache/syncope/wa/bootstrap/WABootstrapConfiguration.java @@ -27,7 +27,7 @@ import org.springframework.context.annotation.PropertySource; @Configuration(proxyBeanMethods = false) @PropertySource("classpath:wa.properties") -@PropertySource(value = "file:${conf.directory}/wa.properties", ignoreResourceNotFound = true) +@PropertySource(value = "file:${syncope.conf.dir}/wa.properties", ignoreResourceNotFound = true) public class WABootstrapConfiguration { @Configuration(proxyBeanMethods = false) diff --git a/wa/starter/pom.xml b/wa/starter/pom.xml index f8aa1ca397..d1fab0f8d1 100644 --- a/wa/starter/pom.xml +++ b/wa/starter/pom.xml @@ -439,6 +439,16 @@ under the License. </executions> </plugin> + <plugin> + <groupId>org.apache.maven.plugins</groupId> + <artifactId>maven-surefire-plugin</artifactId> + <configuration> + <systemProperties> + <syncope.conf.dir>${project.build.directory}/test-classes</syncope.conf.dir> + </systemProperties> + </configuration> + </plugin> + <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-checkstyle-plugin</artifactId> @@ -504,6 +514,7 @@ under the License. <configuration> <jvmArguments> -Djavax.net.ssl.trustStore=${basedir}/../../fit/wa-reference/src/test/resources/keystore.jks -Djavax.net.ssl.trustStorePassword=password + -Dsyncope.conf.dir=${project.build.directory}/test-classes -Xdebug -Xrunjdwp:transport=dt_socket,address=8001,server=y,suspend=n </jvmArguments> <profiles> diff --git a/wa/starter/src/main/resources/wa.properties b/wa/starter/src/main/resources/wa.properties index 95304ee1d2..8d16065d89 100644 --- a/wa/starter/src/main/resources/wa.properties +++ b/wa/starter/src/main/resources/wa.properties @@ -67,8 +67,8 @@ wa.anonymousKey=${anonymousKey} wa.useGZIPCompression=true # Conf directories -conf.directory=${conf.directory} -cas.standalone.configuration-directory=${conf.directory} +conf.directory=${syncope.conf.dir} +cas.standalone.configuration-directory=${syncope.conf.dir} cas.server.name=http://localhost:8080 cas.server.prefix=${cas.server.name}/syncope-wa @@ -77,7 +77,7 @@ cas.server.scope=syncope.org cas.logout.follow-service-redirects=true cas.authn.saml-idp.core.entity-id=${cas.server.prefix}/saml -cas.authn.saml-idp.metadata.http.metadata-backup-location=file:${conf.directory}/saml +cas.authn.saml-idp.metadata.http.metadata-backup-location=file:${syncope.conf.dir}/saml cas.authn.oidc.core.issuer=${cas.server.prefix}/oidc cas.authn.oidc.discovery.id-token-signing-alg-values-supported=RS256,RS384,RS512,PS256,PS384,PS512,ES256,ES384,ES512,HS256,HS384,HS512