v-change-web-domain-backend-tpl 4.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158
  1. #!/bin/bash
  2. # info: change web domain backend template
  3. # options: USER DOMAIN TEMPLATE [RESTART]
  4. #
  5. # The function changes backend template
  6. #----------------------------------------------------------#
  7. # Variable&Function #
  8. #----------------------------------------------------------#
  9. # Argument definition
  10. user=$1
  11. domain=$2
  12. template=$3
  13. restart=$4
  14. # Includes
  15. source $VESTA/func/main.sh
  16. source $VESTA/func/domain.sh
  17. source $VESTA/func/ip.sh
  18. source $VESTA/conf/vesta.conf
  19. # Additional argument formatting
  20. format_domain
  21. format_domain_idn
  22. #----------------------------------------------------------#
  23. # Verifications #
  24. #----------------------------------------------------------#
  25. check_args '3' "$#" 'USER DOMAIN TEMPLATE [RESTART]'
  26. is_format_valid 'user' 'domain' 'template'
  27. is_system_enabled "$WEB_BACKEND" 'WEB_BACKEND'
  28. is_object_valid 'user' 'USER' "$user"
  29. is_object_unsuspended 'user' 'USER' "$user"
  30. is_object_valid 'web' 'DOMAIN' "$domain"
  31. is_object_unsuspended 'web' 'DOMAIN' "$domain"
  32. is_backend_template_valid $template
  33. #----------------------------------------------------------#
  34. # Action #
  35. #----------------------------------------------------------#
  36. prepare_web_backend
  37. # Deleting backend
  38. rm -f $pool/$backend_type.conf
  39. # Allocating backend port
  40. backend_port=9000
  41. ports=$(grep -v '^;' $pool/* 2>/dev/null |grep listen |grep -o :[0-9].*)
  42. ports=$(echo "$ports" |sed "s/://" |sort -n)
  43. for port in $ports; do
  44. if [ "$backend_port" -eq "$port" ]; then
  45. backend_port=$((backend_port + 1))
  46. fi
  47. done
  48. # Changing backend config
  49. cat $WEBTPL/$WEB_BACKEND/$template.tpl |\
  50. sed -e "s|%backend_port%|$backend_port|" \
  51. -e "s|%user%|$user|"\
  52. -e "s|%domain%|$domain|"\
  53. -e "s|%domain_idn%|$domain_idn|"\
  54. -e "s|%backend%|$backend_type|g" > $pool/$backend_type.conf
  55. # Checking backend pool configuration
  56. if [ "$backend_type" = "$user" ]; then
  57. conf=$USER_DATA/web.conf
  58. fields='$DOMAIN'
  59. nohead=1
  60. for domain in $(shell_list); do
  61. get_domain_values 'web'
  62. local_ip=$(get_real_ip $IP)
  63. prepare_web_domain_values
  64. # Rebuilding vhost
  65. del_web_config "$WEB_SYSTEM" "$TPL.tpl"
  66. add_web_config "$WEB_SYSTEM" "$TPL.tpl"
  67. if [ "$SSL" = 'yes' ]; then
  68. del_web_config "$WEB_SYSTEM" "$TPL.stpl"
  69. add_web_config "$WEB_SYSTEM" "$TPL.stpl"
  70. fi
  71. # Rebuilding proxy configuration
  72. if [ ! -z "$PROXY_SYSTEM" ] && [ ! -z "$PROXY" ]; then
  73. del_web_config "$PROXY_SYSTEM" "$PROXY.tpl"
  74. add_web_config "$PROXY_SYSTEM" "$PROXY.tpl"
  75. if [ "$SSL" = 'yes' ]; then
  76. del_web_config "$PROXY_SYSTEM" "$PROXY.stpl"
  77. add_web_config "$PROXY_SYSTEM" "$PROXY.stpl"
  78. fi
  79. fi
  80. # Update config
  81. add_object_key "web" 'DOMAIN' "$domain" 'BACKEND' 'PROXY'
  82. update_object_value 'web' 'DOMAIN' "$domain" '$BACKEND' "$template"
  83. done
  84. # Chaning template in user config
  85. old_template=$(grep BACKEND_TEMPLATE $USER_DATA/user.conf)
  86. if [ -z "$old_template" ]; then
  87. sed -i "s/^WEB_DOMAINS/BACKEND_TEMPLATE='$template'\nWEB_DOMAINS/g" \
  88. $USER_DATA/user.conf
  89. else
  90. update_user_value "$user" '$BACKEND_TEMPLATE' "$template"
  91. fi
  92. else
  93. # Parsing domain values
  94. get_domain_values 'web'
  95. local_ip=$(get_real_ip $IP)
  96. prepare_web_domain_values
  97. # Rebuilding vhost
  98. del_web_config "$WEB_SYSTEM" "$TPL.tpl"
  99. add_web_config "$WEB_SYSTEM" "$TPL.tpl"
  100. if [ "$SSL" = 'yes' ]; then
  101. del_web_config "$WEB_SYSTEM" "$TPL.stpl"
  102. add_web_config "$WEB_SYSTEM" "$TPL.stpl"
  103. fi
  104. # Rebuilding proxy configuration
  105. if [ ! -z "$PROXY_SYSTEM" ] && [ ! -z "$PROXY" ]; then
  106. del_web_config "$PROXY_SYSTEM" "$PROXY.tpl"
  107. add_web_config "$PROXY_SYSTEM" "$PROXY.tpl"
  108. if [ "$SSL" = 'yes' ]; then
  109. del_web_config "$PROXY_SYSTEM" "$PROXY.stpl"
  110. add_web_config "$PROXY_SYSTEM" "$PROXY.stpl"
  111. fi
  112. fi
  113. # Update config
  114. add_object_key "web" 'DOMAIN' "$domain" 'BACKEND' 'PROXY'
  115. update_object_value 'web' 'DOMAIN' "$domain" '$BACKEND' "$template"
  116. fi
  117. #----------------------------------------------------------#
  118. # Vesta #
  119. #----------------------------------------------------------#
  120. # Restarting web
  121. $BIN/v-restart-web $restart
  122. check_result $? "Web restart failed" >/dev/null
  123. $BIN/v-restart-web-backend $restart
  124. check_result $? "Web backend restart failed" >/dev/null
  125. # Logging
  126. log_history "changed backend template for $domain to $template"
  127. log_event "$OK" "$ARGUMENTS"
  128. exit