v_add_web_domain 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207
  1. #!/bin/bash
  2. # info: adding web domain
  3. #----------------------------------------------------------#
  4. # Variable&Function #
  5. #----------------------------------------------------------#
  6. # Argument defenition
  7. user="$1"
  8. domain=$(idn -t --quiet -u "$2" )
  9. domain_idn=$(idn -t --quiet -a "$domain")
  10. ip="$3"
  11. template=${4-default}
  12. # Importing variables
  13. source $VESTA/conf/vars.conf
  14. source $V_FUNC/shared_func.sh
  15. source $V_FUNC/domain_func.sh
  16. source $V_FUNC/ip_func.sh
  17. #----------------------------------------------------------#
  18. # Verifications #
  19. #----------------------------------------------------------#
  20. # Checking arg number
  21. check_args '3' "$#" 'user domain ip [template]'
  22. # Checking argument format
  23. format_validation 'user' 'domain' 'ip' 'template'
  24. # Checking web system is enabled
  25. is_system_enabled 'web'
  26. # Checking user
  27. is_user_valid
  28. # Checking user is active
  29. is_user_suspended
  30. # Checking domain
  31. is_domain_new 'quiet'
  32. if [ $? -ne $OK ]; then
  33. # Checking domain owner
  34. is_domain_owner
  35. # Checking domain service
  36. is_web_domain_free
  37. fi
  38. # Checking ip
  39. is_ip_avalable
  40. # Checking package
  41. is_package_full 'web_domain'
  42. # Checking template
  43. templates=$(get_user_value '$WEB_TPL')
  44. is_template_valid "web"
  45. #----------------------------------------------------------#
  46. # Action #
  47. #----------------------------------------------------------#
  48. # Defining domain aliases
  49. ip_name=$(get_ip_name)
  50. ip_name_idn=$(idn -t --quiet -a "$ip_name")
  51. domain_alias="www.$domain"
  52. domain_alias_idn="www.$domain_idn"
  53. if [ ! -z "$ip_name" ]; then
  54. domain_alias_dash="${domain//./-}.$ip_name"
  55. domain_alias_dash_idn="${domain_idn//./-}.$ip_name_idn"
  56. aliases="$domain_alias,$domain_alias_dash"
  57. aliases_idn="$domain_alias_idn,$domain_alias_dash_idn"
  58. else
  59. aliases="$domain_alias"
  60. aliases_idn="$domain_alias_idn"
  61. fi
  62. # Defining vars for add_config function
  63. web_port=$(get_config_value '$WEB_PORT')
  64. group="$user"
  65. email="$user@$domain"
  66. docroot="$V_HOME/$user/web/$domain/public_html"
  67. conf="$V_HOME/$user/conf/httpd.conf"
  68. tpl_file="$V_WEBTPL/apache_$template.tpl"
  69. # Parsing template keys
  70. template_data=$(cat $V_WEBTPL/apache_$template.descr|grep -v '#')
  71. for keys in $template_data; do
  72. eval ${keys%%=*}=${keys#*=}
  73. done
  74. # Checking error log status
  75. if [ "$ELOG" = 'no' ]; then
  76. elog=' #'
  77. else
  78. elog=' '
  79. fi
  80. # Adding domain to the httpd.conf
  81. add_web_config
  82. # Building directory tree
  83. mkdir $V_HOME/$user/web/$domain \
  84. $V_HOME/$user/web/$domain/public_html \
  85. $V_HOME/$user/web/$domain/public_shtml \
  86. $V_HOME/$user/web/$domain/document_errors \
  87. $V_HOME/$user/web/$domain/cgi-bin \
  88. $V_HOME/$user/web/$domain/private \
  89. $V_HOME/$user/web/$domain/stats \
  90. $V_HOME/$user/web/$domain/logs
  91. # Adding domain logs
  92. touch /var/log/httpd/domains/$domain.bytes \
  93. /var/log/httpd/domains/$domain.log \
  94. /var/log/httpd/domains/$domain.error.log
  95. # Adding symlink for logs
  96. ln -s /var/log/httpd/domains/$domain.*log $V_HOME/$user/web/$domain/logs/
  97. # Adding domain skeleton
  98. if [ -e "$V_WEBTPL/skel/public_html/" ]; then
  99. cp -r $V_WEBTPL/skel/public_html/ $V_HOME/$user/web/$domain/
  100. fi
  101. if [ -e "$V_WEBTPL/skel/public_shtml/" ]; then
  102. cp -r $V_WEBTPL/skel/public_shtml/ $V_HOME/$user/web/$domain/
  103. fi
  104. if [ -e "$V_WEBTPL/skel/document_errors/" ]; then
  105. cp -r $V_WEBTPL/skel/document_errors/ $V_HOME/$user/web/$domain/
  106. fi
  107. if [ -e "$V_WEBTPL/skel/cgi-bin/" ]; then
  108. cp -r $V_WEBTPL/skel/cgi-bin/ $V_HOME/$user/web/$domain/
  109. fi
  110. # Changing tpl values
  111. for file in $(find "$V_HOME/$user/web/$domain/" -type f); do
  112. sed -i "s/%domain%/$domain/g" $file
  113. done
  114. # Changing file owner
  115. chown -R $user:$user $V_HOME/$user/web/$domain
  116. chown root:$user /var/log/httpd/domains/$domain.*
  117. # Changing file permissions
  118. chmod 551 $V_HOME/$user/web/$domain
  119. chmod 751 $V_HOME/$user/web/$domain/private
  120. chmod 751 $V_HOME/$user/web/$domain/cgi-bin
  121. chmod 751 $V_HOME/$user/web/$domain/public_html
  122. chmod 751 $V_HOME/$user/web/$domain/public_shtml
  123. chmod 751 $V_HOME/$user/web/$domain/document_errors
  124. chmod -f -R 775 $V_HOME/$user/web/$domain/cgi-bin/*
  125. chmod -f -R 775 $V_HOME/$user/web/$domain/public_html/*
  126. chmod -f -R 775 $V_HOME/$user/web/$domain/document_errors/*
  127. chmod 551 $V_HOME/$user/web/$domain/stats
  128. chmod 551 $V_HOME/$user/web/$domain/logs
  129. chmod 640 /var/log/httpd/domains/$domain.*
  130. # Running template trigger
  131. if [ -x $V_WEBTPL/apache_$template.sh ]; then
  132. $V_WEBTPL/apache_$template.sh $user $domain $ip $V_HOME $docroot
  133. fi
  134. # Checking main vesta httpd config
  135. main_conf='/etc/httpd/conf.d/vesta.conf'
  136. main_conf_check=$(grep "$conf" $main_conf )
  137. if [ -z "$main_conf_check" ]; then
  138. echo "Include $conf" >>$main_conf
  139. fi
  140. #----------------------------------------------------------#
  141. # Vesta #
  142. #----------------------------------------------------------#
  143. # Increasing ip value
  144. increase_ip_value
  145. # Increasing domain value
  146. increase_user_value "$user" '$U_WEB_DOMAINS'
  147. # Defining domain variables
  148. v_str="DOMAIN='$domain'"
  149. v_str="$v_str IP='$ip'"
  150. v_str="$v_str U_DISK='0'"
  151. v_str="$v_str U_BANDWIDTH='0'"
  152. v_str="$v_str TPL='$template'"
  153. v_str="$v_str ALIAS='$aliases'"
  154. v_str="$v_str $template_data" # Inserting PHP,CGI and ELOG keys
  155. v_str="$v_str STATS='' STATS_AUTH=''"
  156. v_str="$v_str SSL_HOME='' SSL_CERT=''"
  157. v_str="$v_str NGINX='' NGINX_EXT='' SUSPEND='no' DATE='$V_DATE'"
  158. # Registering domain
  159. echo "$v_str" >>$V_USERS/$user/web.conf
  160. # Adding task to the vesta pipe
  161. restart_schedule 'web'
  162. # Logging
  163. log_history "$V_EVENT" "v_del_web_domain $user $domain"
  164. log_event 'system' "$V_EVENT"
  165. exit $OK