Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/perl -w
- use strict;
- use MIME::Base64;
- use Archive::Extract;
- sub writeMessage {
- my $dir = shift;
- my $index = shift;
- my $encoded = shift;
- if (! -d "$dir") { mkdir "tmp/$dir" || die $! };
- my $zipfile = "tmp/$dir/$index.zip";
- my $decoded = decode_base64($encoded);
- open OFH, ">$zipfile";
- print OFH $decoded;
- close OFH;
- my $ae = Archive::Extract->new( archive => $zipfile );
- my $ok = $ae->extract( to => "tmp/$dir" ) || die $ae->error;
- print " ".join(" ", @{$ae->files}) . " extracted for $dir\n";
- unlink $zipfile;
- return 0;
- }
- my ($index, $fromAlias, $toAlias, $arrivalTime, $subject, $encodedMessage);
- my $rf = 0;
- open IFH, "<$xmlfile";
- while(<IFH>) {
- $_ =~ s/\r\n//;
- if (/<index>(\d+)<\/index>/) { $index = $1 };
- if (/<fromAlias>(.*)<\/fromAlias>/) { $fromAlias = $1 };
- if (/<toAlias>(.*)<\/toAlias>/) { $toAlias = $1 };
- if (/<ArrivalTime>(.*)<\/ArrivalTime>/) { $arrivalTime = $1 };
- if (/(^<MessageAttachment>)/) {
- $rf = 1;
- $_ =~ s/$1//;
- }
- elsif (/^<\/MessageAttachment>/) {
- $rf = 0;
- print "$index $fromAlias $toAlias $arrivalTime\n";
- writeMessage($toAlias, $index, $encodedMessage);
- $encodedMessage = "";
- }
- if ($rf == 1) {
- $encodedMessage .= $_."\n";
- }
- }
- close IFH;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement