Advertisement
dalgeek

Extract VMs from XML dump of COBRAS export

Mar 17th, 2013
624
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Perl 1.52 KB | None | 0 0
  1. #!/usr/bin/perl -w
  2.  
  3. use strict;
  4. use MIME::Base64;
  5. use Archive::Extract;
  6.  
  7. sub writeMessage {
  8.         my $dir = shift;
  9.         my $index = shift;
  10.         my $encoded = shift;
  11.  
  12.         if (! -d "$dir") { mkdir "tmp/$dir" || die $! };
  13.         my $zipfile = "tmp/$dir/$index.zip";
  14.         my $decoded = decode_base64($encoded);
  15.         open OFH, ">$zipfile";
  16.         print OFH $decoded;
  17.         close OFH;
  18.        
  19.         my $ae = Archive::Extract->new( archive => $zipfile );
  20.         my $ok = $ae->extract( to => "tmp/$dir" ) || die $ae->error;
  21.         print "    ".join(" ", @{$ae->files}) . " extracted for $dir\n";
  22.         unlink $zipfile;
  23.  
  24.         return 0;
  25. }
  26.  
  27. my ($index, $fromAlias, $toAlias, $arrivalTime, $subject, $encodedMessage);
  28. my $rf = 0;
  29. open IFH, "<$xmlfile";
  30. while(<IFH>) {
  31.         $_ =~ s/\r\n//;
  32.         if (/<index>(\d+)<\/index>/) { $index = $1 };
  33.         if (/<fromAlias>(.*)<\/fromAlias>/) { $fromAlias = $1 };
  34.         if (/<toAlias>(.*)<\/toAlias>/) { $toAlias = $1 };
  35.         if (/<ArrivalTime>(.*)<\/ArrivalTime>/) { $arrivalTime = $1 };
  36.         if (/(^<MessageAttachment>)/) {
  37.                 $rf = 1;
  38.                 $_ =~ s/$1//;
  39.         }
  40.         elsif (/^<\/MessageAttachment>/) {
  41.                 $rf = 0;
  42.                 print "$index $fromAlias $toAlias $arrivalTime\n";
  43.                 writeMessage($toAlias, $index, $encodedMessage);
  44.                 $encodedMessage = "";
  45.         }
  46.         if ($rf == 1) {
  47.                 $encodedMessage .= $_."\n";
  48.         }
  49. }
  50. close IFH;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement