mirror of
https://github.com/serghey-rodin/vesta.git
synced 2025-08-14 18:49:17 -07:00
backup/restore procedure
This commit is contained in:
parent
236448303c
commit
e23249a997
29 changed files with 1638 additions and 583 deletions
207
func/db.sh
207
func/db.sh
|
@ -19,7 +19,7 @@ get_next_dbhost() {
|
|||
old_weight='100'
|
||||
for db in $host_str; do
|
||||
eval $db
|
||||
let weight="$U_DB_BASES * 100 / $MAX_DB" &>/dev/null
|
||||
let weight="$U_DB_BASES * 100 / $MAX_DB" >/dev/null 2>&1
|
||||
if [ "$old_weight" -gt "$weight" ]; then
|
||||
host="$HOST"
|
||||
old_weight="$weight"
|
||||
|
@ -88,14 +88,14 @@ decrease_dbhost_values() {
|
|||
add_mysql_database() {
|
||||
host_str=$(grep "HOST='$host'" $VESTA/conf/mysql.conf)
|
||||
eval $host_str
|
||||
if [ -z $HOST ] || [ -z $USER ] || [ -z $PASSWORD ] || [ -z $PORT ]; then
|
||||
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 -P $PORT -e "$query" &> /dev/null
|
||||
mysql -h $HOST -u $USER -p$PASSWORD -e "$query" > /dev/null 2>&1
|
||||
if [ '0' -ne "$?" ]; then
|
||||
echo "Error: Connection failed"
|
||||
log_event "$E_DB $EVENT"
|
||||
|
@ -104,18 +104,18 @@ add_mysql_database() {
|
|||
|
||||
|
||||
query="CREATE DATABASE \`$database\` CHARACTER SET $charset"
|
||||
mysql -h $HOST -u $USER -p$PASSWORD -P $PORT -e "$query" &> /dev/null
|
||||
mysql -h $HOST -u $USER -p$PASSWORD -e "$query" > /dev/null 2>&1
|
||||
|
||||
query="GRANT ALL ON \`$database\`.* TO \`$dbuser\`@\`%\`
|
||||
IDENTIFIED BY '$dbpass'"
|
||||
mysql -h $HOST -u $USER -p$PASSWORD -P $PORT -e "$query" &> /dev/null
|
||||
mysql -h $HOST -u $USER -p$PASSWORD -e "$query" > /dev/null 2>&1
|
||||
|
||||
query="GRANT ALL ON \`$database\`.* TO \`$dbuser\`@localhost
|
||||
IDENTIFIED BY '$dbpass'"
|
||||
mysql -h $HOST -u $USER -p$PASSWORD -P $PORT -e "$query" &> /dev/null
|
||||
mysql -h $HOST -u $USER -p$PASSWORD -e "$query" > /dev/null 2>&1
|
||||
|
||||
query="SHOW GRANTS FOR \`$dbuser\`"
|
||||
md5=$(mysql -h $HOST -u $USER -p$PASSWORD -P $PORT -e "$query")
|
||||
md5=$(mysql -h $HOST -u $USER -p$PASSWORD -e "$query")
|
||||
md5=$(echo "$md5" |grep 'PASSWORD' |tr ' ' '\n' |tail -n1 |cut -f 2 -d \')
|
||||
}
|
||||
|
||||
|
@ -131,7 +131,7 @@ add_pgsql_database() {
|
|||
fi
|
||||
|
||||
query='SELECT VERSION()'
|
||||
psql -h $HOST -U $USER -p $PORT -c "$query" &> /dev/null
|
||||
psql -h $HOST -U $USER -c "$query" > /dev/null 2>&1
|
||||
if [ '0' -ne "$?" ]; then
|
||||
echo "Error: Connection failed"
|
||||
log_event "$E_DB" "$EVENT"
|
||||
|
@ -139,7 +139,7 @@ add_pgsql_database() {
|
|||
fi
|
||||
|
||||
query="CREATE ROLE $dbuser WITH LOGIN PASSWORD '$dbpass'"
|
||||
psql -h $HOST -U $USER -p $PORT -c "$query" &> /dev/null
|
||||
psql -h $HOST -U $USER -c "$query" > /dev/null 2>&1
|
||||
|
||||
query="CREATE DATABASE $database OWNER $dbuser"
|
||||
if [ "$TPL" = 'template0' ]; then
|
||||
|
@ -147,16 +147,16 @@ add_pgsql_database() {
|
|||
else
|
||||
query="$query TEMPLATE $TPL"
|
||||
fi
|
||||
psql -h $HOST -U $USER -p $PORT -c "$query" &> /dev/null
|
||||
psql -h $HOST -U $USER -c "$query" > /dev/null 2>&1
|
||||
|
||||
query="GRANT ALL PRIVILEGES ON DATABASE $database TO $dbuser"
|
||||
psql -h $HOST -U $USER -p $PORT -c "$query" &> /dev/null
|
||||
psql -h $HOST -U $USER -c "$query" > /dev/null 2>&1
|
||||
|
||||
query="GRANT CONNECT ON DATABASE template1 to $dbuser"
|
||||
psql -h $HOST -U $USER -p $PORT -c "$query" &> /dev/null
|
||||
psql -h $HOST -U $USER -c "$query" > /dev/null 2>&1
|
||||
|
||||
query="SELECT rolpassword FROM pg_authid WHERE rolname='$dbuser';"
|
||||
md5=$(psql -h $HOST -U $USER -p $PORT -c "$query"|grep md5|cut -f 2 -d \ )
|
||||
md5=$(psql -h $HOST -U $USER -c "$query"|grep md5|cut -f 2 -d \ )
|
||||
}
|
||||
|
||||
# Check if database host do not exist in config
|
||||
|
@ -174,7 +174,7 @@ is_dbhost_new() {
|
|||
# Check MySQL database host
|
||||
is_mysql_host_alive() {
|
||||
query='SELECT VERSION()'
|
||||
mysql -h $host -u $dbuser -p$dbpass -P $port -e "$query" &> /dev/null
|
||||
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_DB" "$EVENT"
|
||||
|
@ -185,7 +185,7 @@ is_mysql_host_alive() {
|
|||
# Check PostgreSQL database host
|
||||
is_pgsql_host_alive() {
|
||||
export PGPASSWORD="$dbpass"
|
||||
psql -h $host -U $dbuser -p $port -c "SELECT VERSION()" &> /dev/null
|
||||
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_DB" "$EVENT"
|
||||
|
@ -203,14 +203,14 @@ get_database_values() {
|
|||
change_mysql_password() {
|
||||
host_str=$(grep "HOST='$HOST'" $VESTA/conf/mysql.conf)
|
||||
eval $host_str
|
||||
if [ -z $HOST ] || [ -z $USER ] || [ -z $PASSWORD ] || [ -z $PORT ]; then
|
||||
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 -P $PORT -e "$query" &> /dev/null
|
||||
mysql -h $HOST -u $USER -p$PASSWORD -e "$query" > /dev/null 2>&1
|
||||
if [ '0' -ne "$?" ]; then
|
||||
echo "Error: Connection failed"
|
||||
log_event "$E_DB $EVENT"
|
||||
|
@ -219,14 +219,14 @@ change_mysql_password() {
|
|||
|
||||
query="GRANT ALL ON \`$database\`.* TO \`$DBUSER\`@\`%\`
|
||||
IDENTIFIED BY '$dbpass'"
|
||||
mysql -h $HOST -u $USER -p$PASSWORD -P $PORT -e "$query" &> /dev/null
|
||||
mysql -h $HOST -u $USER -p$PASSWORD -e "$query" > /dev/null 2>&1
|
||||
|
||||
query="GRANT ALL ON \`$database\`.* TO \`$DBUSER\`@localhost
|
||||
IDENTIFIED BY '$dbpass'"
|
||||
mysql -h $HOST -u $USER -p$PASSWORD -P $PORT -e "$query" &> /dev/null
|
||||
mysql -h $HOST -u $USER -p$PASSWORD -e "$query" > /dev/null 2>&1
|
||||
|
||||
query="SHOW GRANTS FOR '$DBUSER'"
|
||||
md5=$(mysql -h $HOST -u $USER -p$PASSWORD -P $PORT -e "$query")
|
||||
md5=$(mysql -h $HOST -u $USER -p$PASSWORD -e "$query")
|
||||
md5=$(echo "$md5" |grep 'PASSWORD' |tr ' ' '\n' |tail -n1 |cut -f 2 -d \')
|
||||
}
|
||||
|
||||
|
@ -242,7 +242,7 @@ change_pgsql_password() {
|
|||
fi
|
||||
|
||||
query='SELECT VERSION()'
|
||||
psql -h $HOST -U $USER -p $PORT -c "$query" &> /dev/null
|
||||
psql -h $HOST -U $USER -c "$query" > /dev/null 2>&1
|
||||
if [ '0' -ne "$?" ]; then
|
||||
echo "Error: Connection failed"
|
||||
log_event "$E_DB" "$EVENT"
|
||||
|
@ -250,24 +250,24 @@ change_pgsql_password() {
|
|||
fi
|
||||
|
||||
query="ALTER ROLE $DBUSER WITH LOGIN PASSWORD '$dbpass'"
|
||||
psql -h $HOST -U $USER -p $PORT -c "$query" &> /dev/null
|
||||
psql -h $HOST -U $USER -c "$query" > /dev/null 2>&1
|
||||
|
||||
query="SELECT rolpassword FROM pg_authid WHERE rolname='$DBUSER';"
|
||||
md5=$(psql -h $HOST -U $USER -p $PORT -c "$query"|grep md5|cut -f 2 -d \ )
|
||||
md5=$(psql -h $HOST -U $USER -c "$query"|grep md5|cut -f 2 -d \ )
|
||||
}
|
||||
|
||||
# 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 ] || [ -z $PORT ]; then
|
||||
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 -P $PORT -e "$query" &> /dev/null
|
||||
mysql -h $HOST -u $USER -p$PASSWORD -e "$query" > /dev/null 2>&1
|
||||
if [ '0' -ne "$?" ]; then
|
||||
echo "Error: Connection failed"
|
||||
log_event "$E_DB $EVENT"
|
||||
|
@ -275,20 +275,20 @@ delete_mysql_database() {
|
|||
fi
|
||||
|
||||
query="DROP DATABASE \`$database\`"
|
||||
mysql -h $HOST -u $USER -p$PASSWORD -P $PORT -e "$query" &> /dev/null
|
||||
mysql -h $HOST -u $USER -p$PASSWORD -e "$query" > /dev/null 2>&1
|
||||
|
||||
query="REVOKE ALL ON \`$database\`.* FROM \`$DBUSER\`@\`%\`"
|
||||
mysql -h $HOST -u $USER -p$PASSWORD -P $PORT -e "$query" &> /dev/null
|
||||
mysql -h $HOST -u $USER -p$PASSWORD -e "$query" > /dev/null 2>&1
|
||||
|
||||
query="REVOKE ALL ON \`$database\`.* FROM \`$DBUSER\`@localhost"
|
||||
mysql -h $HOST -u $USER -p$PASSWORD -P $PORT -e "$query" &> /dev/null
|
||||
mysql -h $HOST -u $USER -p$PASSWORD -e "$query" > /dev/null 2>&1
|
||||
|
||||
if [ "$(grep "DBUSER='$DBUSER'" $USER_DATA/db.conf |wc -l)" -lt 2 ]; then
|
||||
query="DROP USER '$DBUSER'@'%'"
|
||||
mysql -h $HOST -u $USER -p$PASSWORD -P $PORT -e "$query" &> /dev/null
|
||||
mysql -h $HOST -u $USER -p$PASSWORD -e "$query" > /dev/null 2>&1
|
||||
|
||||
query="DROP USER '$DBUSER'@'localhost'"
|
||||
mysql -h $HOST -u $USER -p$PASSWORD -P $PORT -e "$query" &> /dev/null
|
||||
mysql -h $HOST -u $USER -p$PASSWORD -e "$query" > /dev/null 2>&1
|
||||
fi
|
||||
}
|
||||
|
||||
|
@ -304,7 +304,7 @@ delete_pgsql_database() {
|
|||
fi
|
||||
|
||||
query='SELECT VERSION()'
|
||||
psql -h $HOST -U $USER -p $PORT -c "$query" &> /dev/null
|
||||
psql -h $HOST -U $USER -c "$query" > /dev/null 2>&1
|
||||
if [ '0' -ne "$?" ]; then
|
||||
echo "Error: Connection failed"
|
||||
log_event "$E_DB" "$EVENT"
|
||||
|
@ -312,16 +312,16 @@ delete_pgsql_database() {
|
|||
fi
|
||||
|
||||
query="REVOKE ALL PRIVILEGES ON DATABASE $database FROM $DBUSER"
|
||||
psql -h $HOST -U $USER -p $PORT -c "$query" &> /dev/null
|
||||
psql -h $HOST -U $USER -c "$query" > /dev/null 2>&1
|
||||
|
||||
query="DROP DATABASE $database"
|
||||
psql -h $HOST -U $USER -p $PORT -c "$query" &> /dev/null
|
||||
psql -h $HOST -U $USER -c "$query" > /dev/null 2>&1
|
||||
|
||||
if [ "$(grep "DBUSER='$DBUSER'" $USER_DATA/db.conf |wc -l)" -lt 2 ]; then
|
||||
query="REVOKE CONNECT ON DATABASE template1 FROM $db_user"
|
||||
psql -h $HOST -U $USER -p $PORT -c "$query" &> /dev/null
|
||||
psql -h $HOST -U $USER -c "$query" > /dev/null 2>&1
|
||||
query="DROP ROLE $db_user"
|
||||
psql -h $HOST -U $USER -p $PORT -c "$query" &> /dev/null
|
||||
psql -h $HOST -U $USER -c "$query" > /dev/null 2>&1
|
||||
fi
|
||||
}
|
||||
|
||||
|
@ -329,39 +329,41 @@ delete_pgsql_database() {
|
|||
dump_mysql_database() {
|
||||
host_str=$(grep "HOST='$HOST'" $VESTA/conf/mysql.conf)
|
||||
eval $host_str
|
||||
if [ -z $HOST ] || [ -z $USER ] || [ -z $PASSWORD ] || [ -z $PORT ]; then
|
||||
if [ -z $HOST ] || [ -z $USER ] || [ -z $PASSWORD ]; then
|
||||
rm -rf $tmpdir
|
||||
echo "Can't parse mysql config" | $mail -s "$subj" $email
|
||||
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
|
||||
|
||||
query='SELECT VERSION()'
|
||||
mysql -h $HOST -u $USER -p$PASSWORD -P $PORT -e "$query" &> /dev/null
|
||||
mysql -h $HOST -u $USER -p$PASSWORD -e "$query" > /dev/null 2>&1
|
||||
if [ '0' -ne "$?" ]; then
|
||||
rm -rf $tmpdir
|
||||
echo "Can't connect to mysql server $HOST" | $mail -s "$subj" $email
|
||||
echo "Can't connect to mysql server $HOST" |\
|
||||
$send_mail -s "$subj" $email
|
||||
echo "Error: Connection failed"
|
||||
log_event "$E_DB $EVENT"
|
||||
exit $E_DB
|
||||
fi
|
||||
|
||||
mysqldump -h $HOST -u $USER -p$PASSWORD -P$PORT -r $dump $database
|
||||
mysqldump -h $HOST -u $USER -p$PASSWORD -r $dump $database
|
||||
if [ '0' -ne "$?" ]; then
|
||||
rm -rf $tmpdir
|
||||
echo "Can't dump mysql database $database" | $mail -s "$subj" $email
|
||||
echo "Can't dump mysql database $database" |\
|
||||
$send_mail -s "$subj" $email
|
||||
echo "Error: dump $database failed"
|
||||
log_event "$E_DB $EVENT"
|
||||
exit $E_DB
|
||||
fi
|
||||
|
||||
query="SHOW GRANTS FOR '$DBUSER'@'localhost'"
|
||||
mysql -h $HOST -u $USER -p$PASSWORD -P $PORT -e "$query" |\
|
||||
mysql -h $HOST -u $USER -p$PASSWORD -e "$query" |\
|
||||
grep -v "Grants for" > $grants
|
||||
|
||||
query="SHOW GRANTS FOR '$DBUSER'@'%'"
|
||||
mysql -h $HOST -u $USER -p$PASSWORD -P $PORT -e "$query" |\
|
||||
mysql -h $HOST -u $USER -p$PASSWORD -e "$query" |\
|
||||
grep -v "Grants for" > $grants
|
||||
}
|
||||
|
||||
|
@ -372,35 +374,38 @@ dump_pgsql_database() {
|
|||
export PGPASSWORD="$PASSWORD"
|
||||
if [ -z $HOST ] || [ -z $USER ] || [ -z $PASSWORD ] || [ -z $TPL ]; then
|
||||
rm -rf $tmpdir
|
||||
echo "Can't parse pgsql config" | $mail -s "$subj" $email
|
||||
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 -p $PORT -c "$query" &> /dev/null
|
||||
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" | $mail -s "$subj" $email
|
||||
echo "Can't connect to pgsql server $HOST" |\
|
||||
$send_mail -s "$subj" $email
|
||||
echo "Error: Connection failed"
|
||||
log_event "$E_DB" "$EVENT"
|
||||
exit $E_DB
|
||||
fi
|
||||
|
||||
pg_dump -h $HOST -U $USER -p $PORT -c -d -O -x -i -f $dump $database \
|
||||
pg_dump -h $HOST -U $USER -c -d -O -x -i -f $dump $database \
|
||||
2> /dev/null
|
||||
|
||||
if [ '0' -ne "$?" ]; then
|
||||
rm -rf $tmpdir
|
||||
echo "Can't dump pgsql database $database" | $mail -s "$subj" $email
|
||||
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
|
||||
|
||||
query="SELECT rolpassword FROM pg_authid WHERE rolname='$DBUSER';"
|
||||
md5=$(psql -h $HOST -U $USER -p $PORT -c "$query"|head -n1|cut -f 2 -d \ )
|
||||
md5=$(psql -h $HOST -U $USER -c "$query" | head -n1 | cut -f 2 -d \ )
|
||||
pw_str="UPDATE pg_authid SET rolpassword='$md5' WHERE rolname='$DBUSER';"
|
||||
gr_str="GRANT ALL PRIVILEGES ON DATABASE $database to '$DBUSER'"
|
||||
echo -e "$pw_str\n$gr_str" >> $grants
|
||||
|
@ -421,14 +426,14 @@ is_dbhost_free() {
|
|||
suspend_mysql_database() {
|
||||
host_str=$(grep "HOST='$HOST'" $VESTA/conf/mysql.conf)
|
||||
eval $host_str
|
||||
if [ -z $HOST ] || [ -z $USER ] || [ -z $PASSWORD ] || [ -z $PORT ]; then
|
||||
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 -P $PORT -e "$query" &> /dev/null
|
||||
mysql -h $HOST -u $USER -p$PASSWORD -e "$query" > /dev/null 2>&1
|
||||
if [ '0' -ne "$?" ]; then
|
||||
echo "Error: Connection failed"
|
||||
log_event "$E_DB $EVENT"
|
||||
|
@ -436,10 +441,10 @@ suspend_mysql_database() {
|
|||
fi
|
||||
|
||||
query="REVOKE ALL ON \`$database\`.* FROM \`$DBUSER\`@\`%\`"
|
||||
mysql -h $HOST -u $USER -p$PASSWORD -P $PORT -e "$query" &> /dev/null
|
||||
mysql -h $HOST -u $USER -p$PASSWORD -e "$query" > /dev/null 2>&1
|
||||
|
||||
query="REVOKE ALL ON \`$database\`.* FROM \`$DBUSER\`@localhost"
|
||||
mysql -h $HOST -u $USER -p$PASSWORD -P $PORT -e "$query" &> /dev/null
|
||||
mysql -h $HOST -u $USER -p$PASSWORD -e "$query" > /dev/null 2>&1
|
||||
}
|
||||
|
||||
# Suspend PostgreSQL database
|
||||
|
@ -454,7 +459,7 @@ suspend_pgsql_database() {
|
|||
fi
|
||||
|
||||
query='SELECT VERSION()'
|
||||
psql -h $HOST -U $USER -p $PORT -c "$query" &> /dev/null
|
||||
psql -h $HOST -U $USER -c "$query" > /dev/null 2>&1
|
||||
if [ '0' -ne "$?" ]; then
|
||||
echo "Error: Connection failed"
|
||||
log_event "$E_DB" "$EVENT"
|
||||
|
@ -462,21 +467,21 @@ suspend_pgsql_database() {
|
|||
fi
|
||||
|
||||
query="REVOKE ALL PRIVILEGES ON $database FROM $DBUSER"
|
||||
psql -h $HOST -U $USER -p $PORT -c "$query" &> /dev/null
|
||||
psql -h $HOST -U $USER -c "$query" > /dev/null 2>&1
|
||||
}
|
||||
|
||||
# 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 ] || [ -z $PORT ]; then
|
||||
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 -P $PORT -e "$query" &> /dev/null
|
||||
mysql -h $HOST -u $USER -p$PASSWORD -e "$query" > /dev/null 2>&1
|
||||
if [ '0' -ne "$?" ]; then
|
||||
echo "Error: Connection failed"
|
||||
log_event "$E_DB $EVENT"
|
||||
|
@ -484,10 +489,10 @@ unsuspend_mysql_database() {
|
|||
fi
|
||||
|
||||
query="GRANT ALL ON \`$database\`.* FROM \`$DBUSER\`@\`%\`"
|
||||
mysql -h $HOST -u $USER -p$PASSWORD -P $PORT -e "$query" &> /dev/null
|
||||
mysql -h $HOST -u $USER -p$PASSWORD -e "$query" > /dev/null 2>&1
|
||||
|
||||
query="GRANT ALL ON \`$database\`.* TO \`$DBUSER\`@localhost"
|
||||
mysql -h $HOST -u $USER -p$PASSWORD -P $PORT -e "$query" &> /dev/null
|
||||
mysql -h $HOST -u $USER -p$PASSWORD -e "$query" > /dev/null 2>&1
|
||||
}
|
||||
|
||||
# Unsuspend PostgreSQL database
|
||||
|
@ -502,7 +507,7 @@ unsuspend_pgsql_database() {
|
|||
fi
|
||||
|
||||
query='SELECT VERSION()'
|
||||
psql -h $HOST -U $USER -p $PORT -c "$query" &> /dev/null
|
||||
psql -h $HOST -U $USER -c "$query" > /dev/null 2>&1
|
||||
if [ '0' -ne "$?" ]; then
|
||||
echo "Error: Connection failed"
|
||||
log_event "$E_DB" "$EVENT"
|
||||
|
@ -510,21 +515,21 @@ unsuspend_pgsql_database() {
|
|||
fi
|
||||
|
||||
query="GRANT ALL PRIVILEGES ON DATABASE $database TO $DBUSER"
|
||||
psql -h $HOST -U $USER -p $PORT -c "$query" &> /dev/null
|
||||
psql -h $HOST -U $USER -c "$query" > /dev/null 2>&1
|
||||
}
|
||||
|
||||
# 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 ] || [ -z $PORT ]; then
|
||||
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 -P $PORT -e "$query" &> /dev/null
|
||||
mysql -h $HOST -u $USER -p$PASSWORD -e "$query" > /dev/null 2>&1
|
||||
if [ '0' -ne "$?" ]; then
|
||||
echo "Error: Connection failed"
|
||||
log_event "$E_DB $EVENT"
|
||||
|
@ -533,7 +538,7 @@ get_mysql_disk_usage() {
|
|||
|
||||
query="SELECT SUM( data_length + index_length ) / 1024 / 1024 \"Size\"
|
||||
FROM information_schema.TABLES WHERE table_schema='$database'"
|
||||
usage=$(mysql -h $HOST -u $USER -p$PASSWORD -P $PORT -e "$query" |tail -n1)
|
||||
usage=$(mysql -h $HOST -u $USER -p$PASSWORD -e "$query" |tail -n1)
|
||||
if [ "$usage" == 'NULL' ] || [ "${usage:0:1}" -eq '0' ]; then
|
||||
usage=1
|
||||
fi
|
||||
|
@ -553,7 +558,7 @@ get_pgsql_disk_usage() {
|
|||
fi
|
||||
|
||||
query='SELECT VERSION()'
|
||||
psql -h $HOST -U $USER -p $PORT -c "$query" &> /dev/null
|
||||
psql -h $HOST -U $USER -c "$query" > /dev/null 2>&1
|
||||
if [ '0' -ne "$?" ]; then
|
||||
echo "Error: Connection failed"
|
||||
log_event "$E_DB" "$EVENT"
|
||||
|
@ -561,7 +566,7 @@ get_pgsql_disk_usage() {
|
|||
fi
|
||||
|
||||
query="SELECT pg_database_size('$database');"
|
||||
usage=$(psql -h $HOST -U $USER -p $PORT -c "$query")
|
||||
usage=$(psql -h $HOST -U $USER -c "$query")
|
||||
usage=$(echo "$usage" | grep -v "-" | grep -v 'row' | sed -e "/^$/d")
|
||||
usage=$(echo "$usage" | grep -v "pg_database_size" | awk '{print $1}')
|
||||
if [ -z "$usage" ]; then
|
||||
|
@ -573,73 +578,3 @@ get_pgsql_disk_usage() {
|
|||
fi
|
||||
}
|
||||
|
||||
# Rebuild MySQL database
|
||||
rebuild_mysql_database() {
|
||||
host_str=$(grep "HOST='$HOST'" $VESTA/conf/mysql.conf)
|
||||
eval $host_str
|
||||
if [ -z $HOST ] || [ -z $USER ] || [ -z $PASSWORD ] || [ -z $PORT ]; 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 -P $PORT -e "$query" &> /dev/null
|
||||
if [ '0' -ne "$?" ]; then
|
||||
echo "Error: Connection failed"
|
||||
log_event "$E_DB $EVENT"
|
||||
exit $E_DB
|
||||
fi
|
||||
|
||||
query="CREATE DATABASE \`$database\` CHARACTER SET $CHARSET"
|
||||
mysql -h $HOST -u $USER -p$PASSWORD -P $PORT -e "$query" &> /dev/null
|
||||
|
||||
query="GRANT ALL ON \`$database\`.* TO \`$DBUSER\`@\`%\`"
|
||||
mysql -h $HOST -u $USER -p$PASSWORD -P $PORT -e "$query" &> /dev/null
|
||||
|
||||
query="GRANT ALL ON \`$database\`.* TO \`$DBUSER\`@localhost"
|
||||
mysql -h $HOST -u $USER -p$PASSWORD -P $PORT -e "$query" &> /dev/null
|
||||
|
||||
query="UPDATE mysql.user SET Password='$MD5' WHERE User='$DBUSER';"
|
||||
mysql -h $HOST -u $USER -p$PASSWORD -P $PORT -e "$query" &> /dev/null
|
||||
}
|
||||
|
||||
# Rebuild PostgreSQL database
|
||||
rebuild_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 -p $PORT -c "$query" &> /dev/null
|
||||
if [ '0' -ne "$?" ]; then
|
||||
echo "Error: Connection failed"
|
||||
log_event "$E_DB" "$EVENT"
|
||||
exit $E_DB
|
||||
fi
|
||||
|
||||
query="CREATE ROLE $DBUSER"
|
||||
psql -h $HOST -U $USER -p $PORT -c "$query" &> /dev/null
|
||||
|
||||
query="UPDATE pg_authid SET rolpassword='$MD5' WHERE rolname='$DBUSER'"
|
||||
psql -h $HOST -U $USER -p $PORT -c "$query" &> /dev/null
|
||||
|
||||
query="CREATE DATABASE $database OWNER $DBUSER"
|
||||
if [ "$TPL" = 'template0' ]; then
|
||||
query="$query ENCODING '$CHARSET' TEMPLATE $TPL"
|
||||
else
|
||||
query="$query TEMPLATE $TPL"
|
||||
fi
|
||||
psql -h $HOST -U $USER -p $PORT -c "$query" &> /dev/null
|
||||
|
||||
query="GRANT ALL PRIVILEGES ON DATABASE $database TO $DBUSER"
|
||||
psql -h $HOST -U $USER -p $PORT -c "$query" &> /dev/null
|
||||
|
||||
query="GRANT CONNECT ON DATABASE template1 to $dbuser"
|
||||
psql -h $HOST -U $USER -p $PORT -c "$query" &> /dev/null
|
||||
}
|
||||
|
|
39
func/ip.sh
39
func/ip.sh
|
@ -1,8 +1,9 @@
|
|||
# Validationg ip address
|
||||
is_ip_valid() {
|
||||
check_nat=$(grep -H "^NAT='$ip'" $VESTA/data/ips/* 2>/dev/null)
|
||||
if [ ! -e "$VESTA/data/ips/$ip" ] && [ -z "$check_nat" ] ; then
|
||||
echo "Error: IP $ip not exist"
|
||||
userip=${1-$ip}
|
||||
check_nat=$(grep -H "^NAT='$userip'" $VESTA/data/ips/* 2>/dev/null)
|
||||
if [ ! -e "$VESTA/data/ips/$userip" ] && [ -z "$check_nat" ] ; then
|
||||
echo "Error: IP $userip not exist"
|
||||
log_event "$E_NOTEXIST" "$EVENT"
|
||||
exit $E_NOTEXIST
|
||||
fi
|
||||
|
@ -10,10 +11,11 @@ is_ip_valid() {
|
|||
|
||||
# Check if ip availabile for user
|
||||
is_ip_avalable() {
|
||||
if [ -e "$VESTA/data/ips/$ip" ]; then
|
||||
ip_data=$(cat $VESTA/data/ips/$ip)
|
||||
userip=${1-$ip}
|
||||
if [ -e "$VESTA/data/ips/$userip" ]; then
|
||||
ip_data=$(cat $VESTA/data/ips/$userip)
|
||||
else
|
||||
nated_ip=$(grep -H "^NAT='$ip'" $VESTA/data/ips/*)
|
||||
nated_ip=$(grep -H "^NAT='$userip'" $VESTA/data/ips/* 2>/dev/null)
|
||||
nated_ip=$(echo "$nated_ip" | cut -f 1 -d : | cut -f 7 -d /)
|
||||
ip_data=$(cat $VESTA/data/ips/$nated_ip)
|
||||
fi
|
||||
|
@ -24,7 +26,7 @@ is_ip_avalable() {
|
|||
shared='yes'
|
||||
fi
|
||||
if [ "$owner" != "$user" ] && [ "$shared" != 'yes' ]; then
|
||||
echo "Error: User $user don't have permission to use $ip"
|
||||
echo "Error: User $user don't have permission to use $userip"
|
||||
log_event "$E_FORBIDEN" "$EVENT"
|
||||
exit $E_FORBIDEN
|
||||
fi
|
||||
|
@ -196,6 +198,7 @@ create_ip_startup() {
|
|||
echo -e "$ip_data" > $iconf-$iface
|
||||
}
|
||||
|
||||
# Get real ip address
|
||||
get_real_ip() {
|
||||
if [ -e "$VESTA/data/ips/$1" ]; then
|
||||
echo $1
|
||||
|
@ -203,4 +206,24 @@ get_real_ip() {
|
|||
nated_ip=$(grep -H "^NAT='$1'" $VESTA/data/ips/*)
|
||||
echo "$nated_ip" | cut -f 1 -d : | cut -f 7 -d /
|
||||
fi
|
||||
}
|
||||
}
|
||||
|
||||
# Get user ip
|
||||
get_user_ip(){
|
||||
ip=$(grep -H "OWNER='$1'" $VESTA/data/ips/* 2>/dev/null | head -n1)
|
||||
ip=$(echo "$ip" | cut -f 7 -d / | cut -f 1 -d :)
|
||||
|
||||
if [ -z "$ip" ]; then
|
||||
admin_ips=$(grep -H "OWNER='admin'" $VESTA/data/ips/* 2>/dev/null)
|
||||
admin_ips=$(echo "$admin_ips" | cut -f 7 -d / | cut -f 1 -d :)
|
||||
for admin_ip in $admin_ips; do
|
||||
if [ -z "$ip" ]; then
|
||||
shared=$(grep "STATUS='shared'" $VESTA/data/ips/$admin_ip)
|
||||
if [ ! -z "$shared" ]; then
|
||||
ip=$admin_ip
|
||||
fi
|
||||
fi
|
||||
done
|
||||
fi
|
||||
echo "$ip"
|
||||
}
|
||||
|
|
30
func/main.sh
30
func/main.sh
|
@ -170,8 +170,8 @@ is_backup_scheduled() {
|
|||
fi
|
||||
}
|
||||
|
||||
# Check if object is free and can be created
|
||||
is_object_free() {
|
||||
# Check if object is new
|
||||
is_object_new() {
|
||||
if [ $2 = 'USER' ]; then
|
||||
if [ -d "$USER_DATA" ]; then
|
||||
object="OK"
|
||||
|
@ -588,7 +588,7 @@ validate_format_username() {
|
|||
validate_format_domain() {
|
||||
exclude="[!|@|#|$|^|&|*|(|)|+|=|{|}|:|,|<|>|?|_|/|\|\"|'|;|%|\`| ]"
|
||||
if [[ "$1" =~ $exclude ]] || [[ "$1" =~ "^[0-9]+$" ]]; then
|
||||
echo "Error: domain $1 is not valid"
|
||||
echo "Error: $2 $1 is not valid"
|
||||
log_event "$E_INVALID" "$EVENT"
|
||||
exit $E_INVALID
|
||||
fi
|
||||
|
@ -687,10 +687,10 @@ validate_format_dvalue() {
|
|||
validate_format_ip "$1"
|
||||
fi
|
||||
if [ "$rtype" = 'NS' ]; then
|
||||
validate_format_domain "$1"
|
||||
validate_format_domain "$1" 'ns_record'
|
||||
fi
|
||||
if [ "$rtype" = 'MX' ]; then
|
||||
validate_format_domain "$1"
|
||||
validate_format_domain "$1" 'mx_record'
|
||||
validate_format_int "$priority"
|
||||
fi
|
||||
|
||||
|
@ -730,7 +730,7 @@ validate_format(){
|
|||
antispam) validate_format_boolean "$arg" 'antispam' ;;
|
||||
antivirus) validate_format_boolean "$arg" 'antivirus' ;;
|
||||
autoreply) validate_format_autoreply "$arg" ;;
|
||||
backup) validate_format_date "$arg" ;;
|
||||
backup) validate_format_domain "$arg" 'backup' ;;
|
||||
charset) validate_format_name "$arg" "$arg_name" ;;
|
||||
charsets) validate_format_common "$arg" 'charsets' ;;
|
||||
database) validate_format_database "$arg" 'database';;
|
||||
|
@ -739,8 +739,8 @@ validate_format(){
|
|||
dbuser) validate_format_database "$arg" 'db_user';;
|
||||
dkim) validate_format_boolean "$arg" 'dkim' ;;
|
||||
dkim_size) validate_format_key_size "$arg" ;;
|
||||
domain) validate_format_domain "$arg" ;;
|
||||
dom_alias) validate_format_domain_alias "$arg" ;;
|
||||
domain) validate_format_domain "$arg" 'domain';;
|
||||
dom_alias) validate_format_domain_alias "$arg" 'alias';;
|
||||
dvalue) validate_format_dvalue "$arg";;
|
||||
email) validate_format_email "$arg" ;;
|
||||
exp) validate_format_date "$arg" ;;
|
||||
|
@ -749,12 +749,12 @@ validate_format(){
|
|||
forward) validate_format_email "$arg" ;;
|
||||
ftp_password) validate_format_password "$arg" ;;
|
||||
ftp_user) validate_format_username "$arg" "$arg_name" ;;
|
||||
host) validate_format_domain "$arg" "$arg_name" ;;
|
||||
host) validate_format_domain "$arg" "$arg_name" 'host';;
|
||||
hour) validate_format_mhdmw "$arg" $arg_name ;;
|
||||
id) validate_format_int "$arg" ;;
|
||||
interface) validate_format_interface "$arg" ;;
|
||||
ip) validate_format_ip "$arg" ;;
|
||||
ip_name) validate_format_domain "$arg" ;;
|
||||
ip_name) validate_format_domain "$arg" 'domain';;
|
||||
ip_status) validate_format_ip_status "$arg" ;;
|
||||
job) validate_format_int "$arg" ;;
|
||||
key) validate_format_username "$arg" "$arg_name" ;;
|
||||
|
@ -765,10 +765,10 @@ validate_format(){
|
|||
min) validate_format_mhdmw "$arg" $arg_name ;;
|
||||
month) validate_format_mhdmw "$arg" $arg_name ;;
|
||||
nat_ip) validate_format_ip "$arg" ;;
|
||||
ns1) validate_format_domain "$arg" ;;
|
||||
ns2) validate_format_domain "$arg" ;;
|
||||
ns3) validate_format_domain "$arg" ;;
|
||||
ns4) validate_format_domain "$arg" ;;
|
||||
ns1) validate_format_domain "$arg" 'name_server';;
|
||||
ns2) validate_format_domain "$arg" 'name_server';;
|
||||
ns3) validate_format_domain "$arg" 'name_server';;
|
||||
ns4) validate_format_domain "$arg" 'name_server';;
|
||||
package) validate_format_name "$arg" "$arg_name" ;;
|
||||
password) validate_format_password "$arg" ;;
|
||||
port) validate_format_int "$arg" ;;
|
||||
|
@ -777,7 +777,7 @@ validate_format(){
|
|||
record) validate_format_common "$arg" 'record';;
|
||||
rtype) validate_format_dns_type "$arg" ;;
|
||||
shell) validate_format_shell "$arg" ;;
|
||||
soa) validate_format_domain "$arg" ;;
|
||||
soa) validate_format_domain "$arg" 'soa_record';;
|
||||
stats_pass) validate_format_password "$arg" ;;
|
||||
stats_user) validate_format_username "$arg" "$arg_name" ;;
|
||||
template) validate_format_name "$arg" "$arg_name" ;;
|
||||
|
|
484
func/rebuild.sh
Normal file
484
func/rebuild.sh
Normal file
|
@ -0,0 +1,484 @@
|
|||
# WEB domain rebuild
|
||||
rebuild_web_domain_conf() {
|
||||
|
||||
# Get domain values
|
||||
domain_idn=$(idn -t --quiet -a "$domain")
|
||||
get_domain_values 'web'
|
||||
ip=$(get_real_ip $IP)
|
||||
|
||||
# Preparing domain values for the template substitution
|
||||
upd_web_domain_values
|
||||
|
||||
# Rebuilding directories
|
||||
mkdir -p $HOMEDIR/$user/web/$domain \
|
||||
$HOMEDIR/$user/web/$domain/public_html \
|
||||
$HOMEDIR/$user/web/$domain/public_shtml \
|
||||
$HOMEDIR/$user/web/$domain/document_errors \
|
||||
$HOMEDIR/$user/web/$domain/cgi-bin \
|
||||
$HOMEDIR/$user/web/$domain/private \
|
||||
$HOMEDIR/$user/web/$domain/stats \
|
||||
$HOMEDIR/$user/web/$domain/logs
|
||||
|
||||
# Create domain logs
|
||||
touch /var/log/httpd/domains/$domain.bytes \
|
||||
/var/log/httpd/domains/$domain.log \
|
||||
/var/log/httpd/domains/$domain.error.log
|
||||
|
||||
# Create symlinks
|
||||
cd $HOMEDIR/$user/web/$domain/logs/
|
||||
ln -f -s /var/log/httpd/domains/$domain.log .
|
||||
ln -f -s /var/log/httpd/domains/$domain.error.log .
|
||||
cd - > /dev/null
|
||||
|
||||
# Propagate html skeleton
|
||||
if [ ! -e "$WEBTPL/skel/document_errors/" ]; then
|
||||
cp -r $WEBTPL/skel/document_errors/ $HOMEDIR/$user/web/$domain/
|
||||
fi
|
||||
|
||||
# Set folder permissions
|
||||
chmod 551 $HOMEDIR/$user/web/$domain
|
||||
chmod 751 $HOMEDIR/$user/web/$domain/private
|
||||
chmod 751 $HOMEDIR/$user/web/$domain/cgi-bin
|
||||
chmod 751 $HOMEDIR/$user/web/$domain/public_html
|
||||
chmod 751 $HOMEDIR/$user/web/$domain/public_shtml
|
||||
chmod 751 $HOMEDIR/$user/web/$domain/document_errors
|
||||
chmod 551 $HOMEDIR/$user/web/$domain/stats
|
||||
chmod 551 $HOMEDIR/$user/web/$domain/logs
|
||||
chmod 640 /var/log/httpd/domains/$domain.*
|
||||
|
||||
# Set ownership
|
||||
chown $user:$user $HOMEDIR/$user/web/$domain
|
||||
chown $user:$user $HOMEDIR/$user/web/$domain/private
|
||||
chown $user:$user $HOMEDIR/$user/web/$domain/cgi-bin
|
||||
chown $user:$user $HOMEDIR/$user/web/$domain/public_html
|
||||
chown $user:$user $HOMEDIR/$user/web/$domain/public_shtml
|
||||
chown -R $user:$user $HOMEDIR/$user/web/$domain/document_errors
|
||||
chown root:$user /var/log/httpd/domains/$domain.*
|
||||
|
||||
|
||||
# Adding tmp_httpd.conf
|
||||
tpl_file="$WEBTPL/apache_$TPL.tpl"
|
||||
conf="$HOMEDIR/$user/conf/web/tmp_httpd.conf"
|
||||
add_web_config
|
||||
chown root:apache $conf
|
||||
chmod 640 $conf
|
||||
|
||||
# Running template trigger
|
||||
if [ -x $WEBTPL/apache_$TPL.sh ]; then
|
||||
$WEBTPL/apache_$TPL.sh $user $domain $ip $HOMEDIR $docroot
|
||||
fi
|
||||
|
||||
# Checking aliases
|
||||
if [ ! -z "$ALIAS" ]; then
|
||||
aliases=$(echo "$ALIAS"|tr ',' '\n'| wc -l)
|
||||
user_aliases=$((user_aliases + aliases))
|
||||
fi
|
||||
|
||||
# Checking stats
|
||||
if [ ! -z "$STATS" ]; then
|
||||
cat $WEBTPL/$STATS.tpl |\
|
||||
sed -e "s/%ip%/$ip/g" \
|
||||
-e "s/%web_port%/$WEB_PORT/g" \
|
||||
-e "s/%web_ssl_port%/$WEB_SSL_PORT/g" \
|
||||
-e "s/%proxy_port%/$PROXY_PORT/g" \
|
||||
-e "s/%proxy_ssl_port%/$PROXY_SSL_PORT/g" \
|
||||
-e "s/%domain_idn%/$domain_idn/g" \
|
||||
-e "s/%domain%/$domain/g" \
|
||||
-e "s/%user%/$user/g" \
|
||||
-e "s/%home%/${HOMEDIR////\/}/g" \
|
||||
-e "s/%alias%/${aliases//,/ }/g" \
|
||||
-e "s/%alias_idn%/${aliases_idn//,/ }/g" \
|
||||
> $HOMEDIR/$user/conf/web/$STATS.$domain.conf
|
||||
|
||||
if [ "$STATS" == 'awstats' ]; then
|
||||
if [ ! -e "/etc/awstats/$STATS.$domain_idn.conf" ]; then
|
||||
ln -s $HOMEDIR/$user/conf/web/$STATS.$domain.conf \
|
||||
/etc/awstats/$STATS.$domain_idn.conf
|
||||
fi
|
||||
fi
|
||||
|
||||
webstats="$BIN/v-update-web-domain-stat $user $domain"
|
||||
check_webstats=$(grep "$webstats" $VESTA/data/queue/webstats.pipe)
|
||||
if [ -z "$check_webstats" ]; then
|
||||
echo "$webstats" >> $VESTA/data/queue/webstats.pipe
|
||||
fi
|
||||
|
||||
if [ ! -z "$STATS_USER" ]; then
|
||||
stats_dir="$HOMEDIR/$user/web/$domain/stats"
|
||||
|
||||
# Adding htaccess file
|
||||
echo "AuthUserFile $stats_dir/.htpasswd" > $stats_dir/.htaccess
|
||||
echo "AuthName \"Web Statistics\"" >> $stats_dir/.htaccess
|
||||
echo "AuthType Basic" >> $stats_dir/.htaccess
|
||||
echo "Require valid-user" >> $stats_dir/.htaccess
|
||||
|
||||
# Generating htaccess user and password
|
||||
echo "$STATS_USER:$STATS_CRYPT" > $stats_dir/.htpasswd
|
||||
fi
|
||||
fi
|
||||
|
||||
# Checking ssl
|
||||
if [ "$SSL" = 'yes' ]; then
|
||||
# Adding domain to the shttpd.conf
|
||||
conf="$HOMEDIR/$user/conf/web/tmp_shttpd.conf"
|
||||
tpl_file="$WEBTPL/apache_$TPL.stpl"
|
||||
add_web_config
|
||||
chown root:apache $conf
|
||||
chmod 640 $conf
|
||||
|
||||
cp -f $USER_DATA/ssl/$domain.crt \
|
||||
$HOMEDIR/$user/conf/web/ssl.$domain.crt
|
||||
cp -f $USER_DATA/ssl/$domain.key \
|
||||
$HOMEDIR/$user/conf/web/ssl.$domain.key
|
||||
cp -f $USER_DATA/ssl/$domain.pem \
|
||||
$HOMEDIR/$user/conf/web/ssl.$domain.pem
|
||||
if [ -e "$USER_DATA/ssl/$domain.ca" ]; then
|
||||
cp -f $USER_DATA/ssl/$domain.ca \
|
||||
$HOMEDIR/$user/conf/web/ssl.$domain.ca
|
||||
fi
|
||||
|
||||
# Running template trigger
|
||||
if [ -x $WEBTPL/apache_$TPL.sh ]; then
|
||||
$WEBTPL/apache_$TPL.sh $user $domain $ip $HOMEDIR $sdocroot
|
||||
fi
|
||||
|
||||
user_ssl=$((user_ssl + 1))
|
||||
ssl_change='yes'
|
||||
fi
|
||||
|
||||
# Checking nginx
|
||||
if [ ! -z "$NGINX" ]; then
|
||||
tpl_file="$WEBTPL/nginx_$NGINX.tpl"
|
||||
conf="$HOMEDIR/$user/conf/web/tmp_nginx.conf"
|
||||
add_web_config
|
||||
chown root:nginx $conf
|
||||
chmod 640 $conf
|
||||
|
||||
if [ "$SSL" = 'yes' ]; then
|
||||
tpl_file="$WEBTPL/nginx_$NGINX.stpl"
|
||||
conf="$HOMEDIR/$user/conf/web/tmp_snginx.conf"
|
||||
add_web_config
|
||||
chown root:nginx $conf
|
||||
chmod 640 $conf
|
||||
fi
|
||||
ngix_change='yes'
|
||||
fi
|
||||
if [ "$SUSPENDED" = 'yes' ]; then
|
||||
suspended_web=$((suspended_web + 1))
|
||||
fi
|
||||
user_domains=$((user_domains + 1))
|
||||
|
||||
# Checking ftp
|
||||
if [ ! -z "$FTP_USER" ]; then
|
||||
if [ -z "$(grep ^$FTP_USER: /etc/passwd)" ]; then
|
||||
/usr/sbin/adduser -o -u $(id -u $user) -g $user -s /sbin/nologin \
|
||||
-M -d "$HOMEDIR/$user/web/$domain" $FTP_USER > /dev/null 2>&1
|
||||
|
||||
shadow='/etc/shadow'
|
||||
shdw=$(grep "^$FTP_USER:" $shadow)
|
||||
shdw3=$(echo "$shdw" | cut -f3 -d :)
|
||||
shdw4=$(echo "$shdw" | cut -f4 -d :)
|
||||
shdw5=$(echo "$shdw" | cut -f5 -d :)
|
||||
shdw6=$(echo "$shdw" | cut -f6 -d :)
|
||||
shdw7=$(echo "$shdw" | cut -f7 -d :)
|
||||
shdw8=$(echo "$shdw" | cut -f8 -d :)
|
||||
shdw9=$(echo "$shdw" | cut -f9 -d :)
|
||||
chmod u+w $shadow
|
||||
sed -i "/^$FTP_USER:*/d" $shadow
|
||||
shdw_str="$FTP_USER:$FTP_MD5:$shdw3:$shdw4:$shdw5:$shdw6"
|
||||
shdw_str="$shdw_str:$shdw7:$shdw8:$shdw9"
|
||||
echo "$shdw_str" >> $shadow
|
||||
chmod u-w $shadow
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
# DNS domain rebuild
|
||||
rebuild_dns_domain_conf() {
|
||||
|
||||
# Get domain values
|
||||
get_domain_values 'dns'
|
||||
domain_idn=$(idn -t --quiet -a "$domain")
|
||||
|
||||
# Checking zone file
|
||||
if [ ! -e "$USER_DATA/dns/$domain.conf" ]; then
|
||||
cat $DNSTPL/$TPL.tpl |\
|
||||
sed -e "s/%ip%/$IP/g" \
|
||||
-e "s/%domain_idn%/$domain_idn/g" \
|
||||
-e "s/%domain%/$domain/g" \
|
||||
-e "s/%ns1%/$ns1/g" \
|
||||
-e "s/%ns2%/$ns2/g" \
|
||||
-e "s/%ns3%/$ns3/g" \
|
||||
-e "s/%ns4%/$ns4/g" \
|
||||
-e "s/%time%/$TIME/g" \
|
||||
-e "s/%date%/$DATE/g" > $USER_DATA/dns/$domain.conf
|
||||
fi
|
||||
|
||||
# Sorting records
|
||||
sort_dns_records
|
||||
|
||||
# Updating zone
|
||||
update_domain_zone
|
||||
|
||||
# Set file permissions
|
||||
chmod 640 $HOMEDIR/$user/conf/dns/$domain.db
|
||||
chown root:named $HOMEDIR/$user/conf/dns/$domain.db
|
||||
|
||||
# Bind config check
|
||||
nconf='/etc/named.conf'
|
||||
if [ "$SUSPENDED" = 'yes' ]; then
|
||||
rm_string=$(grep -n /etc/namedb/$domain.db $nconf | cut -d : -f 1)
|
||||
if [ ! -z "$rm_string" ]; then
|
||||
sed -i "$rm_string d" $nconf
|
||||
fi
|
||||
suspended_dns=$((suspended_dns + 1))
|
||||
else
|
||||
if [ -z "$(grep /$domain.db $nconf)" ]; then
|
||||
named="zone \"$domain_idn\" {type master; file"
|
||||
named="$named \"$HOMEDIR/$user/conf/dns/$domain.db\";};"
|
||||
echo "$named" >> /etc/named.conf
|
||||
fi
|
||||
fi
|
||||
user_domains=$((user_domains + 1))
|
||||
records=$(wc -l $USER_DATA/dns/$domain.conf | cut -f 1 -d ' ')
|
||||
user_records=$((user_records + records))
|
||||
update_object_value 'dns' 'DOMAIN' "$domain" '$RECORDS' "$records"
|
||||
}
|
||||
|
||||
# MAIL domain rebuild
|
||||
rebuild_mail_domain_conf() {
|
||||
|
||||
# Get domain values
|
||||
get_domain_values 'mail'
|
||||
|
||||
# Rebuilding config structure
|
||||
rm -f /etc/exim/domains/$domain
|
||||
mkdir -p $HOMEDIR/$user/conf/mail/$domain
|
||||
ln -s $HOMEDIR/$user/conf/mail/$domain /etc/exim/domains/
|
||||
rm -f $HOMEDIR/$user/conf/mail/$domain/aliases
|
||||
rm -f $HOMEDIR/$user/conf/mail/$domain/protection
|
||||
rm -f $HOMEDIR/$user/conf/mail/$domain/passwd
|
||||
touch $HOMEDIR/$user/conf/mail/$domain/aliases
|
||||
touch $HOMEDIR/$user/conf/mail/$domain/protection
|
||||
touch $HOMEDIR/$user/conf/mail/$domain/passwd
|
||||
chown -R dovecot:mail $HOMEDIR/$user/conf/mail/$domain
|
||||
chown -R dovecot:mail /etc/exim/domains/$domain
|
||||
chmod 770 $HOMEDIR/$user/conf/mail/$domain
|
||||
chmod 660 $HOMEDIR/$user/conf/mail/$domain/*
|
||||
chmod 770 /etc/exim/domains/$domain
|
||||
|
||||
# Adding antispam protection
|
||||
if [ "$ANTISPAM" = 'yes' ]; then
|
||||
echo 'antispam' >> $HOMEDIR/$user/conf/mail/$domain/protection
|
||||
fi
|
||||
|
||||
# Adding antivirus protection
|
||||
if [ "$ANTIVIRUS" = 'yes' ]; then
|
||||
echo 'antivirus' >> $HOMEDIR/$user/conf/mail/$domain/protection
|
||||
fi
|
||||
|
||||
# Adding dkim
|
||||
if [ "$DKIM" = 'yes' ]; then
|
||||
U_MAIL_DKMI=$((U_MAIL_DKMI + 1))
|
||||
pem="$USER_DATA/mail/$domain.pem"
|
||||
pub="$USER_DATA/mail/$domain.pub"
|
||||
openssl genrsa -out $pem 512 &>/dev/null
|
||||
openssl rsa -pubout -in $pem -out $pub &>/dev/null
|
||||
chmod 660 $USER_DATA/mail/$domain.*
|
||||
|
||||
cp $pem $HOMEDIR/$user/conf/mail/$domain/dkim.pem
|
||||
chown root:mail $HOMEDIR/$user/conf/mail/$domain/dkim.pem
|
||||
chmod 660 $HOMEDIR/$user/conf/mail/$domain/dkim.pem
|
||||
|
||||
# Deleting old dkim records
|
||||
records=$($BIN/v-list-dns-domain-records $user $domain plain)
|
||||
dkim_records=$(echo "$records" |grep -w '_domainkey'|cut -f 1 -d ' ')
|
||||
for id in $dkim_records; do
|
||||
$BIN/v-delete-dns-domain-record $user $domain $id
|
||||
done
|
||||
|
||||
# Adding dkim dns records
|
||||
check_dns_domain=$(is_object_valid 'dns' 'DOMAIN' "$domain")
|
||||
if [ "$?" -eq 0 ]; then
|
||||
p=$(cat $pub|grep -v ' KEY---'|tr -d '\n')
|
||||
record='_domainkey'
|
||||
policy="\"t=y; o=~;\""
|
||||
$BIN/v-add-dns-domain-record $user $domain $record TXT "$policy"
|
||||
|
||||
record='mail._domainkey'
|
||||
slct="\"k=rsa\; p=$p\""
|
||||
$BIN/v-add-dns-domain-record $user $domain $record TXT "$slct"
|
||||
fi
|
||||
fi
|
||||
|
||||
# Removing symbolic link
|
||||
if [ "$SUSPENDED" = 'yes' ]; then
|
||||
SUSPENDED_MAIL=$((SUSPENDED_MAIL +1))
|
||||
rm -f /etc/exim/domains/$domain
|
||||
fi
|
||||
|
||||
if [ ! -e $HOMEDIR/$user/mail/$domain ]; then
|
||||
mkdir $HOMEDIR/$user/mail/$domain
|
||||
fi
|
||||
chown $user:mail $HOMEDIR/$user/mail/$domain
|
||||
chmod 770 $HOMEDIR/$user/mail/$domain
|
||||
|
||||
dom_aliases=$HOMEDIR/$user/conf/mail/$domain/aliases
|
||||
if [ ! -z "$CATCHALL" ]; then
|
||||
echo "*@$domain:$CATCHALL" >> $dom_aliases
|
||||
fi
|
||||
|
||||
# Rebuild domain accounts
|
||||
accs=0
|
||||
dom_diks=0
|
||||
if [ -e "$USER_DATA/mail/$domain.conf" ]; then
|
||||
accounts=$(search_objects "mail/$domain" 'SUSPENDED' "no" 'ACCOUNT')
|
||||
else
|
||||
accounts=''
|
||||
fi
|
||||
|
||||
for account in $accounts; do
|
||||
(( ++accs))
|
||||
dom_diks=$((dom_diks + U_DISK))
|
||||
object=$(grep "ACCOUNT='$account'" $USER_DATA/mail/$domain.conf)
|
||||
eval "$object"
|
||||
if [ "$SUSPENDED" = 'yes' ]; then
|
||||
MD5='SUSPENDED'
|
||||
fi
|
||||
|
||||
str="$account:$MD5:$user:mail::$HOMEDIR/$user:$QUOTA"
|
||||
echo $str >> $HOMEDIR/$user/conf/mail/$domain/passwd
|
||||
|
||||
for malias in ${ALIAS//,/ }; do
|
||||
echo "$malias@$domain:$account@$domain" >> $dom_aliases
|
||||
done
|
||||
if [ ! -z "$FWD" ]; then
|
||||
echo "$account@$domain:$FWD" >> $dom_aliases
|
||||
fi
|
||||
|
||||
done
|
||||
update_object_value 'mail' 'DOMAIN' "$domain" '$ACCOUNTS' "$accs"
|
||||
update_object_value 'mail' 'DOMAIN' "$domain" '$U_DISK' "$dom_diks"
|
||||
U_MAIL_ACCOUNTS=$((U_MAIL_ACCOUNTS + accs))
|
||||
U_DISK_MAIL=$((U_DISK_MAIL + dom_diks))
|
||||
U_MAIL_DOMAINS=$((U_MAIL_DOMAINS + 1))
|
||||
}
|
||||
|
||||
|
||||
# Rebuild MySQL
|
||||
rebuild_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"
|
||||
if [ ! -z "$send_mail" ]; then
|
||||
echo "Can't parse MySQL DB config" | $send_mail -s "$subj" $email
|
||||
fi
|
||||
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: Database connection to $HOST failed"
|
||||
if [ ! -z "$send_mail" ]; then
|
||||
echo "Database connection to MySQL host $HOST failed" |\
|
||||
$send_mail -s "$subj" $email
|
||||
fi
|
||||
log_event "$E_DB $EVENT"
|
||||
exit $E_DB
|
||||
fi
|
||||
|
||||
query="CREATE DATABASE \`$DB\` CHARACTER SET $CHARSET"
|
||||
mysql -h $HOST -u $USER -p$PASSWORD -e "$query" > /dev/null 2>&1
|
||||
|
||||
query="GRANT ALL ON \`$DB\`.* TO \`$DBUSER\`@\`%\`"
|
||||
mysql -h $HOST -u $USER -p$PASSWORD -e "$query" > /dev/null 2>&1
|
||||
|
||||
query="GRANT ALL ON \`$DB\`.* TO \`$DBUSER\`@localhost"
|
||||
mysql -h $HOST -u $USER -p$PASSWORD -e "$query" > /dev/null 2>&1
|
||||
|
||||
query="UPDATE mysql.user SET Password='$MD5' WHERE User='$DBUSER';"
|
||||
mysql -h $HOST -u $USER -p$PASSWORD -e "$query" > /dev/null 2>&1
|
||||
}
|
||||
|
||||
# Rebuild PostgreSQL
|
||||
rebuild_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"
|
||||
if [ ! -z "$send_mail" ]; then
|
||||
echo "Can't parse PostgreSQL config" | $send_mail -s "$subj" $email
|
||||
fi
|
||||
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"
|
||||
if [ ! -z "$send_mail" ]; then
|
||||
echo "Database connection to PostgreSQL host $HOST failed" |\
|
||||
$send_mail -s "$subj" $email
|
||||
fi
|
||||
log_event "$E_DB" "$EVENT"
|
||||
exit $E_DB
|
||||
fi
|
||||
|
||||
query="CREATE ROLE $DBUSER"
|
||||
psql -h $HOST -U $USER -c "$query" > /dev/null 2>&1
|
||||
|
||||
query="UPDATE pg_authid SET rolpassword='$MD5' WHERE rolname='$DBUSER'"
|
||||
psql -h $HOST -U $USER -c "$query" > /dev/null 2>&1
|
||||
|
||||
query="CREATE DATABASE $DB OWNER $DBUSER"
|
||||
if [ "$TPL" = 'template0' ]; then
|
||||
query="$query ENCODING '$CHARSET' TEMPLATE $TPL"
|
||||
else
|
||||
query="$query TEMPLATE $TPL"
|
||||
fi
|
||||
psql -h $HOST -U $USER -c "$query" > /dev/null 2>&1
|
||||
|
||||
query="GRANT ALL PRIVILEGES ON DATABASE $DB TO $DBUSER"
|
||||
psql -h $HOST -U $USER -c "$query" > /dev/null 2>&1
|
||||
|
||||
query="GRANT CONNECT ON DATABASE template1 to $dbuser"
|
||||
psql -h $HOST -U $USER -c "$query" > /dev/null 2>&1
|
||||
}
|
||||
|
||||
|
||||
# Import MySQL dump
|
||||
import_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
|
||||
|
||||
mysql -h $HOST -u $USER -p$PASSWORD $DB < $1 > /dev/null 2>&1
|
||||
}
|
||||
|
||||
|
||||
# Import PostgreSQL dump
|
||||
import_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
|
||||
|
||||
psql -h $HOST -U $USER $DB < $1 > /dev/null 2>&1
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue