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