From c26d71326510b17b3da75c733254ec07178da884 Mon Sep 17 00:00:00 2001 From: "mkanat%bugzilla.org" <> Date: Tue, 17 Oct 2006 14:08:06 +0000 Subject: Bug 356924: Remove the old bug_email inbound email interface Patch By Max Kanat-Alexander a=justdave --- contrib/bugzilla_email_append.pl | 197 --------------------------------------- 1 file changed, 197 deletions(-) delete mode 100755 contrib/bugzilla_email_append.pl (limited to 'contrib/bugzilla_email_append.pl') diff --git a/contrib/bugzilla_email_append.pl b/contrib/bugzilla_email_append.pl deleted file mode 100755 index 4b2e53f20..000000000 --- a/contrib/bugzilla_email_append.pl +++ /dev/null @@ -1,197 +0,0 @@ -#!/usr/bin/perl -w -# -*- Mode: perl; indent-tabs-mode: nil -*- - -# The contents of this file are subject to the Mozilla Public -# License Version 1.1 (the "License"); you may not use this file -# except in compliance with the License. You may obtain a copy of -# the License at http://www.mozilla.org/MPL/ -# -# Software distributed under the License is distributed on an "AS -# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or -# implied. See the License for the specific language governing -# rights and limitations under the License. - -# The purpose of this script is to take an email message, which -# specifies a bugid and append it to the bug as part of the longdesc -# table - -# Contributor : Seth M. Landsman - -# 03/15/00 : Initial version by SML -# 03/15/00 : processmail gets called - -# Email subject must be of format : -# .* Bug ### .* -# replying to a typical bugzilla email should be valid - -# TODO : -# 1. better way to get the body text (I don't know what dump_entity() is -# actually doing - -use strict; -use MIME::Parser; - -BEGIN { - chdir ".."; # this script lives in contrib, change to main - push @INC, "contrib"; - push @INC, "."; # this script lives in contrib -} - -use Bugzilla; -use Bugzilla::Constants; -use BugzillaEmail; -use Bugzilla::BugMail; - -my $dbh = Bugzilla->dbh; - -# Create a new MIME parser: -my $parser = new MIME::Parser; - -my $Comment = ""; - -# Create and set the output directory: -# FIXME: There should be a $BUGZILLA_HOME variable (SML) -my $datadir = bz_locations()->{'datadir'}; -(-d "$datadir/mimedump-tmp") or mkdir "$datadir/mimedump-tmp",0755 or die "mkdir: $!"; -(-w "$datadir/mimedump-tmp") or die "can't write to directory"; - -$parser->output_dir("$datadir/mimedump-tmp"); - -# Read the MIME message: -my $entity = $parser->read(\*STDIN) or die "couldn't parse MIME stream"; -$entity->remove_sig(10); # Removes the signature in the last 10 lines - -# Getting values from parsed mail -my $Sender = $entity->get( 'From' ); -$Sender ||= $entity->get( 'Reply-To' ); -my $Message_ID = $entity->get( 'Message-Id' ); - -die (" *** Can't find Sender-address in sent mail ! ***\n" ) unless defined( $Sender ); -chomp( $Sender ); -chomp( $Message_ID ); - -print "Dealing with the sender $Sender\n"; - -my $SenderShort = $Sender; -$SenderShort =~ s/^.*?([a-zA-Z0-9_.-]+?\@[a-zA-Z0-9_.-]+\.[a-zA-Z0-9_.-]+).*$/$1/; - -$SenderShort = findUser($SenderShort); - -print "SenderShort is $SenderShort\n"; -if (!defined($SenderShort)) { - $SenderShort = $Sender; - $SenderShort =~ s/^.*?([a-zA-Z0-9_.-]+?\@[a-zA-Z0-9_.-]+\.[a-zA-Z0-9_.-]+).*$/$1/; -} -print "The sendershort is now $SenderShort\n"; - -if (!defined($SenderShort)) { - DealWithError("No such user $SenderShort exists."); -} - -my $Subject = $entity->get('Subject'); -print "The subject is $Subject\n"; - -my ($bugid) = ($Subject =~ /\[Bug ([\d]+)\]/); -print "The bugid is $bugid\n"; - -# make sure the bug exists -my $found_id = $dbh->selectrow_array(q{SELECT bug_id - FROM bugs - WHERE bug_id = ?}, undef, $bugid); -print "Did we find the bug? $found_id-\n"; -if (!defined($found_id)) { - DealWithError("Bug $bugid does not exist"); -} - -# get the user id -my $userid = $dbh->selectrow_array(q{SELECT userid FROM profiles WHERE } . - $dbh->sql_istrcmp('login_name', '?'), undef, $SenderShort); -if (!defined($userid)) { - DealWithError("Userid not found for $SenderShort"); -} - -# parse out the text of the message -dump_entity($entity); - -# Get rid of the bug id -$Subject =~ s/\[Bug [\d]+\]//; -#my $Comment = "This is only a test ..."; -my $Body = "Subject: " . $Subject . "\n" . $Comment; - -# shove it in the table -$dbh->do(q{INSERT INTO longdescs SET bug_id= ?, who= ?, bug_when= NOW(), thetext= ? }, - undef, $found_id, $userid, $Body); - -Bugzilla::BugMail::Send( $found_id, { changer => $SenderShort } ); - -sub DealWithError { - my ($reason) = @_; - print $reason . "\n"; - exit 100; -} - -# Yanking this wholesale from bug_email, 'cause I know this works. I'll -# figure out what it really does later -#------------------------------ -# -# dump_entity ENTITY, NAME -# -# Recursive routine for parsing a mime coded mail. -# One mail may contain more than one mime blocks, which need to be -# handled. Therefore, this function is called recursively. -# -# It gets the for bugzilla important information from the mailbody and -# stores them into the global attachment-list @attachments. The attachment-list -# is needed in storeAttachments. -# -sub dump_entity { - my ($entity, $name) = @_; - defined($name) or $name = "'anonymous'"; - my $IO; - - - # Output the body: - my @parts = $entity->parts; - if (@parts) { # multipart... - my $i; - foreach $i (0 .. $#parts) { # dump each part... - dump_entity($parts[$i], ("$name, part ".(1+$i))); - } - } else { # single part... - - # Get MIME type, and display accordingly... - my $msg_part = $entity->head->get( 'Content-Disposition' ); - - $msg_part ||= ""; - - my ($type, $subtype) = split('/', $entity->head->mime_type); - my $body = $entity->bodyhandle; - my ($data, $on_disk ); - - if( $msg_part =~ /^attachment/ ) { - # Attached File - my $des = $entity->head->get('Content-Description'); - $des ||= ""; - - if( defined( $body->path )) { # Data is on disk - $on_disk = 1; - $data = $body->path; - - } else { # Data is in core - $on_disk = 0; - $data = $body->as_string; - } -# push ( @attachments, [ $data, $entity->head->mime_type, $on_disk, $des ] ); - } else { - # Real Message - if ($type =~ /^(text|message)$/) { # text: display it... - if ($IO = $body->open("r")) { - $Comment .= $_ while (defined($_ = $IO->getline)); - $IO->close; - } else { # d'oh! - print "$0: couldn't find/open '$name': $!"; - } - } else { print "Oooops - no Body !\n"; } - } - } -} -- cgit v1.2.3-24-g4f1b