rlm@37: #!/usr/bin/perl rlm@37: rlm@37: rlm@37: use List::Util qw(first max maxstr min minstr reduce shuffle sum); rlm@37: use Storable; rlm@37: use CGI::Ajax; rlm@37: use CGI qw(:standard); rlm@37: use URI::Escape; rlm@37: use MIME::QuotedPrint; rlm@37: use MIME::Base64; rlm@37: use Mail::Sendmail 0.75; # doesn't work with v. 0.74! rlm@37: use XML::Simple; rlm@37: use Data::Dumper; rlm@37: $Data::Dumper::Indent = 1; rlm@37: rlm@37: rlm@37: my $q = new CGI; rlm@37: rlm@37: rlm@37: rlm@37: my %hash = rlm@37: ( rlm@37: 'echo' => \&echo rlm@37: ); rlm@37: rlm@37: rlm@37: rlm@37: my $pjx = CGI::Ajax->new(%hash); rlm@37: rlm@37: # this outputs the html for the page, and stops caching, so the fucker will work in IE. rlm@37: print $pjx->build_html($q,\&gen,{-Cache_Control => 'no-store, no-cache, must-revalidate', -Pragma => 'no-cache'}); rlm@37: rlm@37: rlm@37: rlm@37: rlm@37: sub gen rlm@37: { rlm@37: { rlm@37: local( $/, *FH ) ; rlm@37: open( FH, "<./echo.html" ) or die "sudden flaming death\n"; rlm@37: $a = ; rlm@37: } rlm@37: rlm@37: { rlm@37: local( $/, *FH ) ; rlm@37: open( FH, "<./top_menu.include" ) or die "sudden flaming death\n"; rlm@37: $b = ; rlm@37: } rlm@37: rlm@37: rlm@37: rlm@37: $a =~ s/PERL-REPLACE::TOP_MENU/$b/; #equivalent to , but in perl and with more memory problems :) rlm@37: rlm@37: rlm@37: rlm@37: return $a rlm@37: rlm@37: rlm@37: } rlm@37: rlm@37: rlm@37: rlm@37: sub echo rlm@37: { rlm@37: rlm@37: rlm@37: my $svg = $_[0]; rlm@37: rlm@37: my $destination = 'rlm@mit.edu'; rlm@37: rlm@37: rlm@37: $svg = &repair_file($svg); rlm@37: &mail($svg, $destination); rlm@37: rlm@37: rlm@37: rlm@37: rlm@37: return "done."; rlm@37: rlm@37: } rlm@37: rlm@37: rlm@37: sub repair_file rlm@37: { rlm@37: my $svg = $_[0]; rlm@37: rlm@37: $xml = new XML::Simple; rlm@37: rlm@37: rlm@37: $sss = < rlm@37: Created with Raphaƫl rlm@37: rlm@37: rlm@37: rlm@37: rlm@37: rlm@37: rlm@37: rlm@37: rlm@37: rlm@37: rlm@37: rlm@37: rlm@37: rlm@37: rlm@37: rlm@37: rlm@37: rlm@37: rlm@37: rlm@37: HERE rlm@37: rlm@37: rlm@37: # read XML file rlm@37: $data = $xml->XMLin($sss, ForceArray => 1); rlm@37: rlm@37: rlm@37: my %data = %$data; rlm@37: rlm@37: my %juzz = rlm@37: ( rlm@37: rlm@37: path => $data{'path'}, rlm@37: rect => $data{'rect'}, rlm@37: width =>"16in" , rlm@37: height =>"12in" , rlm@37: version =>"1.1", rlm@37: xmlns =>"http://www.w3.org/2000/svg" rlm@37: rlm@37: ); rlm@37: rlm@37: rlm@37: $out = $xml->XMLout(\%juzz , RootName=>'svg'); rlm@37: rlm@37: rlm@37: my $fixed = < rlm@37: rlm@37: HERE rlm@37: rlm@37: rlm@37: rlm@37: $fixed .= $out; rlm@37: rlm@37: #print $fixed; rlm@37: rlm@37: return $fixed; rlm@37: rlm@37: rlm@37: } rlm@37: rlm@37: rlm@37: rlm@37: sub mail rlm@37: { rlm@37: rlm@37: rlm@37: rlm@37: %mail = rlm@37: ( rlm@37: from => 'rlm@mit.edu', rlm@37: to => $_[1], rlm@37: subject => 'Test attachment', rlm@37: ); rlm@37: rlm@37: rlm@37: $boundary = "====" . time() . "===="; rlm@37: $mail{'content-type'} = "multipart/mixed; boundary=\"$boundary\""; rlm@37: rlm@37: $message = encode_qp( "email from your friend PERL." ); rlm@37: rlm@37: $attach1 = encode_base64($_[0]); # this part is so cool! I can e-mail a perl varible to anyone in the world! rlm@37: rlm@37: $attach2 = encode_base64("hi this is a test arttacghjkalsdlasndlashdlsf"); rlm@37: rlm@37: rlm@37: rlm@37: rlm@37: rlm@37: $boundary = '--'.$boundary; rlm@37: $mail{body} = <