Browse Source

[mod] backup script rewritten (inspired and adpated from example_ynh).

Currently neither backup nor restore are useful but are safe enough to
not break the upgrade script. That's what matters for now.
pitchum 7 years ago
parent
commit
681fe2b58c
3 changed files with 70 additions and 4 deletions
  1. 14 0
      scripts/_common.sh
  2. 49 4
      scripts/backup
  3. 7 0
      scripts/upgrade

+ 14 - 0
scripts/_common.sh

@@ -6,6 +6,20 @@
 pkg_dependencies="php5-fpm sipcalc dnsutils openvpn curl fake-hwclock"
 
 
+# Experimental helpers
+# Cf. https://github.com/YunoHost-Apps/Experimental_helpers/blob/72b0bc77c68d4a4a2bf4e95663dbc05e4a762a0a/ynh_read_manifest/ynh_read_manifest
+read_json () {
+    sudo python3 -c "import sys, json;print(json.load(open('$1'))['$2'])"
+}
+read_manifest () {
+    if [ -f '../manifest.json' ] ; then
+        read_json '../manifest.json' "$1"
+    else
+        read_json '../settings/manifest.json' "$1"
+    fi
+}
+
+
 # Helper to start/stop/.. a systemd service from a yunohost context,
 # *and* the systemd service itself needs to be able to run yunohost
 # commands.

+ 49 - 4
scripts/backup

@@ -1,16 +1,61 @@
 #!/bin/bash
 
 #=================================================
+# GENERIC START
+#=================================================
+# IMPORT GENERIC HELPERS
+#=================================================
+
+if [ ! -e _common.sh ]; then
+	# Get the _common.sh file if it's not in the current directory
+	cp ../settings/scripts/_common.sh ./_common.sh
+	chmod a+rx _common.sh
+fi
+source _common.sh
+source /usr/share/yunohost/helpers
+
+#=================================================
 # MANAGE SCRIPT FAILURE
 #=================================================
 
 ynh_abort_if_errors # Stop script if an error is detected
 
 #=================================================
+# LOAD SETTINGS
+#=================================================
+
+app=$YNH_APP_INSTANCE_NAME
+
+final_path=$(ynh_app_setting_get $app final_path)
+domain=$(ynh_app_setting_get $app domain)
+
+#=================================================
+# STANDARD BACKUP STEPS
+#=================================================
+# BACKUP THE APP MAIN DIR
+#=================================================
+
+ynh_backup "$final_path"
+
+#=================================================
+# BACKUP THE NGINX CONFIGURATION
+#=================================================
+
+ynh_backup "/etc/nginx/conf.d/$domain.d/${app}.conf"
+
+#=================================================
+# BACKUP THE PHP-FPM CONFIGURATION
+#=================================================
+
+ynh_backup "/etc/php5/fpm/pool.d/$app.conf"
 
-backup_dir="${1}/apps/vpnclient"
-mkdir -p "${backup_dir}/"
+#=================================================
+# SPECIFIC BACKUP
+#=================================================
+# BACKUP SYSTEMD
+#=================================================
 
-sudo cp -a /etc/openvpn/keys/ "${backup_dir}/"
-sudo cp -a /etc/openvpn/client.conf.tpl "${backup_dir}/"
+ynh_backup "/etc/systemd/system/ynh-$app.service" # XXX maybe hard-coding the full name would be better
+ynh_backup "/etc/systemd/system/ynh-$app-checker.service" # XXX maybe hard-coding the full name would be better
+ynh_backup "/etc/systemd/system/ynh-$app-checker.timer" # XXX maybe hard-coding the full name would be better
 

+ 7 - 0
scripts/upgrade

@@ -38,6 +38,13 @@ if [ -f /etc/php5/fpm/pool.d/vpnadmin.conf ]; then
 fi
 test -d /var/www/vpnadmin && mv /var/www/vpnadmin /var/www/${app}
 
+# Versions known to have a buggy backup script
+buggy_versions="1.0.0 1.0.1 1.1.0"
+curr_version=$(read_manifest version)
+if echo $buggy_versions | grep -w $curr_version > /dev/null; then
+  echo "Your current version of ${app} is very old: ${curr_version}. Please ignore the next warning." >&2
+fi
+
 #=================================================
 # BACKUP BEFORE UPGRADE THEN ACTIVE TRAP
 #=================================================