validate db user
Now we validate DB User in the same way as dbname to avoid reserved words or special characters.
This commit is contained in:
parent
cdc81de26d
commit
59b9eb15b9
132
lib/sites
132
lib/sites
|
@ -58,6 +58,7 @@ dbword_check() {
|
||||||
|
|
||||||
|
|
||||||
wpinstall() {
|
wpinstall() {
|
||||||
|
local ROOT_PASS=$( echo $(conf_read mysql-root) | openssl enc -d -a -salt )
|
||||||
local AUTOGENPASS_WPDB=`pwgen -s -1`
|
local AUTOGENPASS_WPDB=`pwgen -s -1`
|
||||||
local dom=${domain//./_}
|
local dom=${domain//./_}
|
||||||
local setupmysql="y"
|
local setupmysql="y"
|
||||||
|
@ -109,7 +110,7 @@ wpinstall() {
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Generate and auto-fill wp-config.php and also create database
|
# Generate and auto-fill wp-config.php and also create database
|
||||||
if [[ "$setupmysql" == y || "$setupmysql" == Y || "$setupwp" == y || "$setupwp" == Y ]] ; then
|
if [[ $setupmysql == [yY] || $setupwp == [yY] ]] ; then
|
||||||
local done="0"
|
local done="0"
|
||||||
|
|
||||||
while [[ $done != "1" ]]
|
while [[ $done != "1" ]]
|
||||||
|
@ -147,17 +148,17 @@ wpinstall() {
|
||||||
local dbport=$(echo "$dbhost" | cut -f 2 -d ':')
|
local dbport=$(echo "$dbhost" | cut -f 2 -d ':')
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# ************* Ask for DB Name and validate data *************** #
|
||||||
dom=$(dbword_check $dom)
|
dom=$(dbword_check $dom)
|
||||||
[[ $wp == [23] ]] || read -p "Database Name [$dom]:" dbname
|
[[ $wp == [23] ]] || read -p "Database Name [$dom]:" dbname
|
||||||
dbname=${dbname:-$dom}
|
dbname=${dbname:-$dom}
|
||||||
|
|
||||||
# Check for duplicate database names, if already exists ask for another dbname to create the new db
|
# Check for duplicate database names, if already exists ask for another dbname to create the new db
|
||||||
if [[ "$setupmysql" == y || "$setupmysql" == Y ]]; then
|
if [[ "$setupmysql" == [yY] ]]; then
|
||||||
local newdbname="$dbname"
|
local newdbname="$dbname"
|
||||||
while [[ $dbname == $newdbname && $dbreuse != y && $dbreuse != Y ]]; do
|
while [[ $dbname == $newdbname && $dbreuse != [yY] ]]; do
|
||||||
# Chech connection to DB first
|
# Chech connection to DB first
|
||||||
if [[ $dbhost == "localhost" ]]; then
|
if [[ $dbhost == "localhost" ]]; then
|
||||||
local ROOT_PASS=$( echo $(conf_read mysql-root) | openssl enc -d -a -salt )
|
|
||||||
sudo mysql --connect-timeout=10 --user=root -p$ROOT_PASS -e "quit"
|
sudo mysql --connect-timeout=10 --user=root -p$ROOT_PASS -e "quit"
|
||||||
if [[ $? != "0" ]]; then
|
if [[ $? != "0" ]]; then
|
||||||
done="0"
|
done="0"
|
||||||
|
@ -192,9 +193,7 @@ wpinstall() {
|
||||||
echo "Do you want to use this DB in your new site? [y/N]"
|
echo "Do you want to use this DB in your new site? [y/N]"
|
||||||
while read -r -n 1 -s dbreuse; do
|
while read -r -n 1 -s dbreuse; do
|
||||||
local dbreuse=${dbreuse:-n}
|
local dbreuse=${dbreuse:-n}
|
||||||
if [[ $dbreuse = [YyNn] ]]; then
|
[[ $dbreuse == [YyNn] ]] && break
|
||||||
break
|
|
||||||
fi
|
|
||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
if [[ $dbname != $(dbword_check $dbname) ]]; then
|
if [[ $dbname != $(dbword_check $dbname) ]]; then
|
||||||
|
@ -202,35 +201,97 @@ wpinstall() {
|
||||||
dbreuse="n"
|
dbreuse="n"
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ $dbreuse != y && $dbreuse != Y ]]; then
|
if [[ $dbreuse != [yY] ]]; then
|
||||||
echo ""
|
echo ""
|
||||||
read -p "Please enter a new DB_NAME for your Database: " newdbname
|
read -p "Please enter a new DB_NAME for your Database: " newdbname
|
||||||
if [[ -z "$newdbname" ]]; then
|
[[ -z "$newdbname" ]] && newdbname="$dbname"
|
||||||
newdbname="$dbname"
|
|
||||||
fi
|
|
||||||
dbname="$newdbname"
|
dbname="$newdbname"
|
||||||
elif [[ $dbreuse == y || $dbreuse == Y ]]; then
|
elif [[ $dbreuse == [yY] ]]; then
|
||||||
# If you want to use the DB that already exist, abort DB creation.
|
# If you want to use the DB that already exist, abort DB creation.
|
||||||
setupmysql="n"
|
setupmysql="n"
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
# ************* Ask for DB User and validate data *************** #
|
||||||
|
[[ $wp == [23] ]] || read -p "Database User [$dom]:" dbuser
|
||||||
|
dbuser=${dbuser:-$dom}
|
||||||
|
|
||||||
|
# Check for duplicate database users, if already exists ask for another dbuser to create the new user
|
||||||
|
if [[ "$setupmysql" == [yY] ]]; then
|
||||||
|
local newdbuser="$dbuser"
|
||||||
|
while [[ $dbuser == $newdbuser && $dbureuse != [yY] ]]; do
|
||||||
|
# Chech connection to DB first
|
||||||
|
if [[ $dbhost == "localhost" ]]; then
|
||||||
|
sudo mysql --connect-timeout=10 --user=root -p$ROOT_PASS -e "quit"
|
||||||
|
if [[ $? != "0" ]]; then
|
||||||
|
done="0"
|
||||||
|
echo "${red}============================================"
|
||||||
|
echo " [Error]: Database conection failed."
|
||||||
|
echo "============================================${blu}"
|
||||||
|
echo ""
|
||||||
|
continue 2;
|
||||||
|
fi
|
||||||
|
else
|
||||||
|
sudo mysql --connect-timeout=10 -h "$dburl" -P "$dbport" -u"$dburoot" -p"$dbproot" -e "quit"
|
||||||
|
if [[ $? != "0" ]]; then
|
||||||
|
done="0"
|
||||||
|
echo "${red}============================================"
|
||||||
|
echo " [Error]: Database conection failed."
|
||||||
|
echo "============================================${blu}"
|
||||||
|
echo ""
|
||||||
|
continue 2;
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
if [[ $dbhost == "localhost" ]]; then
|
||||||
|
# https://stackoverflow.com/questions/7364709/bash-script-check-if-mysql-database-exists-perform-action-based-on-result
|
||||||
|
local newdbuser=$(sudo mysql --connect-timeout=10 --user=root -p$ROOT_PASS -e "SELECT User FROM mysql.user;" | grep -ow $dbuser)
|
||||||
|
else
|
||||||
|
local newdbuser=$(sudo mysql --connect-timeout=10 -h "$dburl" -P "$dbport" -u"$dburoot" -p"$dbproot" -e "SELECT User FROM mysql.user;" | grep -ow $dbuser)
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ $newdbuser == $dbuser || $dbuser != $(dbword_check $dbuser) ]]; then
|
||||||
|
echo ""
|
||||||
|
if [[ $newdbuser == $dbuser ]]; then
|
||||||
|
echo "${red}User $dbuser already exists!${blu}"
|
||||||
|
echo "Do you want to use this DB User for your new site? [y/N]"
|
||||||
|
while read -r -n 1 -s dbureuse; do
|
||||||
|
local dbureuse=${dbureuse:-n}
|
||||||
|
[[ $dbureuse == [YyNn] ]] && break
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
if [[ $dbuser != $(dbword_check $dbuser) ]]; then
|
||||||
|
echo "${red}The DB User can not be a reserved word or should only contain allowed characters!${blu}"
|
||||||
|
dbureuse="n"
|
||||||
|
fi
|
||||||
|
|
||||||
|
if [[ $dbureuse != [yY] ]]; then
|
||||||
|
echo ""
|
||||||
|
read -p "Please enter a new DB_User for your Database: " newdbuser
|
||||||
|
[[ -z "$newdbuser" ]] && newdbuser="$dbuser"
|
||||||
|
dbuser="$newdbuser"
|
||||||
|
elif [[ $dbureuse == [yY] ]]; then
|
||||||
|
# If you want to use the User that already exist, abort DB creation.
|
||||||
|
setupmysql="n"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
done
|
||||||
|
fi
|
||||||
|
|
||||||
if [[ $wp != [23] ]]; then
|
if [[ $wp != [23] ]]; then
|
||||||
read -p "Database User [$dom]:" dbuser
|
|
||||||
read -p "Database Password [$AUTOGENPASS_WPDB]:" dbpass
|
read -p "Database Password [$AUTOGENPASS_WPDB]:" dbpass
|
||||||
# Not ask for wp_prefix when wp=0 (mysql only site)
|
# Not ask for wp_prefix when wp=0 (mysql only site)
|
||||||
[[ $wp == 0 ]] || read -p "Database Prefix [wp_]:" dbpref
|
[[ $wp == 0 ]] || read -p "Database Prefix [wp_]:" dbpref
|
||||||
echo "${end}"
|
echo "${end}"
|
||||||
|
|
||||||
# If empty, assign defalut values
|
# If empty, assign defalut values
|
||||||
dbuser=${dbuser:-$dom}
|
|
||||||
dbpass=${dbpass:-$AUTOGENPASS_WPDB}
|
dbpass=${dbpass:-$AUTOGENPASS_WPDB}
|
||||||
dbpref=${dbpref:-wp_}
|
dbpref=${dbpref:-wp_}
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# DB Creation
|
# DB Creation
|
||||||
if [[ "$setupmysql" == y || "$setupmysql" == Y ]] ; then
|
if [[ "$setupmysql" == [yY] ]] ; then
|
||||||
if [[ $dbhost == "localhost" ]]; then
|
if [[ $dbhost == "localhost" ]]; then
|
||||||
local dbsetup="CREATE DATABASE $dbname;GRANT ALL PRIVILEGES ON $dbname.* TO $dbuser@$dbhost IDENTIFIED BY '$dbpass';FLUSH PRIVILEGES;"
|
local dbsetup="CREATE DATABASE $dbname;GRANT ALL PRIVILEGES ON $dbname.* TO $dbuser@$dbhost IDENTIFIED BY '$dbpass';FLUSH PRIVILEGES;"
|
||||||
sudo mysql --connect-timeout=10 --user=root -p$ROOT_PASS -e "$dbsetup"
|
sudo mysql --connect-timeout=10 --user=root -p$ROOT_PASS -e "$dbsetup"
|
||||||
|
@ -264,13 +325,9 @@ _EOF_
|
||||||
echo "${blu} Retry [Y/n]?"
|
echo "${blu} Retry [Y/n]?"
|
||||||
while read -r -n 1 -s done; do
|
while read -r -n 1 -s done; do
|
||||||
done=${done:-y}
|
done=${done:-y}
|
||||||
if [[ $done = [YyNn] ]]; then
|
[[ $done = [YyNn] ]] && break
|
||||||
break
|
|
||||||
fi
|
|
||||||
done
|
done
|
||||||
if [[ $done == n || $done == N ]]; then
|
[[ $done == [nN] ]] && done="1"
|
||||||
done="1"
|
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
|
@ -278,7 +335,7 @@ _EOF_
|
||||||
|
|
||||||
|
|
||||||
#WP-Config.php auto-setup
|
#WP-Config.php auto-setup
|
||||||
if [[ "$setupwp" == y || "$setupwp" == Y ]] ; then
|
if [[ $setupwp == [yY] ]] ; then
|
||||||
# Generate random salt keys
|
# Generate random salt keys
|
||||||
local SALT_AUTHK=`pwgen -s -1 64`
|
local SALT_AUTHK=`pwgen -s -1 64`
|
||||||
local SALT_SECUR=`pwgen -s -1 64`
|
local SALT_SECUR=`pwgen -s -1 64`
|
||||||
|
@ -334,15 +391,11 @@ deletesite() {
|
||||||
echo "${blu}Delete Database [Y/n]?${end}"
|
echo "${blu}Delete Database [Y/n]?${end}"
|
||||||
while read -r -n 1 -s dbdel; do
|
while read -r -n 1 -s dbdel; do
|
||||||
local dbdel=${dbdel:-y}
|
local dbdel=${dbdel:-y}
|
||||||
if [[ $dbdel = [YyNn] ]]; then
|
[[ $dbdel = [YyNn] ]] && break
|
||||||
break
|
|
||||||
fi
|
|
||||||
done
|
done
|
||||||
fi
|
fi
|
||||||
|
|
||||||
if [[ "$dbdel" == "y" || "$dbdel" == "Y" ]]; then
|
[[ $dbdel == [yY] ]] && db_delete $domain
|
||||||
db_delete $domain
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Delete site files
|
# Delete site files
|
||||||
sudo rm /etc/nginx/sites-available/$domain
|
sudo rm /etc/nginx/sites-available/$domain
|
||||||
|
@ -369,9 +422,7 @@ createsite() {
|
||||||
sudo cp /opt/webinoly/templates/template-site-php /etc/nginx/sites-available/$domain
|
sudo cp /opt/webinoly/templates/template-site-php /etc/nginx/sites-available/$domain
|
||||||
|
|
||||||
# Remove www support for subdomains - only main domain will support both www and non-www.
|
# Remove www support for subdomains - only main domain will support both www and non-www.
|
||||||
if [[ $subdomflag == 1 ]]; then
|
[[ $subdomflag == 1 ]] && sudo sed -i "s/ www.domain.com;/;/g" /etc/nginx/sites-available/$domain
|
||||||
sudo sed -i "s/ www.domain.com;/;/g" /etc/nginx/sites-available/$domain
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Nginx conf file for the new site (-php conf is default)
|
# Nginx conf file for the new site (-php conf is default)
|
||||||
sudo sed -i "s/domain.com/$domain/g" /etc/nginx/sites-available/$domain
|
sudo sed -i "s/domain.com/$domain/g" /etc/nginx/sites-available/$domain
|
||||||
|
@ -383,33 +434,25 @@ createsite() {
|
||||||
# Create data folder for new site
|
# Create data folder for new site
|
||||||
if [[ ! -d /var/www/$domain/htdocs || ! -d /var/www/$domain ]]; then
|
if [[ ! -d /var/www/$domain/htdocs || ! -d /var/www/$domain ]]; then
|
||||||
sudo mkdir -p /var/www/$domain/htdocs
|
sudo mkdir -p /var/www/$domain/htdocs
|
||||||
if [[ "$wp" == [123] ]]; then
|
[[ "$wp" == [123] ]] && wpinstall
|
||||||
wpinstall
|
|
||||||
fi
|
|
||||||
else
|
else
|
||||||
echo "${blu}"
|
echo "${blu}"
|
||||||
echo " We found a folder with $domain site data, do you want to use it [Y/n]? "
|
echo " We found a folder with $domain site data, do you want to use it [Y/n]? "
|
||||||
while read -r -n 1 -s wwwexist; do
|
while read -r -n 1 -s wwwexist; do
|
||||||
wwwexist=${wwwexist:-y}
|
wwwexist=${wwwexist:-y}
|
||||||
if [[ $wwwexist = [YyNn] ]]; then
|
[[ $wwwexist == [YyNn] ]] && break
|
||||||
break
|
|
||||||
fi
|
|
||||||
done
|
done
|
||||||
echo ""
|
echo ""
|
||||||
|
|
||||||
if [[ $wwwexist == n || $wwwexist == N ]]; then
|
if [[ $wwwexist == [nN] ]]; then
|
||||||
sudo rm -rf /var/www/$domain/htdocs
|
sudo rm -rf /var/www/$domain/htdocs
|
||||||
sudo mkdir -p /var/www/$domain/htdocs
|
sudo mkdir -p /var/www/$domain/htdocs
|
||||||
if [[ "$wp" == [123] ]]; then
|
[[ "$wp" == [123] ]] && wpinstall
|
||||||
wpinstall
|
|
||||||
fi
|
|
||||||
fi
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
sudo chown -R www-data:www-data /var/www
|
sudo chown -R www-data:www-data /var/www
|
||||||
if [[ $(conf_read login-www-data) == "true" ]]; then
|
[[ $(conf_read login-www-data) == "true" ]] && sudo chown root:root /var/www
|
||||||
sudo chown root:root /var/www
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Activate FastCgi cache
|
# Activate FastCgi cache
|
||||||
if [[ "$cache" == "-cache" && "$wp" == [123] ]]; then
|
if [[ "$cache" == "-cache" && "$wp" == [123] ]]; then
|
||||||
|
@ -419,4 +462,3 @@ createsite() {
|
||||||
|
|
||||||
echo "${gre}Site $domain has been successfully created!${end}"
|
echo "${gre}Site $domain has been successfully created!${end}"
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue