v-add-web-domain 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174
  1. #!/bin/bash
  2. # info: add web domain
  3. # options: USER DOMAIN [IP] [ALIASES] [PROXY_EXTENSIONS] [RESTART]
  4. #
  5. # The function adds virtual host to a server. In cases when ip is
  6. # undefined in the script, "default" template will be used. The alias of
  7. # www.domain.tld type will be automatically assigned to the domain unless
  8. # "none" is transmited as argument. If ip have associated dns name, this
  9. # domain will also get the alias domain-tpl.$ipname. An alias with the ip
  10. # name is useful during the site testing while dns isn't moved to server yet.
  11. #----------------------------------------------------------#
  12. # Variable&Function #
  13. #----------------------------------------------------------#
  14. # Argument definition
  15. user=$1
  16. domain=$2
  17. domain_idn=$2
  18. ip=$3
  19. restart=$4 # will be moved to the end soon
  20. aliases=$5
  21. proxy_ext=$6
  22. # Includes
  23. source $VESTA/func/main.sh
  24. source $VESTA/func/domain.sh
  25. source $VESTA/func/ip.sh
  26. source $VESTA/conf/vesta.conf
  27. # Additional argument formatting
  28. format_domain
  29. format_domain_idn
  30. format_aliases
  31. #----------------------------------------------------------#
  32. # Verifications #
  33. #----------------------------------------------------------#
  34. is_system_enabled "$WEB_SYSTEM" 'WEB_SYSTEM'
  35. check_args '2' "$#" 'USER DOMAIN [IP] [RESTART] [ALIASES] [PROXY_EXTENSIONS]'
  36. is_format_valid 'user' 'domain' 'aliases' 'ip' 'proxy_ext'
  37. is_object_valid 'user' 'USER' "$user"
  38. is_object_unsuspended 'user' 'USER' "$user"
  39. is_package_full 'WEB_DOMAINS' 'WEB_ALIASES'
  40. is_domain_new 'web' "$domain,$aliases"
  41. if [ ! -z "$ip" ]; then
  42. is_ip_valid "$ip" "$user"
  43. else
  44. get_user_ip
  45. fi
  46. #----------------------------------------------------------#
  47. # Action #
  48. #----------------------------------------------------------#
  49. # Reading user values
  50. source $USER_DATA/user.conf
  51. # Creating domain directories
  52. mkdir -p $HOMEDIR/$user/web/$domain \
  53. $HOMEDIR/$user/web/$domain/public_html \
  54. $HOMEDIR/$user/web/$domain/public_shtml \
  55. $HOMEDIR/$user/web/$domain/document_errors \
  56. $HOMEDIR/$user/web/$domain/cgi-bin \
  57. $HOMEDIR/$user/web/$domain/private \
  58. $HOMEDIR/$user/web/$domain/stats \
  59. $HOMEDIR/$user/web/$domain/logs
  60. # Creating domain logs
  61. touch /var/log/$WEB_SYSTEM/domains/$domain.bytes \
  62. /var/log/$WEB_SYSTEM/domains/$domain.log \
  63. /var/log/$WEB_SYSTEM/domains/$domain.error.log
  64. ln -f -s /var/log/$WEB_SYSTEM/domains/$domain.*log \
  65. $HOMEDIR/$user/web/$domain/logs/
  66. # Adding domain skeleton
  67. cp -r $WEBTPL/skel/* $HOMEDIR/$user/web/$domain/ >/dev/null 2>&1
  68. for file in $(find "$HOMEDIR/$user/web/$domain/" -type f); do
  69. sed -i "s/%domain%/$domain/g" $file
  70. done
  71. # Changing file owner & permission
  72. chown -R $user:$user $HOMEDIR/$user/web/$domain
  73. chown root:$user /var/log/$WEB_SYSTEM/domains/$domain.* $conf
  74. chmod 640 /var/log/$WEB_SYSTEM/domains/$domain.*
  75. chmod 751 $HOMEDIR/$user/web/$domain $HOMEDIR/$user/web/$domain/*
  76. chmod 551 $HOMEDIR/$user/web/$domain/stats $HOMEDIR/$user/web/$domain/logs
  77. # Addding PHP-FPM backend
  78. if [ ! -z "$WEB_BACKEND" ]; then
  79. if [ -z "$BACKEND_TEMPLATE" ]; then
  80. BACKEND_TEMPLATE='default'
  81. if [ -z "$(grep BACKEND_TEMPLATE $USER_DATA/user.conf)" ]; then
  82. sed -i "s/^DNS_TEMPL/BACKEND_TEMPLATE='default'\nDNS_TEMPL/g" \
  83. $USER_DATA/user.conf
  84. else
  85. update_user_value "$user" '$BACKEND_TEMPLATE' "default"
  86. fi
  87. fi
  88. $BIN/v-add-web-domain-backend "$user" "$domain" $BACKEND_TEMPLATE
  89. check_result $? "Backend error" >/dev/null
  90. fi
  91. # Preparing domain aliases
  92. if [ "$aliases" = 'none' ]; then
  93. ALIAS=''
  94. else
  95. ALIAS="www.$domain"
  96. if [ ! -z "$aliases" ]; then
  97. ALIAS="$ALIAS,$aliases"
  98. fi
  99. ip_alias=$(get_ip_alias $domain)
  100. if [ ! -z "$ip_alias" ]; then
  101. ALIAS="$ALIAS,$ip_alias"
  102. fi
  103. fi
  104. # Preparing domain variables
  105. prepare_web_domain_values
  106. # Adding web server config
  107. add_web_config "$WEB_SYSTEM" "$WEB_TEMPLATE.tpl"
  108. # Adding proxy config
  109. if [ ! -z "$PROXY_SYSTEM" ]; then
  110. PROXY_EXT="$proxy_ext"
  111. if [ -z "$proxy_ext" ]; then
  112. PROXY_EXT="jpg,jpeg,gif,png,ico,svg,css,zip,tgz,gz,rar,bz2,doc,xls"
  113. PROXY_EXT="$PROXY_EXT,exe,pdf,ppt,txt,odt,ods,odp,odf,tar,wav,bmp"
  114. PROXY_EXT="$PROXY_EXT,rtf,js,mp3,avi,mpeg,flv,html,htm"
  115. fi
  116. add_web_config "$PROXY_SYSTEM" "$PROXY_TEMPLATE.tpl"
  117. fi
  118. #----------------------------------------------------------#
  119. # Vesta #
  120. #----------------------------------------------------------#
  121. # Increasing counters
  122. increase_ip_value "$local_ip"
  123. increase_user_value "$user" '$U_WEB_DOMAINS'
  124. increase_user_value "$user" '$U_WEB_ALIASES' "$alias_number"
  125. # Generating timestamp
  126. time_n_date=$(date +'%T %F')
  127. time=$(echo "$time_n_date" |cut -f 1 -d \ )
  128. date=$(echo "$time_n_date" |cut -f 2 -d \ )
  129. # Adding domain in web.conf
  130. echo "DOMAIN='$domain' IP='$ip' IP6='' ALIAS='$ALIAS' TPL='$WEB_TEMPLATE'\
  131. SSL='no' SSL_HOME='same' LETSENCRYPT='no' FTP_USER='' FTP_MD5=''\
  132. BACKEND='$BACKEND_TEMPLATE' PROXY='$PROXY_TEMPLATE' PROXY_EXT='$PROXY_EXT'\
  133. STATS='' STATS_USER='' STATS_CRYPT='' U_DISK='0' U_BANDWIDTH='0'\
  134. SUSPENDED='no' TIME='$time' DATE='$date'" >> $USER_DATA/web.conf
  135. # Restarting web server
  136. $BIN/v-restart-web $restart
  137. check_result $? "Web restart failed" >/dev/null
  138. # Restarting proxy server
  139. $BIN/v-restart-proxy $restart
  140. check_result $? "Proxy restart failed" >/dev/null
  141. # Logging
  142. log_history "added web domain $domain"
  143. log_event "$OK" "$ARGUMENTS"
  144. exit