mirror of
https://github.com/myvesta/vesta
synced 2025-08-19 13:01:52 -07:00
Merge remote-tracking branch 'upstream/master'
This commit is contained in:
commit
fad19fee73
894 changed files with 26796 additions and 14780 deletions
|
@ -23,7 +23,7 @@ source $VESTA/conf/vesta.conf
|
|||
#----------------------------------------------------------#
|
||||
|
||||
check_args '2' "$#" 'USER NOTIFICATION'
|
||||
validate_format 'user' 'nid'
|
||||
is_format_valid 'user' 'nid'
|
||||
is_object_valid 'user' 'USER' "$user"
|
||||
|
||||
|
||||
|
@ -61,6 +61,6 @@ if [ "$notice" = 'no' ]; then
|
|||
fi
|
||||
|
||||
# Logging
|
||||
log_event "$OK" "$EVENT"
|
||||
log_event "$OK" "$ARGUMENTS"
|
||||
|
||||
exit
|
||||
|
|
|
@ -62,6 +62,6 @@ if [ "$module" = 'SFTPJAIL' ]; then
|
|||
fi
|
||||
|
||||
# Logging
|
||||
log_event "$OK" "$EVENT"
|
||||
log_event "$OK" "$ARGUMENTS"
|
||||
|
||||
exit
|
||||
|
|
|
@ -94,7 +94,7 @@ EOF
|
|||
|
||||
if [ "$type" != 'local' ];then
|
||||
check_args '4' "$#" "TYPE HOST USERNAME PASSWORD [PATH] [PORT]"
|
||||
validate_format 'host'
|
||||
is_format_valid 'host'
|
||||
is_password_valid
|
||||
if [ "$type" = 'sftp' ]; then
|
||||
which expect >/dev/null 2>&1
|
||||
|
@ -117,7 +117,7 @@ if [ "$type" = 'ftp' ]; then
|
|||
grep -i -e failed -e error -e "can't" -e "not conn" -e "incorrect")
|
||||
if [ ! -z "$ferror" ]; then
|
||||
echo "Error: can't login to ftp $user@$host"
|
||||
log_event "$E_CONNECT" "$EVENT"
|
||||
log_event "$E_CONNECT" "$ARGUMENTS"
|
||||
exit $E_CONNECT
|
||||
fi
|
||||
|
||||
|
@ -129,7 +129,7 @@ if [ "$type" = 'ftp' ]; then
|
|||
echo "$ftp_result"
|
||||
rm -rf $tmpdir
|
||||
echo "Error: can't create $ftmpdir folder on the ftp"
|
||||
log_event "$E_FTP" "$EVENT"
|
||||
log_event "$E_FTP" "$ARGUMENTS"
|
||||
exit $E_FTP
|
||||
fi
|
||||
fi
|
||||
|
@ -137,15 +137,17 @@ if [ "$type" = 'sftp' ]; then
|
|||
if [ -z $port ]; then
|
||||
port=22
|
||||
fi
|
||||
if sftpc "mkdir $path" > /dev/null 2>&1 ; then
|
||||
sftmpdir="$path/vst.bK76A9SUkt"
|
||||
sftpc "mkdir $sftmpdir" "rmdir $sftmpdir" > /dev/null 2>&1
|
||||
fi
|
||||
rc=$?
|
||||
if [[ "$rc" != 0 ]]; then
|
||||
case $rc in
|
||||
$E_CONNECT) echo "Error: can't login to sftp $user@$host";;
|
||||
$E_FTP) echo "Error: can't create temp folder on the sftp host";;
|
||||
esac
|
||||
log_event "$rc" "$EVENT"
|
||||
log_event "$rc" "$ARGUMENTS"
|
||||
exit "$rc"
|
||||
fi
|
||||
fi
|
||||
|
@ -153,13 +155,12 @@ fi
|
|||
|
||||
# Adding backup host
|
||||
if [ $type != 'local' ]; then
|
||||
echo "HOST='$host'
|
||||
USERNAME='$user'
|
||||
PASSWORD='$password'
|
||||
BPATH='$path'
|
||||
PORT='$port'
|
||||
TIME='$TIME'
|
||||
DATE='$DATE'" > $VESTA/conf/$type.backup.conf
|
||||
time_n_date=$(date +'%T %F')
|
||||
time=$(echo "$time_n_date" |cut -f 1 -d \ )
|
||||
date=$(echo "$time_n_date" |cut -f 2 -d \ )
|
||||
str="HOST='$host'\nUSERNAME='$user'\nPASSWORD='$password'"
|
||||
str="$str\nBPATH='$path'\nPORT='$port'\nTIME='$time'\nDATE='$date'"
|
||||
echo -e "$str" > $VESTA/conf/$type.backup.conf
|
||||
chmod 660 $VESTA/conf/$type.backup.conf
|
||||
fi
|
||||
|
||||
|
@ -181,6 +182,6 @@ else
|
|||
fi
|
||||
|
||||
# Logging
|
||||
log_event "$OK" "$EVENT"
|
||||
log_event "$OK" "$ARGUMENTS"
|
||||
|
||||
exit
|
||||
|
|
|
@ -17,7 +17,7 @@ hour=$3
|
|||
day=$4
|
||||
month=$5
|
||||
wday=$6
|
||||
command=$(echo $7 | sed "s/'/%quote%/g")
|
||||
command=$(echo $7 |sed "s/'/%quote%/g")
|
||||
job=$8
|
||||
restart=$9
|
||||
|
||||
|
@ -25,8 +25,7 @@ restart=$9
|
|||
source $VESTA/func/main.sh
|
||||
source $VESTA/conf/vesta.conf
|
||||
|
||||
# Assigning new value
|
||||
A7="$command"
|
||||
HIDE=7
|
||||
|
||||
|
||||
#----------------------------------------------------------#
|
||||
|
@ -34,13 +33,13 @@ A7="$command"
|
|||
#----------------------------------------------------------#
|
||||
|
||||
check_args '7' "$#" 'USER MIN HOUR DAY MONTH WDAY COMMAND [JOB] [RESTART]'
|
||||
validate_format 'user' 'min' 'hour' 'day' 'month' 'wday' 'command'
|
||||
is_format_valid 'user' 'min' 'hour' 'day' 'month' 'wday' 'command'
|
||||
is_system_enabled "$CRON_SYSTEM" 'CRON_SYSTEM'
|
||||
is_object_valid 'user' 'USER' "$user"
|
||||
is_object_unsuspended 'user' 'USER' "$user"
|
||||
is_package_full 'CRON_JOBS'
|
||||
get_next_cronjob
|
||||
validate_format 'job'
|
||||
is_format_valid 'job'
|
||||
is_object_new 'cron' 'JOB' "$job"
|
||||
|
||||
|
||||
|
@ -48,9 +47,14 @@ is_object_new 'cron' 'JOB' "$job"
|
|||
# Action #
|
||||
#----------------------------------------------------------#
|
||||
|
||||
# Generating timestamp
|
||||
time_n_date=$(date +'%T %F')
|
||||
time=$(echo "$time_n_date" |cut -f 1 -d \ )
|
||||
date=$(echo "$time_n_date" |cut -f 2 -d \ )
|
||||
|
||||
# Concatenating cron string
|
||||
str="JOB='$job' MIN='$min' HOUR='$hour' DAY='$day' MONTH='$month' WDAY='$wday'"
|
||||
str="$str CMD='$command' SUSPENDED='no' TIME='$TIME' DATE='$DATE'"
|
||||
str="$str CMD='$command' SUSPENDED='no' TIME='$time' DATE='$date'"
|
||||
|
||||
# Adding to crontab
|
||||
echo "$str" >> $VESTA/data/users/$user/cron.conf
|
||||
|
@ -78,6 +82,6 @@ check_result $? "Cron restart failed" >/dev/null
|
|||
|
||||
# Logging
|
||||
log_history "added cron job $job"
|
||||
log_event "$OK" "$EVENT"
|
||||
log_event "$OK" "$ARGUMENTS"
|
||||
|
||||
exit
|
||||
|
|
|
@ -23,7 +23,7 @@ source $VESTA/conf/vesta.conf
|
|||
#----------------------------------------------------------#
|
||||
|
||||
check_args '1' "$#" 'USER'
|
||||
validate_format 'user'
|
||||
is_format_valid 'user'
|
||||
is_system_enabled "$CRON_SYSTEM" 'CRON_SYSTEM'
|
||||
is_object_valid 'user' 'USER' "$user"
|
||||
is_object_unsuspended 'user' 'USER' "$user"
|
||||
|
@ -50,6 +50,6 @@ check_result $? "Cron restart failed" >/dev/null
|
|||
|
||||
# Logging
|
||||
log_history "enabled cron reporting"
|
||||
log_event "$OK" "$EVENT"
|
||||
log_event "$OK" "$ARGUMENTS"
|
||||
|
||||
exit
|
||||
|
|
|
@ -38,6 +38,6 @@ fi
|
|||
#----------------------------------------------------------#
|
||||
|
||||
# Logging
|
||||
log_event "$OK" "$EVENT"
|
||||
log_event "$OK" "$ARGUMENTS"
|
||||
|
||||
exit
|
||||
|
|
|
@ -34,9 +34,14 @@ fi
|
|||
# Action #
|
||||
#----------------------------------------------------------#
|
||||
|
||||
# Generating timestamp
|
||||
time_n_date=$(date +'%T %F')
|
||||
time=$(echo "$time_n_date" |cut -f 1 -d \ )
|
||||
date=$(echo "$time_n_date" |cut -f 2 -d \ )
|
||||
|
||||
# Define time somewhere at night
|
||||
min=$(gen_password '012345' '2')
|
||||
hour=$(gen_password '1234567' '1')
|
||||
min=$(generate_password '012345' '2')
|
||||
hour=$(generate_password '1234567' '1')
|
||||
day='*'
|
||||
month='*'
|
||||
wday='*'
|
||||
|
@ -44,7 +49,7 @@ command='sudo /usr/local/vesta/bin/v-update-sys-vesta-all'
|
|||
|
||||
# Concatenating cron string
|
||||
str="JOB='$job' MIN='$min' HOUR='$hour' DAY='$day' MONTH='$month' WDAY='$wday'"
|
||||
str="$str CMD='$command' SUSPENDED='no' TIME='$TIME' DATE='$DATE'"
|
||||
str="$str CMD='$command' SUSPENDED='no' TIME='$time' DATE='$date'"
|
||||
|
||||
# Adding to crontab
|
||||
echo "$str" >> $VESTA/data/users/$user/cron.conf
|
||||
|
@ -72,6 +77,6 @@ check_result $? "Cron restart failed" >/dev/null
|
|||
|
||||
# Logging
|
||||
log_history "added cron job $job"
|
||||
log_event "$OK" "$EVENT"
|
||||
log_event "$OK" "$ARGUMENTS"
|
||||
|
||||
exit
|
||||
|
|
|
@ -36,14 +36,14 @@ source $VESTA/conf/vesta.conf
|
|||
#----------------------------------------------------------#
|
||||
|
||||
check_args '4' "$#" 'USER DATABASE DBUSER DBPASS [TYPE] [HOST] [CHARSET]'
|
||||
validate_format 'user' 'database' 'dbuser' 'charset'
|
||||
is_format_valid 'user' 'database' 'dbuser' 'charset'
|
||||
is_system_enabled "$DB_SYSTEM" 'DB_SYSTEM'
|
||||
is_type_valid "$DB_SYSTEM" "$type"
|
||||
is_object_valid 'user' 'USER' "$user"
|
||||
is_object_unsuspended 'user' 'USER' "$user"
|
||||
is_object_new 'db' 'DB' "$database"
|
||||
get_next_dbhost
|
||||
is_object_valid "../../../conf/$type" 'DBHOST' "$host"
|
||||
is_object_valid "../../../conf/$type" 'HOST' "$host"
|
||||
is_object_unsuspended "../../../conf/$type" 'DBHOST' "$host"
|
||||
#is_charset_valid
|
||||
is_package_full 'DATABASES'
|
||||
|
@ -66,14 +66,15 @@ esac
|
|||
# Vesta #
|
||||
#----------------------------------------------------------#
|
||||
|
||||
# Update time and date
|
||||
DATE=$(date +%F)
|
||||
TIME=$(date +%T)
|
||||
# Generating timestamp
|
||||
time_n_date=$(date +'%T %F')
|
||||
time=$(echo "$time_n_date" |cut -f 1 -d \ )
|
||||
date=$(echo "$time_n_date" |cut -f 2 -d \ )
|
||||
|
||||
# Adding db to db conf
|
||||
str="DB='$database' DBUSER='$dbuser' MD5='$md5' HOST='$host' TYPE='$type'"
|
||||
str="$str CHARSET='$charset' U_DISK='0' SUSPENDED='no' TIME='$TIME'"
|
||||
str="$str DATE='$DATE'"
|
||||
str="$str CHARSET='$charset' U_DISK='0' SUSPENDED='no' TIME='$time'"
|
||||
str="$str DATE='$date'"
|
||||
echo "$str" >> $USER_DATA/db.conf
|
||||
chmod 660 $USER_DATA/db.conf
|
||||
|
||||
|
@ -83,6 +84,6 @@ increase_user_value "$user" '$U_DATABASES'
|
|||
|
||||
# Logging
|
||||
log_history "added $type database $database"
|
||||
log_event "$OK" "$EVENT"
|
||||
log_event "$OK" "$ARGUMENTS"
|
||||
|
||||
exit
|
||||
|
|
|
@ -38,7 +38,7 @@ is_mysql_host_alive() {
|
|||
rm $mycnf
|
||||
if [ '0' -ne "$?" ]; then
|
||||
echo "Error: MySQL connection to $host failed"
|
||||
log_event "$E_CONNECT" "$EVENT"
|
||||
log_event "$E_CONNECT" "$ARGUMENTS"
|
||||
exit $E_CONNECT
|
||||
fi
|
||||
}
|
||||
|
@ -48,7 +48,7 @@ is_pgsql_host_alive() {
|
|||
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"
|
||||
log_event "$E_CONNECT" "$ARGUMENTS"
|
||||
exit $E_CONNECT
|
||||
fi
|
||||
}
|
||||
|
@ -60,7 +60,7 @@ is_pgsql_host_alive() {
|
|||
|
||||
args_usage='TYPE HOST DBUSER DBPASS [MAX_DB] [CHARSETS] [TPL]'
|
||||
check_args '4' "$#" "$args_usage"
|
||||
validate_format 'host' 'dbuser' 'max_db' 'charsets' 'template'
|
||||
is_format_valid 'host' 'dbuser' 'max_db' 'charsets' 'template'
|
||||
#is_system_enabled "$DB_SYSTEM" 'DB_SYSTEM'
|
||||
#is_type_valid "$DB_SYSTEM" "$type"
|
||||
is_dbhost_new
|
||||
|
@ -76,19 +76,23 @@ esac
|
|||
# Action #
|
||||
#----------------------------------------------------------#
|
||||
|
||||
# Generating timestamp
|
||||
time_n_date=$(date +'%T %F')
|
||||
time=$(echo "$time_n_date" |cut -f 1 -d \ )
|
||||
date=$(echo "$time_n_date" |cut -f 2 -d \ )
|
||||
|
||||
# Concatenating db host string
|
||||
case $type in
|
||||
mysql) str="HOST='$host' USER='$dbuser' PASSWORD='$dbpass'";
|
||||
str="$str CHARSETS='$charsets' MAX_DB='$max_db' U_SYS_USERS=''";
|
||||
str="$str U_DB_BASES='0' SUSPENDED='no' TIME='$TIME' DATE='$DATE'";;
|
||||
str="$str U_DB_BASES='0' SUSPENDED='no' TIME='$time' DATE='$date'";;
|
||||
pgsql) str="HOST='$host' USER='$dbuser' PASSWORD='$dbpass'";
|
||||
str="$str CHARSETS='$charsets' TPL='$template' MAX_DB='$max_db'";
|
||||
str="$str U_SYS_USERS='' U_DB_BASES='0' SUSPENDED='no'";
|
||||
str="$str TIME='$TIME' DATE='$DATE'";;
|
||||
str="$str TIME='$time' DATE='$date'";;
|
||||
esac
|
||||
|
||||
|
||||
|
||||
#----------------------------------------------------------#
|
||||
# Vesta #
|
||||
#----------------------------------------------------------#
|
||||
|
@ -110,6 +114,6 @@ else
|
|||
fi
|
||||
|
||||
# Logging
|
||||
log_event "$OK" "$EVENT"
|
||||
log_event "$OK" "$ARGUMENTS"
|
||||
|
||||
exit
|
||||
|
|
|
@ -17,8 +17,13 @@
|
|||
user=$1
|
||||
domain=$(idn -t --quiet -u "$2" )
|
||||
domain=$(echo $domain | sed -e 's/\.*$//g' -e 's/^\.*//g')
|
||||
domain=$(echo $domain | tr '[:upper:]' '[:lower:]')
|
||||
domain_idn=$(idn -t --quiet -a "$domain")
|
||||
if [[ "$domain" =~ [[:upper:]] ]]; then
|
||||
domain=$(echo "$domain" |tr '[:upper:]' '[:lower:]')
|
||||
fi
|
||||
domain_idn="$domain"
|
||||
if [[ "$domain" = *[![:ascii:]]* ]]; then
|
||||
domain_idn=$(idn -t --quiet -a $domain)
|
||||
fi
|
||||
ip=$3
|
||||
ns1=$4
|
||||
ns2=$5
|
||||
|
@ -41,48 +46,48 @@ source $VESTA/conf/vesta.conf
|
|||
#----------------------------------------------------------#
|
||||
|
||||
check_args '3' "$#" 'USER DOMAIN IP [NS1] [NS2] [NS3] [..] [NS8] [RESTART]'
|
||||
validate_format 'user' 'domain' 'ip'
|
||||
is_format_valid 'user' 'domain' 'ip'
|
||||
is_system_enabled "$DNS_SYSTEM" 'DNS_SYSTEM'
|
||||
is_object_valid 'user' 'USER' "$user"
|
||||
is_object_unsuspended 'user' 'USER' "$user"
|
||||
is_domain_new 'dns'
|
||||
is_domain_new 'dns' "$domain"
|
||||
is_package_full 'DNS_DOMAINS'
|
||||
template=$(get_user_value '$DNS_TEMPLATE')
|
||||
is_dns_template_valid
|
||||
is_dns_template_valid $template
|
||||
|
||||
if [ ! -z "$ns1" ]; then
|
||||
ns1=$(echo $4 | sed -e 's/\.*$//g' -e 's/^\.*//g')
|
||||
validate_format 'ns1'
|
||||
is_format_valid 'ns1'
|
||||
fi
|
||||
if [ ! -z "$ns2" ]; then
|
||||
ns2=$(echo $5 | sed -e 's/\.*$//g' -e 's/^\.*//g')
|
||||
validate_format 'ns2'
|
||||
is_format_valid 'ns2'
|
||||
fi
|
||||
|
||||
if [ ! -z "$ns3" ]; then
|
||||
ns3=$(echo $6 | sed -e 's/\.*$//g' -e 's/^\.*//g')
|
||||
validate_format 'ns3'
|
||||
is_format_valid 'ns3'
|
||||
fi
|
||||
if [ ! -z "$ns4" ]; then
|
||||
ns4=$(echo $7 | sed -e 's/\.*$//g' -e 's/^\.*//g')
|
||||
validate_format 'ns4'
|
||||
is_format_valid 'ns4'
|
||||
fi
|
||||
if [ ! -z "$ns5" ]; then
|
||||
ns5=$(echo $8 | sed -e 's/\.*$//g' -e 's/^\.*//g')
|
||||
validate_format 'ns5'
|
||||
is_format_valid 'ns5'
|
||||
fi
|
||||
if [ ! -z "$ns6" ]; then
|
||||
ns6=$(echo $9 | sed -e 's/\.*$//g' -e 's/^\.*//g')
|
||||
validate_format 'ns6'
|
||||
is_format_valid 'ns6'
|
||||
fi
|
||||
if [ ! -z "$ns7" ]; then
|
||||
ns7=$(echo ${10} | sed -e 's/\.*$//g' -e 's/^\.*//g')
|
||||
validate_format 'ns7'
|
||||
is_format_valid 'ns7'
|
||||
fi
|
||||
|
||||
if [ ! -z "$ns8" ]; then
|
||||
ns8=$(echo ${11} | sed -e 's/\.*$//g' -e 's/^\.*//g')
|
||||
validate_format 'ns8'
|
||||
is_format_valid 'ns8'
|
||||
fi
|
||||
|
||||
|
||||
|
@ -127,6 +132,11 @@ if [ -z "$ns8" ]; then
|
|||
template_data=$(echo "$template_data" |grep -v %ns8%)
|
||||
fi
|
||||
|
||||
# Generating timestamp
|
||||
time_n_date=$(date +'%T %F')
|
||||
time=$(echo "$time_n_date" |cut -f 1 -d \ )
|
||||
date=$(echo "$time_n_date" |cut -f 2 -d \ )
|
||||
|
||||
# Adding dns zone to the user config
|
||||
echo "$template_data" |\
|
||||
sed -e "s/%ip%/$ip/g" \
|
||||
|
@ -140,8 +150,8 @@ echo "$template_data" |\
|
|||
-e "s/%ns6%/$ns6/g" \
|
||||
-e "s/%ns7%/$ns7/g" \
|
||||
-e "s/%ns8%/$ns8/g" \
|
||||
-e "s/%time%/$TIME/g" \
|
||||
-e "s/%date%/$DATE/g" > $USER_DATA/dns/$domain.conf
|
||||
-e "s/%time%/$time/g" \
|
||||
-e "s/%date%/$date/g" > $USER_DATA/dns/$domain.conf
|
||||
|
||||
chmod 660 $USER_DATA/dns/$domain.conf
|
||||
records="$(wc -l $USER_DATA/dns/$domain.conf |cut -f 1 -d ' ')"
|
||||
|
@ -149,7 +159,7 @@ records="$(wc -l $USER_DATA/dns/$domain.conf |cut -f 1 -d ' ')"
|
|||
# Adding dns.conf record
|
||||
dns_rec="DOMAIN='$domain' IP='$ip' TPL='$template' TTL='$ttl' EXP='$exp'"
|
||||
dns_rec="$dns_rec SOA='$soa' SERIAL='$serial' SRC='' RECORDS='$records'"
|
||||
dns_rec="$dns_rec SUSPENDED='no' TIME='$TIME' DATE='$DATE'"
|
||||
dns_rec="$dns_rec SUSPENDED='no' TIME='$time' DATE='$date'"
|
||||
|
||||
echo "$dns_rec" >> $USER_DATA/dns.conf
|
||||
chmod 660 $USER_DATA/dns.conf
|
||||
|
@ -200,6 +210,6 @@ fi
|
|||
|
||||
# Logging
|
||||
log_history "added dns domain $domain"
|
||||
log_event "$OK" "$EVENT"
|
||||
log_event "$OK" "$ARGUMENTS"
|
||||
|
||||
exit
|
||||
|
|
|
@ -26,7 +26,7 @@ source $VESTA/conf/vesta.conf
|
|||
#----------------------------------------------------------#
|
||||
|
||||
check_args '3' "$#" 'USER ALIAS IP [RESTART]'
|
||||
validate_format 'user' 'alias' 'ip'
|
||||
is_format_valid 'user' 'alias' 'ip'
|
||||
is_system_enabled "$DNS_SYSTEM" 'DNS_SYSTEM'
|
||||
is_object_valid 'user' 'USER' "$user"
|
||||
is_object_unsuspended 'user' 'USER' "$user"
|
||||
|
@ -40,7 +40,7 @@ fi
|
|||
#----------------------------------------------------------#
|
||||
|
||||
# Logging
|
||||
log_event "$OK" "$EVENT"
|
||||
log_event "$OK" "$ARGUMENTS"
|
||||
|
||||
# Define additional vars
|
||||
sub_domain=$(echo "$alias" |awk -F '.' '{print $1}')
|
||||
|
|
|
@ -14,9 +14,7 @@
|
|||
|
||||
# Argument definition
|
||||
user=$1
|
||||
domain=$(idn -t --quiet -u "$2" )
|
||||
domain=$(echo $domain | tr '[:upper:]' '[:lower:]')
|
||||
domain_idn=$(idn -t --quiet -a "$domain")
|
||||
domain=$2
|
||||
record=$(idn -t --quiet -u "$3" )
|
||||
record=$(echo "$record" | tr '[:upper:]' '[:lower:]')
|
||||
rtype=$(echo "$4"| tr '[:lower:]' '[:upper:]')
|
||||
|
@ -28,6 +26,11 @@ if [ -z "$priority" ]; then
|
|||
priority=10
|
||||
fi
|
||||
|
||||
domain_idn="$domain"
|
||||
if [[ "$domain" = *[![:ascii:]]* ]]; then
|
||||
domain_idn=$(idn -t --quiet -a $domain)
|
||||
fi
|
||||
|
||||
# Includes
|
||||
source $VESTA/func/main.sh
|
||||
source $VESTA/func/domain.sh
|
||||
|
@ -52,7 +55,7 @@ fi
|
|||
#----------------------------------------------------------#
|
||||
|
||||
check_args '5' "$#" 'USER DOMAIN RECORD TYPE VALUE [PRIORITY] [ID] [RESTART]'
|
||||
validate_format 'user' 'domain' 'record' 'rtype' 'dvalue'
|
||||
is_format_valid 'user' 'domain' 'record' 'rtype' 'dvalue'
|
||||
is_system_enabled "$DNS_SYSTEM" 'DNS_SYSTEM'
|
||||
is_object_valid 'user' 'USER' "$user"
|
||||
is_object_unsuspended 'user' 'USER' "$user"
|
||||
|
@ -60,7 +63,7 @@ is_object_valid 'dns' 'DOMAIN' "$domain"
|
|||
is_object_unsuspended 'dns' 'DOMAIN' "$domain"
|
||||
is_package_full 'DNS_RECORDS'
|
||||
get_next_dnsrecord
|
||||
validate_format 'id'
|
||||
is_format_valid 'id'
|
||||
is_object_new "dns/$domain" 'ID' "$id"
|
||||
is_dns_fqnd "$rtype" "$dvalue"
|
||||
is_dns_nameserver_valid "$domain" "$rtype" "$dvalue"
|
||||
|
@ -70,10 +73,15 @@ is_dns_nameserver_valid "$domain" "$rtype" "$dvalue"
|
|||
# Action #
|
||||
#----------------------------------------------------------#
|
||||
|
||||
# Generating timestamp
|
||||
time_n_date=$(date +'%T %F')
|
||||
time=$(echo "$time_n_date" |cut -f 1 -d \ )
|
||||
date=$(echo "$time_n_date" |cut -f 2 -d \ )
|
||||
|
||||
# Adding record
|
||||
zone="$USER_DATA/dns/$domain.conf"
|
||||
dns_rec="ID='$id' RECORD='$record' TYPE='$rtype' PRIORITY='$priority'"
|
||||
dns_rec="$dns_rec VALUE='$dvalue' SUSPENDED='no' TIME='$TIME' DATE='$DATE'"
|
||||
dns_rec="$dns_rec VALUE='$dvalue' SUSPENDED='no' TIME='$time' DATE='$date'"
|
||||
echo "$dns_rec" >> $zone
|
||||
chmod 660 $zone
|
||||
|
||||
|
@ -114,6 +122,6 @@ fi
|
|||
|
||||
# Logging
|
||||
log_history "added $rtype dns record $record for $domain"
|
||||
log_event "$OK" "$EVENT"
|
||||
log_event "$OK" "$ARGUMENTS"
|
||||
|
||||
exit
|
||||
|
|
|
@ -25,9 +25,9 @@ source $VESTA/conf/vesta.conf
|
|||
# Verifications #
|
||||
#----------------------------------------------------------#
|
||||
check_args '2' "$#" 'USER DOMAIN [IP] [RESTART]'
|
||||
validate_format 'user' 'domain'
|
||||
is_format_valid 'user' 'domain'
|
||||
if [ ! -z "$ip" ] ; then
|
||||
validate_format 'ip'
|
||||
is_format_valid 'ip'
|
||||
fi
|
||||
is_object_valid 'user' 'USER' "$user"
|
||||
is_object_unsuspended 'user' 'USER' "$user"
|
||||
|
@ -39,11 +39,9 @@ is_object_unsuspended 'user' 'USER' "$user"
|
|||
|
||||
# Get ip if it wasn't defined
|
||||
if [ -z "$ip" ]; then
|
||||
ip=$(get_user_ip $user)
|
||||
get_user_ip
|
||||
if [ -z "$ip" ]; then
|
||||
echo "Error: no avaiable IP address"
|
||||
log_event "$E_NOTEXIST" "$EVENT"
|
||||
exit $E_NOTEXIST
|
||||
check_result $E_NOTEXIST "no avaiable IP address"
|
||||
fi
|
||||
fi
|
||||
|
||||
|
@ -55,7 +53,7 @@ fi
|
|||
|
||||
# Working on DNS domain
|
||||
if [ ! -z "$DNS_SYSTEM" ]; then
|
||||
$BIN/v-add-dns-domain $user $domain $ip "" "" "" "" "" 'no'
|
||||
$BIN/v-add-dns-domain $user $domain $ip "" "" "" "" "" '' '' '' 'no'
|
||||
check_result $? "can't add dns domain" >/dev/null
|
||||
fi
|
||||
|
||||
|
|
|
@ -29,7 +29,7 @@ source $VESTA/conf/vesta.conf
|
|||
#----------------------------------------------------------#
|
||||
|
||||
check_args '2' "$#" 'IP CHAIN'
|
||||
validate_format 'ip' 'chain'
|
||||
is_format_valid 'ip' 'chain'
|
||||
is_system_enabled "$FIREWALL_SYSTEM" 'FIREWALL_SYSTEM'
|
||||
|
||||
|
||||
|
@ -59,8 +59,13 @@ fi
|
|||
# Adding chain
|
||||
$BIN/v-add-firewall-chain $chain
|
||||
|
||||
# Generating timestamp
|
||||
time_n_date=$(date +'%T %F')
|
||||
time=$(echo "$time_n_date" |cut -f 1 -d \ )
|
||||
date=$(echo "$time_n_date" |cut -f 2 -d \ )
|
||||
|
||||
# Adding ip to banlist
|
||||
echo "IP='$ip' CHAIN='$chain' TIME='$TIME' DATE='$DATE'" >> $conf
|
||||
echo "IP='$ip' CHAIN='$chain' TIME='$time' DATE='$date'" >> $conf
|
||||
$iptables -I fail2ban-$chain 1 -s $ip \
|
||||
-j REJECT --reject-with icmp-port-unreachable 2>/dev/null
|
||||
|
||||
|
@ -73,6 +78,6 @@ chmod 660 $conf
|
|||
#----------------------------------------------------------#
|
||||
|
||||
# Logging
|
||||
log_event "$OK" "$EVENT"
|
||||
log_event "$OK" "$ARGUMENTS"
|
||||
|
||||
exit
|
||||
|
|
|
@ -31,7 +31,7 @@ source $VESTA/conf/vesta.conf
|
|||
#----------------------------------------------------------#
|
||||
|
||||
check_args '1' "$#" 'CHAIN [PORT] [PROTOCOL]'
|
||||
validate_format 'chain'
|
||||
is_format_valid 'chain'
|
||||
is_system_enabled "$FIREWALL_SYSTEM" 'FIREWALL_SYSTEM'
|
||||
|
||||
|
||||
|
@ -81,6 +81,6 @@ chmod 660 $chains
|
|||
#----------------------------------------------------------#
|
||||
|
||||
# Logging
|
||||
log_event "$OK" "$EVENT"
|
||||
log_event "$OK" "$ARGUMENTS"
|
||||
|
||||
exit
|
||||
|
|
|
@ -47,13 +47,13 @@ sort_fw_rules() {
|
|||
#----------------------------------------------------------#
|
||||
|
||||
check_args '3' "$#" 'ACTION IP PORT [PROTOCOL] [COMMENT] [RULE]'
|
||||
validate_format 'action' 'protocol' 'port_ext' 'ip'
|
||||
is_format_valid 'action' 'protocol' 'port_ext' 'ip'
|
||||
is_system_enabled "$FIREWALL_SYSTEM" 'FIREWALL_SYSTEM'
|
||||
get_next_fw_rule
|
||||
validate_format 'rule'
|
||||
is_format_valid 'rule'
|
||||
is_object_new '../../data/firewall/rules' 'RULE' "$rule"
|
||||
if [ ! -z "$comment" ]; then
|
||||
validate_format 'comment'
|
||||
is_format_valid 'comment'
|
||||
fi
|
||||
|
||||
|
||||
|
@ -61,10 +61,15 @@ fi
|
|||
# Action #
|
||||
#----------------------------------------------------------#
|
||||
|
||||
# Generating timestamp
|
||||
time_n_date=$(date +'%T %F')
|
||||
time=$(echo "$time_n_date" |cut -f 1 -d \ )
|
||||
date=$(echo "$time_n_date" |cut -f 2 -d \ )
|
||||
|
||||
# Concatenating rule
|
||||
str="RULE='$rule' ACTION='$action' PROTOCOL='$protocol' PORT='$port_ext'"
|
||||
str="$str IP='$ip' COMMENT='$comment' SUSPENDED='no'"
|
||||
str="$str TIME='$TIME' DATE='$DATE'"
|
||||
str="$str TIME='$time' DATE='$date'"
|
||||
|
||||
# Adding to config
|
||||
echo "$str" >> $VESTA/data/firewall/rules.conf
|
||||
|
@ -84,6 +89,6 @@ $BIN/v-update-firewall
|
|||
#----------------------------------------------------------#
|
||||
|
||||
# Logging
|
||||
log_event "$OK" "$EVENT"
|
||||
log_event "$OK" "$ARGUMENTS"
|
||||
|
||||
exit
|
||||
|
|
97
bin/v-add-letsencrypt-domain
Executable file
97
bin/v-add-letsencrypt-domain
Executable file
|
@ -0,0 +1,97 @@
|
|||
#!/bin/bash
|
||||
# info: adding letsencrypt ssl cetificate for domain
|
||||
# options: USER DOMAIN [ALIASES] [RESTART]
|
||||
#
|
||||
# The function turns on SSL support for a domain. Parameter ssl_dir is a path
|
||||
# to directory where 2 or 3 ssl files can be found. Certificate file
|
||||
# domain.tld.crt and its key domain.tld.key are mandatory. Certificate
|
||||
# authority domain.tld.ca file is optional. If home directory parameter
|
||||
# (ssl_home) is not set, https domain uses public_shtml as separate
|
||||
# documentroot directory.
|
||||
|
||||
|
||||
#----------------------------------------------------------#
|
||||
# Variable&Function #
|
||||
#----------------------------------------------------------#
|
||||
|
||||
# Argument definition
|
||||
user=$1
|
||||
domain=$2
|
||||
aliases=$3
|
||||
restart=$4
|
||||
|
||||
# Includes
|
||||
source $VESTA/func/main.sh
|
||||
source $VESTA/func/domain.sh
|
||||
source $VESTA/conf/vesta.conf
|
||||
|
||||
|
||||
#----------------------------------------------------------#
|
||||
# Verifications #
|
||||
#----------------------------------------------------------#
|
||||
|
||||
check_args '2' "$#" 'USER DOMAIN [ALIASES] [RESTART]'
|
||||
is_format_valid 'user' 'domain'
|
||||
is_system_enabled "$WEB_SYSTEM" 'WEB_SYSTEM'
|
||||
is_system_enabled "$WEB_SSL" 'SSL_SUPPORT'
|
||||
is_object_valid 'user' 'USER' "$user"
|
||||
is_object_unsuspended 'user' 'USER' "$user"
|
||||
is_object_valid 'web' 'DOMAIN' "$domain"
|
||||
is_object_unsuspended 'web' 'DOMAIN' "$domain"
|
||||
|
||||
|
||||
#----------------------------------------------------------#
|
||||
# Action #
|
||||
#----------------------------------------------------------#
|
||||
|
||||
# Registering LetsEncrypt user account
|
||||
$BIN/v-add-letsencrypt-user $user
|
||||
check_result $? "LE account registration" >/dev/null
|
||||
source $USER_DATA/ssl/le.conf
|
||||
email=$EMAIL
|
||||
|
||||
# Validating domain and aliases
|
||||
i=1
|
||||
for alias in $(echo $domain,$aliases |tr ',' '\n' |sort -u); do
|
||||
$BIN/v-check-letsencrypt-domain $user $alias
|
||||
check_result $? "LE domain validation" >/dev/null
|
||||
if [ "$i" -gt 6 ]; then
|
||||
check_result $E_LIMIT "LE can't sign more than 6 domains"
|
||||
fi
|
||||
i=$((i++))
|
||||
done
|
||||
|
||||
# Generating CSR
|
||||
ssl_dir=$($BIN/v-generate-ssl-cert "$domain" "$email" "US" "California" \
|
||||
"San Francisco" "Vesta" "IT" "$aliases" |tail -n1 |awk '{print $2}')
|
||||
|
||||
# Signing CSR
|
||||
crt=$($BIN/v-sign-letsencrypt-csr $user $domain $ssl_dir)
|
||||
check_result $? "$crt"
|
||||
echo "$crt" > $ssl_dir/$domain.crt
|
||||
|
||||
# Dowloading CA certificate
|
||||
le_certs='https://letsencrypt.org/certs'
|
||||
x1='lets-encrypt-x1-cross-signed.pem.txt'
|
||||
x3='lets-encrypt-x3-cross-signed.pem.txt'
|
||||
issuer=$(openssl x509 -text -in $ssl_dir/$domain.crt |grep "Issuer:")
|
||||
if [ -z "$(echo $issuer|grep X3)" ]; then
|
||||
curl -s $le_certs/$x1 > $ssl_dir/$domain.ca
|
||||
else
|
||||
curl -s $le_certs/$x3 > $ssl_dir/$domain.ca
|
||||
fi
|
||||
|
||||
# Adding SSL
|
||||
$BIN/v-delete-web-domain-ssl $user $domain >/dev/null 2>&1
|
||||
$BIN/v-add-web-domain-ssl $user $domain $ssl_dir
|
||||
check_result $? "SSL install" >/dev/null
|
||||
|
||||
|
||||
#----------------------------------------------------------#
|
||||
# Vesta #
|
||||
#----------------------------------------------------------#
|
||||
|
||||
# Logging
|
||||
log_event "$OK" "$ARGUMENTS"
|
||||
|
||||
exit
|
111
bin/v-add-letsencrypt-user
Executable file
111
bin/v-add-letsencrypt-user
Executable file
|
@ -0,0 +1,111 @@
|
|||
#!/bin/bash
|
||||
# info: register letsencrypt user account
|
||||
# options: USER [EMAIL]
|
||||
#
|
||||
# The function creates and register LetsEncript account key
|
||||
|
||||
|
||||
#----------------------------------------------------------#
|
||||
# Variable&Function #
|
||||
#----------------------------------------------------------#
|
||||
|
||||
# Argument definition
|
||||
user=$1
|
||||
email=$2
|
||||
key_size=2048
|
||||
|
||||
# Includes
|
||||
source $VESTA/func/main.sh
|
||||
source $VESTA/conf/vesta.conf
|
||||
|
||||
# encode base64
|
||||
encode_base64() {
|
||||
cat |base64 |tr '+/' '-_' |tr -d '\r\n='
|
||||
}
|
||||
|
||||
|
||||
#----------------------------------------------------------#
|
||||
# Verifications #
|
||||
#----------------------------------------------------------#
|
||||
|
||||
check_args '1' "$#" 'USER [EMAIL]'
|
||||
is_format_valid 'user'
|
||||
is_object_valid 'user' 'USER' "$user"
|
||||
if [ -e "$USER_DATA/ssl/le.conf" ]; then
|
||||
exit
|
||||
fi
|
||||
|
||||
|
||||
#----------------------------------------------------------#
|
||||
# Action #
|
||||
#----------------------------------------------------------#
|
||||
|
||||
api='https://acme-v01.api.letsencrypt.org'
|
||||
agreement='https://letsencrypt.org/documents/LE-SA-v1.0.1-July-27-2015.pdf'
|
||||
if [ -z "$email" ]; then
|
||||
email=$(get_user_value '$CONTACT')
|
||||
fi
|
||||
|
||||
# Generating key
|
||||
key="$USER_DATA/ssl/user.key"
|
||||
if [ ! -e "$key" ]; then
|
||||
openssl genrsa -out $key $key_size >/dev/null 2>&1
|
||||
chmod 600 $key
|
||||
fi
|
||||
|
||||
# Defining key exponent
|
||||
exponent=$(openssl pkey -inform perm -in "$key" -noout -text_pub |\
|
||||
grep Exponent: |cut -f 2 -d '(' |cut -f 1 -d ')' |sed -e 's/x//' |\
|
||||
xxd -r -p |encode_base64)
|
||||
|
||||
# Defining key modulus
|
||||
modulus=$(openssl rsa -in "$key" -modulus -noout |\
|
||||
sed -e 's/^Modulus=//' |xxd -r -p |encode_base64)
|
||||
|
||||
# Defining key thumb
|
||||
thumb='{"e":"'$exponent'","kty":"RSA","n":"'"$modulus"'"}'
|
||||
thumb="$(echo -n "$thumb" |openssl dgst -sha256 -binary |encode_base64)"
|
||||
|
||||
# Defining JWK header
|
||||
header='{"e":"'$exponent'","kty":"RSA","n":"'"$modulus"'"}'
|
||||
header='{"alg":"RS256","jwk":'"$header"'}'
|
||||
|
||||
# Requesting nonce
|
||||
nonce=$(curl -s -I "$api/directory" |grep Nonce |cut -f 2 -d \ |tr -d '\r\n')
|
||||
protected=$(echo -n '{"nonce":"'"$nonce"'"}' |encode_base64)
|
||||
|
||||
# Defining registration query
|
||||
query='{"resource":"new-reg","contact":["mailto:'"$email"'"],'
|
||||
query=$query'"agreement":"'$agreement'"}'
|
||||
payload=$(echo -n "$query" |encode_base64)
|
||||
signature=$(printf "%s" "$protected.$payload" |\
|
||||
openssl dgst -sha256 -binary -sign "$key" |encode_base64)
|
||||
data='{"header":'"$header"',"protected":"'"$protected"'",'
|
||||
data=$data'"payload":"'"$payload"'","signature":"'"$signature"'"}'
|
||||
|
||||
# Sending request to LetsEncrypt API
|
||||
answer=$(curl -s -i -d "$data" "$api/acme/new-reg")
|
||||
status=$(echo "$answer" |grep HTTP/1.1 |tail -n1 |cut -f2 -d ' ')
|
||||
|
||||
# Checking http answer status
|
||||
if [[ "$status" -ne "201" ]] && [[ "$status" -ne "409" ]]; then
|
||||
check_result $E_CONNECT "LetsEncrypt account registration $status"
|
||||
fi
|
||||
|
||||
|
||||
#----------------------------------------------------------#
|
||||
# Vesta #
|
||||
#----------------------------------------------------------#
|
||||
|
||||
# Adding le.conf
|
||||
echo "EMAIL='$email'" > $USER_DATA/ssl/le.conf
|
||||
echo "EXPONENT='$exponent'" >> $USER_DATA/ssl/le.conf
|
||||
echo "MODULUS='$modulus'" >> $USER_DATA/ssl/le.conf
|
||||
echo "THUMB='$thumb'" >> $USER_DATA/ssl/le.conf
|
||||
chmod 660 $USER_DATA/ssl/le.conf
|
||||
|
||||
|
||||
# Logging
|
||||
log_event "$OK" "$ARGUMENTS"
|
||||
|
||||
exit
|
|
@ -29,9 +29,9 @@ source $VESTA/conf/vesta.conf
|
|||
#----------------------------------------------------------#
|
||||
|
||||
check_args '4' "$#" 'USER DOMAIN ACCOUNT PASSWORD [QUOTA]'
|
||||
validate_format 'user' 'domain' 'account'
|
||||
is_format_valid 'user' 'domain' 'account'
|
||||
if [ "$quota" != 'unlimited' ]; then
|
||||
validate_format 'quota'
|
||||
is_format_valid 'quota'
|
||||
fi
|
||||
is_system_enabled "$MAIL_SYSTEM" 'MAIL_SYSTEM'
|
||||
is_object_valid 'user' 'USER' "$user"
|
||||
|
@ -48,7 +48,7 @@ is_password_valid
|
|||
#----------------------------------------------------------#
|
||||
|
||||
# Generating hashed password
|
||||
salt=$(gen_password "$PW_MATRIX" "8")
|
||||
salt=$(generate_password "$PW_MATRIX" "8")
|
||||
md5="{MD5}$($BIN/v-generate-password-hash md5 $salt <<<$password)"
|
||||
|
||||
# Adding account info into password file
|
||||
|
@ -65,13 +65,18 @@ fi
|
|||
# Vesta #
|
||||
#----------------------------------------------------------#
|
||||
|
||||
# Generating timestamp
|
||||
time_n_date=$(date +'%T %F')
|
||||
time=$(echo "$time_n_date" |cut -f 1 -d \ )
|
||||
date=$(echo "$time_n_date" |cut -f 2 -d \ )
|
||||
|
||||
if [[ "$quota" -eq '0' ]]; then
|
||||
quota='unlimited'
|
||||
fi
|
||||
|
||||
str="ACCOUNT='$account' ALIAS='' QUOTA='$quota' AUTOREPLY='no' FWD=''"
|
||||
str="$str FWD_ONLY='' MD5='$md5' U_DISK='0' SUSPENDED='no' TIME='$TIME'"
|
||||
str="$str DATE='$DATE'"
|
||||
str="ACCOUNT='$account' ALIAS='' AUTOREPLY='no' FWD='' FWD_ONLY=''"
|
||||
str="$str MD5='$md5' QUOTA='$quota' U_DISK='0' SUSPENDED='no'"
|
||||
str="$str TIME='$time' DATE='$date'"
|
||||
echo "$str" >> $USER_DATA/mail/$domain.conf
|
||||
chmod 660 $USER_DATA/mail/$domain.conf
|
||||
|
||||
|
@ -82,6 +87,6 @@ update_object_value 'mail' 'DOMAIN' "$domain" '$ACCOUNTS' "$accounts"
|
|||
|
||||
# Logging
|
||||
log_history "added mail account $account@$domain"
|
||||
log_event "$OK" "$EVENT"
|
||||
log_event "$OK" "$ARGUMENTS"
|
||||
|
||||
exit
|
||||
|
|
|
@ -28,7 +28,7 @@ source $VESTA/conf/vesta.conf
|
|||
#----------------------------------------------------------#
|
||||
|
||||
check_args '4' "$#" 'USER DOMAIN ACCOUNT ALIAS'
|
||||
validate_format 'user' 'domain' 'account' 'malias'
|
||||
is_format_valid 'user' 'domain' 'account' 'malias'
|
||||
is_system_enabled "$MAIL_SYSTEM" 'MAIL_SYSTEM'
|
||||
is_object_valid 'user' 'USER' "$user"
|
||||
is_object_unsuspended 'user' 'USER' "$user"
|
||||
|
@ -65,6 +65,6 @@ update_object_value "mail/$domain" 'ACCOUNT' "$account" '$ALIAS' "$aliases"
|
|||
|
||||
# Logging
|
||||
log_history "added alias $malias to $account@$domain "
|
||||
log_event "$OK" "$EVENT"
|
||||
log_event "$OK" "$ARGUMENTS"
|
||||
|
||||
exit
|
||||
|
|
|
@ -35,7 +35,7 @@ fi
|
|||
#----------------------------------------------------------#
|
||||
|
||||
check_args '4' "$#" 'USER DOMAIN ACCOUNT MESSAGE'
|
||||
validate_format 'user' 'domain' 'account' 'autoreply'
|
||||
is_format_valid 'user' 'domain' 'account' 'autoreply'
|
||||
is_system_enabled "$MAIL_SYSTEM" 'MAIL_SYSTEM'
|
||||
is_object_valid 'user' 'USER' "$user"
|
||||
is_object_unsuspended 'user' 'USER' "$user"
|
||||
|
@ -70,6 +70,6 @@ update_object_value "mail/$domain" 'ACCOUNT' "$account" '$AUTOREPLY' 'yes'
|
|||
|
||||
# Logging
|
||||
log_history "added autoreply message on $account@$domain"
|
||||
log_event "$OK" "$EVENT"
|
||||
log_event "$OK" "$ARGUMENTS"
|
||||
|
||||
exit
|
||||
|
|
|
@ -28,7 +28,7 @@ source $VESTA/conf/vesta.conf
|
|||
#----------------------------------------------------------#
|
||||
|
||||
check_args '4' "$#" 'USER DOMAIN ACCOUNT FORWARD'
|
||||
validate_format 'user' 'domain' 'account' 'forward'
|
||||
is_format_valid 'user' 'domain' 'account' 'forward'
|
||||
is_system_enabled "$MAIL_SYSTEM" 'MAIL_SYSTEM'
|
||||
is_object_valid 'user' 'USER' "$user"
|
||||
is_object_unsuspended 'user' 'USER' "$user"
|
||||
|
@ -39,7 +39,7 @@ is_object_unsuspended "mail/$domain" 'ACCOUNT' "$account"
|
|||
fwd=$(get_object_value "mail/$domain" 'ACCOUNT' "$account" '$FWD')
|
||||
if [ ! -z "$(echo $fwd | grep -w $forward)" ]; then
|
||||
echo "Error: forward $forward exists"
|
||||
log_event "$E_EXISTS $EVENT"
|
||||
log_event "$E_EXISTS $ARGUMENTS"
|
||||
exit $E_EXISTS
|
||||
fi
|
||||
|
||||
|
@ -71,6 +71,6 @@ update_object_value "mail/$domain" 'ACCOUNT' "$account" '$FWD' "$fwd"
|
|||
|
||||
# Logging
|
||||
log_history "added forwarding from $account@$domain to $forward"
|
||||
log_event "$OK" "$EVENT"
|
||||
log_event "$OK" "$ARGUMENTS"
|
||||
|
||||
exit
|
||||
|
|
|
@ -34,7 +34,7 @@ fi
|
|||
#----------------------------------------------------------#
|
||||
|
||||
check_args '3' "$#" 'USER DOMAIN ACCOUNT'
|
||||
validate_format 'user' 'domain' 'account'
|
||||
is_format_valid 'user' 'domain' 'account'
|
||||
is_system_enabled "$MAIL_SYSTEM" 'MAIL_SYSTEM'
|
||||
is_object_valid 'user' 'USER' "$user"
|
||||
is_object_unsuspended 'user' 'USER' "$user"
|
||||
|
@ -45,7 +45,7 @@ is_object_unsuspended "mail/$domain" 'ACCOUNT' "$account"
|
|||
fwd=$(get_object_value "mail/$domain" 'ACCOUNT' "$account" '$FWD')
|
||||
if [ -z "$fwd" ]; then
|
||||
echo "Error: forward doesn't exist"
|
||||
log_event "$E_NOTEXIST $EVENT"
|
||||
log_event "$E_NOTEXIST $ARGUMENTS"
|
||||
exit $E_NOTEXIST
|
||||
fi
|
||||
|
||||
|
@ -71,6 +71,6 @@ update_object_value "mail/$domain" 'ACCOUNT' "$account" '$FWD_ONLY' "yes"
|
|||
|
||||
# Logging
|
||||
log_history "added fwd_only flag for $account@$domain"
|
||||
log_event "$OK" "$EVENT"
|
||||
log_event "$OK" "$ARGUMENTS"
|
||||
|
||||
exit
|
||||
|
|
|
@ -13,8 +13,13 @@
|
|||
user=$1
|
||||
domain=$(idn -t --quiet -u "$2" )
|
||||
domain=$(echo $domain | sed -e 's/\.*$//g' -e 's/^\.*//g')
|
||||
domain=$(echo $domain | tr '[:upper:]' '[:lower:]')
|
||||
domain_idn=$(idn -t --quiet -a "$domain")
|
||||
if [[ "$domain" =~ [[:upper:]] ]]; then
|
||||
domain=$(echo "$domain" |tr '[:upper:]' '[:lower:]')
|
||||
fi
|
||||
domain_idn="$domain"
|
||||
if [[ "$domain" = *[![:ascii:]]* ]]; then
|
||||
domain_idn=$(idn -t --quiet -a $domain)
|
||||
fi
|
||||
antispam=${3-yes}
|
||||
antivirus=${4-yes}
|
||||
dkim=${5-yes}
|
||||
|
@ -38,11 +43,11 @@ fi
|
|||
#----------------------------------------------------------#
|
||||
|
||||
check_args '2' "$#" 'USER DOMAIN [ANTISPAM] [ANTIVIRUS] [DKIM] [DKIM_SIZE]'
|
||||
validate_format 'user' 'domain' 'antispam' 'antivirus' 'dkim' 'dkim_size'
|
||||
is_format_valid 'user' 'domain' 'antispam' 'antivirus' 'dkim' 'dkim_size'
|
||||
is_system_enabled "$MAIL_SYSTEM" 'MAIL_SYSTEM'
|
||||
is_object_valid 'user' 'USER' "$user"
|
||||
is_object_unsuspended 'user' 'USER' "$user"
|
||||
is_domain_new 'mail'
|
||||
is_domain_new 'mail' "$domain"
|
||||
is_package_full 'MAIL_DOMAINS'
|
||||
|
||||
|
||||
|
@ -50,10 +55,15 @@ is_package_full 'MAIL_DOMAINS'
|
|||
# Action #
|
||||
#----------------------------------------------------------#
|
||||
|
||||
# Generating timestamp
|
||||
time_n_date=$(date +'%T %F')
|
||||
time=$(echo "$time_n_date" |cut -f 1 -d \ )
|
||||
date=$(echo "$time_n_date" |cut -f 2 -d \ )
|
||||
|
||||
# Adding domain to mail.conf
|
||||
s="DOMAIN='$domain' ANTIVIRUS='$antivirus' ANTISPAM='$antispam' DKIM='$dkim'"
|
||||
s="$s ACCOUNTS='0' U_DISK='0' CATCHALL='' SUSPENDED='no' TIME='$TIME'"
|
||||
s="$s DATE='$DATE'"
|
||||
s="$s CATCHALL='' ACCOUNTS='0' U_DISK='0' SUSPENDED='no' TIME='$time'"
|
||||
s="$s DATE='$date'"
|
||||
echo $s >> $USER_DATA/mail.conf
|
||||
touch $USER_DATA/mail/$domain.conf
|
||||
|
||||
|
@ -134,6 +144,6 @@ fi
|
|||
|
||||
# Logging
|
||||
log_history "added mail domain $domain"
|
||||
log_event "$OK" "$EVENT"
|
||||
log_event "$OK" "$ARGUMENTS"
|
||||
|
||||
exit
|
||||
|
|
|
@ -26,7 +26,7 @@ source $VESTA/conf/vesta.conf
|
|||
#----------------------------------------------------------#
|
||||
|
||||
check_args '2' "$#" 'USER DOMAIN'
|
||||
validate_format 'user' 'domain'
|
||||
is_format_valid 'user' 'domain'
|
||||
is_system_enabled "$MAIL_SYSTEM" 'MAIL_SYSTEM'
|
||||
is_object_valid 'user' 'USER' "$user"
|
||||
is_object_unsuspended 'user' 'USER' "$user"
|
||||
|
@ -54,6 +54,6 @@ update_object_value 'mail' 'DOMAIN' "$domain" '$ANTISPAM' 'yes'
|
|||
|
||||
# Logging
|
||||
log_history "enabled antispam on $domain"
|
||||
log_event "$OK" "$EVENT"
|
||||
log_event "$OK" "$ARGUMENTS"
|
||||
|
||||
exit
|
||||
|
|
|
@ -26,7 +26,7 @@ source $VESTA/conf/vesta.conf
|
|||
#----------------------------------------------------------#
|
||||
|
||||
check_args '2' "$#" 'USER DOMAIN'
|
||||
validate_format 'user' 'domain'
|
||||
is_format_valid 'user' 'domain'
|
||||
is_system_enabled "$MAIL_SYSTEM" 'MAIL_SYSTEM'
|
||||
is_object_valid 'user' 'USER' "$user"
|
||||
is_object_unsuspended 'user' 'USER' "$user"
|
||||
|
@ -54,6 +54,6 @@ update_object_value 'mail' 'DOMAIN' "$domain" '$ANTIVIRUS' 'yes'
|
|||
|
||||
# Logging
|
||||
log_history "enabled antivirus on $domain"
|
||||
log_event "$OK" "$EVENT"
|
||||
log_event "$OK" "$ARGUMENTS"
|
||||
|
||||
exit
|
||||
|
|
|
@ -27,7 +27,7 @@ source $VESTA/conf/vesta.conf
|
|||
#----------------------------------------------------------#
|
||||
|
||||
check_args '3' "$#" 'USER DOMAIN EMAIL'
|
||||
validate_format 'user' 'domain' 'email'
|
||||
is_format_valid 'user' 'domain' 'email'
|
||||
is_system_enabled "$MAIL_SYSTEM" 'MAIL_SYSTEM'
|
||||
is_object_valid 'user' 'USER' "$user"
|
||||
is_object_unsuspended 'user' 'USER' "$user"
|
||||
|
@ -56,6 +56,6 @@ update_object_value 'mail' 'DOMAIN' "$domain" '$CATCHALL' "$email"
|
|||
|
||||
# Logging
|
||||
log_history "added $email as catchall email for $domain"
|
||||
log_event "$OK" "$EVENT"
|
||||
log_event "$OK" "$ARGUMENTS"
|
||||
|
||||
exit
|
||||
|
|
|
@ -34,7 +34,7 @@ fi
|
|||
#----------------------------------------------------------#
|
||||
|
||||
check_args '2' "$#" 'USER DOMAIN [DKIM_SIZE]'
|
||||
validate_format 'user' 'domain' 'dkim_size'
|
||||
is_format_valid 'user' 'domain' 'dkim_size'
|
||||
is_system_enabled "$MAIL_SYSTEM" 'MAIL_SYSTEM'
|
||||
is_object_valid 'user' 'USER' "$user"
|
||||
is_object_unsuspended 'user' 'USER' "$user"
|
||||
|
@ -83,6 +83,6 @@ increase_user_value "$user" '$U_MAIL_DKMI'
|
|||
|
||||
# Logging
|
||||
log_history "enabled DKIM support for $domain"
|
||||
log_event "$OK" "$EVENT"
|
||||
log_event "$OK" "$ARGUMENTS"
|
||||
|
||||
exit
|
||||
|
|
|
@ -25,7 +25,7 @@ source $VESTA/conf/vesta.conf
|
|||
#----------------------------------------------------------#
|
||||
|
||||
check_args '2' "$#" 'USER DOMAIN [FLUSH]'
|
||||
validate_format 'user' 'domain'
|
||||
is_format_valid 'user' 'domain'
|
||||
is_system_enabled "$DNS_CLUSTER" 'DNS_CLUSTER'
|
||||
if [ ! -e "$VESTA/conf/dns-cluster.conf" ]; then
|
||||
check_result $E_NOTEXIST "dns-cluster.conf doesn't exist"
|
||||
|
|
|
@ -35,7 +35,7 @@ source $VESTA/conf/vesta.conf
|
|||
|
||||
args_usage='HOST PORT USER PASSWORD [TYPE] [DNS_USER]'
|
||||
check_args '4' "$#" "$args_usage"
|
||||
validate_format 'host' 'port' 'user' 'type' 'dns_user'
|
||||
is_format_valid 'host' 'port' 'user' 'type' 'dns_user'
|
||||
is_system_enabled "$DNS_SYSTEM" 'DNS_SYSTEM'
|
||||
is_password_valid
|
||||
is_dnshost_new
|
||||
|
@ -46,10 +46,15 @@ is_dnshost_alive
|
|||
# Action #
|
||||
#----------------------------------------------------------#
|
||||
|
||||
# Generating timestamp
|
||||
time_n_date=$(date +'%T %F')
|
||||
time=$(echo "$time_n_date" |cut -f 1 -d \ )
|
||||
date=$(echo "$time_n_date" |cut -f 2 -d \ )
|
||||
|
||||
# Concatentating dns host string
|
||||
str="HOST='$host' PORT='$port' USER='$user' PASSWORD='$password'"
|
||||
str="$str DNS_USER='$dns_user' TYPE='$type' SUSPENDED='no'"
|
||||
str="$str TIME='$TIME' DATE='$DATE'"
|
||||
str="$str TIME='$time' DATE='$date'"
|
||||
|
||||
# Adding host to dns-cluster.conf
|
||||
echo "$str" >> $VESTA/conf/dns-cluster.conf
|
||||
|
@ -83,6 +88,6 @@ if [ -z "$check_cron" ] && [ ! -z "$CRON_SYSTEM" ]; then
|
|||
fi
|
||||
|
||||
# Logging
|
||||
log_event "$OK" "$EVENT"
|
||||
log_event "$OK" "$ARGUMENTS"
|
||||
|
||||
exit
|
||||
|
|
|
@ -25,7 +25,7 @@ source $VESTA/conf/vesta.conf
|
|||
#----------------------------------------------------------#
|
||||
|
||||
check_args '3' "$#" 'USER DOMAIN ID'
|
||||
validate_format 'user' 'domain' 'id'
|
||||
is_format_valid 'user' 'domain' 'id'
|
||||
is_system_enabled "$DNS_CLUSTER" 'DNS_CLUSTER'
|
||||
is_object_valid 'user' 'USER' "$user"
|
||||
is_object_valid 'dns' 'DOMAIN' "$domain"
|
||||
|
|
|
@ -52,6 +52,6 @@ $BIN/v-update-firewall
|
|||
#----------------------------------------------------------#
|
||||
|
||||
# Logging
|
||||
log_event "$OK" "$EVENT"
|
||||
log_event "$OK" "$ARGUMENTS"
|
||||
|
||||
exit
|
||||
|
|
|
@ -35,15 +35,15 @@ source $VESTA/conf/vesta.conf
|
|||
#----------------------------------------------------------#
|
||||
|
||||
check_args '2' "$#" 'IP NETMASK [INTERFACE] [USER] [STATUS] [NAME] [NATED_IP]'
|
||||
validate_format 'ip' 'netmask' 'interface' 'user' 'ip_status'
|
||||
is_format_valid 'ip' 'netmask' 'interface' 'user' 'ip_status'
|
||||
is_ip_free
|
||||
is_object_valid 'user' 'USER' "$user"
|
||||
is_object_unsuspended 'user' 'USER' "$user"
|
||||
if [ ! -z "$ip_name" ] ; then
|
||||
validate_format 'ip_name'
|
||||
is_format_valid 'ip_name'
|
||||
fi
|
||||
if [ ! -z "$nat_ip" ] ; then
|
||||
validate_format 'nat_ip'
|
||||
is_format_valid 'nat_ip'
|
||||
fi
|
||||
|
||||
|
||||
|
@ -82,6 +82,11 @@ if [ -z "$sys_ip_check" ]; then
|
|||
fi
|
||||
fi
|
||||
|
||||
# Generating timestamp
|
||||
time_n_date=$(date +'%T %F')
|
||||
time=$(echo "$time_n_date" |cut -f 1 -d \ )
|
||||
date=$(echo "$time_n_date" |cut -f 2 -d \ )
|
||||
|
||||
# Adding vesta ip
|
||||
echo "OWNER='$user'
|
||||
STATUS='$ip_status'
|
||||
|
@ -91,8 +96,8 @@ U_WEB_DOMAINS='0'
|
|||
INTERFACE='$interface'
|
||||
NETMASK='$netmask'
|
||||
NAT='$nat_ip'
|
||||
TIME='$TIME'
|
||||
DATE='$DATE'" > $VESTA/data/ips/$ip
|
||||
TIME='$time'
|
||||
DATE='$date'" > $VESTA/data/ips/$ip
|
||||
chmod 660 $VESTA/data/ips/$ip
|
||||
|
||||
# WEB support
|
||||
|
@ -176,6 +181,6 @@ fi
|
|||
|
||||
# Logging
|
||||
log_history "added system ip address $ip" '' 'admin'
|
||||
log_event "$OK" "$EVENT"
|
||||
log_event "$OK" "$ARGUMENTS"
|
||||
|
||||
exit
|
||||
|
|
|
@ -87,6 +87,6 @@ done
|
|||
#----------------------------------------------------------#
|
||||
|
||||
# Logging
|
||||
log_event "$OK" "$EVENT"
|
||||
log_event "$OK" "$ARGUMENTS"
|
||||
|
||||
exit
|
||||
|
|
|
@ -58,12 +58,11 @@ fi
|
|||
if [ "$restart" = 'yes' ]; then
|
||||
subj="OpenSSH restart failed"
|
||||
email=$(grep CONTACT $VESTA/data/users/admin/user.conf |cut -f 2 -d \')
|
||||
send_mail="$VESTA/web/inc/mail-wrapper.php"
|
||||
/usr/sbin/sshd -t >/dev/null 2>&1
|
||||
if [ "$?" -ne 0 ]; then
|
||||
mail_text="OpenSSH can not be restarted. Please check config:
|
||||
\n\n$(/usr/sbin/sshd -t)"
|
||||
echo -e "$mail_text" | $send_mail -s "$subj" $email
|
||||
echo -e "$mail_text" |$SENDMAIL -s "$subj" $email
|
||||
else
|
||||
service ssh restart >/dev/null 2>&1
|
||||
service sshd restart >/dev/null 2>&1
|
||||
|
@ -101,6 +100,6 @@ fi
|
|||
#----------------------------------------------------------#
|
||||
|
||||
# Logging
|
||||
log_event "$OK" "$EVENT"
|
||||
log_event "$OK" "$ARGUMENTS"
|
||||
|
||||
exit
|
||||
|
|
|
@ -22,11 +22,9 @@ source $VESTA/func/main.sh
|
|||
source $VESTA/conf/vesta.conf
|
||||
|
||||
is_user_free() {
|
||||
check_sysuser=$(cut -f 1 -d : /etc/passwd | grep -w "$user" )
|
||||
check_sysuser=$(cut -f 1 -d : /etc/passwd | grep "^$user$" )
|
||||
if [ ! -z "$check_sysuser" ] || [ -e "$USER_DATA" ]; then
|
||||
echo "Error: user $user exists"
|
||||
log_event "$E_EXISTS" "$EVENT"
|
||||
exit $E_EXISTS
|
||||
check_result $E_EXISTS "user $user exists"
|
||||
fi
|
||||
}
|
||||
|
||||
|
@ -36,9 +34,9 @@ is_user_free() {
|
|||
#----------------------------------------------------------#
|
||||
|
||||
check_args '3' "$#" 'USER PASSWORD EMAIL [PACKAGE] [FNAME] [LNAME]'
|
||||
validate_format 'user' 'email' 'package'
|
||||
is_format_valid 'user' 'email' 'package'
|
||||
if [ ! -z "$fname" ]; then
|
||||
validate_format 'fname' 'lname'
|
||||
is_format_valid 'fname' 'lname'
|
||||
fi
|
||||
is_user_free "$user"
|
||||
is_password_valid
|
||||
|
@ -50,7 +48,7 @@ is_package_valid
|
|||
#----------------------------------------------------------#
|
||||
|
||||
# Parsing package data
|
||||
pkg_data=$(cat $VESTA/data/packages/$package.pkg |grep -v TIME |grep -v DATE)
|
||||
pkg_data=$(cat $VESTA/data/packages/$package.pkg |egrep -v "TIME|DATE")
|
||||
|
||||
# Checking shell
|
||||
shell_conf=$(echo "$pkg_data" | grep 'SHELL' | cut -f 2 -d \')
|
||||
|
@ -134,6 +132,10 @@ if [ ! -z "$DB_SYSTEM" ]; then
|
|||
echo "$BIN/v-update-databases-disk $user" >> $VESTA/data/queue/disk.pipe
|
||||
fi
|
||||
|
||||
# Generating timestamp
|
||||
time_n_date=$(date +'%T %F')
|
||||
time=$(echo "$time_n_date" |cut -f 1 -d \ )
|
||||
date=$(echo "$time_n_date" |cut -f 2 -d \ )
|
||||
|
||||
# Filling user config
|
||||
if [ "$user" != 'admin' ]; then
|
||||
|
@ -151,7 +153,7 @@ $pkg_data
|
|||
CONTACT='$email'
|
||||
CRON_REPORTS='yes'
|
||||
MD5='$(awk -v user=$user -F : 'user == $1 {print $2}' /etc/shadow)'
|
||||
RKEY='$(gen_password)'
|
||||
RKEY='$(generate_password)'
|
||||
SUSPENDED='no'
|
||||
SUSPENDED_USERS='0'
|
||||
SUSPENDED_WEB='0'
|
||||
|
@ -181,8 +183,8 @@ U_CRON_JOBS='0'
|
|||
U_BACKUPS='0'
|
||||
LANGUAGE=''
|
||||
NOTIFICATIONS='no'
|
||||
TIME='$TIME'
|
||||
DATE='$DATE'" > $USER_DATA/user.conf
|
||||
TIME='$time'
|
||||
DATE='$date'" > $USER_DATA/user.conf
|
||||
chmod 660 $USER_DATA/user.conf
|
||||
|
||||
# Updating quota
|
||||
|
@ -207,6 +209,6 @@ fi
|
|||
|
||||
# Logging
|
||||
log_history "added system user $user" '' 'admin'
|
||||
log_event "$OK" "$EVENT"
|
||||
log_event "$OK" "$ARGUMENTS"
|
||||
|
||||
exit
|
||||
|
|
|
@ -26,12 +26,12 @@ source $VESTA/conf/vesta.conf
|
|||
#----------------------------------------------------------#
|
||||
|
||||
check_args '3' "$#" 'USER SYSTEM OBJECT'
|
||||
validate_format 'user' 'system'
|
||||
is_format_valid 'user' 'system'
|
||||
case $system in
|
||||
MAIL_ACC) validate_format 'email' ;;
|
||||
CRON) validate_format 'id' ;;
|
||||
DNS_REC) validate_format 'id' ;;
|
||||
*) validate_format 'object'
|
||||
MAIL_ACC) is_format_valid 'email' ;;
|
||||
CRON) is_format_valid 'id' ;;
|
||||
DNS_REC) is_format_valid 'id' ;;
|
||||
*) is_format_valid 'object'
|
||||
esac
|
||||
is_object_valid 'user' 'USER' "$user"
|
||||
is_object_unsuspended 'user' 'USER' "$user"
|
||||
|
@ -120,6 +120,6 @@ chmod 640 $USER_DATA/favourites.conf
|
|||
|
||||
# Logging
|
||||
log_history "added starred $object in $system listing"
|
||||
log_event "$OK" "$EVENT"
|
||||
log_event "$OK" "$ARGUMENTS"
|
||||
|
||||
exit
|
||||
|
|
|
@ -25,7 +25,7 @@ source $VESTA/conf/vesta.conf
|
|||
#----------------------------------------------------------#
|
||||
|
||||
check_args '2' "$#" 'USER TOPIC NOTICE [TYPE]'
|
||||
validate_format 'user' 'topic' 'notice'
|
||||
is_format_valid 'user' 'topic' 'notice'
|
||||
is_object_valid 'user' 'USER' "$user"
|
||||
|
||||
|
||||
|
@ -46,9 +46,14 @@ else
|
|||
nid=1
|
||||
fi
|
||||
|
||||
# Generating timestamp
|
||||
time_n_date=$(date +'%T %F')
|
||||
time=$(echo "$time_n_date" |cut -f 1 -d \ )
|
||||
date=$(echo "$time_n_date" |cut -f 2 -d \ )
|
||||
|
||||
# Concatenating string
|
||||
str="NID='$nid' TOPIC='$topic' NOTICE='$notice' TYPE='$type'"
|
||||
str="$str ACK='no' TIME='$TIME' DATE='$DATE'"
|
||||
str="$str ACK='no' TIME='$time' DATE='$date'"
|
||||
|
||||
# Adding to config
|
||||
echo "$str" >> $USER_DATA/notifications.conf
|
||||
|
|
|
@ -22,7 +22,7 @@ source $VESTA/conf/vesta.conf
|
|||
is_package_new() {
|
||||
if [ -e "$VESTA/data/packages/$package.pkg" ]; then
|
||||
echo "Error: package $package already exists."
|
||||
log_event "$E_EXISTS" "$EVENT"
|
||||
log_event "$E_EXISTS" "$ARGUMENTS"
|
||||
exit $E_EXISTS
|
||||
fi
|
||||
}
|
||||
|
@ -30,39 +30,39 @@ is_package_new() {
|
|||
is_package_consistent() {
|
||||
source $pkg_dir/$package.pkg
|
||||
if [ "$WEB_DOMAINS" != 'unlimited' ]; then
|
||||
validate_format_int $WEB_DOMAINS 'WEB_DOMAINS'
|
||||
is_format_valid_int $WEB_DOMAINS 'WEB_DOMAINS'
|
||||
fi
|
||||
if [ "$WEB_ALIASES" != 'unlimited' ]; then
|
||||
validate_format_int $WEB_ALIASES 'WEB_ALIASES'
|
||||
is_format_valid_int $WEB_ALIASES 'WEB_ALIASES'
|
||||
fi
|
||||
if [ "$DNS_DOMAINS" != 'unlimited' ]; then
|
||||
validate_format_int $DNS_DOMAINS 'DNS_DOMAINS'
|
||||
is_format_valid_int $DNS_DOMAINS 'DNS_DOMAINS'
|
||||
fi
|
||||
if [ "$DNS_RECORDS" != 'unlimited' ]; then
|
||||
validate_format_int $DNS_RECORDS 'DNS_RECORDS'
|
||||
is_format_valid_int $DNS_RECORDS 'DNS_RECORDS'
|
||||
fi
|
||||
if [ "$MAIL_DOMAINS" != 'unlimited' ]; then
|
||||
validate_format_int $MAIL_DOMAINS 'MAIL_DOMAINS'
|
||||
is_format_valid_int $MAIL_DOMAINS 'MAIL_DOMAINS'
|
||||
fi
|
||||
if [ "$MAIL_ACCOUNTS" != 'unlimited' ]; then
|
||||
validate_format_int $MAIL_ACCOUNTS 'MAIL_ACCOUNTS'
|
||||
is_format_valid_int $MAIL_ACCOUNTS 'MAIL_ACCOUNTS'
|
||||
fi
|
||||
if [ "$DATABASES" != 'unlimited' ]; then
|
||||
validate_format_int $DATABASES 'DATABASES'
|
||||
is_format_valid_int $DATABASES 'DATABASES'
|
||||
fi
|
||||
if [ "$CRON_JOBS" != 'unlimited' ]; then
|
||||
validate_format_int $CRON_JOBS 'CRON_JOBS'
|
||||
is_format_valid_int $CRON_JOBS 'CRON_JOBS'
|
||||
fi
|
||||
if [ "$DISK_QUOTA" != 'unlimited' ]; then
|
||||
validate_format_int $DISK_QUOTA 'DISK_QUOTA'
|
||||
is_format_valid_int $DISK_QUOTA 'DISK_QUOTA'
|
||||
fi
|
||||
if [ "$BANDWIDTH" != 'unlimited' ]; then
|
||||
validate_format_int $BANDWIDTH 'BANDWIDTH'
|
||||
is_format_valid_int $BANDWIDTH 'BANDWIDTH'
|
||||
fi
|
||||
if [ "$BACKUPS" != 'unlimited' ]; then
|
||||
validate_format_int $BACKUPS 'BACKUPS'
|
||||
is_format_valid_int $BACKUPS 'BACKUPS'
|
||||
fi
|
||||
validate_format_shell $SHELL
|
||||
is_format_valid_shell $SHELL
|
||||
}
|
||||
|
||||
|
||||
|
@ -71,7 +71,7 @@ is_package_consistent() {
|
|||
#----------------------------------------------------------#
|
||||
|
||||
check_args '2' "$#" 'PKG_DIR PACKAGE' 'rewrite'
|
||||
validate_format 'pkg_dir' 'package'
|
||||
is_format_valid 'pkg_dir' 'package'
|
||||
if [ "$rewrite" != 'yes' ]; then
|
||||
is_package_new
|
||||
fi
|
||||
|
@ -97,6 +97,6 @@ if [ "$rewrite" != 'yes' ]; then
|
|||
else
|
||||
log_history "updated user package $package" '' 'admin'
|
||||
fi
|
||||
log_event "$OK" "$EVENT"
|
||||
log_event "$OK" "$ARGUMENTS"
|
||||
|
||||
exit
|
||||
|
|
|
@ -22,7 +22,7 @@ source $VESTA/conf/vesta.conf
|
|||
#----------------------------------------------------------#
|
||||
|
||||
check_args '1' "$#" 'USER'
|
||||
validate_format 'user'
|
||||
is_format_valid 'user'
|
||||
if [ -z "$SFTPJAIL_KEY" ]; then
|
||||
exit
|
||||
fi
|
||||
|
@ -51,7 +51,7 @@ fi
|
|||
usermod -a -G sftp-only $user
|
||||
|
||||
# Mouting home directory
|
||||
if [ -z "$(mount |grep $home)" ]; then
|
||||
if [ -z "$(mount |grep /chroot/$user/$home)" ]; then
|
||||
mount -o bind $home /chroot/$user/$home/
|
||||
fi
|
||||
|
||||
|
@ -61,6 +61,6 @@ fi
|
|||
#----------------------------------------------------------#
|
||||
|
||||
# Logging
|
||||
#log_event "$OK" "$EVENT"
|
||||
log_event "$OK" "$ARGUMENTS"
|
||||
|
||||
exit
|
||||
|
|
|
@ -1,31 +1,47 @@
|
|||
#!/bin/bash
|
||||
# info: add web domain
|
||||
# options: USER DOMAIN IP [RESTART] [ALIASES] [PROXY_EXTENTIONS]
|
||||
# options: USER DOMAIN [IP] [ALIASES] [PROXY_EXTENTIONS] [RESTART]
|
||||
#
|
||||
# The function adds virtual host to a server. In cases when a template is
|
||||
# undefined in the script, the template "default" will be used. The alias of
|
||||
# www.domain.tld type will be automatically assigned to the domain. If ip have
|
||||
# associated dns name, this domain will also get the alias domain-tpl.$ipname.
|
||||
# An alias with the ip name is useful during the site testing while dns isn't
|
||||
# moved to a server yet.
|
||||
# The function adds virtual host to a server. In cases when ip is
|
||||
# undefined in the script, "default" template will be used. The alias of
|
||||
# www.domain.tld type will be automatically assigned to the domain unless
|
||||
# "none" is transmited as argument. If ip have associated dns name, this
|
||||
# domain will also get the alias domain-tpl.$ipname. An alias with the ip
|
||||
# name is useful during the site testing while dns isn't moved to server yet.
|
||||
|
||||
|
||||
#----------------------------------------------------------#
|
||||
# Variable&Function #
|
||||
#----------------------------------------------------------#
|
||||
|
||||
|
||||
# Argument definition
|
||||
user=$1
|
||||
domain=$(idn -t --quiet -u "$2" )
|
||||
domain=$(echo $domain | sed -e 's/\.*$//g' -e 's/^\.*//g')
|
||||
domain=$(echo $domain | tr '[:upper:]' '[:lower:]')
|
||||
domain_idn=$(idn -t --quiet -a "$domain")
|
||||
ip=$3; IP=$3
|
||||
restart=$4
|
||||
domain=$2
|
||||
ip=$3
|
||||
restart=$4 # will be moved to the end soon
|
||||
aliases=$5
|
||||
default_extentions="jpg,jpeg,gif,png,ico,svg,css,zip,tgz,gz,rar,bz2,doc,xls,\
|
||||
exe,pdf,ppt,txt,odt,ods,odp,odf,tar,wav,bmp,rtf,js,mp3,avi,mpeg,flv,html,htm"
|
||||
extentions=${6-$default_extentions}
|
||||
proxy_ext=$6
|
||||
|
||||
# Additional argument formatting
|
||||
if [[ "$domain" =~ [[:upper:]] ]]; then
|
||||
domain=$(echo "$domain" |tr '[:upper:]' '[:lower:]')
|
||||
fi
|
||||
if [[ "$domain" =~ ^www\..* ]]; then
|
||||
domain=$(echo "$domain" |sed -e "s/^www.//")
|
||||
fi
|
||||
if [[ "$domain" =~ .*\.$ ]]; then
|
||||
domain=$(echo "$domain" |sed -e "s/\.$//")
|
||||
fi
|
||||
domain_idn="$domain"
|
||||
if [[ "$domain" = *[![:ascii:]]* ]]; then
|
||||
domain_idn=$(idn -t --quiet -a $domain)
|
||||
fi
|
||||
if [ ! -z "$aliases" ] && [ "$aliases" != 'none' ]; then
|
||||
aliases=$(echo $aliases |tr '[:upper:]' '[:lower:]' |tr ',' '\n')
|
||||
aliases=$(echo "$aliases" |sed -e "s/\.$//" |sort -u |grep -v www.$domain)
|
||||
aliases=$(echo "$aliases" |sed -e "/^$/d" |tr '\n' ',' |sed -e "s/,$//")
|
||||
fi
|
||||
|
||||
# Includes
|
||||
source $VESTA/func/main.sh
|
||||
|
@ -38,26 +54,17 @@ source $VESTA/conf/vesta.conf
|
|||
# Verifications #
|
||||
#----------------------------------------------------------#
|
||||
|
||||
check_args '3' "$#" 'USER DOMAIN IP [RESTART] [ALIASES] [PROXY_EXTENTIONS]'
|
||||
validate_format 'user' 'domain' 'ip'
|
||||
is_system_enabled "$WEB_SYSTEM" 'WEB_SYSTEM'
|
||||
check_args '2' "$#" 'USER DOMAIN [IP] [RESTART] [ALIASES] [PROXY_EXTENTIONS]'
|
||||
is_format_valid 'user' 'domain' 'aliases' 'ip' 'proxy_ext'
|
||||
is_object_valid 'user' 'USER' "$user"
|
||||
is_object_unsuspended 'user' 'USER' "$user"
|
||||
is_domain_new 'web'
|
||||
is_ip_valid
|
||||
is_ip_avalable
|
||||
is_package_full 'WEB_DOMAINS'
|
||||
template=$(get_user_value '$WEB_TEMPLATE')
|
||||
is_web_template_valid
|
||||
if [ ! -z "$aliases" ]; then
|
||||
for domain_alias in $(echo "${aliases//,/ }"); do
|
||||
is_domain_new 'web' "$domain_alias" 'alias'
|
||||
done
|
||||
fi
|
||||
if [ ! -z "$PROXY_SYSTEM" ]; then
|
||||
validate_format 'extentions'
|
||||
proxy=$(get_user_value '$PROXY_TEMPLATE')
|
||||
is_proxy_template_valid $proxy
|
||||
is_package_full 'WEB_DOMAINS' 'WEB_ALIASES'
|
||||
is_domain_new 'web' "$domain,$aliases"
|
||||
if [ ! -z "$ip" ]; then
|
||||
is_ip_valid "$ip" "$user"
|
||||
else
|
||||
get_user_ip
|
||||
fi
|
||||
|
||||
|
||||
|
@ -65,49 +72,10 @@ fi
|
|||
# Action #
|
||||
#----------------------------------------------------------#
|
||||
|
||||
# Checking domain backend in case PHP-FPM is configured
|
||||
if [ ! -z "$WEB_BACKEND" ]; then
|
||||
is_web_backend_pool_valid
|
||||
$BIN/v-add-web-domain-backend $user $domain
|
||||
rc=$?
|
||||
if [ $rc -ne 0 ]; then
|
||||
exit $rc
|
||||
fi
|
||||
get_domain_backend_values
|
||||
backend=$(get_user_value '$BACKEND_TEMPLATE')
|
||||
if [ -z "$backend" ]; then
|
||||
backend='default'
|
||||
fi
|
||||
fi
|
||||
# Reading user values
|
||||
source $USER_DATA/user.conf
|
||||
|
||||
# Defining variables for add_config function
|
||||
ip=$(get_real_ip $ip)
|
||||
group="$user"
|
||||
email="info@$domain"
|
||||
docroot="$HOMEDIR/$user/web/$domain/public_html"
|
||||
tpl_file="$WEBTPL/$WEB_SYSTEM/$WEB_BACKEND/$template.tpl"
|
||||
conf="$HOMEDIR/$user/conf/web/$WEB_SYSTEM.conf"
|
||||
|
||||
# Defining domain aliases
|
||||
ip_name=$(get_ip_name)
|
||||
if [ -z "$aliases" ]; then
|
||||
if [ -z "$ip_name" ]; then
|
||||
aliases="www.$domain"
|
||||
else
|
||||
aliases="www.$domain,${domain//./-}.$ip_name"
|
||||
fi
|
||||
else
|
||||
if [ ! -z "$ip_name" ]; then
|
||||
aliases="$aliases,${domain//./-}.$ip_name"
|
||||
fi
|
||||
fi
|
||||
aliases_idn=$(idn -t --quiet -a $aliases)
|
||||
alias_string="ServerAlias ${aliases_idn//,/ }"
|
||||
|
||||
# Adding web config
|
||||
add_web_config
|
||||
|
||||
# Building directory tree
|
||||
# Creating domain directories
|
||||
mkdir -p $HOMEDIR/$user/web/$domain \
|
||||
$HOMEDIR/$user/web/$domain/public_html \
|
||||
$HOMEDIR/$user/web/$domain/public_shtml \
|
||||
|
@ -117,83 +85,61 @@ mkdir -p $HOMEDIR/$user/web/$domain \
|
|||
$HOMEDIR/$user/web/$domain/stats \
|
||||
$HOMEDIR/$user/web/$domain/logs
|
||||
|
||||
# Adding domain logs
|
||||
# Creating domain logs
|
||||
touch /var/log/$WEB_SYSTEM/domains/$domain.bytes \
|
||||
/var/log/$WEB_SYSTEM/domains/$domain.log \
|
||||
/var/log/$WEB_SYSTEM/domains/$domain.error.log
|
||||
|
||||
# Adding symlink for logs
|
||||
ln -f -s /var/log/$WEB_SYSTEM/domains/$domain.*log \
|
||||
$HOMEDIR/$user/web/$domain/logs/
|
||||
|
||||
# Adding domain skeleton
|
||||
if [ -e "$WEBTPL/skel/public_html/" ]; then
|
||||
cp -r $WEBTPL/skel/public_html/ $HOMEDIR/$user/web/$domain/
|
||||
fi
|
||||
if [ -e "$WEBTPL/skel/public_shtml/" ]; then
|
||||
cp -r $WEBTPL/skel/public_shtml/ $HOMEDIR/$user/web/$domain/
|
||||
fi
|
||||
if [ -e "$WEBTPL/skel/document_errors/" ]; then
|
||||
cp -r $WEBTPL/skel/document_errors/ $HOMEDIR/$user/web/$domain/
|
||||
fi
|
||||
if [ -e "$WEBTPL/skel/cgi-bin/" ]; then
|
||||
cp -r $WEBTPL/skel/cgi-bin/ $HOMEDIR/$user/web/$domain/
|
||||
fi
|
||||
|
||||
# Changing tpl values
|
||||
cp -r $WEBTPL/skel/* $HOMEDIR/$user/web/$domain/ >/dev/null 2>&1
|
||||
for file in $(find "$HOMEDIR/$user/web/$domain/" -type f); do
|
||||
sed -i "s/%domain%/$domain/g" $file
|
||||
done
|
||||
|
||||
# Changing file owner
|
||||
# Changing file owner & permission
|
||||
chown -R $user:$user $HOMEDIR/$user/web/$domain
|
||||
chown root:$user /var/log/$WEB_SYSTEM/domains/$domain.* $conf
|
||||
chmod 640 /var/log/$WEB_SYSTEM/domains/$domain.*
|
||||
chmod 751 $HOMEDIR/$user/web/$domain $HOMEDIR/$user/web/$domain/*
|
||||
chmod 551 $HOMEDIR/$user/web/$domain/stats $HOMEDIR/$user/web/$domain/logs
|
||||
|
||||
# Changing file permissions
|
||||
chmod 640 $conf /var/log/$WEB_SYSTEM/domains/$domain.*
|
||||
chmod 551 $HOMEDIR/$user/web/$domain
|
||||
chmod 751 $HOMEDIR/$user/web/$domain/private \
|
||||
$HOMEDIR/$user/web/$domain/cgi-bin \
|
||||
$HOMEDIR/$user/web/$domain/public_html \
|
||||
$HOMEDIR/$user/web/$domain/public_shtml \
|
||||
$HOMEDIR/$user/web/$domain/document_errors
|
||||
chmod -f -R 665 $HOMEDIR/$user/web/$domain/cgi-bin/* \
|
||||
$HOMEDIR/$user/web/$domain/public_html/* \
|
||||
$HOMEDIR/$user/web/$domain/document_errors/* \
|
||||
chmod 551 $HOMEDIR/$user/web/$domain/stats \
|
||||
$HOMEDIR/$user/web/$domain/logs
|
||||
|
||||
# Running template trigger
|
||||
if [ -x $WEBTPL/$WEB_SYSTEM/$WEB_BACKEND/$template.sh ]; then
|
||||
$WEBTPL/$WEB_SYSTEM/$WEB_BACKEND/$template.sh \
|
||||
$user $domain $ip $HOMEDIR $docroot
|
||||
# Addding PHP-FPM backend
|
||||
if [ ! -z "$WEB_BACKEND" ]; then
|
||||
if [ -z "$BACKEND_TEMPLATE" ]; then
|
||||
BACKEND_TEMPLATE='default'
|
||||
if [ -z "$(grep BACKEND_TEMPLATE $USER_DATA/user.conf)" ]; then
|
||||
sed -i "s/^DNS_TEMPL/BACKEND_TEMPLATE='default'\nDNS_TEMPL/g" \
|
||||
$USER_DATA/user.conf
|
||||
else
|
||||
update_user_value "$user" '$BACKEND_TEMPLATE' "default"
|
||||
fi
|
||||
fi
|
||||
$BIN/v-add-web-domain-backend "$user" "$domain" $BACKEND_TEMPLATE
|
||||
check_result $? "Backend error" >/dev/null
|
||||
fi
|
||||
|
||||
# Checking web config include
|
||||
web_conf="/etc/$WEB_SYSTEM/conf.d/vesta.conf"
|
||||
web_include=$(grep "$conf" $web_conf )
|
||||
if [ -z "$web_include" ] && [ "$WEB_SYSTEM" != 'nginx' ]; then
|
||||
echo "Include $conf" >> $web_conf
|
||||
fi
|
||||
if [ -z "$web_include" ] && [ "$WEB_SYSTEM" = 'nginx' ]; then
|
||||
echo "include $conf;" >> $web_conf
|
||||
# Preparing domain variables
|
||||
if [ "$aliases" != 'none' ]; then
|
||||
ALIAS="www.$domain,$aliases,$(get_ip_alias $domain)"
|
||||
else
|
||||
ALIAS=''
|
||||
fi
|
||||
prepare_web_domain_values
|
||||
|
||||
# Checking proxy system
|
||||
# Adding web server config
|
||||
add_web_config "$WEB_SYSTEM" "$WEB_TEMPLATE.tpl"
|
||||
|
||||
# Adding proxy config
|
||||
if [ ! -z "$PROXY_SYSTEM" ]; then
|
||||
PROXY_EXT="$extentions"
|
||||
tpl_file="$WEBTPL/$PROXY_SYSTEM/$proxy.tpl"
|
||||
conf="$HOMEDIR/$user/conf/web/$PROXY_SYSTEM.conf"
|
||||
add_web_config
|
||||
chown root:$user $conf
|
||||
chmod 640 $conf
|
||||
proxy_conf="/etc/$PROXY_SYSTEM/conf.d/vesta.conf"
|
||||
if [ -z "$(grep "$conf" $proxy_conf)" ]; then
|
||||
echo "include $conf;" >> $proxy_conf
|
||||
fi
|
||||
if [ -x $WEBTPL/$PROXY_SYSTEM/$proxy.sh ]; then
|
||||
$WEBTPL/$PROXY_SYSTEM/$proxy.sh $user $domain $ip $HOMEDIR $docroot
|
||||
PROXY_EXT="$proxy_ext"
|
||||
if [ -z "$proxy_ext" ]; then
|
||||
PROXY_EXT="jpg,jpeg,gif,png,ico,svg,css,zip,tgz,gz,rar,bz2,doc,xls"
|
||||
PROXY_EXT="$PROXY_EXT,exe,pdf,ppt,txt,odt,ods,odp,odf,tar,wav,bmp"
|
||||
PROXY_EXT="$PROXY_EXT,rtf,js,mp3,avi,mpeg,flv,html,htm"
|
||||
fi
|
||||
add_web_config "$PROXY_SYSTEM" "$PROXY_TEMPLATE.tpl"
|
||||
fi
|
||||
|
||||
|
||||
|
@ -202,25 +148,28 @@ fi
|
|||
#----------------------------------------------------------#
|
||||
|
||||
# Increasing counters
|
||||
increase_ip_value "$ip"
|
||||
increase_ip_value "$local_ip"
|
||||
increase_user_value "$user" '$U_WEB_DOMAINS'
|
||||
increase_user_value "$user" '$U_WEB_ALIASES'
|
||||
increase_user_value "$user" '$U_WEB_ALIASES' "$alias_number"
|
||||
|
||||
# Defining domain variables
|
||||
str="DOMAIN='$domain' IP='$IP' IP6='' ALIAS='$aliases' TPL='$template'"
|
||||
str="$str SSL='no' SSL_HOME='same' FTP_USER='' FTP_MD5='' BACKEND='$backend'"
|
||||
str="$str PROXY='$proxy' PROXY_EXT='$extentions' STATS='' STATS_USER=''"
|
||||
str="$str STATS_CRYPT='' U_DISK='0' U_BANDWIDTH='0' SUSPENDED='no'"
|
||||
str="$str TIME='$TIME' DATE='$DATE'"
|
||||
# Generating timestamp
|
||||
time_n_date=$(date +'%T %F')
|
||||
time=$(echo "$time_n_date" |cut -f 1 -d \ )
|
||||
date=$(echo "$time_n_date" |cut -f 2 -d \ )
|
||||
|
||||
# Registering domain
|
||||
echo "$str" >> $USER_DATA/web.conf
|
||||
# Adding domain in web.conf
|
||||
echo "DOMAIN='$domain' IP='$ip' IP6='' ALIAS='$ALIAS' TPL='$WEB_TEMPLATE' \
|
||||
SSL='no' SSL_HOME='same' FTP_USER='' FTP_MD5='' BACKEND='$BACKEND_TEMPLATE' \
|
||||
PROXY='$PROXY_TEMPLATE' PROXY_EXT='$PROXY_EXT' STATS='' STATS_USER='' \
|
||||
STATS_CRYPT='' U_DISK='0' U_BANDWIDTH='0' SUSPENDED='no' \
|
||||
TIME='$time' DATE='$date'" >> $USER_DATA/web.conf
|
||||
|
||||
# Restarting web server
|
||||
if [ "$restart" != 'no' ]; then
|
||||
$BIN/v-restart-web
|
||||
check_result $? "Web restart failed" >/dev/null
|
||||
|
||||
# Restarting proxy server
|
||||
if [ ! -z "$PROXY_SYSTEM" ]; then
|
||||
$BIN/v-restart-proxy
|
||||
check_result $? "Proxy restart failed" >/dev/null
|
||||
|
@ -229,6 +178,6 @@ fi
|
|||
|
||||
# Logging
|
||||
log_history "added web domain $domain"
|
||||
log_event "$OK" "$EVENT"
|
||||
log_event "$OK" "$ARGUMENTS"
|
||||
|
||||
exit
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
#!/bin/bash
|
||||
# info: add web domain alias
|
||||
# options: USER DOMAIN ALIAS [RESTART]
|
||||
# options: USER DOMAIN ALIASES [RESTART]
|
||||
#
|
||||
# The call is intended for adding aliases to a domain (it is also called
|
||||
# "domain parking"). The function supports wildcards *.domain.tpl.
|
||||
|
@ -32,14 +32,14 @@ source $VESTA/conf/vesta.conf
|
|||
# Verifications #
|
||||
#----------------------------------------------------------#
|
||||
|
||||
check_args '3' "$#" 'USER DOMAIN DOM_ALIAS [RESTART]'
|
||||
validate_format 'user' 'domain' 'dom_alias'
|
||||
check_args '3' "$#" 'USER DOMAIN ALIASES [RESTART]'
|
||||
is_format_valid 'user' 'domain' 'dom_alias'
|
||||
is_system_enabled "$WEB_SYSTEM" 'WEB_SYSTEM'
|
||||
is_object_valid 'user' 'USER' "$user"
|
||||
is_object_unsuspended 'user' 'USER' "$user"
|
||||
is_object_valid 'web' 'DOMAIN' "$domain"
|
||||
is_object_unsuspended 'web' 'DOMAIN' "$domain"
|
||||
is_domain_new 'web' "$dom_alias" 'alias'
|
||||
is_domain_new 'web' "$dom_alias"
|
||||
is_package_full 'WEB_ALIASES'
|
||||
|
||||
|
||||
|
@ -49,43 +49,31 @@ is_package_full 'WEB_ALIASES'
|
|||
|
||||
# Parsing domain values
|
||||
get_domain_values 'web'
|
||||
tpl_file="$WEBTPL/$WEB_SYSTEM/$WEB_BACKEND/$TPL.tpl"
|
||||
conf="$HOMEDIR/$user/conf/web/$WEB_SYSTEM.conf"
|
||||
ip=$(get_real_ip $IP)
|
||||
|
||||
# Parsing domain aliases
|
||||
# Preparing domain values for the template substitution
|
||||
local_ip=$(get_real_ip $IP)
|
||||
if [ -z "$ALIAS" ]; then
|
||||
ALIAS="$dom_alias"
|
||||
else
|
||||
ALIAS="$ALIAS,$dom_alias"
|
||||
fi
|
||||
prepare_web_domain_values
|
||||
|
||||
# Preparing domain values for the template substitution
|
||||
upd_web_domain_values
|
||||
|
||||
# Recreating vhost
|
||||
del_web_config
|
||||
add_web_config
|
||||
|
||||
# Rebuilding vhost
|
||||
del_web_config "$WEB_SYSTEM" "$TPL.tpl"
|
||||
add_web_config "$WEB_SYSTEM" "$TPL.tpl"
|
||||
if [ "$SSL" = 'yes' ]; then
|
||||
tpl_file="$WEBTPL/$WEB_SYSTEM/$WEB_BACKEND/$TPL.stpl"
|
||||
conf="$HOMEDIR/$user/conf/web/s$WEB_SYSTEM.conf"
|
||||
del_web_config
|
||||
add_web_config
|
||||
del_web_config "$WEB_SYSTEM" "$TPL.stpl"
|
||||
add_web_config "$WEB_SYSTEM" "$TPL.stpl"
|
||||
fi
|
||||
|
||||
# Checking proxy
|
||||
# Rebuilding proxy configuration
|
||||
if [ ! -z "$PROXY_SYSTEM" ] && [ ! -z "$PROXY" ]; then
|
||||
tpl_file="$WEBTPL/$PROXY_SYSTEM/$PROXY.tpl"
|
||||
conf="$HOMEDIR/$user/conf/web/$PROXY_SYSTEM.conf"
|
||||
del_web_config
|
||||
add_web_config
|
||||
|
||||
del_web_config "$PROXY_SYSTEM" "$PROXY.tpl"
|
||||
add_web_config "$PROXY_SYSTEM" "$PROXY.tpl"
|
||||
if [ "$SSL" = 'yes' ]; then
|
||||
tpl_file="$WEBTPL/$PROXY_SYSTEM/$PROXY.stpl"
|
||||
conf="$HOMEDIR/$user/conf/web/s$PROXY_SYSTEM.conf"
|
||||
del_web_config
|
||||
add_web_config
|
||||
del_web_config "$PROXY_SYSTEM" "$PROXY.stpl"
|
||||
add_web_config "$PROXY_SYSTEM" "$PROXY.stpl"
|
||||
fi
|
||||
fi
|
||||
|
||||
|
@ -96,8 +84,6 @@ fi
|
|||
|
||||
# Adding new alias
|
||||
update_object_value 'web' 'DOMAIN' "$domain" '$ALIAS' "$ALIAS"
|
||||
|
||||
# Update counters
|
||||
increase_user_value "$user" '$U_WEB_ALIASES'
|
||||
|
||||
# Restarting web server
|
||||
|
@ -112,6 +98,6 @@ if [ "$restart" != 'no' ]; then
|
|||
fi
|
||||
|
||||
log_history "added $dom_alias as alias for $domain"
|
||||
log_event "$OK" "$EVENT"
|
||||
log_event "$OK" "$ARGUMENTS"
|
||||
|
||||
exit
|
||||
|
|
|
@ -2,7 +2,7 @@
|
|||
# info: add web domain backend
|
||||
# options: USER DOMAIN [TEMPLATE] [RESTART]
|
||||
#
|
||||
# The call is used for adding web backend configuration for user
|
||||
# The call is used for adding web backend configuration.
|
||||
|
||||
|
||||
#----------------------------------------------------------#
|
||||
|
@ -12,8 +12,8 @@
|
|||
# Argument definition
|
||||
user=$1
|
||||
domain=$2
|
||||
domain_idn=$(idn -t --quiet -a "$domain")
|
||||
template=${3-default}
|
||||
restart=$4
|
||||
|
||||
# Includes
|
||||
source $VESTA/func/main.sh
|
||||
|
@ -26,21 +26,24 @@ source $VESTA/conf/vesta.conf
|
|||
#----------------------------------------------------------#
|
||||
|
||||
check_args '2' "$#" 'USER DOMAIN [TEMPLATE] [RESTART]'
|
||||
validate_format 'user' 'domain'
|
||||
is_system_enabled "$WEB_SYSTEM" 'WEB_SYSTEM'
|
||||
is_system_enabled "$WEB_BACKEND" 'WEB_BACKEND'
|
||||
is_object_valid 'user' 'USER' "$user"
|
||||
is_object_unsuspended 'user' 'USER' "$user"
|
||||
is_web_backend_template_valid $template
|
||||
is_web_backend_pool_valid
|
||||
if [ -e "$pool/$backend.conf" ]; then
|
||||
exit
|
||||
fi
|
||||
is_backend_template_valid "$template"
|
||||
|
||||
|
||||
#----------------------------------------------------------#
|
||||
# Action #
|
||||
#----------------------------------------------------------#
|
||||
|
||||
# Defining pool directory
|
||||
prepare_web_backend
|
||||
|
||||
# Checking backend configuration
|
||||
if [ -e "$pool/$backend_type.conf" ]; then
|
||||
exit
|
||||
fi
|
||||
|
||||
# Allocating backend port
|
||||
backend_port=9000
|
||||
ports=$(grep -v '^;' $pool/* 2>/dev/null |grep listen |grep -o :[0-9].*)
|
||||
|
@ -56,8 +59,7 @@ cat $WEBTPL/$WEB_BACKEND/$template.tpl |\
|
|||
sed -e "s|%backend_port%|$backend_port|" \
|
||||
-e "s|%user%|$user|"\
|
||||
-e "s|%domain%|$domain|"\
|
||||
-e "s|%domain_idn%|$domain_idn|"\
|
||||
-e "s|%backend%|$backend|g" > $pool/$backend.conf
|
||||
-e "s|%backend%|$backend_type|g" > $pool/$backend_type.conf
|
||||
|
||||
|
||||
#----------------------------------------------------------#
|
||||
|
@ -72,6 +74,6 @@ fi
|
|||
|
||||
# Logging
|
||||
log_history "added $WEB_BACKEND backend configuration for $domain"
|
||||
log_event "$OK" "$EVENT"
|
||||
log_event "$OK" "$ARGUMENTS"
|
||||
|
||||
exit
|
||||
|
|
|
@ -28,7 +28,7 @@ source $VESTA/conf/vesta.conf
|
|||
#----------------------------------------------------------#
|
||||
|
||||
check_args '4' "$#" 'USER DOMAIN FTP_USER FTP_PASSWORD [FTP_PATH]'
|
||||
validate_format 'user' 'domain' 'ftp_user'
|
||||
is_format_valid 'user' 'domain' 'ftp_user'
|
||||
is_system_enabled "$WEB_SYSTEM" 'WEB_SYSTEM'
|
||||
is_object_valid 'user' 'USER' "$user"
|
||||
is_object_unsuspended 'user' 'USER' "$user"
|
||||
|
@ -37,7 +37,7 @@ is_object_unsuspended 'web' 'DOMAIN' "$domain"
|
|||
check_ftp_user=$(grep "^$ftp_user:" /etc/passwd)
|
||||
if [ ! -z "$check_ftp_user" ] && [ "$FTP_USER" != "$ftp_user" ]; then
|
||||
echo "Error: ftp user $ftp_user already exists"
|
||||
log_event "$E_EXISTS" "$EVENT"
|
||||
log_event "$E_EXISTS" "$ARGUMENTS"
|
||||
exit $E_EXISTS
|
||||
fi
|
||||
is_password_valid
|
||||
|
@ -68,7 +68,7 @@ else
|
|||
ftp_path_a=$(readlink -f "$HOMEDIR/$user/web/$domain/$ftp_path")
|
||||
if [ -z "$(echo $ftp_path_a |grep $HOMEDIR/$user/web/$domain)" ]; then
|
||||
echo "Error: absolute path $ftp_path_a is invalid"
|
||||
log_event "$E_INVALID" "$EVENT"
|
||||
log_event "$E_INVALID" "$ARGUMENTS"
|
||||
exit $E_INVALID
|
||||
fi
|
||||
# Creating ftp user home directory
|
||||
|
@ -120,6 +120,6 @@ update_object_value 'web' 'DOMAIN' "$domain" '$FTP_PATH' "$ftp_path"
|
|||
|
||||
# Logging
|
||||
log_history "added ftp account ${1}_${3}@$domain"
|
||||
log_event "$OK" "$EVENT"
|
||||
log_event "$OK" "$ARGUMENTS"
|
||||
|
||||
exit
|
||||
|
|
|
@ -32,7 +32,7 @@ docroot="$HOMEDIR/$user/web/$domain/public_html"
|
|||
#----------------------------------------------------------#
|
||||
|
||||
check_args '4' "$#" 'USER DOMAIN AUTH_USER AUTH_PASSWORD [RESTART]'
|
||||
validate_format 'user' 'domain'
|
||||
is_format_valid 'user' 'domain'
|
||||
is_system_enabled "$WEB_SYSTEM" 'WEB_SYSTEM'
|
||||
is_object_valid 'user' 'USER' "$user"
|
||||
is_object_unsuspended 'user' 'USER' "$user"
|
||||
|
@ -42,7 +42,7 @@ is_password_valid
|
|||
get_domain_values 'web'
|
||||
if [ ! -z "$(echo "$AUTH_USER" |tr : '\n' |grep ^$auth_user$)" ]; then
|
||||
echo "Error: auth user $auth_user already exists"
|
||||
log_event "$E_EXISTS" "$EVENT"
|
||||
log_event "$E_EXISTS" "$ARGUMENTS"
|
||||
exit $E_EXISTS
|
||||
fi
|
||||
|
||||
|
@ -100,6 +100,6 @@ update_object_value 'web' 'DOMAIN' "$domain" '$AUTH_HASH' "$auth_hash"
|
|||
|
||||
# Logging
|
||||
log_history "added http auth user $httpauth_user on $domain"
|
||||
log_event "$OK" "$EVENT"
|
||||
log_event "$OK" "$ARGUMENTS"
|
||||
|
||||
exit
|
||||
|
|
|
@ -32,7 +32,7 @@ source $VESTA/conf/vesta.conf
|
|||
#----------------------------------------------------------#
|
||||
|
||||
check_args '2' "$#" 'USER DOMAIN [TEMPLATE] [EXTENTIONS] [RESTART]'
|
||||
validate_format 'user' 'domain' 'extentions'
|
||||
is_format_valid 'user' 'domain' 'extentions'
|
||||
is_system_enabled "$PROXY_SYSTEM" 'PROXY_SYSTEM'
|
||||
is_object_valid 'user' 'USER' "$user"
|
||||
is_object_unsuspended 'user' 'USER' "$user"
|
||||
|
@ -51,44 +51,15 @@ is_proxy_template_valid $template
|
|||
|
||||
# Defining domain parameters
|
||||
get_domain_values 'web'
|
||||
PROXY="$template"
|
||||
PROXY_EXT="$extentions"
|
||||
tpl_file="$WEBTPL/$PROXY_SYSTEM/$PROXY.tpl"
|
||||
conf="$HOMEDIR/$user/conf/web/$PROXY_SYSTEM.conf"
|
||||
ip=$(get_real_ip $IP)
|
||||
local_ip=$(get_real_ip $IP)
|
||||
|
||||
# Preparing domain values for the template substitution
|
||||
upd_web_domain_values
|
||||
add_web_config
|
||||
PROXY_EXT="$extentions"
|
||||
add_web_config "$PROXY_SYSTEM" "$template.tpl"
|
||||
|
||||
# Set permission and ownership
|
||||
chown root:$user $conf
|
||||
chmod 640 $conf
|
||||
|
||||
# Checking proxy config
|
||||
proxy_conf="/etc/$PROXY_SYSTEM/conf.d/vesta.conf"
|
||||
if [ -z "$(grep "$conf" $proxy_conf)" ]; then
|
||||
echo "include $conf;" >> $proxy_conf
|
||||
fi
|
||||
|
||||
# Checking ssl
|
||||
# Adding proxy for ssl
|
||||
if [ "$SSL" = 'yes' ]; then
|
||||
tpl_file="$WEBTPL/$PROXY_SYSTEM/$PROXY.stpl"
|
||||
conf="$HOMEDIR/$user/conf/web/s$PROXY_SYSTEM.conf"
|
||||
add_web_config
|
||||
|
||||
chown root:$user $conf
|
||||
chmod 640 $conf
|
||||
|
||||
proxy_conf="/etc/$PROXY_SYSTEM/conf.d/vesta.conf"
|
||||
if [ -z "$(grep "$conf" $proxy_conf)" ]; then
|
||||
echo "include $conf;" >> $proxy_conf
|
||||
fi
|
||||
fi
|
||||
|
||||
# Running template trigger
|
||||
if [ -x $WEBTPL/$PROXY_SYSTEM/$template.sh ]; then
|
||||
$WEBTPL/$PROXY_SYSTEM/$template.sh $user $domain $ip $HOMEDIR $docroot
|
||||
add_web_config "$PROXY_SYSTEM" "$template.stpl"
|
||||
fi
|
||||
|
||||
|
||||
|
@ -97,7 +68,7 @@ fi
|
|||
#----------------------------------------------------------#
|
||||
|
||||
# Update config
|
||||
update_object_value 'web' 'DOMAIN' "$domain" '$PROXY' "$PROXY"
|
||||
update_object_value 'web' 'DOMAIN' "$domain" '$PROXY' "$template"
|
||||
update_object_value 'web' 'DOMAIN' "$domain" '$PROXY_EXT' "$extentions"
|
||||
|
||||
# Restarting web server
|
||||
|
@ -107,6 +78,6 @@ if [ "$restart" != 'no' ]; then
|
|||
fi
|
||||
|
||||
log_history "enabled proxy support for $domain"
|
||||
log_event "$OK" "$EVENT"
|
||||
log_event "$OK" "$ARGUMENTS"
|
||||
|
||||
exit
|
||||
|
|
|
@ -34,7 +34,7 @@ source $VESTA/conf/vesta.conf
|
|||
#----------------------------------------------------------#
|
||||
|
||||
check_args '3' "$#" 'USER DOMAIN SSL_DIR [SSL_HOME] [RESTART]'
|
||||
validate_format 'user' 'domain' 'ssl_dir'
|
||||
is_format_valid 'user' 'domain' 'ssl_dir'
|
||||
is_system_enabled "$WEB_SYSTEM" 'WEB_SYSTEM'
|
||||
is_system_enabled "$WEB_SSL" 'SSL_SUPPORT'
|
||||
is_object_valid 'user' 'USER' "$user"
|
||||
|
@ -60,22 +60,6 @@ if [ -e "$ssl_dir/$domain.ca" ]; then
|
|||
fi
|
||||
chmod 660 $USER_DATA/ssl/$domain.*
|
||||
|
||||
# Parsing domain values
|
||||
get_domain_values 'web'
|
||||
conf="$HOMEDIR/$user/conf/web/s$WEB_SYSTEM.conf"
|
||||
tpl_file="$WEBTPL/$WEB_SYSTEM/$WEB_BACKEND/$TPL.stpl"
|
||||
SSL_HOME="$ssl_home"
|
||||
ip=$(get_real_ip $IP)
|
||||
|
||||
# Preparing domain values for the template substitution
|
||||
upd_web_domain_values
|
||||
|
||||
# Adding domain to the web config
|
||||
add_web_config
|
||||
|
||||
chown root:$user $conf
|
||||
chmod 640 $conf
|
||||
|
||||
# Adding certificate to user dir
|
||||
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
|
||||
|
@ -84,32 +68,20 @@ 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/$WEB_SYSTEM/$WEB_BACKEND/$template.sh ]; then
|
||||
$WEBTPL/$WEB_SYSTEM/$WEB_BACKEND/$template.sh \
|
||||
$user $domain $ip $HOMEDIR $sdocroot
|
||||
fi
|
||||
# Parsing domain values
|
||||
get_domain_values 'web'
|
||||
local_ip=$(get_real_ip $IP)
|
||||
|
||||
# Checking web config
|
||||
web_conf="/etc/$WEB_SYSTEM/conf.d/vesta.conf"
|
||||
if [ -z "$(grep "$conf" $web_conf)" ]; then
|
||||
echo "Include $conf" >> $web_conf
|
||||
fi
|
||||
# Preparing domain values for the template substitution
|
||||
SSL_HOME="$ssl_home"
|
||||
prepare_web_domain_values
|
||||
|
||||
# Checking proxy
|
||||
# Adding domain to the web config
|
||||
add_web_config "$WEB_SYSTEM" "$TPL.stpl"
|
||||
|
||||
# Checking proxy config
|
||||
if [ ! -z "$PROXY_SYSTEM" ] && [ ! -z "$PROXY" ]; then
|
||||
conf="$HOMEDIR/$user/conf/web/s$PROXY_SYSTEM.conf"
|
||||
tpl_file="$WEBTPL/$PROXY_SYSTEM/$PROXY.stpl"
|
||||
add_web_config
|
||||
|
||||
chown root:$user $conf
|
||||
chmod 640 $conf
|
||||
|
||||
# Checking proxy config
|
||||
proxy_conf="/etc/$PROXY_SYSTEM/conf.d/vesta.conf"
|
||||
if [ -z "$(grep "$conf" $proxy_conf )" ]; then
|
||||
echo "include $conf;" >> $proxy_conf
|
||||
fi
|
||||
add_web_config "$PROXY_SYSTEM" "$PROXY.stpl"
|
||||
fi
|
||||
|
||||
|
||||
|
@ -137,6 +109,6 @@ fi
|
|||
|
||||
# Logging
|
||||
log_history "enabled ssl support for $domain"
|
||||
log_event "$OK" "$EVENT"
|
||||
log_event "$OK" "$ARGUMENTS"
|
||||
|
||||
exit
|
||||
|
|
|
@ -30,7 +30,7 @@ source $VESTA/conf/vesta.conf
|
|||
#----------------------------------------------------------#
|
||||
|
||||
check_args '3' "$#" 'USER DOMAIN TYPE'
|
||||
validate_format 'user' 'domain'
|
||||
is_format_valid 'user' 'domain'
|
||||
is_system_enabled "$WEB_SYSTEM" 'WEB_SYSTEM'
|
||||
is_type_valid "$STATS_SYSTEM" "$type"
|
||||
is_object_valid 'user' 'USER' "$user" "$user"
|
||||
|
@ -47,10 +47,8 @@ is_object_value_empty 'web' 'DOMAIN' "$domain" '$STATS'
|
|||
# Parse aliases
|
||||
get_domain_values 'web'
|
||||
|
||||
# Preparing domain values for the template substitution
|
||||
upd_web_domain_values
|
||||
|
||||
# Adding statistic config
|
||||
prepare_web_domain_values
|
||||
cat $WEBTPL/$type/$type.tpl |\
|
||||
sed -e "s|%ip%|$ip|g" \
|
||||
-e "s|%web_port%|$WEB_PORT|g" \
|
||||
|
@ -90,7 +88,7 @@ update_object_value 'web' 'DOMAIN' "$domain" '$STATS' "$type"
|
|||
|
||||
# Logging
|
||||
log_history "enabled web log analyzer for $domain"
|
||||
log_event "$OK" "$EVENT"
|
||||
log_event "$OK" "$ARGUMENTS"
|
||||
|
||||
# Build stats
|
||||
exec $BIN/v-update-web-domain-stat $user $domain
|
||||
|
|
|
@ -26,7 +26,7 @@ source $VESTA/conf/vesta.conf
|
|||
#----------------------------------------------------------#
|
||||
|
||||
check_args '4' "$#" 'USER DOMAIN STATS_USER STATS_PASS'
|
||||
validate_format 'user' 'domain' 'stats_user'
|
||||
is_format_valid 'user' 'domain' 'stats_user'
|
||||
is_system_enabled "$WEB_SYSTEM" 'WEB_SYSTEM'
|
||||
is_object_valid 'user' 'USER' "$user"
|
||||
is_object_unsuspended 'user' 'USER' "$user"
|
||||
|
@ -63,6 +63,6 @@ update_object_value 'web' 'DOMAIN' "$domain" '$STATS_CRYPT' "$stats_crypt"
|
|||
|
||||
# Logging
|
||||
log_history "added password protection for web stats on $domain"
|
||||
log_event "$OK" "$EVENT"
|
||||
log_event "$OK" "$ARGUMENTS"
|
||||
|
||||
exit
|
||||
|
|
|
@ -28,7 +28,7 @@ source $VESTA/conf/vesta.conf
|
|||
#----------------------------------------------------------#
|
||||
|
||||
check_args '1' "$#" 'USER [NOTIFY]'
|
||||
validate_format 'user'
|
||||
is_format_valid 'user'
|
||||
is_system_enabled "$BACKUP_SYSTEM" 'BACKUP_SYSTEM'
|
||||
is_object_valid 'user' 'USER' "$user"
|
||||
is_object_unsuspended 'user' 'USER' "$user"
|
||||
|
@ -41,7 +41,7 @@ is_backup_enabled
|
|||
|
||||
# Set backup directory if undefined
|
||||
if [ -z "$BACKUP" ]; then
|
||||
BACKUP=/home/backup
|
||||
BACKUP=/backup
|
||||
fi
|
||||
mkdir -p $BACKUP
|
||||
|
||||
|
@ -49,28 +49,20 @@ mkdir -p $BACKUP
|
|||
start_time=$(date '+%s')
|
||||
|
||||
# Set notification email and subject
|
||||
if [ "$notify" != 'no' ]; then
|
||||
subj="$user → backup failed"
|
||||
email=$(get_user_value '$CONTACT')
|
||||
else
|
||||
subj="$user → backup failed"
|
||||
email=$(grep CONTACT $VESTA/data/users/admin/user.conf |cut -f 2 -d \')
|
||||
fi
|
||||
subj="$user → backup failed"
|
||||
email=$(grep CONTACT $VESTA/data/users/admin/user.conf |cut -f 2 -d \')
|
||||
|
||||
# Check load average
|
||||
# Checking load average
|
||||
la=$(cat /proc/loadavg |cut -f 1 -d ' ' |cut -f 1 -d '.')
|
||||
i=0
|
||||
while [ "$la" -ge "$BACKUP_LA_LIMIT" ]; do
|
||||
echo "$(date "+%F %T") LoadAverage $la is above threshold. Sleeping..."
|
||||
sleep 120
|
||||
if [ "$i" -ge "5" ]; then
|
||||
mail_top=$(top -b| head -n 30)
|
||||
mail_text="LoadAverage $i is above threshold\n\n$mail_top\n"
|
||||
echo -e "$mail_text" |$send_mail -s "$subj" $email
|
||||
echo "Error: LA is too high"
|
||||
echo -e "$(date "+%F %T") Load Average $la"
|
||||
sleep 60
|
||||
if [ "$i" -ge "15" ]; then
|
||||
la_error="LoadAverage $la is above threshold"
|
||||
echo "$la_error" |$SENDMAIL -s "$subj" $email $notify
|
||||
sed -i "/ $user /d" $VESTA/data/queue/backup.pipe
|
||||
log_event "$E_LA" "$EVENT"
|
||||
exit $E_LA
|
||||
check_result $E_LA "$la_error"
|
||||
fi
|
||||
la=$(cat /proc/loadavg |cut -f 1 -d ' ' |cut -f 1 -d '.')
|
||||
(( ++i))
|
||||
|
@ -79,48 +71,40 @@ done
|
|||
# Creating temporary directory
|
||||
tmpdir=$(mktemp -p $BACKUP -d)
|
||||
if [ "$?" -ne 0 ]; then
|
||||
echo "Can't create tmp dir $tmpdir" |$send_mail -s "$subj" $email
|
||||
echo "Error: can't create tmp dir"
|
||||
log_event "$E_NOTEXIST" "$EVENT"
|
||||
exit $E_NOTEXIST
|
||||
echo "Can't create tmp dir $tmpdir" |$SENDMAIL -s "$subj" $email $notify
|
||||
check_result $E_NOTEXIST "can't create tmp dir"
|
||||
fi
|
||||
|
||||
# Backup sys configs
|
||||
echo -e "-- SYSTEM --"
|
||||
msg="-- SYSTEM --"
|
||||
echo "-- SYSTEM --" |tee $BACKUP/$user.log
|
||||
mkdir $tmpdir/vesta
|
||||
|
||||
echo -e "$(date "+%F %T") $user.conf"
|
||||
msg="$msg\n$(date "+%F %T") $user.conf"
|
||||
echo -e "$(date "+%F %T") $user.conf" |tee -a $BACKUP/$user.log
|
||||
cp -r $USER_DATA/user.conf $tmpdir/vesta/
|
||||
cp -r $USER_DATA/ssl $tmpdir/vesta/
|
||||
|
||||
if [ -e "$USER_DATA/stats.log" ]; then
|
||||
echo -e "$(date "+%F %T") stats.log"
|
||||
msg="$msg\n$(date "+%F %T") stats.log"
|
||||
echo -e "$(date "+%F %T") stats.log" |tee -a $BACKUP/$user.log
|
||||
cp -r $USER_DATA/stats.log $tmpdir/vesta/
|
||||
fi
|
||||
|
||||
if [ -e "$USER_DATA/history.log" ]; then
|
||||
echo -e "$(date "+%F %T") history.log"
|
||||
msg="$msg\n$(date "+%F %T") history.log"
|
||||
echo -e "$(date "+%F %T") history.log" |tee -a $BACKUP/$user.log
|
||||
cp -r $USER_DATA/history.log $tmpdir/vesta/
|
||||
fi
|
||||
|
||||
if [ -e "$USER_DATA/backup-excludes.conf" ]; then
|
||||
echo -e "$(date "+%F %T") backup-excludes.conf"
|
||||
msg="$msg\n$(date "+%F %T") backup-excludes.conf"
|
||||
echo -e "$(date "+%F %T") backup-excludes.conf" |tee -a $BACKUP/$user.log
|
||||
cp -r $USER_DATA/backup-excludes.conf $tmpdir/vesta/
|
||||
fi
|
||||
|
||||
# Backup PAM
|
||||
mkdir $tmpdir/pam
|
||||
echo -e "$(date "+%F %T") pam"
|
||||
msg="$msg\n$(date "+%F %T") pam"
|
||||
echo -e "$(date "+%F %T") pam" |tee -a $BACKUP/$user.log
|
||||
grep "^$user:" /etc/passwd > $tmpdir/pam/passwd
|
||||
grep "^$user:" /etc/shadow > $tmpdir/pam/shadow
|
||||
grep "^$user:" /etc/group > $tmpdir/pam/group
|
||||
echo
|
||||
msg="$msg\n"
|
||||
|
||||
# Parsing excludes
|
||||
if [ -e "$USER_DATA/backup-excludes.conf" ]; then
|
||||
|
@ -129,8 +113,7 @@ fi
|
|||
|
||||
# WEB domains
|
||||
if [ ! -z "$WEB_SYSTEM" ] && [ "$WEB" != '*' ]; then
|
||||
echo "-- WEB --"
|
||||
msg="$msg\n-- WEB --"
|
||||
echo -e "\n-- WEB --" |tee -a $BACKUP/$user.log
|
||||
mkdir $tmpdir/web/
|
||||
|
||||
# Parsing domain exclusions
|
||||
|
@ -140,8 +123,7 @@ if [ ! -z "$WEB_SYSTEM" ] && [ "$WEB" != '*' ]; then
|
|||
if [ -z "$exclusion" ]; then
|
||||
web_list="$web_list $domain"
|
||||
else
|
||||
echo "$(date "+%F %T") excluding $domain"
|
||||
msg="$msg\n$(date "+%F %T") excluding $domain"
|
||||
echo "$(date "+%F %T") excluding $domain"|tee -a $BACKUP/$user.log
|
||||
fi
|
||||
done
|
||||
web_list=$(echo "$web_list" |sed -e "s/ */\ /g" -e "s/^ //")
|
||||
|
@ -150,8 +132,7 @@ if [ ! -z "$WEB_SYSTEM" ] && [ "$WEB" != '*' ]; then
|
|||
|
||||
for domain in $web_list; do
|
||||
((i ++))
|
||||
echo -e "$(date "+%F %T") $domain"
|
||||
msg="$msg\n$(date "+%F %T") $domain"
|
||||
echo -e "$(date "+%F %T") $domain" |tee -a $BACKUP/$user.log
|
||||
mkdir -p $tmpdir/web/$domain/conf
|
||||
mkdir -p $tmpdir/web/$domain/vesta
|
||||
|
||||
|
@ -167,30 +148,30 @@ if [ ! -z "$WEB_SYSTEM" ] && [ "$WEB" != '*' ]; then
|
|||
# Backup vhost config
|
||||
tpl_file="$WEBTPL/$WEB_SYSTEM/$WEB_BACKEND/$TPL.tpl"
|
||||
conf="$HOMEDIR/$user/conf/web/$WEB_SYSTEM.conf"
|
||||
get_web_config_brds
|
||||
get_web_config_lines $tpl_file $conf
|
||||
sed -n "$top_line,$bottom_line p" $conf > conf/$WEB_SYSTEM.conf
|
||||
|
||||
# Backup ssl vhost
|
||||
if [ "$SSL" = 'yes' ]; then
|
||||
tpl_file="$WEBTPL/$WEB_SYSTEM/$WEB_BACKEND/$TPL.stpl"
|
||||
conf="$HOMEDIR/$user/conf/web/s$WEB_SYSTEM.conf"
|
||||
get_web_config_brds
|
||||
get_web_config_lines $tpl_file $conf
|
||||
sed -n "$top_line,$bottom_line p" $conf > conf/s$WEB_SYSTEM.conf
|
||||
fi
|
||||
|
||||
# Backup proxy config
|
||||
if [ ! -z "$PROXY" ]; then
|
||||
if [ ! -z "$PROXY_SYSTEM" ] && [ ! -z "$PROXY" ]; then
|
||||
tpl_file="$WEBTPL/$PROXY_SYSTEM/$PROXY.tpl"
|
||||
conf="$HOMEDIR/$user/conf/web/$PROXY_SYSTEM.conf"
|
||||
get_web_config_brds
|
||||
get_web_config_lines $tpl_file $conf
|
||||
sed -n "$top_line,$bottom_line p" $conf > conf/$PROXY_SYSTEM.conf
|
||||
fi
|
||||
|
||||
# Backup ssl proxy config
|
||||
if [ ! -z "$PROXY" ] && [ "$SSL" = 'yes' ] ; then
|
||||
if [ ! -z "$PROXY_SYSTEM" ] && [ "$SSL" = 'yes' ]; then
|
||||
tpl_file="$WEBTPL/$PROXY_SYSTEM/$PROXY.stpl"
|
||||
conf="$HOMEDIR/$user/conf/web/s$PROXY_SYSTEM.conf"
|
||||
get_web_config_brds
|
||||
get_web_config_lines $tpl_file $conf
|
||||
sed -n "$top_line,$bottom_line p" $conf > conf/s$PROXY_SYSTEM.conf
|
||||
fi
|
||||
|
||||
|
@ -230,20 +211,15 @@ if [ ! -z "$WEB_SYSTEM" ] && [ "$WEB" != '*' ]; then
|
|||
|
||||
# Print total
|
||||
if [ "$i" -eq 1 ]; then
|
||||
echo -e "$(date "+%F %T") *** $i domain ***"
|
||||
msg="$msg\n$(date "+%F %T") *** $i domain ***"
|
||||
echo -e "$(date "+%F %T") *** $i domain ***" |tee -a $BACKUP/$user.log
|
||||
else
|
||||
echo -e "$(date "+%F %T") *** $i domains ***"
|
||||
msg="$msg\n$(date "+%F %T") *** $i domains ***"
|
||||
echo -e "$(date "+%F %T") *** $i domains ***"|tee -a $BACKUP/$user.log
|
||||
fi
|
||||
echo
|
||||
msg="$msg\n"
|
||||
fi
|
||||
|
||||
# DNS domains
|
||||
if [ ! -z "$DNS_SYSTEM" ] && [ "$DNS" != '*' ]; then
|
||||
echo "-- DNS --"
|
||||
msg="$msg\n-- DNS --"
|
||||
echo -e "\n-- DNS --" |tee -a $BACKUP/$user.log
|
||||
mkdir $tmpdir/dns/
|
||||
|
||||
# Parsing domain exclusions
|
||||
|
@ -261,8 +237,7 @@ if [ ! -z "$DNS_SYSTEM" ] && [ "$DNS" != '*' ]; then
|
|||
i=0
|
||||
for domain in $dns_list; do
|
||||
((i ++))
|
||||
echo -e "$(date "+%F %T") $domain"
|
||||
msg="$msg\n$(date "+%F %T") $domain"
|
||||
echo -e "$(date "+%F %T") $domain" |tee -a $BACKUP/$user.log
|
||||
|
||||
# Building directory tree
|
||||
mkdir -p $tmpdir/dns/$domain/conf
|
||||
|
@ -282,20 +257,15 @@ if [ ! -z "$DNS_SYSTEM" ] && [ "$DNS" != '*' ]; then
|
|||
|
||||
# Print total
|
||||
if [ "$i" -eq 1 ]; then
|
||||
echo -e "$(date "+%F %T") *** $i domain ***"
|
||||
msg="$msg\n$(date "+%F %T") *** $i domain ***"
|
||||
echo -e "$(date "+%F %T") *** $i domain ***" |tee -a $BACKUP/$user.log
|
||||
else
|
||||
echo -e "$(date "+%F %T") *** $i domains ***"
|
||||
msg="$msg\n$(date "+%F %T") *** $i domains ***"
|
||||
echo -e "$(date "+%F %T") *** $i domains ***"|tee -a $BACKUP/$user.log
|
||||
fi
|
||||
echo
|
||||
msg="$msg\n"
|
||||
fi
|
||||
|
||||
# Mail domains
|
||||
if [ ! -z "$MAIL_SYSTEM" ] && [ "$MAIL" != '*' ]; then
|
||||
echo "-- MAIL --"
|
||||
msg="$msg\n-- MAIL --"
|
||||
echo -e "\n-- MAIL --" |tee -a $BACKUP/$user.log
|
||||
mkdir $tmpdir/mail/
|
||||
|
||||
# Parsing domain exclusions
|
||||
|
@ -305,8 +275,7 @@ if [ ! -z "$MAIL_SYSTEM" ] && [ "$MAIL" != '*' ]; then
|
|||
if [ -z "$check_exl" ]; then
|
||||
mail_list="$mail_list $domain"
|
||||
else
|
||||
echo "$(date "+%F %T") excluding $domain"
|
||||
msg="$msg\n$(date "+%F %T") excluding $domain"
|
||||
echo "$(date "+%F %T") excluding $domain"|tee -a $BACKUP/$user.log
|
||||
fi
|
||||
done
|
||||
mail_list=$(echo "$mail_list" |sed -e "s/ */\ /g" -e "s/^ //")
|
||||
|
@ -314,8 +283,7 @@ if [ ! -z "$MAIL_SYSTEM" ] && [ "$MAIL" != '*' ]; then
|
|||
i=0
|
||||
for domain in $mail_list; do
|
||||
((i ++))
|
||||
echo -e "$(date "+%F %T") $domain"
|
||||
msg="$msg\n$(date "+%F %T") $domain"
|
||||
echo -e "$(date "+%F %T") $domain" |tee -a $BACKUP/$user.log
|
||||
mkdir -p $tmpdir/mail/$domain/conf
|
||||
mkdir -p $tmpdir/mail/$domain/vesta
|
||||
domain_idn=$(idn -t --quiet -a "$domain")
|
||||
|
@ -342,13 +310,13 @@ if [ ! -z "$MAIL_SYSTEM" ] && [ "$MAIL" != '*' ]; then
|
|||
|
||||
# Checking exlusions
|
||||
if [ -z "$exclusion" ] && [[ "$MAIL_SYSTEM" =~ exim ]]; then
|
||||
echo "$(date "+%F %T") + $account@$domain"
|
||||
msg="$msg\n$(date "+%F %T") + $account@$domain"
|
||||
echo "$(date "+%F %T") + $account@$domain" |\
|
||||
tee -a $BACKUP/$user.log
|
||||
touch $tmpdir/mail/$domain/accounts.tar
|
||||
tar -rpf $tmpdir/mail/$domain/accounts.tar $account
|
||||
else
|
||||
echo "$(date "+%F %T") excluding account $account"
|
||||
msg="$msg\n$(date "+%F %T") excluding account $account"
|
||||
echo "$(date "+%F %T") excluding mail account $account" |\
|
||||
tee -a $BACKUP/$user.log
|
||||
fi
|
||||
done
|
||||
|
||||
|
@ -360,21 +328,16 @@ if [ ! -z "$MAIL_SYSTEM" ] && [ "$MAIL" != '*' ]; then
|
|||
|
||||
# Print total
|
||||
if [ "$i" -eq 1 ]; then
|
||||
echo -e "$(date "+%F %T") *** $i domain ***"
|
||||
msg="$msg\n$(date "+%F %T") *** $i domain ***"
|
||||
echo -e "$(date "+%F %T") *** $i domain ***" |tee -a $BACKUP/$user.log
|
||||
else
|
||||
echo -e "$(date "+%F %T") *** $i domains ***"
|
||||
msg="$msg\n$(date "+%F %T") *** $i domains ***"
|
||||
echo -e "$(date "+%F %T") *** $i domains ***"|tee -a $BACKUP/$user.log
|
||||
fi
|
||||
echo
|
||||
msg="$msg\n"
|
||||
fi
|
||||
|
||||
|
||||
# Databases
|
||||
if [ ! -z "$DB_SYSTEM" ] && [ "$DB" != '*' ]; then
|
||||
echo "-- DB --"
|
||||
msg="$msg\n-- DB --"
|
||||
echo -e "\n-- DB --" |tee -a $BACKUP/$user.log
|
||||
mkdir $tmpdir/db/
|
||||
|
||||
# Parsing database exclusions
|
||||
|
@ -383,8 +346,8 @@ if [ ! -z "$DB_SYSTEM" ] && [ "$DB" != '*' ]; then
|
|||
if [ -z "$exclusion" ]; then
|
||||
db_list="$db_list $database"
|
||||
else
|
||||
echo "$(date "+%F %T") excluding $database"
|
||||
msg="$msg\n$(date "+%F %T") excluding $database"
|
||||
echo "$(date "+%F %T") excluding $database" |\
|
||||
tee -a $BACKUP/$user.log
|
||||
fi
|
||||
done
|
||||
|
||||
|
@ -395,9 +358,7 @@ if [ ! -z "$DB_SYSTEM" ] && [ "$DB" != '*' ]; then
|
|||
((i ++))
|
||||
get_database_values
|
||||
|
||||
echo -e "$(date "+%F %T") $database ($TYPE)"
|
||||
msg="$msg\n$(date "+%F %T") $database ($TYPE)"
|
||||
|
||||
echo -e "$(date "+%F %T") $database ($TYPE)" |tee -a $BACKUP/$user.log
|
||||
mkdir -p $tmpdir/db/$database/conf
|
||||
mkdir -p $tmpdir/db/$database/vesta
|
||||
|
||||
|
@ -417,20 +378,17 @@ if [ ! -z "$DB_SYSTEM" ] && [ "$DB" != '*' ]; then
|
|||
|
||||
# Print total
|
||||
if [ "$i" -eq 1 ]; then
|
||||
echo -e "$(date "+%F %T") *** $i database ***"
|
||||
msg="$msg\n$(date "+%F %T") *** $i database ***"
|
||||
echo -e "$(date "+%F %T") *** $i database ***" |\
|
||||
tee -a $BACKUP/$user.log
|
||||
else
|
||||
echo -e "$(date "+%F %T") *** $i databases ***"
|
||||
msg="$msg\n$(date "+%F %T") *** $i databases ***"
|
||||
echo -e "$(date "+%F %T") *** $i databases ***"|\
|
||||
tee -a $BACKUP/$user.log
|
||||
fi
|
||||
echo
|
||||
msg="$msg\n"
|
||||
fi
|
||||
|
||||
# Cron jobs
|
||||
if [ ! -z "$CRON_SYSTEM" ] && [ "$CRON" != '*' ]; then
|
||||
echo "-- CRON --"
|
||||
msg="$msg\n-- CRON --"
|
||||
echo -e "\n-- CRON --" |tee -a $BACKUP/$user.log
|
||||
mkdir $tmpdir/cron/
|
||||
|
||||
# Backup cron.conf
|
||||
|
@ -444,20 +402,17 @@ if [ ! -z "$CRON_SYSTEM" ] && [ "$CRON" != '*' ]; then
|
|||
|
||||
# Print total
|
||||
if [ "$cron_record" -eq 1 ]; then
|
||||
echo -e "$(date "+%F %T") *** $cron_record job ***"
|
||||
msg="$msg\n$(date "+%F %T") *** $cron_record job ***"
|
||||
echo -e "$(date "+%F %T") *** $cron_record job ***" |\
|
||||
tee -a $BACKUP/$user.log
|
||||
else
|
||||
echo -e "$(date "+%F %T") *** $cron_record jobs ***"
|
||||
msg="$msg\n$(date "+%F %T") *** $cron_record jobs ***"
|
||||
echo -e "$(date "+%F %T") *** $cron_record jobs ***" |\
|
||||
tee -a $BACKUP/$user.log
|
||||
fi
|
||||
echo
|
||||
msg="$msg\n"
|
||||
fi
|
||||
|
||||
# User Directories
|
||||
if [ "$USER" != '*' ]; then
|
||||
echo "-- User Dir --"
|
||||
msg="$msg\n-- User Dir --"
|
||||
echo -e "\n-- User Dir --" |tee -a $BACKUP/$user.log
|
||||
mkdir $tmpdir/user_dir
|
||||
cd $HOMEDIR/$user
|
||||
|
||||
|
@ -471,21 +426,20 @@ if [ "$USER" != '*' ]; then
|
|||
fargs+=(-not)
|
||||
fargs+=(-path)
|
||||
fargs+=("./$xpath*")
|
||||
echo "$(date "+%F %T") excluding directory $xpath"
|
||||
msg="$msg\n$(date "+%F %T") excluding directory $xpath"
|
||||
echo "$(date "+%F %T") excluding directory $xpath" |\
|
||||
tee -a $BACKUP/$user.log
|
||||
done
|
||||
|
||||
IFS=$'\n'
|
||||
set -f
|
||||
i=0
|
||||
|
||||
for udir in $(ls -a |egrep -v "conf|web|dns|mail|^\.\.$|^\.$"); do
|
||||
for udir in $(ls -a |egrep -v "^conf$|^web$|^dns$|^mail$|^\.\.$|^\.$"); do
|
||||
exclusion=$(echo "$USER" |tr ',' '\n' |grep "^$udir$")
|
||||
if [ -z "$exclusion" ]; then
|
||||
((i ++))
|
||||
udir_list="$udir_list $udir"
|
||||
echo -e "$(date "+%F %T") adding $udir"
|
||||
msg="$msg\n$(date "+%F %T") adding $udir"
|
||||
echo -e "$(date "+%F %T") adding $udir" |tee -a $BACKUP/$user.log
|
||||
|
||||
# Backup files and dirs
|
||||
tar -cpf $tmpdir/user_dir/$udir.tar $udir
|
||||
|
@ -499,14 +453,12 @@ if [ "$USER" != '*' ]; then
|
|||
|
||||
# Print total
|
||||
if [ "$i" -eq 1 ]; then
|
||||
echo -e "$(date "+%F %T") *** $i user directory ***"
|
||||
msg="$msg\n$(date "+%F %T") *** $i directory ***"
|
||||
echo -e "$(date "+%F %T") *** $i user directory ***" |\
|
||||
tee -a $BACKUP/$user.log
|
||||
else
|
||||
echo -e "$(date "+%F %T") *** $i directories ***"
|
||||
msg="$msg\n$(date "+%F %T") *** $i directories ***"
|
||||
echo -e "$(date "+%F %T") *** $i directories ***" |\
|
||||
tee -a $BACKUP/$user.log
|
||||
fi
|
||||
echo
|
||||
msg="$msg\n"
|
||||
fi
|
||||
|
||||
# Get backup size
|
||||
|
@ -514,14 +466,14 @@ size="$(du -shm $tmpdir |cut -f 1)"
|
|||
|
||||
# Get current time
|
||||
end_time=$(date '+%s')
|
||||
DATE=$(date +%F)
|
||||
TIME=$(date +%T)
|
||||
|
||||
time_n_date=$(date +'%T %F')
|
||||
time=$(echo "$time_n_date" |cut -f 1 -d \ )
|
||||
date=$(echo "$time_n_date" |cut -f 2 -d \ )
|
||||
|
||||
# Defining local storage function
|
||||
local_backup(){
|
||||
|
||||
rm -f $BACKUP/$user.$DATE.tar
|
||||
rm -f $BACKUP/$user.$date.tar
|
||||
|
||||
# Checking retention
|
||||
backup_list=$(ls -lrt $BACKUP/ |awk '{print $9}' |grep "^$user\.")
|
||||
|
@ -533,33 +485,30 @@ local_backup(){
|
|||
# Removing old backup
|
||||
for backup in $(echo "$backup_list" |head -n $backups_rm_number); do
|
||||
backup_date=$(echo $backup |sed -e "s/$user.//" -e "s/.tar$//")
|
||||
echo -e "$(date "+%F %T") Roated: $backup_date"
|
||||
msg="$msg\n$(date "+%F %T") Rotated: $backup_date"
|
||||
echo -e "$(date "+%F %T") Roated: $backup_date" |\
|
||||
tee -a $BACKUP/$user.log
|
||||
rm -f $BACKUP/$backup
|
||||
done
|
||||
fi
|
||||
|
||||
# Checking disk space
|
||||
disk_usage=$(df $BACKUP |tail -n1 |tr ' ' '\n' |grep % |cut -f 1 -d %)
|
||||
|
||||
if [ "$disk_usage" -ge "$BACKUP_DISK_LIMIT" ]; then
|
||||
rm -rf $tmpdir
|
||||
echo "Not enough disk space to run backup" |\
|
||||
$send_mail -s "$subj" $email
|
||||
echo "Error: Not enough disk space"
|
||||
rm -f $BACKUP/$user.log
|
||||
sed -i "/ $user /d" $VESTA/data/queue/backup.pipe
|
||||
log_event "$E_DISK" "$EVENT"
|
||||
exit $E_DISK
|
||||
echo "Not enough disk space" |$SENDMAIL -s "$subj" $email $notify
|
||||
check_result "$E_DISK" "Not enough dsk space"
|
||||
fi
|
||||
|
||||
# Creating final tarball
|
||||
cd $tmpdir
|
||||
tar -cf $BACKUP/$user.$DATE.tar .
|
||||
chmod 640 $BACKUP/$user.$DATE.tar
|
||||
chown admin:$user $BACKUP/$user.$DATE.tar
|
||||
tar -cf $BACKUP/$user.$date.tar .
|
||||
chmod 640 $BACKUP/$user.$date.tar
|
||||
chown admin:$user $BACKUP/$user.$date.tar
|
||||
localbackup='yes'
|
||||
echo -e "$(date "+%F %T") Local: $BACKUP/$user.$DATE.tar"
|
||||
msg="$msg\n$(date "+%F %T") Local: $BACKUP/$user.$DATE.tar"
|
||||
echo -e "$(date "+%F %T") Local: $BACKUP/$user.$date.tar" |\
|
||||
tee -a $BACKUP/$user.log
|
||||
U_BACKUPS=$(ls $BACKUP/ |grep "^$user." |wc -l)
|
||||
update_user_value "$user" '$U_BACKUPS' "$U_BACKUPS"
|
||||
}
|
||||
|
@ -582,21 +531,17 @@ EOF
|
|||
ftp_backup() {
|
||||
# Checking config
|
||||
if [ ! -e "$VESTA/conf/ftp.backup.conf" ]; then
|
||||
ftp_conf_error="Can't open $VESTA/conf/ftp.backup.conf"
|
||||
echo "$ftp_conf_error" |$send_mail -s "$subj" $email
|
||||
echo "Error: $VESTA/conf/ftp.backup.conf doesn't exist"
|
||||
error="ftp.backup.conf doesn't exist"
|
||||
rm -rf $tmpdir
|
||||
rm -f $BACKUP/$user.log
|
||||
echo "$error" |$SENDMAIL -s "$subj" $email $notify
|
||||
sed -i "/ $user /d" $VESTA/data/queue/backup.pipe
|
||||
log_event "$E_NOTEXIST" "$EVENT"
|
||||
exit $E_NOTEXIST
|
||||
check_result "$E_NOTEXIST" "$error"
|
||||
fi
|
||||
|
||||
# Parse config
|
||||
source $VESTA/conf/ftp.backup.conf
|
||||
|
||||
# Set current data
|
||||
DATE=$(date +%F)
|
||||
TIME=$(date +%T)
|
||||
|
||||
# Set default port
|
||||
if [ -z "$(grep 'PORT=' $VESTA/conf/ftp.backup.conf)" ]; then
|
||||
PORT='21'
|
||||
|
@ -604,30 +549,28 @@ ftp_backup() {
|
|||
|
||||
# Checking variables
|
||||
if [ -z "$HOST" ] || [ -z "$USERNAME" ] || [ -z "$PASSWORD" ]; then
|
||||
error="Can't parse ftp backup configuration"
|
||||
rm -rf $tmpdir
|
||||
echo "Can't parse ftp backup configuration" |\
|
||||
$send_mail -s "$subj" $email
|
||||
echo "Error: Parsing error"
|
||||
rm -f $BACKUP/$user.log
|
||||
echo "$error" |$SENDMAIL -s "$subj" $email $notify
|
||||
sed -i "/ $user /d" $VESTA/data/queue/backup.pipe
|
||||
log_event "$E_PARSING" "$EVENT"
|
||||
exit $E_PARSING
|
||||
check_result "$E_PARSING" "$error"
|
||||
fi
|
||||
|
||||
|
||||
# Debug info
|
||||
echo -e "$(date "+%F %T") Remote: ftp://$HOST$BPATH/$user.$DATE.tar"
|
||||
echo -e "$(date "+%F %T") Remote: ftp://$HOST$BPATH/$user.$date.tar"
|
||||
|
||||
# Checking ftp connection
|
||||
fconn=$(ftpc)
|
||||
ferror=$(echo $fconn |grep -i -e failed -e error -e "Can't" -e "not conn")
|
||||
if [ ! -z "$ferror" ]; then
|
||||
error="Error: can't login to ftp ftp://$USERNAME@$HOST"
|
||||
rm -rf $tmpdir
|
||||
echo "Can't login to ftp://$USERNAME@$HOST" |\
|
||||
$send_mail -s "$subj" $email
|
||||
echo "Error: can't login to ftp ftp://$USERNAME@$HOST"
|
||||
rm -f $BACKUP/$user.log
|
||||
echo "$error" |$SENDMAIL -s "$subj" $email $notify
|
||||
sed -i "/ $user /d" $VESTA/data/queue/backup.pipe
|
||||
log_event "$E_CONNECT" "$EVENT"
|
||||
exit $E_CONNECT
|
||||
check_result "$E_CONNECT" "$error"
|
||||
fi
|
||||
|
||||
# Check ftp permissions
|
||||
|
@ -636,13 +579,12 @@ ftp_backup() {
|
|||
ftpc "mkdir $ftmpdir" "rm $ftmpdir"
|
||||
ftp_result=$(ftpc "mkdir $ftmpdir" "rm $ftmpdir" |grep -v Trying)
|
||||
if [ ! -z "$ftp_result" ] ; then
|
||||
error="Can't create ftp backup folder ftp://$HOST$BPATH"
|
||||
rm -rf $tmpdir
|
||||
echo "Can't create ftp backup folder ftp://$HOST$BPATH" |\
|
||||
$send_mail -s "$subj" $email
|
||||
echo "Error: cant's create ftp folder ftp://$HOST$BPATH"
|
||||
rm -f $BACKUP/$user.log
|
||||
echo "$error" |$SENDMAIL -s "$subj" $email $notify
|
||||
sed -i "/ $user /d" $VESTA/data/queue/backup.pipe
|
||||
log_event "$E_FTP" "$EVENT"
|
||||
exit $E_FTP
|
||||
check_result "$E_FTP" "$error"
|
||||
fi
|
||||
|
||||
# Checking retention
|
||||
|
@ -652,8 +594,8 @@ ftp_backup() {
|
|||
backups_rm_number=$((backups_count - BACKUPS + 1))
|
||||
for backup in $(echo "$backup_list" |head -n $backups_rm_number); do
|
||||
backup_date=$(echo $backup |sed -e "s/$user.//" -e "s/.tar$//")
|
||||
echo -e "$(date "+%F %T") Roated ftp backup: $backup_date"
|
||||
msg="$msg\n$(date "+%F %T") Roated ftp backup: $backup_date"
|
||||
echo -e "$(date "+%F %T") Roated ftp backup: $backup_date" |\
|
||||
tee -a $BACKUP/$user.log
|
||||
ftpc "cd $BPATH" "delete $backup"
|
||||
done
|
||||
fi
|
||||
|
@ -661,13 +603,13 @@ ftp_backup() {
|
|||
# Uploading backup archive
|
||||
if [ "$localbackup" = 'yes' ]; then
|
||||
cd $BACKUP
|
||||
ftpc "cd $BPATH" "put $user.$DATE.tar"
|
||||
ftpc "cd $BPATH" "put $user.$date.tar"
|
||||
else
|
||||
cd $tmpdir
|
||||
tar -cf $BACKUP/$user.$DATE.tar .
|
||||
tar -cf $BACKUP/$user.$date.tar .
|
||||
cd $BACKUP/
|
||||
ftpc "cd $BPATH" "put $user.$DATE.tar"
|
||||
rm -f $user.$DATE.tar
|
||||
ftpc "cd $BPATH" "put $user.$date.tar"
|
||||
rm -f $user.$date.tar
|
||||
fi
|
||||
}
|
||||
|
||||
|
@ -733,21 +675,17 @@ sftp_backup() {
|
|||
|
||||
# Checking config
|
||||
if [ ! -e "$VESTA/conf/sftp.backup.conf" ]; then
|
||||
sftp_conf_error="Can't open $VESTA/conf/sftp.backup.conf"
|
||||
echo "$sftp_conf_error" |$send_mail -s "$subj" $email
|
||||
echo "Error: $VESTA/conf/sftp.backup.conf doesn't exist"
|
||||
error="Can't open sftp.backup.conf"
|
||||
rm -rf $tmpdir
|
||||
rm -f $BACKUP/$user.log
|
||||
echo "$error" |$SENDMAIL -s "$subj" $email $notify
|
||||
sed -i "/ $user /d" $VESTA/data/queue/backup.pipe
|
||||
log_event "$E_NOTEXIST" "$EVENT"
|
||||
exit $E_NOTEXIST
|
||||
check_result "$E_NOTEXIST" "$error"
|
||||
fi
|
||||
|
||||
# Parse config
|
||||
source $VESTA/conf/sftp.backup.conf
|
||||
|
||||
# Set current data
|
||||
DATE=$(date +%F)
|
||||
TIME=$(date +%T)
|
||||
|
||||
# Set default port
|
||||
if [ -z "$(grep 'PORT=' $VESTA/conf/sftp.backup.conf)" ]; then
|
||||
PORT='22'
|
||||
|
@ -755,17 +693,17 @@ sftp_backup() {
|
|||
|
||||
# Checking variables
|
||||
if [ -z "$HOST" ] || [ -z "$USERNAME" ] || [ -z "$PASSWORD" ]; then
|
||||
error="Can't parse sftp backup configuration"
|
||||
rm -rf $tmpdir
|
||||
echo "Can't parse sftp backup configuration" |\
|
||||
$send_mail -s "$subj" $email
|
||||
echo "Error: Parsing error"
|
||||
rm -f $BACKUP/$user.log
|
||||
echo "$error" |$SENDMAIL -s "$subj" $email $notify
|
||||
sed -i "/ $user /d" $VESTA/data/queue/backup.pipe
|
||||
log_event "$E_PARSING" "$EVENT"
|
||||
exit $E_PARSING
|
||||
check_result "$E_PARSING" "$error"
|
||||
fi
|
||||
|
||||
# Debug info
|
||||
echo -e "$(date "+%F %T") Remote: sftp://$HOST/$BPATH/$user.$DATE.tar"
|
||||
echo -e "$(date "+%F %T") Remote: sftp://$HOST/$BPATH/$user.$date.tar" |\
|
||||
tee -a $BACKUP/$user.log
|
||||
|
||||
# Checking network connection and write permissions
|
||||
sftmpdir="$BPATH/vst.bK76A9SUkt"
|
||||
|
@ -773,47 +711,45 @@ sftp_backup() {
|
|||
sftpc "mkdir $sftmpdir" "rmdir $sftmpdir" > /dev/null 2>&1
|
||||
rc=$?
|
||||
if [[ "$rc" != 0 ]]; then
|
||||
rm -rf $tmpdir
|
||||
case $rc in
|
||||
$E_CONNECT) echo "Error: can't login to sftp host $HOST" |\
|
||||
$send_mail -s "$subj" $email;;
|
||||
$E_FTP) echo "Error: can't create temp folder on sftp $HOST" |\
|
||||
$send_mail -s "$subj" $email;;
|
||||
$E_CONNECT) error="Can't login to sftp host $HOST" ;;
|
||||
$E_FTP) error="Can't create temp folder on sftp $HOST" ;;
|
||||
esac
|
||||
rm -rf $tmpdir
|
||||
rm -f $BACKUP/$user.log
|
||||
echo "$error" |$SENDMAIL -s "$subj" $email $notify
|
||||
sed -i "/ $user /d" $VESTA/data/queue/backup.pipe
|
||||
log_event "$rc" "$EVENT"
|
||||
exit "$rc"
|
||||
check_result "$rc" "$error"
|
||||
fi
|
||||
|
||||
# Checking retention
|
||||
backup_list=$(sftpc "cd $BPATH" "ls -l" |awk '{print $9}' |grep "^$user\.")
|
||||
backup_list=$(sftpc "cd $BPATH" "ls -l" |awk '{print $9}'|grep "^$user\.")
|
||||
backups_count=$(echo "$backup_list" |wc -l)
|
||||
if [ "$backups_count" -ge "$BACKUPS" ]; then
|
||||
backups_rm_number=$((backups_count - BACKUPS + 1))
|
||||
for backup in $(echo "$backup_list" |head -n $backups_rm_number); do
|
||||
backup_date=$(echo $backup |sed -e "s/$user.//" -e "s/.tar.*$//")
|
||||
echo -e "$(date "+%F %T") Roated sftp backup: $backup_date"
|
||||
msg="$msg\n$(date "+%F %T") Roated sftp backup: $backup_date"
|
||||
echo -e "$(date "+%F %T") Roated sftp backup: $backup_date" |\
|
||||
tee -a $BACKUP/$user.log
|
||||
sftpc "cd $BPATH" "rm $backup" > /dev/null 2>&1
|
||||
done
|
||||
fi
|
||||
|
||||
# Uploading backup archive
|
||||
echo -e "$(date "+%F %T") Uploading $user.$DATE.tar ..."
|
||||
echo "$(date "+%F %T") Uploading $user.$date.tar"|tee -a $BACKUP/$user.log
|
||||
if [ "$localbackup" = 'yes' ]; then
|
||||
cd $BACKUP
|
||||
sftpc "cd $BPATH" "put $user.$DATE.tar" > /dev/null 2>&1
|
||||
sftpc "cd $BPATH" "put $user.$date.tar" > /dev/null 2>&1
|
||||
else
|
||||
cd $tmpdir
|
||||
tar -cf $BACKUP/$user.$DATE.tar .
|
||||
tar -cf $BACKUP/$user.$date.tar .
|
||||
cd $BACKUP/
|
||||
sftpc "cd $BPATH" "put $user.$DATE.tar" > /dev/null 2>&1
|
||||
rm -f $user.$DATE.tar
|
||||
sftpc "cd $BPATH" "put $user.$date.tar" > /dev/null 2>&1
|
||||
rm -f $user.$date.tar
|
||||
fi
|
||||
}
|
||||
|
||||
echo "-- SUMMARY --"
|
||||
msg="$msg\n-- SUMMARY --"
|
||||
echo -e "\n-- SUMMARY --" |tee -a $BACKUP/$user.log
|
||||
|
||||
# Switching on backup system types
|
||||
for backup_type in $(echo -e "${BACKUP_SYSTEM//,/\\n}"); do
|
||||
|
@ -839,10 +775,8 @@ if [ "$run_time" -eq 1 ]; then
|
|||
min=minute
|
||||
fi
|
||||
|
||||
echo "$(date "+%F %T") Size: $size Mb"
|
||||
msg="$msg\n$(date "+%F %T") Size: $size Mb"
|
||||
echo "$(date "+%F %T") Runtime: $run_time $min"
|
||||
msg="$msg\n$(date "+%F %T") Runtime: $run_time $min"
|
||||
echo "$(date "+%F %T") Size: $size Mb" |tee -a $BACKUP/$user.log
|
||||
echo "$(date "+%F %T") Runtime: $run_time $min" |tee -a $BACKUP/$user.log
|
||||
|
||||
|
||||
#----------------------------------------------------------#
|
||||
|
@ -851,10 +785,10 @@ msg="$msg\n$(date "+%F %T") Runtime: $run_time $min"
|
|||
|
||||
# Removing duplicate
|
||||
touch $USER_DATA/backup.conf
|
||||
sed -i "/$user.$DATE.tar/d" $USER_DATA/backup.conf
|
||||
sed -i "/$user.$date.tar/d" $USER_DATA/backup.conf
|
||||
|
||||
# Registering new backup
|
||||
backup_str="BACKUP='$user.$DATE.tar'"
|
||||
backup_str="BACKUP='$user.$date.tar'"
|
||||
backup_str="$backup_str TYPE='$BACKUP_SYSTEM' SIZE='$size'"
|
||||
backup_str="$backup_str WEB='${web_list// /,}'"
|
||||
backup_str="$backup_str DNS='${dns_list// /,}'"
|
||||
|
@ -862,7 +796,7 @@ backup_str="$backup_str MAIL='${mail_list// /,}'"
|
|||
backup_str="$backup_str DB='${db_list// /,}'"
|
||||
backup_str="$backup_str CRON='$cron_list'"
|
||||
backup_str="$backup_str UDIR='${udir_list// /,}'"
|
||||
backup_str="$backup_str RUNTIME='$run_time' TIME='$TIME' DATE='$DATE'"
|
||||
backup_str="$backup_str RUNTIME='$run_time' TIME='$time' DATE='$date'"
|
||||
echo "$backup_str" >> $USER_DATA/backup.conf
|
||||
|
||||
# Removing old backups
|
||||
|
@ -874,13 +808,14 @@ chmod 660 $USER_DATA/backup.conf
|
|||
sed -i "/v-backup-user $user /d" $VESTA/data/queue/backup.pipe
|
||||
|
||||
# Send notification
|
||||
if [ "$notify" != 'no' ]; then
|
||||
if [ -e "$BACKUP/$user.log" ]; then
|
||||
subj="$user → backup has been completed"
|
||||
email=$(get_user_value '$CONTACT')
|
||||
echo -e "$msg" |$send_mail -s "$subj" $email
|
||||
cat $BACKUP/$user.log #|$SENDMAIL -s "$subj" $email $notify
|
||||
rm $BACKUP/$user.log
|
||||
fi
|
||||
|
||||
# Logging
|
||||
log_event "$OK" "$EVENT"
|
||||
log_event "$OK" "$ARGUMENTS"
|
||||
|
||||
exit
|
||||
|
|
|
@ -27,7 +27,7 @@ $BIN/v-check-vesta-license >/dev/null
|
|||
if [ -z "$BACKUP_SYSTEM" ]; then
|
||||
exit
|
||||
fi
|
||||
for user in $(ls $VESTA/data/users); do
|
||||
for user in $(grep '@' /etc/passwd |cut -f1 -d:); do
|
||||
check_suspend=$(grep "SUSPENDED='no'" $VESTA/data/users/$user/user.conf)
|
||||
log=$VESTA/log/backup.log
|
||||
if [ ! -z "$check_suspend" ]; then
|
||||
|
@ -44,6 +44,6 @@ done
|
|||
#----------------------------------------------------------#
|
||||
|
||||
# No Logging
|
||||
#log_event "$OK" "$EVENT"
|
||||
#log_event "$OK" "$ARGUMENTS"
|
||||
|
||||
exit
|
||||
|
|
|
@ -30,7 +30,7 @@ source $VESTA/conf/vesta.conf
|
|||
#----------------------------------------------------------#
|
||||
|
||||
check_args '7' "$#" 'USER JOB MIN HOUR DAY MONTH WDAY COMMAND'
|
||||
validate_format 'user' 'job' 'min' 'hour' 'day' 'month' 'wday' 'command'
|
||||
is_format_valid 'user' 'job' 'min' 'hour' 'day' 'month' 'wday' 'command'
|
||||
is_system_enabled "$CRON_SYSTEM" 'CRON_SYSTEM'
|
||||
is_object_valid 'user' 'USER' "$user"
|
||||
is_object_unsuspended 'user' 'USER' "$user"
|
||||
|
@ -42,10 +42,15 @@ is_object_unsuspended 'cron' 'JOB' "$job"
|
|||
# Action #
|
||||
#----------------------------------------------------------#
|
||||
|
||||
# Generating timestamp
|
||||
time_n_date=$(date +'%T %F')
|
||||
time=$(echo "$time_n_date" |cut -f 1 -d \ )
|
||||
date=$(echo "$time_n_date" |cut -f 2 -d \ )
|
||||
|
||||
# Concatenating cron string
|
||||
command=$(echo $command | sed -e "s/'/%quote%/g")
|
||||
str="JOB='$job' MIN='$min' HOUR='$hour' DAY='$day' MONTH='$month' WDAY='$wday'"
|
||||
str="$str CMD='$command' SUSPENDED='no' TIME='$TIME' DATE='$DATE'"
|
||||
str="$str CMD='$command' SUSPENDED='no' TIME='$time' DATE='$date'"
|
||||
|
||||
# Deleting old job
|
||||
sed -i "/JOB='$job' /d" $USER_DATA/cron.conf
|
||||
|
@ -70,6 +75,6 @@ check_result $? "Cron restart failed" >/dev/null
|
|||
|
||||
# Logging
|
||||
log_history "changed cron job $job"
|
||||
log_event "$OK" "$EVENT"
|
||||
log_event "$OK" "$ARGUMENTS"
|
||||
|
||||
exit
|
||||
|
|
|
@ -27,7 +27,7 @@ source $VESTA/conf/vesta.conf
|
|||
|
||||
args_usage='TYPE HOST DBUSER DBPASS'
|
||||
check_args '4' "$#" "$args_usage"
|
||||
validate_format 'host' 'dbuser'
|
||||
is_format_valid 'host' 'dbuser'
|
||||
is_object_valid "../../conf/$type" 'HOST' "$host"
|
||||
dbpass="$password"
|
||||
|
||||
|
@ -59,6 +59,6 @@ update_object_value "../../conf/$type" 'HOST' "$host" '$PASSWORD' "$dbpass"
|
|||
#----------------------------------------------------------#
|
||||
|
||||
# Logging
|
||||
log_event "$OK" "$EVENT"
|
||||
log_event "$OK" "$ARGUMENTS"
|
||||
|
||||
exit
|
||||
|
|
|
@ -25,7 +25,7 @@ source $VESTA/conf/vesta.conf
|
|||
#----------------------------------------------------------#
|
||||
|
||||
check_args '2' "$#" 'DATABASE USER'
|
||||
validate_format 'database' 'user'
|
||||
is_format_valid 'database' 'user'
|
||||
is_system_enabled "$DB_SYSTEM" 'DB_SYSTEM'
|
||||
is_object_valid 'user' 'USER' "$user"
|
||||
is_object_unsuspended 'user' 'USER' "$user"
|
||||
|
@ -34,7 +34,7 @@ is_object_unsuspended 'user' 'USER' "$user"
|
|||
owner=$(echo $database | cut -f 1 -d '_')
|
||||
if [ ! -e "$VESTA/data/users/$owner" ]; then
|
||||
echo "Error: database owner doesn't exist"
|
||||
log_event "$E_NOTEXIST" "$EVENT"
|
||||
log_event "$E_NOTEXIST" "$ARGUMENTS"
|
||||
exit $E_NOTEXIST
|
||||
fi
|
||||
|
||||
|
@ -47,7 +47,7 @@ fi
|
|||
db_data=$(grep "DB='$database'" $VESTA/data/users/$owner/db.conf)
|
||||
if [ -z "$db_data" ]; then
|
||||
echo "Error: database $database doesn't exist"
|
||||
log_event "$E_NOTEXIST" "$EVENT"
|
||||
log_event "$E_NOTEXIST" "$ARGUMENTS"
|
||||
exit $E_NOTEXIST
|
||||
fi
|
||||
|
||||
|
@ -56,7 +56,7 @@ new_db=$(echo $database | sed "s/^${owner}_/${user}_/")
|
|||
check_db=$(grep "DB='$new_db'" $VESTA/data/users/$user/db.conf)
|
||||
if [ ! -z "$check_db" ]; then
|
||||
echo "Error: $new_db database exists"
|
||||
log_event "$E_EXISTS" "$EVENT"
|
||||
log_event "$E_EXISTS" "$ARGUMENTS"
|
||||
exit $E_EXISTS
|
||||
fi
|
||||
|
||||
|
@ -69,7 +69,7 @@ fi
|
|||
tmpdir=$(mktemp -p $BACKUP -d)
|
||||
if [ "$?" -ne 0 ]; then
|
||||
echo "Error: can't create $tmpdir"
|
||||
log_event "$E_NOTEXIST" "$EVENT"
|
||||
log_event "$E_NOTEXIST" "$ARGUMENTS"
|
||||
exit $E_NOTEXIST
|
||||
fi
|
||||
|
||||
|
@ -80,7 +80,6 @@ $BIN/v-suspend-database $owner $database > /dev/null 2>&1
|
|||
eval $db_data
|
||||
dump="$tmpdir/$database.$TYPE.sql"
|
||||
grants="$tmpdir/$database.$TYPE.$DBUSER"
|
||||
send_mail='/bin/true'
|
||||
case $TYPE in
|
||||
mysql) dump_mysql_database ;;
|
||||
pgsql) dump_pgsql_database ;;
|
||||
|
@ -120,6 +119,6 @@ $BIN/v-update-user-counters $user
|
|||
#----------------------------------------------------------#
|
||||
|
||||
# Logging
|
||||
log_event "$OK" "$EVENT"
|
||||
log_event "$OK" "$ARGUMENTS"
|
||||
|
||||
exit
|
||||
|
|
|
@ -26,7 +26,7 @@ source $VESTA/conf/vesta.conf
|
|||
#----------------------------------------------------------#
|
||||
|
||||
check_args '3' "$#" 'USER DATABASE DBPASS'
|
||||
validate_format 'user' 'database'
|
||||
is_format_valid 'user' 'database'
|
||||
is_system_enabled "$DB_SYSTEM" 'DB_SYSTEM'
|
||||
is_object_valid 'user' 'USER' "$user"
|
||||
is_object_unsuspended 'user' 'USER' "$user"
|
||||
|
@ -56,6 +56,6 @@ update_object_value 'db' 'DB' "$database" '$MD5' "$md5"
|
|||
|
||||
# Logging
|
||||
log_history "changed $database database password"
|
||||
log_event "$OK" "$EVENT"
|
||||
log_event "$OK" "$ARGUMENTS"
|
||||
|
||||
exit
|
||||
|
|
|
@ -27,7 +27,7 @@ source $VESTA/conf/vesta.conf
|
|||
#----------------------------------------------------------#
|
||||
|
||||
check_args '3' "$#" 'USER DATABASE DBUSER [DBPASS]'
|
||||
validate_format 'user' 'database' 'dbuser'
|
||||
is_format_valid 'user' 'database' 'dbuser'
|
||||
is_system_enabled "$DB_SYSTEM" 'DB_SYSTEM'
|
||||
is_object_valid 'user' 'USER' "$user"
|
||||
is_object_unsuspended 'user' 'USER' "$user"
|
||||
|
@ -86,6 +86,6 @@ fi
|
|||
|
||||
# Logging
|
||||
log_history "changed $database database user to $dbuser"
|
||||
log_event "$OK" "$EVENT"
|
||||
log_event "$OK" "$ARGUMENTS"
|
||||
|
||||
exit
|
||||
|
|
|
@ -26,7 +26,7 @@ source $VESTA/conf/vesta.conf
|
|||
#----------------------------------------------------------#
|
||||
|
||||
check_args '3' "$#" 'USER DOMAIN EXP'
|
||||
validate_format 'user' 'domain' 'exp'
|
||||
is_format_valid 'user' 'domain' 'exp'
|
||||
is_system_enabled "$DNS_SYSTEM" 'DNS_SYSTEM'
|
||||
is_object_valid 'user' 'USER' "$user"
|
||||
is_object_unsuspended 'user' 'USER' "$user"
|
||||
|
@ -58,6 +58,6 @@ fi
|
|||
|
||||
# Logging
|
||||
log_history "changed whois expiration date for $domain"
|
||||
log_event "$OK" "$EVENT"
|
||||
log_event "$OK" "$ARGUMENTS"
|
||||
|
||||
exit
|
||||
|
|
|
@ -27,7 +27,7 @@ source $VESTA/conf/vesta.conf
|
|||
#----------------------------------------------------------#
|
||||
|
||||
check_args '3' "$#" 'USER DOMAIN IP'
|
||||
validate_format 'user' 'domain' 'ip'
|
||||
is_format_valid 'user' 'domain' 'ip'
|
||||
is_system_enabled "$DNS_SYSTEM" 'DNS_SYSTEM'
|
||||
is_object_valid 'user' 'USER' "$user"
|
||||
is_object_unsuspended 'user' 'USER' "$user"
|
||||
|
@ -78,6 +78,6 @@ fi
|
|||
|
||||
# Logging
|
||||
log_history "changed dns ip for $domain to $ip"
|
||||
log_event "$OK" "$EVENT"
|
||||
log_event "$OK" "$ARGUMENTS"
|
||||
|
||||
exit
|
||||
|
|
|
@ -28,7 +28,7 @@ source $VESTA/conf/vesta.conf
|
|||
#----------------------------------------------------------#
|
||||
|
||||
check_args '3' "$#" 'USER DOMAIN SOA'
|
||||
validate_format 'user' 'domain' 'soa'
|
||||
is_format_valid 'user' 'domain' 'soa'
|
||||
is_system_enabled "$DNS_SYSTEM" 'DNS_SYSTEM'
|
||||
is_object_valid 'user' 'USER' "$user"
|
||||
is_object_unsuspended 'user' 'USER' "$user"
|
||||
|
@ -72,6 +72,6 @@ fi
|
|||
|
||||
# Logging
|
||||
log_history "changed soa record for $domain to $soa"
|
||||
log_event "$OK" "$EVENT"
|
||||
log_event "$OK" "$ARGUMENTS"
|
||||
|
||||
exit
|
||||
|
|
|
@ -14,10 +14,14 @@
|
|||
# Argument definition
|
||||
user=$1
|
||||
domain=$(idn -t --quiet -u "$2" )
|
||||
domain_idn=$(idn -t --quiet -a "$domain")
|
||||
template=$3
|
||||
restart=$4
|
||||
|
||||
domain_idn="$domain"
|
||||
if [[ "$domain" = *[![:ascii:]]* ]]; then
|
||||
domain_idn=$(idn -t --quiet -a $domain)
|
||||
fi
|
||||
|
||||
# Includes
|
||||
source $VESTA/func/main.sh
|
||||
source $VESTA/func/domain.sh
|
||||
|
@ -29,13 +33,13 @@ source $VESTA/conf/vesta.conf
|
|||
#----------------------------------------------------------#
|
||||
|
||||
check_args '3' "$#" 'USER DOMAIN TEMPLATE [RESTART]'
|
||||
validate_format 'user' 'domain' 'template'
|
||||
is_format_valid 'user' 'domain' 'template'
|
||||
is_system_enabled "$DNS_SYSTEM" 'DNS_SYSTEM'
|
||||
is_object_valid 'user' 'USER' "$user"
|
||||
is_object_unsuspended 'user' 'USER' "$user"
|
||||
is_object_valid 'dns' 'DOMAIN' "$domain"
|
||||
is_object_unsuspended 'dns' 'DOMAIN' "$domain"
|
||||
is_dns_template_valid
|
||||
is_dns_template_valid "$template"
|
||||
|
||||
|
||||
#----------------------------------------------------------#
|
||||
|
@ -43,8 +47,7 @@ is_dns_template_valid
|
|||
#----------------------------------------------------------#
|
||||
|
||||
# Defining variables
|
||||
ip=$(get_object_value 'dns' 'DOMAIN' "$domain" '$IP')
|
||||
|
||||
get_domain_values 'dns'
|
||||
i=1
|
||||
ns=$(get_user_value '$NS')
|
||||
for nameserver in ${ns//,/ };do
|
||||
|
@ -52,15 +55,42 @@ for nameserver in ${ns//,/ };do
|
|||
(( ++i))
|
||||
done
|
||||
|
||||
# Reading template
|
||||
template_data=$(cat $DNSTPL/$template.tpl)
|
||||
|
||||
# Deleting unused nameservers
|
||||
if [ -z "$ns3" ]; then
|
||||
template_data=$(echo "$template_data" |grep -v %ns3%)
|
||||
fi
|
||||
if [ -z "$ns4" ]; then
|
||||
template_data=$(echo "$template_data" |grep -v %ns4%)
|
||||
fi
|
||||
if [ -z "$ns5" ]; then
|
||||
template_data=$(echo "$template_data" |grep -v %ns5%)
|
||||
fi
|
||||
if [ -z "$ns6" ]; then
|
||||
template_data=$(echo "$template_data" |grep -v %ns6%)
|
||||
fi
|
||||
if [ -z "$ns7" ]; then
|
||||
template_data=$(echo "$template_data" |grep -v %ns7%)
|
||||
fi
|
||||
if [ -z "$ns8" ]; then
|
||||
template_data=$(echo "$template_data" |grep -v %ns8%)
|
||||
fi
|
||||
|
||||
# Changing tpl
|
||||
cat $DNSTPL/$template.tpl |\
|
||||
sed -e "s/%ip%/$ip/g" \
|
||||
echo "$template_data" |\
|
||||
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/%ns5%/$ns5/g" \
|
||||
-e "s/%ns6%/$ns6/g" \
|
||||
-e "s/%ns7%/$ns7/g" \
|
||||
-e "s/%ns8%/$ns8/g" \
|
||||
-e "s/%time%/$TIME/g" \
|
||||
-e "s/%date%/$DATE/g" > $USER_DATA/dns/$domain.conf
|
||||
records="$(wc -l $USER_DATA/dns/$domain.conf |cut -f 1 -d ' ')"
|
||||
|
@ -98,6 +128,6 @@ fi
|
|||
|
||||
# Logging
|
||||
log_history "changed dns template for $domain to $template" '' 'admin'
|
||||
log_event "$OK" "$EVENT"
|
||||
log_event "$OK" "$ARGUMENTS"
|
||||
|
||||
exit
|
||||
|
|
|
@ -27,7 +27,7 @@ source $VESTA/conf/vesta.conf
|
|||
#----------------------------------------------------------#
|
||||
|
||||
check_args '3' "$#" 'USER DOMAIN TTL'
|
||||
validate_format 'user' 'domain' 'ttl'
|
||||
is_format_valid 'user' 'domain' 'ttl'
|
||||
is_system_enabled "$DNS_SYSTEM" 'DNS_SYSTEM'
|
||||
is_object_valid 'user' 'USER' "$user"
|
||||
is_object_unsuspended 'user' 'USER' "$user"
|
||||
|
@ -71,6 +71,6 @@ fi
|
|||
|
||||
# Logging
|
||||
log_history "changed TTL for $domain to $ttl"
|
||||
log_event "$OK" "$EVENT"
|
||||
log_event "$OK" "$ARGUMENTS"
|
||||
|
||||
exit
|
||||
|
|
|
@ -12,13 +12,16 @@
|
|||
# Argument definition
|
||||
user=$1
|
||||
domain=$(idn -t --quiet -u "$2" )
|
||||
domain=$(echo $domain | tr '[:upper:]' '[:lower:]')
|
||||
domain_idn=$(idn -t --quiet -a "$domain")
|
||||
id=$3
|
||||
dvalue=$(idn -t --quiet -u "$4" )
|
||||
priority=$5
|
||||
restart=$6
|
||||
|
||||
domain_idn="$domain"
|
||||
if [[ "$domain" = *[![:ascii:]]* ]]; then
|
||||
domain_idn=$(idn -t --quiet -a $domain)
|
||||
fi
|
||||
|
||||
# Includes
|
||||
source $VESTA/func/main.sh
|
||||
source $VESTA/func/domain.sh
|
||||
|
@ -30,7 +33,7 @@ source $VESTA/conf/vesta.conf
|
|||
#----------------------------------------------------------#
|
||||
|
||||
check_args '4' "$#" 'USER DOMAIN ID VALUE [PRIORITY] [RESTART]'
|
||||
validate_format 'user' 'domain' 'id' 'dvalue'
|
||||
is_format_valid 'user' 'domain' 'id' 'dvalue'
|
||||
is_system_enabled "$DNS_SYSTEM" 'DNS_SYSTEM'
|
||||
is_object_valid 'user' 'USER' "$user"
|
||||
is_object_unsuspended 'user' 'USER' "$user"
|
||||
|
@ -67,9 +70,14 @@ is_dns_nameserver_valid "$domain" "$TYPE" "$dvalue"
|
|||
# Deleting old record
|
||||
sed -i "/^ID='$id'/d" $USER_DATA/dns/$domain.conf
|
||||
|
||||
# Generating timestamp
|
||||
time_n_date=$(date +'%T %F')
|
||||
time=$(echo "$time_n_date" |cut -f 1 -d \ )
|
||||
date=$(echo "$time_n_date" |cut -f 2 -d \ )
|
||||
|
||||
# Adding record
|
||||
dns_rec="ID='$id' RECORD='$RECORD' TYPE='$TYPE' PRIORITY='$priority'"
|
||||
dns_rec="$dns_rec VALUE='$dvalue' SUSPENDED='no' TIME='$TIME' DATE='$DATE'"
|
||||
dns_rec="$dns_rec VALUE='$dvalue' SUSPENDED='no' TIME='$time' DATE='$date'"
|
||||
echo "$dns_rec" >> $USER_DATA/dns/$domain.conf
|
||||
|
||||
# Sorting records
|
||||
|
@ -104,6 +112,6 @@ fi
|
|||
|
||||
# Logging
|
||||
log_history "changed dns record on $domain to $dvalue"
|
||||
log_event "$OK" "$EVENT"
|
||||
log_event "$OK" "$ARGUMENTS"
|
||||
|
||||
exit
|
||||
|
|
|
@ -29,7 +29,7 @@ source $VESTA/conf/vesta.conf
|
|||
#----------------------------------------------------------#
|
||||
|
||||
check_args '4' "$#" 'USER DOMAIN ID NEWID [RESTART]'
|
||||
validate_format 'user' 'domain' 'id' 'newid'
|
||||
is_format_valid 'user' 'domain' 'id' 'newid'
|
||||
is_system_enabled "$DNS_SYSTEM" 'DNS_SYSTEM'
|
||||
is_object_valid 'user' 'USER' "$user"
|
||||
is_object_unsuspended 'user' 'USER' "$user"
|
||||
|
@ -78,6 +78,6 @@ fi
|
|||
|
||||
# Logging
|
||||
log_history "changed dns record id on $domain"
|
||||
log_event "$OK" "$EVENT"
|
||||
log_event "$OK" "$ARGUMENTS"
|
||||
|
||||
exit
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
#!/bin/bash
|
||||
# info: change ip owner
|
||||
# options: DOMAIN USER [IP]
|
||||
# info: change domain owner
|
||||
# options: DOMAIN USER
|
||||
#
|
||||
# The function of changing domain ownership.
|
||||
|
||||
|
@ -12,7 +12,6 @@
|
|||
# Argument definition
|
||||
domain=$1
|
||||
user=$2
|
||||
ip=$3
|
||||
|
||||
# Includes
|
||||
source $VESTA/func/ip.sh
|
||||
|
@ -24,20 +23,13 @@ source $VESTA/conf/vesta.conf
|
|||
# Verifications #
|
||||
#----------------------------------------------------------#
|
||||
|
||||
check_args '2' "$#" 'DOMAIN USER [IP]'
|
||||
validate_format 'domain' 'user'
|
||||
check_args '2' "$#" 'DOMAIN USER'
|
||||
is_format_valid 'domain' 'user'
|
||||
is_object_valid 'user' 'USER' "$user"
|
||||
is_object_unsuspended 'user' 'USER' "$user"
|
||||
if [ ! -z "$ip" ]; then
|
||||
is_ip_valid
|
||||
is_ip_avalable
|
||||
fi
|
||||
|
||||
owner=$(v-search-domain-owner $domain)
|
||||
if [ -z "$owner" ]; then
|
||||
echo "Error: domain $domain doesn't exist"
|
||||
log_event "$E_NOTEXIST" "$EVENT"
|
||||
exit $E_NOTEXIST
|
||||
check_result $E_NOTEXIST "domain $domain doesn't exist"
|
||||
fi
|
||||
if [ "$owner" = "$user" ]; then
|
||||
exit
|
||||
|
@ -168,6 +160,6 @@ $BIN/v-update-user-counters $user
|
|||
#----------------------------------------------------------#
|
||||
|
||||
# Logging
|
||||
log_event "$OK" "$EVENT"
|
||||
log_event "$OK" "$ARGUMENTS"
|
||||
|
||||
exit
|
||||
|
|
|
@ -40,9 +40,9 @@ sort_fw_rules() {
|
|||
#----------------------------------------------------------#
|
||||
|
||||
check_args '5' "$#" 'RULE ACTION IP PORT [PROTOCOL] [COMMENT]'
|
||||
validate_format 'rule' 'action' 'protocol' 'port_ext' 'ip'
|
||||
is_format_valid 'rule' 'action' 'protocol' 'port_ext' 'ip'
|
||||
if [ ! -z "$comment" ]; then
|
||||
validate_format 'comment'
|
||||
is_format_valid 'comment'
|
||||
fi
|
||||
is_system_enabled "$FIREWALL_SYSTEM" 'FIREWALL_SYSTEM'
|
||||
is_object_valid '../../data/firewall/rules' 'RULE' "$rule"
|
||||
|
@ -52,10 +52,15 @@ is_object_valid '../../data/firewall/rules' 'RULE' "$rule"
|
|||
# Action #
|
||||
#----------------------------------------------------------#
|
||||
|
||||
# Generating timestamp
|
||||
time_n_date=$(date +'%T %F')
|
||||
time=$(echo "$time_n_date" |cut -f 1 -d \ )
|
||||
date=$(echo "$time_n_date" |cut -f 2 -d \ )
|
||||
|
||||
# Concatenating firewall rule
|
||||
str="RULE='$rule' ACTION='$action' PROTOCOL='$protocol' PORT='$port_ext'"
|
||||
str="$str IP='$ip' COMMENT='$comment' SUSPENDED='no'"
|
||||
str="$str TIME='$TIME' DATE='$DATE'"
|
||||
str="$str TIME='$time' DATE='$date'"
|
||||
|
||||
# Deleting old rule
|
||||
sed -i "/RULE='$rule' /d" $VESTA/data/firewall/rules.conf
|
||||
|
@ -75,6 +80,6 @@ $BIN/v-update-firewall
|
|||
#----------------------------------------------------------#
|
||||
|
||||
# Logging
|
||||
log_event "$OK" "$EVENT"
|
||||
log_event "$OK" "$ARGUMENTS"
|
||||
|
||||
exit
|
||||
|
|
|
@ -28,7 +28,7 @@ if [ -z $homedir ]; then
|
|||
fi
|
||||
|
||||
# Checking source file
|
||||
if [ ! -f "$src_file" ]; then
|
||||
if [ ! -fe "$src_file" ]; then
|
||||
echo "Error: source file doesn't exist $src_file"
|
||||
exit 3
|
||||
fi
|
||||
|
@ -41,7 +41,7 @@ if [ -z "$(echo $rpath |egrep "^/tmp|^$homedir")" ]; then
|
|||
fi
|
||||
|
||||
# Changing file permissions
|
||||
sudo -u $user chmod $permissions "$src_file" >/dev/null 2>&1
|
||||
sudo -u $user chmod -R $permissions "$src_file" >/dev/null 2>&1
|
||||
if [ $? -ne 0 ]; then
|
||||
echo "Error: access permission on $src_file was not changed"
|
||||
exit 3
|
||||
|
|
|
@ -28,7 +28,7 @@ source $VESTA/conf/vesta.conf
|
|||
#----------------------------------------------------------#
|
||||
|
||||
check_args '4' "$#" 'USER DOMAIN ACCOUNT PASSWORD'
|
||||
validate_format 'user' 'domain' 'account'
|
||||
is_format_valid 'user' 'domain' 'account'
|
||||
is_system_enabled "$MAIL_SYSTEM" 'MAIL_SYSTEM'
|
||||
is_object_valid 'user' 'USER' "$user"
|
||||
is_object_unsuspended 'user' 'USER' "$user"
|
||||
|
@ -44,7 +44,7 @@ is_password_valid
|
|||
#----------------------------------------------------------#
|
||||
|
||||
# Generating hashed password
|
||||
salt=$(gen_password "$PW_MATRIX" "8")
|
||||
salt=$(generate_password "$PW_MATRIX" "8")
|
||||
md5="{MD5}$($BIN/v-generate-password-hash md5 $salt <<<$password)"
|
||||
|
||||
if [[ "$MAIL_SYSTEM" =~ exim ]]; then
|
||||
|
@ -63,6 +63,6 @@ update_object_value "mail/$domain" 'ACCOUNT' "$account" '$MD5' "$md5"
|
|||
|
||||
# Logging
|
||||
log_history "changed password for $account@$domain"
|
||||
log_event "$OK" "$EVENT"
|
||||
log_event "$OK" "$ARGUMENTS"
|
||||
|
||||
exit
|
||||
|
|
|
@ -28,9 +28,9 @@ source $VESTA/conf/vesta.conf
|
|||
#----------------------------------------------------------#
|
||||
|
||||
check_args '4' "$#" 'USER DOMAIN ACCOUNT QUOTA'
|
||||
validate_format 'user' 'domain' 'account'
|
||||
is_format_valid 'user' 'domain' 'account'
|
||||
if [ "$quota" != 'unlimited' ]; then
|
||||
validate_format 'quota'
|
||||
is_format_valid 'quota'
|
||||
fi
|
||||
is_system_enabled "$MAIL_SYSTEM" 'MAIL_SYSTEM'
|
||||
is_object_valid 'user' 'USER' "$user"
|
||||
|
@ -69,6 +69,6 @@ update_object_value "mail/$domain" 'ACCOUNT' "$account" '$QUOTA' "$quota"
|
|||
|
||||
# Logging
|
||||
log_history "changed mail quota for $account@$domain to $quota"
|
||||
log_event "$OK" "$EVENT"
|
||||
log_event "$OK" "$ARGUMENTS"
|
||||
|
||||
exit
|
||||
|
|
|
@ -27,7 +27,7 @@ source $VESTA/conf/vesta.conf
|
|||
#----------------------------------------------------------#
|
||||
|
||||
check_args '3' "$#" 'USER DOMAIN EMAIL'
|
||||
validate_format 'user' 'domain' 'email'
|
||||
is_format_valid 'user' 'domain' 'email'
|
||||
is_system_enabled "$MAIL_SYSTEM" 'MAIL_SYSTEM'
|
||||
is_object_valid 'user' 'USER' "$user"
|
||||
is_object_unsuspended 'user' 'USER' "$user"
|
||||
|
@ -56,6 +56,6 @@ update_object_value 'mail' 'DOMAIN' "$domain" '$CATCHALL' "$email"
|
|||
|
||||
# Logging
|
||||
log_history "changed catchall email for $domain to $email"
|
||||
log_event "$OK" "$EVENT"
|
||||
log_event "$OK" "$ARGUMENTS"
|
||||
|
||||
exit
|
||||
|
|
|
@ -24,7 +24,7 @@ source $VESTA/conf/vesta.conf
|
|||
#----------------------------------------------------------#
|
||||
|
||||
check_args '2' "$#" 'USER DOMAIN'
|
||||
validate_format 'user' 'domain'
|
||||
is_format_valid 'user' 'domain'
|
||||
is_system_enabled "$DNS_CLUSTER" 'DNS_CLUSTER'
|
||||
is_object_valid 'user' 'USER' "$user"
|
||||
is_object_valid 'dns' 'DOMAIN' "$domain"
|
||||
|
|
|
@ -24,7 +24,7 @@ source $VESTA/conf/vesta.conf
|
|||
#----------------------------------------------------------#
|
||||
|
||||
check_args '2' "$#" 'USER DOMAIN'
|
||||
validate_format 'user' 'domain'
|
||||
is_format_valid 'user' 'domain'
|
||||
is_system_enabled "$DNS_CLUSTER" 'DNS_CLUSTER'
|
||||
is_object_valid 'user' 'USER' "$user"
|
||||
is_object_valid 'dns' 'DOMAIN' "$domain"
|
||||
|
|
|
@ -24,7 +24,7 @@ source $VESTA/conf/vesta.conf
|
|||
#----------------------------------------------------------#
|
||||
|
||||
check_args '2' "$#" 'USER DOMAIN'
|
||||
validate_format 'user' 'domain'
|
||||
is_format_valid 'user' 'domain'
|
||||
is_system_enabled "$DNS_CLUSTER" 'DNS_CLUSTER'
|
||||
is_object_valid 'user' 'USER' "$user"
|
||||
is_object_valid 'dns' 'DOMAIN' "$domain"
|
||||
|
|
|
@ -24,7 +24,7 @@ source $VESTA/conf/vesta.conf
|
|||
#----------------------------------------------------------#
|
||||
|
||||
check_args '2' "$#" 'KEY VALUE'
|
||||
validate_format 'key'
|
||||
is_format_valid 'key'
|
||||
|
||||
|
||||
#----------------------------------------------------------#
|
||||
|
@ -50,6 +50,6 @@ fi
|
|||
#----------------------------------------------------------#
|
||||
|
||||
# Logging
|
||||
log_event "$OK" "$EVENT"
|
||||
log_event "$OK" "$ARGUMENTS"
|
||||
|
||||
exit
|
||||
|
|
|
@ -22,7 +22,7 @@ source $VESTA/conf/vesta.conf
|
|||
#----------------------------------------------------------#
|
||||
|
||||
check_args '1' "$#" 'HOSTNAME'
|
||||
validate_format 'domain'
|
||||
is_format_valid 'domain'
|
||||
|
||||
|
||||
#----------------------------------------------------------#
|
||||
|
@ -52,6 +52,6 @@ fi
|
|||
#----------------------------------------------------------#
|
||||
|
||||
# Logging
|
||||
log_event "$OK" "$EVENT"
|
||||
log_event "$OK" "$ARGUMENTS"
|
||||
|
||||
exit
|
||||
|
|
|
@ -24,11 +24,9 @@ source $VESTA/conf/vesta.conf
|
|||
#----------------------------------------------------------#
|
||||
|
||||
check_args '2' "$#" 'IP IP_NAME'
|
||||
validate_format 'ip'
|
||||
if [ ! -z "$ip_name" ]; then
|
||||
validate_format 'ip_name'
|
||||
fi
|
||||
is_ip_valid
|
||||
is_format_valid 'ip'
|
||||
is_format_valid 'ip_name'
|
||||
is_ip_valid "$ip"
|
||||
|
||||
|
||||
#----------------------------------------------------------#
|
||||
|
@ -45,6 +43,6 @@ update_ip_value '$NAME' "$ip_name"
|
|||
|
||||
# Logging
|
||||
log_history "changed associated dns on $ip to $domain" '' 'admin'
|
||||
log_event "$OK" "$EVENT"
|
||||
log_event "$OK" "$ARGUMENTS"
|
||||
|
||||
exit
|
||||
|
|
|
@ -25,11 +25,9 @@ source $VESTA/conf/vesta.conf
|
|||
#----------------------------------------------------------#
|
||||
|
||||
check_args '2' "$#" 'IP NAT_IP [RESTART]'
|
||||
validate_format 'ip'
|
||||
if [ ! -z "$nat_ip" ]; then
|
||||
validate_format 'nat_ip'
|
||||
fi
|
||||
is_ip_valid
|
||||
is_format_valid 'ip'
|
||||
is_format_valid 'nat_ip'
|
||||
is_ip_valid "$ip"
|
||||
|
||||
|
||||
#----------------------------------------------------------#
|
||||
|
@ -82,6 +80,6 @@ fi
|
|||
|
||||
# Logging
|
||||
log_history "changed associated nat address on $ip to $nat_ip" '' 'admin'
|
||||
log_event "$OK" "$EVENT"
|
||||
log_event "$OK" "$ARGUMENTS"
|
||||
|
||||
exit
|
||||
|
|
|
@ -24,14 +24,13 @@ source $VESTA/conf/vesta.conf
|
|||
#----------------------------------------------------------#
|
||||
|
||||
check_args '2' "$#" 'IP USER'
|
||||
validate_format 'ip' 'user'
|
||||
is_format_valid 'ip' 'user'
|
||||
is_object_valid 'user' 'USER' "$user"
|
||||
is_object_unsuspended 'user' 'USER' "$user"
|
||||
is_ip_valid
|
||||
is_ip_valid "$ip"
|
||||
is_ip_key_empty '$U_WEB_DOMAINS'
|
||||
is_ip_key_empty '$U_SYS_USERS'
|
||||
|
||||
|
||||
#----------------------------------------------------------#
|
||||
# Action #
|
||||
#----------------------------------------------------------#
|
||||
|
@ -77,6 +76,6 @@ fi
|
|||
|
||||
# Logging
|
||||
log_history "changed owner of $ip to $user" '' 'admin'
|
||||
log_event "$OK" "$EVENT"
|
||||
log_event "$OK" "$ARGUMENTS"
|
||||
|
||||
exit
|
||||
|
|
|
@ -24,21 +24,16 @@ source $VESTA/conf/vesta.conf
|
|||
#----------------------------------------------------------#
|
||||
|
||||
check_args '2' "$#" 'IP IP_STATUS'
|
||||
validate_format 'ip' 'ip_status'
|
||||
is_ip_valid
|
||||
is_format_valid 'ip' 'ip_status'
|
||||
is_ip_valid "$ip"
|
||||
if [ "$ip_status" = "$(get_ip_value '$STATUS')" ]; then
|
||||
echo "Error: status $ip_status is already set"
|
||||
log_event "$E_EXISTS" "$EVENT"
|
||||
exit $E_EXISTS
|
||||
check_result "$E_EXISTS" "status $ip_status is already set"
|
||||
fi
|
||||
|
||||
web_domains=$(get_ip_value '$U_WEB_DOMAINS')
|
||||
sys_user=$(get_ip_value '$U_SYS_USERS')
|
||||
ip_owner=$(get_ip_value '$OWNER')
|
||||
if [ "$web_domains" -ne '0' ] && [ "$sys_user" != "$ip_owner" ]; then
|
||||
echo "Error: ip $ip is used"
|
||||
log_event "$E_INUSE" "$EVENT"
|
||||
exit $E_INUSE
|
||||
check_result "$E_INUSE" "ip $ip is used"
|
||||
fi
|
||||
|
||||
|
||||
|
@ -56,6 +51,6 @@ update_ip_value '$STATUS' "$ip_status"
|
|||
|
||||
# Logging
|
||||
log_history "changed $ip status to $ip_status" '' 'admin'
|
||||
log_event "$OK" "$EVENT"
|
||||
log_event "$OK" "$ARGUMENTS"
|
||||
|
||||
exit
|
||||
|
|
|
@ -20,7 +20,7 @@ source $VESTA/conf/vesta.conf
|
|||
is_language_valid() {
|
||||
if [ ! -e "$VESTA/web/inc/i18n/$language.php" ]; then
|
||||
echo "Error: language file $language doesn't exist"
|
||||
log_event "$E_NOTEXIST $EVENT"
|
||||
log_event "$E_NOTEXIST $ARGUMENTS"
|
||||
exit $E_NOTEXIST
|
||||
fi
|
||||
}
|
||||
|
@ -31,7 +31,7 @@ is_language_valid() {
|
|||
#----------------------------------------------------------#
|
||||
|
||||
check_args '1' "$#" 'LANGUAGE'
|
||||
validate_format 'language'
|
||||
is_format_valid 'language'
|
||||
is_language_valid $language
|
||||
|
||||
|
||||
|
@ -52,6 +52,6 @@ fi
|
|||
#----------------------------------------------------------#
|
||||
|
||||
# Logging
|
||||
log_event "$OK" "$EVENT"
|
||||
log_event "$OK" "$ARGUMENTS"
|
||||
|
||||
exit
|
||||
|
|
|
@ -19,7 +19,7 @@ source $VESTA/conf/vesta.conf
|
|||
is_timezone_valid() {
|
||||
if [ ! -e "/usr/share/zoneinfo/$timezone" ]; then
|
||||
echo "Error: tz file $timezone doesn't exist"
|
||||
log_event $E_NOTEXIST "$EVENT"
|
||||
log_event $E_NOTEXIST "$ARGUMENTS"
|
||||
exit $E_NOTEXIST
|
||||
fi
|
||||
}
|
||||
|
@ -67,6 +67,6 @@ fi
|
|||
#----------------------------------------------------------#
|
||||
|
||||
# Logging
|
||||
log_event "$OK" "$EVENT"
|
||||
log_event "$OK" "$ARGUMENTS"
|
||||
|
||||
exit
|
||||
|
|
|
@ -23,7 +23,7 @@ source $VESTA/conf/vesta.conf
|
|||
#----------------------------------------------------------#
|
||||
|
||||
check_args '2' "$#" 'USER EMAIL'
|
||||
validate_format 'user' 'email'
|
||||
is_format_valid 'user' 'email'
|
||||
is_object_valid 'user' 'USER' "$user"
|
||||
is_object_unsuspended 'user' 'USER' "$user"
|
||||
|
||||
|
@ -49,6 +49,6 @@ $BIN/v-rebuild-cron-jobs $user > /dev/null 2>&1
|
|||
|
||||
# Logging
|
||||
log_history "changed contact email to $email"
|
||||
log_event "$OK" "$EVENT"
|
||||
log_event "$OK" "$ARGUMENTS"
|
||||
|
||||
exit
|
||||
|
|
|
@ -21,12 +21,12 @@ source $VESTA/conf/vesta.conf
|
|||
is_language_valid() {
|
||||
if ! [[ "$1" =~ ^[[:alnum:]_-]+$ ]]; then
|
||||
echo "Error: language $1 is not valid"
|
||||
log_event "$E_INVALID" "$EVENT"
|
||||
log_event "$E_INVALID" "$ARGUMENTS"
|
||||
exit $E_INVALID
|
||||
fi
|
||||
if [ ! -e "$VESTA/web/inc/i18n/$1.php" ]; then
|
||||
echo "Error: language $1 doesn't exist"
|
||||
log_event "$E_NOTEXIST" "$EVENT"
|
||||
log_event "$E_NOTEXIST" "$ARGUMENTS"
|
||||
exit $E_NOTEXIST
|
||||
fi
|
||||
}
|
||||
|
@ -37,7 +37,7 @@ is_language_valid() {
|
|||
#----------------------------------------------------------#
|
||||
|
||||
check_args '2' "$#" 'USER LANGUAGE'
|
||||
validate_format 'user' 'language'
|
||||
is_format_valid 'user' 'language'
|
||||
is_object_valid 'user' 'USER' "$user"
|
||||
is_object_unsuspended 'user' 'USER' "$user"
|
||||
is_language_valid $language
|
||||
|
@ -61,6 +61,6 @@ fi
|
|||
|
||||
# Logging
|
||||
log_history "changed language to $language"
|
||||
log_event "$OK" "$EVENT"
|
||||
log_event "$OK" "$ARGUMENTS"
|
||||
|
||||
exit
|
||||
|
|
|
@ -24,7 +24,7 @@ source $VESTA/conf/vesta.conf
|
|||
#----------------------------------------------------------#
|
||||
|
||||
check_args '3' "$#" 'USER FNAME LNAME'
|
||||
validate_format 'user' 'fname' 'lname'
|
||||
is_format_valid 'user' 'fname' 'lname'
|
||||
is_object_valid 'user' 'USER' "$user"
|
||||
is_object_unsuspended 'user' 'USER' "$user"
|
||||
|
||||
|
@ -48,6 +48,6 @@ update_user_value "$user" '$LNAME' "$lname"
|
|||
|
||||
# Logging
|
||||
log_history "changed user name to $fname $lname"
|
||||
log_event "$OK" "$EVENT"
|
||||
log_event "$OK" "$ARGUMENTS"
|
||||
|
||||
exit
|
||||
|
|
|
@ -33,30 +33,30 @@ source $VESTA/conf/vesta.conf
|
|||
check_args '3' "$#" 'USER NS1 NS2 [NS3] [NS4] [NS5] [NS6] [NS7] [NS8]'
|
||||
|
||||
# Checking argument format
|
||||
validate_format 'user' 'ns1' 'ns2'
|
||||
is_format_valid 'user' 'ns1' 'ns2'
|
||||
if [ ! -z "$ns3" ]; then
|
||||
ns3=$(echo $4 | sed -e 's/\.*$//g' -e 's/^\.*//g')
|
||||
validate_format 'ns3'
|
||||
is_format_valid 'ns3'
|
||||
fi
|
||||
if [ ! -z "$ns4" ]; then
|
||||
ns4=$(echo $5 | sed -e 's/\.*$//g' -e 's/^\.*//g')
|
||||
validate_format 'ns4'
|
||||
is_format_valid 'ns4'
|
||||
fi
|
||||
if [ ! -z "$ns5" ]; then
|
||||
ns5=$(echo $6 | sed -e 's/\.*$//g' -e 's/^\.*//g')
|
||||
validate_format 'ns5'
|
||||
is_format_valid 'ns5'
|
||||
fi
|
||||
if [ ! -z "$ns6" ]; then
|
||||
ns6=$(echo $7 | sed -e 's/\.*$//g' -e 's/^\.*//g')
|
||||
validate_format 'ns6'
|
||||
is_format_valid 'ns6'
|
||||
fi
|
||||
if [ ! -z "$ns7" ]; then
|
||||
ns7=$(echo $8 | sed -e 's/\.*$//g' -e 's/^\.*//g')
|
||||
validate_format 'ns7'
|
||||
is_format_valid 'ns7'
|
||||
fi
|
||||
if [ ! -z "$ns8" ]; then
|
||||
ns8=$(echo $9 | sed -e 's/\.*$//g' -e 's/^\.*//g')
|
||||
validate_format 'ns8'
|
||||
is_format_valid 'ns8'
|
||||
fi
|
||||
is_object_valid 'user' 'USER' "$user"
|
||||
is_object_unsuspended 'user' 'USER' "$user"
|
||||
|
@ -80,6 +80,6 @@ update_user_value "$user" '$NS' "$ns"
|
|||
|
||||
# Logging
|
||||
log_history "updated nameservers $ns1 $ns2 $ns3 $ns4 $ns5 $ns6 $ns7 $ns8"
|
||||
log_event "$OK" "$EVENT"
|
||||
log_event "$OK" "$ARGUMENTS"
|
||||
|
||||
exit
|
||||
|
|
|
@ -40,63 +40,44 @@ is_package_avalable() {
|
|||
# Checking usage agains package limits
|
||||
if [ "$WEB_DOMAINS" != 'unlimited' ]; then
|
||||
if [ "$WEB_DOMAINS" -lt "$U_WEB_DOMAINS" ]; then
|
||||
echo "Error: Package doesn't cover WEB_DOMAIN usage"
|
||||
log_event "$E_LIMIT" "$EVENT"
|
||||
exit $E_LIMIT
|
||||
check_result $E_LIMIT "Package doesn't cover WEB_DOMAIN usage"
|
||||
fi
|
||||
fi
|
||||
if [ "$DNS_DOMAINS" ! = 'unlimited' ]; then
|
||||
if [ "$DNS_DOMAINS" -lt "$U_DNS_DOMAINS" ]; then
|
||||
echo "Error: Package doesn't cover DNS_DOMAIN usage"
|
||||
log_event "$E_LIMIT" "$EVENT"
|
||||
exit $E_LIMIT
|
||||
check_result $E_LIMIT "Package doesn't cover DNS_DOMAIN usage"
|
||||
fi
|
||||
fi
|
||||
if [ "$MAIL_DOMAINS" != 'unlimited' ]; then
|
||||
if [ "$MAIL_DOMAINS" -lt "$U_MAIL_DOMAINS" ]; then
|
||||
echo "Error: Package doesn't cover MAIL_DOMAIN usage"
|
||||
log_event "$E_LIMIT" "$EVENT"
|
||||
exit $E_LIMIT
|
||||
check_result $E_LIMIT "Package doesn't cover MAIL_DOMAIN usage"
|
||||
fi
|
||||
fi
|
||||
if [ "$DATABASES" != 'unlimited' ]; then
|
||||
if [ "$DATABASES" -lt "$U_DATABASES" ]; then
|
||||
echo "Error: Package doesn't cover DATABASE usage"
|
||||
log_event "$E_LIMIT" "$EVENT"
|
||||
exit $E_LIMIT
|
||||
check_result $E_LIMIT "Package doesn't cover DATABASE usage"
|
||||
fi
|
||||
fi
|
||||
if [ "$CRON_JOBS" != 'unlimited' ]; then
|
||||
if [ "$CRON_JOBS" -lt "$U_CRON_JOBS" ]; then
|
||||
echo "Error: Package doesn't cover CRON usage"
|
||||
log_event "$E_LIMIT" "$EVENT"
|
||||
exit $E_LIMIT
|
||||
check_result $E_LIMIT "Package doesn't cover CRON usage"
|
||||
fi
|
||||
fi
|
||||
if [ "$DISK_QUOTA" != 'unlimited' ]; then
|
||||
if [ "$DISK_QUOTA" -lt "$U_DISK" ]; then
|
||||
echo "Error: Package doesn't cover DISK usage"
|
||||
log_event "$E_LIMIT" "$EVENT"
|
||||
exit $E_LIMIT
|
||||
check_result $E_LIMIT "Package doesn't cover DISK usage"
|
||||
fi
|
||||
fi
|
||||
if [ "$BANDWIDTH" != 'unlimited' ]; then
|
||||
if [ "$BANDWIDTH" -lt "$U_BANDWIDTH" ]; then
|
||||
echo "Error: Package doesn't cover BANDWIDTH usage"
|
||||
log_event "$E_LIMIT" "$EVENT"
|
||||
exit $E_LIMIT
|
||||
check_result $E_LIMIT "Package doesn't cover BANDWIDTH usage"
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
change_user_package() {
|
||||
usr_data=$(cat $USER_DATA/user.conf)
|
||||
eval $usr_data
|
||||
|
||||
pkg_data=$(cat $VESTA/data/packages/$package.pkg |grep -v TIME |\
|
||||
grep -v DATE)
|
||||
eval $pkg_data
|
||||
|
||||
eval $(cat $USER_DATA/user.conf)
|
||||
eval $(cat $VESTA/data/packages/$package.pkg |egrep -v "TIME|DATE")
|
||||
echo "FNAME='$FNAME'
|
||||
LNAME='$LNAME'
|
||||
PACKAGE='$package'
|
||||
|
@ -159,7 +140,7 @@ DATE='$DATE'" > $USER_DATA/user.conf
|
|||
#----------------------------------------------------------#
|
||||
|
||||
check_args '2' "$#" 'USER PACKAGE [FORCE]'
|
||||
validate_format 'user' 'package'
|
||||
is_format_valid 'user' 'package'
|
||||
is_object_valid 'user' 'USER' "$user"
|
||||
is_package_valid
|
||||
if [ "$force" != 'yes' ];then
|
||||
|
@ -197,6 +178,6 @@ fi
|
|||
|
||||
# Logging
|
||||
log_history "changed $user package to $package" '' 'admin'
|
||||
log_event "$OK" "$EVENT"
|
||||
log_event "$OK" "$ARGUMENTS"
|
||||
|
||||
exit
|
||||
|
|
|
@ -23,7 +23,7 @@ source $VESTA/conf/vesta.conf
|
|||
#----------------------------------------------------------#
|
||||
|
||||
check_args '2' "$#" 'USER PASSWORD'
|
||||
validate_format 'user'
|
||||
is_format_valid 'user'
|
||||
is_object_valid 'user' 'USER' "$user"
|
||||
is_object_unsuspended 'user' 'USER' "$user"
|
||||
is_password_valid
|
||||
|
@ -43,11 +43,11 @@ md5=$(awk -v user=$user -F : 'user == $1 {print $2}' /etc/shadow)
|
|||
#----------------------------------------------------------#
|
||||
|
||||
# Changing RKEY value
|
||||
update_user_value "$user" '$RKEY' "$(gen_password)"
|
||||
update_user_value "$user" '$RKEY' "$(generate_password)"
|
||||
update_user_value "$user" '$MD5' "$md5"
|
||||
|
||||
# Logging
|
||||
log_history "changed password"
|
||||
log_event "$OK" "$EVENT"
|
||||
log_event "$OK" "$ARGUMENTS"
|
||||
|
||||
exit
|
||||
|
|
|
@ -23,7 +23,7 @@ source $VESTA/conf/vesta.conf
|
|||
#----------------------------------------------------------#
|
||||
|
||||
check_args '2' "$#" 'USER SHELL'
|
||||
validate_format 'user' 'shell'
|
||||
is_format_valid 'user' 'shell'
|
||||
is_object_valid 'user' 'USER' "$user"
|
||||
is_object_unsuspended 'user' 'USER' "$user"
|
||||
|
||||
|
@ -58,6 +58,6 @@ update_user_value "$user" '$SHELL' "$shell"
|
|||
|
||||
# Logging
|
||||
log_history "changed $user shell to $shell" '' 'admin'
|
||||
log_event "$OK" "$EVENT"
|
||||
log_event "$OK" "$ARGUMENTS"
|
||||
|
||||
exit
|
||||
|
|
|
@ -25,7 +25,7 @@ source $VESTA/conf/vesta.conf
|
|||
#----------------------------------------------------------#
|
||||
|
||||
check_args '3' "$#" 'USER TYPE TEMPLATE'
|
||||
validate_format 'user' 'template'
|
||||
is_format_valid 'user' 'template'
|
||||
is_object_valid 'user' 'USER' "$user"
|
||||
is_object_unsuspended 'user' 'USER' "$user"
|
||||
|
||||
|
@ -35,11 +35,11 @@ is_object_unsuspended 'user' 'USER' "$user"
|
|||
#----------------------------------------------------------#
|
||||
|
||||
case $type in
|
||||
WEB) is_web_template_valid;
|
||||
WEB) is_web_template_valid $template;
|
||||
update_user_value "$user" '$WEB_TEMPLATE' "$template";;
|
||||
PROXY) is_proxy_template_valid $template;
|
||||
update_user_value "$user" '$PROXY_TEMPLATE' "$template";;
|
||||
DNS) is_dns_template_valid;
|
||||
DNS) is_dns_template_valid $template;
|
||||
update_user_value "$user" '$DNS_TEMPLATE' "$template";;
|
||||
*) check_args '1' '0' 'USER TYPE TEMPLATE'
|
||||
esac
|
||||
|
@ -51,6 +51,6 @@ esac
|
|||
|
||||
# Logging
|
||||
log_history "changed $type template to $template"
|
||||
log_event "$OK" "$EVENT"
|
||||
log_event "$OK" "$ARGUMENTS"
|
||||
|
||||
exit
|
||||
|
|
|
@ -29,20 +29,21 @@ source $VESTA/conf/vesta.conf
|
|||
#----------------------------------------------------------#
|
||||
|
||||
check_args '3' "$#" 'USER DOMAIN TEMPLATE [RESTART]'
|
||||
validate_format 'user' 'domain' 'template'
|
||||
is_format_valid 'user' 'domain' 'template'
|
||||
is_system_enabled "$WEB_BACKEND" 'WEB_BACKEND'
|
||||
is_object_valid 'user' 'USER' "$user"
|
||||
is_object_unsuspended 'user' 'USER' "$user"
|
||||
is_object_valid 'web' 'DOMAIN' "$domain"
|
||||
is_object_unsuspended 'web' 'DOMAIN' "$domain"
|
||||
is_web_backend_template_valid $template
|
||||
is_web_backend_pool_valid
|
||||
is_backend_template_valid $template
|
||||
|
||||
|
||||
#----------------------------------------------------------#
|
||||
# Action #
|
||||
#----------------------------------------------------------#
|
||||
|
||||
prepare_web_backend
|
||||
|
||||
# Deleting backend
|
||||
rm -f $pool/$backend.conf
|
||||
|
||||
|
@ -71,34 +72,26 @@ if [ "$backend" = "$user" ]; then
|
|||
nohead=1
|
||||
|
||||
for domain in $(shell_list); do
|
||||
|
||||
# Parsing domain values
|
||||
get_domain_values 'web'
|
||||
ip=$(get_real_ip $IP)
|
||||
local_ip=$(get_real_ip $IP)
|
||||
prepare_web_domain_values
|
||||
|
||||
# Deleting old vhost
|
||||
tpl_file="$WEBTPL/$WEB_SYSTEM/$WEB_BACKEND/$TPL.tpl"
|
||||
conf="$HOMEDIR/$user/conf/web/$WEB_SYSTEM.conf"
|
||||
del_web_config
|
||||
|
||||
# Deleting old ssl vhost
|
||||
# Rebuilding vhost
|
||||
del_web_config "$WEB_SYSTEM" "$TPL.tpl"
|
||||
add_web_config "$WEB_SYSTEM" "$TPL.tpl"
|
||||
if [ "$SSL" = 'yes' ]; then
|
||||
tpl_file="$WEBTPL/$WEB_SYSTEM/$WEB_BACKEND/$TPL.stpl"
|
||||
conf="$HOMEDIR/$user/conf/web/s$WEB_SYSTEM.conf"
|
||||
del_web_config
|
||||
del_web_config "$WEB_SYSTEM" "$TPL.stpl"
|
||||
add_web_config "$WEB_SYSTEM" "$TPL.stpl"
|
||||
fi
|
||||
|
||||
# Adding new vhost
|
||||
upd_web_domain_values
|
||||
tpl_file="$WEBTPL/$WEB_SYSTEM/$WEB_BACKEND/$TPL.tpl"
|
||||
conf="$HOMEDIR/$user/conf/web/$WEB_SYSTEM.conf"
|
||||
add_web_config
|
||||
|
||||
# Adding new ssl vhost
|
||||
# Rebuilding proxy configuration
|
||||
if [ ! -z "$PROXY_SYSTEM" ] && [ ! -z "$PROXY" ]; then
|
||||
del_web_config "$PROXY_SYSTEM" "$PROXY.tpl"
|
||||
add_web_config "$PROXY_SYSTEM" "$PROXY.tpl"
|
||||
if [ "$SSL" = 'yes' ]; then
|
||||
conf="$HOMEDIR/$user/conf/web/s$WEB_SYSTEM.conf"
|
||||
tpl_file="$WEBTPL/$WEB_SYSTEM/$WEB_BACKEND/$TPL.stpl"
|
||||
add_web_config
|
||||
del_web_config "$PROXY_SYSTEM" "$PROXY.stpl"
|
||||
add_web_config "$PROXY_SYSTEM" "$PROXY.stpl"
|
||||
fi
|
||||
fi
|
||||
|
||||
# Update config
|
||||
|
@ -117,31 +110,25 @@ if [ "$backend" = "$user" ]; then
|
|||
else
|
||||
# Parsing domain values
|
||||
get_domain_values 'web'
|
||||
ip=$(get_real_ip $IP)
|
||||
local_ip=$(get_real_ip $IP)
|
||||
prepare_web_domain_values
|
||||
|
||||
# Deleting old vhost
|
||||
tpl_file="$WEBTPL/$WEB_SYSTEM/$WEB_BACKEND/$TPL.tpl"
|
||||
conf="$HOMEDIR/$user/conf/web/$WEB_SYSTEM.conf"
|
||||
del_web_config
|
||||
|
||||
# Deleting old ssl vhost
|
||||
# Rebuilding vhost
|
||||
del_web_config "$WEB_SYSTEM" "$TPL.tpl"
|
||||
add_web_config "$WEB_SYSTEM" "$TPL.tpl"
|
||||
if [ "$SSL" = 'yes' ]; then
|
||||
tpl_file="$WEBTPL/$WEB_SYSTEM/$WEB_BACKEND/$TPL.stpl"
|
||||
conf="$HOMEDIR/$user/conf/web/s$WEB_SYSTEM.conf"
|
||||
del_web_config
|
||||
del_web_config "$WEB_SYSTEM" "$TPL.stpl"
|
||||
add_web_config "$WEB_SYSTEM" "$TPL.stpl"
|
||||
fi
|
||||
|
||||
# Adding new vhost
|
||||
upd_web_domain_values
|
||||
tpl_file="$WEBTPL/$WEB_SYSTEM/$WEB_BACKEND/$TPL.tpl"
|
||||
conf="$HOMEDIR/$user/conf/web/$WEB_SYSTEM.conf"
|
||||
add_web_config
|
||||
|
||||
# Adding new ssl vhost
|
||||
# Rebuilding proxy configuration
|
||||
if [ ! -z "$PROXY_SYSTEM" ] && [ ! -z "$PROXY" ]; then
|
||||
del_web_config "$PROXY_SYSTEM" "$PROXY.tpl"
|
||||
add_web_config "$PROXY_SYSTEM" "$PROXY.tpl"
|
||||
if [ "$SSL" = 'yes' ]; then
|
||||
conf="$HOMEDIR/$user/conf/web/s$WEB_SYSTEM.conf"
|
||||
tpl_file="$WEBTPL/$WEB_SYSTEM/$WEB_BACKEND/$TPL.stpl"
|
||||
add_web_config
|
||||
del_web_config "$PROXY_SYSTEM" "$PROXY.stpl"
|
||||
add_web_config "$PROXY_SYSTEM" "$PROXY.stpl"
|
||||
fi
|
||||
fi
|
||||
|
||||
# Update config
|
||||
|
@ -166,6 +153,6 @@ fi
|
|||
|
||||
# Logging
|
||||
log_history "changed backend template for $domain to $template"
|
||||
log_event "$OK" "$EVENT"
|
||||
log_event "$OK" "$ARGUMENTS"
|
||||
|
||||
exit
|
||||
|
|
|
@ -27,7 +27,7 @@ source $VESTA/conf/vesta.conf
|
|||
#----------------------------------------------------------#
|
||||
|
||||
check_args '4' "$#" 'USER DOMAIN FTP_USER FTP_PASSWORD'
|
||||
validate_format 'user' 'domain' 'ftp_user'
|
||||
is_format_valid 'user' 'domain' 'ftp_user'
|
||||
is_system_enabled "$WEB_SYSTEM" 'WEB_SYSTEM'
|
||||
is_object_valid 'user' 'USER' "$user"
|
||||
is_object_unsuspended 'user' 'USER' "$user"
|
||||
|
@ -37,7 +37,7 @@ is_password_valid
|
|||
get_domain_values 'web'
|
||||
if [ -z "$(echo $FTP_USER | tr ':' '\n' | grep ^$ftp_user$)" ]; then
|
||||
echo "Error: account $ftp_user doesn't exist"
|
||||
log_event "$E_NOTEXIST" "$EVENT"
|
||||
log_event "$E_NOTEXIST" "$ARGUMENTS"
|
||||
exit $E_NOTEXIST
|
||||
fi
|
||||
|
||||
|
@ -67,6 +67,6 @@ update_object_value 'web' 'DOMAIN' "$domain" '$FTP_MD5' "$ftp_md5"
|
|||
|
||||
# Logging
|
||||
log_history "changed password for $ftp_user on $domain"
|
||||
log_event "$OK" "$EVENT"
|
||||
log_event "$OK" "$ARGUMENTS"
|
||||
|
||||
exit
|
||||
|
|
|
@ -27,7 +27,7 @@ source $VESTA/conf/vesta.conf
|
|||
#----------------------------------------------------------#
|
||||
|
||||
check_args '4' "$#" 'USER DOMAIN FTP_USER FTP_PATH'
|
||||
validate_format 'user' 'domain' 'ftp_user'
|
||||
is_format_valid 'user' 'domain' 'ftp_user'
|
||||
is_system_enabled "$WEB_SYSTEM" 'WEB_SYSTEM'
|
||||
is_object_valid 'user' 'USER' "$user"
|
||||
is_object_unsuspended 'user' 'USER' "$user"
|
||||
|
@ -36,13 +36,13 @@ is_object_unsuspended 'web' 'DOMAIN' "$domain"
|
|||
get_domain_values 'web'
|
||||
if [ -z "$(echo $FTP_USER | tr ':' '\n' | grep ^$ftp_user$)" ]; then
|
||||
echo "Error: account $ftp_user doesn't exist"
|
||||
log_event "$E_NOTEXIST" "$EVENT"
|
||||
log_event "$E_NOTEXIST" "$ARGUMENTS"
|
||||
exit $E_NOTEXIST
|
||||
fi
|
||||
ftp_path_a=$(readlink -f "$HOMEDIR/$user/web/$domain/$ftp_path")
|
||||
if [ -z "$(echo $ftp_path_a |grep $HOMEDIR/$user/web/$domain)" ]; then
|
||||
echo "Error: absolute path $ftp_path_a is invalid"
|
||||
log_event "$E_INVALID" "$EVENT"
|
||||
log_event "$E_INVALID" "$ARGUMENTS"
|
||||
exit $E_INVALID
|
||||
fi
|
||||
|
||||
|
@ -84,6 +84,6 @@ update_object_value 'web' 'DOMAIN' "$domain" '$FTP_PATH' "$ftp_path"
|
|||
|
||||
# Logging
|
||||
log_history "changed path to $ftp_path_a for $ftp_user@$domain"
|
||||
log_event "$OK" "$EVENT"
|
||||
log_event "$OK" "$ARGUMENTS"
|
||||
|
||||
exit
|
||||
|
|
|
@ -29,7 +29,7 @@ htpasswd="$HOMEDIR/$user/conf/web/$WEB_SYSTEM.$domain.htpasswd"
|
|||
#----------------------------------------------------------#
|
||||
|
||||
check_args '4' "$#" 'USER DOMAIN AUTH_USER AUTH_PASSWORD [RESTART]'
|
||||
validate_format 'user' 'domain'
|
||||
is_format_valid 'user' 'domain'
|
||||
is_system_enabled "$WEB_SYSTEM" 'WEB_SYSTEM'
|
||||
is_object_valid 'user' 'USER' "$user"
|
||||
is_object_unsuspended 'user' 'USER' "$user"
|
||||
|
@ -39,7 +39,7 @@ is_password_valid
|
|||
get_domain_values 'web'
|
||||
if [ -z "$(echo "$AUTH_USER" |tr : '\n' |grep ^$auth_user$)" ]; then
|
||||
echo "Error: auth user $auth_user doesn't exist"
|
||||
log_event "$E_NOTEXIST" "$EVENT"
|
||||
log_event "$E_NOTEXIST" "$ARGUMENTS"
|
||||
exit $E_NOTEXIST
|
||||
fi
|
||||
|
||||
|
@ -71,6 +71,6 @@ update_object_value 'web' 'DOMAIN' "$domain" '$AUTH_HASH' "$auth_hash"
|
|||
|
||||
# Logging
|
||||
log_history "changed auth user $httpauth_user password on $domain"
|
||||
log_event "$OK" "$EVENT"
|
||||
log_event "$OK" "$ARGUMENTS"
|
||||
|
||||
exit
|
||||
|
|
|
@ -1,8 +1,8 @@
|
|||
#!/bin/bash
|
||||
# info: change web domain ip address
|
||||
# options: USER DOMAIN IP [RESTART]
|
||||
# info: change web domain ip
|
||||
# options: USER DOMAIN DOMAIN [RESTART]
|
||||
#
|
||||
# The call is used for changing the site ip address.
|
||||
# The call is used for changing domain ip
|
||||
|
||||
|
||||
#----------------------------------------------------------#
|
||||
|
@ -11,8 +11,7 @@
|
|||
|
||||
# Argument definition
|
||||
user=$1
|
||||
domain=$(idn -t --quiet -u "$2" )
|
||||
domain_idn=$(idn -t --quiet -a "$domain")
|
||||
domain=$2
|
||||
ip=$3
|
||||
restart=$4
|
||||
|
||||
|
@ -28,47 +27,41 @@ source $VESTA/conf/vesta.conf
|
|||
#----------------------------------------------------------#
|
||||
|
||||
check_args '3' "$#" 'USER DOMAIN IP [RESTART]'
|
||||
validate_format 'user' 'domain' 'ip'
|
||||
is_format_valid 'user' 'domain' 'ip'
|
||||
is_system_enabled "$WEB_SYSTEM" 'WEB_SYSTEM'
|
||||
is_object_valid 'user' 'USER' "$user"
|
||||
is_object_unsuspended 'user' 'USER' "$user"
|
||||
is_object_valid 'web' 'DOMAIN' "$domain"
|
||||
is_object_unsuspended 'web' 'DOMAIN' "$domain"
|
||||
is_ip_valid
|
||||
is_ip_avalable
|
||||
is_ip_valid "$ip" "$user"
|
||||
|
||||
|
||||
#----------------------------------------------------------#
|
||||
# Action #
|
||||
#----------------------------------------------------------#
|
||||
|
||||
# Define variable for replace
|
||||
# Preparing variables for vhost replace
|
||||
get_domain_values 'web'
|
||||
ip=$(get_real_ip $ip)
|
||||
tpl_file="$WEBTPL/$WEB_SYSTEM/$WEB_BACKEND/$TPL.tpl"
|
||||
conf="$HOMEDIR/$user/conf/web/$WEB_SYSTEM.conf"
|
||||
old=$(get_real_ip $IP)
|
||||
new=$ip
|
||||
replace_web_config
|
||||
|
||||
# Checking SSL
|
||||
if [ "$SSL" = 'yes' ]; then
|
||||
tpl_file="$WEBTPL/$WEB_SYSTEM/$WEB_BACKEND/$TPL.stpl"
|
||||
conf="$HOMEDIR/$user/conf/web/s$WEB_SYSTEM.conf"
|
||||
replace_web_config
|
||||
if [[ "$domain" = *[![:ascii:]]* ]]; then
|
||||
domain_idn=$(idn -t --quiet -a $domain)
|
||||
else
|
||||
domain_idn=$domain
|
||||
fi
|
||||
|
||||
# Checking proxy
|
||||
if [ ! -z "$PROXY_SYSTEM" ] && [ ! -z "$PROXY" ]; then
|
||||
tpl_file="$WEBTPL/$PROXY_SYSTEM/$PROXY.tpl"
|
||||
conf="$HOMEDIR/$user/conf/web/$PROXY_SYSTEM.conf"
|
||||
replace_web_config
|
||||
|
||||
# Checking SSL proxy
|
||||
if [ "$SSL" = 'yes' ] && [ ! -z "$PROXY" ]; then
|
||||
tpl_file="$WEBTPL/$PROXY_SYSTEM/$PROXY.stpl"
|
||||
conf="$HOMEDIR/$user/conf/web/s$PROXY_SYSTEM.conf"
|
||||
replace_web_config
|
||||
# Replacing vhost
|
||||
replace_web_config "$WEB_SYSTEM" "$TPL.tpl"
|
||||
if [ "$SSL" = 'yes' ]; then
|
||||
replace_web_config "$WEB_SYSTEM" "$TPL.stpl"
|
||||
fi
|
||||
|
||||
# Replacing proxy vhost
|
||||
if [ ! -z "$PROXY_SYSTEM" ] && [ ! -z "$PROXY" ]; then
|
||||
replace_web_config "$PROXY_SYSTEM" "$PROXY.tpl"
|
||||
if [ "$SSL" = 'yes' ]; then
|
||||
replace_web_config "$PROXY_SYSTEM" "$PROXY.stpl"
|
||||
fi
|
||||
fi
|
||||
|
||||
|
@ -97,6 +90,6 @@ fi
|
|||
|
||||
# Logging
|
||||
log_history "changed web domain $domain ip to $3"
|
||||
log_event "$OK" "$EVENT"
|
||||
log_event "$OK" "$ARGUMENTS"
|
||||
|
||||
exit
|
||||
|
|
|
@ -32,7 +32,7 @@ source $VESTA/conf/vesta.conf
|
|||
#----------------------------------------------------------#
|
||||
|
||||
check_args '3' "$#" 'USER DOMAIN TEMPLATE [EXTENTIONS] [RESTART]'
|
||||
validate_format 'user' 'domain' 'template'
|
||||
is_format_valid 'user' 'domain' 'template'
|
||||
is_system_enabled "$PROXY_SYSTEM" 'PROXY_SYSTEM'
|
||||
is_object_valid 'user' 'USER' "$user"
|
||||
is_object_unsuspended 'user' 'USER' "$user"
|
||||
|
@ -48,38 +48,21 @@ is_proxy_template_valid $template
|
|||
|
||||
# Parsing domain values
|
||||
get_domain_values 'web'
|
||||
tpl_file="$WEBTPL/$PROXY_SYSTEM/$PROXY.tpl"
|
||||
old_tpl=$PROXY
|
||||
conf="$HOMEDIR/$user/conf/web/$PROXY_SYSTEM.conf"
|
||||
ip=$(get_real_ip $IP)
|
||||
local_ip=$(get_real_ip $IP)
|
||||
|
||||
# Delete old vhost
|
||||
del_web_config
|
||||
del_web_config "$PROXY_SYSTEM" "$PROXY.tpl"
|
||||
if [ "$SSL" = 'yes' ]; then
|
||||
del_web_config "$PROXY_SYSTEM" "$PROXY.stpl"
|
||||
fi
|
||||
|
||||
# Add new vhost
|
||||
PROXY="$template"
|
||||
PROXY_EXT="$extentions"
|
||||
tpl_file="$WEBTPL/$PROXY_SYSTEM/$template.tpl"
|
||||
upd_web_domain_values
|
||||
add_web_config
|
||||
chown root:$user $conf
|
||||
chmod 640 $conf
|
||||
|
||||
# Checking SSL
|
||||
prepare_web_domain_values
|
||||
add_web_config "$PROXY_SYSTEM" "$PROXY.tpl"
|
||||
if [ "$SSL" = 'yes' ]; then
|
||||
tpl_file="$WEBTPL/$PROXY_SYSTEM/$old_tpl.stpl"
|
||||
conf="$HOMEDIR/$user/conf/web/s$PROXY_SYSTEM.conf"
|
||||
del_web_config
|
||||
|
||||
tpl_file="$WEBTPL/$PROXY_SYSTEM/$template.stpl"
|
||||
add_web_config
|
||||
chown root:$user $conf
|
||||
chmod 640 $conf
|
||||
fi
|
||||
|
||||
# Running template trigger
|
||||
if [ -x $WEBTPL/$PROXY_SYSTEM/$template.sh ]; then
|
||||
$WEBTPL/$PROXY_SYSTEM/$template.sh $user $domain $ip $HOMEDIR $docroot
|
||||
add_web_config "$PROXY_SYSTEM" "$PROXY.stpl"
|
||||
fi
|
||||
|
||||
|
||||
|
@ -99,6 +82,6 @@ fi
|
|||
|
||||
# Logging
|
||||
log_history "changed proxy template for $domain to $template"
|
||||
log_event "$OK" "$EVENT"
|
||||
log_event "$OK" "$ARGUMENTS"
|
||||
|
||||
exit
|
||||
|
|
|
@ -28,7 +28,7 @@ source $VESTA/conf/vesta.conf
|
|||
#----------------------------------------------------------#
|
||||
|
||||
check_args '3' "$#" 'USER DOMAIN SSL_DIR [RESTART]'
|
||||
validate_format 'user' 'domain' 'ssl_dir'
|
||||
is_format_valid 'user' 'domain' 'ssl_dir'
|
||||
is_system_enabled "$WEB_SYSTEM" 'WEB_SYSTEM'
|
||||
is_object_valid 'user' 'USER' "$user"
|
||||
is_object_unsuspended 'user' 'USER' "$user"
|
||||
|
@ -83,6 +83,6 @@ fi
|
|||
|
||||
# Logging
|
||||
log_history "changed ssl certificate for $domain"
|
||||
log_event "$OK" "$EVENT"
|
||||
log_event "$OK" "$ARGUMENTS"
|
||||
|
||||
exit
|
||||
|
|
|
@ -23,7 +23,7 @@ source $VESTA/conf/vesta.conf
|
|||
#----------------------------------------------------------#
|
||||
|
||||
check_args '3' "$#" 'USER DOMAIN SSL_HOME [RESTART]'
|
||||
validate_format 'user' 'domain'
|
||||
is_format_valid 'user' 'domain'
|
||||
is_system_enabled "$WEB_SYSTEM" 'WEB_SYSTEM'
|
||||
is_object_valid 'user' 'USER' "$user"
|
||||
is_object_unsuspended 'user' 'USER' "$user"
|
||||
|
@ -40,8 +40,6 @@ is_object_value_exist 'web' 'DOMAIN' "$domain" '$SSL'
|
|||
get_domain_values 'web'
|
||||
old_ssl_home=$SSL_HOME
|
||||
SSL_HOME=$ssl_home
|
||||
tpl_file="$WEBTPL/$WEB_SYSTEM/$WEB_BACKEND/$TPL.stpl"
|
||||
conf="$HOMEDIR/$user/conf/web/s$WEB_SYSTEM.conf"
|
||||
|
||||
# Parsing tpl_option
|
||||
case $SSL_HOME in
|
||||
|
@ -53,13 +51,11 @@ case $SSL_HOME in
|
|||
esac
|
||||
|
||||
# Changing sslhome directory
|
||||
replace_web_config
|
||||
replace_web_config "$WEB_SYSTEM" "$TPL.stpl"
|
||||
|
||||
# Checking proxy config
|
||||
# Changing proxy vhost
|
||||
if [ ! -z "$PROXY_SYSTEM" ] && [ ! -z "$PROXY" ]; then
|
||||
tpl_file="$WEBTPL/$PROXY_SYSTEM/$PROXY.stpl"
|
||||
conf="$HOMEDIR/$user/conf/web/s$PROXY_SYSTEM.conf"
|
||||
replace_web_config
|
||||
replace_web_config "$PROXY_SYSTEM" "$PROXY.stpl"
|
||||
fi
|
||||
|
||||
|
||||
|
@ -83,6 +79,6 @@ fi
|
|||
|
||||
# Logging
|
||||
log_history "changed ssl home for $domain to $ssl_home"
|
||||
log_event "$OK" "$EVENT"
|
||||
log_event "$OK" "$ARGUMENTS"
|
||||
|
||||
exit
|
||||
|
|
|
@ -27,7 +27,7 @@ source $VESTA/conf/vesta.conf
|
|||
#----------------------------------------------------------#
|
||||
|
||||
check_args '3' "$#" 'USER DOMAIN TYPE'
|
||||
validate_format 'user' 'domain'
|
||||
is_format_valid 'user' 'domain'
|
||||
is_system_enabled "$WEB_SYSTEM" 'WEB_SYSTEM'
|
||||
is_type_valid "$STATS_SYSTEM" "$type"
|
||||
is_object_valid 'user' 'USER' "$user"
|
||||
|
@ -46,7 +46,7 @@ get_domain_values 'web'
|
|||
|
||||
# Comparing stats types
|
||||
if [ "$STATS" == $type ]; then
|
||||
log_event "$OK" "$EVENT"
|
||||
log_event "$OK" "$ARGUMENTS"
|
||||
exit 0
|
||||
fi
|
||||
|
||||
|
@ -59,10 +59,8 @@ rm -rf $stats_dir/*
|
|||
# Deleting config
|
||||
rm -f $HOMEDIR/$user/conf/web/$STATS.$domain.conf
|
||||
|
||||
# Preparing domain values for the template substitution
|
||||
upd_web_domain_values
|
||||
|
||||
# Adding statistic config
|
||||
prepare_web_domain_values
|
||||
cat $WEBTPL/$type/$type.tpl |\
|
||||
sed -e "s/%ip%/$ip/g" \
|
||||
-e "s/%web_port%/$WEB_PORT/g" \
|
||||
|
@ -98,7 +96,7 @@ update_object_value 'web' 'DOMAIN' "$domain" '$STATS' "$type"
|
|||
|
||||
# Logging
|
||||
log_history "changed web log stats for $domain to $type"
|
||||
log_event "$OK" "$EVENT"
|
||||
log_event "$OK" "$ARGUMENTS"
|
||||
|
||||
# Build stats
|
||||
exec $BIN/v-update-web-domain-stat $user $domain
|
||||
|
|
|
@ -29,13 +29,13 @@ source $VESTA/conf/vesta.conf
|
|||
#----------------------------------------------------------#
|
||||
|
||||
check_args '3' "$#" 'USER DOMAIN TEMPLATE [RESTART]'
|
||||
validate_format 'user' 'domain' 'template'
|
||||
is_format_valid 'user' 'domain' 'template'
|
||||
is_system_enabled "$WEB_SYSTEM" 'WEB_SYSTEM'
|
||||
is_object_valid 'user' 'USER' "$user"
|
||||
is_object_unsuspended 'user' 'USER' "$user"
|
||||
is_object_valid 'web' 'DOMAIN' "$domain"
|
||||
is_object_unsuspended 'web' 'DOMAIN' "$domain"
|
||||
is_web_template_valid
|
||||
is_web_template_valid "$template"
|
||||
|
||||
|
||||
#----------------------------------------------------------#
|
||||
|
@ -44,45 +44,19 @@ is_web_template_valid
|
|||
|
||||
# Parsing domain values
|
||||
get_domain_values 'web'
|
||||
ip=$(get_real_ip $IP)
|
||||
local_ip=$(get_real_ip $IP)
|
||||
|
||||
# Deleting domain
|
||||
tpl_file="$WEBTPL/$WEB_SYSTEM/$WEB_BACKEND/$TPL.tpl"
|
||||
old_tpl=$TPL
|
||||
conf="$HOMEDIR/$user/conf/web/$WEB_SYSTEM.conf"
|
||||
del_web_config
|
||||
|
||||
# Deleting ssl vhost
|
||||
del_web_config "$WEB_SYSTEM" "$TPL.tpl"
|
||||
if [ "$SSL" = 'yes' ]; then
|
||||
tpl_file="$WEBTPL/$WEB_SYSTEM/$WEB_BACKEND/$TPL.stpl"
|
||||
conf="$HOMEDIR/$user/conf/web/s$WEB_SYSTEM.conf"
|
||||
del_web_config
|
||||
del_web_config "$WEB_SYSTEM" "$TPL.stpl"
|
||||
fi
|
||||
|
||||
# Defining variables for new vhost config
|
||||
upd_web_domain_values
|
||||
tpl_file="$WEBTPL/$WEB_SYSTEM/$WEB_BACKEND/$template.tpl"
|
||||
|
||||
# Adding domain to the web conf
|
||||
add_web_config
|
||||
|
||||
# Running template trigger
|
||||
if [ -x $WEBTPL/$WEB_SYSTEM/$WEB_BACKEND/$template.sh ]; then
|
||||
$WEBTPL/$WEB_SYSTEM/$WEB_BACKEND/$template.sh \
|
||||
$user $domain $ip $HOMEDIR $docroot
|
||||
fi
|
||||
|
||||
# Checking SSL
|
||||
prepare_web_domain_values
|
||||
add_web_config "$WEB_SYSTEM" "$TPL.tpl"
|
||||
if [ "$SSL" = 'yes' ]; then
|
||||
conf="$HOMEDIR/$user/conf/web/s$WEB_SYSTEM.conf"
|
||||
tpl_file="$WEBTPL/$WEB_SYSTEM/$WEB_BACKEND/$template.stpl"
|
||||
add_web_config
|
||||
|
||||
# Running template trigger
|
||||
if [ -x $WEBTPL/$WEB_SYSTEM/$WEB_BACKEND/$template.sh ]; then
|
||||
$WEBTPL/$WEB_SYSTEM/$WEB_BACKEND/$template.sh \
|
||||
"$user" "$domain" "$ip" "$HOMEDIR" "$sdocroot"
|
||||
fi
|
||||
add_web_config "$WEB_SYSTEM" "$TPL.stpl"
|
||||
fi
|
||||
|
||||
|
||||
|
@ -101,6 +75,6 @@ fi
|
|||
|
||||
# Logging
|
||||
log_history "changed web domain template for $domain to $template" '' 'admin'
|
||||
log_event "$OK" "$EVENT"
|
||||
log_event "$OK" "$ARGUMENTS"
|
||||
|
||||
exit
|
||||
|
|
147
bin/v-check-letsencrypt-domain
Executable file
147
bin/v-check-letsencrypt-domain
Executable file
|
@ -0,0 +1,147 @@
|
|||
#!/bin/bash
|
||||
# info: check letsencrypt domain
|
||||
# options: USER DOMAIN
|
||||
#
|
||||
# The function check and validates domain with LetsEncript
|
||||
|
||||
|
||||
#----------------------------------------------------------#
|
||||
# Variable&Function #
|
||||
#----------------------------------------------------------#
|
||||
|
||||
# Argument definition
|
||||
user=$1
|
||||
domain=$(idn -t --quiet -u "$2" )
|
||||
domain=$(echo $domain | tr '[:upper:]' '[:lower:]')
|
||||
|
||||
# Includes
|
||||
source $VESTA/func/main.sh
|
||||
source $VESTA/conf/vesta.conf
|
||||
|
||||
# encode base64
|
||||
encode_base64() {
|
||||
cat |base64 |tr '+/' '-_' |tr -d '\r\n='
|
||||
}
|
||||
|
||||
|
||||
#----------------------------------------------------------#
|
||||
# Verifications #
|
||||
#----------------------------------------------------------#
|
||||
|
||||
check_args '2' "$#" 'USER DOMAIN'
|
||||
is_format_valid 'user' 'domain'
|
||||
is_system_enabled "$WEB_SYSTEM" 'WEB_SYSTEM'
|
||||
is_object_valid 'user' 'USER' "$user"
|
||||
is_object_unsuspended 'user' 'USER' "$user"
|
||||
if [ ! -e "$USER_DATA/ssl/le.conf" ]; then
|
||||
check_result $E_NOTEXIST "LetsEncrypt key doesn't exist"
|
||||
fi
|
||||
rdomain=$(egrep "'$domain'|'$domain,|,$domain,|,$domain'" $USER_DATA/web.conf)
|
||||
if [ -z "$rdomain" ]; then
|
||||
check_result $E_NOTEXIST "domain $domain doesn't exist"
|
||||
fi
|
||||
|
||||
|
||||
#----------------------------------------------------------#
|
||||
# Action #
|
||||
#----------------------------------------------------------#
|
||||
|
||||
source $USER_DATA/ssl/le.conf
|
||||
api='https://acme-v01.api.letsencrypt.org'
|
||||
r_domain=$(echo "$rdomain" |cut -f 2 -d \')
|
||||
key="$USER_DATA/ssl/user.key"
|
||||
exponent="$EXPONENT"
|
||||
modulus="$MODULUS"
|
||||
thumb="$THUMB"
|
||||
|
||||
# Defining JWK header
|
||||
header='{"e":"'$exponent'","kty":"RSA","n":"'"$modulus"'"}'
|
||||
header='{"alg":"RS256","jwk":'"$header"'}'
|
||||
|
||||
# Requesting nonce
|
||||
nonce=$(curl -s -I "$api/directory" |grep Nonce |cut -f2 -d \ |tr -d '\r\n')
|
||||
protected=$(echo -n '{"nonce":"'"$nonce"'"}' |encode_base64)
|
||||
|
||||
# Defining ACME query (request challenge)
|
||||
query='{"resource":"new-authz","identifier"'
|
||||
query=$query':{"type":"dns","value":"'"$domain"'"}}'
|
||||
payload=$(echo -n "$query" |encode_base64)
|
||||
signature=$(printf "%s" "$protected.$payload" |\
|
||||
openssl dgst -sha256 -binary -sign "$key" |encode_base64)
|
||||
data='{"header":'"$header"',"protected":"'"$protected"'",'
|
||||
data=$data'"payload":"'"$payload"'","signature":"'"$signature"'"}'
|
||||
|
||||
# Sending request to LetsEncrypt API
|
||||
answer=$(curl -s -i -d "$data" "$api/acme/new-authz")
|
||||
|
||||
# Checking http answer status
|
||||
status=$(echo "$answer" |grep HTTP/1.1 |tail -n1 |cut -f2 -d ' ')
|
||||
if [[ "$status" -ne "201" ]]; then
|
||||
check_result $E_CONNECT "LetsEncrypt challenge request $status"
|
||||
fi
|
||||
|
||||
# Parsing domain nonce,token and uri
|
||||
nonce=$(echo "$answer" |grep Nonce |cut -f2 -d \ |tr -d '\r\n')
|
||||
protected=$(echo -n '{"nonce":"'"$nonce"'"}' |encode_base64)
|
||||
token=$(echo "$answer" |grep -A 3 http-01 |grep token |cut -f 4 -d \")
|
||||
uri=$(echo "$answer" |grep -A 3 http-01 |grep uri |cut -f 4 -d \")
|
||||
|
||||
# Adding location wrapper for request challenge
|
||||
if [ "$WEB_SYSTEM" = 'nginx' ] || [ "$PROXY_SYSTEM" = 'nginx' ]; then
|
||||
conf="$HOMEDIR/$user/conf/web/nginx.$r_domain.conf_letsencrypt"
|
||||
if [ ! -e "$conf" ]; then
|
||||
echo 'location ~ "^/\.well-known/acme-challenge/(.*)$" {' > $conf
|
||||
echo ' default_type text/plain;' >> $conf
|
||||
echo ' return 200 "$1.'$thumb'";' >> $conf
|
||||
echo '}' >> $conf
|
||||
fi
|
||||
else
|
||||
acme="$HOMEDIR/$user/web/$r_domain/public_html/.well-known/acme-challenge"
|
||||
echo "$token" > $acme/$token.$thumb
|
||||
chown -R $user:$user $HOMEDIR/$user/web/$r_domain/public_html/.well-known
|
||||
fi
|
||||
|
||||
# Restarting web server
|
||||
if [ -z "$PROXY_SYSTEM" ]; then
|
||||
$BIN/v-restart-web
|
||||
check_result $? "Proxy restart failed" >/dev/null
|
||||
else
|
||||
$BIN/v-restart-proxy
|
||||
$BIN/v-restart-web
|
||||
check_result $? "Web restart failed" >/dev/null
|
||||
fi
|
||||
sleep 30
|
||||
|
||||
# Defining ACME query (request validation)
|
||||
query='{"resource":"challenge","type":"http-01","keyAuthorization"'
|
||||
query=$query':"'$token.$thumb'","token":"'$token'"}'
|
||||
payload=$(echo -n "$query" |encode_base64)
|
||||
signature=$(printf "%s" "$protected.$payload" |\
|
||||
openssl dgst -sha256 -binary -sign "$key" |encode_base64)
|
||||
data='{"header":'"$header"',"protected":"'"$protected"'",'
|
||||
data=$data'"payload":"'"$payload"'","signature":"'"$signature"'"}'
|
||||
|
||||
# Sending request to LetsEncrypt API
|
||||
answer=$(curl -s -i -d "$data" "$uri")
|
||||
|
||||
# Checking domain validation status
|
||||
status=$(echo $answer |grep status |cut -f 4 -d \")
|
||||
location=$(echo "$answer" |grep Location: |awk '{print $2}' |tr -d '\r\n')
|
||||
while [ "$status" = 'pending' ] ; do
|
||||
answer=$(curl -s -i "$location")
|
||||
status=$(echo "$answer" |tr ',' '\n' |grep status |cut -f 4 -d \")
|
||||
done
|
||||
if [ "$status" = 'invalid' ]; then
|
||||
detail="$(echo $answer |tr ',' '\n' |grep detail |cut -f 4 -d \")"
|
||||
check_result $E_CONNECT "$detail"
|
||||
fi
|
||||
|
||||
|
||||
#----------------------------------------------------------#
|
||||
# Vesta #
|
||||
#----------------------------------------------------------#
|
||||
|
||||
# Logging
|
||||
log_event "$OK" "$ARGUMENTS"
|
||||
|
||||
exit
|
|
@ -18,18 +18,23 @@ ip=${3-127.0.0.1}
|
|||
source $VESTA/func/main.sh
|
||||
source $VESTA/conf/vesta.conf
|
||||
|
||||
time_n_date=$(date +'%T %F')
|
||||
time=$(echo "$time_n_date" |cut -f 1 -d \ )
|
||||
date=$(echo "$time_n_date" |cut -f 2 -d \ )
|
||||
|
||||
|
||||
#----------------------------------------------------------#
|
||||
# Verifications #
|
||||
#----------------------------------------------------------#
|
||||
|
||||
|
||||
check_args '2' "$#" 'USER PASSWORD'
|
||||
validate_format 'user'
|
||||
is_format_valid 'user'
|
||||
|
||||
# Checking user
|
||||
if [ ! -d "$VESTA/data/users/$user" ] && [ "$user" != 'root' ]; then
|
||||
echo "Error: password missmatch"
|
||||
echo "$DATE $TIME $user $ip failed to login" >> $VESTA/log/auth.log
|
||||
echo "$date $time $user $ip failed to login" >> $VESTA/log/auth.log
|
||||
exit 9
|
||||
fi
|
||||
|
||||
|
@ -39,7 +44,7 @@ is_password_valid
|
|||
# Checking empty password
|
||||
if [[ -z "$password" ]]; then
|
||||
echo "Error: password missmatch"
|
||||
echo "$DATE $TIME $user $ip failed to login" >> $VESTA/log/auth.log
|
||||
echo "$date $time $user $ip failed to login" >> $VESTA/log/auth.log
|
||||
exit 9
|
||||
fi
|
||||
|
||||
|
@ -48,27 +53,39 @@ fi
|
|||
# Action #
|
||||
#----------------------------------------------------------#
|
||||
|
||||
|
||||
# Parsing user's salt
|
||||
shadow=$(grep "^$user:" /etc/shadow)
|
||||
salt=$(echo "$shadow" |cut -f 3 -d \$)
|
||||
method=$(echo "$shadow" |cut -f 2 -d \$)
|
||||
if [ "$method" -eq '1' ]; then
|
||||
shadow=$(grep "^$user:" /etc/shadow | cut -f 2 -d :)
|
||||
|
||||
if echo "$shadow" | grep -qE '^\$[0-9a-z]+\$[^\$]+\$'
|
||||
then
|
||||
salt=$(echo "$shadow" |cut -f 3 -d \$)
|
||||
method=$(echo "$shadow" |cut -f 2 -d \$)
|
||||
if [ "$method" -eq '1' ]; then
|
||||
method='md5'
|
||||
else
|
||||
elif [ "$method" -eq '6' ]; then
|
||||
method='sha-512'
|
||||
else
|
||||
echo "Error: password missmatch"
|
||||
echo "$date $time $user $ip failed to login" >> $VESTA/log/auth.log
|
||||
exit 9
|
||||
fi
|
||||
else
|
||||
salt=${shadow:0:2}
|
||||
method='des'
|
||||
fi
|
||||
|
||||
if [ -z "$salt" ]; then
|
||||
echo "Error: password missmatch"
|
||||
echo "$DATE $TIME $user $ip failed to login" >> $VESTA/log/auth.log
|
||||
echo "$date $time $user $ip failed to login" >> $VESTA/log/auth.log
|
||||
exit 9
|
||||
fi
|
||||
|
||||
# Generating SHA-512
|
||||
# Generating hash
|
||||
hash=$($BIN/v-generate-password-hash $method $salt <<< $password)
|
||||
if [[ -z "$hash" ]]; then
|
||||
echo "Error: password missmatch"
|
||||
echo "$DATE $TIME $user $ip failed to login" >> $VESTA/log/auth.log
|
||||
echo "$date $time $user $ip failed to login" >> $VESTA/log/auth.log
|
||||
exit 9
|
||||
fi
|
||||
|
||||
|
@ -76,7 +93,7 @@ fi
|
|||
result=$(grep "^$user:$hash:" /etc/shadow 2>/dev/null)
|
||||
if [[ -z "$result" ]]; then
|
||||
echo "Error: password missmatch"
|
||||
echo "$DATE $TIME $user $ip failed to login" >> $VESTA/log/auth.log
|
||||
echo "$date $time $user $ip failed to login" >> $VESTA/log/auth.log
|
||||
exit 9
|
||||
fi
|
||||
|
||||
|
@ -86,6 +103,6 @@ fi
|
|||
#----------------------------------------------------------#
|
||||
|
||||
# Logging
|
||||
echo "$DATE $TIME $user $ip successfully logged in" >> $VESTA/log/auth.log
|
||||
echo "$date $time $user $ip successfully logged in" >> $VESTA/log/auth.log
|
||||
|
||||
exit
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Add table
Add a link
Reference in a new issue