Просмотр исходного кода

Merge remote-tracking branch 'upstream/master'

core01 9 лет назад
Родитель
Сommit
fad19fee73
100 измененных файлов с 1199 добавлено и 1001 удалено
  1. 2 2
      bin/v-acknowledge-user-notification
  2. 1 1
      bin/v-activate-vesta-license
  3. 15 14
      bin/v-add-backup-host
  4. 11 7
      bin/v-add-cron-job
  5. 2 2
      bin/v-add-cron-reports
  6. 1 1
      bin/v-add-cron-restart-job
  7. 9 4
      bin/v-add-cron-vesta-autoupdate
  8. 9 8
      bin/v-add-database
  9. 11 7
      bin/v-add-database-host
  10. 27 17
      bin/v-add-dns-domain
  11. 2 2
      bin/v-add-dns-on-web-alias
  12. 15 7
      bin/v-add-dns-record
  13. 5 7
      bin/v-add-domain
  14. 8 3
      bin/v-add-firewall-ban
  15. 2 2
      bin/v-add-firewall-chain
  16. 10 5
      bin/v-add-firewall-rule
  17. 97 0
      bin/v-add-letsencrypt-domain
  18. 111 0
      bin/v-add-letsencrypt-user
  19. 12 7
      bin/v-add-mail-account
  20. 2 2
      bin/v-add-mail-account-alias
  21. 2 2
      bin/v-add-mail-account-autoreply
  22. 3 3
      bin/v-add-mail-account-forward
  23. 3 3
      bin/v-add-mail-account-fwd-only
  24. 17 7
      bin/v-add-mail-domain
  25. 2 2
      bin/v-add-mail-domain-antispam
  26. 2 2
      bin/v-add-mail-domain-antivirus
  27. 2 2
      bin/v-add-mail-domain-catchall
  28. 2 2
      bin/v-add-mail-domain-dkim
  29. 1 1
      bin/v-add-remote-dns-domain
  30. 8 3
      bin/v-add-remote-dns-host
  31. 1 1
      bin/v-add-remote-dns-record
  32. 1 1
      bin/v-add-sys-firewall
  33. 11 6
      bin/v-add-sys-ip
  34. 1 1
      bin/v-add-sys-quota
  35. 2 3
      bin/v-add-sys-sftp-jail
  36. 13 11
      bin/v-add-user
  37. 6 6
      bin/v-add-user-favourites
  38. 7 2
      bin/v-add-user-notification
  39. 15 15
      bin/v-add-user-package
  40. 3 3
      bin/v-add-user-sftp-jail
  41. 92 143
      bin/v-add-web-domain
  42. 18 32
      bin/v-add-web-domain-alias
  43. 14 12
      bin/v-add-web-domain-backend
  44. 4 4
      bin/v-add-web-domain-ftp
  45. 3 3
      bin/v-add-web-domain-httpauth
  46. 8 37
      bin/v-add-web-domain-proxy
  47. 13 41
      bin/v-add-web-domain-ssl
  48. 3 5
      bin/v-add-web-domain-stats
  49. 2 2
      bin/v-add-web-domain-stats-user
  50. 141 206
      bin/v-backup-user
  51. 2 2
      bin/v-backup-users
  52. 8 3
      bin/v-change-cron-job
  53. 2 2
      bin/v-change-database-host-password
  54. 6 7
      bin/v-change-database-owner
  55. 2 2
      bin/v-change-database-password
  56. 2 2
      bin/v-change-database-user
  57. 2 2
      bin/v-change-dns-domain-exp
  58. 2 2
      bin/v-change-dns-domain-ip
  59. 2 2
      bin/v-change-dns-domain-soa
  60. 38 8
      bin/v-change-dns-domain-tpl
  61. 2 2
      bin/v-change-dns-domain-ttl
  62. 13 5
      bin/v-change-dns-record
  63. 2 2
      bin/v-change-dns-record-id
  64. 6 14
      bin/v-change-domain-owner
  65. 9 4
      bin/v-change-firewall-rule
  66. 3 3
      bin/v-change-fs-file-permission
  67. 3 3
      bin/v-change-mail-account-password
  68. 3 3
      bin/v-change-mail-account-quota
  69. 2 2
      bin/v-change-mail-domain-catchall
  70. 1 1
      bin/v-change-remote-dns-domain-exp
  71. 1 1
      bin/v-change-remote-dns-domain-soa
  72. 1 1
      bin/v-change-remote-dns-domain-ttl
  73. 2 2
      bin/v-change-sys-config-value
  74. 2 2
      bin/v-change-sys-hostname
  75. 4 6
      bin/v-change-sys-ip-name
  76. 4 6
      bin/v-change-sys-ip-nat
  77. 3 4
      bin/v-change-sys-ip-owner
  78. 5 10
      bin/v-change-sys-ip-status
  79. 3 3
      bin/v-change-sys-language
  80. 2 2
      bin/v-change-sys-timezone
  81. 2 2
      bin/v-change-user-contact
  82. 4 4
      bin/v-change-user-language
  83. 2 2
      bin/v-change-user-name
  84. 8 8
      bin/v-change-user-ns
  85. 11 30
      bin/v-change-user-package
  86. 3 3
      bin/v-change-user-password
  87. 2 2
      bin/v-change-user-shell
  88. 4 4
      bin/v-change-user-template
  89. 35 48
      bin/v-change-web-domain-backend-tpl
  90. 3 3
      bin/v-change-web-domain-ftp-password
  91. 4 4
      bin/v-change-web-domain-ftp-path
  92. 3 3
      bin/v-change-web-domain-httpauth
  93. 21 28
      bin/v-change-web-domain-ip
  94. 10 27
      bin/v-change-web-domain-proxy-tpl
  95. 2 2
      bin/v-change-web-domain-sslcert
  96. 5 9
      bin/v-change-web-domain-sslhome
  97. 4 6
      bin/v-change-web-domain-stats
  98. 9 35
      bin/v-change-web-domain-tpl
  99. 147 0
      bin/v-check-letsencrypt-domain
  100. 31 14
      bin/v-check-user-password

+ 2 - 2
bin/v-acknowledge-user-notification

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

+ 1 - 1
bin/v-activate-vesta-license

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

+ 15 - 14
bin/v-add-backup-host

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

+ 11 - 7
bin/v-add-cron-job

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

+ 2 - 2
bin/v-add-cron-reports

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

+ 1 - 1
bin/v-add-cron-restart-job

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

+ 9 - 4
bin/v-add-cron-vesta-autoupdate

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

+ 9 - 8
bin/v-add-database

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

+ 11 - 7
bin/v-add-database-host

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

+ 27 - 17
bin/v-add-dns-domain

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

+ 2 - 2
bin/v-add-dns-on-web-alias

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

+ 15 - 7
bin/v-add-dns-record

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

+ 5 - 7
bin/v-add-domain

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

+ 8 - 3
bin/v-add-firewall-ban

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

+ 2 - 2
bin/v-add-firewall-chain

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

+ 10 - 5
bin/v-add-firewall-rule

@@ -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 - 0
bin/v-add-letsencrypt-domain

@@ -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 - 0
bin/v-add-letsencrypt-user

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

+ 12 - 7
bin/v-add-mail-account

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

+ 2 - 2
bin/v-add-mail-account-alias

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

+ 2 - 2
bin/v-add-mail-account-autoreply

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

+ 3 - 3
bin/v-add-mail-account-forward

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

+ 3 - 3
bin/v-add-mail-account-fwd-only

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

+ 17 - 7
bin/v-add-mail-domain

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

+ 2 - 2
bin/v-add-mail-domain-antispam

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

+ 2 - 2
bin/v-add-mail-domain-antivirus

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

+ 2 - 2
bin/v-add-mail-domain-catchall

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

+ 2 - 2
bin/v-add-mail-domain-dkim

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

+ 1 - 1
bin/v-add-remote-dns-domain

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

+ 8 - 3
bin/v-add-remote-dns-host

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

+ 1 - 1
bin/v-add-remote-dns-record

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

+ 1 - 1
bin/v-add-sys-firewall

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

+ 11 - 6
bin/v-add-sys-ip

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

+ 1 - 1
bin/v-add-sys-quota

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

+ 2 - 3
bin/v-add-sys-sftp-jail

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

+ 13 - 11
bin/v-add-user

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

+ 6 - 6
bin/v-add-user-favourites

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

+ 7 - 2
bin/v-add-user-notification

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

+ 15 - 15
bin/v-add-user-package

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

+ 3 - 3
bin/v-add-user-sftp-jail

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

+ 92 - 143
bin/v-add-web-domain

@@ -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
-
-# 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
+# Reading user values
+source $USER_DATA/user.conf
 
-# 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

+ 18 - 32
bin/v-add-web-domain-alias

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

+ 14 - 12
bin/v-add-web-domain-backend

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

+ 4 - 4
bin/v-add-web-domain-ftp

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

+ 3 - 3
bin/v-add-web-domain-httpauth

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

+ 8 - 37
bin/v-add-web-domain-proxy

@@ -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
-
-# 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
+PROXY_EXT="$extentions"
+add_web_config "$PROXY_SYSTEM" "$template.tpl"
 
-# 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

+ 13 - 41
bin/v-add-web-domain-ssl

@@ -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
-
-# 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
+# Parsing domain values
+get_domain_values 'web'
+local_ip=$(get_real_ip $IP)
 
-# Checking proxy
-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
+# Preparing domain values for the template substitution
+SSL_HOME="$ssl_home"
+prepare_web_domain_values
 
-    chown root:$user $conf
-    chmod 640 $conf
+# Adding domain to the web config
+add_web_config "$WEB_SYSTEM" "$TPL.stpl"
 
-    # 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 proxy config
+if [ ! -z "$PROXY_SYSTEM" ] && [ ! -z "$PROXY" ]; then
+    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

+ 3 - 5
bin/v-add-web-domain-stats

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

+ 2 - 2
bin/v-add-web-domain-stats-user

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

+ 141 - 206
bin/v-backup-user

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

+ 2 - 2
bin/v-backup-users

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

+ 8 - 3
bin/v-change-cron-job

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

+ 2 - 2
bin/v-change-database-host-password

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

+ 6 - 7
bin/v-change-database-owner

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

+ 2 - 2
bin/v-change-database-password

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

+ 2 - 2
bin/v-change-database-user

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

+ 2 - 2
bin/v-change-dns-domain-exp

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

+ 2 - 2
bin/v-change-dns-domain-ip

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

+ 2 - 2
bin/v-change-dns-domain-soa

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

+ 38 - 8
bin/v-change-dns-domain-tpl

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

+ 2 - 2
bin/v-change-dns-domain-ttl

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

+ 13 - 5
bin/v-change-dns-record

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

+ 2 - 2
bin/v-change-dns-record-id

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

+ 6 - 14
bin/v-change-domain-owner

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

+ 9 - 4
bin/v-change-firewall-rule

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

+ 3 - 3
bin/v-change-fs-file-permission

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

+ 3 - 3
bin/v-change-mail-account-password

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

+ 3 - 3
bin/v-change-mail-account-quota

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

+ 2 - 2
bin/v-change-mail-domain-catchall

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

+ 1 - 1
bin/v-change-remote-dns-domain-exp

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

+ 1 - 1
bin/v-change-remote-dns-domain-soa

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

+ 1 - 1
bin/v-change-remote-dns-domain-ttl

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

+ 2 - 2
bin/v-change-sys-config-value

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

+ 2 - 2
bin/v-change-sys-hostname

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

+ 4 - 6
bin/v-change-sys-ip-name

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

+ 4 - 6
bin/v-change-sys-ip-nat

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

+ 3 - 4
bin/v-change-sys-ip-owner

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

+ 5 - 10
bin/v-change-sys-ip-status

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

+ 3 - 3
bin/v-change-sys-language

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

+ 2 - 2
bin/v-change-sys-timezone

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

+ 2 - 2
bin/v-change-user-contact

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

+ 4 - 4
bin/v-change-user-language

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

+ 2 - 2
bin/v-change-user-name

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

+ 8 - 8
bin/v-change-user-ns

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

+ 11 - 30
bin/v-change-user-package

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

+ 3 - 3
bin/v-change-user-password

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

+ 2 - 2
bin/v-change-user-shell

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

+ 4 - 4
bin/v-change-user-template

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

+ 35 - 48
bin/v-change-web-domain-backend-tpl

@@ -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)
-
-        # Deleting old vhost
-        tpl_file="$WEBTPL/$WEB_SYSTEM/$WEB_BACKEND/$TPL.tpl"
-        conf="$HOMEDIR/$user/conf/web/$WEB_SYSTEM.conf"
-        del_web_config
+        local_ip=$(get_real_ip $IP)
+        prepare_web_domain_values
 
-        # 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

+ 3 - 3
bin/v-change-web-domain-ftp-password

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

+ 4 - 4
bin/v-change-web-domain-ftp-path

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

+ 3 - 3
bin/v-change-web-domain-httpauth

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

+ 21 - 28
bin/v-change-web-domain-ip

@@ -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
+if [[ "$domain" = *[![:ascii:]]* ]]; then
+    domain_idn=$(idn -t --quiet -a $domain)
+else
+    domain_idn=$domain
+fi
+
 
-# Checking SSL
+# Replacing vhost
+replace_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"
-    replace_web_config
+    replace_web_config "$WEB_SYSTEM" "$TPL.stpl"
 fi
 
-# Checking proxy
+# Replacing proxy vhost
 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
+    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

+ 10 - 27
bin/v-change-web-domain-proxy-tpl

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

+ 2 - 2
bin/v-change-web-domain-sslcert

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

+ 5 - 9
bin/v-change-web-domain-sslhome

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

+ 4 - 6
bin/v-change-web-domain-stats

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

+ 9 - 35
bin/v-change-web-domain-tpl

@@ -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 - 0
bin/v-check-letsencrypt-domain

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

+ 31 - 14
bin/v-check-user-password

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

Некоторые файлы не были показаны из-за большого количества измененных файлов