diff --git a/actions.json b/actions.json
new file mode 100644
index 0000000..862ff5d
--- /dev/null
+++ b/actions.json
@@ -0,0 +1,22 @@
+[{
+ "id": "reset_default_unattended",
+ "name": "Reset the 50unattended-upgrades config file and restore a default one.",
+ "command": "/bin/bash scripts/actions/reset_default_config \"50unattended-upgrades\"",
+ "user": "root",
+ "accepted_return_codes": [0],
+ "description": {
+ "en": "Reset the unattended-upgrades config file 50unattended-upgrades.",
+ "fr": "Réinitialise le fichier de configuration unattended-upgrades 50unattended-upgrades."
+ }
+},
+{
+ "id": "reset_default_periodic",
+ "name": "Reset the 02periodic apt config file and restore a default one.",
+ "command": "/bin/bash scripts/actions/reset_default_config \"02periodic\"",
+ "user": "root",
+ "accepted_return_codes": [0],
+ "description": {
+ "en": "Reset the config file 02periodic.",
+ "fr": "Réinitialise le fichier de configuration 02periodic."
+ }
+}]
diff --git a/config_panel.json b/config_panel.json
new file mode 100644
index 0000000..59334f7
--- /dev/null
+++ b/config_panel.json
@@ -0,0 +1,89 @@
+{
+ "name": "Unattended-upgrades configuration panel",
+ "version": "0.1",
+ "panel": [{
+ "name": "Unattended-upgrades configuration",
+ "id": "main",
+ "sections": [{
+ "name": "50unattended-upgrades configuration file",
+ "id": "unattended_configuration",
+ "options": [{
+ "name": "Choose the sources of packages to automatically upgrade.",
+ "help": "We can't use a choices field for now. In the meantime please choose between one of this values:
Security only, Security and updates.",
+ "id": "upgrade_level",
+ "type": "text",
+ "//": "\"choices\" : [\"Security only\", \"Security and updates\"]",
+ "default" : "Security only"
+ },
+ {
+ "name": "Would you like to update YunoHost packages automatically ?",
+ "id": "ynh_update",
+ "type": "bool",
+ "default": true
+ },
+ {
+ "name": "Would you like to receive an email from Unattended-Upgrades ?",
+ "help": "We can't use a choices field for now. In the meantime please choose between one of this values:
If an upgrade has been done, Only if there was an error, Never.",
+ "id": "unattended_mail",
+ "type": "text",
+ "//": "\"choices\" : [\"If an upgrade has been done\", \"Only if there was an error\", \"Never\"]",
+ "default" : "If an upgrade has been done"
+ }]
+ },
+ {
+ "name": "apticron cron file",
+ "id": "apticron_configuration",
+ "options": [{
+ "name": "Would you like to receive an email to inform which upgrades need to be done ?",
+ "id": "previous_apticron",
+ "type": "bool",
+ "default": true
+ },
+ {
+ "name": "When do you want to receive this email ?",
+ "help": "Choose an hour between 12 and 23.
",
+ "id": "previous_apticron_hour",
+ "type": "number",
+ "default": 20
+ },
+ {
+ "name": "Would you like to receive an email to verify if there any upgrades left after each auto upgrade ?",
+ "id": "after_apticron",
+ "type": "bool",
+ "default": true
+ },
+ {
+ "name": "When do you want to receive this email ?",
+ "help": "Choose an hour between 0 and 10.",
+ "id": "after_apticron_hour",
+ "type": "number",
+ "default": 2
+ }]
+ },
+ {
+ "name": "02periodic apt config file",
+ "id": "periodic_configuration",
+ "options": [{
+ "name": "Choose the level of verbosity of Unattended-Upgrades mail",
+ "help": "We can't use a choices field for now. In the meantime please choose between one of this values:
1, 2, 3.",
+ "help": "1: Progress report only.
2: Progress report and command outputs.
3: Progress report and command outputs and trace.",
+ "id": "unattended_verbosity",
+ "type": "text",
+ "//": "\"choices\" : [\"1\", \"2\", \"3\"]",
+ "default" : "1"
+ }]
+ },
+ {
+ "name": "Overwriting config files",
+ "id": "overwrite_files",
+ "options": [{
+ "name": "Overwrite the config file 02periodic ?",
+ "help": "If the file is overwritten, a backup will be created.",
+ "id": "overwrite_periodic",
+ "type": "bool",
+ "default": true
+ }]
+ }]
+ }
+]
+}
diff --git a/scripts/_common.sh b/scripts/_common.sh
index 21234d0..8d58e36 100755
--- a/scripts/_common.sh
+++ b/scripts/_common.sh
@@ -30,6 +30,24 @@ IS_PACKAGE_CHECK () {
return $(env | grep -c container=lxc)
}
+#=================================================
+# BOOLEAN CONVERTER
+#=================================================
+
+bool_to_01 () {
+ local var="$1"
+ [ "$var" = "true" ] && var=1
+ [ "$var" = "false" ] && var=0
+ echo "$var"
+}
+
+bool_to_true_false () {
+ local var="$1"
+ [ "$var" = "1" ] && var=true
+ [ "$var" = "0" ] && var=false
+ echo "$var"
+}
+
#=================================================
# EXPERIMENTAL HELPERS
#=================================================
@@ -517,7 +535,7 @@ EOF
ynh_store_file_checksum "$finalfail2banjailconf"
ynh_store_file_checksum "$finalfail2banfilterconf"
- systemctl reload fail2ban
+ systemctl restart fail2ban
local fail2ban_error="$(journalctl -u fail2ban | tail -n50 | grep "WARNING.*$app.*")"
if [ -n "$fail2ban_error" ]
then
@@ -532,7 +550,7 @@ EOF
ynh_remove_fail2ban_config () {
ynh_secure_remove "/etc/fail2ban/jail.d/$app.conf"
ynh_secure_remove "/etc/fail2ban/filter.d/$app.conf"
- systemctl reload fail2ban
+ systemctl restart fail2ban
}
#=================================================
diff --git a/scripts/actions/reset_default_config b/scripts/actions/reset_default_config
new file mode 100755
index 0000000..f02bfe4
--- /dev/null
+++ b/scripts/actions/reset_default_config
@@ -0,0 +1,102 @@
+#!/bin/bash
+
+#=================================================
+# GENERIC STARTING
+#=================================================
+# IMPORT GENERIC HELPERS
+#=================================================
+
+source scripts/_common.sh
+source /usr/share/yunohost/helpers
+
+#=================================================
+# RETRIEVE ARGUMENTS
+#=================================================
+
+app=${YNH_APP_INSTANCE_NAME:-$YNH_APP_ID}
+upgrade_level="$(ynh_app_setting_get $app upgrade_level)"
+ynh_update="$(ynh_app_setting_get $app ynh_update)"
+unattended_mail="$(ynh_app_setting_get $app unattended_mail)"
+unattended_verbosity="$(ynh_app_setting_get $app unattended_verbosity)"
+
+#=================================================
+# SORT OUT THE CONFIG FILE TO HANDLE
+#=================================================
+
+file="$1"
+
+if [ "$file" = "50unattended-upgrades" ]; then
+ config_file="/etc/apt/apt.conf.d/50unattended-upgrades"
+elif [ "$file" = "02periodic" ]; then
+ config_file="/etc/apt/apt.conf.d/02periodic"
+fi
+
+#=================================================
+# SPECIFIC ACTION
+#=================================================
+# RESET THE CONFIG FILE
+#=================================================
+
+# Verify the checksum and backup the file if it's different
+ynh_backup_if_checksum_is_different "$config_file"
+
+if [ "$file" = "50unattended-upgrades" ]
+then
+ # Get the default file and overwrite the current config
+ cp /etc/apt/50unattended-upgrades.backup "$config_file"
+
+ # Recreate the default config
+ distro_codename=$(lsb_release -cs)
+ # Allow security update
+ ynh_replace_string "//\(.*\"o=Debian,n=${distro_codename},l=Debian-Security\";\)" "\1" "$config_file"
+ # Allow other updates
+ if [ "$upgrade_level" = "Security and updates" ]
+ then
+ ynh_replace_string "//\(.*\"o=Debian,n=$distro_codename\";\)" "\1" "$config_file"
+ ynh_replace_string "//\(.*\"o=Debian,n=$distro_codename-updates\";\)" "\1" "$config_file"
+ fi
+
+ # Add YunoHost upgrade source
+ if [ $ynh_update -eq 1 ]
+ then
+ ynh_replace_string "origin=Debian,codename=\${distro_codename},label=Debian-Security\";" \
+ "&\n\n //YunoHost upgrade\n \"o=YunoHost,n=$distro_codename\";" "$config_file"
+ fi
+
+ # Allow MinimalSteps upgrading to reduce risk in case of reboot
+ ynh_replace_string "//\(Unattended-Upgrade::MinimalSteps\).*" "\1 \"true\";" "$config_file"
+
+ # Configure Unattended Upgrades mailing
+ if [ "$unattended_mail" = "If an upgrade has been done" ]
+ then
+ # Allow mail to root
+ ynh_replace_string "//\(Unattended-Upgrade::Mail \)" "\1" "$config_file"
+
+ # Send mail even if there's no errors
+ ynh_replace_string "//\(Unattended-Upgrade::MailOnlyOnError \).*" "\1\"false\";" "$config_file"
+
+ elif [ "$unattended_mail" = "Only if there was an error" ]
+ then
+ # Allow mail to root
+ ynh_replace_string "//\(Unattended-Upgrade::Mail \)" "\1" "$config_file"
+
+ # Send mail only if there's an error
+ ynh_replace_string "//\(Unattended-Upgrade::MailOnlyOnError \).*" "\1\"true\";" "$config_file"
+
+ else # "Never"
+ # Comment "Unattended-Upgrade::Mail" if isn't already commented
+ ynh_replace_string "^\(Unattended-Upgrade::Mail \)" "//\1" "$config_file"
+ fi
+fi
+
+if [ "$file" = "02periodic" ]
+then
+ # Get the default file and overwrite the current config
+ cp /etc/yunohost/apps/$app/conf/02periodic "$config_file"
+
+ # Recreate the default config
+ ynh_replace_string "__VERBOSITY__" "$unattended_verbosity" "/etc/apt/apt.conf.d/02periodic"
+fi
+
+# Calculate and store the config file checksum into the app settings
+ynh_store_file_checksum "$config_file"
diff --git a/scripts/config b/scripts/config
new file mode 100644
index 0000000..be074e4
--- /dev/null
+++ b/scripts/config
@@ -0,0 +1,221 @@
+#!/bin/bash
+
+#=================================================
+# GENERIC STARTING
+#=================================================
+# IMPORT GENERIC HELPERS
+#=================================================
+
+source _common.sh
+source /usr/share/yunohost/helpers
+
+#=================================================
+# RETRIEVE ARGUMENTS
+#=================================================
+
+app=${YNH_APP_INSTANCE_NAME:-$YNH_APP_ID}
+
+final_path=$(ynh_app_setting_get $app final_path)
+
+#=================================================
+# SPECIFIC CODE
+#=================================================
+# LOAD VALUES
+#=================================================
+
+# Load the real value from the app config or elsewhere.
+# Then get the value from the form.
+# If the form has a value for a variable, take the value from the form,
+# Otherwise, keep the value from the app config.
+
+# upgrade_level
+old_upgrade_level="$(ynh_app_setting_get $app upgrade_level)"
+upgrade_level="${YNH_CONFIG_MAIN_UNATTENDED_CONFIGURATION_UPGRADE_LEVEL:-$old_upgrade_level}"
+# ynh_update
+old_ynh_update="$(ynh_app_setting_get $app ynh_update)"
+old_ynh_update=$(bool_to_true_false $old_ynh_update)
+ynh_update="${YNH_CONFIG_MAIN_UNATTENDED_CONFIGURATION_YNH_UPDATE:-$old_ynh_update}"
+# unattended_mail
+old_unattended_mail="$(ynh_app_setting_get $app unattended_mail)"
+unattended_mail="${YNH_CONFIG_MAIN_UNATTENDED_CONFIGURATION_UNATTENDED_MAIL:-$old_unattended_mail}"
+
+# previous_apticron
+old_previous_apticron="$(ynh_app_setting_get $app previous_apticron)"
+old_previous_apticron=$(bool_to_true_false $old_previous_apticron)
+previous_apticron="${YNH_CONFIG_MAIN_APTICRON_CONFIGURATION_PREVIOUS_APTICRON:-$old_previous_apticron}"
+# previous_apticron_hour
+old_previous_apticron_hour="$(cat /etc/cron.d/apticron | grep --max-count=1 "^#*0.*root if.*" | cut -d' ' -f2)"
+previous_apticron_hour="${YNH_CONFIG_MAIN_APTICRON_CONFIGURATION_PREVIOUS_APTICRON_HOUR:-$old_previous_apticron_hour}"
+# after_apticron
+old_after_apticron="$(ynh_app_setting_get $app after_apticron)"
+old_after_apticron=$(bool_to_true_false $old_after_apticron)
+after_apticron="${YNH_CONFIG_MAIN_APTICRON_CONFIGURATION_AFTER_APTICRON:-$old_after_apticron}"
+# after_apticron_hour
+old_after_apticron_hour="$(tac /etc/cron.d/apticron | grep --max-count=1 "^#*0.*root if.*" | cut -d' ' -f2)"
+after_apticron_hour="${YNH_CONFIG_MAIN_APTICRON_CONFIGURATION_AFTER_APTICRON_HOUR:-$old_after_apticron_hour}"
+
+# unattended_verbosity
+old_unattended_verbosity="$(ynh_app_setting_get $app unattended_verbosity)"
+unattended_verbosity="${YNH_CONFIG_MAIN_PERIODIC_CONFIGURATION_UNATTENDED_VERBOSITY:-$old_unattended_verbosity}"
+
+# Overwrite 02periodic config file
+old_overwrite_periodic="$(ynh_app_setting_get $app overwrite_periodic)"
+old_overwrite_periodic=$(bool_to_true_false $old_overwrite_periodic)
+overwrite_periodic="${YNH_CONFIG_MAIN_OVERWRITE_FILES_OVERWRITE_PERIODIC:-$old_overwrite_periodic}"
+
+#=================================================
+# SHOW_CONFIG FUNCTION FOR 'SHOW' COMMAND
+#=================================================
+
+show_config() {
+ # here you are supposed to read some config file/database/other then print the values
+ # echo "YNH_CONFIG_${PANEL_ID}_${SECTION_ID}_${OPTION_ID}=value"
+
+ echo "YNH_CONFIG_MAIN_UNATTENDED_CONFIGURATION_UPGRADE_LEVEL=$upgrade_level"
+ echo "YNH_CONFIG_MAIN_UNATTENDED_CONFIGURATION_YNH_UPDATE=$ynh_update"
+ echo "YNH_CONFIG_MAIN_UNATTENDED_CONFIGURATION_UNATTENDED_MAIL=$unattended_mail"
+
+ echo "YNH_CONFIG_MAIN_APTICRON_CONFIGURATION_PREVIOUS_APTICRON=$previous_apticron"
+ echo "YNH_CONFIG_MAIN_APTICRON_CONFIGURATION_PREVIOUS_APTICRON_HOUR=$previous_apticron_hour"
+ echo "YNH_CONFIG_MAIN_APTICRON_CONFIGURATION_AFTER_APTICRON=$after_apticron"
+ echo "YNH_CONFIG_MAIN_APTICRON_CONFIGURATION_AFTER_APTICRON_HOUR=$after_apticron_hour"
+
+ echo "YNH_CONFIG_MAIN_PERIODIC_CONFIGURATION_UNATTENDED_VERBOSITY=$unattended_verbosity"
+
+ echo "YNH_CONFIG_MAIN_OVERWRITE_FILES_OVERWRITE_PERIODIC=$overwrite_periodic"
+}
+
+#=================================================
+# MODIFY THE CONFIGURATION
+#=================================================
+
+apply_config() {
+ # Change configuration if needed
+ unattended_upgrades_config="/etc/apt/apt.conf.d/50unattended-upgrades"
+ # upgrade_level
+ if [ "$upgrade_level" != "$old_upgrade_level" ]
+ then
+ if [ "$upgrade_level" = "Security and updates" ]
+ then
+ # Uncomment lines in the config
+ ynh_replace_string "//\( *\"o=Debian,a=stable\)" " \1" "$unattended_upgrades_config"
+ ynh_replace_string "//\( *\"o=Debian,a=stable-updates\)" " \1" "$unattended_upgrades_config"
+ else
+ # Comment lines in the config
+ ynh_replace_string "^ \( *\"o=Debian,a=stable\)" "//\1" "$unattended_upgrades_config"
+ ynh_replace_string "^ \( *\"o=Debian,a=stable-updates\)" "//\1" "$unattended_upgrades_config"
+ fi
+ ynh_app_setting_set $app upgrade_level "$upgrade_level"
+ fi
+ # ynh_update
+ if [ "$ynh_update" != "$old_ynh_update" ]
+ then
+ ynh_update=$(bool_to_01 $ynh_update)
+ if [ "$ynh_update" -eq 1 ]
+ then
+ # Add YunoHost upgrade source
+ ynh_replace_string "origin=Debian,codename=\${distro_codename},label=Debian-Security\";" \
+ "&\n\n //YunoHost upgrade\n \"o=YunoHost,a=stable\";" "$unattended_upgrades_config"
+ else
+ # Remove lines about YunoHost
+ sed --in-place '/YunoHost upgrade/d' "$unattended_upgrades_config"
+ sed --in-place '/o=YunoHost/d' "$unattended_upgrades_config"
+ fi
+ ynh_app_setting_set $app ynh_update "$ynh_update"
+ fi
+ # unattended_mail
+ if [ "$unattended_mail" != "$old_unattended_mail" ]
+ then
+ if [ "$unattended_mail" = "If an upgrade has been done" ]
+ then
+ # Allow mail to root
+ ynh_replace_string "/*\(Unattended-Upgrade::Mail \)" "\1" "$unattended_upgrades_config"
+
+ # Send mail even if there's no errors
+ ynh_replace_string "/*\(Unattended-Upgrade::MailOnlyOnError \).*" "\1\"false\";" "$unattended_upgrades_config"
+
+ elif [ "$unattended_mail" = "Only if there was an error" ]
+ then
+ # Allow mail to root
+ ynh_replace_string "/*\(Unattended-Upgrade::Mail \)" "\1" "$unattended_upgrades_config"
+
+ # Send mail only if there's an error
+ ynh_replace_string "/*\(Unattended-Upgrade::MailOnlyOnError \).*" "\1\"true\";" "$unattended_upgrades_config"
+
+ else # "Never"
+ # Comment "Unattended-Upgrade::Mail"
+ ynh_replace_string "^\(Unattended-Upgrade::Mail \)" "//\1" "$unattended_upgrades_config"
+ fi
+ ynh_app_setting_set $app unattended_mail "$unattended_mail"
+ fi
+
+ # previous_apticron
+ apticron_cron="/etc/cron.d/apticron"
+ if [ "$previous_apticron" != "$old_previous_apticron" ]
+ then
+ previous_apticron=$(bool_to_01 $previous_apticron)
+ if [ "$previous_apticron" = "1" ]
+ then
+ # Uncomment the first cron line
+ ynh_replace_string "^#\(0 $old_previous_apticron_hour .*\)" "\1" "$apticron_cron"
+ else
+ # Comment the first cron line
+ ynh_replace_string "^0 $old_previous_apticron_hour .*" "#&" "$apticron_cron"
+ fi
+ ynh_app_setting_set $app previous_apticron "$previous_apticron"
+ fi
+ # previous_apticron_hour
+ if [ "$previous_apticron_hour" != "$old_previous_apticron_hour" ]
+ then
+ # Use sed instead of ynh_replace_string to avoid the 'global' argument
+ sed --in-place "s/0 $old_previous_apticron_hour\( \* \* \* root if\)/0 $previous_apticron_hour\1/" "$apticron_cron"
+ ynh_app_setting_set $app previous_apticron_hour "$previous_apticron_hour"
+ fi
+ # after_apticron
+ if [ "$after_apticron" != "$old_after_apticron" ]
+ then
+ after_apticron=$(bool_to_01 $after_apticron)
+ if [ "$after_apticron" = "1" ]
+ then
+ # Uncomment the second cron line
+ ynh_replace_string "^#\(0 $old_after_apticron_hour .*\)" "\1" "$apticron_cron"
+ else
+ # Comment the second cron line
+ ynh_replace_string "^0 $old_after_apticron_hour .*" "#&" "$apticron_cron"
+ fi
+ ynh_app_setting_set $app after_apticron "$after_apticron"
+ fi
+ # after_apticron_hour
+ if [ "$after_apticron_hour" != "$old_after_apticron_hour" ]
+ then
+ # Use sed instead of ynh_replace_string to avoid the 'global' argument
+ sed --in-place "s/0 $old_after_apticron_hour\( \* \* \* root if\)/0 $after_apticron_hour\1/" "$apticron_cron"
+ ynh_app_setting_set $app after_apticron_hour "$after_apticron_hour"
+ fi
+
+ # unattended_verbosity
+ if [ "$unattended_verbosity" != "$old_unattended_verbosity" ]
+ then
+ ynh_backup_if_checksum_is_different "/etc/apt/apt.conf.d/02periodic"
+
+ ynh_replace_string "^APT::Periodic::Verbose \".*" "APT::Periodic::Verbose \"$unattended_verbosity\";" "/etc/apt/apt.conf.d/02periodic"
+ ynh_app_setting_set $app unattended_verbosity "$unattended_verbosity"
+
+ ynh_store_file_checksum "/etc/apt/apt.conf.d/02periodic"
+ fi
+
+ # Set overwrite_periodic
+ overwrite_periodic=$(bool_to_01 $overwrite_periodic)
+ ynh_app_setting_set $app overwrite_periodic "$overwrite_periodic"
+}
+
+#=================================================
+# GENERIC FINALIZATION
+#=================================================
+# SELECT THE ACTION FOLLOWING THE GIVEN ARGUMENT
+#=================================================
+
+case $1 in
+ show) show_config;;
+ apply) apply_config;;
+esac
diff --git a/scripts/install b/scripts/install
index ace65fc..c3c199d 100644
--- a/scripts/install
+++ b/scripts/install
@@ -32,12 +32,13 @@ app=$YNH_APP_INSTANCE_NAME
# STORE SETTINGS FROM MANIFEST
#=================================================
-ynh_app_setting_set $app upgrade_level $upgrade_level
+ynh_app_setting_set $app upgrade_level "$upgrade_level"
ynh_app_setting_set $app ynh_update $ynh_update
ynh_app_setting_set $app previous_apticron $previous_apticron
ynh_app_setting_set $app after_apticron $after_apticron
-ynh_app_setting_set $app unattended_mail $unattended_mail
+ynh_app_setting_set $app unattended_mail "$unattended_mail"
ynh_app_setting_set $app unattended_verbosity $unattended_verbosity
+ynh_app_setting_set $app overwrite_periodic "1"
#=================================================
# STANDARD MODIFICATIONS
@@ -64,26 +65,23 @@ ynh_replace_string "# CUSTOM_NO_UPDATES_SUBJECT=.*" \
#=================================================
unattended_upgrades_config="/etc/apt/apt.conf.d/50unattended-upgrades"
-distro_codename=$(lsb_release -cs)
# Make a backup of 50unattended-upgrades
cp -a "$unattended_upgrades_config" "/etc/apt/50unattended-upgrades.backup"
# Configure upgrade sources
-# Allow security update
-ynh_replace_string "//\(.*\"o=Debian,n=${distro_codename},l=Debian-Security\";\)" "\1" "$unattended_upgrades_config"
# Allow other updates
if [ "$upgrade_level" = "Security and updates" ]
then
- ynh_replace_string "//\(.*\"o=Debian,n=$distro_codename\";\)" "\1" "$unattended_upgrades_config"
- ynh_replace_string "//\(.*\"o=Debian,n=$distro_codename-updates\";\)" "\1" "$unattended_upgrades_config"
+ ynh_replace_string "//\(.*\"o=Debian,a=stable\)" "\1" "$unattended_upgrades_config"
+ ynh_replace_string "//\(.*\"o=Debian,a=stable-updates\)" "\1" "$unattended_upgrades_config"
fi
# Add YunoHost upgrade source
if [ $ynh_update -eq 1 ]
then
ynh_replace_string "origin=Debian,codename=\${distro_codename},label=Debian-Security\";" \
- "&\n\n //YunoHost upgrade\n \"o=YunoHost,n=$distro_codename\";" "$unattended_upgrades_config"
+ "&\n\n //YunoHost upgrade\n \"o=YunoHost,a=stable\";" "$unattended_upgrades_config"
fi
# Allow MinimalSteps upgrading to reduce risk in case of reboot
diff --git a/scripts/upgrade b/scripts/upgrade
index cf2728b..75cd019 100644
--- a/scripts/upgrade
+++ b/scripts/upgrade
@@ -8,7 +8,6 @@
source _common.sh
source /usr/share/yunohost/helpers
-source _sed
#=================================================
# LOAD SETTINGS
@@ -17,6 +16,7 @@ source _sed
app=$YNH_APP_INSTANCE_NAME
unattended_verbosity=$(ynh_app_setting_get $app unattended_verbosity)
+overwrite_periodic=$(ynh_app_setting_get $app overwrite_periodic)
#=================================================
# CHECK VERSION
@@ -24,6 +24,16 @@ unattended_verbosity=$(ynh_app_setting_get $app unattended_verbosity)
upgrade_type=$(ynh_check_app_version_changed)
+#=================================================
+# ENSURE DOWNWARD COMPATIBILITY
+#=================================================
+
+# If overwrite_periodic doesn't exist, create it
+if [ -z "$overwrite_periodic" ]; then
+ overwrite_periodic=1
+ ynh_app_setting_set $app overwrite_periodic $overwrite_periodic
+fi
+
#=================================================
# BACKUP BEFORE UPGRADE THEN ACTIVE TRAP
#=================================================
@@ -65,13 +75,17 @@ ynh_install_app_dependencies apticron unattended-upgrades apt-listchanges
# UPGRADE APT PERIODIC FOR UNATTENDED
#=================================================
-ynh_backup_if_checksum_is_different "/etc/apt/apt.conf.d/02periodic"
+# Overwrite 02periodic config file only if it's allowed
+if [ $overwrite_periodic -eq 1 ]
+then
+ ynh_backup_if_checksum_is_different "/etc/apt/apt.conf.d/02periodic"
-cp "../conf/02periodic" "/etc/apt/apt.conf.d/02periodic"
-ynh_replace_string "__VERBOSITY__" "$unattended_verbosity" "/etc/apt/apt.conf.d/02periodic"
-# This config file is used by /etc/cron.daily/apt
+ cp "../conf/02periodic" "/etc/apt/apt.conf.d/02periodic"
+ ynh_replace_string "__VERBOSITY__" "$unattended_verbosity" "/etc/apt/apt.conf.d/02periodic"
+ # This config file is used by /etc/cron.daily/apt
-ynh_store_file_checksum "/etc/apt/apt.conf.d/02periodic"
+ ynh_store_file_checksum "/etc/apt/apt.conf.d/02periodic"
+fi
#=================================================
# UPGRADE APTICRON CRON FILE