From: graf25 Date: Thu, 8 Feb 2001 17:18:45 +0000 (+0000) Subject: Workarounds for Russian Apache and charsets/attachments problem. X-Git-Url: https://vcs.fsf.org/?p=squirrelmail.git;a=commitdiff_plain;h=068acdf9452f8f2acd7165ac26fc25d260b0ac80 Workarounds for Russian Apache and charsets/attachments problem. git-svn-id: https://svn.code.sf.net/p/squirrelmail/code/trunk/squirrelmail@1077 7612ce4b-ef26-0410-bec9-ea0150e637f0 --- diff --git a/doc/README.russian_apache b/doc/README.russian_apache index 89a2b515..b0342e7c 100644 --- a/doc/README.russian_apache +++ b/doc/README.russian_apache @@ -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 diff --git a/src/compose.php b/src/compose.php index 8b0c5f07..133ac3ac 100644 --- a/src/compose.php +++ b/src/compose.php @@ -385,7 +385,35 @@ $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";