43 lines
1.7 KiB
PHP
43 lines
1.7 KiB
PHP
<?php
|
|
declare(strict_types=1);
|
|
|
|
/**
|
|
* Prüft die Erkennung von HTML in Nachrichten: Eine Adresse in spitzen Klammern ("Von: Name <name@example.de>") ist kein HTML.
|
|
* Wurde sie dafür gehalten, zeigte DeskHub den Text als HTML an und alle Zeilenumbrüche gingen verloren.
|
|
*/
|
|
|
|
putenv('DESKHUB_TESTING=1');
|
|
putenv('DESKHUB_SQLITE_PATH=:memory:');
|
|
require_once dirname(__DIR__) . '/includes/bootstrap.php';
|
|
|
|
$failures = [];
|
|
$check = function (bool $ok, string $what) use (&$failures): void {
|
|
if (!$ok) $failures[] = $what;
|
|
};
|
|
|
|
$text = [
|
|
"und de nächste Teil\n\nGesendet: Sonntag\nVon: Windelgeschichten <einsendungen@windelgeschichten.org>\nAn: \"Olaf Andresen\" <olaf.andresen@gmx.de>",
|
|
'Antwort an Olaf <olaf@gmx.de>',
|
|
'Bitte an <p.muster@example.de> senden',
|
|
'Kontakt: <b@example.de>',
|
|
'wenn a < b und c > d gilt',
|
|
'Preis <10 € und >5 €',
|
|
'Link: <https://example.de/seite>',
|
|
'<script>alert(1)</script>', // kein erlaubtes Tag: wird als Text (maskiert) angezeigt, also sicher
|
|
];
|
|
foreach ($text as $t) $check(!message_is_html($t), 'kein HTML: ' . substr($t, 0, 50));
|
|
|
|
$html = [
|
|
'<p>Hallo</p>', 'Zeile 1<br>Zeile 2', 'Zeile 1<br/>Zeile 2', 'Zeile 1<br />Zeile 2', '<div style="color:red">x</div>',
|
|
'<a href="https://example.de">Link</a>', 'Text</p>', '<B>fett</B>', '<o:p></o:p>', '<table><tr><td>x</td></tr></table>',
|
|
'<h3>Hallo</h3>', 'Text <span class="x">y</span>', '<ul><li>a</li></ul>', '<img src="cid:x" alt="image">',
|
|
"<html>\n<body>\n<p>x</p></body></html>",
|
|
];
|
|
foreach ($html as $h) $check(message_is_html($h), 'HTML: ' . substr($h, 0, 50));
|
|
|
|
if ($failures) {
|
|
fwrite(STDERR, "Fehlgeschlagen:\n - " . implode("\n - ", $failures) . "\n");
|
|
exit(1);
|
|
}
|
|
echo "Message HTML detection checks passed.\n";
|