Workarounds for Russian Apache and charsets/attachments problem.
authorgraf25 <graf25@7612ce4b-ef26-0410-bec9-ea0150e637f0>
Thu, 8 Feb 2001 17:18:45 +0000 (17:18 +0000)
committergraf25 <graf25@7612ce4b-ef26-0410-bec9-ea0150e637f0>
Thu, 8 Feb 2001 17:18:45 +0000 (17:18 +0000)
git-svn-id: https://svn.code.sf.net/p/squirrelmail/code/trunk/squirrelmail@1077 7612ce4b-ef26-0410-bec9-ea0150e637f0

doc/README.russian_apache
src/compose.php

index 89a2b51..b0342e7 100644 (file)
@@ -1,4 +1,4 @@
-HOW TO CONFIGURE SQUIRREL-MAIL WITH RUSSIAN APACHE
+HOW TO CONFIGURE SQUIRRELMAIL WITH RUSSIAN APACHE
 --------------------------------------------------
 
 This text is available in Russian at 
@@ -8,6 +8,8 @@ http://www.mricon.com/SM/russian_apache.html
 NOTE: Russian Apache will recode all attachments, even if they
 are binary, thus corrupting them. To fix this problem, refer to
 Russian Apache FAQ: http://apache.lexa.ru/faq.html#5
+Turn multipart form recoding off in your apache config. If you
+don't, you're in for mucho trouble.
 *****
  
 This howto is for people who are using Russian Apache and
index 8b0c5f0..133ac3a 100644 (file)
          $attachments[$localfilename] = $HTTP_POST_FILES['attachfile']['name'];
       }
     }
-
+  
+   function SqConvertRussianCharsets(){
+    //
+    // This function is here because Russian Apache is a bastard when it comes to
+    // attachments. The solution is to turn off attachment recoding for multipart
+    // forms and do it manually.
+    // See graf@relhum.org for support.
+    //
+    global $CHARSET, $SOURCE_CHARSET, $send_to, $send_to_cc, $send_to_bcc, $subject, $body;
+    $charset_ary = array("koi8-r" => "k",
+                        "windows-1251" => "w",
+                        "ibm866" => "a",
+                        "ISO-8859-5" => "i");
+    $body = convert_cyr_string($body, $charset_ary[$CHARSET], $charset_ary[$SOURCE_CHARSET]);
+    $send_to = convert_cyr_string($send_to, $charset_ary[$CHARSET], $charset_ary[$SOURCE_CHARSET]);
+    $send_to_cc = convert_cyr_string($send_to_cc, $charset_ary[$CHARSET], $charset_ary[$SOURCE_CHARSET]);
+    $send_to_bcc = convert_cyr_string($send_to_bcc, $charset_ary[$CHARSET], $charset_ary[$SOURCE_CHARSET]);
+    $subject = convert_cyr_string($subject, $charset_ary[$CHARSET], $charset_ary[$SOURCE_CHARSET]);
+   } // end SqConvertRussianCharsets()
+   
+   // Russian Apache sets $CHARSET. See if this is Russian Apache.
+   // If so, check if the source charset (koi8-r) is different from the 
+   // one submitted by the browser. If so, recode the parts of the form
+   // to the needed format so SM can proceed and not mangle the cyrillic
+   // input.
+   // See graf@relhum.org for support.
+   //
+   if ($CHARSET && $CHARSET != $SOURCE_CHARSET) SqConvertRussianCharsets();
+   
    if (!isset($mailbox) || $mailbox == "" || ($mailbox == "None"))
       $mailbox = "INBOX";