X-Git-Url: https://vcs.fsf.org/?p=squirrelmail.git;a=blobdiff_plain;f=plugins%2Fspamcop%2Fspamcop.php;h=2cf67cdee115d559df55d2cee119ed8054ca81aa;hp=b60fb33695dce9f0b992ea9a0b02e18a4e388407;hb=a9e1e670fab4399260e0790e018393c7dcefcecc;hpb=4dda31ad3806f1ceb46c956ab533e51ace4f5dfe diff --git a/plugins/spamcop/spamcop.php b/plugins/spamcop/spamcop.php index b60fb336..2cf67cde 100644 --- a/plugins/spamcop/spamcop.php +++ b/plugins/spamcop/spamcop.php @@ -1,134 +1,211 @@ parent; + } + if ($response == 'OK') { + $subject = encodeHeader($message->rfc822_header->subject); + array_shift($body_a); + $body = implode('', $body_a) . "\r\n"; + + $localfilename = GenerateRandomString(32, 'FILE', 7); + $full_localfilename = "$hashed_attachment_dir/$localfilename"; + $fp = fopen( $full_localfilename, 'w'); + fwrite ($fp, $body); + fclose($fp); + + /* dirty relative dir fix */ + if (substr($attachment_dir,0,3) == '../') { + $attachment_dir = substr($attachment_dir,3); + $hashed_attachment_dir = getHashedDir($username, $attachment_dir); + } + $full_localfilename = "$hashed_attachment_dir/$localfilename"; + + $composeMessage->initAttachment('message/rfc822','email.txt', + $full_localfilename); + } + return $composeMessage; +} + + +/* GLOBALS */ + +sqgetGlobalVar('username', $username, SQ_SESSION); +sqgetGlobalVar('key', $key, SQ_COOKIE); +sqgetGlobalVar('onetimepad', $onetimepad, SQ_SESSION); + +sqgetGlobalVar('mailbox', $mailbox, SQ_GET); +sqgetGlobalVar('passed_id', $passed_id, SQ_GET); +sqgetGlobalVar('js_web', $js_web, SQ_GET); + +if (! sqgetGlobalVar('startMessage', $startMessage, SQ_GET) ) { + $startMessage = 1; +} +if (! sqgetGlobalVar('passed_ent_id', $passed_ent_id, SQ_GET) ) { + $passed_ent_id = 0; +} +if (! sqgetGlobalVar('js_web', $js_web, SQ_GET) ) { + $js_web = 0; +} + +sqgetGlobalVar('compose_messages', $compose_messages, SQ_SESSION); + +if(! sqgetGlobalVar('composesession', $composesession, SQ_SESSION) ) { + $composesession = 0; + sqsession_register($composesession, 'composesession'); +} +/* END GLOBALS */ + +// js_web variable is 1 only when link opens web based report page in new window +// and in new window menu line or extra javascript code is not needed. +if ($js_web) { + displayHTMLHeader(_("SpamCop reporting")); + echo "\n"; +} else { + displayPageHeader($color,$mailbox); +} $imap_stream = sqimap_login($username, $key, $imapServerAddress, $imapPort, 0); sqimap_mailbox_select($imap_stream, $mailbox); - fputs($imap_stream, 'a010 FETCH ' . $passed_id . ' RFC822' . "\r\n"); - $sid = 'a010'; - if ($uid_support) $sid .= ' UID'; - - $read = sqimap_read_data($imap_stream, $sid, true, $response, $message); - array_shift($read); if ($spamcop_method == 'quick_email' || $spamcop_method == 'thorough_email') { // Use email-based reporting -- save as an attachment - if(!isset($composesession)) { - $composesession = 0; - session_register('composesession'); + $session = "$composesession"+1; + $composesession = $session; + sqsession_register($composesession,'composesession'); + if (!isset($compose_messages)) { + $compose_messages = array(); } - if (!isset($session)) { - $session = "$composesession" +1; - $composesession = $session; + if (!isset($compose_messages[$session]) || ($compose_messages[$session] == NULL)) { + $composeMessage = new Message(); + $rfc822_header = new Rfc822Header(); + $composeMessage->rfc822_header = $rfc822_header; + $composeMessage->reply_rfc822_header = ''; + $compose_messages[$session] = $composeMessage; + sqsession_register($compose_messages,'compose_messages'); + } else { + $composeMessage=$compose_messages[$session]; } - if (!isset($attachments)) { - $attachments = array(); - session_register('attachments'); - } - - foreach ($attachments as $info) { - if (file_exists($attachment_dir . $info['localfilename'])) - unlink($attachment_dir . $info['localfilename']); - } - $attachments = array(); - - $file = GenerateRandomString(32, '', 7); - while (file_exists($attachment_dir . $file)) - $file = GenerateRandomString(32, '', 7); - $newAttachment['localfilename'] = $file; - $newAttachment['remotefilename'] = 'email.txt'; - $newAttachment['type'] = 'message/rfc822'; - $newAttachment['session'] = $session; - $fp = fopen($attachment_dir . $file, 'w'); - foreach ($read as $line) { - fputs($fp, $line); - } - $attachments[] = $newAttachment; - - $fn = getPref($data_dir, $username, 'full_name'); - $em = getPref($data_dir, $username, 'email_address'); - - $HowItLooks = $fn . ' '; - if ($em != '') + + $message = sqimap_get_message($imap_stream, $passed_id, $mailbox); + $composeMessage = getMessage_RFC822_Attachment($message, $composeMessage, $passed_id, + $passed_ent_id, $imap_stream); + + $compose_messages[$session] = $composeMessage; + sqsession_register($compose_messages, 'compose_messages'); + + $fn = getPref($data_dir, $username, 'full_name'); + $em = getPref($data_dir, $username, 'email_address'); + + $HowItLooks = $fn . ' '; + if ($em != '') $HowItLooks .= '<' . $em . '>'; - } + } -?> -

Sending this spam report will give you back a reply with URLs that you -can click on to properly report this spam message to the proper authorities. -This is a free service. By pressing the "Send Spam Report" button, you -agree to follow SpamCop's rules/terms of service/etc.

+echo "

"; +echo _("Sending this spam report will give you back a reply with URLs that you can click on to properly report this spam message to the proper authorities. This is a free service. By pressing the \"Send Spam Report\" button, you agree to follow SpamCop's rules/terms of service/etc."); +echo "

"; + +?> - +
- -
+
- - '; + echo '\n"; } else { - ?> - - - - + + +"; } ?>
+
- - - - - - - - - - 50000) { + $form_action = SM_PATH . 'src/compose.php'; +?> + + + + + + +\n"; +} else { + $spam_message = mime_fetch_body ($imap_stream, $passed_id, $passed_ent_id, 50000); + + if (strlen($spam_message) == 50000) { $Warning = "\n[truncated by SpamCop]\n"; - $Message = substr($Message, 0, 50000 - strlen($Warning)) . $Warning; + $spam_message = substr($spam_message, 0, 50000 - strlen($Warning)) . $Warning; + } + if ($spamcop_type=='member') { + $action_url="http://members.spamcop.net/sc"; + } else { + $action_url="http://www.spamcop.net/sc"; } if (isset($js_web) && $js_web) { -?> \n"; } else { -?> \n"; } ?> - - - - - - + + + + \n"; + } ?>
- +