install 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120
  1. #!/bin/bash
  2. # Retrieve arguments
  3. domain=$1
  4. url_path=$2
  5. server_name=$3
  6. crt_client_path=$2
  7. crt_client_key_path=$3
  8. crt_server_ca_path=$4
  9. ip6_net=$5
  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. wired_device=$(ip r | awk '/default via/ { print $NF; }')
  23. ip6_expanded_net=$(sipcalc ${ip6_net} | grep Expanded | awk '{ print $NF; }')
  24. ip6_net=$(sipcalc ${ip6_net} | grep Compressed | awk '{ print $NF; }')
  25. ip6_addr=$(echo "$(echo ${ip6_expanded_net} | cut -d: -f1-7):1")
  26. ip6_addr=$(sipcalc ${ip6_addr} | grep Compressed | awk '{ print $NF; }')
  27. server_ip6=$(host ${server_name} | awk '/IPv6/ { print $NF; }')
  28. # Save arguments for future upgrades
  29. sudo yunohost app setting vpnclient wired_device -v ${wired_device}
  30. sudo yunohost app setting vpnclient ip6_addr -v ${ip6_addr}
  31. sudo yunohost app setting vpnclient ip6_net -v ${ip6_net}
  32. sudo yunohost app setting vpnclient server_name -v ${server_name}
  33. sudo yunohost app setting vpnclient server_ip6 -v ${server_ip6}
  34. # Copy confs
  35. sudo install -b -o root -g root -m 0644 ../conf/openvpn_client.conf.tpl /etc/openvpn/client.conf.tpl
  36. sudo install -b -o root -g root -m 0644 ../conf/nginx_vpnadmin.conf /etc/nginx/conf.d/${domain}.d/vpnadmin.conf
  37. sudo install -b -o root -g root -m 0644 ../conf/phpfpm_vpnadmin.conf /etc/php5/fpm/pool.d/vpnadmin.conf
  38. # Copy web sources
  39. sudo mkdir -pm 0755 /var/www/vpnadmin/
  40. sudo cp -a ../conf/sources/* /var/www/vpnadmin/
  41. sudo chown -R root: /var/www/vpnadmin/
  42. sudo chmod -R 0644 /var/www/vpnadmin/*
  43. sudo find /var/www/vpnadmin/ -type d -exec chmod +x {} \;
  44. # Copy certificates
  45. sudo mkdir -pm 0700 /etc/openvpn/keys/
  46. sudo chown root: /etc/openvpn/keys/
  47. sudo install -b -o root -g root -m 0600 ${crt_client_path} /etc/openvpn/keys/user.crt
  48. sudo install -b -o root -g root -m 0600 ${crt_client_key_path} /etc/openvpn/keys/user.key
  49. sudo install -b -o root -g root -m 0600 ${crt_server_ca_path} /etc/openvpn/keys/ca-server.crt
  50. sudo rm -f ${crt_client_path} ${crt_client_key_path} ${crt_server_ca_path}
  51. # Create user for the web admin
  52. sudo useradd -MUr vpnadmin
  53. # Fix confs
  54. ## openvpn
  55. sudo sed "s|<TPL:SERVER_NAME>|${server_name}|g" -i /etc/openvpn/client.conf.tpl
  56. ## nginx
  57. sudo sed "s|<TPL:NGINX_LOCATION>|${url_path}|g" -i /etc/nginx/conf.d/${domain}.d/vpnadmin.conf
  58. sudo sed 's|<TPL:NGINX_ALIAS>|/var/www/vpnadmin/|g' -i /etc/nginx/conf.d/${domain}.d/vpnadmin.conf
  59. # php-fpm
  60. sudo sed 's|<TPL:PHP_NAME>|vpnadmin|g' -i /etc/php5/fpm/pool.d/vpnadmin.conf
  61. sudo sed 's|<TPL:PHP_USER>|vpnadmin|g' -i /etc/php5/fpm/pool.d/vpnadmin.conf
  62. sudo sed 's|<TPL:PHP_GROUP>|vpnadmin|g' -i /etc/php5/fpm/pool.d/vpnadmin.conf
  63. # Copy init script
  64. sudo install -b -o root -g root -m 0755 ../conf/init_ynh-vpnclient /etc/init.d/ynh-vpnclient
  65. # Fix init script
  66. ## ynh-vpnclient
  67. sudo sed "s|<TPL:IP6_ADDR>|${ip6_addr}|g" -i /etc/init.d/ynh-vpnclient
  68. sudo sed "s|<TPL:SERVER_IP6>|${server_ip6}|g" -i /etc/init.d/ynh-vpnclient
  69. sudo sed "s|<TPL:WIRED_DEVICE>|${wired_device}|g" -i /etc/init.d/ynh-vpnclient
  70. # Set default inits
  71. # The openvpn configuration is modified before the start, so the service is disabled by default
  72. # and the ynh-vpnclient service handles it.
  73. # All services are registred by yunohost in order to prevent conflicts after the uninstall.
  74. sudo yunohost service add openvpn
  75. sudo yunohost service stop openvpn
  76. sudo yunohost service disable openvpn
  77. sudo yunohost service add php5-fpm
  78. sudo yunohost service enable php5-fpm
  79. sudo yunohost service stop php5-fpm
  80. sudo yunohost service start php5-fpm
  81. sudo yunohost service add ynh-vpnclient
  82. sudo yunohost service enable ynh-vpnclient
  83. sudo yunohost service start ynh-vpnclient
  84. sudo service nginx reload
  85. # Update SSO for vpnadmin
  86. sudo yunohost app ssowatconf
  87. # Restart hotspot service if installed to change NAT configuration (now on tun0)
  88. sudo yunohost app list -f hotspot --json | grep -q '"installed": true'
  89. if [ "$?" -eq 0 ]; then
  90. sudo yunohost service stop ynh-hotspot
  91. sudo yunohost service start ynh-hotspot
  92. fi
  93. exit 0