From bee8009b4b8cfa433552bacb6ea9bf8795bdf5b8 Mon Sep 17 00:00:00 2001 From: Serghey Rodin Date: Tue, 14 Feb 2012 18:41:09 +0200 Subject: [PATCH] New config path. New permission policy. Improved rebuild scripts. --- bin/v_add_cron_job | 2 + bin/v_add_db_base | 3 +- bin/v_add_dns_domain | 8 +- bin/v_add_user | 42 ++++++--- bin/v_add_web_domain | 7 +- bin/v_add_web_domain_nginx | 14 ++- bin/v_add_web_domain_ssl | 19 ++-- bin/v_add_web_domain_stat | 2 +- bin/v_backup_user | 1 + bin/v_delete_dns_domain | 6 +- bin/v_rebuild_dns_domains | 11 ++- bin/v_rebuild_web_domains | 69 ++++++++++++--- bin/v_restart_cron | 4 +- bin/v_restart_dns | 6 +- bin/v_restart_web | 10 ++- bin/v_restore_user | 162 +++++++++++++++++++++++++++++++++++ bin/v_update_user_bill | 4 +- bin/v_update_web_domain_stat | 2 +- conf/vars.conf | 1 + func/domain.func | 10 +-- func/shared.func | 2 +- 21 files changed, 323 insertions(+), 62 deletions(-) create mode 100755 bin/v_restore_user diff --git a/bin/v_add_cron_job b/bin/v_add_cron_job index e7bbec07..1879e8c2 100755 --- a/bin/v_add_cron_job +++ b/bin/v_add_cron_job @@ -67,6 +67,8 @@ v_str="$v_str' WDAY='$wday' CMD='$command' SUSPEND='no' DATE='$V_DATE'" # Adding to crontab echo "$v_str">>$V_USERS/$user/cron.conf +chmod 660 $V_USERS/$user/cron.conf + # Sorting jobs by id sort_cron_jobs diff --git a/bin/v_add_db_base b/bin/v_add_db_base index 896ec90c..60abd634 100755 --- a/bin/v_add_db_base +++ b/bin/v_add_db_base @@ -90,7 +90,8 @@ increase_user_value "$user" '$U_DATABASES' # Adding db to db conf v_str="DB='$database' USER='$db_user' HOST='$host' TYPE='$type'" v_str="$v_str CHARSET='$encoding' U_DISK='0' SUSPEND='no' DATE='$V_DATE'" -echo "$v_str">>$V_USERS/$user/db.conf +echo "$v_str" >> $V_USERS/$user/db.conf +chmod 660 $V_USERS/$user/db.conf # Hiding password V_EVENT="$V_DATE $V_SCRIPT $user $database $db_user ***** $type $host" diff --git a/bin/v_add_dns_domain b/bin/v_add_dns_domain index 537bc2fe..166c6d62 100755 --- a/bin/v_add_dns_domain +++ b/bin/v_add_dns_domain @@ -103,14 +103,20 @@ cat $V_DNSTPL/$template.tpl |\ dns_rec="DOMAIN='$domain' IP='$ip' TPL='$template' TTL='$ttl' EXP='$exp'" dns_rec="$dns_rec SOA='$soa' SUSPEND='no' DATE='$V_DATE'" echo "$dns_rec" >> $V_USERS/$user/dns.conf +chmod 660 $V_USERS/$user/dns.conf # Adding zone in named.conf -named="zone \"$domain_idn\" {type master; file \"/etc/namedb/$domain.db\";};" +named="zone \"$domain_idn\" {type master; file" +named="$named \"$V_HOME/$user/conf/dns/$domain.db\";};" echo "$named" >> /etc/named.conf # Updating domain dns zone +conf="$V_HOME/$user/conf/dns/$domain.db" update_domain_zone +chmod 640 $conf +chown root:named $conf + #----------------------------------------------------------# # Vesta # diff --git a/bin/v_add_user b/bin/v_add_user index 1a2ed3ad..4e12584d 100755 --- a/bin/v_add_user +++ b/bin/v_add_user @@ -75,26 +75,32 @@ esac echo "$password" | /usr/bin/passwd "$user" --stdin >/dev/null 2>&1 # Building directory tree -if [ ! -z "$BACKUP_SYSTEM" ] && [ "$BACKUP_SYSTEM" != 'no' ]; then - mkdir $V_HOME/$user/backup - chmod 751 $V_HOME/$user/backup -fi +mkdir $V_HOME/$user/conf +chmod 751 $V_HOME/$user/conf/web if [ ! -z "$WEB_SYSTEM" ] && [ "$WEB_SYSTEM" != 'no' ]; then - mkdir $V_HOME/$user/conf + mkdir $V_HOME/$user/conf/web mkdir $V_HOME/$user/web mkdir $V_HOME/$user/tmp - chmod 751 $V_HOME/$user/conf + chmod 751 $V_HOME/$user/conf/web chmod 751 $V_HOME/$user/web chmod 777 $V_HOME/$user/tmp chown $user:$user $V_HOME/$user/web fi if [ ! -z "$MAIL_SYSTEM" ] && [ "$MAIL_SYSTEM" != 'no' ]; then + mkdir $V_HOME/$user/conf/mail mkdir $V_HOME/$user/mail chmod 751 $V_HOME/$user/mail + chmod 751 $V_HOME/$user/conf/mail +fi + +if [ ! -z "$DNS_SYSTEM" ] && [ "$DNS_SYSTEM" != 'no' ]; then + mkdir $V_HOME/$user/conf/dns + chmod 751 $V_HOME/$user/conf/dns fi + # Set permissions chmod -R a+x $V_HOME/$user @@ -111,36 +117,51 @@ fi # Adding user dir mkdir $V_USERS/$user +chmod 770 $V_USERS/$user # Creating configuration files and pipes -touch $V_USERS/$user/user.conf +touch $V_USERS/$user/backup.conf +chmod 660 $V_USERS/$user/backup.conf +touch $V_USERS/$user/history.log +chmod 660 $V_USERS/$user/history.log +touch $V_USERS/$user/billing.log +chmod 660 $V_USERS/$user/billing.log + echo "v_update_user_disk $user" >> $V_QUEUE/disk.pipe if [ ! -z "$WEB_SYSTEM" ] && [ "$WEB_SYSTEM" != 'no' ]; then mkdir $V_USERS/$user/ssl + chmod 770 $V_USERS/$user/ssl touch $V_USERS/$user/web.conf + chmod 660 $V_USERS/$user/web.conf echo "$V_BIN/v_update_web_domains_traff $user" >> $V_QUEUE/traffic.pipe echo "v_update_web_domains_disk $user" >> $V_QUEUE/disk.pipe fi if [ ! -z "$DNS_SYSTEM" ] && [ "$DNS_SYSTEM" != 'no' ]; then - touch $V_USERS/$user/dns.conf mkdir $V_USERS/$user/dns + chmod 770 $V_USERS/$user/dns + touch $V_USERS/$user/dns.conf + chmod 660 $V_USERS/$user/dns.conf fi if [ ! -z "$MAIL_SYSTEM" ] && [ "$MAIL_SYSTEM" != 'no' ]; then - touch $V_USERS/$user/mail_domains.conf - touch $V_USERS/$user/mail_boxes.conf + mkdir $V_USERS/$user/mail + chmod 770 $V_USERS/$user/mail + touch $V_USERS/$user/mail.conf + chmod 660 $V_USERS/$user/mail.conf echo "v_upd_mail_domains_disk $user" >> $V_QUEUE/disk.pipe fi if [ ! -z "$DB_SYSTEM" ] && [ "$DB_SYSTEM" != 'no' ]; then touch $V_USERS/$user/db.conf + chmod 660 $V_USERS/$user/db.conf echo "v_update_db_bases_disk $user" >> $V_QUEUE/disk.pipe fi if [ ! -z "$CRON_SYSTEM" ] && [ "$CRON_SYSTEM" != 'no' ]; then touch $V_USERS/$user/cron.conf + chmod 660 $V_USERS/$user/cron.conf fi # Filling user config @@ -163,6 +184,7 @@ U_DATABASES='0' U_MAIL_DOMAINS='0' U_CRON_JOBS='0' DATE='$V_DATE'" > $V_USERS/$user/user.conf +chmod 660 $V_USERS/$user/user.conf # Hiding password V_EVENT="$V_DATE $V_SCRIPT $user ***** $email $package $fname $lname" diff --git a/bin/v_add_web_domain b/bin/v_add_web_domain index aa7aec50..16adf40c 100755 --- a/bin/v_add_web_domain +++ b/bin/v_add_web_domain @@ -99,7 +99,7 @@ email="$user@$domain" docroot="$V_HOME/$user/web/$domain/public_html" docroot_string="DocumentRoot $docroot" -conf="$V_HOME/$user/conf/httpd.conf" +conf="$V_HOME/$user/conf/web/httpd.conf" tpl_file="$V_WEBTPL/apache_$template.tpl" # Parsing template keys @@ -167,8 +167,10 @@ done # Changing file owner chown -R $user:$user $V_HOME/$user/web/$domain chown root:$user /var/log/httpd/domains/$domain.* +chown root:apache $conf # Changing file permissions +chmod 640 $conf chmod 551 $V_HOME/$user/web/$domain chmod 751 $V_HOME/$user/web/$domain/private chmod 751 $V_HOME/$user/web/$domain/cgi-bin @@ -218,7 +220,8 @@ v_str="$v_str SSL='no' SSL_HOME='single'" v_str="$v_str NGINX='' NGINX_EXT='' SUSPEND='no' DATE='$V_DATE'" # Registering domain -echo "$v_str" >>$V_USERS/$user/web.conf +echo "$v_str" >> $V_USERS/$user/web.conf +chmod 660 $V_USERS/$user/web.conf # Adding task to the vesta pipe restart_schedule 'web' diff --git a/bin/v_add_web_domain_nginx b/bin/v_add_web_domain_nginx index 342e7820..f18c40ae 100755 --- a/bin/v_add_web_domain_nginx +++ b/bin/v_add_web_domain_nginx @@ -67,12 +67,16 @@ get_web_domain_values NGINX="$template" NGINX_EXT="$extentions" tpl_file="$V_WEBTPL/ngingx_vhost_$NGINX.tpl" -conf="$V_HOME/$user/conf/nginx.conf" +conf="$V_HOME/$user/conf/web/nginx.conf" # Preparing domain values for the template substitution upd_web_domain_values add_web_config +# Set permission and ownership +chown root:nginx $conf +chmod 640 $conf + # Checking main vesta httpd config main_conf='/etc/nginx/conf.d/vesta_users.conf' main_conf_check=$(grep "$conf" $main_conf ) @@ -80,13 +84,16 @@ if [ -z "$main_conf_check" ]; then echo "include $conf;" >>$main_conf fi - +# Checking ssl if [ "$SSL" = 'yes' ]; then proxy_string="proxy_pass https://$ip:$WEB_SSL_PORT;" tpl_file="$V_WEBTPL/ngingx_vhost_$NGINX.stpl" - conf="$V_HOME/$user/conf/snginx.conf" + conf="$V_HOME/$user/conf/web/snginx.conf" add_web_config + chown root:nginx $conf + chmod 640 $conf + main_conf='/etc/nginx/conf.d/vesta_users.conf' main_conf_check=$(grep "$conf" $main_conf ) if [ -z "$main_conf_check" ]; then @@ -95,6 +102,7 @@ if [ "$SSL" = 'yes' ]; then fi + #----------------------------------------------------------# # Vesta # #----------------------------------------------------------# diff --git a/bin/v_add_web_domain_ssl b/bin/v_add_web_domain_ssl index 228070af..b4840bee 100755 --- a/bin/v_add_web_domain_ssl +++ b/bin/v_add_web_domain_ssl @@ -76,10 +76,11 @@ if [ -e "$ssl_dir/$domain.ca" ]; then cp -f $ssl_dir/$domain.ca $V_USERS/$user/ssl/$domain.ca cat $V_USERS/$user/ssl/$domain.ca >> $V_USERS/$user/ssl/$domain.pem fi +chmod 660 $V_USERS/$user/ssl/$domain.* # Parsing domain values get_web_domain_values -conf="$V_HOME/$user/conf/shttpd.conf" +conf="$V_HOME/$user/conf/web/shttpd.conf" tpl_file="$V_WEBTPL/apache_$TPL.stpl" SSL_HOME="$ssl_home" @@ -92,12 +93,15 @@ upd_web_domain_values # Adding domain to the shttpd.conf add_web_config +chown root:apache $conf +chmod 640 $conf + # Adding certificate to user dir -cp -f $V_USERS/$user/ssl/$domain.crt $V_HOME/$user/conf/ssl.$domain.crt -cp -f $V_USERS/$user/ssl/$domain.key $V_HOME/$user/conf/ssl.$domain.key -cp -f $V_USERS/$user/ssl/$domain.pem $V_HOME/$user/conf/ssl.$domain.pem +cp -f $V_USERS/$user/ssl/$domain.crt $V_HOME/$user/conf/web/ssl.$domain.crt +cp -f $V_USERS/$user/ssl/$domain.key $V_HOME/$user/conf/web/ssl.$domain.key +cp -f $V_USERS/$user/ssl/$domain.pem $V_HOME/$user/conf/web/ssl.$domain.pem if [ -e "$V_USERS/$user/ssl/$domain.ca" ]; then - cp -f $V_USERS/$user/ssl/$domain.ca $V_HOME/$user/conf/ssl.$domain.ca + cp -f $V_USERS/$user/ssl/$domain.ca $V_HOME/$user/conf/web/ssl.$domain.ca fi # Running template trigger @@ -115,10 +119,13 @@ fi # Checking nginx if [ ! -z "$NGINX" ]; then # Adding domain to the snginx.conf - conf="$V_HOME/$user/conf/snginx.conf" + conf="$V_HOME/$user/conf/web/snginx.conf" tpl_file="$V_WEBTPL/ngingx_vhost_$NGINX.stpl" add_web_config + chown root:nginx $conf + chmod 640 $conf + # Checking vesta nginx config main_conf='/etc/nginx/conf.d/vesta_users.conf' main_conf_check=$(grep "$conf" $main_conf ) diff --git a/bin/v_add_web_domain_stat b/bin/v_add_web_domain_stat index c6889f0f..179693ab 100755 --- a/bin/v_add_web_domain_stat +++ b/bin/v_add_web_domain_stat @@ -81,7 +81,7 @@ cat $V_WEBTPL/$type.tpl |\ -e "s/%home%/${V_HOME////\/}/g" \ -e "s/%alias%/${aliases//,/ }/g" \ -e "s/%alias_idn%/${aliases_idn//,/ }/g" \ - > $V_HOME/$user/conf/$type.$domain.conf + > $V_HOME/$user/conf/web/$type.$domain.conf #----------------------------------------------------------# diff --git a/bin/v_backup_user b/bin/v_backup_user index d753feb1..f3a79eda 100755 --- a/bin/v_backup_user +++ b/bin/v_backup_user @@ -503,6 +503,7 @@ backup_str="$backup_str MAIL='${mail_list// /,}'" backup_str="$backup_str DB='${db_list// /,}'" backup_str="$backup_str CRON='$cron_list'" echo "$backup_str" >> $V_USERS/$user/backup.conf +chmod 660 $V_USERS/$user/backup.conf # Logging log_event 'system' "$V_EVENT" diff --git a/bin/v_delete_dns_domain b/bin/v_delete_dns_domain index 090dffc0..d04ecd5a 100755 --- a/bin/v_delete_dns_domain +++ b/bin/v_delete_dns_domain @@ -54,13 +54,13 @@ tpl_name=$(get_dns_domain_value '$TPL') old_ip=$(get_dns_domain_value '$IP') # Deleting domain in named.conf -rm_string=$(grep -n /etc/namedb/$domain.db $named_conf|cut -d : -f 1) +rm_string=$(grep -n /conf/dns/$domain.db $named_conf |cut -d : -f 1) if [ ! -z "$rm_string" ]; then sed -i "$rm_string d" $named_conf fi -if [ -e "/etc/namedb/$domain.db" ]; then - rm -f /etc/namedb/$domain.db +if [ -e "$V_HOME/$user/conf/dns/$domain.db" ]; then + rm -f $V_HOME/$user/conf/dns/$domain.db fi diff --git a/bin/v_rebuild_dns_domains b/bin/v_rebuild_dns_domains index b351b102..53accc39 100755 --- a/bin/v_rebuild_dns_domains +++ b/bin/v_rebuild_dns_domains @@ -103,8 +103,12 @@ for domain in $domains; do sort_dns_records # Updating zone + conf="$V_HOME/$user/conf/dns/$domain.db" update_domain_zone + chmod 640 $conf + chown root:named $conf + # Bind config check nconf='/etc/named.conf' @@ -114,10 +118,9 @@ for domain in $domains; do sed -i "$rm_string d" $nconf fi else - check_string=$(grep /etc/namedb/$domain.db $nconf) - if [ -z "$check_string" ]; then - named="zone \"$domain_idn\"" - named="$named {type master; file \"/etc/namedb/$domain.db\";};" + if [ -z "$(grep /$domain.db $nconf)" ]; then + named="zone \"$domain_idn\" {type master; file" + named="$named \"$V_HOME/$user/conf/dns/$domain.db\";};" echo "$named" >> /etc/named.conf fi fi diff --git a/bin/v_rebuild_web_domains b/bin/v_rebuild_web_domains index ee0a45e0..8f17b11a 100755 --- a/bin/v_rebuild_web_domains +++ b/bin/v_rebuild_web_domains @@ -65,20 +65,58 @@ for domain in $(shell_list) ; do # Adding domain to the tmp_httpd.conf tpl_file="$V_WEBTPL/apache_$TPL.tpl" - conf="$V_HOME/$user/conf/tmp_httpd.conf" + conf="$V_HOME/$user/conf/web/tmp_httpd.conf" add_web_config + chown root:apache $conf + chmod 640 $conf # Running template trigger if [ -x $V_WEBTPL/apache_$TPL.sh ]; then $V_WEBTPL/apache_$TPL.sh $user $domain $ip $V_HOME $docroot fi + # Checking stats + if [ ! -z "$STATS" ]; then + cat $V_WEBTPL/$STATS.tpl |\ + sed -e "s/%ip%/$ip/g" \ + -e "s/%web_port%/$WEB_PORT/g" \ + -e "s/%web_ssl_port%/$WEB_SSL_PORT/g" \ + -e "s/%proxy_port%/$PROXY_PORT/g" \ + -e "s/%proxy_ssl_port%/$PROXY_SSL_PORT/g" \ + -e "s/%domain_idn%/$domain_idn/g" \ + -e "s/%domain%/$domain/g" \ + -e "s/%user%/$user/g" \ + -e "s/%home%/${V_HOME////\/}/g" \ + -e "s/%alias%/${aliases//,/ }/g" \ + -e "s/%alias_idn%/${aliases_idn//,/ }/g" \ + > $V_HOME/$user/conf/web/$STATS.$domain.conf + + stats_string="$V_BIN/v_update_web_domain_stat $user $domain" + check_stats_pipe=$(grep "$stats_string" $V_QUEUE/stats.pipe) + if [ -z "$check_stats_pipe" ]; then + echo "$stats_string" >> $V_QUEUE/stats.pipe + fi + fi + # Checking ssl if [ "$SSL" = 'yes' ]; then # Adding domain to the shttpd.conf - conf="$V_HOME/$user/conf/tmp_shttpd.conf" + conf="$V_HOME/$user/conf/web/tmp_shttpd.conf" tpl_file="$V_WEBTPL/apache_$TPL.stpl" add_web_config + chown root:apache $conf + chmod 640 $conf + + cp -f $V_USERS/$user/ssl/$domain.crt \ + $V_HOME/$user/conf/web/ssl.$domain.crt + cp -f $V_USERS/$user/ssl/$domain.key \ + $V_HOME/$user/conf/web/ssl.$domain.key + cp -f $V_USERS/$user/ssl/$domain.pem \ + $V_HOME/$user/conf/web/ssl.$domain.pem + if [ -e "$V_USERS/$user/ssl/$domain.ca" ]; then + cp -f $V_USERS/$user/ssl/$domain.ca \ + $V_HOME/$user/conf/web/ssl.$domain.ca + fi # Running template trigger if [ -x $V_WEBTPL/apache_$TPL.sh ]; then @@ -91,8 +129,10 @@ for domain in $(shell_list) ; do # Checking nginx if [ ! -z "$NGINX" ]; then tpl_file="$V_WEBTPL/ngingx_vhost_$NGINX.tpl" - conf="$V_HOME/$user/conf/tmp_nginx.conf" + conf="$V_HOME/$user/conf/web/tmp_nginx.conf" add_web_config + chown root:nginx $conf + chmod 640 $conf if [ "$SSL" = 'yes' ]; then if [ "$SUSPEND" = 'yes' ]; then @@ -102,16 +142,18 @@ for domain in $(shell_list) ; do fi tpl_file="$V_WEBTPL/ngingx_vhost_$NGINX.stpl" - conf="$V_HOME/$user/conf/tmp_snginx.conf" + conf="$V_HOME/$user/conf/web/tmp_snginx.conf" add_web_config + chown root:nginx $conf + chmod 640 $conf fi ngix_change='yes' fi done # Renaming tmp config -tmp_conf="$V_HOME/$user/conf/tmp_httpd.conf" -conf="$V_HOME/$user/conf/httpd.conf" +tmp_conf="$V_HOME/$user/conf/web/tmp_httpd.conf" +conf="$V_HOME/$user/conf/web/httpd.conf" if [ -e "$tmp_conf" ]; then mv $tmp_conf $conf fi @@ -119,14 +161,14 @@ fi # Checking include in main httpd.conf main_conf='/etc/httpd/conf.d/vesta.conf' main_conf_check=$(grep "$conf" $main_conf ) -if [ ! -z "$domains" ] && [ -z "$main_conf_check" ]; then +if [ ! -z "$domain" ] && [ -z "$main_conf_check" ]; then echo "Include $conf" >>$main_conf fi # Checking ssl if [ "$ssl_change" = 'yes' ]; then - tmp_conf="$V_HOME/$user/conf/tmp_shttpd.conf" - conf="$V_HOME/$user/conf/shttpd.conf" + tmp_conf="$V_HOME/$user/conf/web/tmp_shttpd.conf" + conf="$V_HOME/$user/conf/web/shttpd.conf" mv $tmp_conf $conf # Checking include in main httpd.conf @@ -139,11 +181,10 @@ fi # Checking nginx if [ "$ngix_change" = 'yes' ]; then nginx_conf='/etc/nginx/conf.d/vesta_users.conf' - tmp_conf="$V_HOME/$user/conf/tmp_nginx.conf" - conf="$V_HOME/$user/conf/nginx.conf" + tmp_conf="$V_HOME/$user/conf/web/tmp_nginx.conf" + conf="$V_HOME/$user/conf/web/nginx.conf" mv $tmp_conf $conf - nginx_conf_check=$(grep "$conf" $nginx_conf ) if [ -z "$nginx_conf_check" ]; then echo "include $conf;" >>$nginx_conf @@ -151,8 +192,8 @@ if [ "$ngix_change" = 'yes' ]; then # Checking ssl for nginx if [ "$ssl_change" = 'yes' ]; then - tmp_conf="$V_HOME/$user/conf/tmp_snginx.conf" - conf="$V_HOME/$user/conf/snginx.conf" + tmp_conf="$V_HOME/$user/conf/web/tmp_snginx.conf" + conf="$V_HOME/$user/conf/web/snginx.conf" mv $tmp_conf $conf nginx_conf_check=$(grep "$conf" $nginx_conf ) if [ -z "$nginx_conf_check" ]; then diff --git a/bin/v_restart_cron b/bin/v_restart_cron index cf1e7582..9361baa0 100755 --- a/bin/v_restart_cron +++ b/bin/v_restart_cron @@ -22,8 +22,8 @@ source $V_CONF/vesta.conf if [ "$CRON_SYSTEM" = 'crond' ]; then /etc/init.d/crond 'reload' >/dev/null 2>&1 if [ $? -ne 0 ]; then - echo "$E_PARSING $V_EVENT" - exit $E_PARSING + echo "$E_RESTART $1" + exit $E_RESTART fi fi diff --git a/bin/v_restart_dns b/bin/v_restart_dns index 1f3cd75a..7816b1df 100755 --- a/bin/v_restart_dns +++ b/bin/v_restart_dns @@ -11,7 +11,8 @@ # Importing variables source /etc/profile.d/vesta.sh -source $VESTA/conf/vesta.conf +source $VESTA/conf/vars.conf +source $V_CONF/vesta.conf #----------------------------------------------------------# @@ -22,7 +23,8 @@ if [ "$DNS_SYSTEM" = 'bind' ]; then /etc/init.d/named reload >/dev/null 2>&1 if [ $? -ne 0 ]; then #$V_FUNC/report_issue 'sys' 'cron' - echo "$E_RESTART_FAILED $V_EVENT" + echo "$E_RESTART $1" + exit $E_RESTART fi fi diff --git a/bin/v_restart_web b/bin/v_restart_web index a7aef160..d24cbcd9 100755 --- a/bin/v_restart_web +++ b/bin/v_restart_web @@ -18,7 +18,8 @@ apache() { /etc/init.d/httpd 'graceful' >/dev/null 2>&1 if [ $? -ne 0 ]; then #$V_FUNC/report_issue 'web' 'apache' - echo "$E_RESTART_FAILED $V_EVENT" + echo "$E_RESTART $1" + exit $E_RESTART fi } @@ -26,7 +27,8 @@ nginx() { /etc/init.d/nginx 'reload' >/dev/null 2>&1 if [ $? -ne 0 ]; then #$V_FUNC/report_issue 'web' 'nginx' - echo "$E_RESTART_FAILED $V_EVENT" + echo "$E_RESTART $1" + exit $E_RESTART fi } @@ -37,11 +39,11 @@ nginx() { # Checking system if [ "$WEB_SYSTEM" = 'apache' ]; then - apache + apache $1 fi if [ "$PROXY_SYSTEM" = 'nginx' ]; then - nginx + nginx $1 fi diff --git a/bin/v_restore_user b/bin/v_restore_user new file mode 100755 index 00000000..c46fe562 --- /dev/null +++ b/bin/v_restore_user @@ -0,0 +1,162 @@ +#!/bin/bash +# info: restore user +# options: user backup +# +# The function for resotring user from backup. + + +#----------------------------------------------------------# +# Variable&Function # +#----------------------------------------------------------# + +# Argument defenition +user=$1 +backup=$2 + +# Importing variables +source $VESTA/conf/vars.conf +source $V_CONF/vesta.conf +source $V_FUNC/shared.func +source $V_FUNC/domain.func +source $V_FUNC/db.func + +# Defining ftp command function +ftpc() { + ftp -n $HOST $PORT <> /dev/null 2>/dev/null + echo "$(date "+%F %T") Downloaded $user.$backup.tar" + fi + fi +fi + +if [ ! -e "$V_BACKUP/$user.$backup.tar" ]; then + echo "Error: $V_BACKUP/$user.$backup.tar backup not found" + log_event 'debug' "$E_NOTEXIST $V_EVENT" + exit $E_NOTEXIST +fi + +# Checking arguments +if [ -z "$3" ]; then + # Define full backup variables + VESTA='yes' + PAM='yes' + WEB='yes' + DNS='yes' + DB='yes' + MAIL='yes' + SSL='yes' + CRON='yes' +else + args=("$@") + for (( i=2; i<${#@}; i++)); do + key=$(echo ${args[$i]} | cut -f 1 -d :| tr '[:lower:]' '[:upper:]') + opt=$(echo ${args[$i]} | cut -f 2 -d :) + if [ -z "$(echo ${args[$i]} |grep :)" ]; then + eval $key='yes' + else + eval $key='opt' + eval ${key}_OPT=$opt + fi + done +fi + + +#----------------------------------------------------------# +# Action # +#----------------------------------------------------------# + +# Creating temporary directory +tmpdir=$(mktemp -p $V_BACKUP -d) +echo "TMPDIR is $tmpdir" +cd $tmpdir +echo "$(date "+%F %T") Extracting files from backup" +tar -xf $V_BACKUP/$user.$backup.tar +echo "$(date "+%F %T") Backup has been unpacked" + +# Checking Vesta + + + +#----------------------------------------------------------# +# Vesta # +#----------------------------------------------------------# + +# Logging +log_event 'system' "$V_EVENT" + +exit diff --git a/bin/v_update_user_bill b/bin/v_update_user_bill index 1f397809..04b5e552 100755 --- a/bin/v_update_user_bill +++ b/bin/v_update_user_bill @@ -129,7 +129,8 @@ for user in $user_list; do check_month=$(grep -n "DATE='$DATE'" $billing|cut -f 1 -d :) if [ -z "$check_month" ]; then # Updating as there no dublicates - echo "$v_str" >>$billing + echo "$v_str" >> $billing + chmod 660 $billing else # Replacing string with new data sed -i "$check_month s/.*/$v_str/" $billing @@ -137,6 +138,7 @@ for user in $user_list; do else # Creating billing log echo "$v_str" >$billing + chmod 660 $billing fi done diff --git a/bin/v_update_web_domain_stat b/bin/v_update_web_domain_stat index 7f1d0b08..13ec1db8 100755 --- a/bin/v_update_web_domain_stat +++ b/bin/v_update_web_domain_stat @@ -54,7 +54,7 @@ is_web_domain_value_exist '$STATS' stats=$(get_web_domain_value '$STATS') # Checking config -config="$V_HOME/$user/conf/$stats.$domain.conf" +config="$V_HOME/$user/conf/web/$stats.$domain.conf" if [ ! -e "$config" ]; then echo "Error: Parsing error" log_event 'debug' "$E_PARSING $V_EVENT" diff --git a/conf/vars.conf b/conf/vars.conf index 9050b680..ffc6d1d6 100644 --- a/conf/vars.conf +++ b/conf/vars.conf @@ -52,3 +52,4 @@ E_SSH=16 E_DB=17 E_RRD=18 E_UPDATE=19 +E_RESTART=20 diff --git a/func/domain.func b/func/domain.func index 20bc1012..c0da8ba1 100644 --- a/func/domain.func +++ b/func/domain.func @@ -136,7 +136,6 @@ update_domain_zone() { # Definigng variables line=$(grep "DOMAIN='$domain'" $V_USERS/$user/dns.conf) fields='$RECORD\t$TTL\tIN\t$TYPE\t$VALUE' - conf="/etc/namedb/$domain.db" # Checking serial if [ -e $conf ]; then @@ -187,7 +186,6 @@ update_domain_zone() { VALUE=$(idn --quiet -a -t "$VALUE") eval echo -e "\"$fields\""|sed -e "s/%quote%/'/g" >> $conf done < $V_USERS/$user/dns/$domain - } get_next_dns_record() { @@ -749,10 +747,10 @@ upd_web_domain_values() { fi # Defining SSL vars - ssl_crt="$V_HOME/$user/conf/ssl.$domain.crt" - ssl_key="$V_HOME/$user/conf/ssl.$domain.key" - ssl_pem="$V_HOME/$user/conf/ssl.$domain.pem" - ssl_ca="$V_HOME/$user/conf/ssl.$domain.ca" + ssl_crt="$V_HOME/$user/conf/web/ssl.$domain.crt" + ssl_key="$V_HOME/$user/conf/web/ssl.$domain.key" + ssl_pem="$V_HOME/$user/conf/web/ssl.$domain.pem" + ssl_ca="$V_HOME/$user/conf/web/ssl.$domain.ca" if [ ! -e "$V_USERS/$user/ssl/$domain.ca" ]; then ssl_ca_str='#' fi diff --git a/func/shared.func b/func/shared.func index 1eb1927c..e3c0a320 100644 --- a/func/shared.func +++ b/func/shared.func @@ -675,7 +675,7 @@ get_user_value() { restart_schedule() { type="$1" if [ -z "$RESTART_PERIOD" ]; then - $V_BIN/v_restart_"$type" + $V_BIN/v_restart_"$type" "$V_EVENT" else echo "$type" >> $V_QUEUE/restart.pipe fi