From de98c6bbd836e27020bf53d2b99e6e210ac4f817 Mon Sep 17 00:00:00 2001 From: root Date: Fri, 23 Feb 2018 13:43:00 -0800 Subject: [PATCH] Escpaing special characters --- agent/alpine/docker-entrypoint.sh | 31 ++++++++++++++++---- agent/centos/docker-entrypoint.sh | 31 ++++++++++++++++---- agent/ubuntu/docker-entrypoint.sh | 31 ++++++++++++++++---- java-gateway/alpine/docker-entrypoint.sh | 31 ++++++++++++++++---- java-gateway/centos/docker-entrypoint.sh | 31 ++++++++++++++++---- java-gateway/ubuntu/docker-entrypoint.sh | 31 ++++++++++++++++---- proxy-mysql/alpine/docker-entrypoint.sh | 31 ++++++++++++++++---- proxy-mysql/centos/docker-entrypoint.sh | 31 ++++++++++++++++---- proxy-mysql/ubuntu/docker-entrypoint.sh | 31 ++++++++++++++++---- proxy-sqlite3/alpine/docker-entrypoint.sh | 31 ++++++++++++++++---- proxy-sqlite3/centos/docker-entrypoint.sh | 31 ++++++++++++++++---- proxy-sqlite3/ubuntu/docker-entrypoint.sh | 31 ++++++++++++++++---- server-mysql/alpine/docker-entrypoint.sh | 31 ++++++++++++++++---- server-mysql/centos/docker-entrypoint.sh | 31 ++++++++++++++++---- server-mysql/ubuntu/docker-entrypoint.sh | 31 ++++++++++++++++---- server-pgsql/alpine/docker-entrypoint.sh | 31 ++++++++++++++++---- server-pgsql/centos/docker-entrypoint.sh | 31 ++++++++++++++++---- server-pgsql/ubuntu/docker-entrypoint.sh | 31 ++++++++++++++++---- web-apache-mysql/alpine/docker-entrypoint.sh | 31 ++++++++++++++++---- web-apache-mysql/centos/docker-entrypoint.sh | 31 ++++++++++++++++---- web-apache-mysql/ubuntu/docker-entrypoint.sh | 31 ++++++++++++++++---- web-apache-pgsql/alpine/docker-entrypoint.sh | 31 ++++++++++++++++---- web-apache-pgsql/centos/docker-entrypoint.sh | 31 ++++++++++++++++---- web-apache-pgsql/ubuntu/docker-entrypoint.sh | 31 ++++++++++++++++---- web-nginx-mysql/alpine/docker-entrypoint.sh | 31 ++++++++++++++++---- web-nginx-mysql/centos/docker-entrypoint.sh | 31 ++++++++++++++++---- web-nginx-mysql/ubuntu/docker-entrypoint.sh | 31 ++++++++++++++++---- web-nginx-pgsql/alpine/docker-entrypoint.sh | 31 ++++++++++++++++---- web-nginx-pgsql/centos/docker-entrypoint.sh | 31 ++++++++++++++++---- web-nginx-pgsql/ubuntu/docker-entrypoint.sh | 31 ++++++++++++++++---- 30 files changed, 750 insertions(+), 180 deletions(-) diff --git a/agent/alpine/docker-entrypoint.sh b/agent/alpine/docker-entrypoint.sh index 6e11befc2..ee8579425 100755 --- a/agent/alpine/docker-entrypoint.sh +++ b/agent/alpine/docker-entrypoint.sh @@ -49,6 +49,23 @@ prepare_system() { fi } +escape_spec_char() { + local var_value=$1 + + var_value="${var_value//\\/\\\\}" + var_value="${var_value//[$'\n']/}" + var_value="${var_value//\//\\/}" + var_value="${var_value//./\\.}" + var_value="${var_value//\*/\\*}" + var_value="${var_value//^/\\^}" + var_value="${var_value//\$/\\\$}" + var_value="${var_value//\&/\\\&}" + var_value="${var_value//\[/\\[}" + var_value="${var_value//\[/\\]}" + + echo $var_value +} + update_config_var() { local config_path=$1 local var_name=$2 @@ -81,8 +98,8 @@ update_config_var() { var_value=$ZABBIX_USER_HOME_DIR/enc/$var_value fi - # Escaping "/" character in parameter value - var_value=${var_value//\//\\/} + # Escaping characters in parameter value + var_value=$(escape_spec_char "$var_value") if [ "$(grep -E "^$var_name=" $config_path)" ] && [ "$is_multiple" != "true" ]; then sed -i -e "/^$var_name=/s/=.*/=$var_value/" "$config_path" @@ -703,15 +720,17 @@ prepare_zbx_web_config() { echo "**** Zabbix related PHP configuration file not found" fi - # Escaping "/" character in parameter value - server_name=${ZBX_SERVER_NAME//\//\\/} + # Escaping characters in parameter value + server_name=$(escape_spec_char "${ZBX_SERVER_NAME}") + server_user=$(escape_spec_char "${DB_SERVER_ZBX_USER}") + server_pass=$(escape_spec_char "${DB_SERVER_ZBX_PASS}") sed -i \ -e "s/{DB_SERVER_HOST}/${DB_SERVER_HOST}/g" \ -e "s/{DB_SERVER_PORT}/${DB_SERVER_PORT}/g" \ -e "s/{DB_SERVER_DBNAME}/${DB_SERVER_DBNAME}/g" \ - -e "s/{DB_SERVER_USER}/${DB_SERVER_ZBX_USER}/g" \ - -e "s/{DB_SERVER_PASS}/${DB_SERVER_ZBX_PASS}/g" \ + -e "s/{DB_SERVER_USER}/$server_user/g" \ + -e "s/{DB_SERVER_PASS}/$server_pass/g" \ -e "s/{ZBX_SERVER_HOST}/${ZBX_SERVER_HOST}/g" \ -e "s/{ZBX_SERVER_PORT}/${ZBX_SERVER_PORT}/g" \ -e "s/{ZBX_SERVER_NAME}/$server_name/g" \ diff --git a/agent/centos/docker-entrypoint.sh b/agent/centos/docker-entrypoint.sh index 6e11befc2..ee8579425 100755 --- a/agent/centos/docker-entrypoint.sh +++ b/agent/centos/docker-entrypoint.sh @@ -49,6 +49,23 @@ prepare_system() { fi } +escape_spec_char() { + local var_value=$1 + + var_value="${var_value//\\/\\\\}" + var_value="${var_value//[$'\n']/}" + var_value="${var_value//\//\\/}" + var_value="${var_value//./\\.}" + var_value="${var_value//\*/\\*}" + var_value="${var_value//^/\\^}" + var_value="${var_value//\$/\\\$}" + var_value="${var_value//\&/\\\&}" + var_value="${var_value//\[/\\[}" + var_value="${var_value//\[/\\]}" + + echo $var_value +} + update_config_var() { local config_path=$1 local var_name=$2 @@ -81,8 +98,8 @@ update_config_var() { var_value=$ZABBIX_USER_HOME_DIR/enc/$var_value fi - # Escaping "/" character in parameter value - var_value=${var_value//\//\\/} + # Escaping characters in parameter value + var_value=$(escape_spec_char "$var_value") if [ "$(grep -E "^$var_name=" $config_path)" ] && [ "$is_multiple" != "true" ]; then sed -i -e "/^$var_name=/s/=.*/=$var_value/" "$config_path" @@ -703,15 +720,17 @@ prepare_zbx_web_config() { echo "**** Zabbix related PHP configuration file not found" fi - # Escaping "/" character in parameter value - server_name=${ZBX_SERVER_NAME//\//\\/} + # Escaping characters in parameter value + server_name=$(escape_spec_char "${ZBX_SERVER_NAME}") + server_user=$(escape_spec_char "${DB_SERVER_ZBX_USER}") + server_pass=$(escape_spec_char "${DB_SERVER_ZBX_PASS}") sed -i \ -e "s/{DB_SERVER_HOST}/${DB_SERVER_HOST}/g" \ -e "s/{DB_SERVER_PORT}/${DB_SERVER_PORT}/g" \ -e "s/{DB_SERVER_DBNAME}/${DB_SERVER_DBNAME}/g" \ - -e "s/{DB_SERVER_USER}/${DB_SERVER_ZBX_USER}/g" \ - -e "s/{DB_SERVER_PASS}/${DB_SERVER_ZBX_PASS}/g" \ + -e "s/{DB_SERVER_USER}/$server_user/g" \ + -e "s/{DB_SERVER_PASS}/$server_pass/g" \ -e "s/{ZBX_SERVER_HOST}/${ZBX_SERVER_HOST}/g" \ -e "s/{ZBX_SERVER_PORT}/${ZBX_SERVER_PORT}/g" \ -e "s/{ZBX_SERVER_NAME}/$server_name/g" \ diff --git a/agent/ubuntu/docker-entrypoint.sh b/agent/ubuntu/docker-entrypoint.sh index 6e11befc2..ee8579425 100755 --- a/agent/ubuntu/docker-entrypoint.sh +++ b/agent/ubuntu/docker-entrypoint.sh @@ -49,6 +49,23 @@ prepare_system() { fi } +escape_spec_char() { + local var_value=$1 + + var_value="${var_value//\\/\\\\}" + var_value="${var_value//[$'\n']/}" + var_value="${var_value//\//\\/}" + var_value="${var_value//./\\.}" + var_value="${var_value//\*/\\*}" + var_value="${var_value//^/\\^}" + var_value="${var_value//\$/\\\$}" + var_value="${var_value//\&/\\\&}" + var_value="${var_value//\[/\\[}" + var_value="${var_value//\[/\\]}" + + echo $var_value +} + update_config_var() { local config_path=$1 local var_name=$2 @@ -81,8 +98,8 @@ update_config_var() { var_value=$ZABBIX_USER_HOME_DIR/enc/$var_value fi - # Escaping "/" character in parameter value - var_value=${var_value//\//\\/} + # Escaping characters in parameter value + var_value=$(escape_spec_char "$var_value") if [ "$(grep -E "^$var_name=" $config_path)" ] && [ "$is_multiple" != "true" ]; then sed -i -e "/^$var_name=/s/=.*/=$var_value/" "$config_path" @@ -703,15 +720,17 @@ prepare_zbx_web_config() { echo "**** Zabbix related PHP configuration file not found" fi - # Escaping "/" character in parameter value - server_name=${ZBX_SERVER_NAME//\//\\/} + # Escaping characters in parameter value + server_name=$(escape_spec_char "${ZBX_SERVER_NAME}") + server_user=$(escape_spec_char "${DB_SERVER_ZBX_USER}") + server_pass=$(escape_spec_char "${DB_SERVER_ZBX_PASS}") sed -i \ -e "s/{DB_SERVER_HOST}/${DB_SERVER_HOST}/g" \ -e "s/{DB_SERVER_PORT}/${DB_SERVER_PORT}/g" \ -e "s/{DB_SERVER_DBNAME}/${DB_SERVER_DBNAME}/g" \ - -e "s/{DB_SERVER_USER}/${DB_SERVER_ZBX_USER}/g" \ - -e "s/{DB_SERVER_PASS}/${DB_SERVER_ZBX_PASS}/g" \ + -e "s/{DB_SERVER_USER}/$server_user/g" \ + -e "s/{DB_SERVER_PASS}/$server_pass/g" \ -e "s/{ZBX_SERVER_HOST}/${ZBX_SERVER_HOST}/g" \ -e "s/{ZBX_SERVER_PORT}/${ZBX_SERVER_PORT}/g" \ -e "s/{ZBX_SERVER_NAME}/$server_name/g" \ diff --git a/java-gateway/alpine/docker-entrypoint.sh b/java-gateway/alpine/docker-entrypoint.sh index 6e11befc2..ee8579425 100755 --- a/java-gateway/alpine/docker-entrypoint.sh +++ b/java-gateway/alpine/docker-entrypoint.sh @@ -49,6 +49,23 @@ prepare_system() { fi } +escape_spec_char() { + local var_value=$1 + + var_value="${var_value//\\/\\\\}" + var_value="${var_value//[$'\n']/}" + var_value="${var_value//\//\\/}" + var_value="${var_value//./\\.}" + var_value="${var_value//\*/\\*}" + var_value="${var_value//^/\\^}" + var_value="${var_value//\$/\\\$}" + var_value="${var_value//\&/\\\&}" + var_value="${var_value//\[/\\[}" + var_value="${var_value//\[/\\]}" + + echo $var_value +} + update_config_var() { local config_path=$1 local var_name=$2 @@ -81,8 +98,8 @@ update_config_var() { var_value=$ZABBIX_USER_HOME_DIR/enc/$var_value fi - # Escaping "/" character in parameter value - var_value=${var_value//\//\\/} + # Escaping characters in parameter value + var_value=$(escape_spec_char "$var_value") if [ "$(grep -E "^$var_name=" $config_path)" ] && [ "$is_multiple" != "true" ]; then sed -i -e "/^$var_name=/s/=.*/=$var_value/" "$config_path" @@ -703,15 +720,17 @@ prepare_zbx_web_config() { echo "**** Zabbix related PHP configuration file not found" fi - # Escaping "/" character in parameter value - server_name=${ZBX_SERVER_NAME//\//\\/} + # Escaping characters in parameter value + server_name=$(escape_spec_char "${ZBX_SERVER_NAME}") + server_user=$(escape_spec_char "${DB_SERVER_ZBX_USER}") + server_pass=$(escape_spec_char "${DB_SERVER_ZBX_PASS}") sed -i \ -e "s/{DB_SERVER_HOST}/${DB_SERVER_HOST}/g" \ -e "s/{DB_SERVER_PORT}/${DB_SERVER_PORT}/g" \ -e "s/{DB_SERVER_DBNAME}/${DB_SERVER_DBNAME}/g" \ - -e "s/{DB_SERVER_USER}/${DB_SERVER_ZBX_USER}/g" \ - -e "s/{DB_SERVER_PASS}/${DB_SERVER_ZBX_PASS}/g" \ + -e "s/{DB_SERVER_USER}/$server_user/g" \ + -e "s/{DB_SERVER_PASS}/$server_pass/g" \ -e "s/{ZBX_SERVER_HOST}/${ZBX_SERVER_HOST}/g" \ -e "s/{ZBX_SERVER_PORT}/${ZBX_SERVER_PORT}/g" \ -e "s/{ZBX_SERVER_NAME}/$server_name/g" \ diff --git a/java-gateway/centos/docker-entrypoint.sh b/java-gateway/centos/docker-entrypoint.sh index 6e11befc2..ee8579425 100755 --- a/java-gateway/centos/docker-entrypoint.sh +++ b/java-gateway/centos/docker-entrypoint.sh @@ -49,6 +49,23 @@ prepare_system() { fi } +escape_spec_char() { + local var_value=$1 + + var_value="${var_value//\\/\\\\}" + var_value="${var_value//[$'\n']/}" + var_value="${var_value//\//\\/}" + var_value="${var_value//./\\.}" + var_value="${var_value//\*/\\*}" + var_value="${var_value//^/\\^}" + var_value="${var_value//\$/\\\$}" + var_value="${var_value//\&/\\\&}" + var_value="${var_value//\[/\\[}" + var_value="${var_value//\[/\\]}" + + echo $var_value +} + update_config_var() { local config_path=$1 local var_name=$2 @@ -81,8 +98,8 @@ update_config_var() { var_value=$ZABBIX_USER_HOME_DIR/enc/$var_value fi - # Escaping "/" character in parameter value - var_value=${var_value//\//\\/} + # Escaping characters in parameter value + var_value=$(escape_spec_char "$var_value") if [ "$(grep -E "^$var_name=" $config_path)" ] && [ "$is_multiple" != "true" ]; then sed -i -e "/^$var_name=/s/=.*/=$var_value/" "$config_path" @@ -703,15 +720,17 @@ prepare_zbx_web_config() { echo "**** Zabbix related PHP configuration file not found" fi - # Escaping "/" character in parameter value - server_name=${ZBX_SERVER_NAME//\//\\/} + # Escaping characters in parameter value + server_name=$(escape_spec_char "${ZBX_SERVER_NAME}") + server_user=$(escape_spec_char "${DB_SERVER_ZBX_USER}") + server_pass=$(escape_spec_char "${DB_SERVER_ZBX_PASS}") sed -i \ -e "s/{DB_SERVER_HOST}/${DB_SERVER_HOST}/g" \ -e "s/{DB_SERVER_PORT}/${DB_SERVER_PORT}/g" \ -e "s/{DB_SERVER_DBNAME}/${DB_SERVER_DBNAME}/g" \ - -e "s/{DB_SERVER_USER}/${DB_SERVER_ZBX_USER}/g" \ - -e "s/{DB_SERVER_PASS}/${DB_SERVER_ZBX_PASS}/g" \ + -e "s/{DB_SERVER_USER}/$server_user/g" \ + -e "s/{DB_SERVER_PASS}/$server_pass/g" \ -e "s/{ZBX_SERVER_HOST}/${ZBX_SERVER_HOST}/g" \ -e "s/{ZBX_SERVER_PORT}/${ZBX_SERVER_PORT}/g" \ -e "s/{ZBX_SERVER_NAME}/$server_name/g" \ diff --git a/java-gateway/ubuntu/docker-entrypoint.sh b/java-gateway/ubuntu/docker-entrypoint.sh index 6e11befc2..ee8579425 100755 --- a/java-gateway/ubuntu/docker-entrypoint.sh +++ b/java-gateway/ubuntu/docker-entrypoint.sh @@ -49,6 +49,23 @@ prepare_system() { fi } +escape_spec_char() { + local var_value=$1 + + var_value="${var_value//\\/\\\\}" + var_value="${var_value//[$'\n']/}" + var_value="${var_value//\//\\/}" + var_value="${var_value//./\\.}" + var_value="${var_value//\*/\\*}" + var_value="${var_value//^/\\^}" + var_value="${var_value//\$/\\\$}" + var_value="${var_value//\&/\\\&}" + var_value="${var_value//\[/\\[}" + var_value="${var_value//\[/\\]}" + + echo $var_value +} + update_config_var() { local config_path=$1 local var_name=$2 @@ -81,8 +98,8 @@ update_config_var() { var_value=$ZABBIX_USER_HOME_DIR/enc/$var_value fi - # Escaping "/" character in parameter value - var_value=${var_value//\//\\/} + # Escaping characters in parameter value + var_value=$(escape_spec_char "$var_value") if [ "$(grep -E "^$var_name=" $config_path)" ] && [ "$is_multiple" != "true" ]; then sed -i -e "/^$var_name=/s/=.*/=$var_value/" "$config_path" @@ -703,15 +720,17 @@ prepare_zbx_web_config() { echo "**** Zabbix related PHP configuration file not found" fi - # Escaping "/" character in parameter value - server_name=${ZBX_SERVER_NAME//\//\\/} + # Escaping characters in parameter value + server_name=$(escape_spec_char "${ZBX_SERVER_NAME}") + server_user=$(escape_spec_char "${DB_SERVER_ZBX_USER}") + server_pass=$(escape_spec_char "${DB_SERVER_ZBX_PASS}") sed -i \ -e "s/{DB_SERVER_HOST}/${DB_SERVER_HOST}/g" \ -e "s/{DB_SERVER_PORT}/${DB_SERVER_PORT}/g" \ -e "s/{DB_SERVER_DBNAME}/${DB_SERVER_DBNAME}/g" \ - -e "s/{DB_SERVER_USER}/${DB_SERVER_ZBX_USER}/g" \ - -e "s/{DB_SERVER_PASS}/${DB_SERVER_ZBX_PASS}/g" \ + -e "s/{DB_SERVER_USER}/$server_user/g" \ + -e "s/{DB_SERVER_PASS}/$server_pass/g" \ -e "s/{ZBX_SERVER_HOST}/${ZBX_SERVER_HOST}/g" \ -e "s/{ZBX_SERVER_PORT}/${ZBX_SERVER_PORT}/g" \ -e "s/{ZBX_SERVER_NAME}/$server_name/g" \ diff --git a/proxy-mysql/alpine/docker-entrypoint.sh b/proxy-mysql/alpine/docker-entrypoint.sh index 6e11befc2..ee8579425 100755 --- a/proxy-mysql/alpine/docker-entrypoint.sh +++ b/proxy-mysql/alpine/docker-entrypoint.sh @@ -49,6 +49,23 @@ prepare_system() { fi } +escape_spec_char() { + local var_value=$1 + + var_value="${var_value//\\/\\\\}" + var_value="${var_value//[$'\n']/}" + var_value="${var_value//\//\\/}" + var_value="${var_value//./\\.}" + var_value="${var_value//\*/\\*}" + var_value="${var_value//^/\\^}" + var_value="${var_value//\$/\\\$}" + var_value="${var_value//\&/\\\&}" + var_value="${var_value//\[/\\[}" + var_value="${var_value//\[/\\]}" + + echo $var_value +} + update_config_var() { local config_path=$1 local var_name=$2 @@ -81,8 +98,8 @@ update_config_var() { var_value=$ZABBIX_USER_HOME_DIR/enc/$var_value fi - # Escaping "/" character in parameter value - var_value=${var_value//\//\\/} + # Escaping characters in parameter value + var_value=$(escape_spec_char "$var_value") if [ "$(grep -E "^$var_name=" $config_path)" ] && [ "$is_multiple" != "true" ]; then sed -i -e "/^$var_name=/s/=.*/=$var_value/" "$config_path" @@ -703,15 +720,17 @@ prepare_zbx_web_config() { echo "**** Zabbix related PHP configuration file not found" fi - # Escaping "/" character in parameter value - server_name=${ZBX_SERVER_NAME//\//\\/} + # Escaping characters in parameter value + server_name=$(escape_spec_char "${ZBX_SERVER_NAME}") + server_user=$(escape_spec_char "${DB_SERVER_ZBX_USER}") + server_pass=$(escape_spec_char "${DB_SERVER_ZBX_PASS}") sed -i \ -e "s/{DB_SERVER_HOST}/${DB_SERVER_HOST}/g" \ -e "s/{DB_SERVER_PORT}/${DB_SERVER_PORT}/g" \ -e "s/{DB_SERVER_DBNAME}/${DB_SERVER_DBNAME}/g" \ - -e "s/{DB_SERVER_USER}/${DB_SERVER_ZBX_USER}/g" \ - -e "s/{DB_SERVER_PASS}/${DB_SERVER_ZBX_PASS}/g" \ + -e "s/{DB_SERVER_USER}/$server_user/g" \ + -e "s/{DB_SERVER_PASS}/$server_pass/g" \ -e "s/{ZBX_SERVER_HOST}/${ZBX_SERVER_HOST}/g" \ -e "s/{ZBX_SERVER_PORT}/${ZBX_SERVER_PORT}/g" \ -e "s/{ZBX_SERVER_NAME}/$server_name/g" \ diff --git a/proxy-mysql/centos/docker-entrypoint.sh b/proxy-mysql/centos/docker-entrypoint.sh index 6e11befc2..ee8579425 100755 --- a/proxy-mysql/centos/docker-entrypoint.sh +++ b/proxy-mysql/centos/docker-entrypoint.sh @@ -49,6 +49,23 @@ prepare_system() { fi } +escape_spec_char() { + local var_value=$1 + + var_value="${var_value//\\/\\\\}" + var_value="${var_value//[$'\n']/}" + var_value="${var_value//\//\\/}" + var_value="${var_value//./\\.}" + var_value="${var_value//\*/\\*}" + var_value="${var_value//^/\\^}" + var_value="${var_value//\$/\\\$}" + var_value="${var_value//\&/\\\&}" + var_value="${var_value//\[/\\[}" + var_value="${var_value//\[/\\]}" + + echo $var_value +} + update_config_var() { local config_path=$1 local var_name=$2 @@ -81,8 +98,8 @@ update_config_var() { var_value=$ZABBIX_USER_HOME_DIR/enc/$var_value fi - # Escaping "/" character in parameter value - var_value=${var_value//\//\\/} + # Escaping characters in parameter value + var_value=$(escape_spec_char "$var_value") if [ "$(grep -E "^$var_name=" $config_path)" ] && [ "$is_multiple" != "true" ]; then sed -i -e "/^$var_name=/s/=.*/=$var_value/" "$config_path" @@ -703,15 +720,17 @@ prepare_zbx_web_config() { echo "**** Zabbix related PHP configuration file not found" fi - # Escaping "/" character in parameter value - server_name=${ZBX_SERVER_NAME//\//\\/} + # Escaping characters in parameter value + server_name=$(escape_spec_char "${ZBX_SERVER_NAME}") + server_user=$(escape_spec_char "${DB_SERVER_ZBX_USER}") + server_pass=$(escape_spec_char "${DB_SERVER_ZBX_PASS}") sed -i \ -e "s/{DB_SERVER_HOST}/${DB_SERVER_HOST}/g" \ -e "s/{DB_SERVER_PORT}/${DB_SERVER_PORT}/g" \ -e "s/{DB_SERVER_DBNAME}/${DB_SERVER_DBNAME}/g" \ - -e "s/{DB_SERVER_USER}/${DB_SERVER_ZBX_USER}/g" \ - -e "s/{DB_SERVER_PASS}/${DB_SERVER_ZBX_PASS}/g" \ + -e "s/{DB_SERVER_USER}/$server_user/g" \ + -e "s/{DB_SERVER_PASS}/$server_pass/g" \ -e "s/{ZBX_SERVER_HOST}/${ZBX_SERVER_HOST}/g" \ -e "s/{ZBX_SERVER_PORT}/${ZBX_SERVER_PORT}/g" \ -e "s/{ZBX_SERVER_NAME}/$server_name/g" \ diff --git a/proxy-mysql/ubuntu/docker-entrypoint.sh b/proxy-mysql/ubuntu/docker-entrypoint.sh index 6e11befc2..ee8579425 100755 --- a/proxy-mysql/ubuntu/docker-entrypoint.sh +++ b/proxy-mysql/ubuntu/docker-entrypoint.sh @@ -49,6 +49,23 @@ prepare_system() { fi } +escape_spec_char() { + local var_value=$1 + + var_value="${var_value//\\/\\\\}" + var_value="${var_value//[$'\n']/}" + var_value="${var_value//\//\\/}" + var_value="${var_value//./\\.}" + var_value="${var_value//\*/\\*}" + var_value="${var_value//^/\\^}" + var_value="${var_value//\$/\\\$}" + var_value="${var_value//\&/\\\&}" + var_value="${var_value//\[/\\[}" + var_value="${var_value//\[/\\]}" + + echo $var_value +} + update_config_var() { local config_path=$1 local var_name=$2 @@ -81,8 +98,8 @@ update_config_var() { var_value=$ZABBIX_USER_HOME_DIR/enc/$var_value fi - # Escaping "/" character in parameter value - var_value=${var_value//\//\\/} + # Escaping characters in parameter value + var_value=$(escape_spec_char "$var_value") if [ "$(grep -E "^$var_name=" $config_path)" ] && [ "$is_multiple" != "true" ]; then sed -i -e "/^$var_name=/s/=.*/=$var_value/" "$config_path" @@ -703,15 +720,17 @@ prepare_zbx_web_config() { echo "**** Zabbix related PHP configuration file not found" fi - # Escaping "/" character in parameter value - server_name=${ZBX_SERVER_NAME//\//\\/} + # Escaping characters in parameter value + server_name=$(escape_spec_char "${ZBX_SERVER_NAME}") + server_user=$(escape_spec_char "${DB_SERVER_ZBX_USER}") + server_pass=$(escape_spec_char "${DB_SERVER_ZBX_PASS}") sed -i \ -e "s/{DB_SERVER_HOST}/${DB_SERVER_HOST}/g" \ -e "s/{DB_SERVER_PORT}/${DB_SERVER_PORT}/g" \ -e "s/{DB_SERVER_DBNAME}/${DB_SERVER_DBNAME}/g" \ - -e "s/{DB_SERVER_USER}/${DB_SERVER_ZBX_USER}/g" \ - -e "s/{DB_SERVER_PASS}/${DB_SERVER_ZBX_PASS}/g" \ + -e "s/{DB_SERVER_USER}/$server_user/g" \ + -e "s/{DB_SERVER_PASS}/$server_pass/g" \ -e "s/{ZBX_SERVER_HOST}/${ZBX_SERVER_HOST}/g" \ -e "s/{ZBX_SERVER_PORT}/${ZBX_SERVER_PORT}/g" \ -e "s/{ZBX_SERVER_NAME}/$server_name/g" \ diff --git a/proxy-sqlite3/alpine/docker-entrypoint.sh b/proxy-sqlite3/alpine/docker-entrypoint.sh index 6e11befc2..ee8579425 100755 --- a/proxy-sqlite3/alpine/docker-entrypoint.sh +++ b/proxy-sqlite3/alpine/docker-entrypoint.sh @@ -49,6 +49,23 @@ prepare_system() { fi } +escape_spec_char() { + local var_value=$1 + + var_value="${var_value//\\/\\\\}" + var_value="${var_value//[$'\n']/}" + var_value="${var_value//\//\\/}" + var_value="${var_value//./\\.}" + var_value="${var_value//\*/\\*}" + var_value="${var_value//^/\\^}" + var_value="${var_value//\$/\\\$}" + var_value="${var_value//\&/\\\&}" + var_value="${var_value//\[/\\[}" + var_value="${var_value//\[/\\]}" + + echo $var_value +} + update_config_var() { local config_path=$1 local var_name=$2 @@ -81,8 +98,8 @@ update_config_var() { var_value=$ZABBIX_USER_HOME_DIR/enc/$var_value fi - # Escaping "/" character in parameter value - var_value=${var_value//\//\\/} + # Escaping characters in parameter value + var_value=$(escape_spec_char "$var_value") if [ "$(grep -E "^$var_name=" $config_path)" ] && [ "$is_multiple" != "true" ]; then sed -i -e "/^$var_name=/s/=.*/=$var_value/" "$config_path" @@ -703,15 +720,17 @@ prepare_zbx_web_config() { echo "**** Zabbix related PHP configuration file not found" fi - # Escaping "/" character in parameter value - server_name=${ZBX_SERVER_NAME//\//\\/} + # Escaping characters in parameter value + server_name=$(escape_spec_char "${ZBX_SERVER_NAME}") + server_user=$(escape_spec_char "${DB_SERVER_ZBX_USER}") + server_pass=$(escape_spec_char "${DB_SERVER_ZBX_PASS}") sed -i \ -e "s/{DB_SERVER_HOST}/${DB_SERVER_HOST}/g" \ -e "s/{DB_SERVER_PORT}/${DB_SERVER_PORT}/g" \ -e "s/{DB_SERVER_DBNAME}/${DB_SERVER_DBNAME}/g" \ - -e "s/{DB_SERVER_USER}/${DB_SERVER_ZBX_USER}/g" \ - -e "s/{DB_SERVER_PASS}/${DB_SERVER_ZBX_PASS}/g" \ + -e "s/{DB_SERVER_USER}/$server_user/g" \ + -e "s/{DB_SERVER_PASS}/$server_pass/g" \ -e "s/{ZBX_SERVER_HOST}/${ZBX_SERVER_HOST}/g" \ -e "s/{ZBX_SERVER_PORT}/${ZBX_SERVER_PORT}/g" \ -e "s/{ZBX_SERVER_NAME}/$server_name/g" \ diff --git a/proxy-sqlite3/centos/docker-entrypoint.sh b/proxy-sqlite3/centos/docker-entrypoint.sh index 6e11befc2..ee8579425 100755 --- a/proxy-sqlite3/centos/docker-entrypoint.sh +++ b/proxy-sqlite3/centos/docker-entrypoint.sh @@ -49,6 +49,23 @@ prepare_system() { fi } +escape_spec_char() { + local var_value=$1 + + var_value="${var_value//\\/\\\\}" + var_value="${var_value//[$'\n']/}" + var_value="${var_value//\//\\/}" + var_value="${var_value//./\\.}" + var_value="${var_value//\*/\\*}" + var_value="${var_value//^/\\^}" + var_value="${var_value//\$/\\\$}" + var_value="${var_value//\&/\\\&}" + var_value="${var_value//\[/\\[}" + var_value="${var_value//\[/\\]}" + + echo $var_value +} + update_config_var() { local config_path=$1 local var_name=$2 @@ -81,8 +98,8 @@ update_config_var() { var_value=$ZABBIX_USER_HOME_DIR/enc/$var_value fi - # Escaping "/" character in parameter value - var_value=${var_value//\//\\/} + # Escaping characters in parameter value + var_value=$(escape_spec_char "$var_value") if [ "$(grep -E "^$var_name=" $config_path)" ] && [ "$is_multiple" != "true" ]; then sed -i -e "/^$var_name=/s/=.*/=$var_value/" "$config_path" @@ -703,15 +720,17 @@ prepare_zbx_web_config() { echo "**** Zabbix related PHP configuration file not found" fi - # Escaping "/" character in parameter value - server_name=${ZBX_SERVER_NAME//\//\\/} + # Escaping characters in parameter value + server_name=$(escape_spec_char "${ZBX_SERVER_NAME}") + server_user=$(escape_spec_char "${DB_SERVER_ZBX_USER}") + server_pass=$(escape_spec_char "${DB_SERVER_ZBX_PASS}") sed -i \ -e "s/{DB_SERVER_HOST}/${DB_SERVER_HOST}/g" \ -e "s/{DB_SERVER_PORT}/${DB_SERVER_PORT}/g" \ -e "s/{DB_SERVER_DBNAME}/${DB_SERVER_DBNAME}/g" \ - -e "s/{DB_SERVER_USER}/${DB_SERVER_ZBX_USER}/g" \ - -e "s/{DB_SERVER_PASS}/${DB_SERVER_ZBX_PASS}/g" \ + -e "s/{DB_SERVER_USER}/$server_user/g" \ + -e "s/{DB_SERVER_PASS}/$server_pass/g" \ -e "s/{ZBX_SERVER_HOST}/${ZBX_SERVER_HOST}/g" \ -e "s/{ZBX_SERVER_PORT}/${ZBX_SERVER_PORT}/g" \ -e "s/{ZBX_SERVER_NAME}/$server_name/g" \ diff --git a/proxy-sqlite3/ubuntu/docker-entrypoint.sh b/proxy-sqlite3/ubuntu/docker-entrypoint.sh index 6e11befc2..ee8579425 100755 --- a/proxy-sqlite3/ubuntu/docker-entrypoint.sh +++ b/proxy-sqlite3/ubuntu/docker-entrypoint.sh @@ -49,6 +49,23 @@ prepare_system() { fi } +escape_spec_char() { + local var_value=$1 + + var_value="${var_value//\\/\\\\}" + var_value="${var_value//[$'\n']/}" + var_value="${var_value//\//\\/}" + var_value="${var_value//./\\.}" + var_value="${var_value//\*/\\*}" + var_value="${var_value//^/\\^}" + var_value="${var_value//\$/\\\$}" + var_value="${var_value//\&/\\\&}" + var_value="${var_value//\[/\\[}" + var_value="${var_value//\[/\\]}" + + echo $var_value +} + update_config_var() { local config_path=$1 local var_name=$2 @@ -81,8 +98,8 @@ update_config_var() { var_value=$ZABBIX_USER_HOME_DIR/enc/$var_value fi - # Escaping "/" character in parameter value - var_value=${var_value//\//\\/} + # Escaping characters in parameter value + var_value=$(escape_spec_char "$var_value") if [ "$(grep -E "^$var_name=" $config_path)" ] && [ "$is_multiple" != "true" ]; then sed -i -e "/^$var_name=/s/=.*/=$var_value/" "$config_path" @@ -703,15 +720,17 @@ prepare_zbx_web_config() { echo "**** Zabbix related PHP configuration file not found" fi - # Escaping "/" character in parameter value - server_name=${ZBX_SERVER_NAME//\//\\/} + # Escaping characters in parameter value + server_name=$(escape_spec_char "${ZBX_SERVER_NAME}") + server_user=$(escape_spec_char "${DB_SERVER_ZBX_USER}") + server_pass=$(escape_spec_char "${DB_SERVER_ZBX_PASS}") sed -i \ -e "s/{DB_SERVER_HOST}/${DB_SERVER_HOST}/g" \ -e "s/{DB_SERVER_PORT}/${DB_SERVER_PORT}/g" \ -e "s/{DB_SERVER_DBNAME}/${DB_SERVER_DBNAME}/g" \ - -e "s/{DB_SERVER_USER}/${DB_SERVER_ZBX_USER}/g" \ - -e "s/{DB_SERVER_PASS}/${DB_SERVER_ZBX_PASS}/g" \ + -e "s/{DB_SERVER_USER}/$server_user/g" \ + -e "s/{DB_SERVER_PASS}/$server_pass/g" \ -e "s/{ZBX_SERVER_HOST}/${ZBX_SERVER_HOST}/g" \ -e "s/{ZBX_SERVER_PORT}/${ZBX_SERVER_PORT}/g" \ -e "s/{ZBX_SERVER_NAME}/$server_name/g" \ diff --git a/server-mysql/alpine/docker-entrypoint.sh b/server-mysql/alpine/docker-entrypoint.sh index 6e11befc2..ee8579425 100755 --- a/server-mysql/alpine/docker-entrypoint.sh +++ b/server-mysql/alpine/docker-entrypoint.sh @@ -49,6 +49,23 @@ prepare_system() { fi } +escape_spec_char() { + local var_value=$1 + + var_value="${var_value//\\/\\\\}" + var_value="${var_value//[$'\n']/}" + var_value="${var_value//\//\\/}" + var_value="${var_value//./\\.}" + var_value="${var_value//\*/\\*}" + var_value="${var_value//^/\\^}" + var_value="${var_value//\$/\\\$}" + var_value="${var_value//\&/\\\&}" + var_value="${var_value//\[/\\[}" + var_value="${var_value//\[/\\]}" + + echo $var_value +} + update_config_var() { local config_path=$1 local var_name=$2 @@ -81,8 +98,8 @@ update_config_var() { var_value=$ZABBIX_USER_HOME_DIR/enc/$var_value fi - # Escaping "/" character in parameter value - var_value=${var_value//\//\\/} + # Escaping characters in parameter value + var_value=$(escape_spec_char "$var_value") if [ "$(grep -E "^$var_name=" $config_path)" ] && [ "$is_multiple" != "true" ]; then sed -i -e "/^$var_name=/s/=.*/=$var_value/" "$config_path" @@ -703,15 +720,17 @@ prepare_zbx_web_config() { echo "**** Zabbix related PHP configuration file not found" fi - # Escaping "/" character in parameter value - server_name=${ZBX_SERVER_NAME//\//\\/} + # Escaping characters in parameter value + server_name=$(escape_spec_char "${ZBX_SERVER_NAME}") + server_user=$(escape_spec_char "${DB_SERVER_ZBX_USER}") + server_pass=$(escape_spec_char "${DB_SERVER_ZBX_PASS}") sed -i \ -e "s/{DB_SERVER_HOST}/${DB_SERVER_HOST}/g" \ -e "s/{DB_SERVER_PORT}/${DB_SERVER_PORT}/g" \ -e "s/{DB_SERVER_DBNAME}/${DB_SERVER_DBNAME}/g" \ - -e "s/{DB_SERVER_USER}/${DB_SERVER_ZBX_USER}/g" \ - -e "s/{DB_SERVER_PASS}/${DB_SERVER_ZBX_PASS}/g" \ + -e "s/{DB_SERVER_USER}/$server_user/g" \ + -e "s/{DB_SERVER_PASS}/$server_pass/g" \ -e "s/{ZBX_SERVER_HOST}/${ZBX_SERVER_HOST}/g" \ -e "s/{ZBX_SERVER_PORT}/${ZBX_SERVER_PORT}/g" \ -e "s/{ZBX_SERVER_NAME}/$server_name/g" \ diff --git a/server-mysql/centos/docker-entrypoint.sh b/server-mysql/centos/docker-entrypoint.sh index 6e11befc2..ee8579425 100755 --- a/server-mysql/centos/docker-entrypoint.sh +++ b/server-mysql/centos/docker-entrypoint.sh @@ -49,6 +49,23 @@ prepare_system() { fi } +escape_spec_char() { + local var_value=$1 + + var_value="${var_value//\\/\\\\}" + var_value="${var_value//[$'\n']/}" + var_value="${var_value//\//\\/}" + var_value="${var_value//./\\.}" + var_value="${var_value//\*/\\*}" + var_value="${var_value//^/\\^}" + var_value="${var_value//\$/\\\$}" + var_value="${var_value//\&/\\\&}" + var_value="${var_value//\[/\\[}" + var_value="${var_value//\[/\\]}" + + echo $var_value +} + update_config_var() { local config_path=$1 local var_name=$2 @@ -81,8 +98,8 @@ update_config_var() { var_value=$ZABBIX_USER_HOME_DIR/enc/$var_value fi - # Escaping "/" character in parameter value - var_value=${var_value//\//\\/} + # Escaping characters in parameter value + var_value=$(escape_spec_char "$var_value") if [ "$(grep -E "^$var_name=" $config_path)" ] && [ "$is_multiple" != "true" ]; then sed -i -e "/^$var_name=/s/=.*/=$var_value/" "$config_path" @@ -703,15 +720,17 @@ prepare_zbx_web_config() { echo "**** Zabbix related PHP configuration file not found" fi - # Escaping "/" character in parameter value - server_name=${ZBX_SERVER_NAME//\//\\/} + # Escaping characters in parameter value + server_name=$(escape_spec_char "${ZBX_SERVER_NAME}") + server_user=$(escape_spec_char "${DB_SERVER_ZBX_USER}") + server_pass=$(escape_spec_char "${DB_SERVER_ZBX_PASS}") sed -i \ -e "s/{DB_SERVER_HOST}/${DB_SERVER_HOST}/g" \ -e "s/{DB_SERVER_PORT}/${DB_SERVER_PORT}/g" \ -e "s/{DB_SERVER_DBNAME}/${DB_SERVER_DBNAME}/g" \ - -e "s/{DB_SERVER_USER}/${DB_SERVER_ZBX_USER}/g" \ - -e "s/{DB_SERVER_PASS}/${DB_SERVER_ZBX_PASS}/g" \ + -e "s/{DB_SERVER_USER}/$server_user/g" \ + -e "s/{DB_SERVER_PASS}/$server_pass/g" \ -e "s/{ZBX_SERVER_HOST}/${ZBX_SERVER_HOST}/g" \ -e "s/{ZBX_SERVER_PORT}/${ZBX_SERVER_PORT}/g" \ -e "s/{ZBX_SERVER_NAME}/$server_name/g" \ diff --git a/server-mysql/ubuntu/docker-entrypoint.sh b/server-mysql/ubuntu/docker-entrypoint.sh index 6e11befc2..ee8579425 100755 --- a/server-mysql/ubuntu/docker-entrypoint.sh +++ b/server-mysql/ubuntu/docker-entrypoint.sh @@ -49,6 +49,23 @@ prepare_system() { fi } +escape_spec_char() { + local var_value=$1 + + var_value="${var_value//\\/\\\\}" + var_value="${var_value//[$'\n']/}" + var_value="${var_value//\//\\/}" + var_value="${var_value//./\\.}" + var_value="${var_value//\*/\\*}" + var_value="${var_value//^/\\^}" + var_value="${var_value//\$/\\\$}" + var_value="${var_value//\&/\\\&}" + var_value="${var_value//\[/\\[}" + var_value="${var_value//\[/\\]}" + + echo $var_value +} + update_config_var() { local config_path=$1 local var_name=$2 @@ -81,8 +98,8 @@ update_config_var() { var_value=$ZABBIX_USER_HOME_DIR/enc/$var_value fi - # Escaping "/" character in parameter value - var_value=${var_value//\//\\/} + # Escaping characters in parameter value + var_value=$(escape_spec_char "$var_value") if [ "$(grep -E "^$var_name=" $config_path)" ] && [ "$is_multiple" != "true" ]; then sed -i -e "/^$var_name=/s/=.*/=$var_value/" "$config_path" @@ -703,15 +720,17 @@ prepare_zbx_web_config() { echo "**** Zabbix related PHP configuration file not found" fi - # Escaping "/" character in parameter value - server_name=${ZBX_SERVER_NAME//\//\\/} + # Escaping characters in parameter value + server_name=$(escape_spec_char "${ZBX_SERVER_NAME}") + server_user=$(escape_spec_char "${DB_SERVER_ZBX_USER}") + server_pass=$(escape_spec_char "${DB_SERVER_ZBX_PASS}") sed -i \ -e "s/{DB_SERVER_HOST}/${DB_SERVER_HOST}/g" \ -e "s/{DB_SERVER_PORT}/${DB_SERVER_PORT}/g" \ -e "s/{DB_SERVER_DBNAME}/${DB_SERVER_DBNAME}/g" \ - -e "s/{DB_SERVER_USER}/${DB_SERVER_ZBX_USER}/g" \ - -e "s/{DB_SERVER_PASS}/${DB_SERVER_ZBX_PASS}/g" \ + -e "s/{DB_SERVER_USER}/$server_user/g" \ + -e "s/{DB_SERVER_PASS}/$server_pass/g" \ -e "s/{ZBX_SERVER_HOST}/${ZBX_SERVER_HOST}/g" \ -e "s/{ZBX_SERVER_PORT}/${ZBX_SERVER_PORT}/g" \ -e "s/{ZBX_SERVER_NAME}/$server_name/g" \ diff --git a/server-pgsql/alpine/docker-entrypoint.sh b/server-pgsql/alpine/docker-entrypoint.sh index 6e11befc2..ee8579425 100755 --- a/server-pgsql/alpine/docker-entrypoint.sh +++ b/server-pgsql/alpine/docker-entrypoint.sh @@ -49,6 +49,23 @@ prepare_system() { fi } +escape_spec_char() { + local var_value=$1 + + var_value="${var_value//\\/\\\\}" + var_value="${var_value//[$'\n']/}" + var_value="${var_value//\//\\/}" + var_value="${var_value//./\\.}" + var_value="${var_value//\*/\\*}" + var_value="${var_value//^/\\^}" + var_value="${var_value//\$/\\\$}" + var_value="${var_value//\&/\\\&}" + var_value="${var_value//\[/\\[}" + var_value="${var_value//\[/\\]}" + + echo $var_value +} + update_config_var() { local config_path=$1 local var_name=$2 @@ -81,8 +98,8 @@ update_config_var() { var_value=$ZABBIX_USER_HOME_DIR/enc/$var_value fi - # Escaping "/" character in parameter value - var_value=${var_value//\//\\/} + # Escaping characters in parameter value + var_value=$(escape_spec_char "$var_value") if [ "$(grep -E "^$var_name=" $config_path)" ] && [ "$is_multiple" != "true" ]; then sed -i -e "/^$var_name=/s/=.*/=$var_value/" "$config_path" @@ -703,15 +720,17 @@ prepare_zbx_web_config() { echo "**** Zabbix related PHP configuration file not found" fi - # Escaping "/" character in parameter value - server_name=${ZBX_SERVER_NAME//\//\\/} + # Escaping characters in parameter value + server_name=$(escape_spec_char "${ZBX_SERVER_NAME}") + server_user=$(escape_spec_char "${DB_SERVER_ZBX_USER}") + server_pass=$(escape_spec_char "${DB_SERVER_ZBX_PASS}") sed -i \ -e "s/{DB_SERVER_HOST}/${DB_SERVER_HOST}/g" \ -e "s/{DB_SERVER_PORT}/${DB_SERVER_PORT}/g" \ -e "s/{DB_SERVER_DBNAME}/${DB_SERVER_DBNAME}/g" \ - -e "s/{DB_SERVER_USER}/${DB_SERVER_ZBX_USER}/g" \ - -e "s/{DB_SERVER_PASS}/${DB_SERVER_ZBX_PASS}/g" \ + -e "s/{DB_SERVER_USER}/$server_user/g" \ + -e "s/{DB_SERVER_PASS}/$server_pass/g" \ -e "s/{ZBX_SERVER_HOST}/${ZBX_SERVER_HOST}/g" \ -e "s/{ZBX_SERVER_PORT}/${ZBX_SERVER_PORT}/g" \ -e "s/{ZBX_SERVER_NAME}/$server_name/g" \ diff --git a/server-pgsql/centos/docker-entrypoint.sh b/server-pgsql/centos/docker-entrypoint.sh index 6e11befc2..ee8579425 100755 --- a/server-pgsql/centos/docker-entrypoint.sh +++ b/server-pgsql/centos/docker-entrypoint.sh @@ -49,6 +49,23 @@ prepare_system() { fi } +escape_spec_char() { + local var_value=$1 + + var_value="${var_value//\\/\\\\}" + var_value="${var_value//[$'\n']/}" + var_value="${var_value//\//\\/}" + var_value="${var_value//./\\.}" + var_value="${var_value//\*/\\*}" + var_value="${var_value//^/\\^}" + var_value="${var_value//\$/\\\$}" + var_value="${var_value//\&/\\\&}" + var_value="${var_value//\[/\\[}" + var_value="${var_value//\[/\\]}" + + echo $var_value +} + update_config_var() { local config_path=$1 local var_name=$2 @@ -81,8 +98,8 @@ update_config_var() { var_value=$ZABBIX_USER_HOME_DIR/enc/$var_value fi - # Escaping "/" character in parameter value - var_value=${var_value//\//\\/} + # Escaping characters in parameter value + var_value=$(escape_spec_char "$var_value") if [ "$(grep -E "^$var_name=" $config_path)" ] && [ "$is_multiple" != "true" ]; then sed -i -e "/^$var_name=/s/=.*/=$var_value/" "$config_path" @@ -703,15 +720,17 @@ prepare_zbx_web_config() { echo "**** Zabbix related PHP configuration file not found" fi - # Escaping "/" character in parameter value - server_name=${ZBX_SERVER_NAME//\//\\/} + # Escaping characters in parameter value + server_name=$(escape_spec_char "${ZBX_SERVER_NAME}") + server_user=$(escape_spec_char "${DB_SERVER_ZBX_USER}") + server_pass=$(escape_spec_char "${DB_SERVER_ZBX_PASS}") sed -i \ -e "s/{DB_SERVER_HOST}/${DB_SERVER_HOST}/g" \ -e "s/{DB_SERVER_PORT}/${DB_SERVER_PORT}/g" \ -e "s/{DB_SERVER_DBNAME}/${DB_SERVER_DBNAME}/g" \ - -e "s/{DB_SERVER_USER}/${DB_SERVER_ZBX_USER}/g" \ - -e "s/{DB_SERVER_PASS}/${DB_SERVER_ZBX_PASS}/g" \ + -e "s/{DB_SERVER_USER}/$server_user/g" \ + -e "s/{DB_SERVER_PASS}/$server_pass/g" \ -e "s/{ZBX_SERVER_HOST}/${ZBX_SERVER_HOST}/g" \ -e "s/{ZBX_SERVER_PORT}/${ZBX_SERVER_PORT}/g" \ -e "s/{ZBX_SERVER_NAME}/$server_name/g" \ diff --git a/server-pgsql/ubuntu/docker-entrypoint.sh b/server-pgsql/ubuntu/docker-entrypoint.sh index 6e11befc2..ee8579425 100755 --- a/server-pgsql/ubuntu/docker-entrypoint.sh +++ b/server-pgsql/ubuntu/docker-entrypoint.sh @@ -49,6 +49,23 @@ prepare_system() { fi } +escape_spec_char() { + local var_value=$1 + + var_value="${var_value//\\/\\\\}" + var_value="${var_value//[$'\n']/}" + var_value="${var_value//\//\\/}" + var_value="${var_value//./\\.}" + var_value="${var_value//\*/\\*}" + var_value="${var_value//^/\\^}" + var_value="${var_value//\$/\\\$}" + var_value="${var_value//\&/\\\&}" + var_value="${var_value//\[/\\[}" + var_value="${var_value//\[/\\]}" + + echo $var_value +} + update_config_var() { local config_path=$1 local var_name=$2 @@ -81,8 +98,8 @@ update_config_var() { var_value=$ZABBIX_USER_HOME_DIR/enc/$var_value fi - # Escaping "/" character in parameter value - var_value=${var_value//\//\\/} + # Escaping characters in parameter value + var_value=$(escape_spec_char "$var_value") if [ "$(grep -E "^$var_name=" $config_path)" ] && [ "$is_multiple" != "true" ]; then sed -i -e "/^$var_name=/s/=.*/=$var_value/" "$config_path" @@ -703,15 +720,17 @@ prepare_zbx_web_config() { echo "**** Zabbix related PHP configuration file not found" fi - # Escaping "/" character in parameter value - server_name=${ZBX_SERVER_NAME//\//\\/} + # Escaping characters in parameter value + server_name=$(escape_spec_char "${ZBX_SERVER_NAME}") + server_user=$(escape_spec_char "${DB_SERVER_ZBX_USER}") + server_pass=$(escape_spec_char "${DB_SERVER_ZBX_PASS}") sed -i \ -e "s/{DB_SERVER_HOST}/${DB_SERVER_HOST}/g" \ -e "s/{DB_SERVER_PORT}/${DB_SERVER_PORT}/g" \ -e "s/{DB_SERVER_DBNAME}/${DB_SERVER_DBNAME}/g" \ - -e "s/{DB_SERVER_USER}/${DB_SERVER_ZBX_USER}/g" \ - -e "s/{DB_SERVER_PASS}/${DB_SERVER_ZBX_PASS}/g" \ + -e "s/{DB_SERVER_USER}/$server_user/g" \ + -e "s/{DB_SERVER_PASS}/$server_pass/g" \ -e "s/{ZBX_SERVER_HOST}/${ZBX_SERVER_HOST}/g" \ -e "s/{ZBX_SERVER_PORT}/${ZBX_SERVER_PORT}/g" \ -e "s/{ZBX_SERVER_NAME}/$server_name/g" \ diff --git a/web-apache-mysql/alpine/docker-entrypoint.sh b/web-apache-mysql/alpine/docker-entrypoint.sh index 6e11befc2..ee8579425 100755 --- a/web-apache-mysql/alpine/docker-entrypoint.sh +++ b/web-apache-mysql/alpine/docker-entrypoint.sh @@ -49,6 +49,23 @@ prepare_system() { fi } +escape_spec_char() { + local var_value=$1 + + var_value="${var_value//\\/\\\\}" + var_value="${var_value//[$'\n']/}" + var_value="${var_value//\//\\/}" + var_value="${var_value//./\\.}" + var_value="${var_value//\*/\\*}" + var_value="${var_value//^/\\^}" + var_value="${var_value//\$/\\\$}" + var_value="${var_value//\&/\\\&}" + var_value="${var_value//\[/\\[}" + var_value="${var_value//\[/\\]}" + + echo $var_value +} + update_config_var() { local config_path=$1 local var_name=$2 @@ -81,8 +98,8 @@ update_config_var() { var_value=$ZABBIX_USER_HOME_DIR/enc/$var_value fi - # Escaping "/" character in parameter value - var_value=${var_value//\//\\/} + # Escaping characters in parameter value + var_value=$(escape_spec_char "$var_value") if [ "$(grep -E "^$var_name=" $config_path)" ] && [ "$is_multiple" != "true" ]; then sed -i -e "/^$var_name=/s/=.*/=$var_value/" "$config_path" @@ -703,15 +720,17 @@ prepare_zbx_web_config() { echo "**** Zabbix related PHP configuration file not found" fi - # Escaping "/" character in parameter value - server_name=${ZBX_SERVER_NAME//\//\\/} + # Escaping characters in parameter value + server_name=$(escape_spec_char "${ZBX_SERVER_NAME}") + server_user=$(escape_spec_char "${DB_SERVER_ZBX_USER}") + server_pass=$(escape_spec_char "${DB_SERVER_ZBX_PASS}") sed -i \ -e "s/{DB_SERVER_HOST}/${DB_SERVER_HOST}/g" \ -e "s/{DB_SERVER_PORT}/${DB_SERVER_PORT}/g" \ -e "s/{DB_SERVER_DBNAME}/${DB_SERVER_DBNAME}/g" \ - -e "s/{DB_SERVER_USER}/${DB_SERVER_ZBX_USER}/g" \ - -e "s/{DB_SERVER_PASS}/${DB_SERVER_ZBX_PASS}/g" \ + -e "s/{DB_SERVER_USER}/$server_user/g" \ + -e "s/{DB_SERVER_PASS}/$server_pass/g" \ -e "s/{ZBX_SERVER_HOST}/${ZBX_SERVER_HOST}/g" \ -e "s/{ZBX_SERVER_PORT}/${ZBX_SERVER_PORT}/g" \ -e "s/{ZBX_SERVER_NAME}/$server_name/g" \ diff --git a/web-apache-mysql/centos/docker-entrypoint.sh b/web-apache-mysql/centos/docker-entrypoint.sh index 6e11befc2..ee8579425 100755 --- a/web-apache-mysql/centos/docker-entrypoint.sh +++ b/web-apache-mysql/centos/docker-entrypoint.sh @@ -49,6 +49,23 @@ prepare_system() { fi } +escape_spec_char() { + local var_value=$1 + + var_value="${var_value//\\/\\\\}" + var_value="${var_value//[$'\n']/}" + var_value="${var_value//\//\\/}" + var_value="${var_value//./\\.}" + var_value="${var_value//\*/\\*}" + var_value="${var_value//^/\\^}" + var_value="${var_value//\$/\\\$}" + var_value="${var_value//\&/\\\&}" + var_value="${var_value//\[/\\[}" + var_value="${var_value//\[/\\]}" + + echo $var_value +} + update_config_var() { local config_path=$1 local var_name=$2 @@ -81,8 +98,8 @@ update_config_var() { var_value=$ZABBIX_USER_HOME_DIR/enc/$var_value fi - # Escaping "/" character in parameter value - var_value=${var_value//\//\\/} + # Escaping characters in parameter value + var_value=$(escape_spec_char "$var_value") if [ "$(grep -E "^$var_name=" $config_path)" ] && [ "$is_multiple" != "true" ]; then sed -i -e "/^$var_name=/s/=.*/=$var_value/" "$config_path" @@ -703,15 +720,17 @@ prepare_zbx_web_config() { echo "**** Zabbix related PHP configuration file not found" fi - # Escaping "/" character in parameter value - server_name=${ZBX_SERVER_NAME//\//\\/} + # Escaping characters in parameter value + server_name=$(escape_spec_char "${ZBX_SERVER_NAME}") + server_user=$(escape_spec_char "${DB_SERVER_ZBX_USER}") + server_pass=$(escape_spec_char "${DB_SERVER_ZBX_PASS}") sed -i \ -e "s/{DB_SERVER_HOST}/${DB_SERVER_HOST}/g" \ -e "s/{DB_SERVER_PORT}/${DB_SERVER_PORT}/g" \ -e "s/{DB_SERVER_DBNAME}/${DB_SERVER_DBNAME}/g" \ - -e "s/{DB_SERVER_USER}/${DB_SERVER_ZBX_USER}/g" \ - -e "s/{DB_SERVER_PASS}/${DB_SERVER_ZBX_PASS}/g" \ + -e "s/{DB_SERVER_USER}/$server_user/g" \ + -e "s/{DB_SERVER_PASS}/$server_pass/g" \ -e "s/{ZBX_SERVER_HOST}/${ZBX_SERVER_HOST}/g" \ -e "s/{ZBX_SERVER_PORT}/${ZBX_SERVER_PORT}/g" \ -e "s/{ZBX_SERVER_NAME}/$server_name/g" \ diff --git a/web-apache-mysql/ubuntu/docker-entrypoint.sh b/web-apache-mysql/ubuntu/docker-entrypoint.sh index 6e11befc2..ee8579425 100755 --- a/web-apache-mysql/ubuntu/docker-entrypoint.sh +++ b/web-apache-mysql/ubuntu/docker-entrypoint.sh @@ -49,6 +49,23 @@ prepare_system() { fi } +escape_spec_char() { + local var_value=$1 + + var_value="${var_value//\\/\\\\}" + var_value="${var_value//[$'\n']/}" + var_value="${var_value//\//\\/}" + var_value="${var_value//./\\.}" + var_value="${var_value//\*/\\*}" + var_value="${var_value//^/\\^}" + var_value="${var_value//\$/\\\$}" + var_value="${var_value//\&/\\\&}" + var_value="${var_value//\[/\\[}" + var_value="${var_value//\[/\\]}" + + echo $var_value +} + update_config_var() { local config_path=$1 local var_name=$2 @@ -81,8 +98,8 @@ update_config_var() { var_value=$ZABBIX_USER_HOME_DIR/enc/$var_value fi - # Escaping "/" character in parameter value - var_value=${var_value//\//\\/} + # Escaping characters in parameter value + var_value=$(escape_spec_char "$var_value") if [ "$(grep -E "^$var_name=" $config_path)" ] && [ "$is_multiple" != "true" ]; then sed -i -e "/^$var_name=/s/=.*/=$var_value/" "$config_path" @@ -703,15 +720,17 @@ prepare_zbx_web_config() { echo "**** Zabbix related PHP configuration file not found" fi - # Escaping "/" character in parameter value - server_name=${ZBX_SERVER_NAME//\//\\/} + # Escaping characters in parameter value + server_name=$(escape_spec_char "${ZBX_SERVER_NAME}") + server_user=$(escape_spec_char "${DB_SERVER_ZBX_USER}") + server_pass=$(escape_spec_char "${DB_SERVER_ZBX_PASS}") sed -i \ -e "s/{DB_SERVER_HOST}/${DB_SERVER_HOST}/g" \ -e "s/{DB_SERVER_PORT}/${DB_SERVER_PORT}/g" \ -e "s/{DB_SERVER_DBNAME}/${DB_SERVER_DBNAME}/g" \ - -e "s/{DB_SERVER_USER}/${DB_SERVER_ZBX_USER}/g" \ - -e "s/{DB_SERVER_PASS}/${DB_SERVER_ZBX_PASS}/g" \ + -e "s/{DB_SERVER_USER}/$server_user/g" \ + -e "s/{DB_SERVER_PASS}/$server_pass/g" \ -e "s/{ZBX_SERVER_HOST}/${ZBX_SERVER_HOST}/g" \ -e "s/{ZBX_SERVER_PORT}/${ZBX_SERVER_PORT}/g" \ -e "s/{ZBX_SERVER_NAME}/$server_name/g" \ diff --git a/web-apache-pgsql/alpine/docker-entrypoint.sh b/web-apache-pgsql/alpine/docker-entrypoint.sh index 6e11befc2..ee8579425 100755 --- a/web-apache-pgsql/alpine/docker-entrypoint.sh +++ b/web-apache-pgsql/alpine/docker-entrypoint.sh @@ -49,6 +49,23 @@ prepare_system() { fi } +escape_spec_char() { + local var_value=$1 + + var_value="${var_value//\\/\\\\}" + var_value="${var_value//[$'\n']/}" + var_value="${var_value//\//\\/}" + var_value="${var_value//./\\.}" + var_value="${var_value//\*/\\*}" + var_value="${var_value//^/\\^}" + var_value="${var_value//\$/\\\$}" + var_value="${var_value//\&/\\\&}" + var_value="${var_value//\[/\\[}" + var_value="${var_value//\[/\\]}" + + echo $var_value +} + update_config_var() { local config_path=$1 local var_name=$2 @@ -81,8 +98,8 @@ update_config_var() { var_value=$ZABBIX_USER_HOME_DIR/enc/$var_value fi - # Escaping "/" character in parameter value - var_value=${var_value//\//\\/} + # Escaping characters in parameter value + var_value=$(escape_spec_char "$var_value") if [ "$(grep -E "^$var_name=" $config_path)" ] && [ "$is_multiple" != "true" ]; then sed -i -e "/^$var_name=/s/=.*/=$var_value/" "$config_path" @@ -703,15 +720,17 @@ prepare_zbx_web_config() { echo "**** Zabbix related PHP configuration file not found" fi - # Escaping "/" character in parameter value - server_name=${ZBX_SERVER_NAME//\//\\/} + # Escaping characters in parameter value + server_name=$(escape_spec_char "${ZBX_SERVER_NAME}") + server_user=$(escape_spec_char "${DB_SERVER_ZBX_USER}") + server_pass=$(escape_spec_char "${DB_SERVER_ZBX_PASS}") sed -i \ -e "s/{DB_SERVER_HOST}/${DB_SERVER_HOST}/g" \ -e "s/{DB_SERVER_PORT}/${DB_SERVER_PORT}/g" \ -e "s/{DB_SERVER_DBNAME}/${DB_SERVER_DBNAME}/g" \ - -e "s/{DB_SERVER_USER}/${DB_SERVER_ZBX_USER}/g" \ - -e "s/{DB_SERVER_PASS}/${DB_SERVER_ZBX_PASS}/g" \ + -e "s/{DB_SERVER_USER}/$server_user/g" \ + -e "s/{DB_SERVER_PASS}/$server_pass/g" \ -e "s/{ZBX_SERVER_HOST}/${ZBX_SERVER_HOST}/g" \ -e "s/{ZBX_SERVER_PORT}/${ZBX_SERVER_PORT}/g" \ -e "s/{ZBX_SERVER_NAME}/$server_name/g" \ diff --git a/web-apache-pgsql/centos/docker-entrypoint.sh b/web-apache-pgsql/centos/docker-entrypoint.sh index 6e11befc2..ee8579425 100755 --- a/web-apache-pgsql/centos/docker-entrypoint.sh +++ b/web-apache-pgsql/centos/docker-entrypoint.sh @@ -49,6 +49,23 @@ prepare_system() { fi } +escape_spec_char() { + local var_value=$1 + + var_value="${var_value//\\/\\\\}" + var_value="${var_value//[$'\n']/}" + var_value="${var_value//\//\\/}" + var_value="${var_value//./\\.}" + var_value="${var_value//\*/\\*}" + var_value="${var_value//^/\\^}" + var_value="${var_value//\$/\\\$}" + var_value="${var_value//\&/\\\&}" + var_value="${var_value//\[/\\[}" + var_value="${var_value//\[/\\]}" + + echo $var_value +} + update_config_var() { local config_path=$1 local var_name=$2 @@ -81,8 +98,8 @@ update_config_var() { var_value=$ZABBIX_USER_HOME_DIR/enc/$var_value fi - # Escaping "/" character in parameter value - var_value=${var_value//\//\\/} + # Escaping characters in parameter value + var_value=$(escape_spec_char "$var_value") if [ "$(grep -E "^$var_name=" $config_path)" ] && [ "$is_multiple" != "true" ]; then sed -i -e "/^$var_name=/s/=.*/=$var_value/" "$config_path" @@ -703,15 +720,17 @@ prepare_zbx_web_config() { echo "**** Zabbix related PHP configuration file not found" fi - # Escaping "/" character in parameter value - server_name=${ZBX_SERVER_NAME//\//\\/} + # Escaping characters in parameter value + server_name=$(escape_spec_char "${ZBX_SERVER_NAME}") + server_user=$(escape_spec_char "${DB_SERVER_ZBX_USER}") + server_pass=$(escape_spec_char "${DB_SERVER_ZBX_PASS}") sed -i \ -e "s/{DB_SERVER_HOST}/${DB_SERVER_HOST}/g" \ -e "s/{DB_SERVER_PORT}/${DB_SERVER_PORT}/g" \ -e "s/{DB_SERVER_DBNAME}/${DB_SERVER_DBNAME}/g" \ - -e "s/{DB_SERVER_USER}/${DB_SERVER_ZBX_USER}/g" \ - -e "s/{DB_SERVER_PASS}/${DB_SERVER_ZBX_PASS}/g" \ + -e "s/{DB_SERVER_USER}/$server_user/g" \ + -e "s/{DB_SERVER_PASS}/$server_pass/g" \ -e "s/{ZBX_SERVER_HOST}/${ZBX_SERVER_HOST}/g" \ -e "s/{ZBX_SERVER_PORT}/${ZBX_SERVER_PORT}/g" \ -e "s/{ZBX_SERVER_NAME}/$server_name/g" \ diff --git a/web-apache-pgsql/ubuntu/docker-entrypoint.sh b/web-apache-pgsql/ubuntu/docker-entrypoint.sh index 6e11befc2..ee8579425 100755 --- a/web-apache-pgsql/ubuntu/docker-entrypoint.sh +++ b/web-apache-pgsql/ubuntu/docker-entrypoint.sh @@ -49,6 +49,23 @@ prepare_system() { fi } +escape_spec_char() { + local var_value=$1 + + var_value="${var_value//\\/\\\\}" + var_value="${var_value//[$'\n']/}" + var_value="${var_value//\//\\/}" + var_value="${var_value//./\\.}" + var_value="${var_value//\*/\\*}" + var_value="${var_value//^/\\^}" + var_value="${var_value//\$/\\\$}" + var_value="${var_value//\&/\\\&}" + var_value="${var_value//\[/\\[}" + var_value="${var_value//\[/\\]}" + + echo $var_value +} + update_config_var() { local config_path=$1 local var_name=$2 @@ -81,8 +98,8 @@ update_config_var() { var_value=$ZABBIX_USER_HOME_DIR/enc/$var_value fi - # Escaping "/" character in parameter value - var_value=${var_value//\//\\/} + # Escaping characters in parameter value + var_value=$(escape_spec_char "$var_value") if [ "$(grep -E "^$var_name=" $config_path)" ] && [ "$is_multiple" != "true" ]; then sed -i -e "/^$var_name=/s/=.*/=$var_value/" "$config_path" @@ -703,15 +720,17 @@ prepare_zbx_web_config() { echo "**** Zabbix related PHP configuration file not found" fi - # Escaping "/" character in parameter value - server_name=${ZBX_SERVER_NAME//\//\\/} + # Escaping characters in parameter value + server_name=$(escape_spec_char "${ZBX_SERVER_NAME}") + server_user=$(escape_spec_char "${DB_SERVER_ZBX_USER}") + server_pass=$(escape_spec_char "${DB_SERVER_ZBX_PASS}") sed -i \ -e "s/{DB_SERVER_HOST}/${DB_SERVER_HOST}/g" \ -e "s/{DB_SERVER_PORT}/${DB_SERVER_PORT}/g" \ -e "s/{DB_SERVER_DBNAME}/${DB_SERVER_DBNAME}/g" \ - -e "s/{DB_SERVER_USER}/${DB_SERVER_ZBX_USER}/g" \ - -e "s/{DB_SERVER_PASS}/${DB_SERVER_ZBX_PASS}/g" \ + -e "s/{DB_SERVER_USER}/$server_user/g" \ + -e "s/{DB_SERVER_PASS}/$server_pass/g" \ -e "s/{ZBX_SERVER_HOST}/${ZBX_SERVER_HOST}/g" \ -e "s/{ZBX_SERVER_PORT}/${ZBX_SERVER_PORT}/g" \ -e "s/{ZBX_SERVER_NAME}/$server_name/g" \ diff --git a/web-nginx-mysql/alpine/docker-entrypoint.sh b/web-nginx-mysql/alpine/docker-entrypoint.sh index 6e11befc2..ee8579425 100755 --- a/web-nginx-mysql/alpine/docker-entrypoint.sh +++ b/web-nginx-mysql/alpine/docker-entrypoint.sh @@ -49,6 +49,23 @@ prepare_system() { fi } +escape_spec_char() { + local var_value=$1 + + var_value="${var_value//\\/\\\\}" + var_value="${var_value//[$'\n']/}" + var_value="${var_value//\//\\/}" + var_value="${var_value//./\\.}" + var_value="${var_value//\*/\\*}" + var_value="${var_value//^/\\^}" + var_value="${var_value//\$/\\\$}" + var_value="${var_value//\&/\\\&}" + var_value="${var_value//\[/\\[}" + var_value="${var_value//\[/\\]}" + + echo $var_value +} + update_config_var() { local config_path=$1 local var_name=$2 @@ -81,8 +98,8 @@ update_config_var() { var_value=$ZABBIX_USER_HOME_DIR/enc/$var_value fi - # Escaping "/" character in parameter value - var_value=${var_value//\//\\/} + # Escaping characters in parameter value + var_value=$(escape_spec_char "$var_value") if [ "$(grep -E "^$var_name=" $config_path)" ] && [ "$is_multiple" != "true" ]; then sed -i -e "/^$var_name=/s/=.*/=$var_value/" "$config_path" @@ -703,15 +720,17 @@ prepare_zbx_web_config() { echo "**** Zabbix related PHP configuration file not found" fi - # Escaping "/" character in parameter value - server_name=${ZBX_SERVER_NAME//\//\\/} + # Escaping characters in parameter value + server_name=$(escape_spec_char "${ZBX_SERVER_NAME}") + server_user=$(escape_spec_char "${DB_SERVER_ZBX_USER}") + server_pass=$(escape_spec_char "${DB_SERVER_ZBX_PASS}") sed -i \ -e "s/{DB_SERVER_HOST}/${DB_SERVER_HOST}/g" \ -e "s/{DB_SERVER_PORT}/${DB_SERVER_PORT}/g" \ -e "s/{DB_SERVER_DBNAME}/${DB_SERVER_DBNAME}/g" \ - -e "s/{DB_SERVER_USER}/${DB_SERVER_ZBX_USER}/g" \ - -e "s/{DB_SERVER_PASS}/${DB_SERVER_ZBX_PASS}/g" \ + -e "s/{DB_SERVER_USER}/$server_user/g" \ + -e "s/{DB_SERVER_PASS}/$server_pass/g" \ -e "s/{ZBX_SERVER_HOST}/${ZBX_SERVER_HOST}/g" \ -e "s/{ZBX_SERVER_PORT}/${ZBX_SERVER_PORT}/g" \ -e "s/{ZBX_SERVER_NAME}/$server_name/g" \ diff --git a/web-nginx-mysql/centos/docker-entrypoint.sh b/web-nginx-mysql/centos/docker-entrypoint.sh index 6e11befc2..ee8579425 100755 --- a/web-nginx-mysql/centos/docker-entrypoint.sh +++ b/web-nginx-mysql/centos/docker-entrypoint.sh @@ -49,6 +49,23 @@ prepare_system() { fi } +escape_spec_char() { + local var_value=$1 + + var_value="${var_value//\\/\\\\}" + var_value="${var_value//[$'\n']/}" + var_value="${var_value//\//\\/}" + var_value="${var_value//./\\.}" + var_value="${var_value//\*/\\*}" + var_value="${var_value//^/\\^}" + var_value="${var_value//\$/\\\$}" + var_value="${var_value//\&/\\\&}" + var_value="${var_value//\[/\\[}" + var_value="${var_value//\[/\\]}" + + echo $var_value +} + update_config_var() { local config_path=$1 local var_name=$2 @@ -81,8 +98,8 @@ update_config_var() { var_value=$ZABBIX_USER_HOME_DIR/enc/$var_value fi - # Escaping "/" character in parameter value - var_value=${var_value//\//\\/} + # Escaping characters in parameter value + var_value=$(escape_spec_char "$var_value") if [ "$(grep -E "^$var_name=" $config_path)" ] && [ "$is_multiple" != "true" ]; then sed -i -e "/^$var_name=/s/=.*/=$var_value/" "$config_path" @@ -703,15 +720,17 @@ prepare_zbx_web_config() { echo "**** Zabbix related PHP configuration file not found" fi - # Escaping "/" character in parameter value - server_name=${ZBX_SERVER_NAME//\//\\/} + # Escaping characters in parameter value + server_name=$(escape_spec_char "${ZBX_SERVER_NAME}") + server_user=$(escape_spec_char "${DB_SERVER_ZBX_USER}") + server_pass=$(escape_spec_char "${DB_SERVER_ZBX_PASS}") sed -i \ -e "s/{DB_SERVER_HOST}/${DB_SERVER_HOST}/g" \ -e "s/{DB_SERVER_PORT}/${DB_SERVER_PORT}/g" \ -e "s/{DB_SERVER_DBNAME}/${DB_SERVER_DBNAME}/g" \ - -e "s/{DB_SERVER_USER}/${DB_SERVER_ZBX_USER}/g" \ - -e "s/{DB_SERVER_PASS}/${DB_SERVER_ZBX_PASS}/g" \ + -e "s/{DB_SERVER_USER}/$server_user/g" \ + -e "s/{DB_SERVER_PASS}/$server_pass/g" \ -e "s/{ZBX_SERVER_HOST}/${ZBX_SERVER_HOST}/g" \ -e "s/{ZBX_SERVER_PORT}/${ZBX_SERVER_PORT}/g" \ -e "s/{ZBX_SERVER_NAME}/$server_name/g" \ diff --git a/web-nginx-mysql/ubuntu/docker-entrypoint.sh b/web-nginx-mysql/ubuntu/docker-entrypoint.sh index 6e11befc2..ee8579425 100755 --- a/web-nginx-mysql/ubuntu/docker-entrypoint.sh +++ b/web-nginx-mysql/ubuntu/docker-entrypoint.sh @@ -49,6 +49,23 @@ prepare_system() { fi } +escape_spec_char() { + local var_value=$1 + + var_value="${var_value//\\/\\\\}" + var_value="${var_value//[$'\n']/}" + var_value="${var_value//\//\\/}" + var_value="${var_value//./\\.}" + var_value="${var_value//\*/\\*}" + var_value="${var_value//^/\\^}" + var_value="${var_value//\$/\\\$}" + var_value="${var_value//\&/\\\&}" + var_value="${var_value//\[/\\[}" + var_value="${var_value//\[/\\]}" + + echo $var_value +} + update_config_var() { local config_path=$1 local var_name=$2 @@ -81,8 +98,8 @@ update_config_var() { var_value=$ZABBIX_USER_HOME_DIR/enc/$var_value fi - # Escaping "/" character in parameter value - var_value=${var_value//\//\\/} + # Escaping characters in parameter value + var_value=$(escape_spec_char "$var_value") if [ "$(grep -E "^$var_name=" $config_path)" ] && [ "$is_multiple" != "true" ]; then sed -i -e "/^$var_name=/s/=.*/=$var_value/" "$config_path" @@ -703,15 +720,17 @@ prepare_zbx_web_config() { echo "**** Zabbix related PHP configuration file not found" fi - # Escaping "/" character in parameter value - server_name=${ZBX_SERVER_NAME//\//\\/} + # Escaping characters in parameter value + server_name=$(escape_spec_char "${ZBX_SERVER_NAME}") + server_user=$(escape_spec_char "${DB_SERVER_ZBX_USER}") + server_pass=$(escape_spec_char "${DB_SERVER_ZBX_PASS}") sed -i \ -e "s/{DB_SERVER_HOST}/${DB_SERVER_HOST}/g" \ -e "s/{DB_SERVER_PORT}/${DB_SERVER_PORT}/g" \ -e "s/{DB_SERVER_DBNAME}/${DB_SERVER_DBNAME}/g" \ - -e "s/{DB_SERVER_USER}/${DB_SERVER_ZBX_USER}/g" \ - -e "s/{DB_SERVER_PASS}/${DB_SERVER_ZBX_PASS}/g" \ + -e "s/{DB_SERVER_USER}/$server_user/g" \ + -e "s/{DB_SERVER_PASS}/$server_pass/g" \ -e "s/{ZBX_SERVER_HOST}/${ZBX_SERVER_HOST}/g" \ -e "s/{ZBX_SERVER_PORT}/${ZBX_SERVER_PORT}/g" \ -e "s/{ZBX_SERVER_NAME}/$server_name/g" \ diff --git a/web-nginx-pgsql/alpine/docker-entrypoint.sh b/web-nginx-pgsql/alpine/docker-entrypoint.sh index 6e11befc2..ee8579425 100755 --- a/web-nginx-pgsql/alpine/docker-entrypoint.sh +++ b/web-nginx-pgsql/alpine/docker-entrypoint.sh @@ -49,6 +49,23 @@ prepare_system() { fi } +escape_spec_char() { + local var_value=$1 + + var_value="${var_value//\\/\\\\}" + var_value="${var_value//[$'\n']/}" + var_value="${var_value//\//\\/}" + var_value="${var_value//./\\.}" + var_value="${var_value//\*/\\*}" + var_value="${var_value//^/\\^}" + var_value="${var_value//\$/\\\$}" + var_value="${var_value//\&/\\\&}" + var_value="${var_value//\[/\\[}" + var_value="${var_value//\[/\\]}" + + echo $var_value +} + update_config_var() { local config_path=$1 local var_name=$2 @@ -81,8 +98,8 @@ update_config_var() { var_value=$ZABBIX_USER_HOME_DIR/enc/$var_value fi - # Escaping "/" character in parameter value - var_value=${var_value//\//\\/} + # Escaping characters in parameter value + var_value=$(escape_spec_char "$var_value") if [ "$(grep -E "^$var_name=" $config_path)" ] && [ "$is_multiple" != "true" ]; then sed -i -e "/^$var_name=/s/=.*/=$var_value/" "$config_path" @@ -703,15 +720,17 @@ prepare_zbx_web_config() { echo "**** Zabbix related PHP configuration file not found" fi - # Escaping "/" character in parameter value - server_name=${ZBX_SERVER_NAME//\//\\/} + # Escaping characters in parameter value + server_name=$(escape_spec_char "${ZBX_SERVER_NAME}") + server_user=$(escape_spec_char "${DB_SERVER_ZBX_USER}") + server_pass=$(escape_spec_char "${DB_SERVER_ZBX_PASS}") sed -i \ -e "s/{DB_SERVER_HOST}/${DB_SERVER_HOST}/g" \ -e "s/{DB_SERVER_PORT}/${DB_SERVER_PORT}/g" \ -e "s/{DB_SERVER_DBNAME}/${DB_SERVER_DBNAME}/g" \ - -e "s/{DB_SERVER_USER}/${DB_SERVER_ZBX_USER}/g" \ - -e "s/{DB_SERVER_PASS}/${DB_SERVER_ZBX_PASS}/g" \ + -e "s/{DB_SERVER_USER}/$server_user/g" \ + -e "s/{DB_SERVER_PASS}/$server_pass/g" \ -e "s/{ZBX_SERVER_HOST}/${ZBX_SERVER_HOST}/g" \ -e "s/{ZBX_SERVER_PORT}/${ZBX_SERVER_PORT}/g" \ -e "s/{ZBX_SERVER_NAME}/$server_name/g" \ diff --git a/web-nginx-pgsql/centos/docker-entrypoint.sh b/web-nginx-pgsql/centos/docker-entrypoint.sh index 6e11befc2..ee8579425 100755 --- a/web-nginx-pgsql/centos/docker-entrypoint.sh +++ b/web-nginx-pgsql/centos/docker-entrypoint.sh @@ -49,6 +49,23 @@ prepare_system() { fi } +escape_spec_char() { + local var_value=$1 + + var_value="${var_value//\\/\\\\}" + var_value="${var_value//[$'\n']/}" + var_value="${var_value//\//\\/}" + var_value="${var_value//./\\.}" + var_value="${var_value//\*/\\*}" + var_value="${var_value//^/\\^}" + var_value="${var_value//\$/\\\$}" + var_value="${var_value//\&/\\\&}" + var_value="${var_value//\[/\\[}" + var_value="${var_value//\[/\\]}" + + echo $var_value +} + update_config_var() { local config_path=$1 local var_name=$2 @@ -81,8 +98,8 @@ update_config_var() { var_value=$ZABBIX_USER_HOME_DIR/enc/$var_value fi - # Escaping "/" character in parameter value - var_value=${var_value//\//\\/} + # Escaping characters in parameter value + var_value=$(escape_spec_char "$var_value") if [ "$(grep -E "^$var_name=" $config_path)" ] && [ "$is_multiple" != "true" ]; then sed -i -e "/^$var_name=/s/=.*/=$var_value/" "$config_path" @@ -703,15 +720,17 @@ prepare_zbx_web_config() { echo "**** Zabbix related PHP configuration file not found" fi - # Escaping "/" character in parameter value - server_name=${ZBX_SERVER_NAME//\//\\/} + # Escaping characters in parameter value + server_name=$(escape_spec_char "${ZBX_SERVER_NAME}") + server_user=$(escape_spec_char "${DB_SERVER_ZBX_USER}") + server_pass=$(escape_spec_char "${DB_SERVER_ZBX_PASS}") sed -i \ -e "s/{DB_SERVER_HOST}/${DB_SERVER_HOST}/g" \ -e "s/{DB_SERVER_PORT}/${DB_SERVER_PORT}/g" \ -e "s/{DB_SERVER_DBNAME}/${DB_SERVER_DBNAME}/g" \ - -e "s/{DB_SERVER_USER}/${DB_SERVER_ZBX_USER}/g" \ - -e "s/{DB_SERVER_PASS}/${DB_SERVER_ZBX_PASS}/g" \ + -e "s/{DB_SERVER_USER}/$server_user/g" \ + -e "s/{DB_SERVER_PASS}/$server_pass/g" \ -e "s/{ZBX_SERVER_HOST}/${ZBX_SERVER_HOST}/g" \ -e "s/{ZBX_SERVER_PORT}/${ZBX_SERVER_PORT}/g" \ -e "s/{ZBX_SERVER_NAME}/$server_name/g" \ diff --git a/web-nginx-pgsql/ubuntu/docker-entrypoint.sh b/web-nginx-pgsql/ubuntu/docker-entrypoint.sh index 6e11befc2..ee8579425 100755 --- a/web-nginx-pgsql/ubuntu/docker-entrypoint.sh +++ b/web-nginx-pgsql/ubuntu/docker-entrypoint.sh @@ -49,6 +49,23 @@ prepare_system() { fi } +escape_spec_char() { + local var_value=$1 + + var_value="${var_value//\\/\\\\}" + var_value="${var_value//[$'\n']/}" + var_value="${var_value//\//\\/}" + var_value="${var_value//./\\.}" + var_value="${var_value//\*/\\*}" + var_value="${var_value//^/\\^}" + var_value="${var_value//\$/\\\$}" + var_value="${var_value//\&/\\\&}" + var_value="${var_value//\[/\\[}" + var_value="${var_value//\[/\\]}" + + echo $var_value +} + update_config_var() { local config_path=$1 local var_name=$2 @@ -81,8 +98,8 @@ update_config_var() { var_value=$ZABBIX_USER_HOME_DIR/enc/$var_value fi - # Escaping "/" character in parameter value - var_value=${var_value//\//\\/} + # Escaping characters in parameter value + var_value=$(escape_spec_char "$var_value") if [ "$(grep -E "^$var_name=" $config_path)" ] && [ "$is_multiple" != "true" ]; then sed -i -e "/^$var_name=/s/=.*/=$var_value/" "$config_path" @@ -703,15 +720,17 @@ prepare_zbx_web_config() { echo "**** Zabbix related PHP configuration file not found" fi - # Escaping "/" character in parameter value - server_name=${ZBX_SERVER_NAME//\//\\/} + # Escaping characters in parameter value + server_name=$(escape_spec_char "${ZBX_SERVER_NAME}") + server_user=$(escape_spec_char "${DB_SERVER_ZBX_USER}") + server_pass=$(escape_spec_char "${DB_SERVER_ZBX_PASS}") sed -i \ -e "s/{DB_SERVER_HOST}/${DB_SERVER_HOST}/g" \ -e "s/{DB_SERVER_PORT}/${DB_SERVER_PORT}/g" \ -e "s/{DB_SERVER_DBNAME}/${DB_SERVER_DBNAME}/g" \ - -e "s/{DB_SERVER_USER}/${DB_SERVER_ZBX_USER}/g" \ - -e "s/{DB_SERVER_PASS}/${DB_SERVER_ZBX_PASS}/g" \ + -e "s/{DB_SERVER_USER}/$server_user/g" \ + -e "s/{DB_SERVER_PASS}/$server_pass/g" \ -e "s/{ZBX_SERVER_HOST}/${ZBX_SERVER_HOST}/g" \ -e "s/{ZBX_SERVER_PORT}/${ZBX_SERVER_PORT}/g" \ -e "s/{ZBX_SERVER_NAME}/$server_name/g" \