Add a preflight script for the upgrade from 6.0
authorAlexander Ebert <ebert@woltlab.com>
Sat, 22 Jun 2024 17:32:11 +0000 (19:32 +0200)
committerAlexander Ebert <ebert@woltlab.com>
Sat, 22 Jun 2024 17:32:11 +0000 (19:32 +0200)
wcfsetup/install/files/acp/update_com.woltlab.wcf_6.1_checkSystemRequirements.php [new file with mode: 0644]

diff --git a/wcfsetup/install/files/acp/update_com.woltlab.wcf_6.1_checkSystemRequirements.php b/wcfsetup/install/files/acp/update_com.woltlab.wcf_6.1_checkSystemRequirements.php
new file mode 100644 (file)
index 0000000..d6521c5
--- /dev/null
@@ -0,0 +1,37 @@
+<?php
+
+/**
+ * Checks the system requirements for the upgrade from WoltLab Suite 6.0.
+ *
+ * @author Alexander Ebert
+ * @copyright 2001-2024 WoltLab GmbH
+ * @license GNU Lesser General Public License <http://opensource.org/licenses/lgpl-license.php>
+ * @since 6.1
+ */
+
+use wcf\system\request\RouteHandler;
+use wcf\system\WCF;
+
+$checkForTls = function () {
+    if (RouteHandler::secureConnection()) {
+        return true;
+    }
+
+    // @see RouteHandler::secureContext()
+    $host = $_SERVER['HTTP_HOST'];
+    if ($host === '127.0.0.1' || $host === 'localhost' || \str_ends_with($host, '.localhost')) {
+        return true;
+    }
+
+    return false;
+};
+
+if (!$checkForTls()) {
+    if (WCF::getLanguage()->getFixedLanguageCode() === 'de') {
+        $message = "Die Seite wird nicht über HTTPS aufgerufen. Wichtige Funktionen stehen dadurch nicht zur Verfügung, die für die korrekte Funktionsweise der Software erforderlich sind.";
+    } else {
+        $message = "The page is not accessed via HTTPS. Important features that are required for the proper operation of the software are therefore not available.";
+    }
+
+    throw new \RuntimeException($message);
+}