install 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  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
  27. sudo yunohost app setting vpnclient server_name -v "${server_name}"
  28. sudo yunohost app setting vpnclient server_port -v 1194
  29. sudo yunohost app setting vpnclient server_proto -v udp
  30. sudo yunohost app setting vpnclient ip6_addr -v "${ip6_addr}"
  31. sudo yunohost app setting vpnclient ip6_net -v "${ip6_net}"
  32. # Copy confs
  33. sudo install -b -o root -g root -m 0644 ../conf/openvpn_client.conf.tpl /etc/openvpn/client.conf.tpl
  34. sudo install -b -o root -g root -m 0644 ../conf/nginx_vpnadmin.conf "/etc/nginx/conf.d/${domain}.d/vpnadmin.conf"
  35. sudo install -b -o root -g root -m 0644 ../conf/phpfpm_vpnadmin.conf /etc/php5/fpm/pool.d/vpnadmin.conf
  36. # Copy web sources
  37. sudo mkdir -pm 0755 /var/www/vpnadmin/
  38. sudo cp -a ../sources/* /var/www/vpnadmin/
  39. sudo chown -R root: /var/www/vpnadmin/
  40. sudo chmod -R 0644 /var/www/vpnadmin/*
  41. sudo find /var/www/vpnadmin/ -type d -exec chmod +x {} \;
  42. # Copy certificates
  43. sudo mkdir -pm 0770 /etc/openvpn/keys/
  44. sudo chown root:admins /etc/openvpn/keys/
  45. sudo install -b -o root -g admins -m 0660 "${crt_client_path}" /etc/openvpn/keys/user.crt
  46. sudo install -b -o root -g admins -m 0660 "${crt_client_key_path}" /etc/openvpn/keys/user.key
  47. sudo install -b -o root -g admins -m 0660 "${crt_server_ca_path}" /etc/openvpn/keys/ca-server.crt
  48. sudo rm -f "${crt_client_path}" "${crt_client_key_path}" "${crt_server_ca_path}"
  49. # Create user for the web admin
  50. sudo useradd -MUr vpnadmin
  51. # Fix confs
  52. ## nginx
  53. sudo sed "s|<TPL:NGINX_LOCATION>|${url_path}|g" -i "/etc/nginx/conf.d/${domain}.d/vpnadmin.conf"
  54. sudo sed 's|<TPL:NGINX_REALPATH>|/var/www/vpnadmin/|g' -i "/etc/nginx/conf.d/${domain}.d/vpnadmin.conf"
  55. sudo sed 's|<TPL:PHP_NAME>|vpnadmin|g' -i "/etc/nginx/conf.d/${domain}.d/vpnadmin.conf"
  56. ## php-fpm
  57. sudo sed 's|<TPL:PHP_NAME>|vpnadmin|g' -i /etc/php5/fpm/pool.d/vpnadmin.conf
  58. sudo sed 's|<TPL:PHP_USER>|admin|g' -i /etc/php5/fpm/pool.d/vpnadmin.conf
  59. sudo sed 's|<TPL:PHP_GROUP>|admins|g' -i /etc/php5/fpm/pool.d/vpnadmin.conf
  60. sudo sed 's|<TPL:NGINX_REALPATH>|/var/www/vpnadmin/|g' -i /etc/php5/fpm/pool.d/vpnadmin.conf
  61. sudo sed 's|^;\?\s*max_execution_time.\+|max_execution_time = 600|' -i /etc/php5/fpm/php.ini
  62. # Fix sources
  63. sudo sed "s|<TPL:NGINX_LOCATION>|${url_path}|g" -i /var/www/vpnadmin/config.php
  64. # Copy init script
  65. sudo install -b -o root -g root -m 0755 ../conf/init_ynh-vpnclient /etc/init.d/ynh-vpnclient
  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 service ynh-vpnclient start
  80. sudo service nginx reload
  81. # Update SSO for vpnadmin
  82. sudo yunohost app ssowatconf
  83. # Restart hotspot service if installed to change NAT configuration (now on tun0)
  84. # A new start will fix the interface without unsetting all stuff
  85. sudo yunohost app list -f hotspot --json | grep -q '"installed": true'
  86. if [ $? -eq 0 ]; then
  87. sudo yunohost service start ynh-hotspot
  88. fi
  89. exit 0