Merge remote-tracking branch 'upstream/master'

This commit is contained in:
core01 2016-08-24 21:30:37 +03:00
commit fad19fee73
894 changed files with 26796 additions and 14780 deletions

View file

@ -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

View file

@ -62,6 +62,6 @@ if [ "$module" = 'SFTPJAIL' ]; then
fi
# Logging
log_event "$OK" "$EVENT"
log_event "$OK" "$ARGUMENTS"
exit

View file

@ -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
sftmpdir="$path/vst.bK76A9SUkt"
sftpc "mkdir $sftmpdir" "rmdir $sftmpdir" > /dev/null 2>&1
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

View file

@ -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

View file

@ -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

View file

@ -38,6 +38,6 @@ fi
#----------------------------------------------------------#
# Logging
log_event "$OK" "$EVENT"
log_event "$OK" "$ARGUMENTS"
exit

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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}')

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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
View 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
View 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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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"

View file

@ -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

View file

@ -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"

View file

@ -52,6 +52,6 @@ $BIN/v-update-firewall
#----------------------------------------------------------#
# Logging
log_event "$OK" "$EVENT"
log_event "$OK" "$ARGUMENTS"
exit

View file

@ -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

View file

@ -87,6 +87,6 @@ done
#----------------------------------------------------------#
# Logging
log_event "$OK" "$EVENT"
log_event "$OK" "$ARGUMENTS"
exit

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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
@ -222,7 +203,7 @@ if [ ! -z "$WEB_SYSTEM" ] && [ "$WEB" != '*' ]; then
# Backup files
cd $HOMEDIR/$user/web/$domain
tar -cpf $tmpdir/web/$domain/domain_data.tar * ${fargs[@]}
tar -cpf $tmpdir/web/$domain/domain_data.tar * ${fargs[@]}
# Compress archive
gzip -$BACKUP_GZIP $tmpdir/web/$domain/domain_data.tar
@ -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
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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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,11 +41,11 @@ 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
fi
# Exiting
exit
exit

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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"

View file

@ -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"

View file

@ -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"

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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
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
# 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
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
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
# 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
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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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

View file

@ -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
View 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

View file

@ -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
method='md5'
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'
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
method='sha-512'
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