From 1bfab9dfc2b502c4f339c2ae04898de48eed8e5f Mon Sep 17 00:00:00 2001 From: Joze RIHTARSIC <joze.rihtarsic@ext.ec.europa.eu> Date: Fri, 8 Jun 2018 15:46:02 +0200 Subject: [PATCH] add SMP-SML docker image to SMP repo. Purpose of docker image is to test dynamic discover while developing AP. --- smp-docker/pom.xml | 17 ++ .../main/docker/doc4dev/sml-smp/Dockerfile | 124 +++++++++++++++ .../sml-smp/bdmsl/db.changelog-master.xml | 42 +++++ .../bdmsl/db.changelog-update-3.1.RC1.xml | 138 ++++++++++++++++ .../sml-smp/bdmsl/db.init-data-inserts.xml | 103 ++++++++++++ .../bdmsl/encriptionPrivateKey.private | 1 + .../docker/doc4dev/sml-smp/bdmsl/keystore.jks | Bin 0 -> 4319 bytes .../docker/doc4dev/sml-smp/bind/named.conf | 80 ++++++++++ .../doc4dev/sml-smp/bind/named.conf.local | 28 ++++ .../doc4dev/sml-smp/bind/zones/db.172.20 | 17 ++ .../bind/zones/db.acc.edelivery.tech.local | 14 ++ .../main/docker/doc4dev/sml-smp/entrypoint.sh | 150 ++++++++++++++++++ 12 files changed, 714 insertions(+) create mode 100644 smp-docker/pom.xml create mode 100644 smp-docker/src/main/docker/doc4dev/sml-smp/Dockerfile create mode 100644 smp-docker/src/main/docker/doc4dev/sml-smp/bdmsl/db.changelog-master.xml create mode 100644 smp-docker/src/main/docker/doc4dev/sml-smp/bdmsl/db.changelog-update-3.1.RC1.xml create mode 100644 smp-docker/src/main/docker/doc4dev/sml-smp/bdmsl/db.init-data-inserts.xml create mode 100644 smp-docker/src/main/docker/doc4dev/sml-smp/bdmsl/encriptionPrivateKey.private create mode 100644 smp-docker/src/main/docker/doc4dev/sml-smp/bdmsl/keystore.jks create mode 100644 smp-docker/src/main/docker/doc4dev/sml-smp/bind/named.conf create mode 100644 smp-docker/src/main/docker/doc4dev/sml-smp/bind/named.conf.local create mode 100755 smp-docker/src/main/docker/doc4dev/sml-smp/bind/zones/db.172.20 create mode 100644 smp-docker/src/main/docker/doc4dev/sml-smp/bind/zones/db.acc.edelivery.tech.local create mode 100644 smp-docker/src/main/docker/doc4dev/sml-smp/entrypoint.sh diff --git a/smp-docker/pom.xml b/smp-docker/pom.xml new file mode 100644 index 000000000..392acc1fb --- /dev/null +++ b/smp-docker/pom.xml @@ -0,0 +1,17 @@ +<?xml version="1.0" encoding="UTF-8"?> + +<project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xmlns="http://maven.apache.org/POM/4.0.0" + xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> + <modelVersion>4.0.0</modelVersion> + + <parent> + <groupId>eu.europa.ec</groupId> + <artifactId>smp-modules</artifactId> + <version>4.0.1-SNAPSHOT</version> + </parent> + <artifactId>smp-docker</artifactId> + <packaging>jar</packaging> + <name>SMP Docker</name> + +</project> diff --git a/smp-docker/src/main/docker/doc4dev/sml-smp/Dockerfile b/smp-docker/src/main/docker/doc4dev/sml-smp/Dockerfile new file mode 100644 index 000000000..bf686a414 --- /dev/null +++ b/smp-docker/src/main/docker/doc4dev/sml-smp/Dockerfile @@ -0,0 +1,124 @@ +FROM centos + +MAINTAINER jrc + + +ENV SML_VERSION=3.1.2 \ + SML_DISTRIBUTION_URL=https://ec.europa.eu/cefdigital/artifact/content/repositories/eDelivery/eu/europa/ec/bdmsl/bdmsl-webapp \ + SML_SHA1=2000b1db9739e04559b7bf47faffed9abded137e \ + SMP_VERSION=4.0.0 \ + SMP_DISTRIBUTION_URL=https://ec.europa.eu/cefdigital/artifact/content/repositories/eDelivery/eu/europa/ec/edelivery/smp \ + SMP_SHA1=52ba09257948233e920638f7a90f9bfa120910ca \ + SMP_CONF_SHA1=af40537d2874775f2ab34c538682ef7ac50efdb3 \ + TOMCAT_MAJOR=8 \ + TOMCAT_VERSION=8.5.31 \ + TOMCAT_SHA512=51d8877782bc975b8c566263df7e55f383e617aa3c81ea2c219fed18e1f5d9e8233a92100de95b9a8df69ce5c0ad89a195d5b7e5647fcf9df26231870073a9cb \ + MYSQL_DRV_VERSION=5.1.46 \ + MYSQL_DRV_SHA1=9a3e63b387e376364211e96827bc27db8d7a92e9 \ + DATA_DIR=/data \ + USER_BIND=named \ + USER_TOMCAT=tomcat \ + DB_SML_SCHEMA=bdmsl \ + DB_SML_USER=sml \ + DB_SML_PASSWORD=sml \ + DB_SMP_SCHEMA=smp \ + DB_SMP_USER=smp \ + DB_SMP_PASSWORD=smp \ + MYSQL_ROOT_PASSWORD=root + +ENV TOMCAT_HOME=/opt/apache-tomcat-$TOMCAT_VERSION + + +# add mysql repo to install mysql instead mariadb +RUN rpm -Uvh http://dev.mysql.com/get/mysql57-community-release-el7-7.noarch.rpm \ +# && yum update -y \ + && yum install -y wget \ + which \ + unzip \ +# MySQL server and client will be used by Domibus to Create MySQL users/schemas + mysql-community-server \ +# add bind server + bind \ + bind-utils \ + java-1.8.0-openjdk-devel \ +# clean yum to decrease image size + && yum clean all \ +# get tomcat, mysql driver, bdmsl + && cd /opt \ + && wget -O /opt/tomcat.zip "https://archive.apache.org/dist/tomcat/tomcat-$TOMCAT_MAJOR/v$TOMCAT_VERSION/bin/apache-tomcat-$TOMCAT_VERSION.zip" \ + && sha512sum /opt/tomcat.zip | grep $TOMCAT_SHA512 \ + && wget -O mysql-connector-java-$MYSQL_DRV_VERSION.jar https://repo1.maven.org/maven2/mysql/mysql-connector-java/$MYSQL_DRV_VERSION/mysql-connector-java-$MYSQL_DRV_VERSION.jar \ + && sha1sum mysql-connector-java-$MYSQL_DRV_VERSION.jar | grep $MYSQL_DRV_SHA1 \ + && wget -O "edelivery-sml.war" "$SML_DISTRIBUTION_URL/$SML_VERSION/bdmsl-webapp-$SML_VERSION-tomcat-mysql.war" \ + && sha1sum edelivery-sml.war | grep $SML_SHA1 \ + && wget -O smp.war "$SMP_DISTRIBUTION_URL/$SMP_VERSION/smp-$SMP_VERSION.war" \ + && sha1sum smp.war | grep $SMP_SHA1 \ + && wget -O smp-setup.zip "$SMP_DISTRIBUTION_URL/$SMP_VERSION/smp-$SMP_VERSION-setup.zip" \ + && sha1sum smp-setup.zip | grep $SMP_CONF_SHA1 \ + && unzip tomcat.zip \ + && rm -rf $TOMCAT_HOME/webapps/* \ + && mv /opt/mysql-connector-java-$MYSQL_DRV_VERSION.jar $TOMCAT_HOME/lib/ \ + && mv /opt/edelivery-sml.war $TOMCAT_HOME/webapps/edelivery-sml.war \ + && mv /opt/smp.war $TOMCAT_HOME/webapps/smp.war \ + && unzip smp-setup.zip \ + && rm *.zip \ +# create user + && groupadd "$USER_TOMCAT" \ + && useradd -s /sbin/nologin -g $USER_TOMCAT -M $USER_TOMCAT \ + && cd $TOMCAT_HOME \ +# install SML, set database param. and init data + && mkdir -p $TOMCAT_HOME/sml/conf/ \ + && sed -i -e "s/<\/Context>/<Resource name=\"jdbc\/edelivery\" auth=\"Container\" type=\"javax.sql.DataSource\" maxTotal=\"100\" maxIdle=\"30\" maxWaitMillis=\"10000\" username=\"$DB_SML_USER\" password=\"$DB_SML_PASSWORD\" driverClassName=\"com.mysql.jdbc.Driver\" url=\"jdbc:mysql:\/\/localhost:3306\/$DB_SML_SCHEMA\"\/><\/Context>/g" "$TOMCAT_HOME/conf/context.xml" \ +# install SMP, set database bugfix for version 3.1.2 + && mkdir -p $TOMCAT_HOME/smp/conf/ \ + && echo "export CLASSPATH=$TOMCAT_HOME/smp/conf" > $TOMCAT_HOME/bin/setenv.sh \ + && cp /opt/smp-$SMP_VERSION/smp.config.properties $TOMCAT_HOME/smp/conf/ \ + && cp /opt/smp-$SMP_VERSION/sample_signatures_keystore.jks $TOMCAT_HOME/smp/conf/ \ + && sed -i -e "s#jdbc:mysql://localhost:3306/smp#jdbc:mysql://localhost:3306/$DB_SMP_SCHEMA#g" "$TOMCAT_HOME/smp/conf/smp.config.properties" \ + && sed -i -e "s#jdbc.user\s*=\s*smp#jdbc.user=$DB_SMP_USER#g" "$TOMCAT_HOME/smp/conf/smp.config.properties" \ + && sed -i -e "s#jdbc.password\s*=\s*secret123#jdbc.password=$DB_SMP_PASSWORD#g" "$TOMCAT_HOME/smp/conf/smp.config.properties" \ + && sed -i -e "s#/keystores/sample_signatures_keystore.jks#$TOMCAT_HOME/smp/conf/sample_signatures_keystore.jks#g" "$TOMCAT_HOME/smp/conf/smp.config.properties" \ +# configure SMP, SML integration + && sed -i -e "s#bdmsl.integration.enabled=false#bdmsl.integration.enabled=true#g" "$TOMCAT_HOME/smp/conf/smp.config.properties" \ + && sed -i -e "s#bdmsl.integration.url=http://localhost:8080/manageparticipantidentifier#bdmsl.integration.url=http://localhost:8080/edelivery-sml/manageparticipantidentifier#g" "$TOMCAT_HOME/smp/conf/smp.config.properties" \ + && awk '/\[mysqld\]/ { print; print "lower_case_table_names = 1\nbind-address=0.0.0.0"; next }1' /etc/my.cnf >> /etc/my.cnf \ +# set tomcat user + && chown -R $USER_TOMCAT:$USER_TOMCAT bin/ webapps/ work/ temp/ logs/ \ + && chmod ug+x bin/*.sh \ +# set bind + && mkdir -p /var/named/data/log \ + && chown -R $USER_BIND:$USER_BIND /var/named \ + && mkdir -p /var/named/data/log \ +# set init mysqld + && mysqld --initialize-insecure --user=mysql \ + && chown -R mysql:mysql /var/lib/mysql + +# set init data for SML +COPY bdmsl/db.* /temp/ +RUN mkdir -p $TOMCAT_HOME/webapps/WEB-INF/classes/liquibase/ \ + && cp /temp/db.* $TOMCAT_HOME/webapps/WEB-INF/classes/liquibase/ \ + && jar -uf $TOMCAT_HOME/webapps/edelivery-sml.war -C $TOMCAT_HOME/webapps/ WEB-INF/classes/liquibase/db.changelog-master.xml \ + && jar -uf $TOMCAT_HOME/webapps/edelivery-sml.war -C $TOMCAT_HOME/webapps/ WEB-INF/classes/liquibase/db.init-data-inserts.xml \ +# bugfix for mysql: fixed in 3.1.3 + && jar -uf $TOMCAT_HOME/webapps/edelivery-sml.war -C $TOMCAT_HOME/webapps/ WEB-INF/classes/liquibase/db.changelog-update-3.1.RC1.xml \ + && rm -rf $TOMCAT_HOME/webapps/WEB-INF + +COPY bind/named.conf /etc/named.conf +COPY bind/named.conf.local /etc/named.conf.local +COPY bind/zones /var/named/zones + +COPY bdmsl/keystore.jks $TOMCAT_HOME/sml/conf/keystore.jks +COPY bdmsl/encriptionPrivateKey.private $TOMCAT_HOME/sml/conf/encriptionPrivateKey.private +COPY entrypoint.sh /sbin/entrypoint.sh + +RUN chmod 755 /sbin/entrypoint.sh + +EXPOSE 53/udp 53/tcp 3306 8080 + +ENTRYPOINT ["/sbin/entrypoint.sh"] + +CMD ["bash"] + + + + diff --git a/smp-docker/src/main/docker/doc4dev/sml-smp/bdmsl/db.changelog-master.xml b/smp-docker/src/main/docker/doc4dev/sml-smp/bdmsl/db.changelog-master.xml new file mode 100644 index 000000000..0fcb427b2 --- /dev/null +++ b/smp-docker/src/main/docker/doc4dev/sml-smp/bdmsl/db.changelog-master.xml @@ -0,0 +1,42 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!-- +(C) Copyright 2018 - European Commission | CEF eDelivery + +Licensed under the EUPL, Version 1.2 (the "License"); +You may not use this file except in compliance with the License. +You may obtain a copy of the License at + +\BDMSL\bdmsl-parent-pom\LICENSE-EUPL-v1.2.pdf or https://joinup.ec.europa.eu/sites/default/files/custom-page/attachment/eupl_v1.2_en.pdf + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +--> +<databaseChangeLog + xmlns="http://www.liquibase.org/xml/ns/dbchangelog" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog + http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.3.xsd"> + + <property name="now" value="sysdate" dbms="oracle"/> + <property name="now" value="CURRENT_TIMESTAMP" dbms="mysql,h2"/> + + <!-- Initial creation script --> + <include file="db.changelog-create.xml" relativeToChangelogFile="true"/> + + <!-- Inserts of the properties with default values --> + <include file="db.changelog-default-data-inserts.xml" relativeToChangelogFile="true"/> + + <!-- Initial update script --> + <include file="db.changelog-update-3.0.1.xml" relativeToChangelogFile="true"/> + <include file="db.changelog-update-3.1.RC1.xml" relativeToChangelogFile="true"/> + <include file="db.changelog-update-3.1.RC2.xml" relativeToChangelogFile="true"/> + <include file="db.changelog-update-3.1.2.xml" relativeToChangelogFile="true"/> + + <!-- env specific update script --> + <include file="db.init-data-inserts.xml" relativeToChangelogFile="true"/> + <!-- Increments BDMSL version --> + <include file="db.changelog-version.xml" relativeToChangelogFile="true"/> +</databaseChangeLog> diff --git a/smp-docker/src/main/docker/doc4dev/sml-smp/bdmsl/db.changelog-update-3.1.RC1.xml b/smp-docker/src/main/docker/doc4dev/sml-smp/bdmsl/db.changelog-update-3.1.RC1.xml new file mode 100644 index 000000000..626805dd5 --- /dev/null +++ b/smp-docker/src/main/docker/doc4dev/sml-smp/bdmsl/db.changelog-update-3.1.RC1.xml @@ -0,0 +1,138 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<databaseChangeLog + xmlns="http://www.liquibase.org/xml/ns/dbchangelog" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog + http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.3.xsd"> + + <!-- CREATE TABLE AND COLUMNS --> + + <changeSet author="eDelivery" id="39" logicalFilePath="path-independent"> + + <insert tableName="bdmsl_configuration"> + <column name="property" value="dataInconsistencyCheckerCronExpression"/> + <column name="value" value="0 0 3 ? * *"/> + <column name="description" + value="Cron expression for dataInconsistencyChecker job. Example: 0 0 3 ? * * (everyday at 3:00 am)"/> + </insert> + + <insert tableName="bdmsl_configuration"> + <column name="property" value="dataInconsistencyCheckerEmail"/> + <column name="value" value="email@domain.com"/> + <column name="description" value="Email address to receive Data Inconsistency Checker results"/> + </insert> + </changeSet> + + <changeSet id="40" author="eDelivery" logicalFilePath="path-independent"> + <createTable tableName="bdmsl_subdomain"> + <column autoIncrement="${autoIncrement}" name="subdomain_id" remarks="Subdomain ID" type="INT"> + <constraints primaryKey="true" primaryKeyName="PRIMARY_SUBDOM" nullable="false"/> + </column> + <column name="subdomain_name" remarks="Subdomain Name" type="VARCHAR(255)"> + <constraints nullable="false" unique="true"/> + </column> + <column defaultValueComputed="${now}" name="created_on" remarks="Date of creation" + type="datetime"> + <constraints nullable="false"/> + </column> + <column defaultValueComputed="${now}" name="last_updated_on" remarks="Date of the last update" + type="datetime"> + <constraints nullable="false"/> + </column> + </createTable> + + <!--<dropColumn tableName="bdmsl_certificate_domain" columnName="subdomain"/>--> + + <addColumn tableName="bdmsl_certificate_domain"> + <column name="fk_subdomain_id" type="INT"/> + </addColumn> + + <addColumn tableName="bdmsl_smp"> + <column name="fk_subdomain_id" type="INT"/> + </addColumn> + + <addForeignKeyConstraint baseColumnNames="fk_subdomain_id" baseTableName="bdmsl_certificate_domain" + constraintName="FK_certdom_subdom_subdomid" deferrable="false" + initiallyDeferred="false" + onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="subdomain_id" + referencedTableName="bdmsl_subdomain"/> + + <addForeignKeyConstraint baseColumnNames="fk_subdomain_id" baseTableName="bdmsl_smp" + constraintName="FK_smp_subdom_subdomid" deferrable="false" initiallyDeferred="false" + onDelete="NO ACTION" onUpdate="NO ACTION" referencedColumnNames="subdomain_id" + referencedTableName="bdmsl_subdomain"/> + + </changeSet> + + <!-- MIGRATION SCRIPT --> + <changeSet id="41" author="eDelivery" logicalFilePath="path-independent"> + <validCheckSum>7:c0759dbf9933e866bace1aac5a5fc589</validCheckSum> + <sql dbms="oracle,h2"> + insert into bdmsl_subdomain(subdomain_id, subdomain_name) + select rownum, dom from (select distinct domain dom from bdmsl_certificate_domain); + </sql> + <sql dbms="mysql"> + set @row_number = 0; + insert into bdmsl_subdomain(subdomain_id, subdomain_name) ( + select + (@row_number:=@row_number + 1) as num,domain from (select distinct domain from + bdmsl_certificate_domain) domaintable); + </sql> + <sql> + update bdmsl_certificate_domain set fk_subdomain_id = (select distinct subdomain_id from bdmsl_subdomain + where subdomain_name=domain) where fk_subdomain_id is null; + </sql> + </changeSet> + + <changeSet id="42" author="eDelivery" logicalFilePath="path-independent"> + <validCheckSum>7:c60b9400817faa59fcf753eb5264bc93</validCheckSum> + <preConditions onFail="MARK_RAN"> + <not> + <tableIsEmpty tableName="bdmsl_subdomain"/> + </not> + </preConditions> + <!-- MIGRATE SMP TABLE --> + <sql> + update bdmsl_smp set fk_subdomain_id = 1; + </sql> + </changeSet> + + <!-- DROP OLD COLUMNS AND ADD CONSTRAINTS --> + <changeSet id="43" author="eDelivery" logicalFilePath="path-independent"> + <preConditions onFail="HALT"> + <columnExists tableName="bdmsl_certificate_domain" columnName="domain"/> + </preConditions> + <!-- DROP COLUMN DOMAIN FROM CERTIFICATEDOMAIN TABLE --> + <dropColumn tableName="bdmsl_certificate_domain" columnName="domain"/> + </changeSet> + + <changeSet id="44" author="eDelivery" logicalFilePath="path-independent"> + <!-- ADD NOT NULL CONSTRAINTS --> + <addNotNullConstraint tableName="bdmsl_certificate_domain" columnName="fk_subdomain_id" columnDataType="INT"/> + <addNotNullConstraint tableName="bdmsl_smp" columnName="fk_subdomain_id" columnDataType="INT"/> + </changeSet> + + <changeSet id="46" author="eDelivery" logicalFilePath="path-independent"> + <delete tableName="bdmsl_configuration"> + <where>property = 'isAliveDNSChecking'</where> + </delete> + </changeSet> + + <changeSet id="47" author="eDelivery" logicalFilePath="path-independent"> + <update tableName="bdmsl_configuration"> + <column name="property" value='dataInconsistencyAnalyzer.cronJobExpression' type="LONGTEXT"/> + <where>property='dataInconsistencyCheckerCronExpression'</where> + </update> + + <update tableName="bdmsl_configuration"> + <column name="property" value='dataInconsistencyAnalyzer.recipientEmail' type="LONGTEXT"/> + <where>property='dataInconsistencyCheckerEmail'</where> + </update> + + <insert tableName="bdmsl_configuration"> + <column name="property" value="dataInconsistencyAnalyzer.senderEmail" type="LONGTEXT"/> + <column name="value" value="automated-notifications@nomail.ec.europa.eu"/> + <column name="description" value="Sender email address for reporting Data Inconsistency Analyzer."/> + </insert> + </changeSet> +</databaseChangeLog> diff --git a/smp-docker/src/main/docker/doc4dev/sml-smp/bdmsl/db.init-data-inserts.xml b/smp-docker/src/main/docker/doc4dev/sml-smp/bdmsl/db.init-data-inserts.xml new file mode 100644 index 000000000..c4a08e2c4 --- /dev/null +++ b/smp-docker/src/main/docker/doc4dev/sml-smp/bdmsl/db.init-data-inserts.xml @@ -0,0 +1,103 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- +(C) Copyright 2018 - European Commission | CEF eDelivery + +Licensed under the EUPL, Version 1.2 (the "License"); +You may not use this file except in compliance with the License. +You may obtain a copy of the License at + +\BDMSL\bdmsl-parent-pom\LICENSE-EUPL-v1.2.pdf or https://joinup.ec.europa.eu/sites/default/files/custom-page/attachment/eupl_v1.2_en.pdf + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +--> +<databaseChangeLog + xmlns="http://www.liquibase.org/xml/ns/dbchangelog" + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" + xsi:schemaLocation="http://www.liquibase.org/xml/ns/dbchangelog + http://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.3.xsd"> + + + + <!-- Environment Specific --> + <changeSet author="eDelivery" id="999990" logicalFilePath="path-independent"> + <update tableName="bdmsl_configuration"> + <column name="value" value='false' type="LONGTEXT"/> + <where>property='dnsClient.SIG0Enabled'</where> + </update> + <update tableName="bdmsl_configuration"> + <column name="value" value='false' type="LONGTEXT"/> + <where>property='signResponse'</where> + </update> + <update tableName="bdmsl_configuration"> + <column name="value" value='true' type="LONGTEXT"/> + <where>property='dnsClient.enabled'</where> + </update> + <update tableName="bdmsl_configuration"> + <column name="value" value='sml/conf/' type="LONGTEXT"/> + <where>property='configurationDir'</where> + </update> + <update tableName="bdmsl_configuration"> + <column name="value" value='127.0.0.1' type="LONGTEXT"/> + <where>property='dnsClient.server'</where> + </update> + <update tableName="bdmsl_configuration"> + <column name="value" value='true' type="LONGTEXT"/> + <where>property='unsecureLoginAllowed'</where> + </update> + <update tableName="bdmsl_configuration"> + <column name="value" value='false' type="LONGTEXT"/> + <where>property='useProxy'</where> + </update> + <update tableName="bdmsl_configuration"> + <column name="value" value='false' type="LONGTEXT"/> + <where>property='authentication.bluecoat.enabled'</where> + </update> + </changeSet> + <!-- Set new domain --> + <changeSet author="eDelivery" id="999991" logicalFilePath="path-independent"> + <delete tableName="bdmsl_configuration"> + <where>property like '%.ec.europa.eu'</where> + </delete> + + <update tableName="bdmsl_subdomain"> + <column name="subdomain_name" value='acc.edelivery.tech.local' type="LONGTEXT"/> + <where>subdomain_id='1'</where> + </update> + + <insert tableName="bdmsl_configuration"> + <column name="property" value="dnsClient.domain.acc.edelivery.tech.local"/> + <column name="value" value="acc.edelivery.tech.local"/> + <column name="description" + value="Test domain"/> + </insert> + <insert tableName="bdmsl_configuration"> + <column name="property" + value="subdomain.validation.participantIdRegex.acc.edelivery.tech.local"/> + <column name="value" + value="^.*$"/> + <column name="description" + value="Regex allows specific and described ids only or '*' instead for having wildcards."/> + </insert> + <insert tableName="bdmsl_configuration"> + <column name="property" + value="subdomain.validation.smpLogicalAddressProtocolRestriction.acc.edelivery.tech.local" + type="LONGTEXT"/> + <column name="value" value="all"/> + <column name="description" + value="Protocol that MUST be used for LogicalAddress when registering new SMP, 'all' means both protocols are accepted possible values: [ http, https, all]."/> + </insert> + <insert tableName="bdmsl_configuration"> + <column name="property" + value="dnsClient.recordTypes.acc.edelivery.tech.local"/> + <column name="value" value="all"/> + <column name="description" + value="Type of DNS Record when registering/updating participant, 'all' means that both DNS record types are accepted as possible values: [cname, naptr, all]."/> + </insert> + + </changeSet> + +</databaseChangeLog> diff --git a/smp-docker/src/main/docker/doc4dev/sml-smp/bdmsl/encriptionPrivateKey.private b/smp-docker/src/main/docker/doc4dev/sml-smp/bdmsl/encriptionPrivateKey.private new file mode 100644 index 000000000..9f7ff344a --- /dev/null +++ b/smp-docker/src/main/docker/doc4dev/sml-smp/bdmsl/encriptionPrivateKey.private @@ -0,0 +1 @@ +�y�ȥ�N���v�@ �j<�,�������)V \ No newline at end of file diff --git a/smp-docker/src/main/docker/doc4dev/sml-smp/bdmsl/keystore.jks b/smp-docker/src/main/docker/doc4dev/sml-smp/bdmsl/keystore.jks new file mode 100644 index 0000000000000000000000000000000000000000..b43019a89b4d535ad3028aa09295e0a8151cc7d2 GIT binary patch literal 4319 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 ULI2EM2SY*^e4g}Sg~lFV0P%S(cK`qY literal 0 HcmV?d00001 diff --git a/smp-docker/src/main/docker/doc4dev/sml-smp/bind/named.conf b/smp-docker/src/main/docker/doc4dev/sml-smp/bind/named.conf new file mode 100644 index 000000000..269a84eb0 --- /dev/null +++ b/smp-docker/src/main/docker/doc4dev/sml-smp/bind/named.conf @@ -0,0 +1,80 @@ +// +// named.conf +// +// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS +// server as a caching only nameserver (as a localhost DNS resolver only). +// +// See /usr/share/doc/bind*/sample/ for example named configuration files. +// +// See the BIND Administrator's Reference Manual (ARM) for details about the +// configuration located in /usr/share/doc/bind-{version}/Bv9ARM.html + +options { + listen-on port 53 { any; }; + listen-on-v6 port 53 { any; }; + directory "/var/named"; + dump-file "/var/named/data/cache_dump.db"; + statistics-file "/var/named/data/named_stats.txt"; + memstatistics-file "/var/named/data/named_mem_stats.txt"; + allow-query { any; }; + + /* + - If you are building an AUTHORITATIVE DNS server, do NOT enable recursion. + - If you are building a RECURSIVE (caching) DNS server, you need to enable + recursion. + - If your recursive DNS server has a public IP address, you MUST enable access + control to limit queries to your legitimate users. Failing to do so will + cause your server to become part of large scale DNS amplification + attacks. Implementing BCP38 within your network would greatly + reduce such attack surface + */ + recursion no; + //======================================================================== + // JRC: allow-transfer defines a match list e.g. IP address(es) that are + // allowed to transfer (copy) the zone information from the server (master + // or slave for the zone). + //======================================================================== + allow-transfer { none; }; + + + dnssec-enable false; + dnssec-validation false; + + /* Path to ISC DLV key + bindkeys-file "/etc/named.iscdlv.key"; + + managed-keys-directory "/var/named/dynamic"; + + pid-file "/run/named/named.pid"; + session-keyfile "/run/named/session.key";*/ +}; + +logging { + channel log_default { + file "/var/named/data/log/named.log" versions 3 size 10m; + print-category yes; + print-severity yes; + print-time yes; + }; + channel log_queries { + file "/var/named/data/log/named_queries.log" versions 3 size 20m; + print-category yes; + print-severity yes; + print-time yes; + }; + + category default { log_default; }; + category general { log_default; }; + category queries { log_queries; }; + +}; + +zone "." IN { + type hint; + file "named.ca"; +}; + +include "/etc/named.rfc1912.zones"; +include "/etc/named.root.key"; +include "/etc/named.conf.local"; + diff --git a/smp-docker/src/main/docker/doc4dev/sml-smp/bind/named.conf.local b/smp-docker/src/main/docker/doc4dev/sml-smp/bind/named.conf.local new file mode 100644 index 000000000..83003e58d --- /dev/null +++ b/smp-docker/src/main/docker/doc4dev/sml-smp/bind/named.conf.local @@ -0,0 +1,28 @@ +// +// Do any local configuration here +// + +// Consider adding the 1918 zones here, if they are not used in your +// organization +//include "/etc/bind/zones.rfc1918"; + + +zone "acc.edelivery.tech.local" { + type master; + file "/var/named/zones/db.acc.edelivery.tech.local"; + allow-update { 127.0.0.1;172/8; } ; + allow-query { any; }; + allow-transfer {127.0.0.1; 172/8;}; + +}; + + +zone "20.172.in-addr.arpa" { + type master; + notify no; + file "/var/named/zones/db.172.20"; + allow-update {127.0.0.1;172/8; } ; + allow-query { any; }; + allow-transfer {127.0.0.1;172/8; }; + +}; diff --git a/smp-docker/src/main/docker/doc4dev/sml-smp/bind/zones/db.172.20 b/smp-docker/src/main/docker/doc4dev/sml-smp/bind/zones/db.172.20 new file mode 100755 index 000000000..2e1395e97 --- /dev/null +++ b/smp-docker/src/main/docker/doc4dev/sml-smp/bind/zones/db.172.20 @@ -0,0 +1,17 @@ + ; +; BIND reverse data file for local loopback interface +; +$TTL 604800 +@ IN SOA ns.acc.edelivery.tech.local. root.acc.edelivery.tech.local. ( + 1 ; Serial + 604800 ; Refresh + 86400 ; Retry + 2419200 ; Expire + 604800 ) ; Negative Cache TTL +; +@ IN NS ns. +0.1 IN PTR ns.acc.edelivery.tech.local. + +; also list other computers +0.101 IN PTR test.acc.edelivery.tech.local. + diff --git a/smp-docker/src/main/docker/doc4dev/sml-smp/bind/zones/db.acc.edelivery.tech.local b/smp-docker/src/main/docker/doc4dev/sml-smp/bind/zones/db.acc.edelivery.tech.local new file mode 100644 index 000000000..c4ff2ea9a --- /dev/null +++ b/smp-docker/src/main/docker/doc4dev/sml-smp/bind/zones/db.acc.edelivery.tech.local @@ -0,0 +1,14 @@ +$ORIGIN . +$TTL 604800 ; 1 week +acc.edelivery.tech.local IN SOA ns.acc.edelivery.tech.local. root.acc.edelivery.tech.local. ( + 1 ; serial + 604800 ; refresh (1 week) + 86400 ; retry (1 day) + 2419200 ; expire (4 weeks) + 604800 ; minimum (1 week) + ) + NS ns.acc.edelivery.tech.local. +$ORIGIN acc.edelivery.tech.local. +$TTL 60 ; 1 minute +ns A 172.20.0.1 +test A 172.20.0.101 diff --git a/smp-docker/src/main/docker/doc4dev/sml-smp/entrypoint.sh b/smp-docker/src/main/docker/doc4dev/sml-smp/entrypoint.sh new file mode 100644 index 000000000..9b330e177 --- /dev/null +++ b/smp-docker/src/main/docker/doc4dev/sml-smp/entrypoint.sh @@ -0,0 +1,150 @@ +#!/bin/bash +set -e + +MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD:-root} +export JAVA_HOME=`type -p javac|xargs readlink -f|xargs dirname|xargs dirname` + +BIND_DATA_DIR=${DATA_DIR}/bind +MYSQL_DATA_DIR=${DATA_DIR}/mysql +TOMCAT_DIR=${DATA_DIR}/tomcat + +if [ ! -d ${DATA_DIR} ]; then + mkdir -p ${DATA_DIR} +fi + +if [ ! -d ${BIND_DATA_DIR}/etc ]; then + mkdir -p ${BIND_DATA_DIR}/etc +fi + +if [ ! -d ${BIND_DATA_DIR}/var ]; then + mkdir -p ${BIND_DATA_DIR}/var +fi + +init_bind() { + + # move configuration if it does not exist + if [ ! -d ${BIND_DATA_DIR}/etc/named ]; then + mv /etc/named.conf.local ${BIND_DATA_DIR}/etc/named.conf.local + mv /etc/named.conf ${BIND_DATA_DIR}/etc/named.conf + fi + rm -rf /etc/named.conf.local + rm -rf /etc/named.conf + ln -sf ${BIND_DATA_DIR}/etc/named.conf.local /etc/named.conf.local + ln -sf ${BIND_DATA_DIR}/etc/named.conf /etc/named.conf + # move data dir if it does not exist + if [ ! -d ${BIND_DATA_DIR}/var/named ]; then + mv /var/named ${BIND_DATA_DIR}/var/named + fi + rm -rf /var/named + ln -sf ${BIND_DATA_DIR}/var/named /var/named + + chmod -R 0775 ${BIND_DATA_DIR} + chown -R named:named ${BIND_DATA_DIR} + + +} + +init_mysql() { + if [ ! -d ${MYSQL_DATA_DIR} ]; then + mv /var/lib/mysql ${MYSQL_DATA_DIR} + fi + + rm -rf /var/lib/mysql + ln -sf ${MYSQL_DATA_DIR} /var/lib/mysql + + chmod -R 0775 ${MYSQL_DATA_DIR} + + usermod -d ${MYSQL_DATA_DIR} mysql + + # Start the MySQL daemon in the background. + mysqld --user=mysql & + # wait until db is up. + until mysqladmin ping >/dev/null 2>&1; do + echo -n "."; sleep 0.2 + done + echo "SET ROOT PASSWORD" + # set root password + mysql -h localhost -u root -e "ALTER USER 'root'@'localhost' IDENTIFIED BY '$MYSQL_ROOT_PASSWORD';" + #mysqladmin -u root password $MYSQL_ROOT_PASSWORD + + + #-------------------------------------------------- + # INIT SML + #-------------------------------------------------- + # check if DB_SML_SCHEMA exists + if [ ! -d ${MYSQL_DATA_DIR}/${DB_SML_SCHEMA} ]; then + # create database + echo "create SML schema" + mysql -h localhost --user=root --password=$MYSQL_ROOT_PASSWORD -e "create schema $DB_SML_SCHEMA;alter database $DB_SML_SCHEMA charset=utf8; create user $DB_SML_USER identified by '$DB_SML_PASSWORD';grant all on $DB_SML_SCHEMA.* to $DB_SML_USER;" + # change db init file + fi + + # change db init file alway else at new run (not start container) liquibase will return error + if [ -f ${DATA_DIR}/init/db.init.xml ]; then + mkdir -p $TOMCAT_HOME/webapps/WEB-INF/classes/liquibase/ + cp ${DATA_DIR}/init/db.init.xml $TOMCAT_HOME/webapps/WEB-INF/classes/liquibase/db.init-data-inserts.xml + jar -uf $TOMCAT_HOME/webapps/edelivery-sml.war -C $TOMCAT_HOME/webapps/ WEB-INF/classes/liquibase/db.init-data-inserts.xml + rm -rf $TOMCAT_HOME/webapps/WEB-INF + fi + #-------------------------------------------------- + # INIT SMP + #-------------------------------------------------- + if [ ! -d ${MYSQL_DATA_DIR}/${DB_SMP_SCHEMA} ]; then + # create database + echo "create SMP schema" + mysql -h localhost -u root --password=$MYSQL_ROOT_PASSWORD -e "create schema $DB_SMP_SCHEMA;alter database $DB_SMP_SCHEMA charset=utf8; create user $DB_SMP_USER identified by '$DB_SMP_PASSWORD';grant all on $DB_SMP_SCHEMA.* to $DB_SMP_USER;" + + # update domain client cert for default domain - SMP-SML connection. SML does not require authetication but SMP does. At this moment value bdmslClientCertHeader is not important as log it is not null + echo "" >> /opt/smp-$SMP_VERSION/database-scripts/create-Mysql.sql + echo "update smp_domain set bdmslClientCertHeader='sno=123456&subject=CN=SMP_CEF_SUPPORT, OU=B4, O=DIGIT, L=Brussels, ST=BE, C=BE&validfrom=Jun 1 10:00:00 2015 CEST&validto=Jun 1 10:00:00 2035 CEST&issuer=EMAILADDRESS=root@test.be,CN=TEST Root CN, OU=B4,O=DIGIT,L=Brussels,ST=BE,C=BE'" >> /opt/smp-$SMP_VERSION/database-scripts/create-Mysql.sql + mysql -h localhost -u root --password=$MYSQL_ROOT_PASSWORD $DB_SMP_SCHEMA < "/opt/smp-$SMP_VERSION/database-scripts/create-Mysql.sql" + + fi +} + + +init_tomcat() { + + echo "[INFO] init tomcat folders: $tfile" + if [ ! -d ${TOMCAT_DIR} ]; then + mkdir -p ${TOMCAT_DIR} + fi + + # move tomcat log folder to data folder + if [ ! -d ${TOMCAT_DIR}/logs ]; then + if [ ! -d ${TOMCAT_HOME}/logs ]; then + mkdir -p ${TOMCAT_DIR}/logs + else + mv ${TOMCAT_HOME}/logs ${TOMCAT_DIR}/ + rm -rf ${TOMCAT_HOME}/logs + fi + fi + rm -rf ${TOMCAT_HOME}/logs + ln -sf ${TOMCAT_DIR}/logs ${TOMCAT_HOME}/logs + + # move domibus conf folder to data folder + if [ ! -d ${TOMCAT_DIR}/conf ]; then + mv ${TOMCAT_HOME}/conf ${TOMCAT_DIR}/ + fi + rm -rf ${TOMCAT_HOME}/conf + ln -sf ${TOMCAT_DIR}/conf ${TOMCAT_HOME}/conf + chown -R tomcat:tomcat ${TOMCAT_DIR} + chmod u+x $TOMCAT_HOME/bin/*.sh + # start tomcat + cd ${TOMCAT_HOME}/bin/ + su -c ./startup.sh -s /bin/sh tomcat + +} + + + +init_bind +init_mysql +init_tomcat + +echo "Starting named..." +exec $(which named) -u ${USER_BIND} -g -- + + + + -- GitLab