install 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117
  1. #!/bin/bash
  2. # Retrieve arguments
  3. domain=$1
  4. url_path=$2
  5. server_name=$3
  6. crt_client_path=$4
  7. crt_client_key_path=$5
  8. crt_server_ca_path=$6
  9. ip6_net=$7
  10. # Check arguments
  11. # TODO
  12. # Check domain/path availability
  13. sudo yunohost app checkurl ${domain}${url_path} -a vpnclient
  14. if [ ! $? -eq 0 ]; then
  15. exit 1
  16. fi
  17. # Install packages
  18. sudo apt-get --assume-yes --force-yes install openvpn php5-fpm
  19. # Install extra packages
  20. sudo apt-get --assume-yes --force-yes install sipcalc
  21. # Compute extra arguments
  22. ip6_expanded_net=$(sipcalc "${ip6_net}" | grep Expanded | awk '{ print $NF; }')
  23. ip6_net=$(sipcalc "${ip6_net}" | grep Compressed | awk '{ print $NF; }')
  24. ip6_addr=$(echo "$(echo "${ip6_expanded_net}" | cut -d: -f1-7):1")
  25. ip6_addr=$(sipcalc "${ip6_addr}" | grep Compressed | awk '{ print $NF; }')
  26. # Save arguments for future upgrades
  27. sudo yunohost app setting vpnclient server_name -v "${server_name}"
  28. sudo yunohost app setting vpnclient ip6_addr -v "${ip6_addr}"
  29. sudo yunohost app setting vpnclient ip6_net -v "${ip6_net}"
  30. # Copy confs
  31. sudo install -b -o root -g root -m 0644 ../conf/openvpn_client.conf.tpl /etc/openvpn/client.conf.tpl
  32. sudo install -b -o root -g root -m 0644 ../conf/nginx_vpnadmin.conf "/etc/nginx/conf.d/${domain}.d/vpnadmin.conf"
  33. sudo install -b -o root -g root -m 0644 ../conf/phpfpm_vpnadmin.conf /etc/php5/fpm/pool.d/vpnadmin.conf
  34. # Copy web sources
  35. sudo mkdir -pm 0755 /var/www/vpnadmin/
  36. sudo cp -a ../sources/* /var/www/vpnadmin/
  37. sudo chown -R root: /var/www/vpnadmin/
  38. sudo chmod -R 0644 /var/www/vpnadmin/*
  39. sudo find /var/www/vpnadmin/ -type d -exec chmod +x {} \;
  40. # Copy certificates
  41. sudo mkdir -pm 0700 /etc/openvpn/keys/
  42. sudo chown root: /etc/openvpn/keys/
  43. sudo install -b -o root -g root -m 0600 "${crt_client_path}" /etc/openvpn/keys/user.crt
  44. sudo install -b -o root -g root -m 0600 "${crt_client_key_path}" /etc/openvpn/keys/user.key
  45. sudo install -b -o root -g root -m 0600 "${crt_server_ca_path}" /etc/openvpn/keys/ca-server.crt
  46. sudo rm -f "${crt_client_path}" "${crt_client_key_path}" "${crt_server_ca_path}"
  47. # Create user for the web admin
  48. sudo useradd -MUr vpnadmin
  49. # Fix confs
  50. ## nginx
  51. sudo sed "s|<TPL:NGINX_LOCATION>|${url_path}|g" -i "/etc/nginx/conf.d/${domain}.d/vpnadmin.conf"
  52. sudo sed 's|<TPL:NGINX_REALPATH>|/var/www/vpnadmin/|g' -i "/etc/nginx/conf.d/${domain}.d/vpnadmin.conf"
  53. sudo sed 's|<TPL:PHP_NAME>|vpnadmin|g' -i "/etc/nginx/conf.d/${domain}.d/vpnadmin.conf"
  54. ## php-fpm
  55. sudo sed 's|<TPL:PHP_NAME>|vpnadmin|g' -i /etc/php5/fpm/pool.d/vpnadmin.conf
  56. sudo sed 's|<TPL:PHP_USER>|vpnadmin|g' -i /etc/php5/fpm/pool.d/vpnadmin.conf
  57. sudo sed 's|<TPL:PHP_GROUP>|vpnadmin|g' -i /etc/php5/fpm/pool.d/vpnadmin.conf
  58. sudo sed 's|<TPL:NGINX_REALPATH>|/var/www/vpnadmin/|g' -i /etc/php5/fpm/pool.d/vpnadmin.conf
  59. # Fix sources
  60. sudo sed "s|<TPL:NGINX_LOCATION>|${url_path}|g" -i /var/www/vpnadmin/config.php
  61. # Copy init script
  62. sudo install -b -o root -g root -m 0755 ../conf/init_ynh-vpnclient /etc/init.d/ynh-vpnclient
  63. # Allow vpnadmin web interface to manage rights
  64. sudo chmod 0470 /etc/yunohost/apps/vpnclient/settings.yml
  65. sudo chown root:vpnadmin /etc/yunohost/apps/vpnclient/settings.yml
  66. # Set default inits
  67. # The openvpn configuration is modified before the start, so the service is disabled by default
  68. # and the ynh-vpnclient service handles it.
  69. # All services are registred by yunohost in order to prevent conflicts after the uninstall.
  70. sudo yunohost service add openvpn
  71. sudo yunohost service stop openvpn
  72. sudo yunohost service disable openvpn
  73. sudo yunohost service add php5-fpm
  74. sudo yunohost service enable php5-fpm
  75. sudo yunohost service stop php5-fpm
  76. sudo yunohost service start php5-fpm
  77. sudo yunohost service add ynh-vpnclient
  78. sudo yunohost service enable ynh-vpnclient
  79. #sudo yunohost service start ynh-vpnclient
  80. sudo service ynh-vpnclient start
  81. sudo service nginx reload
  82. # Update SSO for vpnadmin
  83. sudo yunohost app ssowatconf
  84. # Restart hotspot service if installed to change NAT configuration (now on tun0)
  85. # A new start will fix the interface without unsetting all stuff
  86. sudo yunohost app list -f hotspot --json | grep -q '"installed": true'
  87. if [ $? -eq 0 ]; then
  88. sudo yunohost service start ynh-hotspot
  89. fi
  90. exit 0