v-add-web-domain 5.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167
  1. #!/bin/bash
  2. # info: add web domain
  3. # options: USER DOMAIN [IP] [ALIASES] [PROXY_EXTENTIONS] [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. ip=$3
  18. restart=$4 # will be moved to the end soon
  19. aliases=$5
  20. proxy_ext=$6
  21. # Additional argument formatting
  22. if [[ "$domain" =~ [[:upper:]] ]]; then
  23. domain=$(echo "$domain" |tr '[:upper:]' '[:lower:]')
  24. fi
  25. if [[ "$domain" =~ ^www\..* ]]; then
  26. domain=$(echo "$domain" |sed -e "s/^www.//")
  27. fi
  28. if [[ "$domain" =~ .*\.$ ]]; then
  29. domain=$(echo "$domain" |sed -e "s/\.$//")
  30. fi
  31. domain_idn="$domain"
  32. if [[ "$domain" = *[![:ascii:]]* ]]; then
  33. domain_idn=$(idn -t --quiet -a $domain)
  34. fi
  35. if [ ! -z "$aliases" ] && [ "$aliases" != 'none' ]; then
  36. aliases=$(echo $aliases |tr '[:upper:]' '[:lower:]' |tr ',' '\n')
  37. aliases=$(echo "$aliases" |sed -e "s/\.$//" |sort -u |grep -v www.$domain)
  38. aliases=$(echo "$aliases" |sed -e "/^$/d" |tr '\n' ',' |sed -e "s/,$//")
  39. fi
  40. # Includes
  41. source $VESTA/func/main.sh
  42. source $VESTA/func/domain.sh
  43. source $VESTA/func/ip.sh
  44. source $VESTA/conf/vesta.conf
  45. #----------------------------------------------------------#
  46. # Verifications #
  47. #----------------------------------------------------------#
  48. is_system_enabled "$WEB_SYSTEM" 'WEB_SYSTEM'
  49. check_args '2' "$#" 'USER DOMAIN [IP] [ALIASES] [PROXY_EXTENTIONS] [RESTART]'
  50. is_format_valid 'user' 'domain' 'aliases' 'ip' 'proxy_ext'
  51. is_object_valid 'user' 'USER' "$user"
  52. is_object_unsuspended 'user' 'USER' "$user"
  53. is_package_full 'WEB_DOMAINS' 'WEB_ALIASES'
  54. is_domain_new 'web' "$domain,$aliases"
  55. is_ip_valid "$ip"
  56. #----------------------------------------------------------#
  57. # Action #
  58. #----------------------------------------------------------#
  59. # Reading user values
  60. source $USER_DATA/user.conf
  61. # Creating domain directories
  62. mkdir -p $HOMEDIR/$user/web/$domain \
  63. $HOMEDIR/$user/web/$domain/public_html \
  64. $HOMEDIR/$user/web/$domain/public_shtml \
  65. $HOMEDIR/$user/web/$domain/document_errors \
  66. $HOMEDIR/$user/web/$domain/cgi-bin \
  67. $HOMEDIR/$user/web/$domain/private \
  68. $HOMEDIR/$user/web/$domain/stats \
  69. $HOMEDIR/$user/web/$domain/logs
  70. # Creating domain logs
  71. touch /var/log/$WEB_SYSTEM/domains/$domain.bytes \
  72. /var/log/$WEB_SYSTEM/domains/$domain.log \
  73. /var/log/$WEB_SYSTEM/domains/$domain.error.log
  74. ln -f -s /var/log/$WEB_SYSTEM/domains/$domain.*log \
  75. $HOMEDIR/$user/web/$domain/logs/
  76. # Adding domain skeleton
  77. cp -r $WEBTPL/skel/* $HOMEDIR/$user/web/$domain/ >/dev/null 2>&1
  78. for file in $(find "$HOMEDIR/$user/web/$domain/" -type f); do
  79. sed -i "s/%domain%/$domain/g" $file
  80. done
  81. # Changing file owner & permission
  82. chown -R $user:$user $HOMEDIR/$user/web/$domain
  83. chown root:$user /var/log/$WEB_SYSTEM/domains/$domain.* $conf
  84. chmod 640 /var/log/$WEB_SYSTEM/domains/$domain.*
  85. chmod 751 $HOMEDIR/$user/web/$domain $HOMEDIR/$user/web/$domain/*
  86. chmod 551 $HOMEDIR/$user/web/$domain/stats $HOMEDIR/$user/web/$domain/logs
  87. # Addding PHP-FPM backend
  88. if [ ! -z "$BACKEND_SYSTEM" ]; then
  89. $BIN/v-add-web-domain-backend "$user" "$domain" $BACKEND_TEMPLATE
  90. check_result $? "Backend error" >/dev/null
  91. fi
  92. # Preparing domain aliases
  93. if [ "$aliases" != 'none' ]; then
  94. prepare_web_aliases "www.$domain,$aliases,$(get_ip_alias $domain)"
  95. fi
  96. # Adding web server config
  97. add_web_config "$WEB_SYSTEM" "$WEB_TEMPLATE.tpl"
  98. # Adding proxy config
  99. if [ ! -z "$PROXY_SYSTEM" ]; then
  100. PROXY_EXT="$proxy_ext"
  101. if [ -z "$proxy_ext" ]; then
  102. PROXY_EXT="jpg,jpeg,gif,png,ico,svg,css,zip,tgz,gz,rar,bz2,doc,xls"
  103. PROXY_EXT="$PROXY_EXT,exe,pdf,ppt,txt,odt,ods,odp,odf,tar,wav,bmp"
  104. PROXY_EXT="$PROXY_EXT,rtf,js,mp3,avi,mpeg,flv,html,htm"
  105. fi
  106. add_web_config "$PROXY_SYSTEM" "$PROXY_TEMPLATE.tpl"
  107. fi
  108. #----------------------------------------------------------#
  109. # Vesta #
  110. #----------------------------------------------------------#
  111. # Increasing counters
  112. increase_ip_value "$local_ip"
  113. increase_user_value "$user" '$U_WEB_DOMAINS' "$alias_number"
  114. increase_user_value "$user" '$U_WEB_ALIASES'
  115. # Generating timestamp
  116. time_n_date=$(date +'%T %F')
  117. time=$(echo "$time_n_date" |cut -f 1 -d \ )
  118. date=$(echo "$time_n_date" |cut -f 2 -d \ )
  119. # Adding domain in web.conf
  120. echo "DOMAIN='$domain' IP='$ip' IP6='' ALIAS='$aliases' TPL='$WEB_TEMPLATE' \
  121. SSL='no' SSL_HOME='same' FTP_USER='' FTP_MD5='' BACKEND='$BACKEND_TEMPLATE' \
  122. PROXY='$PROXY_TEMPLATE' PROXY_EXT='$PROXY_EXT' STATS='' STATS_USER='' \
  123. STATS_CRYPT='' U_DISK='0' U_BANDWIDTH='0' SUSPENDED='no' \
  124. TIME='$time' DATE='$date'" >> $USER_DATA/web.conf
  125. # Restarting web server
  126. if [ "$restart" != 'no' ]; then
  127. $BIN/v-restart-web
  128. check_result $? "Web restart failed" >/dev/null
  129. # Restarting proxy server
  130. if [ ! -z "$PROXY_SYSTEM" ]; then
  131. $BIN/v-restart-proxy
  132. check_result $? "Proxy restart failed" >/dev/null
  133. fi
  134. fi
  135. # Logging
  136. log_history "added web domain $domain"
  137. log_event "$OK" "$ARGUMENTS"
  138. exit