v-add-web-domain-ssl 3.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127
  1. #!/bin/bash
  2. # info: adding ssl for domain
  3. # options: USER DOMAIN SSL_DIR [SSL_HOME] [RESTART]
  4. #
  5. # The function turns on SSL support for a domain. Parameter ssl_dir is a path
  6. # to directory where 2 or 3 ssl files can be found. Certificate file
  7. # domain.tld.crt and its key domain.tld.key are mandatory. Certificate
  8. # authority domain.tld.ca file is optional. If home directory parameter
  9. # (ssl_home) is not set, https domain uses public_shtml as separate
  10. # documentroot directory.
  11. #----------------------------------------------------------#
  12. # Variable&Function #
  13. #----------------------------------------------------------#
  14. # Argument definition
  15. user=$1
  16. domain=$2
  17. ssl_dir=$3
  18. ssl_home=${4-same}
  19. restart="$5"
  20. # Additional argument formatting
  21. if [[ "$domain" =~ [[:upper:]] ]]; then
  22. domain=$(echo "$domain" |tr '[:upper:]' '[:lower:]')
  23. fi
  24. if [[ "$domain" =~ ^www\..* ]]; then
  25. domain=$(echo "$domain" |sed -e "s/^www.//")
  26. fi
  27. if [[ "$domain" =~ .*\.$ ]]; then
  28. domain=$(echo "$domain" |sed -e "s/\.$//")
  29. fi
  30. domain=$(idn -t --quiet -u "$domain" )
  31. domain_idn=$(idn -t --quiet -a "$domain")
  32. # Includes
  33. source $VESTA/func/main.sh
  34. source $VESTA/func/domain.sh
  35. source $VESTA/func/ip.sh
  36. source $VESTA/conf/vesta.conf
  37. # Additional argument formatting
  38. format_domain
  39. format_domain_idn
  40. #----------------------------------------------------------#
  41. # Verifications #
  42. #----------------------------------------------------------#
  43. check_args '3' "$#" 'USER DOMAIN SSL_DIR [SSL_HOME] [RESTART]'
  44. is_format_valid 'user' 'domain' 'ssl_dir'
  45. is_system_enabled "$WEB_SYSTEM" 'WEB_SYSTEM'
  46. is_system_enabled "$WEB_SSL" 'SSL_SUPPORT'
  47. is_object_valid 'user' 'USER' "$user"
  48. is_object_unsuspended 'user' 'USER' "$user"
  49. is_object_valid 'web' 'DOMAIN' "$domain"
  50. is_object_unsuspended 'web' 'DOMAIN' "$domain"
  51. is_object_value_empty 'web' 'DOMAIN' "$domain" '$SSL'
  52. is_web_domain_cert_valid
  53. #----------------------------------------------------------#
  54. # Action #
  55. #----------------------------------------------------------#
  56. # Adding certificate to user data directory
  57. cp -f $ssl_dir/$domain.crt $USER_DATA/ssl/$domain.crt
  58. cp -f $ssl_dir/$domain.key $USER_DATA/ssl/$domain.key
  59. cp -f $ssl_dir/$domain.crt $USER_DATA/ssl/$domain.pem
  60. if [ -e "$ssl_dir/$domain.ca" ]; then
  61. cp -f $ssl_dir/$domain.ca $USER_DATA/ssl/$domain.ca
  62. echo >> $USER_DATA/ssl/$domain.pem
  63. cat $USER_DATA/ssl/$domain.ca >> $USER_DATA/ssl/$domain.pem
  64. fi
  65. chmod 660 $USER_DATA/ssl/$domain.*
  66. # Adding certificate to user dir
  67. cp -f $USER_DATA/ssl/$domain.crt $HOMEDIR/$user/conf/web/ssl.$domain.crt
  68. cp -f $USER_DATA/ssl/$domain.key $HOMEDIR/$user/conf/web/ssl.$domain.key
  69. cp -f $USER_DATA/ssl/$domain.pem $HOMEDIR/$user/conf/web/ssl.$domain.pem
  70. if [ -e "$USER_DATA/ssl/$domain.ca" ]; then
  71. cp -f $USER_DATA/ssl/$domain.ca $HOMEDIR/$user/conf/web/ssl.$domain.ca
  72. fi
  73. # Parsing domain values
  74. get_domain_values 'web'
  75. local_ip=$(get_real_ip $IP)
  76. # Preparing domain values for the template substitution
  77. SSL_HOME="$ssl_home"
  78. prepare_web_domain_values
  79. # Adding domain to the web config
  80. add_web_config "$WEB_SYSTEM" "$TPL.stpl"
  81. # Checking proxy config
  82. if [ ! -z "$PROXY_SYSTEM" ] && [ ! -z "$PROXY" ]; then
  83. add_web_config "$PROXY_SYSTEM" "$PROXY.stpl"
  84. fi
  85. #----------------------------------------------------------#
  86. # Vesta #
  87. #----------------------------------------------------------#
  88. # Increasing domain value
  89. increase_user_value "$user" '$U_WEB_SSL'
  90. # Adding ssl values
  91. update_object_value 'web' 'DOMAIN' "$domain" '$SSL_HOME' "$SSL_HOME"
  92. update_object_value 'web' 'DOMAIN' "$domain" '$SSL' "yes"
  93. # Restarting web server
  94. $BIN/v-restart-web $restart
  95. check_result $? "Web restart failed" >/dev/null
  96. $BIN/v-restart-proxy $restart
  97. check_result $? "Proxy restart failed" >/dev/null
  98. # Logging
  99. log_history "enabled ssl support for $domain"
  100. log_event "$OK" "$ARGUMENTS"
  101. exit