diff --git a/src/common/core/errors/plugin.json b/src/common/core/errors/plugin.json index e161381a..da6cc46b 100644 --- a/src/common/core/errors/plugin.json +++ b/src/common/core/errors/plugin.json @@ -14,14 +14,14 @@ "regex": "^(?! )( ?([1-5]\\d{2})(?!.*\\2(?![^=]))=(/[\\w\\].~:/?#[@!$&'()*+,;=-]*)(?!.*\\3(?!.)))*$", "type": "text" }, - "INTERCEPTED_ERROR_CODES": { - "context": "multisite", - "default": "400 401 403 404 405 413 429 500 501 502 503 504", - "help": "List of HTTP error code intercepted by Bunkerweb", - "id": "intercepted-error-codes", - "label": "Intercepted error codes", - "regex": "^.*$", - "type": "text" - } + "INTERCEPTED_ERROR_CODES": { + "context": "multisite", + "default": "400 401 403 404 405 413 429 500 501 502 503 504", + "help": "List of HTTP error code intercepted by Bunkerweb", + "id": "intercepted-error-codes", + "label": "Intercepted error codes", + "regex": "^.*$", + "type": "text" + } } } diff --git a/tests/Upgrade.py b/tests/Upgrade.py index ef556eb7..5662440c 100644 --- a/tests/Upgrade.py +++ b/tests/Upgrade.py @@ -5,10 +5,51 @@ import os distro = sys.argv[1] if distro == "ubuntu": - test_results = {"Installation test": None, "Reloading test": None, "Removing test": None, "Purging test": None, "Upgrading test": None} - subprocess.run(["docker", "build", "-t", "ubuntu-image", "-f", "src/linux/Dockerfile-ubuntu", "."]) - subprocess.run(["docker", "run", "-it", "--name", "ubuntu-container", "-v", "deb:/data", "ubuntu-image"]) - subprocess.run(["docker", "run", "-d", "--name", "systemd-{}".format(distro), "--privileged", "-v", "/sys/fs/cgroup:/sys/fs/cgroup", "-v", "deb:/data", "jrei/systemd-ubuntu:22.04"]) + test_results = { + "Installation test": None, + "Reloading test": None, + "Removing test": None, + "Purging test": None, + "Upgrading test": None, + } + subprocess.run( + [ + "docker", + "build", + "-t", + "ubuntu-image", + "-f", + "src/linux/Dockerfile-ubuntu", + ".", + ] + ) + subprocess.run( + [ + "docker", + "run", + "-it", + "--name", + "ubuntu-container", + "-v", + "deb:/data", + "ubuntu-image", + ] + ) + subprocess.run( + [ + "docker", + "run", + "-d", + "--name", + "systemd-{}".format(distro), + "--privileged", + "-v", + "/sys/fs/cgroup:/sys/fs/cgroup", + "-v", + "deb:/data", + "jrei/systemd-ubuntu:22.04", + ] + ) # Installing test print("Installing bunkerweb...") @@ -25,22 +66,55 @@ if distro == "ubuntu": apt install /data/bunkerweb.deb -y """ - with tempfile.NamedTemporaryFile(mode='w') as f: + with tempfile.NamedTemporaryFile(mode="w") as f: f.write(bash_script) f.flush() - subprocess.run(["docker", "cp", f.name, "systemd-ubuntu:/data/install_nginx.sh"]) - result = subprocess.run(["docker", "exec", "-it", "systemd-ubuntu", "bash", "/data/install_nginx.sh"]) + subprocess.run( + ["docker", "cp", f.name, "systemd-ubuntu:/data/install_nginx.sh"] + ) + result = subprocess.run( + [ + "docker", + "exec", + "-it", + "systemd-ubuntu", + "bash", + "/data/install_nginx.sh", + ] + ) if result.returncode != 0: - bunkerweb_logs = subprocess.run(["docker", "exec", "-it", "systemd-ubuntu", "bash", "-c", "systemctl status bunkerweb.service"], capture_output=True) + bunkerweb_logs = subprocess.run( + [ + "docker", + "exec", + "-it", + "systemd-ubuntu", + "bash", + "-c", + "systemctl status bunkerweb.service", + ], + capture_output=True, + ) print("Logs from bunkerweb:", bunkerweb_logs.stdout.decode()) - bunkerweb_ui_logs = subprocess.run(["docker", "exec", "-it", "systemd-ubuntu", "bash", "-c", "systemctl status bunkerweb-ui.service"], capture_output=True) + bunkerweb_ui_logs = subprocess.run( + [ + "docker", + "exec", + "-it", + "systemd-ubuntu", + "bash", + "-c", + "systemctl status bunkerweb-ui.service", + ], + capture_output=True, + ) print("Logs from bunkerweb-ui:", bunkerweb_ui_logs.stdout.decode()) sys.exit(result.returncode) exit(result.returncode) else: print("✔️ Installation successful ✔️") - #Checking Installation test + # Checking Installation test try: if result.returncode == 0: test_results["Installation test"] = "OK" @@ -53,23 +127,112 @@ if distro == "ubuntu": # Reloading test print("Reloading bunkerweb...") - subprocess.run(["docker", "exec", "-it", "systemd-ubuntu", "bash", "-c", "echo 'HTTPS_PORT=8443' >> /etc/bunkerweb/variables.env"]) - subprocess.run(["docker", "exec", "-it", "systemd-ubuntu", "bash", "-c", "echo 'new_value=1' >> /etc/bunkerweb/ui.env"]) - subprocess.run(["docker", "exec", "-it", "systemd-ubuntu", "bash", "-c", "systemctl reload bunkerweb"]) - subprocess.run(["docker", "exec", "-it", "systemd-ubuntu", "bash", "-c", "systemctl reload bunkerweb-ui"]) + subprocess.run( + [ + "docker", + "exec", + "-it", + "systemd-ubuntu", + "bash", + "-c", + "echo 'HTTPS_PORT=8443' >> /etc/bunkerweb/variables.env", + ] + ) + subprocess.run( + [ + "docker", + "exec", + "-it", + "systemd-ubuntu", + "bash", + "-c", + "echo 'new_value=1' >> /etc/bunkerweb/ui.env", + ] + ) + subprocess.run( + [ + "docker", + "exec", + "-it", + "systemd-ubuntu", + "bash", + "-c", + "systemctl reload bunkerweb", + ] + ) + subprocess.run( + [ + "docker", + "exec", + "-it", + "systemd-ubuntu", + "bash", + "-c", + "systemctl reload bunkerweb-ui", + ] + ) - bunkerweb_state = subprocess.run(["docker", "exec", "-it", "systemd-ubuntu", "bash", "-c", "systemctl is-active bunkerweb.service"], capture_output=True) + bunkerweb_state = subprocess.run( + [ + "docker", + "exec", + "-it", + "systemd-ubuntu", + "bash", + "-c", + "systemctl is-active bunkerweb.service", + ], + capture_output=True, + ) if bunkerweb_state.stdout.decode().strip() != "active": - bunkerweb_logs = subprocess.run(["docker", "exec", "-it", "systemd-ubuntu", "bash", "-c", "journalctl -u bunkerweb.service"], capture_output=True) - print("❌ bunkerweb.service is not running. Logs:", bunkerweb_logs.stdout.decode()) + bunkerweb_logs = subprocess.run( + [ + "docker", + "exec", + "-it", + "systemd-ubuntu", + "bash", + "-c", + "journalctl -u bunkerweb.service", + ], + capture_output=True, + ) + print( + "❌ bunkerweb.service is not running. Logs:", bunkerweb_logs.stdout.decode() + ) - bunkerweb_ui_state = subprocess.run(["docker", "exec", "-it", "systemd-ubuntu", "bash", "-c", "systemctl is-active bunkerweb-ui.service"], capture_output=True) + bunkerweb_ui_state = subprocess.run( + [ + "docker", + "exec", + "-it", + "systemd-ubuntu", + "bash", + "-c", + "systemctl is-active bunkerweb-ui.service", + ], + capture_output=True, + ) if bunkerweb_ui_state.stdout.decode().strip() != "active": - bunkerweb_ui_logs = subprocess.run(["docker", "exec", "-it", "systemd-ubuntu", "bash", "-c", "journalctl -u bunkerweb-ui.service"], capture_output=True) - print("❌ bunkerweb-ui.service is not running. Logs:", bunkerweb_ui_logs.stdout.decode()) + bunkerweb_ui_logs = subprocess.run( + [ + "docker", + "exec", + "-it", + "systemd-ubuntu", + "bash", + "-c", + "journalctl -u bunkerweb-ui.service", + ], + capture_output=True, + ) + print( + "❌ bunkerweb-ui.service is not running. Logs:", + bunkerweb_ui_logs.stdout.decode(), + ) else: print("✔️ bunkerweb.service and bunkerweb-ui.service are running ✔️") - #Checking Reloading test + # Checking Reloading test try: if bunkerweb_state.stdout.decode().strip() == "active": test_results["Reloading test"] = "OK" @@ -77,37 +240,96 @@ if distro == "ubuntu": test_results["Reloading test"] = "KO" except: test_results["Reloading test"] = "KO" - + # Removing test print("Removing bunkerweb...") - subprocess.run(["docker", "exec", "-it", "systemd-ubuntu", "bash", "-c", "apt remove -y bunkerweb"]) + subprocess.run( + [ + "docker", + "exec", + "-it", + "systemd-ubuntu", + "bash", + "-c", + "apt remove -y bunkerweb", + ] + ) - result = subprocess.run(["docker", "exec", "-it", "systemd-ubuntu", "bash", "-c", "[ -d /usr/share/bunkerweb ]"], capture_output=True) + result = subprocess.run( + [ + "docker", + "exec", + "-it", + "systemd-ubuntu", + "bash", + "-c", + "[ -d /usr/share/bunkerweb ]", + ], + capture_output=True, + ) if result.returncode != 0: print("✔️ /usr/share/bunkerweb not found.") else: print("❌ /usr/share/bunkerweb found.") - result = subprocess.run(["docker", "exec", "-it", "systemd-ubuntu", "bash", "-c", "[ -d /var/tmp/bunkerweb ]"], capture_output=True) + result = subprocess.run( + [ + "docker", + "exec", + "-it", + "systemd-ubuntu", + "bash", + "-c", + "[ -d /var/tmp/bunkerweb ]", + ], + capture_output=True, + ) if result.returncode != 0: print("✔️ /var/tmp/bunkerweb not found.") else: print("❌ /var/tmp/bunkerweb found.") - result = subprocess.run(["docker", "exec", "-it", "systemd-ubuntu", "bash", "-c", "[ -d /var/cache/bunkerweb ]"], capture_output=True) + result = subprocess.run( + [ + "docker", + "exec", + "-it", + "systemd-ubuntu", + "bash", + "-c", + "[ -d /var/cache/bunkerweb ]", + ], + capture_output=True, + ) if result.returncode != 0: print("✔️ /var/cache/bunkerweb not found.") else: print("❌ /var/cache/bunkerweb found.") - result = subprocess.run(["docker", "exec", "-it", "systemd-ubuntu", "bash", "-c", "[ -f /usr/bin/bwcli ]"], capture_output=True) + result = subprocess.run( + [ + "docker", + "exec", + "-it", + "systemd-ubuntu", + "bash", + "-c", + "[ -f /usr/bin/bwcli ]", + ], + capture_output=True, + ) if result.returncode != 0: print("✔️ /usr/bin/bwcli not found.") else: print("❌ /usr/bin/bwcli found.") - #Checking Removing test + # Checking Removing test try: - if os.path.exists("/usr/share/bunkerweb") or os.path.exists("/var/tmp/bunkerweb") or os.path.exists("/var/cache/bunkerweb") or os.path.exists("/usr/bin/bwcli"): + if ( + os.path.exists("/usr/share/bunkerweb") + or os.path.exists("/var/tmp/bunkerweb") + or os.path.exists("/var/cache/bunkerweb") + or os.path.exists("/usr/bin/bwcli") + ): test_results["Removing test"] = "KO" else: test_results["Removing test"] = "OK" @@ -116,20 +338,52 @@ if distro == "ubuntu": # Purging test print("Purging bunkerweb...") - subprocess.run(["docker", "exec", "-it", "systemd-ubuntu", "bash", "-c", "apt purge -y bunkerweb"]) + subprocess.run( + [ + "docker", + "exec", + "-it", + "systemd-ubuntu", + "bash", + "-c", + "apt purge -y bunkerweb", + ] + ) - result = subprocess.run(["docker", "exec", "-it", "systemd-ubuntu", "bash", "-c", "[ -d /var/lib/bunkerweb ]"], capture_output=True) + result = subprocess.run( + [ + "docker", + "exec", + "-it", + "systemd-ubuntu", + "bash", + "-c", + "[ -d /var/lib/bunkerweb ]", + ], + capture_output=True, + ) if result.returncode != 0: print("✔️ /var/lib/bunkerweb not found.") else: print("❌ /var/lib/bunkerweb found.") - result = subprocess.run(["docker", "exec", "-it", "systemd-ubuntu", "bash", "-c", "[ -d /etc/bunkerweb ]"], capture_output=True) + result = subprocess.run( + [ + "docker", + "exec", + "-it", + "systemd-ubuntu", + "bash", + "-c", + "[ -d /etc/bunkerweb ]", + ], + capture_output=True, + ) if result.returncode != 0: print("✔️ /etc/bunkerweb not found.") else: print("❌ /etc/bunkerweb found.") - #Checking Purging test + # Checking Purging test try: if os.path.isdir("/var/lib/bunkerweb") or os.path.isdir("/etc/bunkerweb"): test_results["Purging test"] = "KO" @@ -138,25 +392,98 @@ if distro == "ubuntu": except: test_results["Purging test"] = "KO" - # Upgrading test print("Upgrading bunkerweb...") # Installing official package - subprocess.run(["docker", "exec", "-it", "systemd-ubuntu", "bash", "-c", "sudo apt remove -y nginx"]) - subprocess.run(["docker", "exec", "-it", "systemd-ubuntu", "bash", "-c", "sudo apt-get install -y -o Dpkg::Options::=\"--force-confdef\" -o Dpkg::Options::=\"--force-confold\" nginx=1.20.2-1~jammy"]) - subprocess.run(["docker", "exec", "-it", "systemd-ubuntu", "bash", "-c", "curl -s https://packagecloud.io/install/repositories/bunkerity/bunkerweb/script.deb.sh | sudo bash"]) - subprocess.run(["docker", "exec", "-it", "systemd-ubuntu", "bash", "-c", "sudo apt update"]) - subprocess.run(["docker", "exec", "-it", "systemd-ubuntu", "bash", "-c", "sudo apt install -y bunkerweb=1.4.5"]) + subprocess.run( + [ + "docker", + "exec", + "-it", + "systemd-ubuntu", + "bash", + "-c", + "sudo apt remove -y nginx", + ] + ) + subprocess.run( + [ + "docker", + "exec", + "-it", + "systemd-ubuntu", + "bash", + "-c", + 'sudo apt-get install -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" nginx=1.20.2-1~jammy', + ] + ) + subprocess.run( + [ + "docker", + "exec", + "-it", + "systemd-ubuntu", + "bash", + "-c", + "curl -s https://packagecloud.io/install/repositories/bunkerity/bunkerweb/script.deb.sh | sudo bash", + ] + ) + subprocess.run( + ["docker", "exec", "-it", "systemd-ubuntu", "bash", "-c", "sudo apt update"] + ) + subprocess.run( + [ + "docker", + "exec", + "-it", + "systemd-ubuntu", + "bash", + "-c", + "sudo apt install -y bunkerweb=1.4.5", + ] + ) # Checking version - old_version = subprocess.run(["docker", "exec", "-it", "systemd-ubuntu", "bash", "-c", "cat /opt/bunkerweb/VERSION"], capture_output=True) + old_version = subprocess.run( + [ + "docker", + "exec", + "-it", + "systemd-ubuntu", + "bash", + "-c", + "cat /opt/bunkerweb/VERSION", + ], + capture_output=True, + ) print("Old version:", old_version.stdout.decode().strip()) # Upgrading package - subprocess.run(["docker", "exec", "-it", "systemd-ubuntu", "bash", "-c", "sudo apt install -y /data/bunkerweb.deb"]) + subprocess.run( + [ + "docker", + "exec", + "-it", + "systemd-ubuntu", + "bash", + "-c", + "sudo apt install -y /data/bunkerweb.deb", + ] + ) # Checking version - new_version = subprocess.run(["docker", "exec", "-it", "systemd-ubuntu", "bash", "-c", "cat /usr/share/bunkerweb/VERSION"], capture_output=True) + new_version = subprocess.run( + [ + "docker", + "exec", + "-it", + "systemd-ubuntu", + "bash", + "-c", + "cat /usr/share/bunkerweb/VERSION", + ], + capture_output=True, + ) print("New version:", new_version.stdout.decode().strip()) try: if old_version.stdout.decode().strip() != new_version.stdout.decode().strip(): @@ -168,16 +495,57 @@ if distro == "ubuntu": # Print summary for key, value in test_results.items(): - print(f'{key}: {value}') + print(f"{key}: {value}") if "KO" in test_results.values(): print("❌ Some tests failed.") sys.exit(1) elif distro == "debian": - test_results = {"Installation test": None, "Reloading test": None, "Removing test": None, "Purging test": None, "Upgrading test": None} - subprocess.run(["docker", "build", "-t", "debian-image", "-f", "src/linux/Dockerfile-debian", "."]) - subprocess.run(["docker", "run", "-it", "--name", "debian-container", "-v", "deb:/data", "debian-image"]) - subprocess.run(["docker", "run", "-d", "--name", "systemd-{}".format(distro), "--privileged", "-v", "/sys/fs/cgroup:/sys/fs/cgroup", "-v", "deb:/data", "jrei/systemd-debian:11"]) + test_results = { + "Installation test": None, + "Reloading test": None, + "Removing test": None, + "Purging test": None, + "Upgrading test": None, + } + subprocess.run( + [ + "docker", + "build", + "-t", + "debian-image", + "-f", + "src/linux/Dockerfile-debian", + ".", + ] + ) + subprocess.run( + [ + "docker", + "run", + "-it", + "--name", + "debian-container", + "-v", + "deb:/data", + "debian-image", + ] + ) + subprocess.run( + [ + "docker", + "run", + "-d", + "--name", + "systemd-{}".format(distro), + "--privileged", + "-v", + "/sys/fs/cgroup:/sys/fs/cgroup", + "-v", + "deb:/data", + "jrei/systemd-debian:11", + ] + ) # Installing test print("Installing bunkerweb...") @@ -192,22 +560,46 @@ elif distro == "debian": apt install /data/bunkerweb.deb -y """ - with tempfile.NamedTemporaryFile(mode='w') as f: + with tempfile.NamedTemporaryFile(mode="w") as f: f.write(bash_script) f.flush() subprocess.run(["docker", "cp", f.name, "systemd-debian:/tmp/install_nginx.sh"]) - result = subprocess.run(["docker", "exec", "-it", "systemd-debian", "bash", "/tmp/install_nginx.sh"]) + result = subprocess.run( + ["docker", "exec", "-it", "systemd-debian", "bash", "/tmp/install_nginx.sh"] + ) if result.returncode != 0: - bunkerweb_logs = subprocess.run(["docker", "exec", "-it", "systemd-debian", "bash", "-c", "systemctl status bunkerweb.service"], capture_output=True) + bunkerweb_logs = subprocess.run( + [ + "docker", + "exec", + "-it", + "systemd-debian", + "bash", + "-c", + "systemctl status bunkerweb.service", + ], + capture_output=True, + ) print("Logs from bunkerweb:", bunkerweb_logs.stdout.decode()) - bunkerweb_ui_logs = subprocess.run(["docker", "exec", "-it", "systemd-debian", "bash", "-c", "systemctl status bunkerweb-ui.service"], capture_output=True) + bunkerweb_ui_logs = subprocess.run( + [ + "docker", + "exec", + "-it", + "systemd-debian", + "bash", + "-c", + "systemctl status bunkerweb-ui.service", + ], + capture_output=True, + ) print("Logs from bunkerweb-ui:", bunkerweb_ui_logs.stdout.decode()) sys.exit(result.returncode) exit(result.returncode) else: print("✔️ Installation successful ✔️") - #Checking Installation test + # Checking Installation test try: if result.returncode == 0: test_results["Installation test"] = "OK" @@ -220,23 +612,112 @@ elif distro == "debian": # Reloading test print("Reloading bunkerweb...") - subprocess.run(["docker", "exec", "-it", "systemd-debian", "bash", "-c", "echo 'HTTPS_PORT=8443' >> /etc/bunkerweb/variables.env"]) - subprocess.run(["docker", "exec", "-it", "systemd-debian", "bash", "-c", "echo 'new_value=1' >> /etc/bunkerweb/ui.env"]) - subprocess.run(["docker", "exec", "-it", "systemd-debian", "bash", "-c", "systemctl reload bunkerweb"]) - subprocess.run(["docker", "exec", "-it", "systemd-debian", "bash", "-c", "systemctl reload bunkerweb-ui"]) + subprocess.run( + [ + "docker", + "exec", + "-it", + "systemd-debian", + "bash", + "-c", + "echo 'HTTPS_PORT=8443' >> /etc/bunkerweb/variables.env", + ] + ) + subprocess.run( + [ + "docker", + "exec", + "-it", + "systemd-debian", + "bash", + "-c", + "echo 'new_value=1' >> /etc/bunkerweb/ui.env", + ] + ) + subprocess.run( + [ + "docker", + "exec", + "-it", + "systemd-debian", + "bash", + "-c", + "systemctl reload bunkerweb", + ] + ) + subprocess.run( + [ + "docker", + "exec", + "-it", + "systemd-debian", + "bash", + "-c", + "systemctl reload bunkerweb-ui", + ] + ) - bunkerweb_state = subprocess.run(["docker", "exec", "-it", "systemd-debian", "bash", "-c", "systemctl is-active bunkerweb.service"], capture_output=True) + bunkerweb_state = subprocess.run( + [ + "docker", + "exec", + "-it", + "systemd-debian", + "bash", + "-c", + "systemctl is-active bunkerweb.service", + ], + capture_output=True, + ) if bunkerweb_state.stdout.decode().strip() != "active": - bunkerweb_logs = subprocess.run(["docker", "exec", "-it", "systemd-debian", "bash", "-c", "journalctl -u bunkerweb.service"], capture_output=True) - print("❌ bunkerweb.service is not running. Logs:", bunkerweb_logs.stdout.decode()) + bunkerweb_logs = subprocess.run( + [ + "docker", + "exec", + "-it", + "systemd-debian", + "bash", + "-c", + "journalctl -u bunkerweb.service", + ], + capture_output=True, + ) + print( + "❌ bunkerweb.service is not running. Logs:", bunkerweb_logs.stdout.decode() + ) - bunkerweb_ui_state = subprocess.run(["docker", "exec", "-it", "systemd-debian", "bash", "-c", "systemctl is-active bunkerweb-ui.service"], capture_output=True) + bunkerweb_ui_state = subprocess.run( + [ + "docker", + "exec", + "-it", + "systemd-debian", + "bash", + "-c", + "systemctl is-active bunkerweb-ui.service", + ], + capture_output=True, + ) if bunkerweb_ui_state.stdout.decode().strip() != "active": - bunkerweb_ui_logs = subprocess.run(["docker", "exec", "-it", "systemd-debian", "bash", "-c", "journalctl -u bunkerweb-ui.service"], capture_output=True) - print("❌ bunkerweb-ui.service is not running. Logs:", bunkerweb_ui_logs.stdout.decode()) + bunkerweb_ui_logs = subprocess.run( + [ + "docker", + "exec", + "-it", + "systemd-debian", + "bash", + "-c", + "journalctl -u bunkerweb-ui.service", + ], + capture_output=True, + ) + print( + "❌ bunkerweb-ui.service is not running. Logs:", + bunkerweb_ui_logs.stdout.decode(), + ) else: print("✔️ bunkerweb.service and bunkerweb-ui.service are running ✔️") - #Checking Reloading test + # Checking Reloading test try: if bunkerweb_state.stdout.decode().strip() == "active": test_results["Reloading test"] = "OK" @@ -244,37 +725,96 @@ elif distro == "debian": test_results["Reloading test"] = "KO" except: test_results["Reloading test"] = "KO" - + # Removing test print("Removing bunkerweb...") - subprocess.run(["docker", "exec", "-it", "systemd-debian", "bash", "-c", "apt remove -y bunkerweb"]) + subprocess.run( + [ + "docker", + "exec", + "-it", + "systemd-debian", + "bash", + "-c", + "apt remove -y bunkerweb", + ] + ) - result = subprocess.run(["docker", "exec", "-it", "systemd-debian", "bash", "-c", "[ -d /usr/share/bunkerweb ]"], capture_output=True) + result = subprocess.run( + [ + "docker", + "exec", + "-it", + "systemd-debian", + "bash", + "-c", + "[ -d /usr/share/bunkerweb ]", + ], + capture_output=True, + ) if result.returncode != 0: print("✔️ /usr/share/bunkerweb not found.") else: print("❌ /usr/share/bunkerweb found.") - result = subprocess.run(["docker", "exec", "-it", "systemd-debian", "bash", "-c", "[ -d /var/tmp/bunkerweb ]"], capture_output=True) + result = subprocess.run( + [ + "docker", + "exec", + "-it", + "systemd-debian", + "bash", + "-c", + "[ -d /var/tmp/bunkerweb ]", + ], + capture_output=True, + ) if result.returncode != 0: print("✔️ /var/tmp/bunkerweb not found.") else: print("❌ /var/tmp/bunkerweb found.") - result = subprocess.run(["docker", "exec", "-it", "systemd-debian", "bash", "-c", "[ -d /var/cache/bunkerweb ]"], capture_output=True) + result = subprocess.run( + [ + "docker", + "exec", + "-it", + "systemd-debian", + "bash", + "-c", + "[ -d /var/cache/bunkerweb ]", + ], + capture_output=True, + ) if result.returncode != 0: print("✔️ /var/cache/bunkerweb not found.") else: print("❌ /var/cache/bunkerweb found.") - result = subprocess.run(["docker", "exec", "-it", "systemd-debian", "bash", "-c", "[ -f /usr/bin/bwcli ]"], capture_output=True) + result = subprocess.run( + [ + "docker", + "exec", + "-it", + "systemd-debian", + "bash", + "-c", + "[ -f /usr/bin/bwcli ]", + ], + capture_output=True, + ) if result.returncode != 0: print("✔️ /usr/bin/bwcli not found.") else: print("❌ /usr/bin/bwcli found.") - #Checking Removing test + # Checking Removing test try: - if os.path.exists("/usr/share/bunkerweb") or os.path.exists("/var/tmp/bunkerweb") or os.path.exists("/var/cache/bunkerweb") or os.path.exists("/usr/bin/bwcli"): + if ( + os.path.exists("/usr/share/bunkerweb") + or os.path.exists("/var/tmp/bunkerweb") + or os.path.exists("/var/cache/bunkerweb") + or os.path.exists("/usr/bin/bwcli") + ): test_results["Removing test"] = "OK" else: test_results["Removing test"] = "KO" @@ -283,20 +823,52 @@ elif distro == "debian": # Purging test print("Purging bunkerweb...") - subprocess.run(["docker", "exec", "-it", "systemd-debian", "bash", "-c", "apt purge -y bunkerweb"]) + subprocess.run( + [ + "docker", + "exec", + "-it", + "systemd-debian", + "bash", + "-c", + "apt purge -y bunkerweb", + ] + ) - result = subprocess.run(["docker", "exec", "-it", "systemd-debian", "bash", "-c", "[ -d /var/lib/bunkerweb ]"], capture_output=True) + result = subprocess.run( + [ + "docker", + "exec", + "-it", + "systemd-debian", + "bash", + "-c", + "[ -d /var/lib/bunkerweb ]", + ], + capture_output=True, + ) if result.returncode != 0: print("✔️ /var/lib/bunkerweb not found.") else: print("❌ /var/lib/bunkerweb found.") - result = subprocess.run(["docker", "exec", "-it", "systemd-debian", "bash", "-c", "[ -d /etc/bunkerweb ]"], capture_output=True) + result = subprocess.run( + [ + "docker", + "exec", + "-it", + "systemd-debian", + "bash", + "-c", + "[ -d /etc/bunkerweb ]", + ], + capture_output=True, + ) if result.returncode != 0: print("✔️ /etc/bunkerweb not found.") else: print("❌ /etc/bunkerweb found.") - #Checking Purging test + # Checking Purging test try: if os.path.isdir("/var/lib/bunkerweb") or os.path.isdir("/etc/bunkerweb"): test_results["Purging test"] = "OK" @@ -308,21 +880,95 @@ elif distro == "debian": # Upgrading test print("Upgrading bunkerweb...") # Installing official package - subprocess.run(["docker", "exec", "-it", "systemd-debian", "bash", "-c", "sudo apt remove -y nginx"]) - subprocess.run(["docker", "exec", "-it", "systemd-debian", "bash", "-c", "sudo apt-get install -y -o Dpkg::Options::=\"--force-confdef\" -o Dpkg::Options::=\"--force-confold\" nginx=1.20.2-1~bullseye"]) - subprocess.run(["docker", "exec", "-it", "systemd-debian", "bash", "-c", "curl -s https://packagecloud.io/install/repositories/bunkerity/bunkerweb/script.deb.sh | sudo bash"]) - subprocess.run(["docker", "exec", "-it", "systemd-debian", "bash", "-c", "sudo apt update"]) - subprocess.run(["docker", "exec", "-it", "systemd-debian", "bash", "-c", "sudo apt install -y bunkerweb=1.4.5"]) + subprocess.run( + [ + "docker", + "exec", + "-it", + "systemd-debian", + "bash", + "-c", + "sudo apt remove -y nginx", + ] + ) + subprocess.run( + [ + "docker", + "exec", + "-it", + "systemd-debian", + "bash", + "-c", + 'sudo apt-get install -y -o Dpkg::Options::="--force-confdef" -o Dpkg::Options::="--force-confold" nginx=1.20.2-1~bullseye', + ] + ) + subprocess.run( + [ + "docker", + "exec", + "-it", + "systemd-debian", + "bash", + "-c", + "curl -s https://packagecloud.io/install/repositories/bunkerity/bunkerweb/script.deb.sh | sudo bash", + ] + ) + subprocess.run( + ["docker", "exec", "-it", "systemd-debian", "bash", "-c", "sudo apt update"] + ) + subprocess.run( + [ + "docker", + "exec", + "-it", + "systemd-debian", + "bash", + "-c", + "sudo apt install -y bunkerweb=1.4.5", + ] + ) # Checking version - old_version = subprocess.run(["docker", "exec", "-it", "systemd-debian", "bash", "-c", "cat /opt/bunkerweb/VERSION"], capture_output=True) + old_version = subprocess.run( + [ + "docker", + "exec", + "-it", + "systemd-debian", + "bash", + "-c", + "cat /opt/bunkerweb/VERSION", + ], + capture_output=True, + ) print("Old version:", old_version.stdout.decode().strip()) # Upgrading package - subprocess.run(["docker", "exec", "-it", "systemd-debian", "bash", "-c", "sudo apt install -y /data/bunkerweb.deb"]) + subprocess.run( + [ + "docker", + "exec", + "-it", + "systemd-debian", + "bash", + "-c", + "sudo apt install -y /data/bunkerweb.deb", + ] + ) # Checking version - new_version = subprocess.run(["docker", "exec", "-it", "systemd-debian", "bash", "-c", "cat /usr/share/bunkerweb/VERSION"], capture_output=True) + new_version = subprocess.run( + [ + "docker", + "exec", + "-it", + "systemd-debian", + "bash", + "-c", + "cat /usr/share/bunkerweb/VERSION", + ], + capture_output=True, + ) print("New version:", new_version.stdout.decode().strip()) try: if old_version.stdout.decode().strip() != new_version.stdout.decode().strip(): @@ -334,16 +980,56 @@ elif distro == "debian": # Print summary for key, value in test_results.items(): - print(f'{key}: {value}') + print(f"{key}: {value}") if "KO" in test_results.values(): print("❌ Some tests failed.") sys.exit(1) elif distro == "fedora": - test_results = {"Installation test": None, "Reloading test": None, "Removing test": None, "Upgrading test": None} - subprocess.run(["docker", "build", "-t", "fedora-image", "-f", "src/linux/Dockerfile-fedora", "."]) - subprocess.run(["docker", "run", "-it", "--name", "fedora-container", "-v", "deb:/data", "fedora-image"]) - subprocess.run(["docker", "run", "-d", "--name", "systemd-{}".format(distro), "--privileged", "-v", "/sys/fs/cgroup:/sys/fs/cgroup", "-v", "deb:/data", "jrei/systemd-fedora"]) + test_results = { + "Installation test": None, + "Reloading test": None, + "Removing test": None, + "Upgrading test": None, + } + subprocess.run( + [ + "docker", + "build", + "-t", + "fedora-image", + "-f", + "src/linux/Dockerfile-fedora", + ".", + ] + ) + subprocess.run( + [ + "docker", + "run", + "-it", + "--name", + "fedora-container", + "-v", + "deb:/data", + "fedora-image", + ] + ) + subprocess.run( + [ + "docker", + "run", + "-d", + "--name", + "systemd-{}".format(distro), + "--privileged", + "-v", + "/sys/fs/cgroup:/sys/fs/cgroup", + "-v", + "deb:/data", + "jrei/systemd-fedora", + ] + ) # Installing test print("Installing bunkerweb...") @@ -354,21 +1040,54 @@ elif distro == "fedora": dnf install /data/bunkerweb.rpm -y """ - with tempfile.NamedTemporaryFile(mode='w') as f: + with tempfile.NamedTemporaryFile(mode="w") as f: f.write(bash_script) f.flush() - subprocess.run(["docker", "cp", f.name, "systemd-fedora:/data/install_nginx.sh"]) - result = subprocess.run(["docker", "exec", "-it", "systemd-fedora", "bash", "/data/install_nginx.sh"]) + subprocess.run( + ["docker", "cp", f.name, "systemd-fedora:/data/install_nginx.sh"] + ) + result = subprocess.run( + [ + "docker", + "exec", + "-it", + "systemd-fedora", + "bash", + "/data/install_nginx.sh", + ] + ) if result.returncode != 0: - bunkerweb_logs = subprocess.run(["docker", "exec", "-it", "systemd-fedora", "bash", "-c", "systemctl status bunkerweb.service"], capture_output=True) + bunkerweb_logs = subprocess.run( + [ + "docker", + "exec", + "-it", + "systemd-fedora", + "bash", + "-c", + "systemctl status bunkerweb.service", + ], + capture_output=True, + ) print("Logs from bunkerweb:", bunkerweb_logs.stdout.decode()) - bunkerweb_ui_logs = subprocess.run(["docker", "exec", "-it", "systemd-fedora", "bash", "-c", "systemctl status bunkerweb-ui.service"], capture_output=True) + bunkerweb_ui_logs = subprocess.run( + [ + "docker", + "exec", + "-it", + "systemd-fedora", + "bash", + "-c", + "systemctl status bunkerweb-ui.service", + ], + capture_output=True, + ) print("Logs from bunkerweb-ui:", bunkerweb_ui_logs.stdout.decode()) sys.exit(result.returncode) else: print("✔️ Installation successful ✔️") - #Checking Installation test + # Checking Installation test try: if result.returncode == 0: test_results["Installation test"] = "OK" @@ -381,23 +1100,112 @@ elif distro == "fedora": # Reloading test print("Reloading bunkerweb...") - subprocess.run(["docker", "exec", "-it", "systemd-fedora", "bash", "-c", "echo 'HTTPS_PORT=8443' >> /etc/bunkerweb/variables.env"]) - subprocess.run(["docker", "exec", "-it", "systemd-fedora", "bash", "-c", "echo 'new_value=1' >> /etc/bunkerweb/ui.env"]) - subprocess.run(["docker", "exec", "-it", "systemd-fedora", "bash", "-c", "systemctl reload bunkerweb"]) - subprocess.run(["docker", "exec", "-it", "systemd-fedora", "bash", "-c", "systemctl reload bunkerweb-ui"]) + subprocess.run( + [ + "docker", + "exec", + "-it", + "systemd-fedora", + "bash", + "-c", + "echo 'HTTPS_PORT=8443' >> /etc/bunkerweb/variables.env", + ] + ) + subprocess.run( + [ + "docker", + "exec", + "-it", + "systemd-fedora", + "bash", + "-c", + "echo 'new_value=1' >> /etc/bunkerweb/ui.env", + ] + ) + subprocess.run( + [ + "docker", + "exec", + "-it", + "systemd-fedora", + "bash", + "-c", + "systemctl reload bunkerweb", + ] + ) + subprocess.run( + [ + "docker", + "exec", + "-it", + "systemd-fedora", + "bash", + "-c", + "systemctl reload bunkerweb-ui", + ] + ) - bunkerweb_state = subprocess.run(["docker", "exec", "-it", "systemd-fedora", "bash", "-c", "systemctl is-active bunkerweb.service"], capture_output=True) + bunkerweb_state = subprocess.run( + [ + "docker", + "exec", + "-it", + "systemd-fedora", + "bash", + "-c", + "systemctl is-active bunkerweb.service", + ], + capture_output=True, + ) if bunkerweb_state.stdout.decode().strip() != "active": - bunkerweb_logs = subprocess.run(["docker", "exec", "-it", "systemd-fedora", "bash", "-c", "journalctl -u bunkerweb.service"], capture_output=True) - print("❌ bunkerweb.service is not running. Logs:", bunkerweb_logs.stdout.decode()) + bunkerweb_logs = subprocess.run( + [ + "docker", + "exec", + "-it", + "systemd-fedora", + "bash", + "-c", + "journalctl -u bunkerweb.service", + ], + capture_output=True, + ) + print( + "❌ bunkerweb.service is not running. Logs:", bunkerweb_logs.stdout.decode() + ) - bunkerweb_ui_state = subprocess.run(["docker", "exec", "-it", "systemd-fedora", "bash", "-c", "systemctl is-active bunkerweb-ui.service"], capture_output=True) + bunkerweb_ui_state = subprocess.run( + [ + "docker", + "exec", + "-it", + "systemd-fedora", + "bash", + "-c", + "systemctl is-active bunkerweb-ui.service", + ], + capture_output=True, + ) if bunkerweb_ui_state.stdout.decode().strip() != "active": - bunkerweb_ui_logs = subprocess.run(["docker", "exec", "-it", "systemd-fedora", "bash", "-c", "journalctl -u bunkerweb-ui.service"], capture_output=True) - print("❌ bunkerweb-ui.service is not running. Logs:", bunkerweb_ui_logs.stdout.decode()) + bunkerweb_ui_logs = subprocess.run( + [ + "docker", + "exec", + "-it", + "systemd-fedora", + "bash", + "-c", + "journalctl -u bunkerweb-ui.service", + ], + capture_output=True, + ) + print( + "❌ bunkerweb-ui.service is not running. Logs:", + bunkerweb_ui_logs.stdout.decode(), + ) else: print("✔️ bunkerweb.service and bunkerweb-ui.service are running ✔️") - #Checking Reloading test + # Checking Reloading test try: if bunkerweb_state.stdout.decode().strip() == "active": test_results["Reloading test"] = "OK" @@ -405,49 +1213,132 @@ elif distro == "fedora": test_results["Reloading test"] = "KO" except: test_results["Reloading test"] = "KO" - + # Removing test print("Removing bunkerweb...") - subprocess.run(["docker", "exec", "-it", "systemd-fedora", "bash", "-c", "dnf remove -y bunkerweb"]) + subprocess.run( + [ + "docker", + "exec", + "-it", + "systemd-fedora", + "bash", + "-c", + "dnf remove -y bunkerweb", + ] + ) - result = subprocess.run(["docker", "exec", "-it", "systemd-fedora", "bash", "-c", "[ -d /usr/share/bunkerweb ]"], capture_output=True) + result = subprocess.run( + [ + "docker", + "exec", + "-it", + "systemd-fedora", + "bash", + "-c", + "[ -d /usr/share/bunkerweb ]", + ], + capture_output=True, + ) if result.returncode != 0: print("✔️ /usr/share/bunkerweb not found.") else: print("❌ /usr/share/bunkerweb found.") - result = subprocess.run(["docker", "exec", "-it", "systemd-fedora", "bash", "-c", "[ -d /var/tmp/bunkerweb ]"], capture_output=True) + result = subprocess.run( + [ + "docker", + "exec", + "-it", + "systemd-fedora", + "bash", + "-c", + "[ -d /var/tmp/bunkerweb ]", + ], + capture_output=True, + ) if result.returncode != 0: print("✔️ /var/tmp/bunkerweb not found.") else: print("❌ /var/tmp/bunkerweb found.") - result = subprocess.run(["docker", "exec", "-it", "systemd-fedora", "bash", "-c", "[ -d /var/cache/bunkerweb ]"], capture_output=True) + result = subprocess.run( + [ + "docker", + "exec", + "-it", + "systemd-fedora", + "bash", + "-c", + "[ -d /var/cache/bunkerweb ]", + ], + capture_output=True, + ) if result.returncode != 0: print("✔️ /var/cache/bunkerweb not found.") else: print("❌ /var/cache/bunkerweb found.") - result = subprocess.run(["docker", "exec", "-it", "systemd-fedora", "bash", "-c", "[ -f /usr/bin/bwcli ]"], capture_output=True) + result = subprocess.run( + [ + "docker", + "exec", + "-it", + "systemd-fedora", + "bash", + "-c", + "[ -f /usr/bin/bwcli ]", + ], + capture_output=True, + ) if result.returncode != 0: print("✔️ /usr/bin/bwcli not found.") else: print("❌ /usr/bin/bwcli found.") - result = subprocess.run(["docker", "exec", "-it", "systemd-centos", "bash", "-c", "[ -d /var/lib/bunkerweb ]"], capture_output=True) + result = subprocess.run( + [ + "docker", + "exec", + "-it", + "systemd-centos", + "bash", + "-c", + "[ -d /var/lib/bunkerweb ]", + ], + capture_output=True, + ) if result.returncode != 0: print("✔️ /var/lib/bunkerweb not found.") else: print("❌ /var/lib/bunkerweb found.") - result = subprocess.run(["docker", "exec", "-it", "systemd-centos", "bash", "-c", "[ -d /etc/bunkerweb ]"], capture_output=True) + result = subprocess.run( + [ + "docker", + "exec", + "-it", + "systemd-centos", + "bash", + "-c", + "[ -d /etc/bunkerweb ]", + ], + capture_output=True, + ) if result.returncode != 0: print("✔️ /etc/bunkerweb not found.") else: print("❌ /etc/bunkerweb found.") - #Checking Removing test + # Checking Removing test try: - if os.path.exists("/usr/share/bunkerweb") or os.path.exists("/var/tmp/bunkerweb") or os.path.exists("/var/cache/bunkerweb") or os.path.exists("/usr/bin/bwcli") or os.path.isdir("/var/lib/bunkerweb") or os.path.isdir("/etc/bunkerweb"): + if ( + os.path.exists("/usr/share/bunkerweb") + or os.path.exists("/var/tmp/bunkerweb") + or os.path.exists("/var/cache/bunkerweb") + or os.path.exists("/usr/bin/bwcli") + or os.path.isdir("/var/lib/bunkerweb") + or os.path.isdir("/etc/bunkerweb") + ): test_results["Removing test"] = "KO" else: test_results["Removing test"] = "OK" @@ -457,21 +1348,103 @@ elif distro == "fedora": # Upgrading test print("Upgrading bunkerweb...") # Installing official package - subprocess.run(["docker", "exec", "-it", "systemd-fedora", "bash", "-c", "sudo dnf remove -y nginx"]) - subprocess.run(["docker", "exec", "-it", "systemd-fedora", "bash", "-c", "sudo dnf install -y nginx-1.20.2"]) - subprocess.run(["docker", "exec", "-it", "systemd-fedora", "bash", "-c", "curl -s https://packagecloud.io/install/repositories/bunkerity/bunkerweb/script.rpm.sh | sudo bash"]) - subprocess.run(["docker", "exec", "-it", "systemd-fedora", "bash", "-c", "sudo dnf check-update"]) - subprocess.run(["docker", "exec", "-it", "systemd-fedora", "bash", "-c", "sudo dnf install -y bunkerweb-1.4.5"]) + subprocess.run( + [ + "docker", + "exec", + "-it", + "systemd-fedora", + "bash", + "-c", + "sudo dnf remove -y nginx", + ] + ) + subprocess.run( + [ + "docker", + "exec", + "-it", + "systemd-fedora", + "bash", + "-c", + "sudo dnf install -y nginx-1.20.2", + ] + ) + subprocess.run( + [ + "docker", + "exec", + "-it", + "systemd-fedora", + "bash", + "-c", + "curl -s https://packagecloud.io/install/repositories/bunkerity/bunkerweb/script.rpm.sh | sudo bash", + ] + ) + subprocess.run( + [ + "docker", + "exec", + "-it", + "systemd-fedora", + "bash", + "-c", + "sudo dnf check-update", + ] + ) + subprocess.run( + [ + "docker", + "exec", + "-it", + "systemd-fedora", + "bash", + "-c", + "sudo dnf install -y bunkerweb-1.4.5", + ] + ) # Checking version - old_version = subprocess.run(["docker", "exec", "-it", "systemd-fedora", "bash", "-c", "cat /usr/share/bunkerweb/VERSION"], capture_output=True) + old_version = subprocess.run( + [ + "docker", + "exec", + "-it", + "systemd-fedora", + "bash", + "-c", + "cat /usr/share/bunkerweb/VERSION", + ], + capture_output=True, + ) print("Old version:", old_version.stdout.decode().strip()) # Upgrading package - subprocess.run(["docker", "exec", "-it", "systemd-fedora", "bash", "-c", "sudo dnf install -y /data/bunkerweb.deb"]) + subprocess.run( + [ + "docker", + "exec", + "-it", + "systemd-fedora", + "bash", + "-c", + "sudo dnf install -y /data/bunkerweb.deb", + ] + ) # Checking version - new_version = subprocess.run(["docker", "exec", "-it", "systemd-fedora", "bash", "-c", "cat /usr/share/bunkerweb/VERSION"], capture_output=True) + new_version = subprocess.run( + [ + "docker", + "exec", + "-it", + "systemd-fedora", + "bash", + "-c", + "cat /usr/share/bunkerweb/VERSION", + ], + capture_output=True, + ) print("New version:", new_version.stdout.decode().strip()) try: if old_version.stdout.decode().strip() != new_version.stdout.decode().strip(): @@ -483,7 +1456,7 @@ elif distro == "fedora": # Print summary for key, value in test_results.items(): - print(f'{key}: {value}') + print(f"{key}: {value}") if "KO" in test_results.values(): sys.exit(1) @@ -491,12 +1464,54 @@ elif distro == "rhel": print("RHEL not supported yet.") elif distro == "centos": - test_results = {"Installation test": None, "Reloading test": None, "Removing test": None, "Upgrading test": None} - subprocess.run(["docker", "build", "-t", "centos-image", "-f", "src/linux/Dockerfile-centos", "."]) + test_results = { + "Installation test": None, + "Reloading test": None, + "Removing test": None, + "Upgrading test": None, + } + subprocess.run( + [ + "docker", + "build", + "-t", + "centos-image", + "-f", + "src/linux/Dockerfile-centos", + ".", + ] + ) # Building local systemd image - subprocess.run(["docker", "build", "-t", "centos", "-f", "tests/Dockerfile-centos", "."]) - subprocess.run(["docker", "run", "-it", "--name", "centos-container", "-v", "deb:/data", "centos-image"]) - subprocess.run(["docker", "run", "-d", "--name", "systemd-{}".format(distro), "--privileged", "-v", "/sys/fs/cgroup:/sys/fs/cgroup", "-v", "deb:/data", "centos"]) + subprocess.run( + ["docker", "build", "-t", "centos", "-f", "tests/Dockerfile-centos", "."] + ) + subprocess.run( + [ + "docker", + "run", + "-it", + "--name", + "centos-container", + "-v", + "deb:/data", + "centos-image", + ] + ) + subprocess.run( + [ + "docker", + "run", + "-d", + "--name", + "systemd-{}".format(distro), + "--privileged", + "-v", + "/sys/fs/cgroup:/sys/fs/cgroup", + "-v", + "deb:/data", + "centos", + ] + ) # Installing test print("Installing bunkerweb...") @@ -506,23 +1521,63 @@ elif distro == "centos": dnf install /data/bunkerweb.rpm -y """ - with tempfile.NamedTemporaryFile(mode='w') as f: + with tempfile.NamedTemporaryFile(mode="w") as f: f.write(bash_script) f.flush() - subprocess.run(["docker", "cp", "src/linux/nginx.repo", "systemd-centos:/etc/yum.repos.d/nginx.repo"]) - subprocess.run(["docker", "cp", f.name, "systemd-centos:/data/install_nginx.sh"]) - result = subprocess.run(["docker", "exec", "-it", "systemd-centos", "bash", "/data/install_nginx.sh"]) + subprocess.run( + [ + "docker", + "cp", + "src/linux/nginx.repo", + "systemd-centos:/etc/yum.repos.d/nginx.repo", + ] + ) + subprocess.run( + ["docker", "cp", f.name, "systemd-centos:/data/install_nginx.sh"] + ) + result = subprocess.run( + [ + "docker", + "exec", + "-it", + "systemd-centos", + "bash", + "/data/install_nginx.sh", + ] + ) if result.returncode != 0: - bunkerweb_logs = subprocess.run(["docker", "exec", "-it", "systemd-centos", "bash", "-c", "systemctl status bunkerweb.service"], capture_output=True) + bunkerweb_logs = subprocess.run( + [ + "docker", + "exec", + "-it", + "systemd-centos", + "bash", + "-c", + "systemctl status bunkerweb.service", + ], + capture_output=True, + ) print("Logs from bunkerweb:", bunkerweb_logs.stdout.decode()) - bunkerweb_ui_logs = subprocess.run(["docker", "exec", "-it", "systemd-centos", "bash", "-c", "systemctl status bunkerweb-ui.service"], capture_output=True) + bunkerweb_ui_logs = subprocess.run( + [ + "docker", + "exec", + "-it", + "systemd-centos", + "bash", + "-c", + "systemctl status bunkerweb-ui.service", + ], + capture_output=True, + ) print("Logs from bunkerweb-ui:", bunkerweb_ui_logs.stdout.decode()) sys.exit(result.returncode) exit(result.returncode) else: print("✔️ Installation successful ✔️") - #Checking Installation test + # Checking Installation test try: if result.returncode == 0: test_results["Installation test"] = "OK" @@ -535,23 +1590,112 @@ elif distro == "centos": # Reloading test print("Reloading bunkerweb...") - subprocess.run(["docker", "exec", "-it", "systemd-centos", "bash", "-c", "echo 'HTTPS_PORT=8443' >> /etc/bunkerweb/variables.env"]) - subprocess.run(["docker", "exec", "-it", "systemd-centos", "bash", "-c", "echo 'new_value=1' >> /etc/bunkerweb/ui.env"]) - subprocess.run(["docker", "exec", "-it", "systemd-centos", "bash", "-c", "systemctl reload bunkerweb"]) - subprocess.run(["docker", "exec", "-it", "systemd-centos", "bash", "-c", "systemctl reload bunkerweb-ui"]) + subprocess.run( + [ + "docker", + "exec", + "-it", + "systemd-centos", + "bash", + "-c", + "echo 'HTTPS_PORT=8443' >> /etc/bunkerweb/variables.env", + ] + ) + subprocess.run( + [ + "docker", + "exec", + "-it", + "systemd-centos", + "bash", + "-c", + "echo 'new_value=1' >> /etc/bunkerweb/ui.env", + ] + ) + subprocess.run( + [ + "docker", + "exec", + "-it", + "systemd-centos", + "bash", + "-c", + "systemctl reload bunkerweb", + ] + ) + subprocess.run( + [ + "docker", + "exec", + "-it", + "systemd-centos", + "bash", + "-c", + "systemctl reload bunkerweb-ui", + ] + ) - bunkerweb_state = subprocess.run(["docker", "exec", "-it", "systemd-centos", "bash", "-c", "systemctl is-active bunkerweb.service"], capture_output=True) + bunkerweb_state = subprocess.run( + [ + "docker", + "exec", + "-it", + "systemd-centos", + "bash", + "-c", + "systemctl is-active bunkerweb.service", + ], + capture_output=True, + ) if bunkerweb_state.stdout.decode().strip() != "active": - bunkerweb_logs = subprocess.run(["docker", "exec", "-it", "systemd-centos", "bash", "-c", "journalctl -u bunkerweb.service"], capture_output=True) - print("❌ bunkerweb.service is not running. Logs:", bunkerweb_logs.stdout.decode()) + bunkerweb_logs = subprocess.run( + [ + "docker", + "exec", + "-it", + "systemd-centos", + "bash", + "-c", + "journalctl -u bunkerweb.service", + ], + capture_output=True, + ) + print( + "❌ bunkerweb.service is not running. Logs:", bunkerweb_logs.stdout.decode() + ) - bunkerweb_ui_state = subprocess.run(["docker", "exec", "-it", "systemd-centos", "bash", "-c", "systemctl is-active bunkerweb-ui.service"], capture_output=True) + bunkerweb_ui_state = subprocess.run( + [ + "docker", + "exec", + "-it", + "systemd-centos", + "bash", + "-c", + "systemctl is-active bunkerweb-ui.service", + ], + capture_output=True, + ) if bunkerweb_ui_state.stdout.decode().strip() != "active": - bunkerweb_ui_logs = subprocess.run(["docker", "exec", "-it", "systemd-centos", "bash", "-c", "journalctl -u bunkerweb-ui.service"], capture_output=True) - print("❌ bunkerweb-ui.service is not running. Logs:", bunkerweb_ui_logs.stdout.decode()) + bunkerweb_ui_logs = subprocess.run( + [ + "docker", + "exec", + "-it", + "systemd-centos", + "bash", + "-c", + "journalctl -u bunkerweb-ui.service", + ], + capture_output=True, + ) + print( + "❌ bunkerweb-ui.service is not running. Logs:", + bunkerweb_ui_logs.stdout.decode(), + ) else: print("✔️ bunkerweb.service and bunkerweb-ui.service are running ✔️") - #Checking Reloading test + # Checking Reloading test try: if bunkerweb_state.stdout.decode().strip() == "active": test_results["Reloading test"] = "OK" @@ -559,49 +1703,132 @@ elif distro == "centos": test_results["Reloading test"] = "KO" except: test_results["Reloading test"] = "KO" - + # Removing test print("Removing bunkerweb...") - subprocess.run(["docker", "exec", "-it", "systemd-centos", "bash", "-c", "dnf remove -y bunkerweb"]) + subprocess.run( + [ + "docker", + "exec", + "-it", + "systemd-centos", + "bash", + "-c", + "dnf remove -y bunkerweb", + ] + ) - result = subprocess.run(["docker", "exec", "-it", "systemd-centos", "bash", "-c", "[ -d /usr/share/bunkerweb ]"], capture_output=True) + result = subprocess.run( + [ + "docker", + "exec", + "-it", + "systemd-centos", + "bash", + "-c", + "[ -d /usr/share/bunkerweb ]", + ], + capture_output=True, + ) if result.returncode != 0: print("✔️ /usr/share/bunkerweb not found.") else: print("❌ /usr/share/bunkerweb found.") - result = subprocess.run(["docker", "exec", "-it", "systemd-centos", "bash", "-c", "[ -d /var/tmp/bunkerweb ]"], capture_output=True) + result = subprocess.run( + [ + "docker", + "exec", + "-it", + "systemd-centos", + "bash", + "-c", + "[ -d /var/tmp/bunkerweb ]", + ], + capture_output=True, + ) if result.returncode != 0: print("✔️ /var/tmp/bunkerweb not found.") else: print("❌ /var/tmp/bunkerweb found.") - result = subprocess.run(["docker", "exec", "-it", "systemd-centos", "bash", "-c", "[ -d /var/cache/bunkerweb ]"], capture_output=True) + result = subprocess.run( + [ + "docker", + "exec", + "-it", + "systemd-centos", + "bash", + "-c", + "[ -d /var/cache/bunkerweb ]", + ], + capture_output=True, + ) if result.returncode != 0: print("✔️ /var/cache/bunkerweb not found.") else: print("❌ /var/cache/bunkerweb found.") - result = subprocess.run(["docker", "exec", "-it", "systemd-centos", "bash", "-c", "[ -f /usr/bin/bwcli ]"], capture_output=True) + result = subprocess.run( + [ + "docker", + "exec", + "-it", + "systemd-centos", + "bash", + "-c", + "[ -f /usr/bin/bwcli ]", + ], + capture_output=True, + ) if result.returncode != 0: print("✔️ /usr/bin/bwcli not found.") else: print("❌ /usr/bin/bwcli found.") - - result = subprocess.run(["docker", "exec", "-it", "systemd-centos", "bash", "-c", "[ -d /var/lib/bunkerweb ]"], capture_output=True) + + result = subprocess.run( + [ + "docker", + "exec", + "-it", + "systemd-centos", + "bash", + "-c", + "[ -d /var/lib/bunkerweb ]", + ], + capture_output=True, + ) if result.returncode != 0: print("✔️ /var/lib/bunkerweb not found.") else: print("❌ /var/lib/bunkerweb found.") - result = subprocess.run(["docker", "exec", "-it", "systemd-centos", "bash", "-c", "[ -d /etc/bunkerweb ]"], capture_output=True) + result = subprocess.run( + [ + "docker", + "exec", + "-it", + "systemd-centos", + "bash", + "-c", + "[ -d /etc/bunkerweb ]", + ], + capture_output=True, + ) if result.returncode != 0: print("✔️ /etc/bunkerweb not found.") else: print("❌ /etc/bunkerweb found.") - #Checking Removing test + # Checking Removing test try: - if os.path.exists("/usr/share/bunkerweb") or os.path.exists("/var/tmp/bunkerweb") or os.path.exists("/var/cache/bunkerweb") or os.path.exists("/usr/bin/bwcli") or os.path.isdir("/var/lib/bunkerweb") or os.path.isdir("/etc/bunkerweb"): + if ( + os.path.exists("/usr/share/bunkerweb") + or os.path.exists("/var/tmp/bunkerweb") + or os.path.exists("/var/cache/bunkerweb") + or os.path.exists("/usr/bin/bwcli") + or os.path.isdir("/var/lib/bunkerweb") + or os.path.isdir("/etc/bunkerweb") + ): test_results["Removing test"] = "KO" else: test_results["Removing test"] = "OK" @@ -611,21 +1838,103 @@ elif distro == "centos": # Upgrading test print("Upgrading bunkerweb...") # Installing official package - subprocess.run(["docker", "exec", "-it", "systemd-centos", "bash", "-c", "sudo dnf remove -y nginx"]) - subprocess.run(["docker", "exec", "-it", "systemd-centos", "bash", "-c", "sudo dnf install -y nginx-1.20.2"]) - subprocess.run(["docker", "exec", "-it", "systemd-centos", "bash", "-c", "curl -s https://packagecloud.io/install/repositories/bunkerity/bunkerweb/script.rpm.sh | sudo bash"]) - subprocess.run(["docker", "exec", "-it", "systemd-centos", "bash", "-c", "sudo dnf check-update"]) - subprocess.run(["docker", "exec", "-it", "systemd-centos", "bash", "-c", "sudo dnf install -y bunkerweb-1.4.5"]) + subprocess.run( + [ + "docker", + "exec", + "-it", + "systemd-centos", + "bash", + "-c", + "sudo dnf remove -y nginx", + ] + ) + subprocess.run( + [ + "docker", + "exec", + "-it", + "systemd-centos", + "bash", + "-c", + "sudo dnf install -y nginx-1.20.2", + ] + ) + subprocess.run( + [ + "docker", + "exec", + "-it", + "systemd-centos", + "bash", + "-c", + "curl -s https://packagecloud.io/install/repositories/bunkerity/bunkerweb/script.rpm.sh | sudo bash", + ] + ) + subprocess.run( + [ + "docker", + "exec", + "-it", + "systemd-centos", + "bash", + "-c", + "sudo dnf check-update", + ] + ) + subprocess.run( + [ + "docker", + "exec", + "-it", + "systemd-centos", + "bash", + "-c", + "sudo dnf install -y bunkerweb-1.4.5", + ] + ) # Checking version - old_version = subprocess.run(["docker", "exec", "-it", "systemd-centos", "bash", "-c", "cat /opt/bunkerweb/VERSION"], capture_output=True) + old_version = subprocess.run( + [ + "docker", + "exec", + "-it", + "systemd-centos", + "bash", + "-c", + "cat /opt/bunkerweb/VERSION", + ], + capture_output=True, + ) print("Old version:", old_version.stdout.decode().strip()) # Upgrading package - subprocess.run(["docker", "exec", "-it", "systemd-centos", "bash", "-c", "sudo dnf install -y /data/bunkerweb.rpm"]) + subprocess.run( + [ + "docker", + "exec", + "-it", + "systemd-centos", + "bash", + "-c", + "sudo dnf install -y /data/bunkerweb.rpm", + ] + ) # Checking version - new_version = subprocess.run(["docker", "exec", "-it", "systemd-centos", "bash", "-c", "cat /usr/share/bunkerweb/VERSION"], capture_output=True) + new_version = subprocess.run( + [ + "docker", + "exec", + "-it", + "systemd-centos", + "bash", + "-c", + "cat /usr/share/bunkerweb/VERSION", + ], + capture_output=True, + ) print("New version:", new_version.stdout.decode().strip()) try: if old_version.stdout.decode().strip() != new_version.stdout.decode().strip(): @@ -637,9 +1946,9 @@ elif distro == "centos": # Print summary for key, value in test_results.items(): - print(f'{key}: {value}') + print(f"{key}: {value}") if "KO" in test_results.values(): sys.exit(1) else: print("Invalid argument. Please pass one of: ubuntu, debian, fedora, rhel, centos") - sys.exit(1) \ No newline at end of file + sys.exit(1) diff --git a/tests/ui/docker-compose.yml b/tests/ui/docker-compose.yml index 8cc83b14..9fa0564a 100644 --- a/tests/ui/docker-compose.yml +++ b/tests/ui/docker-compose.yml @@ -100,7 +100,6 @@ volumes: bw-data: mariadb: - networks: bw-universe: name: bw-universe