Fork of FusionPBX but with LDAP kinda working
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

130 lines
4.3 KiB

  1. #!/bin/sh
  2. # FusionPBX - Install
  3. # Mark J Crane <markjcrane@fusionpbx.com>
  4. # Copyright (C) 2018
  5. # All Rights Reserved.
  6. #move to script directory so all relative paths work
  7. cd "$(dirname "$0")"
  8. #includes
  9. . ./config.sh
  10. #Add dependencies
  11. apt-get install -y curl
  12. #remove dehyrdated letsencrypt script
  13. rm /usr/local/sbin/dehydrated
  14. rm -R /usr/src/dehydrated
  15. #rm -R /etc/dehydrated/
  16. #rm -R /usr/src/dns-01-manual
  17. #rm -R /var/www/dehydrated
  18. #request the domain name, email address and wild card domain
  19. read -p 'Domain Name: ' domain_name
  20. read -p 'Email Address: ' email_address
  21. #get and install dehydrated
  22. cd /usr/src && git clone https://github.com/lukas2511/dehydrated.git
  23. cd /usr/src/dehydrated
  24. cp dehydrated /usr/local/sbin
  25. mkdir -p /var/www/dehydrated
  26. mkdir -p /etc/dehydrated/certs
  27. #wildcard detection
  28. wildcard_domain=$(echo $domain_name | cut -c1-1)
  29. if [ "$wildcard_domain" = "*" ]; then
  30. wildcard_domain="true"
  31. else
  32. wildcard_domain="false"
  33. fi
  34. #remove the wildcard and period
  35. if [ .$wildcard_domain = ."true" ]; then
  36. domain_name=$(echo "$domain_name" | cut -c3-255)
  37. fi
  38. #manual dns hook
  39. if [ .$wildcard_domain = ."true" ]; then
  40. cd /usr/src
  41. git clone https://github.com/gheja/dns-01-manual.git
  42. cd /usr/src/dns-01-manual/
  43. cp hook.sh /etc/dehydrated/hook.sh
  44. chmod 755 /etc/dehydrated/hook.sh
  45. fi
  46. #copy config and hook.sh into /etc/dehydrated
  47. cd /usr/src/dehydrated
  48. cp docs/examples/config /etc/dehydrated
  49. #cp docs/examples/hook.sh /etc/dehydrated
  50. #update the dehydrated config
  51. #sed "s#CONTACT_EMAIL=#CONTACT_EMAIL=$email_address" -i /etc/dehydrated/config
  52. sed -i 's/#CONTACT_EMAIL=/CONTACT_EMAIL="'"$email_address"'"/g' /etc/dehydrated/config
  53. sed -i 's/#WELLKNOWN=/WELLKNOWN=/g' /etc/dehydrated/config
  54. #accept the terms
  55. ./dehydrated --register --accept-terms --config /etc/dehydrated/config
  56. #set the domain alias
  57. domain_alias=$(echo "$domain_name" | head -n1 | cut -d " " -f1)
  58. #create an alias when using wildcard dns
  59. if [ .$wildcard_domain = ."true" ]; then
  60. echo "*.$domain_name > $domain_name" > /etc/dehydrated/domains.txt
  61. fi
  62. #add the domain name to domains.txt
  63. if [ .$wildcard_domain = ."false" ]; then
  64. echo "$domain_name" > /etc/dehydrated/domains.txt
  65. fi
  66. #request the certificates
  67. if [ .$wildcard_domain = ."true" ]; then
  68. ./dehydrated --cron --domain *.$domain_name --preferred-chain "ISRG Root X1" --algo rsa --alias $domain_alias --config /etc/dehydrated/config --out /etc/dehydrated/certs --challenge dns-01 --hook /etc/dehydrated/hook.sh
  69. fi
  70. if [ .$wildcard_domain = ."false" ]; then
  71. ./dehydrated --cron --alias $domain_alias --preferred-chain "ISRG Root X1" --algo rsa --config /etc/dehydrated/config --config /etc/dehydrated/config --out /etc/dehydrated/certs --challenge http-01
  72. fi
  73. #make sure the nginx ssl directory exists
  74. mkdir -p /etc/nginx/ssl
  75. #update nginx config
  76. sed "s@ssl_certificate[ \t]*/etc/ssl/certs/nginx.crt;@ssl_certificate /etc/dehydrated/certs/$domain_alias/fullchain.pem;@g" -i /etc/nginx/sites-available/fusionpbx
  77. sed "s@ssl_certificate_key[ \t]*/etc/ssl/private/nginx.key;@ssl_certificate_key /etc/dehydrated/certs/$domain_alias/privkey.pem;@g" -i /etc/nginx/sites-available/fusionpbx
  78. #read the config
  79. /usr/sbin/nginx -t && /usr/sbin/nginx -s reload
  80. #setup freeswitch tls
  81. if [ .$switch_tls = ."true" ]; then
  82. #make sure the freeswitch directory exists
  83. mkdir -p /etc/freeswitch/tls
  84. #make sure the freeswitch certificate directory is empty
  85. rm /etc/freeswitch/tls/*
  86. #combine the certs into all.pem
  87. cat /etc/dehydrated/certs/$domain_alias/fullchain.pem > /etc/freeswitch/tls/all.pem
  88. cat /etc/dehydrated/certs/$domain_alias/privkey.pem >> /etc/freeswitch/tls/all.pem
  89. #cat /etc/dehydrated/certs/$domain_alias/chain.pem >> /etc/freeswitch/tls/all.pem
  90. #copy the certificates
  91. cp /etc/dehydrated/certs/$domain_alias/cert.pem /etc/freeswitch/tls
  92. cp /etc/dehydrated/certs/$domain_alias/chain.pem /etc/freeswitch/tls
  93. cp /etc/dehydrated/certs/$domain_alias/fullchain.pem /etc/freeswitch/tls
  94. cp /etc/dehydrated/certs/$domain_alias/privkey.pem /etc/freeswitch/tls
  95. #add symbolic links
  96. ln -s /etc/freeswitch/tls/all.pem /etc/freeswitch/tls/agent.pem
  97. ln -s /etc/freeswitch/tls/all.pem /etc/freeswitch/tls/tls.pem
  98. ln -s /etc/freeswitch/tls/all.pem /etc/freeswitch/tls/wss.pem
  99. ln -s /etc/freeswitch/tls/all.pem /etc/freeswitch/tls/dtls-srtp.pem
  100. #set the permissions
  101. chown -R www-data:www-data /etc/freeswitch/tls
  102. fi