From 60ffaffa2b9e642dd00ff664f8a08e7d3809ddc8 Mon Sep 17 00:00:00 2001 From: Joze RIHTARSIC <joze.rihtarsic@ext.ec.europa.eu> Date: Sun, 29 Mar 2020 07:41:01 +0200 Subject: [PATCH] - add new parameters to SML-SMP image for domibus DDC testing --- .../images/tomcat-mysql-smp-sml/Dockerfile | 13 ++- .../bind/db.test.edelivery.local | 1 - .../images/tomcat-mysql-smp-sml/entrypoint.sh | 85 ++++++++++++++++--- 3 files changed, 79 insertions(+), 20 deletions(-) diff --git a/smp-docker/images/tomcat-mysql-smp-sml/Dockerfile b/smp-docker/images/tomcat-mysql-smp-sml/Dockerfile index 4ba0d95ee..5a8348336 100755 --- a/smp-docker/images/tomcat-mysql-smp-sml/Dockerfile +++ b/smp-docker/images/tomcat-mysql-smp-sml/Dockerfile @@ -2,6 +2,8 @@ FROM ubuntu:18.04 MAINTAINER Joze Rihtarsic ARG SMP_VERSION +ARG SMP_LOGICAL_ADDRESS="${SMP_LOGICAL_ADDRESS:-http://localhost:8080/smp/}" + # Set the SMP_VERSION env variable \ ENV SMP_HOME=/opt/smp \ MYSQL_DRV_VERSION=5.1.46 \ @@ -11,6 +13,8 @@ ENV SMP_HOME=/opt/smp \ TOMCAT_SHA512=51d8877782bc975b8c566263df7e55f383e617aa3c81ea2c219fed18e1f5d9e8233a92100de95b9a8df69ce5c0ad89a195d5b7e5647fcf9df26231870073a9cb \ SMP_DB_SCHEMA=smp \ SMP_DB_USER=smp \ + SMP_INIT_PROPERTY_DELIMITER="||" \ + SMP_INIT_PROPERTIES="" \ SMP_DB_USER_PASSWORD=smp \ MYSQL_ROOT_PASSWORD=root \ # sml environment variables @@ -77,14 +81,7 @@ RUN apt-get update \ # add SMP init configuration && echo "datasource.jndi=java:comp/env/jdbc/eDeliverySmpDs" > $SMP_HOME/apache-tomcat-$TOMCAT_VERSION/classes/smp.config.properties \ && echo "hibernate.dialect=org.hibernate.dialect.MySQL5InnoDBDialect" >> $SMP_HOME/apache-tomcat-$TOMCAT_VERSION/classes/smp.config.properties \ - && echo "# SMP init parameters" >> $SMP_HOME/apache-tomcat-$TOMCAT_VERSION/classes/smp.config.properties \ - && echo "authentication.blueCoat.enabled=true" >> $SMP_HOME/apache-tomcat-$TOMCAT_VERSION/classes/smp.config.properties \ - && echo "bdmsl.integration.enabled=true" >> $SMP_HOME/apache-tomcat-$TOMCAT_VERSION/classes/smp.config.properties \ - && echo "bdmsl.integration.url=http://localhost:8080/edelivery-sml/" >> $SMP_HOME/apache-tomcat-$TOMCAT_VERSION/classes/smp.config.properties \ - && echo "bdmsl.integration.logical.address=http://localhost:8080/smp/" >> $SMP_HOME/apache-tomcat-$TOMCAT_VERSION/classes/smp.config.properties \ - && echo "bdmsl.integration.physical.address=0.0.0.0" >> $SMP_HOME/apache-tomcat-$TOMCAT_VERSION/classes/smp.config.properties \ - && echo "bdmsl.participant.multidomain.enabled=false" >> $SMP_HOME/apache-tomcat-$TOMCAT_VERSION/classes/smp.config.properties \ -# add SML init configuration + # add SML init configuration && echo "sml.datasource.jndi=java:comp/env/jdbc/eDeliverySmlDs" > $SMP_HOME/apache-tomcat-$TOMCAT_VERSION/classes/sml.config.properties \ && echo "sml.hibernate.dialect=org.hibernate.dialect.MySQLDialect" >> $SMP_HOME/apache-tomcat-$TOMCAT_VERSION/classes/sml.config.properties \ && echo "sml.jsp.servlet.class=org.apache.jasper.servlet.JspServlet" >> $SMP_HOME/apache-tomcat-$TOMCAT_VERSION/classes/sml.config.properties \ diff --git a/smp-docker/images/tomcat-mysql-smp-sml/bind/db.test.edelivery.local b/smp-docker/images/tomcat-mysql-smp-sml/bind/db.test.edelivery.local index 255540496..006d3d0cd 100755 --- a/smp-docker/images/tomcat-mysql-smp-sml/bind/db.test.edelivery.local +++ b/smp-docker/images/tomcat-mysql-smp-sml/bind/db.test.edelivery.local @@ -11,5 +11,4 @@ test.edelivery.local IN SOA ns.test.edelivery.local. root.test.edelivery.local. $ORIGIN test.edelivery.local. $TTL 60 ; 1 minute -ac A 192.168.56.201 ns A 127.0.0.1 diff --git a/smp-docker/images/tomcat-mysql-smp-sml/entrypoint.sh b/smp-docker/images/tomcat-mysql-smp-sml/entrypoint.sh index 295966ad9..3f8b61271 100755 --- a/smp-docker/images/tomcat-mysql-smp-sml/entrypoint.sh +++ b/smp-docker/images/tomcat-mysql-smp-sml/entrypoint.sh @@ -1,4 +1,4 @@ -#!/bin/sh +#!/bin/bash #set -e @@ -25,7 +25,7 @@ fi init_tomcat() { # add java code coverage angent to image - if [[ -e /opt/jacoco/jacoco-agent.jar ]]; then + if [ -e /opt/jacoco/jacoco-agent.jar ]; then JAVA_OPTS="-javaagent:/opt/jacoco/jacoco-agent.jar=output=tcpserver,address=*,port=6901 $JAVA_OPTS" fi # add allow encoded slashes and disable scheme for proxy @@ -67,6 +67,21 @@ init_tomcat() { sleep 5s } +init_smp_properties() { + echo "[INFO] init smp properties:" + + { echo "# SMP init parameters" + echo "authentication.blueCoat.enabled=true" + echo "bdmsl.integration.enabled=true" + echo "bdmsl.integration.physical.address=0.0.0.0" + echo "bdmsl.participant.multidomain.enabled=false" + echo "bdmsl.integration.url=http://localhost:8080/edelivery-sml/" + echo "bdmsl.integration.logical.address=${SMP_LOGICAL_ADDRESS}" + } >> "$SMP_HOME/apache-tomcat-$TOMCAT_VERSION/classes/smp.config.properties" + + addOrReplaceProperties "$SMP_HOME/apache-tomcat-$TOMCAT_VERSION/classes/smp.config.properties" "$SMP_INIT_PROPERTIES" "$SMP_INIT_PROPERTY_DELIMITER" +} + init_mysql() { echo "[INFO] init database:" @@ -98,19 +113,19 @@ init_mysql() { echo 'Create smp database' mysql -h localhost -u root -e "ALTER USER 'root'@'localhost' IDENTIFIED BY '$MYSQL_ROOT_PASSWORD';drop schema if exists $SMP_DB_SCHEMA;DROP USER IF EXISTS $SMP_DB_USER; create schema $SMP_DB_SCHEMA;alter database $SMP_DB_SCHEMA charset=utf8; create user $SMP_DB_USER identified by '$SMP_DB_USER_PASSWORD';grant all on $SMP_DB_SCHEMA.* to $SMP_DB_USER;" - if [ -f "/tmp/custom-database-scripts/mysql5innodb-data.sql" ] + if [ -f "/tmp/custom-data/mysql5innodb.sql" ] then echo "Use custom database script! " - mysql -h localhost -u root --password=$MYSQL_ROOT_PASSWORD $SMP_DB_SCHEMA < "tmp/custom-database-scripts/mysql5innodb.ddl" + mysql -h localhost -u root --password=$MYSQL_ROOT_PASSWORD $SMP_DB_SCHEMA < "tmp/custom-data/mysql5innodb.ddl" else echo "Use default database ddl script!" mysql -h localhost -u root --password=$MYSQL_ROOT_PASSWORD $SMP_DB_SCHEMA < "/tmp/smp-setup/database-scripts/mysql5innodb.ddl" fi - if [ -f "/tmp/custom-database-scripts/mysql5innodb-data.sql" ] + if [ -f "/tmp/custom-data/mysql5innodb-data.sql" ] then echo "Use custom init script! " - mysql -h localhost -u root --password=$MYSQL_ROOT_PASSWORD $SMP_DB_SCHEMA < "/tmp/custom-database-scripts/mysql5innodb-data.sql" + mysql -h localhost -u root --password=$MYSQL_ROOT_PASSWORD $SMP_DB_SCHEMA < "/tmp/custom-data/mysql5innodb-data.sql" else echo "Use default init script!" mysql -h localhost -u root --password=$MYSQL_ROOT_PASSWORD $SMP_DB_SCHEMA < "/tmp/smp-setup/database-scripts/mysql5innodb-data.sql" @@ -127,19 +142,19 @@ init_mysql() { echo 'Create sml database' mysql -h localhost -u root -e "ALTER USER 'root'@'localhost' IDENTIFIED BY '$MYSQL_ROOT_PASSWORD';drop schema if exists $SML_DB_SCHEMA;DROP USER IF EXISTS $SML_DB_USER; create schema $SML_DB_SCHEMA;alter database $SML_DB_SCHEMA charset=utf8; create user $SML_DB_USER identified by '$SML_DB_USER_PASSWORD';grant all on $SML_DB_SCHEMA.* to $SML_DB_USER;" - if [ -f "/tmp/custom-database-scripts/sml-mysql5innodb.sql" ] + if [ -f "/tmp/custom-data/sml-mysql5innodb.sql" ] then echo "Use custom database script! " - mysql -h localhost -u root --password=$MYSQL_ROOT_PASSWORD $SML_DB_SCHEMA < "/tmp/custom-database-scripts/sml-mysql5innodb.ddl" + mysql -h localhost -u root --password=$MYSQL_ROOT_PASSWORD $SML_DB_SCHEMA < "/tmp/custom-data/sml-mysql5innodb.ddl" else echo "Use default database ddl script!" mysql -h localhost -u root --password=$MYSQL_ROOT_PASSWORD $SML_DB_SCHEMA < "/tmp/sml-setup/database-scripts/mysql5innodb.ddl" fi - if [ -f "/tmp/custom-database-scripts/sml-mysql5innodb-data.sql" ] + if [ -f "/tmp/custom-data/sml-mysql5innodb-data.sql" ] then echo "Use custom init script! " - mysql -h localhost -u root --password=$MYSQL_ROOT_PASSWORD $SML_DB_SCHEMA < "/tmp/custom-database-scripts/sml-mysql5innodb-data.sql" + mysql -h localhost -u root --password=$MYSQL_ROOT_PASSWORD $SML_DB_SCHEMA < "/tmp/custom-data/sml-mysql5innodb-data.sql" else echo "Use default init script!" mysql -h localhost -u root --password=$MYSQL_ROOT_PASSWORD $SML_DB_SCHEMA < "/tmp/sml-setup/database-scripts/mysql5innodb-data.sql" @@ -152,6 +167,45 @@ init_mysql() { } +addOrReplaceProperties() { + + PROP_FILE=$1 + INIT_PROPERTIES=$2 + INIT_PROPERTY_DELIMITER=$3 + + # replace domibus properties + if [ -n "$INIT_PROPERTIES" ]; then + echo "Parse init properties: $INIT_PROPERTIES" + # add delimiter also to end :) + + s="$INIT_PROPERTIES$INIT_PROPERTY_DELIMITER" + + + array=() + while [[ $s ]]; do + array+=("${s%%"$INIT_PROPERTY_DELIMITER"*}") + s=${s#*"$INIT_PROPERTY_DELIMITER"} + done + + # replace parameters + IFS='=' + for property in "${array[@]}"; do + read -r key value <<<"$property" + # escape regex chars .. + keyRE="$(printf '%s' "$key" | sed 's/[.[\*^$()+?{|]/\\&/g')" + propertyRE="$(printf '%s' "$property" | sed 's/[.[\*^$()+?{|/]/\\&/g')" + + echo "replace or add property: $property" + # replace key line and commented #key line with new property + sed -i "s/^$keyRE=.*/$propertyRE/;s/^#$keyRE=.*/$propertyRE/" $PROP_FILE + # test if replaced if the line not exists add in on the end + grep -qF -- "$property" "$PROP_FILE" || echo "$property" >>"$PROP_FILE" + done + + fi +} + + init_bind() { # move configuration if it does not exist @@ -165,15 +219,24 @@ init_bind() { chmod -R 0775 ${BIND_DATA_DIR} chown -R ${BIND_USER}:${BIND_USER} ${BIND_DATA_DIR} + # init data + if [ -f "/tmp/custom-data/db.test.edelivery.local" ] + then + echo "Use custom zone file! " + rm -rf /etc/bind/db.test.edelivery.local + cp /tmp/custom-data/db.test.edelivery.local /etc/bind/ + fi + } +init_smp_properties init_bind init_mysql init_tomcat echo "Starting named..." -$(which named) -u ${BIND_USER} &> $BIND_DATA_DIR/bind-console.out & disown +$(which named) -u ${BIND_USER} &> $BIND_DATA_DIR/bind-console.out & -- GitLab