Serghey Rodin 11 лет назад
Родитель
Сommit
1a1d333ea4
2 измененных файлов с 186 добавлено и 354 удалено
  1. 26 0
      bin/v-add-database-host
  2. 160 354
      func/db.sh

+ 26 - 0
bin/v-add-database-host

@@ -31,6 +31,32 @@ source $VESTA/conf/vesta.conf
 A4='******'
 A4='******'
 EVENT="$DATE $TIME $SCRIPT $A1 $A2 $A3 $A4 $A5 $A6 $A7 $A8 $A9"
 EVENT="$DATE $TIME $SCRIPT $A1 $A2 $A3 $A4 $A5 $A6 $A7 $A8 $A9"
 
 
+is_mysql_host_alive() {
+    mycnf=$(mktemp)
+    echo "[client]">$mycnf
+    echo "host='$HOST'" >> $mycnf
+    echo "user='$USER'" >> $mycnf
+    echo "password='$PASSWORD'" >> $mycnf
+    chmod 600 $mycnf
+    mysql --defaults-file=$mycnf -e 'SELECT VERSION()' >/dev/null 2>&1
+    rm $mycnf
+    if [ '0' -ne "$?" ]; then
+        echo "Error: MySQL connection to $host failed"
+        log_event "$E_CONNECT" "$EVENT"
+        exit $E_CONNECT
+    fi
+}
+
+is_pgsql_host_alive() {
+    export PGPASSWORD="$dbpass"
+    psql -h $host -U $dbuser -c "SELECT VERSION()" > /dev/null 2>&1
+    if [ '0' -ne "$?" ]; then
+        echo "Error: PostgreSQL connection to $host failed"
+        log_event "$E_CONNECT" "$EVENT"
+        exit $E_CONNECT
+    fi
+}
+
 
 
 #----------------------------------------------------------#
 #----------------------------------------------------------#
 #                    Verifications                         #
 #                    Verifications                         #

+ 160 - 354
func/db.sh

@@ -1,3 +1,103 @@
+# MySQL
+mysql_connect() {
+    host_str=$(grep "HOST='$1'" $VESTA/conf/mysql.conf)
+    eval $host_str
+    if [ -z $HOST ] || [ -z $USER ] || [ -z $PASSWORD ]; then
+        echo "Error: mysql config parsing failed"
+        log_event "$E_PARSING" "$EVENT"
+        exit $E_PARSING
+    fi
+
+    mycnf="$VESTA/conf/.mysql.$HOST"
+    if [ ! -e "$mycnf" ]; then
+        echo "[client]">$mycnf
+        echo "host='$HOST'" >> $mycnf
+        echo "user='$USER'" >> $mycnf
+        echo "password='$PASSWORD'" >> $mycnf
+        chmod 600 $mycnf
+    else
+        mypw=$(grep password $mycnf|cut -f 2 -d \')
+        if [ "$mypw" != "$PASSWORD" ]; then
+            echo "[client]">$mycnf
+            echo "host='$HOST'" >> $mycnf
+            echo "user='$USER'" >> $mycnf
+            echo "password='$PASSWORD'" >> $mycnf
+            chmod 660 $mycnf
+        fi
+    fi
+    err="/tmp/e.mysql"
+    mysql --defaults-file=$mycnf -e 'SELECT VERSION()' >/dev/null 2> $err
+    if [ '0' -ne "$?" ]; then
+        if [ "$notify" != 'no' ]; then
+            echo -e "Can't connect to MySQL $HOST\n$(cat $err)" |\
+                $send_mail -s "$subj" $email
+        fi
+        echo "Error: Connection to $HOST failed"
+        log_event  "$E_CONNECT" "$EVENT"
+        exit $E_CONNECT
+    fi
+}
+
+mysql_query() {
+    mysql --defaults-file=$mycnf -e "$1" 2>/dev/null
+}
+
+mysql_dump() {
+    err="/tmp/e.mysql"
+    mysqldump --defaults-file=$mycnf --single-transaction -r $1 $2 2> $err
+    if [ '0' -ne "$?" ]; then
+        rm -rf $tmpdir
+        if [ "$notify" != 'no' ]; then
+            echo -e "Can't dump database $database\n$(cat $err)" |\
+                $send_mail -s "$subj" $email
+        fi
+        echo "Error: dump $database failed"
+        log_event  "$E_DB" "$EVENT"
+        exit $E_DB
+    fi
+}
+
+# PostgreSQL
+psql_connect() {
+    host_str=$(grep "HOST='$1'" $VESTA/conf/pgsql.conf)
+    eval $host_str
+    export PGPASSWORD="$PASSWORD"
+    if [ -z $HOST ] || [ -z $USER ] || [ -z $PASSWORD ] || [ -z $TPL ]; then
+        echo "Error: postgresql config parsing failed"
+        log_event "$E_PARSING" "$EVENT"
+        exit $E_PARSING
+    fi
+
+    psql -h $HOST -U $USER -c "SELECT VERSION()" > /dev/null 2>/tmp/e.psql
+    if [ '0' -ne "$?" ]; then
+        if [ "$notify" != 'no' ]; then
+            echo -e "Can't connect to PostgreSQL $HOST\n$(cat /tmp/e.psql)" |\
+                $send_mail -s "$subj" $email
+        fi
+        echo "Error: Connection to $HOST failed"
+        log_event  "$E_CONNECT" "$EVENT"
+        exit $E_CONNECT
+    fi
+}
+
+psql_query() {
+    psql -h $HOST -U $USER -c "$1" 2>/dev/null
+}
+
+psql_dump() {
+    pg_dump -h $HOST -U $USER -c --inserts -O -x -i -f $1 $2 2>/tmp/e.psql
+    if [ '0' -ne "$?" ]; then
+        rm -rf $tmpdir
+        if [ "$notify" != 'no' ]; then
+            echo -e "Can't dump database $database\n$(cat /tmp/e.psql)" |\
+                $send_mail -s "$subj" $email
+        fi
+        echo "Error: dump $database failed"
+        log_event  "$E_DB" "$EVENT"
+        exit $E_DB
+    fi
+}
+
 # Get database host
 # Get database host
 get_next_dbhost() {
 get_next_dbhost() {
     if [ -z "$host" ] || [ "$host" == 'default' ]; then
     if [ -z "$host" ] || [ "$host" == 'default' ]; then
@@ -86,59 +186,30 @@ decrease_dbhost_values() {
 
 
 # Create MySQL database
 # Create MySQL database
 add_mysql_database() {
 add_mysql_database() {
-    host_str=$(grep "HOST='$host'" $VESTA/conf/mysql.conf)
-    eval $host_str
-    if [ -z $HOST ] || [ -z $USER ] || [ -z $PASSWORD ]; then
-        echo "Error: mysql config parsing failed"
-        log_event "$E_PARSING" "$EVENT"
-        exit $E_PARSING
-    fi
-
-    query='SELECT VERSION()'
-    mysql -h $HOST -u $USER -p$PASSWORD -e "$query" > /dev/null 2>&1
-    if [ '0' -ne "$?" ]; then
-        echo "Error: Connection failed"
-        log_event  "$E_CONNECT" "$EVENT"
-        exit $E_CONNECT
-    fi
+    mysql_connect $host
 
 
     query="CREATE DATABASE \`$database\` CHARACTER SET $charset"
     query="CREATE DATABASE \`$database\` CHARACTER SET $charset"
-    mysql -h $HOST -u $USER -p$PASSWORD -e "$query" > /dev/null 2>&1
+    mysql_query "$query" > /dev/null
 
 
     query="GRANT ALL ON \`$database\`.* TO \`$dbuser\`@\`%\`
     query="GRANT ALL ON \`$database\`.* TO \`$dbuser\`@\`%\`
         IDENTIFIED BY '$dbpass'"
         IDENTIFIED BY '$dbpass'"
-    mysql -h $HOST -u $USER -p$PASSWORD -e "$query" > /dev/null 2>&1
+    mysql_query "$query" > /dev/null
 
 
     query="GRANT ALL ON \`$database\`.* TO \`$dbuser\`@localhost
     query="GRANT ALL ON \`$database\`.* TO \`$dbuser\`@localhost
         IDENTIFIED BY '$dbpass'"
         IDENTIFIED BY '$dbpass'"
-    mysql -h $HOST -u $USER -p$PASSWORD -e "$query" > /dev/null 2>&1
+    mysql_query "$query" > /dev/null
 
 
     query="SHOW GRANTS FOR \`$dbuser\`"
     query="SHOW GRANTS FOR \`$dbuser\`"
-    md5=$(mysql -h $HOST -u $USER -p$PASSWORD -e "$query")
+    md5=$(mysql_query "$query" 2>/dev/null)
     md5=$(echo "$md5" |grep 'PASSWORD' |tr ' ' '\n' |tail -n1 |cut -f 2 -d \')
     md5=$(echo "$md5" |grep 'PASSWORD' |tr ' ' '\n' |tail -n1 |cut -f 2 -d \')
 }
 }
 
 
 # Create PostgreSQL database
 # Create PostgreSQL database
 add_pgsql_database() {
 add_pgsql_database() {
-    host_str=$(grep "HOST='$host'" $VESTA/conf/pgsql.conf)
-    eval $host_str
-    export PGPASSWORD="$PASSWORD"
-    if [ -z $HOST ] || [ -z $USER ] || [ -z $PASSWORD ] || [ -z $TPL ]; then
-        echo "Error: postgresql config parsing failed"
-        log_event "$E_PARSING" "$EVENT"
-        exit $E_PARSING
-    fi
-
-    query='SELECT VERSION()'
-    psql -h $HOST -U $USER -c "$query" > /dev/null 2>&1
-    if [ '0' -ne "$?" ];  then
-        echo "Error: Connection failed"
-        log_event "$E_CONNECT" "$EVENT"
-        exit $E_CONNECT
-    fi
+    psql_connect $host
 
 
     query="CREATE ROLE $dbuser WITH LOGIN PASSWORD '$dbpass'"
     query="CREATE ROLE $dbuser WITH LOGIN PASSWORD '$dbpass'"
-    psql -h $HOST -U $USER -c "$query" > /dev/null 2>&1
+    psql_query "$query" > /dev/null
 
 
     query="CREATE DATABASE $database OWNER $dbuser"
     query="CREATE DATABASE $database OWNER $dbuser"
     if [ "$TPL" = 'template0' ]; then
     if [ "$TPL" = 'template0' ]; then
@@ -146,16 +217,16 @@ add_pgsql_database() {
     else
     else
         query="$query TEMPLATE $TPL"
         query="$query TEMPLATE $TPL"
     fi
     fi
-    psql -h $HOST -U $USER -c "$query" > /dev/null 2>&1
+    psql_query "$query" > /dev/null
 
 
     query="GRANT ALL PRIVILEGES ON DATABASE $database TO $dbuser"
     query="GRANT ALL PRIVILEGES ON DATABASE $database TO $dbuser"
-    psql -h $HOST -U $USER -c "$query" > /dev/null 2>&1
+    psql_query "$query" > /dev/null
 
 
     query="GRANT CONNECT ON DATABASE template1 to $dbuser"
     query="GRANT CONNECT ON DATABASE template1 to $dbuser"
-    psql -h $HOST -U $USER -c "$query" > /dev/null 2>&1
+    psql_query "$query" > /dev/null
 
 
     query="SELECT rolpassword FROM pg_authid WHERE rolname='$dbuser';"
     query="SELECT rolpassword FROM pg_authid WHERE rolname='$dbuser';"
-    md5=$(psql -h $HOST -U $USER -c "$query"|grep md5|cut -f 2 -d \ )
+    md5=$(psql_query "$query" | grep md5 | cut -f 2 -d \ )
 }
 }
 
 
 # Check if database host do not exist in config 
 # Check if database host do not exist in config 
@@ -170,28 +241,6 @@ is_dbhost_new() {
     fi
     fi
 }
 }
 
 
-# Check MySQL database host
-is_mysql_host_alive() {
-    query='SELECT VERSION()'
-    mysql -h $host -u $dbuser -p$dbpass -e "$query" > /dev/null 2>&1
-    if [ '0' -ne "$?" ]; then
-        echo "Error: Connection to $host failed"
-        log_event "$E_CONNECT" "$EVENT"
-        exit $E_CONNECT
-    fi
-}
-
-# Check PostgreSQL database host
-is_pgsql_host_alive() {
-    export PGPASSWORD="$dbpass"
-    psql -h $host -U $dbuser -c "SELECT VERSION()" > /dev/null 2>&1
-    if [ '0' -ne "$?" ];  then
-        echo "Error: Connection to $host failed"
-        log_event "$E_CONNECT" "$EVENT"
-        exit $E_CONNECT
-    fi
-}
-
 # Get database values
 # Get database values
 get_database_values() {
 get_database_values() {
     db_str=$(grep "DB='$database'" $USER_DATA/db.conf)
     db_str=$(grep "DB='$database'" $USER_DATA/db.conf)
@@ -200,212 +249,91 @@ get_database_values() {
 
 
 # Change MySQL database password
 # Change MySQL database password
 change_mysql_password() {
 change_mysql_password() {
-    host_str=$(grep "HOST='$HOST'" $VESTA/conf/mysql.conf)
-    eval $host_str
-    if [ -z $HOST ] || [ -z $USER ] || [ -z $PASSWORD ]; then
-        echo "Error: mysql config parsing failed"
-        log_event "$E_PARSING" "$EVENT"
-        exit $E_PARSING
-    fi
-
-    query='SELECT VERSION()'
-    mysql -h $HOST -u $USER -p$PASSWORD -e "$query" > /dev/null 2>&1
-    if [ '0' -ne "$?" ]; then
-        echo "Error: Connection failed"
-        log_event "$E_CONNECT" "$EVENT"
-        exit $E_CONNECT
-    fi
-
+    mysql_connect $HOST
     query="GRANT ALL ON \`$database\`.* TO \`$DBUSER\`@\`%\`
     query="GRANT ALL ON \`$database\`.* TO \`$DBUSER\`@\`%\`
         IDENTIFIED BY '$dbpass'"
         IDENTIFIED BY '$dbpass'"
-    mysql -h $HOST -u $USER -p$PASSWORD -e "$query" > /dev/null 2>&1
+    mysql_query "$query" > /dev/null
 
 
     query="GRANT ALL ON \`$database\`.* TO \`$DBUSER\`@localhost
     query="GRANT ALL ON \`$database\`.* TO \`$DBUSER\`@localhost
         IDENTIFIED BY '$dbpass'"
         IDENTIFIED BY '$dbpass'"
-    mysql -h $HOST -u $USER -p$PASSWORD -e "$query" > /dev/null 2>&1
+    mysql_query "$query" > /dev/null
 
 
     query="SHOW GRANTS FOR '$DBUSER'"
     query="SHOW GRANTS FOR '$DBUSER'"
-    md5=$(mysql -h $HOST -u $USER -p$PASSWORD -e "$query")
+    md5=$(mysql_query "$query" 2>/dev/null)
     md5=$(echo "$md5" |grep 'PASSWORD' |tr ' ' '\n' |tail -n1 |cut -f 2 -d \')
     md5=$(echo "$md5" |grep 'PASSWORD' |tr ' ' '\n' |tail -n1 |cut -f 2 -d \')
 }
 }
 
 
 # Change PostgreSQL database password
 # Change PostgreSQL database password
 change_pgsql_password() {
 change_pgsql_password() {
-    host_str=$(grep "HOST='$HOST'" $VESTA/conf/pgsql.conf)
-    eval $host_str
-    export PGPASSWORD="$PASSWORD"
-    if [ -z $HOST ] || [ -z $USER ] || [ -z $PASSWORD ] || [ -z $TPL ]; then
-        echo "Error: postgresql config parsing failed"
-        log_event "$E_PARSING" "$EVENT"
-        exit $E_PARSING
-    fi
-
-    query='SELECT VERSION()'
-    psql -h $HOST -U $USER -c "$query" > /dev/null 2>&1
-    if [ '0' -ne "$?" ];  then
-        echo "Error: Connection failed"
-        log_event "$E_CONNECT" "$EVENT"
-        exit $E_CONNECT
-    fi
-
+    psql_connect $HOST
     query="ALTER ROLE $DBUSER WITH LOGIN PASSWORD '$dbpass'"
     query="ALTER ROLE $DBUSER WITH LOGIN PASSWORD '$dbpass'"
-    psql -h $HOST -U $USER -c "$query" > /dev/null 2>&1
+    psql_query "$query" > /dev/null
 
 
     query="SELECT rolpassword FROM pg_authid WHERE rolname='$DBUSER';"
     query="SELECT rolpassword FROM pg_authid WHERE rolname='$DBUSER';"
-    md5=$(psql -h $HOST -U $USER -c "$query"|grep md5|cut -f 2 -d \ )
+    md5=$(psql_query "$query" | grep md5 |cut -f 2 -d \ )
 }
 }
 
 
 # Delete MySQL database
 # Delete MySQL database
 delete_mysql_database() {
 delete_mysql_database() {
-    host_str=$(grep "HOST='$HOST'" $VESTA/conf/mysql.conf)
-    eval $host_str
-    if [ -z $HOST ] || [ -z $USER ] || [ -z $PASSWORD ]; then
-        echo "Error: mysql config parsing failed"
-        log_event "$E_PARSING" "$EVENT"
-        exit $E_PARSING
-    fi
-
-    query='SELECT VERSION()'
-    mysql -h $HOST -u $USER -p$PASSWORD -e "$query" > /dev/null 2>&1
-    if [ '0' -ne "$?" ]; then
-        echo "Error: Connection failed"
-        log_event  "$E_CONNECT" "$EVENT"
-        exit $E_CONNECT
-    fi
+    mysql_connect $HOST
 
 
     query="DROP DATABASE \`$database\`"
     query="DROP DATABASE \`$database\`"
-    mysql -h $HOST -u $USER -p$PASSWORD -e "$query" > /dev/null 2>&1
+    mysql_query "$query" > /dev/null
 
 
     query="REVOKE ALL ON \`$database\`.* FROM \`$DBUSER\`@\`%\`"
     query="REVOKE ALL ON \`$database\`.* FROM \`$DBUSER\`@\`%\`"
-    mysql -h $HOST -u $USER -p$PASSWORD -e "$query" > /dev/null 2>&1
+    mysql_query "$query" > /dev/null
 
 
     query="REVOKE ALL ON \`$database\`.* FROM \`$DBUSER\`@localhost"
     query="REVOKE ALL ON \`$database\`.* FROM \`$DBUSER\`@localhost"
-    mysql -h $HOST -u $USER -p$PASSWORD -e "$query" > /dev/null 2>&1
+    mysql_query "$query" > /dev/null
 
 
     if [ "$(grep "DBUSER='$DBUSER'" $USER_DATA/db.conf |wc -l)" -lt 2 ]; then
     if [ "$(grep "DBUSER='$DBUSER'" $USER_DATA/db.conf |wc -l)" -lt 2 ]; then
         query="DROP USER '$DBUSER'@'%'"
         query="DROP USER '$DBUSER'@'%'"
-        mysql -h $HOST -u $USER -p$PASSWORD -e "$query" > /dev/null 2>&1
+        mysql_query "$query" > /dev/null
 
 
         query="DROP USER '$DBUSER'@'localhost'"
         query="DROP USER '$DBUSER'@'localhost'"
-        mysql -h $HOST -u $USER -p$PASSWORD -e "$query" > /dev/null 2>&1
+        mysql_query "$query" > /dev/null
     fi
     fi
 }
 }
 
 
 # Delete PostgreSQL database
 # Delete PostgreSQL database
 delete_pgsql_database() {
 delete_pgsql_database() {
-    host_str=$(grep "HOST='$HOST'" $VESTA/conf/pgsql.conf)
-    eval $host_str
-    export PGPASSWORD="$PASSWORD"
-    if [ -z $HOST ] || [ -z $USER ] || [ -z $PASSWORD ] || [ -z $TPL ]; then
-        echo "Error: postgresql config parsing failed"
-        log_event "$E_PARSING" "$EVENT"
-        exit $E_PARSING
-    fi
-
-    query='SELECT VERSION()'
-    psql -h $HOST -U $USER -c "$query" > /dev/null 2>&1
-    if [ '0' -ne "$?" ];  then
-        echo "Error: Connection failed"
-        log_event "$E_CONNECT" "$EVENT"
-        exit $E_CONNECT
-    fi
+    psql_connect $HOST
 
 
     query="REVOKE ALL PRIVILEGES ON DATABASE $database FROM $DBUSER"
     query="REVOKE ALL PRIVILEGES ON DATABASE $database FROM $DBUSER"
-    psql -h $HOST -U $USER -c "$query" > /dev/null 2>&1
+    psql_qyery "$query" > /dev/null
 
 
     query="DROP DATABASE $database"
     query="DROP DATABASE $database"
-    psql -h $HOST -U $USER -c "$query" > /dev/null 2>&1
+    psql_query "$query" > /dev/null
 
 
     if [ "$(grep "DBUSER='$DBUSER'" $USER_DATA/db.conf |wc -l)" -lt 2 ]; then
     if [ "$(grep "DBUSER='$DBUSER'" $USER_DATA/db.conf |wc -l)" -lt 2 ]; then
         query="REVOKE CONNECT ON DATABASE template1 FROM $db_user"
         query="REVOKE CONNECT ON DATABASE template1 FROM $db_user"
-        psql -h $HOST -U $USER -c "$query" > /dev/null 2>&1
+        psql_query "$query" > /dev/null
         query="DROP ROLE $db_user"
         query="DROP ROLE $db_user"
-        psql -h $HOST -U $USER -c "$query" > /dev/null 2>&1
+        psql_query "$query" > /dev/null
     fi
     fi
 }
 }
 
 
 # Dump MySQL database
 # Dump MySQL database
 dump_mysql_database() {
 dump_mysql_database() {
-    host_str=$(grep "HOST='$HOST'" $VESTA/conf/mysql.conf)
-    eval $host_str
-    if [ -z $HOST ] || [ -z $USER ] || [ -z $PASSWORD ]; then
-        rm -rf $tmpdir
-        echo "Can't parse mysql config" | $send_mail -s "$subj" $email
-        echo "Error: mysql config parsing failed"
-        log_event "$E_PARSING" "$EVENT"
-        exit $E_PARSING
-    fi
+    mysql_connect $HOST
 
 
-    query='SELECT VERSION()'
-    mysql -h $HOST -u $USER -p$PASSWORD -e "$query" >/dev/null 2>/tmp/e.mysql
-    if [ '0' -ne "$?" ]; then
-        rm -rf $tmpdir
-        echo -e "Can't connect to $HOST\n$(cat /tmp/e.mysql)" |\
-            $send_mail -s "$subj" $email
-        echo "Error: Connection failed"
-        log_event  "$E_CONNECT" "$EVENT"
-        exit $E_CONNECT
-    fi
-
-    mysqldump --single-transaction -h $HOST -u $USER -p$PASSWORD \
-        -r $dump $database 2>/tmp/e.mysql
-    if [ '0' -ne "$?" ]; then
-        rm -rf $tmpdir
-        echo -e "Can't dump database $database\n$(cat /tmp/e.mysql)" |\
-            $send_mail -s "$subj" $email
-        echo "Error: dump $database failed"
-        log_event  "$E_DB" "$EVENT"
-        exit $E_DB
-    fi
+    mysql_dump $dump $database
 
 
     query="SHOW GRANTS FOR '$DBUSER'@'localhost'"
     query="SHOW GRANTS FOR '$DBUSER'@'localhost'"
-    mysql -h $HOST -u $USER -p$PASSWORD -e "$query" |\
-        grep -v "Grants for" > $grants
+    mysql_query "$query" | grep -v "Grants for" > $grants
 
 
     query="SHOW GRANTS FOR '$DBUSER'@'%'"
     query="SHOW GRANTS FOR '$DBUSER'@'%'"
-    mysql -h $HOST -u $USER -p$PASSWORD -e "$query" |\
-        grep -v "Grants for" > $grants
+    mysql_query "$query" | grep -v "Grants for" > $grants
 }
 }
 
 
 # Dump PostgreSQL database
 # Dump PostgreSQL database
 dump_pgsql_database() {
 dump_pgsql_database() {
-    host_str=$(grep "HOST='$HOST'" $VESTA/conf/pgsql.conf)
-    eval $host_str
-    export PGPASSWORD="$PASSWORD"
-    if [ -z $HOST ] || [ -z $USER ] || [ -z $PASSWORD ] || [ -z $TPL ]; then
-        rm -rf $tmpdir
-        echo "Can't parse pgsql config" |\
-            $send_mail -s "$subj" $email
-        echo "Error: postgresql config parsing failed"
-        log_event "$E_PARSING" "$EVENT"
-        exit $E_PARSING
-    fi
-
-    query='SELECT VERSION()'
-    psql -h $HOST -U $USER -c "$query" > /dev/null 2>&1
-    if [ '0' -ne "$?" ];  then
-        rm -rf $tmpdir
-        echo "Can't connect to pgsql server $HOST" |\
-            $send_mail -s "$subj" $email
-        echo "Error: Connection failed"
-        log_event "$E_CONNECT" "$EVENT"
-        exit $E_CONNECT
-    fi
+    psql_connect $HOST
 
 
-    pg_dump -h $HOST -U $USER -c --inserts -O -x -i -f $dump $database \
-        2> /dev/null
-
-    if [ '0' -ne "$?" ]; then
-        rm -rf $tmpdir
-        echo "Can't dump pgsql database $database" |\
-            $send_mail -s "$subj" $email
-        echo "Error: dump $database failed"
-        log_event  "$E_DB" "$EVENT"
-        exit $E_DB
-    fi
+    psql_dump $dump $database
 
 
     query="SELECT rolpassword FROM pg_authid WHERE rolname='$DBUSER';"
     query="SELECT rolpassword FROM pg_authid WHERE rolname='$DBUSER';"
-    md5=$(psql -h $HOST -U $USER -c "$query" | head -n1 | cut -f 2 -d \ )
+    md5=$(psql_query "$query" | head -n1 | cut -f 2 -d \ )
     pw_str="UPDATE pg_authid SET rolpassword='$md5' WHERE rolname='$DBUSER';"
     pw_str="UPDATE pg_authid SET rolpassword='$md5' WHERE rolname='$DBUSER';"
     gr_str="GRANT ALL PRIVILEGES ON DATABASE $database to '$DBUSER'"
     gr_str="GRANT ALL PRIVILEGES ON DATABASE $database to '$DBUSER'"
     echo -e "$pw_str\n$gr_str" >> $grants
     echo -e "$pw_str\n$gr_str" >> $grants
@@ -424,121 +352,42 @@ is_dbhost_free() {
 
 
 # Suspend MySQL database
 # Suspend MySQL database
 suspend_mysql_database() {
 suspend_mysql_database() {
-    host_str=$(grep "HOST='$HOST'" $VESTA/conf/mysql.conf)
-    eval $host_str
-    if [ -z $HOST ] || [ -z $USER ] || [ -z $PASSWORD ]; then
-        echo "Error: mysql config parsing failed"
-        log_event "$E_PARSING" "$EVENT"
-        exit $E_PARSING
-    fi
-
-    query='SELECT VERSION()'
-    mysql -h $HOST -u $USER -p$PASSWORD -e "$query" > /dev/null 2>&1
-    if [ '0' -ne "$?" ]; then
-        echo "Error: Connection failed"
-        log_event  "$E_CONNECT" "$EVENT"
-        exit $E_CONNECT
-    fi
-
+    mysql_connect $HOST
     query="REVOKE ALL ON \`$database\`.* FROM \`$DBUSER\`@\`%\`"
     query="REVOKE ALL ON \`$database\`.* FROM \`$DBUSER\`@\`%\`"
-    mysql -h $HOST -u $USER -p$PASSWORD -e "$query" > /dev/null 2>&1
-
+    mysql_query "$query" > /dev/null
     query="REVOKE ALL ON \`$database\`.* FROM \`$DBUSER\`@localhost"
     query="REVOKE ALL ON \`$database\`.* FROM \`$DBUSER\`@localhost"
-    mysql -h $HOST -u $USER -p$PASSWORD -e "$query" > /dev/null 2>&1
+    mysql_query "$query" > /dev/null
 }
 }
 
 
 # Suspend PostgreSQL database
 # Suspend PostgreSQL database
 suspend_pgsql_database() {
 suspend_pgsql_database() {
-    host_str=$(grep "HOST='$HOST'" $VESTA/conf/pgsql.conf)
-    eval $host_str
-    export PGPASSWORD="$PASSWORD"
-    if [ -z $HOST ] || [ -z $USER ] || [ -z $PASSWORD ] || [ -z $TPL ]; then
-        echo "Error: postgresql config parsing failed"
-        log_event "$E_PARSING" "$EVENT"
-        exit $E_PARSING
-    fi
-
-    query='SELECT VERSION()'
-    psql -h $HOST -U $USER -c "$query" > /dev/null 2>&1
-    if [ '0' -ne "$?" ];  then
-        echo "Error: Connection failed"
-        log_event "$E_CONNECT" "$EVENT"
-        exit $E_CONNECT
-    fi
-
+    psql_connect $HOST
     query="REVOKE ALL PRIVILEGES ON $database FROM $DBUSER"
     query="REVOKE ALL PRIVILEGES ON $database FROM $DBUSER"
-    psql -h $HOST -U $USER -c "$query" > /dev/null 2>&1
+    psql_query "$query" > /dev/null
 }
 }
 
 
 # Unsuspend MySQL database
 # Unsuspend MySQL database
 unsuspend_mysql_database() {
 unsuspend_mysql_database() {
-    host_str=$(grep "HOST='$HOST'" $VESTA/conf/mysql.conf)
-    eval $host_str
-    if [ -z $HOST ] || [ -z $USER ] || [ -z $PASSWORD ]; then
-        echo "Error: mysql config parsing failed"
-        log_event "$E_PARSING" "$EVENT"
-        exit $E_PARSING
-    fi
-
-    query='SELECT VERSION()'
-    mysql -h $HOST -u $USER -p$PASSWORD -e "$query" > /dev/null 2>&1
-    if [ '0' -ne "$?" ]; then
-        echo "Error: Connection failed"
-        log_event  "$E_CONNECT" "$EVENT"
-        exit $E_CONNECT
-    fi
-
+    mysql_connect $HOST
     query="GRANT ALL ON \`$database\`.* FROM \`$DBUSER\`@\`%\`"
     query="GRANT ALL ON \`$database\`.* FROM \`$DBUSER\`@\`%\`"
-    mysql -h $HOST -u $USER -p$PASSWORD -e "$query" > /dev/null 2>&1
-
+    mysql_query "$query" > /dev/null
     query="GRANT ALL ON \`$database\`.* TO \`$DBUSER\`@localhost"
     query="GRANT ALL ON \`$database\`.* TO \`$DBUSER\`@localhost"
-    mysql -h $HOST -u $USER -p$PASSWORD -e "$query" > /dev/null 2>&1
+    mysql_query "$query" > /dev/null
 }
 }
 
 
 # Unsuspend PostgreSQL database
 # Unsuspend PostgreSQL database
 unsuspend_pgsql_database() {
 unsuspend_pgsql_database() {
-    host_str=$(grep "HOST='$HOST'" $VESTA/conf/pgsql.conf)
-    eval $host_str
-    export PGPASSWORD="$PASSWORD"
-    if [ -z $HOST ] || [ -z $USER ] || [ -z $PASSWORD ] || [ -z $TPL ]; then
-        echo "Error: postgresql config parsing failed"
-        log_event "$E_PARSING" "$EVENT"
-        exit $E_PARSING
-    fi
-
-    query='SELECT VERSION()'
-    psql -h $HOST -U $USER -c "$query" > /dev/null 2>&1
-    if [ '0' -ne "$?" ];  then
-        echo "Error: Connection failed"
-        log_event "$E_CONNECT" "$EVENT"
-        exit $E_CONNECT
-    fi
-
+    psql_connect $HOST
     query="GRANT ALL PRIVILEGES ON DATABASE $database TO $DBUSER"
     query="GRANT ALL PRIVILEGES ON DATABASE $database TO $DBUSER"
-    psql -h $HOST -U $USER -c "$query" > /dev/null 2>&1
+    psql_query "$query" > /dev/null
 }
 }
 
 
 # Get MySQL disk usage
 # Get MySQL disk usage
 get_mysql_disk_usage() {
 get_mysql_disk_usage() {
-    host_str=$(grep "HOST='$HOST'" $VESTA/conf/mysql.conf)
-    eval $host_str
-    if [ -z $HOST ] || [ -z $USER ] || [ -z $PASSWORD ]; then
-        echo "Error: mysql config parsing failed"
-        log_event "$E_PARSING" "$EVENT"
-        exit $E_PARSING
-    fi
-
-    query='SELECT VERSION()'
-    mysql -h $HOST -u $USER -p$PASSWORD -e "$query" > /dev/null 2>&1
-    if [ '0' -ne "$?" ]; then
-        echo "Error: Connection to $HOST failed"
-        log_event  "$E_CONNECT" "$EVENT"
-        exit $E_CONNECT
-    fi
-
+    mysql_connect $HOST
     query="SELECT SUM( data_length + index_length ) / 1024 / 1024 \"Size\"
     query="SELECT SUM( data_length + index_length ) / 1024 / 1024 \"Size\"
         FROM information_schema.TABLES WHERE table_schema='$database'"
         FROM information_schema.TABLES WHERE table_schema='$database'"
-    usage=$(mysql -h $HOST -u $USER -p$PASSWORD -e "$query" |tail -n1)
+    usage=$(mysql_query "$query" |tail -n1)
     if [ "$usage" == 'NULL' ] || [ "${usage:0:1}" -eq '0' ]; then
     if [ "$usage" == 'NULL' ] || [ "${usage:0:1}" -eq '0' ]; then
         usage=1
         usage=1
     fi
     fi
@@ -548,25 +397,10 @@ get_mysql_disk_usage() {
 
 
 # Get PostgreSQL disk usage
 # Get PostgreSQL disk usage
 get_pgsql_disk_usage() {
 get_pgsql_disk_usage() {
-    host_str=$(grep "HOST='$HOST'" $VESTA/conf/pgsql.conf)
-    eval $host_str
-    export PGPASSWORD="$PASSWORD"
-    if [ -z $HOST ] || [ -z $USER ] || [ -z $PASSWORD ] || [ -z $TPL ]; then
-        echo "Error: postgresql config parsing failed"
-        log_event "$E_PARSING" "$EVENT"
-        exit $E_PARSING
-    fi
-
-    query='SELECT VERSION()'
-    psql -h $HOST -U $USER -c "$query" > /dev/null 2>&1
-    if [ '0' -ne "$?" ];  then
-        echo "Error: Connection failed"
-        log_event "$E_CONNECT" "$EVENT"
-        exit $E_CONNECT
-    fi
+    psql_connect $HOST
 
 
     query="SELECT pg_database_size('$database');"
     query="SELECT pg_database_size('$database');"
-    usage=$(psql -h $HOST -U $USER -c "$query")
+    usage=$(psql_query "$query")
     usage=$(echo "$usage" | grep -v "-" | grep -v 'row' | sed "/^$/d")
     usage=$(echo "$usage" | grep -v "-" | grep -v 'row' | sed "/^$/d")
     usage=$(echo "$usage" | grep -v "pg_database_size" | awk '{print $1}')
     usage=$(echo "$usage" | grep -v "pg_database_size" | awk '{print $1}')
     if [ -z "$usage" ]; then
     if [ -z "$usage" ]; then
@@ -580,59 +414,31 @@ get_pgsql_disk_usage() {
 
 
 # Delete MySQL user
 # Delete MySQL user
 delete_mysql_user() {
 delete_mysql_user() {
-    host_str=$(grep "HOST='$HOST'" $VESTA/conf/mysql.conf)
-    eval $host_str
-    if [ -z $HOST ] || [ -z $USER ] || [ -z $PASSWORD ]; then
-        echo "Error: mysql config parsing failed"
-        log_event "$E_PARSING" "$EVENT"
-        exit $E_PARSING
-    fi
-
-    query='SELECT VERSION()'
-    mysql -h $HOST -u $USER -p$PASSWORD -e "$query" > /dev/null 2>&1
-    if [ '0' -ne "$?" ]; then
-        echo "Error: Connection failed"
-        log_event  "$E_CONNECT" "$EVENT"
-        exit $E_CONNECT
-    fi
+    mysql_connect $HOST
 
 
     query="REVOKE ALL ON \`$database\`.* FROM \`$old_dbuser\`@\`%\`"
     query="REVOKE ALL ON \`$database\`.* FROM \`$old_dbuser\`@\`%\`"
-    mysql -h $HOST -u $USER -p$PASSWORD -e "$query" > /dev/null 2>&1
+    mysql_query "$query" > /dev/null
 
 
     query="REVOKE ALL ON \`$database\`.* FROM \`$old_dbuser\`@localhost"
     query="REVOKE ALL ON \`$database\`.* FROM \`$old_dbuser\`@localhost"
-    mysql -h $HOST -u $USER -p$PASSWORD -e "$query" > /dev/null 2>&1
+    mysql_query "$query" > /dev/null
 
 
     query="DROP USER '$old_dbuser'@'%'"
     query="DROP USER '$old_dbuser'@'%'"
-    mysql -h $HOST -u $USER -p$PASSWORD -e "$query" > /dev/null 2>&1
+    mysql_query "$query" > /dev/null
 
 
     query="DROP USER '$old_dbuser'@'localhost'"
     query="DROP USER '$old_dbuser'@'localhost'"
-    mysql -h $HOST -u $USER -p$PASSWORD -e "$query" > /dev/null 2>&1
+    mysql_query "$query" > /dev/null
 }
 }
 
 
 # Delete PostgreSQL user
 # Delete PostgreSQL user
 delete_pgsql_user() {
 delete_pgsql_user() {
-    host_str=$(grep "HOST='$HOST'" $VESTA/conf/pgsql.conf)
-    eval $host_str
-    export PGPASSWORD="$PASSWORD"
-    if [ -z $HOST ] || [ -z $USER ] || [ -z $PASSWORD ] || [ -z $TPL ]; then
-        echo "Error: postgresql config parsing failed"
-        log_event "$E_PARSING" "$EVENT"
-        exit $E_PARSING
-    fi
-
-    query='SELECT VERSION()'
-    psql -h $HOST -U $USER -c "$query" > /dev/null 2>&1
-    if [ '0' -ne "$?" ];  then
-        echo "Error: Connection failed"
-        log_event "$E_CONNECT" "$EVENT"
-        exit $E_CONNECT
-    fi
+    psql_connect $HOST
 
 
     query="REVOKE ALL PRIVILEGES ON DATABASE $database FROM $old_dbuser"
     query="REVOKE ALL PRIVILEGES ON DATABASE $database FROM $old_dbuser"
-    psql -h $HOST -U $USER -c "$query" > /dev/null 2>&1
+    psql_query "$query" > /dev/null
 
 
     query="REVOKE CONNECT ON DATABASE template1 FROM $old_dbuser"
     query="REVOKE CONNECT ON DATABASE template1 FROM $old_dbuser"
-    psql -h $HOST -U $USER -c "$query" > /dev/null 2>&1
+    psql_query "$query" > /dev/null
+
     query="DROP ROLE $old_dbuser"
     query="DROP ROLE $old_dbuser"
-    psql -h $HOST -U $USER -c "$query" > /dev/null 2>&1
+    psql_query "$query" > /dev/null
 }
 }