|
|
@ -0,0 +1,51 @@ |
|
|
|
#!/bin/bash |
|
|
|
|
|
|
|
. lib/common |
|
|
|
|
|
|
|
set -e |
|
|
|
|
|
|
|
PASSWORD="$(relation-get password)" |
|
|
|
USER="$(relation-get user)" |
|
|
|
DBNAME="$(relation-get dbname)" |
|
|
|
|
|
|
|
|
|
|
|
## This check adds purely arbitrary limits to what could be a password |
|
|
|
## if we need to open that more, just consider the next script where we'll |
|
|
|
## need to write in a PHP structure, or in YAML structure. |
|
|
|
|
|
|
|
## Note that here, "[]" chars are not accepted just because it doesn't seem evident |
|
|
|
## to test for those in bash. |
|
|
|
if ! [[ "$PASSWORD" =~ ^[a-zA-Z0-9~\`\&+=@\#^\*/\\_%\$:\;\!?.,\<\>{}()\"\'|-]*$ ]]; then |
|
|
|
err "Invalid password chosen for mysql database." |
|
|
|
exit 1 |
|
|
|
fi |
|
|
|
|
|
|
|
## if config is not existent |
|
|
|
if [ -e "$CONFIGFILE" ] && grep "^ 'dbuser' => '" "$CONFIGFILE" >/dev/null; then |
|
|
|
|
|
|
|
## 'occ' can't be used as it will try to connect to mysql before running and |
|
|
|
## will fail if user/password is not correct |
|
|
|
|
|
|
|
## We need to get through bash, and sed interpretation, then PHP single quoted strings. |
|
|
|
quoted_user="${USER//\\/\\\\\\\\\\}" |
|
|
|
quoted_user="${quoted_user//\'/\\\\\'}" |
|
|
|
quoted_password="${PASSWORD//\\/\\\\\\\\\\}" |
|
|
|
quoted_password="${quoted_password//\'/\\\\\'}" |
|
|
|
sed -ri "s/^( 'dbuser' => ')(.*)(',)$/\1${quoted_user}\3/g;\ |
|
|
|
s/^( 'dbpassword' => ')(.*)(',)$/\1${quoted_password}\3/g;" "$CONFIGFILE" |
|
|
|
else |
|
|
|
|
|
|
|
## These variable are not used by current docker image after first install |
|
|
|
|
|
|
|
config-add "\ |
|
|
|
services: |
|
|
|
$MASTER_BASE_SERVICE_NAME: |
|
|
|
environment: |
|
|
|
MYSQL_HOST: $MASTER_TARGET_SERVICE_NAME |
|
|
|
MYSQL_DATABASE: $DBNAME |
|
|
|
MYSQL_PASSWORD: $PASSWORD |
|
|
|
MYSQL_USER: $USER |
|
|
|
" |
|
|
|
fi |
|
|
|
|
|
|
|
info "Configured $SERVICE_NAME code for $TARGET_SERVICE_NAME access." |