Generate UPI number and copy over files.
This commit is contained in:
		
							parent
							
								
									4627b4e24d
								
							
						
					
					
						commit
						111f569b9c
					
				
					 1 changed files with 13 additions and 6 deletions
				
			
		|  | @ -86,7 +86,7 @@ if ($GROUP_NAMES_BY_DIR{$GROUP} eq 'PRIVILEGE') { | ||||||
| my @CSV_OUTPUT_ROWS; | my @CSV_OUTPUT_ROWS; | ||||||
| 
 | 
 | ||||||
| sub ProcessMailDir($$$) { | sub ProcessMailDir($$$) { | ||||||
|   my($rfp, $inputMailDir, $destOutDir) = @_; |   my($rfp, $inputMailDir, $outputDir) = @_; | ||||||
| 
 | 
 | ||||||
|   my @msgDirs = (catfile($inputMailDir, 'new'), catfile($inputMailDir, 'cur')); |   my @msgDirs = (catfile($inputMailDir, 'new'), catfile($inputMailDir, 'cur')); | ||||||
|   foreach my $dir (@msgDirs) { |   foreach my $dir (@msgDirs) { | ||||||
|  | @ -99,8 +99,7 @@ sub ProcessMailDir($$$) { | ||||||
|       next if -d $file;    # skip directories |       next if -d $file;    # skip directories | ||||||
|       my $msgFile = catfile($dir, $file); |       my $msgFile = catfile($dir, $file); | ||||||
|       open(my $msgFH, "<", $msgFile); |       open(my $msgFH, "<", $msgFile); | ||||||
|       my $upiFull = sprintf("UPI-SFC-%07d", ++$upiCurrentNum); |       my $upiFull = sprintf("UPI-SFC-%07d", $upiCurrentNum++); | ||||||
|       print "       $msgFile\n"; |  | ||||||
|       my $header = new Mail::Header($msgFH); |       my $header = new Mail::Header($msgFH); | ||||||
|       my $fields = $header->header_hashref; |       my $fields = $header->header_hashref; | ||||||
|       my %parsed = (FromName => '', ToName => '', FromAddr => "", ToAddr => "", CcName => '', CcAddr => '', 'Subject' => '', |       my %parsed = (FromName => '', ToName => '', FromAddr => "", ToAddr => "", CcName => '', CcAddr => '', 'Subject' => '', | ||||||
|  | @ -132,7 +131,6 @@ sub ProcessMailDir($$$) { | ||||||
|       $subjectDashes =~ s/[^a-zA-Z0-9]/_/g; $subjectDashes =~ s/_+/_/g; $subjectDashes =~ s/_+$//g; $subjectDashes =~ s/^_+//g; |       $subjectDashes =~ s/[^a-zA-Z0-9]/_/g; $subjectDashes =~ s/_+/_/g; $subjectDashes =~ s/_+$//g; $subjectDashes =~ s/^_+//g; | ||||||
|       my $fileName = $upiFull . '-' . $GROUP_NAMES_BY_DIR{$GROUP} . '-' . |       my $fileName = $upiFull . '-' . $GROUP_NAMES_BY_DIR{$GROUP} . '-' . | ||||||
|                      UnixDate($parsed{Date}, '%Y%m%d-%H%M-') . $subjectDashes . '.eml'; |                      UnixDate($parsed{Date}, '%Y%m%d-%H%M-') . $subjectDashes . '.eml'; | ||||||
|       print "$fileName\n"; |  | ||||||
|       die "$fileName has no subject" if not defined $parsed{Subject}; |       die "$fileName has no subject" if not defined $parsed{Subject}; | ||||||
|       if ($GROUP_NAMES_BY_DIR{$GROUP} eq 'PRIVILEGE') { |       if ($GROUP_NAMES_BY_DIR{$GROUP} eq 'PRIVILEGE') { | ||||||
|         push(@CSV_OUTPUT_ROWS, [ $upiFull, $parsed{FromName}, $parsed{FromAddr}, $parsed{Subject}, |         push(@CSV_OUTPUT_ROWS, [ $upiFull, $parsed{FromName}, $parsed{FromAddr}, $parsed{Subject}, | ||||||
|  | @ -141,6 +139,10 @@ sub ProcessMailDir($$$) { | ||||||
|       } else { |       } else { | ||||||
|         push(@CSV_OUTPUT_ROWS, [ $upiFull, $fileName, uc($rfp) ]); |         push(@CSV_OUTPUT_ROWS, [ $upiFull, $fileName, uc($rfp) ]); | ||||||
|       } |       } | ||||||
|  |       my $copiedFile = catfile($outputDir, $fileName); | ||||||
|  |       copy($msgFile, $copiedFile); | ||||||
|  |       system('/usr/bin/unix2dos', '-q', $copiedFile); | ||||||
|  |       die "unable to copy $msgFile to $copiedFile" unless -f $copiedFile; | ||||||
|     } |     } | ||||||
|     closedir $mailDirFH; |     closedir $mailDirFH; | ||||||
|   } |   } | ||||||
|  | @ -160,9 +162,13 @@ while (my $rfp = readdir $topDH) { | ||||||
|       next if $typeName =~ /^\s*\.\.?\s*$/; |       next if $typeName =~ /^\s*\.\.?\s*$/; | ||||||
|       my $typeDirName = catfile($INPUT_TOPLEVEL_DIR, $rfp, $bucketName, $typeName); |       my $typeDirName = catfile($INPUT_TOPLEVEL_DIR, $rfp, $bucketName, $typeName); | ||||||
|       die "regular file found where we expected a type in $typeName" unless -d $typeDirName; |       die "regular file found where we expected a type in $typeName" unless -d $typeDirName; | ||||||
|       print "      $typeDirName\n"; |       my $nativeOutputDirOneUp = File::Spec->rel2abs(catfile($OUTPUT_TOPLEVEL_DIR, 'native', $rfp, $bucketName)); | ||||||
|  |       my $numberedOutputDir = File::Spec->rel2abs(catfile($OUTPUT_TOPLEVEL_DIR, 'numbered', $rfp, $bucketName, $typeName)); | ||||||
|  |       make_path($nativeOutputDirOneUp, {   verbose => 1,    mode => 0755 }); | ||||||
|  |       make_path($numberedOutputDir, {   verbose => 1,    mode => 0755 }); | ||||||
|       if ($typeName =~ /email/i) { |       if ($typeName =~ /email/i) { | ||||||
|         ProcessMailDir($rfp, $typeDirName, ""); |         ProcessMailDir($rfp, $typeDirName, $numberedOutputDir); | ||||||
|  |         move($typeDirName, $nativeOutputDirOneUp); | ||||||
|       } |       } | ||||||
|     } |     } | ||||||
|     closedir $bucketDH; |     closedir $bucketDH; | ||||||
|  | @ -176,6 +182,7 @@ open my $csvFH, ">:encoding(utf8)", $csvLogFile; | ||||||
| $csvOutFormat->say($csvFH, \@headerFields); | $csvOutFormat->say($csvFH, \@headerFields); | ||||||
| $csvOutFormat->say($csvFH, $_) for @CSV_OUTPUT_ROWS; close $csvFH; | $csvOutFormat->say($csvFH, $_) for @CSV_OUTPUT_ROWS; close $csvFH; | ||||||
| 
 | 
 | ||||||
|  | print STDERR "$GROUP ($GROUP_NAMES_BY_DIR{$GROUP}) starts at $upiStart and ends at $upiCurrentNum\n"; | ||||||
| open($upiFH, ">", $upiNumberFile); | open($upiFH, ">", $upiNumberFile); | ||||||
| print $upiFH ++$upiCurrentNum, "\n"; | print $upiFH ++$upiCurrentNum, "\n"; | ||||||
| close $upiFH; | close $upiFH; | ||||||
|  |  | ||||||
		Loading…
	
	Add table
		
		Reference in a new issue
	
	 Bradley M. Kuhn
						Bradley M. Kuhn