mirror of
https://github.com/serghey-rodin/vesta.git
synced 2026-09-09 01:18:59 +02:00
92 lines
2.7 KiB
Bash
Executable File
92 lines
2.7 KiB
Bash
Executable File
#!/bin/bash
|
|
# info: add new database server
|
|
# options: type host port db_user db_password [max_db] [tpl]
|
|
#
|
|
# The function add new database server to the server pool. It supports local
|
|
# and remote database servers, which is useful for clusters. By adding a host
|
|
# you can set limit for number of databases on a host. Template parameter is
|
|
# used only for PostgreSQL and has an default value "template1". You can read
|
|
# more about templates in official PostgreSQL documentation.
|
|
|
|
|
|
#----------------------------------------------------------#
|
|
# Variable&Function #
|
|
#----------------------------------------------------------#
|
|
|
|
# Argument defenition
|
|
type=$1
|
|
host=$2
|
|
port=$3
|
|
db_user=$4
|
|
db_password=$5
|
|
max_db=${6-300}
|
|
template=${7-template1}
|
|
|
|
|
|
# Importing variables
|
|
source $VESTA/conf/vars.conf
|
|
source $V_CONF/vesta.conf
|
|
source $V_FUNC/shared.func
|
|
source $V_FUNC/db.func
|
|
|
|
|
|
#----------------------------------------------------------#
|
|
# Verifications #
|
|
#----------------------------------------------------------#
|
|
|
|
# Checking arg number
|
|
args_usage='type host port db_user db_password [max_db] [tpl]'
|
|
check_args '5' "$#" "$args_usage"
|
|
|
|
# Checking argument format
|
|
format_validation 'host' 'port' 'db_user' 'db_password' 'max_db'
|
|
format_validation 'template'
|
|
|
|
# Checking db system is enabled
|
|
is_system_enabled 'db'
|
|
|
|
# Checking db type
|
|
is_type_valid 'db' "$type"
|
|
|
|
# Checking host existance
|
|
is_db_host_new
|
|
|
|
# Checking host connection
|
|
case $type in
|
|
mysql) is_mysql_host_alive ;;
|
|
pgsql) is_pgsql_host_alive ;;
|
|
esac
|
|
|
|
|
|
#----------------------------------------------------------#
|
|
# Action #
|
|
#----------------------------------------------------------#
|
|
|
|
# Concatentating db host string
|
|
case $type in
|
|
mysql) new_str="HOST='$host' USER='$db_user' PASSWORD='$db_password'";
|
|
new_str="$new_str PORT='$port' MAX_DB='$max_db' U_SYS_USERS=''";
|
|
new_str="$new_str U_DB_BASES='0' ACTIVE='yes' DATE='$V_DATE'";;
|
|
pgsql) new_str="HOST='$host' USER='$db_user' PASSWORD='$db_password'";
|
|
new_str="$new_str PORT='$port' TPL='$template'";
|
|
new_str="$new_str MAX_DB='$max_db' U_SYS_USERS=''";
|
|
new_str="$new_str U_DB_BASES='0' ACTIVE='yes' DATE='$V_DATE'";;
|
|
esac
|
|
|
|
# Adding host to conf
|
|
echo "$new_str" >> $V_DB/$type.conf
|
|
chmod 650 $V_DB/$type.conf
|
|
|
|
|
|
#----------------------------------------------------------#
|
|
# Vesta #
|
|
#----------------------------------------------------------#
|
|
|
|
# Hidding db pass
|
|
V_EVENT=$(echo $V_EVENT | sed -e "s/$db_password/xxxxxx/g")
|
|
|
|
# Logging
|
|
log_event 'system' "$V_EVENT"
|
|
|
|
exit
|