#!/bin/bash
if [[ "$EUID" -ne 0 ]]; then
	echo "Sorry, you need to run this as root"
	exit
fi



while [[ -z $action ]]; do
    clear
    echo "What do you want to do?"
    echo "   1) Disable a site"
    echo "   2) Enable a previously disabled site"
    echo "   3) Permanently remove a site"
    echo "   4) Permanently remove a site and its local backups"
    echo
    read -p "Action: " action
    until [[ -z "$action" || "$action" =~ ^[1-4]$ ]]; do
    	echo "$action: invalid selection."
    	read -p "Action: " action
    done
done



if [[ $action == "disable" || $action == "1" ]]; then

    while [[ -z $domain ]]; do
        echo
        echo "Please, select which site you want to work with"
        echo
        ls /etc/nginx/sites-enabled/ | grep -v '^default$\|^monit$\|^monitorix$' | nl
        read -p "Select site: " site_number
        number_of_sites=$(ls /etc/nginx/sites-enabled/ | grep -v '^default$\|^monit$\|^monitorix$' | wc -l)
        until [[ "$site_number" =~ ^[0-9]+$ && "$site_number" -le "$number_of_sites" ]]; do
	    	echo "$site_number: invalid selection."
	    	read -p "Select site: " site_number
	    done
        domain=$(ls /etc/nginx/sites-enabled/ | grep -v '^default$\|^monit$\|^monitorix$' | sed -n "$site_number"p)
    done
    mv /etc/nginx/sites-enabled/$domain /etc/nginx/sites-available/$domain
    systemctl restart nginx
    echo
    echo "$domain has been disabled"
    exit
fi



if [[ $action == "enable" || $action == "2" ]]; then

    while [[ -z $domain ]]; do
        echo
        echo "Please, select which site you want to work with"
        echo
        ls /etc/nginx/sites-available/ | grep -v '^default$\|^monit$\|^monitorix$' | nl
        read -p "Select site: " site_number
        number_of_sites=$(ls /etc/nginx/sites-available/ | grep -v '^default$\|^monit$\|^monitorix$' | wc -l)
        until [[ "$site_number" =~ ^[0-9]+$ && "$site_number" -le "$number_of_sites" ]]; do
		    echo "$site_number: invalid selection."
		    read -p "Select site: " site_number
	    done
        domain=$(ls /etc/nginx/sites-available/ | grep -v '^default$\|^monit$\|^monitorix$' | sed -n "$site_number"p)
    done
    mv /etc/nginx/sites-available/$domain /etc/nginx/sites-enabled/$domain
    systemctl restart nginx
    echo
    echo "$domain has been enabled"
    exit
fi



if [[ $action == "remove" || $action == "3" ]]; then

    while [[ -z $domain ]]; do
        echo
        echo "Please, select which site you want to work with"
        echo
        ls /var/www/ | grep -v html | nl
        read -p "Select site: " site_number
        number_of_sites=$(ls /var/www/ | grep -v html | wc -l)
        until [[ "$site_number" =~ ^[0-9]+$ && "$site_number" -le "$number_of_sites" ]]; do
	    	echo "$site_number: invalid selection."
	    	read -p "Select site: " site_number
	    done
        domain=$(ls /var/www/ | grep -v html | sed -n "$site_number"p)
    done
    sed -i "/$domain/d" /etc/wp-backup.conf 2> /dev/null
    mysql_db=$(grep DB_NAME /var/www/$domain/html/wp-config.php | cut -d "'" -f 4)
    mysql_user=$(grep DB_USER /var/www/$domain/html/wp-config.php | cut -d "'" -f 4)
    mariadb <<QUERY
DROP DATABASE $mysql_db;
DROP USER '$mysql_user'@'localhost';
FLUSH PRIVILEGES;
QUERY
    if grep -qs "listen 443" /etc/nginx/sites-enabled/$domain; then
        certbot delete --cert-name $domain --noninteractive
    fi
    user_name=$(echo $domain | cut -c1-32)
    sed -i "/Match User $user_name/,+2 d" /etc/ssh/sshd_config
    systemctl restart sshd
    rm -f /etc/nginx/sites-*/$domain*
    rm -rf /var/www/$domain
    systemctl restart nginx
    php_version=$(ls /etc/php/*/fpm/pool.d/$domain.conf | cut -d '/' -f 4)
    rm -f /etc/php/$php_version/fpm/pool.d/$domain.conf
    systemctl restart php$php_version-fpm
    userdel $user_name
    echo
    echo "$domain has been removed"
    exit
fi



if [[ $action == "remove_full" || $action == "4" ]]; then

    while [[ -z $domain ]]; do
        echo
        echo "Please, select which site you want to work with"
        echo
        ls /var/www/ | grep -v html | nl
        read -p "Select site: " site_number
        number_of_sites=$(ls /var/www/ | grep -v html | wc -l)
        until [[ "$site_number" =~ ^[0-9]+$ && "$site_number" -le "$number_of_sites" ]]; do
	    	echo "$site_number: invalid selection."
	    	read -p "Select site: " site_number
	    done
        domain=$(ls /var/www/ | grep -v html | sed -n "$site_number"p)
    done
    sed -i "/$domain/d" /etc/wp-backup.conf 2> /dev/null
    mysql_db=$(grep DB_NAME /var/www/$domain/html/wp-config.php | cut -d "'" -f 4)
    mysql_user=$(grep DB_USER /var/www/$domain/html/wp-config.php | cut -d "'" -f 4)
    mariadb <<QUERY
DROP DATABASE $mysql_db;
DROP USER '$mysql_user'@'localhost';
FLUSH PRIVILEGES;
QUERY
    if grep -qs "listen 443" /etc/nginx/sites-enabled/$domain; then
        certbot delete --cert-name $domain --noninteractive
    fi
    user_name=$(echo $domain | cut -c1-32)
    sed -i "/Match User $user_name/,+2 d" /etc/ssh/sshd_config
    systemctl restart sshd
    rm -f /etc/nginx/sites-*/$domain*
    rm -rf /var/www/$domain
    systemctl restart nginx
    php_version=$(ls /etc/php/*/fpm/pool.d/$domain.conf | cut -d '/' -f 4)
    rm -f /etc/php/$php_version/fpm/pool.d/$domain.conf
    systemctl restart php$php_version-fpm
    userdel $user_name
    rm -rf ~/.wp-backup/$domain
    echo
    echo "$domain and its local backups have been removed"
    exit
fi
