{"id":634,"date":"2010-05-13T15:02:47","date_gmt":"2010-05-13T13:02:47","guid":{"rendered":"http:\/\/blog.benny-baumann.de\/?p=634"},"modified":"2010-05-13T15:18:58","modified_gmt":"2010-05-13T13:18:58","slug":"squirrelmail-making-it-work-without-preg_replace-and-e","status":"publish","type":"post","link":"https:\/\/blog.benny-baumann.de\/?p=634","title":{"rendered":"SquirrelMail: Making it work without preg_replace and \/e"},"content":{"rendered":"<p>Ich hatte ja <a href=\"http:\/\/blog.benny-baumann.de\/?p=332\">bereits vor l\u00e4ngerer Zeit<\/a> angemerkt, dass <a href=\"http:\/\/squirrelmail.org\/\">SquirrelMail<\/a> mit konfiguriertem Suhosin-Patch nicht richtig l\u00e4uft. Und da <a href=\"http:\/\/sourceforge.net\/tracker\/?func=detail&#038;aid=2818691&#038;group_id=311&#038;atid=100311\">seit einem Jahr<\/a>, wo der Bugreport nun Upstream bekannt ist, immer noch nichts passiert ist, gibt es hier f\u00fcr alle geplagten nun ein Diff-File zum Ersparen der ganzen Tipparbeit (Ja, der Patch ist grundlegend REINES Copy&#038;Paste). Zumal ja durchaus schon die Grundlagen f\u00fcr eine L\u00f6sung ohne \/e vorhanden sind. <!--more--><\/p>\n<p>Aber gut, heute einmal ein Post von mir ohne gro\u00dfe Worte und nur dem zugeh\u00f6rigen Patch:<\/p>\n<p>Im Verzeichnis decode anzuwenden:<\/p>\n<pre lang=\"diff\" escaped=\"true\">--- iso_8859_1.php      2010-01-05 16:59:48.000000000 +0100\r\n+++ iso_8859_1.php      2010-05-13 14:05:40.000000000 +0200\r\n@@ -23,12 +23,11 @@\r\n     if (! sq_is8bit($string,'iso-8859-1'))\r\n         return $string;\r\n\r\n-    $string = preg_replace(\"\/([\\201-\\237])\/e\",\"'&#' . ord('\\\\1') . ';'\",$string);\r\n+    $string = preg_replace_callback(\"\/([\\201-\\377])\/\",'charset_decode_iso_8859_1_helper',$string);\r\n\r\n-    \/* I don't want to use 0xA0 (\\240) in any ranges. RH73 may dislike it *\/\r\n-    $string = str_replace(\"\\240\", '&#160;', $string);\r\n-\r\n-    $string = preg_replace(\"\/([\\241-\\377])\/e\",\"'&#' . ord('\\\\1') . ';'\",$string);\r\n     return $string;\r\n }\r\n\r\n+function charset_decode_iso_8859_1_helper ($m) {\r\n+    return '&#' . ord($m[1]) . ';';\r\n+}\r\n--- us_ascii.php        2010-01-05 16:59:48.000000000 +0100\r\n+++ us_ascii.php        2010-05-13 14:00:36.000000000 +0200\r\n@@ -26,11 +26,7 @@\r\n     if (! sq_is8bit($string,'us-ascii'))\r\n         return $string;\r\n\r\n-    $string = preg_replace(\"\/([\\201-\\237])\/e\",\"'?'\",$string);\r\n+    $string = preg_replace(\"\/([\\201-\\377])\/\",\"?\",$string);\r\n\r\n-    \/* I don't want to use 0xA0 (\\240) in any ranges. RH73 may dislike it *\/\r\n-    $string = str_replace(\"\\240\", '?', $string);\r\n-\r\n-    $string = preg_replace(\"\/([\\241-\\377])\/e\",\"'?'\",$string);\r\n     return $string;\r\n }\r\n<\/pre>\n<p>Zuz\u00fcglich meinem Patch aus dem vorhergehenden Beitrag zum Thema.<\/p>\n<p>Und f\u00fcr das Verzeichnis encode anzuwenden:<\/p>\n<pre lang=\"diff\" escaped=\"true\">--- cp1251.php  2010-01-05 16:59:48.000000000 +0100\r\n+++ cp1251.php  2010-05-13 14:17:58.000000000 +0200\r\n@@ -19,10 +19,10 @@\r\n  * @return string cp1251 encoded text\r\n  *\/\r\n function charset_encode_cp1251 ($string) {\r\n-   \/\/ don't run encoding function, if there is no encoded characters\r\n-   if (! preg_match(\"'&#[0-9]+;'\",$string) ) return $string;\r\n+    \/\/ don't run encoding function, if there is no encoded characters\r\n+    if (! preg_match(\"'&#[0-9]+;'\",$string) ) return $string;\r\n\r\n-    $string=preg_replace(\"\/&#([0-9]+);\/e\",\"unicodetocp1251('\\\\1')\",$string);\r\n+    $string=preg_replace_callback(\"\/&#([0-9]+);\/\",\"unicodetocp1251\",$string);\r\n     \/\/ $string=preg_replace(\"\/&#[xX]([0-9A-F]+);\/e\",\"unicodetocp1251(hexdec('\\\\1'))\",$string);\r\n\r\n     return $string;\r\n@@ -41,6 +41,10 @@\r\n  *\/\r\n function unicodetocp1251($var) {\r\n\r\n+    if(is_array($var)) {\r\n+        $var=$var[1];\r\n+    }\r\n+\r\n     $cp1251chars=array('160' =&gt; \"\\xA0\",\r\n                        '164' =&gt; \"\\xA4\",\r\n                        '166' =&gt; \"\\xA6\",\r\n--- cp1255.php  2010-01-05 16:59:48.000000000 +0100\r\n+++ cp1255.php  2010-05-13 14:17:49.000000000 +0200\r\n@@ -19,10 +19,10 @@\r\n  * @return string cp1255 encoded text\r\n  *\/\r\n function charset_encode_cp1255 ($string) {\r\n-   \/\/ don't run encoding function, if there is no encoded characters\r\n-   if (! preg_match(\"'&#[0-9]+;'\",$string) ) return $string;\r\n+    \/\/ don't run encoding function, if there is no encoded characters\r\n+    if (! preg_match(\"'&#[0-9]+;'\",$string) ) return $string;\r\n\r\n-    $string=preg_replace(\"\/&#([0-9]+);\/e\",\"unicodetocp1255('\\\\1')\",$string);\r\n+    $string=preg_replace_callback(\"\/&#([0-9]+);\/\",\"unicodetocp1255\",$string);\r\n     \/\/ $string=preg_replace(\"\/&#[xX]([0-9A-F]+);\/e\",\"unicodetocp1255(hexdec('\\\\1'))\",$string);\r\n\r\n     return $string;\r\n@@ -41,6 +41,10 @@\r\n  *\/\r\n function unicodetocp1255($var) {\r\n\r\n+    if(is_array($var)) {\r\n+        $var=$var[1];\r\n+    }\r\n+\r\n     $cp1255chars=array('160' =&gt; \"\\xA0\",\r\n                        '161' =&gt; \"\\xA1\",\r\n                        '162' =&gt; \"\\xA2\",\r\n--- cp1256.php  2010-01-05 16:59:48.000000000 +0100\r\n+++ cp1256.php  2010-05-13 14:17:40.000000000 +0200\r\n@@ -19,10 +19,10 @@\r\n  * @return string cp1256 encoded text\r\n  *\/\r\n function charset_encode_cp1256 ($string) {\r\n-   \/\/ don't run encoding function, if there is no encoded characters\r\n-   if (! preg_match(\"'&#[0-9]+;'\",$string) ) return $string;\r\n+    \/\/ don't run encoding function, if there is no encoded characters\r\n+    if (! preg_match(\"'&#[0-9]+;'\",$string) ) return $string;\r\n\r\n-    $string=preg_replace(\"\/&#([0-9]+);\/e\",\"unicodetocp1256('\\\\1')\",$string);\r\n+    $string=preg_replace_callback(\"\/&#([0-9]+);\/\",\"unicodetocp1256\",$string);\r\n     \/\/ $string=preg_replace(\"\/&#[xX]([0-9A-F]+);\/e\",\"unicodetocp1256(hexdec('\\\\1'))\",$string);\r\n\r\n     return $string;\r\n@@ -41,6 +41,10 @@\r\n  *\/\r\n function unicodetocp1256($var) {\r\n\r\n+    if(is_array($var)) {\r\n+        $var=$var[1];\r\n+    }\r\n+\r\n     $cp1256chars=array('160' =&gt; \"\\xA0\",\r\n                        '162' =&gt; \"\\xA2\",\r\n                        '163' =&gt; \"\\xA3\",\r\n--- iso_8859_1.php      2010-01-05 16:59:48.000000000 +0100\r\n+++ iso_8859_1.php      2010-05-13 14:17:08.000000000 +0200\r\n@@ -19,10 +19,10 @@\r\n  * @return string iso-8859-1 encoded text\r\n  *\/\r\n function charset_encode_iso_8859_1 ($string) {\r\n-   \/\/ don't run encoding function, if there is no encoded characters\r\n-   if (! preg_match(\"'&#[0-9]+;'\",$string) ) return $string;\r\n+    \/\/ don't run encoding function, if there is no encoded characters\r\n+    if (! preg_match(\"'&#[0-9]+;'\",$string) ) return $string;\r\n\r\n-    $string=preg_replace(\"\/&#([0-9]+);\/e\",\"unicodetoiso88591('\\\\1')\",$string);\r\n+    $string=preg_replace_callback(\"\/&#([0-9]+);\/\",\"unicodetoiso88591\",$string);\r\n     \/\/ $string=preg_replace(\"\/&#[xX]([0-9A-F]+);\/e\",\"unicodetoiso88591(hexdec('\\\\1'))\",$string);\r\n\r\n     return $string;\r\n@@ -41,6 +41,10 @@\r\n  *\/\r\n function unicodetoiso88591($var) {\r\n\r\n+    if(is_array($var)) {\r\n+        $var=$var[1];\r\n+    }\r\n+\r\n     if ($var &lt; 256) {\r\n         $ret = chr ($var);\r\n     } else {\r\n--- iso_8859_15.php     2010-01-05 16:59:48.000000000 +0100\r\n+++ iso_8859_15.php     2010-05-13 14:16:54.000000000 +0200\r\n@@ -19,10 +19,10 @@\r\n  * @return string iso-8859-15 encoded text\r\n  *\/\r\n function charset_encode_iso_8859_15 ($string) {\r\n-   \/\/ don't run encoding function, if there is no encoded characters\r\n-   if (! preg_match(\"'&#[0-9]+;'\",$string) ) return $string;\r\n+    \/\/ don't run encoding function, if there is no encoded characters\r\n+    if (! preg_match(\"'&#[0-9]+;'\",$string) ) return $string;\r\n\r\n-    $string=preg_replace(\"\/&#([0-9]+);\/e\",\"unicodetoiso885915('\\\\1')\",$string);\r\n+    $string=preg_replace_callback(\"\/&#([0-9]+);\/\",\"unicodetoiso885915\",$string);\r\n     \/\/ $string=preg_replace(\"\/&#[xX]([0-9A-F]+);\/e\",\"unicodetoiso885915(hexdec('\\\\1'))\",$string);\r\n\r\n     return $string;\r\n@@ -41,6 +41,10 @@\r\n  *\/\r\n function unicodetoiso885915($var) {\r\n\r\n+    if(is_array($var)) {\r\n+        $var=$var[1];\r\n+    }\r\n+\r\n     $iso885915chars=array('160' =&gt; \"\\xA0\",\r\n                           '161' =&gt; \"\\xA1\",\r\n                           '162' =&gt; \"\\xA2\",\r\n--- iso_8859_2.php      2010-01-05 16:59:48.000000000 +0100\r\n+++ iso_8859_2.php      2010-05-13 14:17:21.000000000 +0200\r\n@@ -19,10 +19,10 @@\r\n  * @return string iso-8859-2 encoded text\r\n  *\/\r\n function charset_encode_iso_8859_2 ($string) {\r\n-   \/\/ don't run encoding function, if there is no encoded characters\r\n-   if (! preg_match(\"'&#[0-9]+;'\",$string) ) return $string;\r\n+    \/\/ don't run encoding function, if there is no encoded characters\r\n+    if (! preg_match(\"'&#[0-9]+;'\",$string) ) return $string;\r\n\r\n-    $string=preg_replace(\"\/&#([0-9]+);\/e\",\"unicodetoiso88592('\\\\1')\",$string);\r\n+    $string=preg_replace_callback(\"\/&#([0-9]+);\/\",\"unicodetoiso88592\",$string);\r\n     \/\/ $string=preg_replace(\"\/&#[xX]([0-9A-F]+);\/e\",\"unicodetoiso88592(hexdec('\\\\1'))\",$string);\r\n\r\n     return $string;\r\n@@ -41,6 +41,10 @@\r\n  *\/\r\n function unicodetoiso88592($var) {\r\n\r\n+    if(is_array($var)) {\r\n+        $var=$var[1];\r\n+    }\r\n+\r\n     $iso88592chars=array('160' =&gt; \"\\xA0\",\r\n                         '164' =&gt; \"\\xA4\",\r\n                         '167' =&gt; \"\\xA7\",\r\n--- iso_8859_7.php      2010-01-05 16:59:48.000000000 +0100\r\n+++ iso_8859_7.php      2010-05-13 14:18:39.000000000 +0200\r\n@@ -19,10 +19,10 @@\r\n  * @return string iso-8859-7 encoded text\r\n  *\/\r\n function charset_encode_iso_8859_7 ($string) {\r\n-   \/\/ don't run encoding function, if there is no encoded characters\r\n-   if (! preg_match(\"'&#[0-9]+;'\",$string) ) return $string;\r\n+    \/\/ don't run encoding function, if there is no encoded characters\r\n+    if (! preg_match(\"'&#[0-9]+;'\",$string) ) return $string;\r\n\r\n-    $string=preg_replace(\"\/&#([0-9]+);\/e\",\"unicodetoiso88597('\\\\1')\",$string);\r\n+    $string=preg_replace_callback(\"\/&#([0-9]+);\/\",\"unicodetoiso88597\",$string);\r\n     \/\/ $string=preg_replace(\"\/&#[xX]([0-9A-F]+);\/e\",\"unicodetoiso88597(hexdec('\\\\1'))\",$string);\r\n\r\n     return $string;\r\n@@ -41,6 +41,10 @@\r\n  *\/\r\n function unicodetoiso88597($var) {\r\n\r\n+    if(is_array($var)) {\r\n+        $var=$var[1];\r\n+    }\r\n+\r\n     $iso88597chars=array('160' =&gt; \"\\xA0\",\r\n                          '163' =&gt; \"\\xA3\",\r\n                          '166' =&gt; \"\\xA6\",\r\n--- iso_8859_9.php      2010-01-05 16:59:48.000000000 +0100\r\n+++ iso_8859_9.php      2010-05-13 14:19:15.000000000 +0200\r\n@@ -19,10 +19,10 @@\r\n  * @return string iso-8859-9 encoded text\r\n  *\/\r\n function charset_encode_iso_8859_9 ($string) {\r\n-   \/\/ don't run encoding function, if there is no encoded characters\r\n-   if (! preg_match(\"'&#[0-9]+;'\",$string) ) return $string;\r\n+    \/\/ don't run encoding function, if there is no encoded characters\r\n+    if (! preg_match(\"'&#[0-9]+;'\",$string) ) return $string;\r\n\r\n-    $string=preg_replace(\"\/&#([0-9]+);\/e\",\"unicodetoiso88599('\\\\1')\",$string);\r\n+    $string=preg_replace_callback(\"\/&#([0-9]+);\/\",\"unicodetoiso88599\",$string);\r\n     \/\/ $string=preg_replace(\"\/&#[xX]([0-9A-F]+);\/e\",\"unicodetoiso88599(hexdec('\\\\1'))\",$string);\r\n\r\n     return $string;\r\n@@ -41,6 +41,10 @@\r\n  *\/\r\n function unicodetoiso88599($var) {\r\n\r\n+    if(is_array($var)) {\r\n+        $var=$var[1];\r\n+    }\r\n+\r\n     $iso88599chars=array('160' =&gt; \"\\xA0\",\r\n                          '161' =&gt; \"\\xA1\",\r\n                          '162' =&gt; \"\\xA2\",\r\n--- koi8_r.php  2010-01-05 16:59:48.000000000 +0100\r\n+++ koi8_r.php  2010-05-13 14:20:19.000000000 +0200\r\n@@ -19,10 +19,10 @@\r\n  * @return string koi8-r encoded text\r\n  *\/\r\n function charset_encode_koi8_r ($string) {\r\n-   \/\/ don't run encoding function, if there is no encoded characters\r\n-   if (! preg_match(\"'&#[0-9]+;'\",$string) ) return $string;\r\n+    \/\/ don't run encoding function, if there is no encoded characters\r\n+    if (! preg_match(\"'&#[0-9]+;'\",$string) ) return $string;\r\n\r\n-    $string=preg_replace(\"\/&#([0-9]+);\/e\",\"unicodetokoi8r('\\\\1')\",$string);\r\n+    $string=preg_replace_callback(\"\/&#([0-9]+);\/\",\"unicodetokoi8r\",$string);\r\n     \/\/ $string=preg_replace(\"\/&#[xX]([0-9A-F]+);\/e\",\"unicodetokoi8r(hexdec('\\\\1'))\",$string);\r\n\r\n     return $string;\r\n@@ -41,6 +41,10 @@\r\n  *\/\r\n function unicodetokoi8r($var) {\r\n\r\n+    if(is_array($var)) {\r\n+        $var=$var[1];\r\n+    }\r\n+\r\n     $koi8rchars=array('160' =&gt; \"\\x9A\",\r\n                       '169' =&gt; \"\\xBF\",\r\n                       '176' =&gt; \"\\x9C\",\r\n--- koi8_u.php  2010-01-05 16:59:48.000000000 +0100\r\n+++ koi8_u.php  2010-05-13 14:20:59.000000000 +0200\r\n@@ -19,10 +19,10 @@\r\n  * @return string koi8-u encoded text\r\n  *\/\r\n function charset_encode_koi8_u ($string) {\r\n-   \/\/ don't run encoding function, if there is no encoded characters\r\n-   if (! preg_match(\"'&#[0-9]+;'\",$string) ) return $string;\r\n+    \/\/ don't run encoding function, if there is no encoded characters\r\n+    if (! preg_match(\"'&#[0-9]+;'\",$string) ) return $string;\r\n\r\n-    $string=preg_replace(\"\/&#([0-9]+);\/e\",\"unicodetokoi8u('\\\\1')\",$string);\r\n+    $string=preg_replace_callback(\"\/&#([0-9]+);\/\",\"unicodetokoi8u\",$string);\r\n     \/\/ $string=preg_replace(\"\/&#[xX]([0-9A-F]+);\/e\",\"unicodetokoi8u(hexdec('\\\\1'))\",$string);\r\n\r\n     return $string;\r\n@@ -41,6 +41,10 @@\r\n  *\/\r\n function unicodetokoi8u($var) {\r\n\r\n+    if(is_array($var)) {\r\n+        $var=$var[1];\r\n+    }\r\n+\r\n     $koi8uchars=array('160' =&gt; \"\\x9A\",\r\n                       '169' =&gt; \"\\xBF\",\r\n                       '176' =&gt; \"\\x9C\",\r\n--- tis_620.php 2010-01-05 16:59:48.000000000 +0100\r\n+++ tis_620.php 2010-05-13 14:21:33.000000000 +0200\r\n@@ -19,10 +19,10 @@\r\n  * @return string tis-620 encoded text\r\n  *\/\r\n function charset_encode_tis_620 ($string) {\r\n-   \/\/ don't run encoding function, if there is no encoded characters\r\n-   if (! preg_match(\"'&#[0-9]+;'\",$string) ) return $string;\r\n+    \/\/ don't run encoding function, if there is no encoded characters\r\n+    if (! preg_match(\"'&#[0-9]+;'\",$string) ) return $string;\r\n\r\n-    $string=preg_replace(\"\/&#([0-9]+);\/e\",\"unicodetotis620('\\\\1')\",$string);\r\n+    $string=preg_replace_callback(\"\/&#([0-9]+);\/\",\"unicodetotis620\",$string);\r\n     \/\/ $string=preg_replace(\"\/&#[xX]([0-9A-F]+);\/e\",\"unicodetotis620(hexdec('\\\\1'))\",$string);\r\n\r\n     return $string;\r\n@@ -41,6 +41,10 @@\r\n  *\/\r\n function unicodetotis620($var) {\r\n\r\n+    if(is_array($var)) {\r\n+        $var=$var[1];\r\n+    }\r\n+\r\n     $tis620chars=array('3585' =&gt; \"\\xA1\",\r\n                        '3586' =&gt; \"\\xA2\",\r\n                        '3587' =&gt; \"\\xA3\",\r\n--- us_ascii.php        2010-01-05 16:59:48.000000000 +0100\r\n+++ us_ascii.php        2010-05-13 14:22:17.000000000 +0200\r\n@@ -19,10 +19,10 @@\r\n  * @return string us-ascii encoded text\r\n  *\/\r\n function charset_encode_us_ascii ($string) {\r\n-   \/\/ don't run encoding function, if there is no encoded characters\r\n-   if (! preg_match(\"'&#[0-9]+;'\",$string) ) return $string;\r\n+    \/\/ don't run encoding function, if there is no encoded characters\r\n+    if (! preg_match(\"'&#[0-9]+;'\",$string) ) return $string;\r\n\r\n-    $string=preg_replace(\"\/&#([0-9]+);\/e\",\"unicodetousascii('\\\\1')\",$string);\r\n+    $string=preg_replace_callback(\"\/&#([0-9]+);\/\",\"unicodetousascii\",$string);\r\n     \/\/ $string=preg_replace(\"\/&#[xX]([0-9A-F]+);\/e\",\"unicodetousascii(hexdec('\\\\1'))\",$string);\r\n\r\n     return $string;\r\n@@ -41,6 +41,10 @@\r\n  *\/\r\n function unicodetousascii($var) {\r\n\r\n+    if(is_array($var)) {\r\n+        $var=$var[1];\r\n+    }\r\n+\r\n     if ($var &lt; 128) {\r\n         $ret = chr ($var);\r\n     } else {\r\n--- utf_8.php   2010-01-05 16:58:30.000000000 +0100\r\n+++ utf_8.php   2010-05-12 20:20:33.000000000 +0200\r\n@@ -26,7 +26,7 @@\r\n    \/\/ don't run encoding function, if there is no encoded characters\r\n    if (! preg_match(\"'&#[0-9]+;'\",$string) ) return $string;\r\n\r\n-    $string=preg_replace(\"\/&#([0-9]+);\/e\",\"unicodetoutf8('\\\\1')\",$string);\r\n+    $string=preg_replace_callback(\"\/&#([0-9]+);\/\",'unicodetoutf8',$string);\r\n     \/\/ $string=preg_replace(\"\/&#[xX]([0-9A-F]+);\/e\",\"unicodetoutf8(hexdec('\\\\1'))\",$string);\r\n\r\n     return $string;\r\n@@ -44,9 +44,6 @@\r\n  * @return string utf8 character\r\n  *\/\r\n function unicodetoutf8($var) {\r\n\r\n+    if(is_array($var)) {\r\n+        $var = $var[1];\r\n+    }\r\n+\r\n     if ($var &lt; 128) {\r\n         $ret = chr ($var);\r\n<\/pre>\n<p>Bei Fragen, oder falls sich ein Fehler eingeschlichen haben sollte, bitte kurz in den Kommentaren melden, dann korrigier ich die Patches.<\/p>\n<p class=\"wp-flattr-button\"><a href=\"https:\/\/blog.benny-baumann.de\/?flattrss_redirect&amp;id=634&amp;md5=5057ba6104e7ae019d508af2ec36a4e1\" title=\"Flattr\" target=\"_blank\"><img src=\"http:\/\/blog.benny-baumann.de\/wp-content\/plugins\/flattr\/img\/flattr-badge-large.png\" srcset=\"http:\/\/blog.benny-baumann.de\/wp-content\/plugins\/flattr\/img\/flattr-badge-large.png\" alt=\"Flattr this!\"\/><\/a><\/p>","protected":false},"excerpt":{"rendered":"<p>Ich hatte ja bereits vor l\u00e4ngerer Zeit angemerkt, dass SquirrelMail mit konfiguriertem Suhosin-Patch nicht richtig l\u00e4uft. Und da seit einem Jahr, wo der Bugreport nun Upstream bekannt ist, immer noch nichts passiert ist, gibt es hier f\u00fcr alle geplagten nun ein Diff-File zum Ersparen der ganzen Tipparbeit (Ja, der Patch ist grundlegend REINES Copy&#038;Paste). Zumal [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ngg_post_thumbnail":0,"footnotes":""},"categories":[4],"tags":[14,10,98,81,13,21,346,275],"class_list":["post-634","post","type-post","status-publish","format-standard","hentry","category-server","tag-bugs","tag-debian","tag-developement","tag-ispcp","tag-patch","tag-php","tag-server","tag-squirrelmail"],"_links":{"self":[{"href":"https:\/\/blog.benny-baumann.de\/index.php?rest_route=\/wp\/v2\/posts\/634","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.benny-baumann.de\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.benny-baumann.de\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.benny-baumann.de\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.benny-baumann.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=634"}],"version-history":[{"count":3,"href":"https:\/\/blog.benny-baumann.de\/index.php?rest_route=\/wp\/v2\/posts\/634\/revisions"}],"predecessor-version":[{"id":636,"href":"https:\/\/blog.benny-baumann.de\/index.php?rest_route=\/wp\/v2\/posts\/634\/revisions\/636"}],"wp:attachment":[{"href":"https:\/\/blog.benny-baumann.de\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=634"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.benny-baumann.de\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=634"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.benny-baumann.de\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=634"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}