install 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. #!/bin/bash
  2. # Retrieve arguments
  3. server_name=$1
  4. crt_client_path=$2
  5. crt_client_key_path=$3
  6. crt_server_ca_path=$4
  7. ip6_net=$5
  8. # Check arguments
  9. # TODO
  10. # Install packages
  11. sudo apt-get --assume-yes --force-yes install openvpn
  12. # Install extra packages
  13. sudo apt-get --assume-yes --force-yes install sipcalc
  14. # Compute extra arguments
  15. wired_device=$(ip r | awk '/default via/ { print $NF; }')
  16. ip6_expanded_net=$(sipcalc ${ip6_net} | grep Expanded | awk '{ print $NF; }')
  17. ip6_net=$(sipcalc ${ip6_net} | grep Compressed | awk '{ print $NF; }')
  18. ip6_addr=$(echo "$(echo ${ip6_expanded_net} | cut -d: -f1-7):1")
  19. ip6_addr=$(sipcalc ${ip6_addr} | grep Compressed | awk '{ print $NF; }')
  20. server_ip6=$(host ${server_name} | awk '/IPv6/ { print $NF; }')
  21. # Save arguments for future upgrades
  22. sudo yunohost app setting vpnclient wired_device -v ${wired_device}
  23. sudo yunohost app setting vpnclient ip6_addr -v ${ip6_addr}
  24. sudo yunohost app setting vpnclient ip6_net -v ${ip6_net}
  25. sudo yunohost app setting vpnclient server_name -v ${server_name}
  26. sudo yunohost app setting vpnclient server_ip6 -v ${server_ip6}
  27. # Copy confs
  28. sudo install -b -o root -g root -m 0644 ../conf/client.conf.tpl /etc/openvpn/
  29. # Copy certificates
  30. sudo mkdir -pm 0700 /etc/openvpn/keys/
  31. sudo chown root: /etc/openvpn/keys/
  32. sudo install -b -o root -g root -m 0600 ${crt_client_path} /etc/openvpn/keys/user.crt
  33. sudo install -b -o root -g root -m 0600 ${crt_client_key_path} /etc/openvpn/keys/user.key
  34. sudo install -b -o root -g root -m 0600 ${crt_server_ca_path} /etc/openvpn/keys/ca-server.crt
  35. sudo rm -f ${crt_client_path} ${crt_client_key_path} ${crt_server_ca_path}
  36. # Fix confs
  37. ## openvpn
  38. sudo sed "s|<TPL:SERVER_NAME>|${server_name}|g" -i /etc/openvpn/client.conf.tpl
  39. # Copy init script
  40. sudo install -b -o root -g root -m 0755 ../conf/ynh-vpnclient /etc/init.d/
  41. # Fix init script
  42. ## ynh-vpnclient
  43. sudo sed "s|<TPL:IP6_ADDR>|${ip6_addr}|g" -i /etc/init.d/ynh-vpnclient
  44. sudo sed "s|<TPL:SERVER_IP6>|${server_ip6}|g" -i /etc/init.d/ynh-vpnclient
  45. sudo sed "s|<TPL:WIRED_DEVICE>|${wired_device}|g" -i /etc/init.d/ynh-vpnclient
  46. # Set default inits
  47. # The openvpn configuration is modified before the start, so the service is disabled by default
  48. # and the ynh-vpnclient service handles it.
  49. # All services are registred by yunohost in order to prevent conflicts after the uninstall.
  50. sudo yunohost service add openvpn
  51. sudo yunohost service stop openvpn
  52. sudo yunohost service disable openvpn
  53. # Gooo
  54. sudo yunohost service add ynh-vpnclient
  55. sudo yunohost service enable ynh-vpnclient
  56. sudo yunohost service start ynh-vpnclient
  57. # Restart hotspot service if installed to change NAT configuration (now on tun0)
  58. sudo yunohost app list -f hotspot --json | grep -q '"installed": true'
  59. if [ "$?" -eq 0 ]; then
  60. sudo yunohost service stop ynh-hotspot
  61. sudo yunohost service start ynh-hotspot
  62. fi
  63. exit 0