Add the TLS check to the test script
authorAlexander Ebert <ebert@woltlab.com>
Sat, 22 Jun 2024 13:50:56 +0000 (15:50 +0200)
committerAlexander Ebert <ebert@woltlab.com>
Sat, 22 Jun 2024 13:50:56 +0000 (15:50 +0200)
wcfsetup/install/lang/de.xml
wcfsetup/install/lang/en.xml
wcfsetup/test.php

index 2130bd9a57ae1f1cacacba7b5d45b29ce94e101f..590357b715bda52da05f7ae7dbefb3d5fd601f25 100644 (file)
@@ -984,7 +984,7 @@ Sie erreichen das Fehlerprotokoll unter: {link controller='ExceptionLogView' isE
                <item name="wcf.acp.index.missingLanguageItems"><![CDATA[Es wurden fehlende Sprachvariablen protokolliert (zuletzt: {@$missingLanguageItemsMTime|time}). {if LANGUAGE_USE_INFORMAL_VARIANT}Überprüfe{else}Überprüfen Sie{/if} die <a href="{link controller='DevtoolsMissingLanguageItemList'}{/link}">Liste der fehlenden Texte</a> für weitere Informationen.]]></item>
                <item name="wcf.acp.index.systemIdMismatch"><![CDATA[Die Systemumgebung hat sich verändert. Es wird empfohlen, eine <a href="{link controller='SystemCheck'}{/link}">Systemüberprüfung</a> durchzuführen.]]></item>
                <item name="wcf.acp.index.cacheSanityCheckFailed"><![CDATA[Die eingestellte Cache-Methode („{CACHE_SOURCE_TYPE}“) funktioniert nicht richtig.]]></item>
-               <item name="wcf.acp.index.insecureContext"><![CDATA[Die Seite wird nicht über HTTPS aufgerufen. Wichtige Funktionen stehen dadurch nicht zur Verfügung, die für die korrekte Funktionsweise der Software wichtig sind.]]></item>
+               <item name="wcf.acp.index.insecureContext"><![CDATA[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.]]></item>
        </category>
        <category name="wcf.acp.label">
                <item name="wcf.acp.label.add"><![CDATA[Label hinzufügen]]></item>
index 7f07b3a0b5bd1d92dcbf4dff98fa2f2c2d165f31..51174254edebded8151d8beac0e5e0b7ed3de8a5 100644 (file)
@@ -962,7 +962,7 @@ You can access the error log at: {link controller='ExceptionLogView' isEmail=tru
                <item name="wcf.acp.index.missingLanguageItems"><![CDATA[Missing language items have been detected (last time: {@$missingLanguageItemsMTime|time}). Check the <a href="{link controller='DevtoolsMissingLanguageItemList'}{/link}">list of missing phrases</a> for more information.]]></item>
                <item name="wcf.acp.index.systemIdMismatch"><![CDATA[The system environment has changed. It is recommended to perform a <a href="{link controller='SystemCheck'}{/link}">System Check</a>.]]></item>
                <item name="wcf.acp.index.cacheSanityCheckFailed"><![CDATA[The configured caching method (“{CACHE_SOURCE_TYPE}”) is not working correctly.]]></item>
-               <item name="wcf.acp.index.insecureContext"><![CDATA[The page is not accessed via HTTPS. Important features that are important for the proper operation of the software are therefore not available.]]></item>
+               <item name="wcf.acp.index.insecureContext"><![CDATA[The page is not accessed via HTTPS. Important features that are required for the proper operation of the software are therefore not available.]]></item>
        </category>
        <category name="wcf.acp.label">
                <item name="wcf.acp.label.add"><![CDATA[Add Label]]></item>
index 919afb7bf7aff15ed7b5b24ff6bda6c45f2fb72a..f6c41db8949c78696579a5e8c2dfd4c211d5692a 100644 (file)
@@ -11,7 +11,7 @@ if (isset($_GET['language']) && \in_array($_GET['language'], ['de', 'en'])) {
     $language = $_GET['language'];
 }
 
-const WSC_SRT_VERSION = '6.0.0';
+const WSC_SRT_VERSION = '6.1.0';
 $requiredExtensions = [
     'ctype',
     'dom',
@@ -82,6 +82,10 @@ $phrases = [
         'de' => 'Bitte stellen Sie sicher, dass MySQL 8.0.30+  oder MariaDB 10.5.15+ mit InnoDB-Unterstützung vorhanden ist.',
         'en' => 'Please make sure that MySQL 8.0.30+ or MariaDB 10.5.15+, with InnoDB support is available.',
     ],
+    'tls_failure' => [
+        'de' => '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.',
+        'en' => 'The page is not accessed via HTTPS. Important features that are required for the proper operation of the software are therefore not available.',
+    ],
     'result' => [
         'de' => 'Ergebnis',
         'en' => 'Summary',
@@ -185,7 +189,7 @@ function checkResult()
 {
     global $requiredExtensions;
 
-    if (!checkPHPVersion() || !checkX64() || !checkMemoryLimit() || !checkOpcache()) {
+    if (!checkPHPVersion() || !checkX64() || !checkMemoryLimit() || !checkOpcache() || !checkTls()) {
         return false;
     }
 
@@ -224,6 +228,25 @@ function checkOpcache()
 
     return true;
 }
+function checkTls(): bool
+{
+    // @see \wcf\system\request\RouteHandler::secureConnection()
+    if (
+        (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] != 'off')
+        || $_SERVER['SERVER_PORT'] == 443
+        || (!empty($_SERVER['HTTP_X_FORWARDED_PROTO']) && $_SERVER['HTTP_X_FORWARDED_PROTO'] == 'https')
+    ) {
+        return true;
+    }
+
+    // @see \wcf\system\request\RouteHandler::secureContext()
+    $host = $_SERVER['HTTP_HOST'];
+    if ($host === '127.0.0.1' || $host === 'localhost' || \str_ends_with($host, '.localhost')) {
+        return true;
+    }
+
+    return false;
+}
 
 ?>
 <!doctype html>
@@ -482,6 +505,10 @@ function checkOpcache()
                     <?php if (!checkOpcache()) { ?>
                         <li class="failure"><?= getPhrase('php_opcache_failure') ?></li>
                     <?php } ?>
+
+                    <?php if (!checkTls()) { ?>
+                        <li class="failure"><?= getPhrase('tls_failure') ?></li>
+                    <?php } ?>
                 <?php } else { ?>
                     <li class="failure"><?= getPhrase('php_version_failure', [\PHP_VERSION, $phpVersionLowerBound, $phpVersionUpperBound]) ?></li>
                 <?php } ?>