(no commit message) master
authorChristian Weiske <cweiske@cweiske.de>
Mon, 17 Nov 2025 14:11:32 +0000 (15:11 +0100)
committerChristian Weiske <cweiske@cweiske.de>
Mon, 17 Nov 2025 14:11:32 +0000 (15:11 +0100)
README.rst [new file with mode: 0644]
phork0.php [new file with mode: 0644]

diff --git a/README.rst b/README.rst
new file mode 100644 (file)
index 0000000..6a21696
--- /dev/null
@@ -0,0 +1 @@
+Pretty hacky, but works on TYPO3 v13.
\ No newline at end of file
diff --git a/phork0.php b/phork0.php
new file mode 100644 (file)
index 0000000..c6f23b0
--- /dev/null
@@ -0,0 +1,32 @@
+<?php\r
+\r
+use Psr\Http\Message\ServerRequestInterface;\r
+use TYPO3\CMS\Core\TypoScript\FrontendTypoScript;\r
+use TYPO3\CMS\Core\Utility\GeneralUtility;\r
+\r
+class Foo\r
+{\r
+    protected function sendRateLimitHeaders(RateLimit $limit): void\r
+    {\r
+        $tsfe = $this->getTsfe();\r
+        $typoscript = $tsfe->getConfigArray();\r
+\r
+        $headers = $typoscript['additionalHeaders.'] ?? [];\r
+        $headers['910.'] = ['header' => 'X-RateLimit-Remaining: ' . $limit->getRemainingTokens()];\r
+        $headers['911.'] = ['header' => 'X-RateLimit-Retry-After: ' . $limit->getRetryAfter()->getTimestamp() - time()];\r
+        $headers['912.'] = ['header' => 'X-RateLimit-Limit: ' . $limit->getLimit()];\r
+\r
+\r
+        $typoscript['additionalHeaders.'] = $headers;\r
+        $tsfe->setConfigArray($typoscript);\r
+    }\r
+\r
+    protected function getTsfe(): FrontendTypoScript\r
+    {\r
+        return $this->getRequest()->getAttribute('frontend.typoscript');\r
+    }\r
+\r
+    protected function getRequest(): ServerRequestInterface\r
+    {\r
+        return $GLOBALS['TYPO3_REQUEST'];\r
+    }\r