#!/usr/bin/env bash
source .env
APP_NAME='wordpress'
CONT_NAME='litespeed'
DOC_FD=''

echow(){
    FLAG=${1}
    shift
    echo -e "\033[1m${EPACE}${FLAG}\033[0m${@}"
}

help_message(){
    case ${1} in
        "1")    
            echow "Script will get 'DOMAIN' and 'database' info from .env file, then auto setup virtual host and the wordpress site for you."
            exit 0
        ;;
        "2")
            echow 'Service finished, enjoy your accelarated LiteSpeed server!'
        ;;
    esac       
}

domain_filter(){
    if [ ! -n "${DOMAIN}" ]; then
        echo "Parameters not supplied, please check!"
        exit 1
    fi
    DOMAIN="${1}"
    DOMAIN="${DOMAIN#http://}"
    DOMAIN="${DOMAIN#https://}"
    DOMAIN="${DOMAIN#ftp://}"
    DOMAIN="${DOMAIN#scp://}"
    DOMAIN="${DOMAIN#scp://}"
    DOMAIN="${DOMAIN#sftp://}"
    DOMAIN=${DOMAIN%%/*}
}

gen_root_fd(){
    DOC_FD="./sites/${1}/"
    if [ -d "./sites/${1}" ]; then
        echo -e "[O] The root folder \033[32m${DOC_FD}\033[0m exist."
    else
        echo "Creating - document root."
        bash bin/domain.sh -add ${1}
        echo "Finished - document root."
    fi
}

create_db(){
    if [ ! -n "${MYSQL_DATABASE}" ] || [ ! -n "${MYSQL_USER}" ] || [ ! -n "${MYSQL_PASSWORD}" ]; then
        echo "Parameters not supplied, please check!"
        exit 1
    else    
        bash bin/database.sh -D ${1} -U ${MYSQL_USER} -P ${MYSQL_PASSWORD} -DB ${MYSQL_DATABASE}
    fi    
}    

store_credential(){
    if [ -f ${DOC_FD}/.db_pass ]; then
        echo '[O] db file exist!'
    else
        echo 'Storing database parameter'
        cat > "${DOC_FD}/.db_pass" << EOT
"Database":"${MYSQL_DATABASE}"
"Username":"${MYSQL_USER}"
"Password":"$(echo ${MYSQL_PASSWORD} | tr -d "'")"
EOT
    fi
}

app_download(){
    docker compose exec -T ${CONT_NAME} su -c "appinstallctl.sh --app ${1} --domain ${2}"
}

lsws_restart(){
    bash bin/webadmin.sh -r
}

main(){
    domain_filter ${DOMAIN}
    gen_root_fd ${DOMAIN}
    create_db ${DOMAIN}
    store_credential
    app_download ${APP_NAME} ${DOMAIN}
    lsws_restart
    help_message 2
}

while [ ! -z "${1}" ]; do
    case ${1} in
        -[hH] | -help | --help)
            help_message 1
            ;;
        *) 
            help_message 1
            ;;              
    esac
    shift
done
main