v-change-sys-vesta-ssl 2.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677
  1. #!/bin/bash
  2. # info: change vesta ssl certificate
  3. # options: SSL_DIR [RESTART]
  4. #
  5. # The function changes vesta SSL certificate and the key.
  6. #----------------------------------------------------------#
  7. # Variable&Function #
  8. #----------------------------------------------------------#
  9. # Argument definition
  10. domain='certificate'
  11. ssl_dir=$1
  12. restart=$2
  13. # Includes
  14. source $VESTA/func/main.sh
  15. source $VESTA/func/domain.sh
  16. source $VESTA/conf/vesta.conf
  17. #----------------------------------------------------------#
  18. # Verifications #
  19. #----------------------------------------------------------#
  20. check_args '1' "$#" 'SSL_DIR [RESTART]'
  21. is_format_valid 'ssl_dir'
  22. #----------------------------------------------------------#
  23. # Action #
  24. #----------------------------------------------------------#
  25. # Checking new certificate
  26. certificate=$(cat $ssl_dir/$domain.crt |grep -n END)
  27. certificate_count=$(echo "$certificate" |wc -l)
  28. if [ "$certificate_count" -gt 1 ]; then
  29. crt_end=$(echo "$certificate" |head -n1 |cut -f 1 -d :)
  30. crt_lines=$(wc -l $ssl_dir/$domain.crt |cut -f1 -d ' ')
  31. pem_begin=$((crt_lines - crt_end))
  32. mv $ssl_dir/$domain.crt $ssl_dir/$domain.crt_full
  33. head -n $crt_end $ssl_dir/$domain.crt_full > $ssl_dir/$domain.crt
  34. tail -n $pem_begin $ssl_dir/$domain.crt_full > $ssl_dir/$domain.ca
  35. is_web_domain_cert_valid
  36. mv -f $ssl_dir/$domain.crt_full $ssl_dir/$domain.crt
  37. rm -f $ssl_dir/$domain.ca
  38. else
  39. is_web_domain_cert_valid
  40. fi
  41. # Moving old certificate
  42. mv $VESTA/ssl/certificate.crt $VESTA/ssl/certificate.crt.back
  43. mv $VESTA/ssl/certificate.key $VESTA/ssl/certificate.key.back
  44. # Adding new certificate
  45. cp -f $ssl_dir/certificate.crt $VESTA/ssl/certificate.crt
  46. cp -f $ssl_dir/certificate.key $VESTA/ssl/certificate.key
  47. #----------------------------------------------------------#
  48. # Vesta #
  49. #----------------------------------------------------------#
  50. # Restarting web server
  51. if [ "$restart" != 'no' ]; then
  52. kill -HUP $(cat /var/run/vesta-nginx.pid)
  53. $BIN/v-restart-mail
  54. if [ ! -z "$IMAP_SYSTEM" ]; then
  55. v-restart-service "$IMAP_SYSTEM"
  56. fi
  57. fi
  58. # Logging
  59. log_event "$OK" "$ARGUMENTS"
  60. exit