diff --git a/smp-docker/images/tomcat-mysql/Dockerfile b/smp-docker/images/tomcat-mysql/Dockerfile index 3d7ac3d4f898e548bdcfa4dc55746d5a4e7b3f35..7a862ae190c2fcc6fb9f5f0725f80f014e7c3135 100755 --- a/smp-docker/images/tomcat-mysql/Dockerfile +++ b/smp-docker/images/tomcat-mysql/Dockerfile @@ -54,6 +54,8 @@ RUN apt-get update \ && echo "datasource.jndi=java:comp/env/jdbc/eDeliverySmpDs" > $SMP_HOME/apache-tomcat-$TOMCAT_VERSION/smp/conf/smp.config.properties \ && echo "\nAdd init parameters" >> $SMP_HOME/apache-tomcat-$TOMCAT_VERSION/smp/conf/smp.config.properties \ && echo "\nauthentication.blueCoat.enabled=true" >> $SMP_HOME/apache-tomcat-$TOMCAT_VERSION/smp/conf/smp.config.properties \ + && echo "\nsmp.truststore.password={DEC}{test123}" >> $SMP_HOME/apache-tomcat-$TOMCAT_VERSION/smp/conf/smp.config.properties \ + && echo "\nsmp.keystore.password={DEC}{test123}" >> $SMP_HOME/apache-tomcat-$TOMCAT_VERSION/smp/conf/smp.config.properties \ && sed -i -e "s/127.0.0.1/0.0.0.0/g" /etc/mysql/mysql.conf.d/mysqld.cnf \ && mkdir /opt/jacoco \ && curl -o /opt/jacoco/jacoco-agent.jar http://central.maven.org/maven2/org/jacoco/org.jacoco.agent/$JACOCO_VERSION/org.jacoco.agent-$JACOCO_VERSION-runtime.jar diff --git a/smp-docker/images/weblogic-12.2.1.3-smp/container-scripts/deploySMPToDomain.sh b/smp-docker/images/weblogic-12.2.1.3-smp/container-scripts/deploySMPToDomain.sh index 61fa1b4a7de89333e9ea23454464c942eb983172..e74f9a022fab413b859e088f405030c5c98d992a 100755 --- a/smp-docker/images/weblogic-12.2.1.3-smp/container-scripts/deploySMPToDomain.sh +++ b/smp-docker/images/weblogic-12.2.1.3-smp/container-scripts/deploySMPToDomain.sh @@ -10,9 +10,11 @@ fi # create smp property file echo "hibernate.dialect=org.hibernate.dialect.Oracle10gDialect" > "$DOMAIN_HOME/classes/smp.config.properties" -echo "datasource.jndi=jdbc/cipaeDeliveryDs" >> "$DOMAIN_HOME/classes/smp.config.properties" -echo "authentication.blueCoat.enabled=true" >> "$DOMAIN_HOME/classes/smp.config.properties" -echo "log.folder=./logs/" >> "$DOMAIN_HOME/classes/smp.config.properties" +echo "\ndatasource.jndi=jdbc/cipaeDeliveryDs" >> "$DOMAIN_HOME/classes/smp.config.properties" +echo "\nauthentication.blueCoat.enabled=true" >> "$DOMAIN_HOME/classes/smp.config.properties" +echo "\nsmp.truststore.password={DEC}{test123}" >> "$DOMAIN_HOME/classes/smp.config.properties" +echo "\nsmp.keystore.password={DEC}{test123}" >> "$DOMAIN_HOME/classes/smp.config.properties" +echo "\nlog.folder=./logs/" >> "$DOMAIN_HOME/classes/smp.config.properties" # create weblogic classpath to classes folder echo "export CLASSPATH=\${CLASSPATH}:\${DOMAIN_HOME}/classes" >> "$DOMAIN_HOME/bin/setDomainEnv.sh" diff --git a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/config/PropertyInitialization.java b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/config/PropertyInitialization.java index abb36041f2dd90f113ae18217ab71afb73ae64e4..ba002f235899f2a72fe2490b49bc19766051f0bc 100644 --- a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/config/PropertyInitialization.java +++ b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/config/PropertyInitialization.java @@ -187,7 +187,7 @@ public class PropertyInitialization { if (sigPath != null) { settingsFolder = new File(sigPath).getParentFile(); } else { - settingsFolder = new File(""); + settingsFolder = new File(CONFIGURATION_DIR.getDefValue()); } return settingsFolder; } @@ -360,9 +360,16 @@ public class PropertyInitialization { } else { File settingsFolder = calculateSettingsPath(fileProperties); // set absolute path + absolutePath = settingsFolder.getAbsolutePath(); } + File confFolder = new File(absolutePath); + if (!confFolder.exists()) { + LOG.warn("Configuration folder {} not exists. Folder will be created!", confFolder.getAbsolutePath()); + confFolder.mkdirs(); + } + LOG.info("Generate new keystore to folder: " + absolutePath); // add configuration path storeDBEntry(em, CONFIGURATION_DIR, absolutePath); diff --git a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/ui/enums/SMPPropertyEnum.java b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/ui/enums/SMPPropertyEnum.java index 798bbc5ad0e56fd9407b346685f1602967cc310e..7d675abd2bc3eda107509e7d9e1744a5a3733e8f 100644 --- a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/ui/enums/SMPPropertyEnum.java +++ b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/data/ui/enums/SMPPropertyEnum.java @@ -43,7 +43,7 @@ public enum SMPPropertyEnum { TRUSTSTORE_FILENAME("smp.truststore.filename","","Truststore filename ", false, false , SMPPropertyTypeEnum.FILENAME), CERTIFICATE_CRL_FORCE("smp.certificate.crl.force","false","If false then if CRL is not reachable ignore CRL validation", false, false , SMPPropertyTypeEnum.BOOLEAN), - CONFIGURATION_DIR("configuration.dir","./","Path to the folder containing all the configuration files (keystore and encryption key)", true, false , SMPPropertyTypeEnum.PATH), + CONFIGURATION_DIR("configuration.dir","smp","Path to the folder containing all the configuration files (keystore and encryption key)", true, false , SMPPropertyTypeEnum.PATH), ENCRYPTION_FILENAME("encryption.key.filename","encryptionPrivateKey.private","Key filename to encrypt passwords", false, false , SMPPropertyTypeEnum.FILENAME), KEYSTORE_PASSWORD_DECRYPTED("smp.keystore.password.decrypted","","Only for backup purposes when password is automatically created. Store password somewhere save and delete this entry!", false, false , SMPPropertyTypeEnum.STRING), TRUSTSTORE_PASSWORD_DECRYPTED("smp.truststore.password.decrypted","","Only for backup purposes when password is automatically created. Store password somewhere save and delete this entry!", false, false , SMPPropertyTypeEnum.STRING), diff --git a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/utils/PropertyUtils.java b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/utils/PropertyUtils.java index 27ee97373458147d8853c147b3b38e980212e00c..b3bfd418f42e7a972c96326da3fedce9919d0914 100644 --- a/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/utils/PropertyUtils.java +++ b/smp-server-library/src/main/java/eu/europa/ec/edelivery/smp/utils/PropertyUtils.java @@ -4,9 +4,12 @@ import eu.europa.ec.edelivery.smp.data.ui.enums.SMPPropertyEnum; import eu.europa.ec.edelivery.smp.data.ui.enums.SMPPropertyTypeEnum; import eu.europa.ec.edelivery.smp.exceptions.ErrorCode; import eu.europa.ec.edelivery.smp.exceptions.SMPRuntimeException; +import eu.europa.ec.edelivery.smp.logging.SMPLogger; +import eu.europa.ec.edelivery.smp.logging.SMPLoggerFactory; import org.apache.commons.lang3.StringUtils; import org.apache.commons.validator.routines.EmailValidator; import org.apache.commons.validator.routines.UrlValidator; +import org.springframework.security.authentication.AuthenticationProvider; import java.io.File; import java.net.MalformedURLException; @@ -17,6 +20,8 @@ import java.util.regex.PatternSyntaxException; public class PropertyUtils { + + private static final SMPLogger LOG = SMPLoggerFactory.getLogger(PropertyUtils.class); private static UrlValidator urlValidator = new UrlValidator(new String[]{"http", "https"}, UrlValidator.ALLOW_LOCAL_URLS); @@ -69,6 +74,12 @@ public class PropertyUtils { } case PATH: { File f = new File(value); + if (!f.exists()) { + LOG.warn("Folder {} not exists. Try to create the folder.", f.getAbsolutePath()); + if (f.mkdirs()){ + LOG.info("Folder {} created.", f.getAbsolutePath()); + }; + } return f.exists() && f.isDirectory(); } // nothing to validate diff --git a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/config/PropertyInitializationTest.java b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/config/PropertyInitializationTest.java index 5b6992f222aa9ab0df88314a18ad643bf9734472..a205f3bbb9b6ad8e75463e38a5d704eb421732c2 100644 --- a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/config/PropertyInitializationTest.java +++ b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/config/PropertyInitializationTest.java @@ -131,7 +131,7 @@ public class PropertyInitializationTest { // when File f = testInstance.calculateSettingsPath(p); // then - assertEquals((new File("")).getAbsolutePath(), f.getAbsolutePath()); + assertEquals((new File("smp")).getAbsolutePath(), f.getAbsolutePath()); } @Test diff --git a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/utils/PropertyUtilsTest.java b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/utils/PropertyUtilsTest.java index 1b900fda87e55b11fac91f69229bbc0fc659cb89..de8c50941ce8b336bd58a2229f33358f63171e5a 100644 --- a/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/utils/PropertyUtilsTest.java +++ b/smp-server-library/src/test/java/eu/europa/ec/edelivery/smp/utils/PropertyUtilsTest.java @@ -36,7 +36,7 @@ public class PropertyUtilsTest { {EMAIL, "test@coms.fs", false, false}, {FILENAME, "myfilename.txt", true, true}, {PATH, "./", true, true}, - {PATH, "./notexits-tst", false, true}, + {PATH, "./notexits", true, true}, // path will be created }; } diff --git a/smp-webapp/src/main/smp-setup/smp.config.properties b/smp-webapp/src/main/smp-setup/smp.config.properties index db0fff9677a835a78ca9b6d7cd99face43e54a75..e8156c3ea4d1755f611e0e6706e27eccc16be3eb 100644 --- a/smp-webapp/src/main/smp-setup/smp.config.properties +++ b/smp-webapp/src/main/smp-setup/smp.config.properties @@ -134,7 +134,7 @@ log.folder=../logs/ # smp.certificate.crl.force=false # Path to the folder containing all the configuration files (keystore and encryption key) -# configuration.dir=./ +# configuration.dir=./smp/ # Key filename to encrypt passwords # encryption.key.filename=encryptionPrivateKey.private