diff --git a/src/linux/fpm-centos b/src/linux/fpm-centos index d9da775af..f068bea49 100644 --- a/src/linux/fpm-centos +++ b/src/linux/fpm-centos @@ -7,6 +7,7 @@ --description "BunkerWeb %VERSION% for CentOS Stream 8" --url "https://www.bunkerweb.io" --maintainer "Bunkerity " +--before-install /usr/share/bunkerweb/scripts/beforeInstall.sh --after-install /usr/share/bunkerweb/scripts/postinstall.sh --after-remove /usr/share/bunkerweb/scripts/afterRemoveRPM.sh /usr/share/bunkerweb/=/usr/share/bunkerweb/ /usr/bin/bwcli=/usr/bin/bwcli /etc/bunkerweb/=/etc/bunkerweb /var/tmp/bunkerweb/=/var/tmp/bunkerweb /var/cache/bunkerweb/=/var/cache/bunkerweb /lib/systemd/system/bunkerweb.service=/lib/systemd/system/bunkerweb.service /lib/systemd/system/bunkerweb-ui.service=/lib/systemd/system/bunkerweb-ui.service /var/lib/bunkerweb=/var/lib/bunkerweb /etc/letsencrypt=/etc/letsencrypt \ No newline at end of file diff --git a/src/linux/fpm-debian b/src/linux/fpm-debian index 7fd5f074b..714271873 100644 --- a/src/linux/fpm-debian +++ b/src/linux/fpm-debian @@ -7,6 +7,7 @@ --description "BunkerWeb %VERSION% for Debian 11" --url "https://www.bunkerweb.io" --maintainer "Bunkerity " +--before-install /usr/share/bunkerweb/scripts/beforeInstall.sh --after-install /usr/share/bunkerweb/scripts/postinstall.sh --after-remove /usr/share/bunkerweb/scripts/afterRemoveDEB.sh /usr/share/bunkerweb/=/usr/share/bunkerweb/ /usr/bin/bwcli=/usr/bin/bwcli /etc/bunkerweb/=/etc/bunkerweb /var/tmp/bunkerweb/=/var/tmp/bunkerweb /var/cache/bunkerweb/=/var/cache/bunkerweb /lib/systemd/system/bunkerweb.service=/lib/systemd/system/bunkerweb.service /lib/systemd/system/bunkerweb-ui.service=/lib/systemd/system/bunkerweb-ui.service /var/lib/bunkerweb=/var/lib/bunkerweb /etc/letsencrypt=/etc/letsencrypt \ No newline at end of file diff --git a/src/linux/fpm-fedora b/src/linux/fpm-fedora index 1bdfaf4a5..a08148506 100644 --- a/src/linux/fpm-fedora +++ b/src/linux/fpm-fedora @@ -7,6 +7,7 @@ --description "BunkerWeb %VERSION% for Fedora 36" --url "https://www.bunkerweb.io" --maintainer "Bunkerity " +--before-install /usr/share/bunkerweb/scripts/beforeInstall.sh --after-install /usr/share/bunkerweb/scripts/postinstall.sh --after-remove /usr/share/bunkerweb/scripts/afterRemoveRPM.sh /usr/share/bunkerweb/=/usr/share/bunkerweb/ /usr/bin/bwcli=/usr/bin/bwcli /etc/bunkerweb/=/etc/bunkerweb /var/tmp/bunkerweb/=/var/tmp/bunkerweb /var/cache/bunkerweb/=/var/cache/bunkerweb /lib/systemd/system/bunkerweb.service=/lib/systemd/system/bunkerweb.service /lib/systemd/system/bunkerweb-ui.service=/lib/systemd/system/bunkerweb-ui.service /var/lib/bunkerweb=/var/lib/bunkerweb /etc/letsencrypt=/etc/letsencrypt \ No newline at end of file diff --git a/src/linux/fpm-rhel b/src/linux/fpm-rhel index f7a890e28..e52ce491d 100644 --- a/src/linux/fpm-rhel +++ b/src/linux/fpm-rhel @@ -7,6 +7,7 @@ --description "BunkerWeb %VERSION% for Rhel 8" --url "https://www.bunkerweb.io" --maintainer "Bunkerity " +--before-install /usr/share/bunkerweb/scripts/beforeInstall.sh --after-install /usr/share/bunkerweb/scripts/postinstall.sh --after-remove /usr/share/bunkerweb/scripts/afterRemove.sh /usr/share/bunkerweb/=/usr/share/bunkerweb/ /usr/bin/bwcli=/usr/bin/bwcli /etc/bunkerweb/=/etc/bunkerweb /var/tmp/bunkerweb/=/var/tmp/bunkerweb /var/cache/bunkerweb/=/var/cache/bunkerweb /lib/systemd/system/bunkerweb.service=/lib/systemd/system/bunkerweb.service /lib/systemd/system/bunkerweb-ui.service=/lib/systemd/system/bunkerweb-ui.service /var/lib/bunkerweb=/var/lib/bunkerweb /etc/letsencrypt=/etc/letsencrypt \ No newline at end of file diff --git a/src/linux/fpm-ubuntu b/src/linux/fpm-ubuntu index d9713fde6..2aff7ccc1 100644 --- a/src/linux/fpm-ubuntu +++ b/src/linux/fpm-ubuntu @@ -6,6 +6,7 @@ --description "BunkerWeb %VERSION% for Ubuntu 22.04" --url "https://www.bunkerweb.io" --maintainer "Bunkerity " +--before-install /usr/share/bunkerweb/scripts/beforeInstall.sh --after-install /usr/share/bunkerweb/scripts/postinstall.sh --after-remove /usr/share/bunkerweb/scripts/afterRemoveDEB.sh --deb-no-default-config-files diff --git a/src/linux/scripts/afterRemoveDEB.sh b/src/linux/scripts/afterRemoveDEB.sh index 845711d0a..c71972653 100644 --- a/src/linux/scripts/afterRemoveDEB.sh +++ b/src/linux/scripts/afterRemoveDEB.sh @@ -116,5 +116,14 @@ elif [ "$1" = "purge" ]; then purge else echo "Package is being upgraded" + # Check the version of the package and if it's inferior to 1.5.0, we need to copy the variables.env file + VERSION=$(dpkg-query -W -f='${Version}' bunkerweb) + if [ "$VERSION" <= "1.5.0" ]; then + echo "ℹ️ Copy /etc/bunkerweb/variables.env to /var/tmp/bunkerweb/variables.env" + do_and_check_cmd cp -f /opt/bunkerweb/variables.env /var/tmp/variables.env + do_and_check_cmd cp -f /opt/bunkerweb/ui.env /var/tmp/ui.env + fi + cp -f /etc/bunkerweb/variables.env /var/tmp/variables.env + cp -f /etc/bunkerweb/ui.env /var/tmp/ui.env exit 0 fi \ No newline at end of file diff --git a/src/linux/scripts/afterRemoveRPM.sh b/src/linux/scripts/afterRemoveRPM.sh index c70ab3260..f77beb60c 100644 --- a/src/linux/scripts/afterRemoveRPM.sh +++ b/src/linux/scripts/afterRemoveRPM.sh @@ -115,6 +115,16 @@ if [ "$1" = "0" ]; then elif [ "$1" = "1" ]; then # Call the purge function echo "Package is being upgraded" + # Check the version of the package and if it's inferior to 1.5.0, we need to copy the variables.env file + if [ "$2" <= "1.5.0" ]; then + echo "ℹ️ Copy /etc/bunkerweb/variables.env to /var/tmp/bunkerweb/variables.env" + do_and_check_cmd cp -f /opt/bunkerweb/variables.env /var/tmp/variables.env + do_and_check_cmd cp -f /opt/bunkerweb/ui.env /var/tmp/ui.env + fi + cp -f /etc/bunkerweb/variables.env /var/tmp/variables.env + cp -f /etc/bunkerweb/ui.env /var/tmp/ui.env + exit 0 +fi else echo "Error" exit 0 diff --git a/src/linux/scripts/beforeInstall.sh b/src/linux/scripts/beforeInstall.sh new file mode 100644 index 000000000..3467140f7 --- /dev/null +++ b/src/linux/scripts/beforeInstall.sh @@ -0,0 +1,26 @@ +#!/bin/bash + +# Function to run a command and check its return code +function do_and_check_cmd() { + output=$("$@" 2>&1) + ret="$?" + if [ $ret -ne 0 ] ; then + echo "❌ Error from command : $*" + echo "$output" + exit $ret + else + echo "✔️ Success: $*" + echo "$output" + fi + return 0 +} + +# Get the version of the package +VERSION=$(dpkg-query -W -f='${Version}' bunkerweb) + +if dpkg --compare-versions "$VERSION" lt "1.5.0"; then + echo "ℹ️ Copy /var/tmp/bunkerweb/variables.env to /etc/bunkerweb/variables.env" + do_and_check_cmd cp -f /opt/bunkerweb/variables.env /var/tmp/variables.env + echo "ℹ️ Copy /var/tmp/bunkerweb/variables.env to /etc/bunkerweb/variables.env" + do_and_check_cmd cp -f /opt/bunkerweb/ui.env /var/tmp/ui.env +fi \ No newline at end of file diff --git a/src/linux/scripts/bunkerweb-ui.sh b/src/linux/scripts/bunkerweb-ui.sh index 1a9fbf882..6c67bcdd8 100755 --- a/src/linux/scripts/bunkerweb-ui.sh +++ b/src/linux/scripts/bunkerweb-ui.sh @@ -26,8 +26,8 @@ start() { stop() { echo "Stopping UI service..." if [ -f "/var/tmp/bunkerweb/ui.pid" ]; then - kill -TERM $(cat /var/tmp/bunkerweb/ui.pid) - echo "UI service stopped." + pid=$(cat /var/tmp/bunkerweb/ui.pid) + kill -SIGINT $pid else echo "UI service is not running or the pid file doesn't exist." fi diff --git a/src/linux/scripts/postinstall.sh b/src/linux/scripts/postinstall.sh index e54bf079b..da29345e6 100644 --- a/src/linux/scripts/postinstall.sh +++ b/src/linux/scripts/postinstall.sh @@ -1,5 +1,20 @@ #!/bin/bash +# Function to run a command and check its return code +function do_and_check_cmd() { + output=$("$@" 2>&1) + ret="$?" + if [ $ret -ne 0 ] ; then + echo "❌ Error from command : $*" + echo "$output" + exit $ret + else + echo "✔️ Success: $*" + echo "$output" + fi + return 0 +} + #Start the nginx service echo "Starting nginx service..." systemctl start nginx @@ -18,4 +33,20 @@ echo "Enabling and starting bunkerweb-ui service..." systemctl enable bunkerweb-ui systemctl start bunkerweb-ui +# Copy old line from environment file to new one +echo "Copying old line from environment file to new one..." +while read line; do + echo "$line" >> /etc/bunkerweb/variables.env +done < /var/tmp/variables.env + +echo "Copying old line from ui environment file to new one..." +while read line; do + echo "$line" >> /etc/bunkerweb/ui.env +done < /var/tmp/ui.env + +# Remove old environment files +echo "Removing old environment files..." +rm -f /var/tmp/variables.env +rm -f /var/tmp/ui.env + echo "All services started and enabled successfully!" \ No newline at end of file diff --git a/src/linux/scripts/start.sh b/src/linux/scripts/start.sh index cd83ab0cf..6d7225e11 100644 --- a/src/linux/scripts/start.sh +++ b/src/linux/scripts/start.sh @@ -26,9 +26,9 @@ function start() { echo $nginx_pid > /var/tmp/bunkerweb/nginx.pid # Check if scheduler pid file exist and remove it if so - if [ -f /var/tmp/bunkerweb/scheduler.pid ] ; then - rm -f /var/tmp/bunkerweb/scheduler.pid - fi + # if [ -f /var/tmp/bunkerweb/scheduler.pid ] ; then + # rm -f /var/tmp/bunkerweb/scheduler.pid + # fi # Setup and check /data folder /usr/share/bunkerweb/helpers/data.sh "ENTRYPOINT" diff --git a/tests/Upgrade.py b/tests/Upgrade.py index a37f7934d..6708baa9a 100644 --- a/tests/Upgrade.py +++ b/tests/Upgrade.py @@ -1468,7 +1468,7 @@ elif distro == "fedora": "docker", "rm", "-f", - "systemd-{distro}".format(distro), + "systemd-fedora", ] ) subprocess.run( @@ -1477,7 +1477,7 @@ elif distro == "fedora": "docker", "build", "-t", - "systemd-{}".format(distro), + "systemd-fedora", "-f", "tests/Dockerfile-fedora", ".", @@ -1490,13 +1490,13 @@ elif distro == "fedora": "run", "-d", "--name", - "systemd-{}".format(distro), + "systemd-fedora", "--privileged", "-v", "/sys/fs/cgroup:/sys/fs/cgroup", "-v", "deb:/data", - "systemd-{}".format(distro), + "systemd-fedora", ] ) subprocess.run(