From cc6296dbc5f4d6bfffbdfc58c7adb4aefedd1de3 Mon Sep 17 00:00:00 2001 From: Cold-Egg Date: Fri, 27 Dec 2019 17:09:35 -0500 Subject: [PATCH] script update --- bin/addDatabaseAndUser.sh | 24 ------ bin/database.sh | 115 ++++++++++++++++++++++++++ bin/domain.sh | 4 +- bin/{downloadWP.sh => download-wp.sh} | 0 4 files changed, 117 insertions(+), 26 deletions(-) delete mode 100755 bin/addDatabaseAndUser.sh create mode 100644 bin/database.sh rename bin/{downloadWP.sh => download-wp.sh} (100%) mode change 100755 => 100644 diff --git a/bin/addDatabaseAndUser.sh b/bin/addDatabaseAndUser.sh deleted file mode 100755 index 1d5dc05..0000000 --- a/bin/addDatabaseAndUser.sh +++ /dev/null @@ -1,24 +0,0 @@ -#!/usr/bin/env bash -# create random password - -if [ -z "$1" ] -then - echo "Missing arguments, exit" - exit 0 -fi - -PASSWDDBnoQoutes="$(openssl rand -base64 12)" -PASSWDDB="'$PASSWDDBnoQoutes'" -SITE=$1 - -MAINDB="${SITE}_db" -echo Database: $MAINDB -echo Username: $MAINDB -echo Password: $PASSWDDBnoQoutes -any="'%'" - -docker-compose exec mysql su -c 'apk add mysql-client' -docker-compose exec mysql su -c 'mysql -uroot -ppassword -e "CREATE DATABASE '${MAINDB}' /*\!40100 DEFAULT CHARACTER SET utf8 */;"' -docker-compose exec mysql su -c 'mysql -uroot -ppassword -e "CREATE USER '${MAINDB}'@${any} IDENTIFIED BY '${PASSWDDB}';"' -docker-compose exec mysql su -c 'mysql -uroot -ppassword -e "GRANT ALL PRIVILEGES ON '${MAINDB}'.* TO '${MAINDB}'@${any};"' -docker-compose exec mysql su -c "mysql -uroot -ppassword -e 'FLUSH PRIVILEGES;'" diff --git a/bin/database.sh b/bin/database.sh new file mode 100644 index 0000000..8ae8222 --- /dev/null +++ b/bin/database.sh @@ -0,0 +1,115 @@ +#!/usr/bin/env bash +source .env +echo "MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}" +DOMAIN='' +SQL_DB='' +SQL_USER='' +SQL_PASS='' +ANY='%' + +help_message(){ + echo 'Command [-domain xxx]' + echo 'Command [-user xxx] [-password xxx] [-database xxx]' + echo 'Example 1: database.sh -domain example.com' + echo 'Example 2: domain.sh -user USERNAME -password PASSWORD -database DATABASENAME' + echo 'Script will auto assign database & username by the domain and random password for example 1' +} + +check_input(){ + if [ -z "${1}" ]; then + help_message + exit 1 + fi +} + +specify_name(){ + check_input ${SQL_USER} + check_input ${SQL_PASS} + check_input ${SQL_DB} +} + +auto_name(){ + SQL_DB=${TRANSNAME} + SQL_USER=${TRANSNAME} + SQL_PASS=${RANDOM_PASS} +} + +gen_pass(){ + RANDOM_PASS="$(openssl rand -base64 12)" +} + +trans_name(){ + TRANSNAME=$(echo ${1} | tr -d '.&&-') +} + +display_credential(){ + echo Database: ${SQL_DB} + echo Username: ${SQL_USER} + echo Password: ${SQL_PASS} + exit 0 +} + +add_sql_client(){ + docker-compose exec mysql su -c 'apk add mysql-client' +} + +check_db_access(){ + docker-compose exec mysql su -c "mysql -uroot -p${MYSQL_ROOT_PASSWORD} -e 'status'" + if [ ${?} != 0 ]; then + echo "DB access failed, please check!" + exit 1 + fi +} + +db_setup(){ + docker-compose exec mysql su -c "mysql -uroot -p${MYSQL_ROOT_PASSWORD} \ + -e 'CREATE DATABASE ${SQL_DB};' \ + -e 'GRANT ALL PRIVILEGES ON ${SQL_DB}.* TO ${SQL_USER}@${ANY} IDENTIFIED BY ${SQL_PASS};' \ + -e 'FLUSH PRIVILEGES;'" +} + +auto_setup_main(){ + check_input ${DOMAIN} + gen_pass + trans_name ${DOMAIN} + auto_name + db_setup + display_credential +} + +specify_setup_main(){ + specify_name + db_setup + display_credential +} + +check_input ${1} +while [ ! -z "${1}" ]; do + case ${1} in + -[hH] | -help | --help) + help_message + ;; + -d | -D | -domain) shift + DOMAIN="${1}" + ;; + -u | -U | -user) shift + SQL_USER="${1}" + ;; + -p | -P | -password) shift + SQL_PASS="${1}" + ;; + -db | -DB | -database) shift + SQL_PDB="${1}" + ;; + *) + help_message + ;; + esac + shift +done + +if [ ${DOMAIN} = '' ]; then + specify_setup_main +else + auto_setup_main +fi diff --git a/bin/domain.sh b/bin/domain.sh index 3070e25..f38c5bc 100644 --- a/bin/domain.sh +++ b/bin/domain.sh @@ -3,8 +3,8 @@ CONT_NAME='litespeed' help_message(){ echo 'Command [-add|-del] [domain_name]' - echo 'Example: domain.sh -add example.com' - echo 'Example: domain.sh -del example.com' + echo 'Example 1: domain.sh -add example.com' + echo 'Example 2: domain.sh -del example.com' } check_input(){ diff --git a/bin/downloadWP.sh b/bin/download-wp.sh old mode 100755 new mode 100644 similarity index 100% rename from bin/downloadWP.sh rename to bin/download-wp.sh