From 20db75b2b01dcbf01e2845dede3cd539d3999ce0 Mon Sep 17 00:00:00 2001 From: Julien Vaubourg Date: Sun, 14 Aug 2016 18:56:29 +0200 Subject: [PATCH 01/11] show pwd --- scripts/upgrade | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/scripts/upgrade b/scripts/upgrade index 529a0b2..17767ea 100644 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -22,7 +22,11 @@ if [ ! -e /etc/openvpn/client.conf.tpl.restore ] || ! cmp -s /etc/openvpn/client fi export VPNCLIENT_UPGRADE=1 +echo "Current path: $PWD" +read sudo bash /etc/yunohost/apps/vpnclient/scripts/remove &> /dev/null +echo "Current path: $PWD" +read bash ./install "${domain}" "${path}" "${server_name}" sudo cp -a "${tmpdir}/settings.yml" /etc/yunohost/apps/vpnclient/ From 093249b94eff81ba8f345b9f9cf512785033b94b Mon Sep 17 00:00:00 2001 From: Julien Vaubourg Date: Sun, 14 Aug 2016 19:14:10 +0200 Subject: [PATCH 02/11] pwd without prompt --- scripts/upgrade | 2 -- 1 file changed, 2 deletions(-) diff --git a/scripts/upgrade b/scripts/upgrade index 17767ea..04a06de 100644 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -23,10 +23,8 @@ fi export VPNCLIENT_UPGRADE=1 echo "Current path: $PWD" -read sudo bash /etc/yunohost/apps/vpnclient/scripts/remove &> /dev/null echo "Current path: $PWD" -read bash ./install "${domain}" "${path}" "${server_name}" sudo cp -a "${tmpdir}/settings.yml" /etc/yunohost/apps/vpnclient/ From 453fababef04ae13fb7e8e9dddcc101956972e1a Mon Sep 17 00:00:00 2001 From: Julien Vaubourg Date: Sun, 14 Aug 2016 21:05:16 +0200 Subject: [PATCH 03/11] Add vpnclient checker timer and upgrade backups, to enable Bram to sleep better --- conf/ynh-vpnclient-checker.service | 8 ++++++++ conf/ynh-vpnclient-checker.sh | 7 +++++++ conf/ynh-vpnclient-checker.timer | 8 ++++++++ scripts/install | 8 ++++++++ scripts/remove | 4 ++-- scripts/upgrade | 21 +++++++++++---------- 6 files changed, 44 insertions(+), 12 deletions(-) create mode 100644 conf/ynh-vpnclient-checker.service create mode 100644 conf/ynh-vpnclient-checker.sh create mode 100644 conf/ynh-vpnclient-checker.timer diff --git a/conf/ynh-vpnclient-checker.service b/conf/ynh-vpnclient-checker.service new file mode 100644 index 0000000..9a5b653 --- /dev/null +++ b/conf/ynh-vpnclient-checker.service @@ -0,0 +1,8 @@ +[Unit] +Description=YunoHost VPN Client Checker. +Requires=ynh-vpnclient.service +After=ynh-vpnclient.service + +[Service] +Type=simple +ExecStart=/usr/local/bin/ynh-vpnclient-checker.sh diff --git a/conf/ynh-vpnclient-checker.sh b/conf/ynh-vpnclient-checker.sh new file mode 100644 index 0000000..cc4e2d1 --- /dev/null +++ b/conf/ynh-vpnclient-checker.sh @@ -0,0 +1,7 @@ +#!/bin/bash + +if ! ip link show tun0 &> /dev/null; then + systemctl restart ynh-vpnclient &> /dev/null +fi + +exit 0 diff --git a/conf/ynh-vpnclient-checker.timer b/conf/ynh-vpnclient-checker.timer new file mode 100644 index 0000000..2b7d669 --- /dev/null +++ b/conf/ynh-vpnclient-checker.timer @@ -0,0 +1,8 @@ +[Unit] +Description=Run VPN Client Checker every 5 minutes. + +[Timer] +OnUnitActiveSec=5min + +[Install] +WantedBy=timers.target diff --git a/scripts/install b/scripts/install index 29ce951..a865046 100644 --- a/scripts/install +++ b/scripts/install @@ -112,6 +112,11 @@ sudo sed "s||${url_path}|g" -i /var/www/vpnadmin/config.php sudo install -o root -g root -m 0755 ../conf/ynh-vpnclient /usr/local/bin/ sudo install -o root -g root -m 0644 ../conf/ynh-vpnclient.service /etc/systemd/system/ +# Copy checker timer +sudo install -o root -g root -m 0755 ../conf/ynh-vpnclient-checker.sh /usr/local/bin/ +sudo install -o root -g root -m 0644 ../conf/ynh-vpnclient-checker.service /etc/systemd/system/ +sudo install -o root -g root -m 0644 ../conf/ynh-vpnclient-checker.timer /etc/systemd/system/ + # Set default inits # The boot order of these services are important, so they are disabled by default # and the ynh-vpnclient service handles them. @@ -126,6 +131,9 @@ sudo systemctl reload nginx sudo systemctl enable ynh-vpnclient sudo yunohost service add ynh-vpnclient +sudo systemctl start ynh-vpnclient-checker.timer +sudo systemctl enable ynh-vpnclient-checker.timer + if ! $upgrade; then sudo systemctl start ynh-vpnclient diff --git a/scripts/remove b/scripts/remove index 8abc36f..b172d6f 100644 --- a/scripts/remove +++ b/scripts/remove @@ -21,10 +21,11 @@ domain=$(sudo yunohost app setting vpnclient domain) # The End +sudo systemctl disable ynh-vpnclient-checker.timer && sleep 1 sudo systemctl stop ynh-vpnclient sudo systemctl disable ynh-vpnclient sudo yunohost service remove ynh-vpnclient -sudo rm -f /etc/systemd/system/ynh-vpnclient.service /usr/local/bin/ynh-vpnclient +sudo rm -f /etc/systemd/system/ynh-vpnclient* /usr/local/bin/ynh-vpnclient* sudo rm -f /tmp/.ynh-vpnclient-* # Remove confs @@ -33,7 +34,6 @@ sudo rm -f /etc/nginx/conf.d/${domain}.d/vpnadmin.conf sudo rm -f /etc/php5/fpm/pool.d/vpnadmin.conf sudo rm -f /etc/yunohost/hooks.d/90-vpnclient.tpl sudo rm -f /etc/systemd/system/openvpn@.service -sudo rm -f /usr/local/bin/ynh-vpnclient-loadcubefile.sh # Remove certificates sudo rm -rf /etc/openvpn/keys/ diff --git a/scripts/upgrade b/scripts/upgrade index 04a06de..4253464 100644 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -9,28 +9,29 @@ ynh_setting() { source ./prerequisites +cachedir=/var/cache/labriqueinternet/ domain=$(ynh_setting vpnclient domain) path=$(ynh_setting vpnclient path) server_name=$(ynh_setting vpnclient server_name) -tmpdir=$(mktemp -dp /tmp/ vpnclient-upgrade-XXXXX) -sudo cp -a /etc/yunohost/apps/vpnclient/settings.yml "${tmpdir}/" -sudo cp -a /etc/openvpn/keys/ "${tmpdir}/" +sudo mkdir -m 0700 -p "${cachedir}/vpnclient/" +backupdir=$(mktemp -dp ${cachedir}/vpnclient/ upgrade_$(date +%Y-%m-%d-%H%M%S)_XXXXX) + +sudo tar czf "${backupdir}/etc_openvpn.tgz" /etc/openvpn/ +sudo cp -a /etc/yunohost/apps/vpnclient/settings.yml "${backupdir}/" +sudo cp -a /etc/openvpn/keys/ "${backupdir}/" if [ ! -e /etc/openvpn/client.conf.tpl.restore ] || ! cmp -s /etc/openvpn/client.conf.tpl{,.restore}; then - sudo cp -a /etc/openvpn/client.conf.tpl "${tmpdir}/" + sudo cp -a /etc/openvpn/client.conf.tpl "${backupdir}/" fi export VPNCLIENT_UPGRADE=1 -echo "Current path: $PWD" sudo bash /etc/yunohost/apps/vpnclient/scripts/remove &> /dev/null -echo "Current path: $PWD" bash ./install "${domain}" "${path}" "${server_name}" -sudo cp -a "${tmpdir}/settings.yml" /etc/yunohost/apps/vpnclient/ -sudo cp -a "${tmpdir}/keys/"* /etc/openvpn/keys/ 2> /dev/null -sudo cp -a "${tmpdir}/client.conf.tpl" /etc/openvpn/ 2> /dev/null -sudo rm -r "${tmpdir}/" +sudo cp -a "${backupdir}/settings.yml" /etc/yunohost/apps/vpnclient/ +sudo cp -a "${backupdir}/keys/"* /etc/openvpn/keys/ 2> /dev/null +sudo cp -a "${backupdir}/client.conf.tpl" /etc/openvpn/ 2> /dev/null # Changes From fe1fbb990c4962db0863c1fcefe0663c1805f3df Mon Sep 17 00:00:00 2001 From: Julien Vaubourg Date: Sun, 14 Aug 2016 21:07:59 +0200 Subject: [PATCH 04/11] Add fucking missing sudo --- scripts/upgrade | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/upgrade b/scripts/upgrade index 4253464..c2fab68 100644 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -15,7 +15,7 @@ path=$(ynh_setting vpnclient path) server_name=$(ynh_setting vpnclient server_name) sudo mkdir -m 0700 -p "${cachedir}/vpnclient/" -backupdir=$(mktemp -dp ${cachedir}/vpnclient/ upgrade_$(date +%Y-%m-%d-%H%M%S)_XXXXX) +backupdir=$(sudo mktemp -dp ${cachedir}/vpnclient/ upgrade_$(date +%Y-%m-%d-%H%M%S)_XXXXX) sudo tar czf "${backupdir}/etc_openvpn.tgz" /etc/openvpn/ sudo cp -a /etc/yunohost/apps/vpnclient/settings.yml "${backupdir}/" From b53b62a7a31c037264cb472b8d251c37efc29310 Mon Sep 17 00:00:00 2001 From: Julien Vaubourg Date: Sun, 14 Aug 2016 21:32:12 +0200 Subject: [PATCH 05/11] Remove require condition --- conf/ynh-vpnclient-checker.service | 1 - 1 file changed, 1 deletion(-) diff --git a/conf/ynh-vpnclient-checker.service b/conf/ynh-vpnclient-checker.service index 9a5b653..fe95886 100644 --- a/conf/ynh-vpnclient-checker.service +++ b/conf/ynh-vpnclient-checker.service @@ -1,6 +1,5 @@ [Unit] Description=YunoHost VPN Client Checker. -Requires=ynh-vpnclient.service After=ynh-vpnclient.service [Service] From 43d44616faaeae8fb2d4e7a35c05a4e634a0db26 Mon Sep 17 00:00:00 2001 From: Julien Vaubourg Date: Sun, 14 Aug 2016 22:03:58 +0200 Subject: [PATCH 06/11] Remove quotes --- scripts/upgrade | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/scripts/upgrade b/scripts/upgrade index c2fab68..9f499fb 100644 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -30,7 +30,7 @@ sudo bash /etc/yunohost/apps/vpnclient/scripts/remove &> /dev/null bash ./install "${domain}" "${path}" "${server_name}" sudo cp -a "${backupdir}/settings.yml" /etc/yunohost/apps/vpnclient/ -sudo cp -a "${backupdir}/keys/"* /etc/openvpn/keys/ 2> /dev/null +sudo cp -a ${backupdir}/keys/* /etc/openvpn/keys/ 2> /dev/null sudo cp -a "${backupdir}/client.conf.tpl" /etc/openvpn/ 2> /dev/null # Changes From d6b7958064e08ad565fb76707ebdd736a992d42f Mon Sep 17 00:00:00 2001 From: Julien Vaubourg Date: Sun, 14 Aug 2016 22:13:41 +0200 Subject: [PATCH 07/11] Stop timer when removing --- scripts/remove | 3 ++- scripts/upgrade | 16 ++++++++-------- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/scripts/remove b/scripts/remove index b172d6f..87e0628 100644 --- a/scripts/remove +++ b/scripts/remove @@ -21,7 +21,8 @@ domain=$(sudo yunohost app setting vpnclient domain) # The End -sudo systemctl disable ynh-vpnclient-checker.timer && sleep 1 +sudo systemctl stop ynh-vpnclient-checker.timer && sleep 1 +sudo systemctl disable ynh-vpnclient-checker.timer sudo systemctl stop ynh-vpnclient sudo systemctl disable ynh-vpnclient sudo yunohost service remove ynh-vpnclient diff --git a/scripts/upgrade b/scripts/upgrade index 9f499fb..3ce1fe6 100644 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -15,23 +15,23 @@ path=$(ynh_setting vpnclient path) server_name=$(ynh_setting vpnclient server_name) sudo mkdir -m 0700 -p "${cachedir}/vpnclient/" -backupdir=$(sudo mktemp -dp ${cachedir}/vpnclient/ upgrade_$(date +%Y-%m-%d-%H%M%S)_XXXXX) +rollbackdir=$(sudo mktemp -dp ${cachedir}/vpnclient/ rollback_$(date +%Y-%m-%d-%H%M%S)_XXXXX) -sudo tar czf "${backupdir}/etc_openvpn.tgz" /etc/openvpn/ -sudo cp -a /etc/yunohost/apps/vpnclient/settings.yml "${backupdir}/" -sudo cp -a /etc/openvpn/keys/ "${backupdir}/" +sudo tar czf "${rollbackdir}/etc_openvpn.tgz" /etc/openvpn/ +sudo cp -a /etc/yunohost/apps/vpnclient/settings.yml "${rollbackdir}/" +sudo cp -a /etc/openvpn/keys/ "${rollbackdir}/" if [ ! -e /etc/openvpn/client.conf.tpl.restore ] || ! cmp -s /etc/openvpn/client.conf.tpl{,.restore}; then - sudo cp -a /etc/openvpn/client.conf.tpl "${backupdir}/" + sudo cp -a /etc/openvpn/client.conf.tpl "${rollbackdir}/" fi export VPNCLIENT_UPGRADE=1 sudo bash /etc/yunohost/apps/vpnclient/scripts/remove &> /dev/null bash ./install "${domain}" "${path}" "${server_name}" -sudo cp -a "${backupdir}/settings.yml" /etc/yunohost/apps/vpnclient/ -sudo cp -a ${backupdir}/keys/* /etc/openvpn/keys/ 2> /dev/null -sudo cp -a "${backupdir}/client.conf.tpl" /etc/openvpn/ 2> /dev/null +sudo cp -a "${rollbackdir}/settings.yml" /etc/yunohost/apps/vpnclient/ +sudo cp -a "${rollbackdir}/keys/"* /etc/openvpn/keys/ +sudo cp -a "${rollbackdir}/client.conf.tpl" /etc/openvpn/ 2> /dev/null # Changes From 72e19aaacbb7cce30b8df7204f01af138f714b3f Mon Sep 17 00:00:00 2001 From: Julien Vaubourg Date: Sun, 14 Aug 2016 22:17:42 +0200 Subject: [PATCH 08/11] Test without quotes --- scripts/upgrade | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scripts/upgrade b/scripts/upgrade index 3ce1fe6..c7c0416 100644 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -30,7 +30,8 @@ sudo bash /etc/yunohost/apps/vpnclient/scripts/remove &> /dev/null bash ./install "${domain}" "${path}" "${server_name}" sudo cp -a "${rollbackdir}/settings.yml" /etc/yunohost/apps/vpnclient/ -sudo cp -a "${rollbackdir}/keys/"* /etc/openvpn/keys/ +sudo cp -a ${rollbackdir}/keys/* /etc/openvpn/keys/ +ls /tmp/* sudo cp -a "${rollbackdir}/client.conf.tpl" /etc/openvpn/ 2> /dev/null # Changes From d5f0b913afb52d27ad3ce03dfd587944fb62d7ab Mon Sep 17 00:00:00 2001 From: Julien Vaubourg Date: Sun, 14 Aug 2016 22:30:41 +0200 Subject: [PATCH 09/11] You disappoint me, mr systemd --- conf/ynh-vpnclient-checker.service | 3 +++ scripts/install | 2 ++ scripts/remove | 2 ++ scripts/upgrade | 4 ++-- 4 files changed, 9 insertions(+), 2 deletions(-) diff --git a/conf/ynh-vpnclient-checker.service b/conf/ynh-vpnclient-checker.service index fe95886..1923507 100644 --- a/conf/ynh-vpnclient-checker.service +++ b/conf/ynh-vpnclient-checker.service @@ -5,3 +5,6 @@ After=ynh-vpnclient.service [Service] Type=simple ExecStart=/usr/local/bin/ynh-vpnclient-checker.sh + +[Install] +WantedBy=default.target diff --git a/scripts/install b/scripts/install index a865046..c38e26b 100644 --- a/scripts/install +++ b/scripts/install @@ -131,6 +131,8 @@ sudo systemctl reload nginx sudo systemctl enable ynh-vpnclient sudo yunohost service add ynh-vpnclient +sudo systemctl start ynh-vpnclient-checker.service +sudo systemctl enable ynh-vpnclient-checker.service sudo systemctl start ynh-vpnclient-checker.timer sudo systemctl enable ynh-vpnclient-checker.timer diff --git a/scripts/remove b/scripts/remove index 87e0628..4b707d5 100644 --- a/scripts/remove +++ b/scripts/remove @@ -21,6 +21,8 @@ domain=$(sudo yunohost app setting vpnclient domain) # The End +sudo systemctl stop ynh-vpnclient-checker.service +sudo systemctl disable ynh-vpnclient-checker.service sudo systemctl stop ynh-vpnclient-checker.timer && sleep 1 sudo systemctl disable ynh-vpnclient-checker.timer sudo systemctl stop ynh-vpnclient diff --git a/scripts/upgrade b/scripts/upgrade index c7c0416..c813916 100644 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -29,9 +29,9 @@ export VPNCLIENT_UPGRADE=1 sudo bash /etc/yunohost/apps/vpnclient/scripts/remove &> /dev/null bash ./install "${domain}" "${path}" "${server_name}" +sudo rmdir /etc/openvpn/keys/ +sudo cp -a "${rollbackdir}/keys/" /etc/openvpn/keys/ sudo cp -a "${rollbackdir}/settings.yml" /etc/yunohost/apps/vpnclient/ -sudo cp -a ${rollbackdir}/keys/* /etc/openvpn/keys/ -ls /tmp/* sudo cp -a "${rollbackdir}/client.conf.tpl" /etc/openvpn/ 2> /dev/null # Changes From a999bcf80bd3652bf7d6771038bb01ebe73b9251 Mon Sep 17 00:00:00 2001 From: Julien Vaubourg Date: Sun, 14 Aug 2016 22:57:48 +0200 Subject: [PATCH 10/11] Ok guys, all of this is very crappy, but u know, we do the best --- conf/ynh-vpnclient-checker.sh | 2 +- sources/controller.php | 2 ++ 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/conf/ynh-vpnclient-checker.sh b/conf/ynh-vpnclient-checker.sh index cc4e2d1..c5b5dde 100644 --- a/conf/ynh-vpnclient-checker.sh +++ b/conf/ynh-vpnclient-checker.sh @@ -1,6 +1,6 @@ #!/bin/bash -if ! ip link show tun0 &> /dev/null; then +if [ ! -e /tmp/.ynh-vpnclient-stopped ] && ! ip link show tun0 &> /dev/null; then systemctl restart ynh-vpnclient &> /dev/null fi diff --git a/sources/controller.php b/sources/controller.php index c6e158e..e399c37 100644 --- a/sources/controller.php +++ b/sources/controller.php @@ -31,10 +31,12 @@ function ynh_setting_set($setting, $value) { } function stop_service() { + touch('/tmp/.ynh-vpnclient-stopped'); exec('sudo systemctl stop ynh-vpnclient'); } function start_service() { + unlink('/tmp/.ynh-vpnclient-stopped'); exec('sudo systemctl start ynh-vpnclient', $output, $retcode); return $retcode; From cd197483cd02b3811ce1da70227a96af7776134d Mon Sep 17 00:00:00 2001 From: Julien Vaubourg Date: Sun, 14 Aug 2016 23:20:26 +0200 Subject: [PATCH 11/11] Rollbacks as archives --- scripts/upgrade | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/scripts/upgrade b/scripts/upgrade index c813916..d42eccb 100644 --- a/scripts/upgrade +++ b/scripts/upgrade @@ -9,20 +9,19 @@ ynh_setting() { source ./prerequisites -cachedir=/var/cache/labriqueinternet/ domain=$(ynh_setting vpnclient domain) path=$(ynh_setting vpnclient path) server_name=$(ynh_setting vpnclient server_name) -sudo mkdir -m 0700 -p "${cachedir}/vpnclient/" -rollbackdir=$(sudo mktemp -dp ${cachedir}/vpnclient/ rollback_$(date +%Y-%m-%d-%H%M%S)_XXXXX) +sudo mkdir -m 0700 -p /var/cache/labriqueinternet/vpnclient/ +sudo tar czf "/var/cache/labriqueinternet/vpnclient/rollback_$(date +%Y-%m-%d-%H%M%S).tgz" /etc/openvpn/ /etc/yunohost/apps/vpnclient/ &> /dev/null -sudo tar czf "${rollbackdir}/etc_openvpn.tgz" /etc/openvpn/ -sudo cp -a /etc/yunohost/apps/vpnclient/settings.yml "${rollbackdir}/" -sudo cp -a /etc/openvpn/keys/ "${rollbackdir}/" +tmpdir=$(mktemp -dp /tmp/ vpnclient-upgrade-XXXXX) +sudo cp -a /etc/yunohost/apps/vpnclient/settings.yml "${tmpdir}/" +sudo cp -a /etc/openvpn/keys/ "${tmpdir}/" if [ ! -e /etc/openvpn/client.conf.tpl.restore ] || ! cmp -s /etc/openvpn/client.conf.tpl{,.restore}; then - sudo cp -a /etc/openvpn/client.conf.tpl "${rollbackdir}/" + sudo cp -a /etc/openvpn/client.conf.tpl "${tmpdir}/" fi export VPNCLIENT_UPGRADE=1 @@ -30,9 +29,10 @@ sudo bash /etc/yunohost/apps/vpnclient/scripts/remove &> /dev/null bash ./install "${domain}" "${path}" "${server_name}" sudo rmdir /etc/openvpn/keys/ -sudo cp -a "${rollbackdir}/keys/" /etc/openvpn/keys/ -sudo cp -a "${rollbackdir}/settings.yml" /etc/yunohost/apps/vpnclient/ -sudo cp -a "${rollbackdir}/client.conf.tpl" /etc/openvpn/ 2> /dev/null +sudo cp -a "${tmpdir}/keys/" /etc/openvpn/keys/ +sudo cp -a "${tmpdir}/settings.yml" /etc/yunohost/apps/vpnclient/ +sudo cp -a "${tmpdir}/client.conf.tpl" /etc/openvpn/ 2> /dev/null +sudo rm -r "${tmpdir}/" # Changes