#!/usr/bin/perl use Jcode; &getformdata ; #$form{'text'} =~ s/\</g; #$form{'text'} =~ s/>/\>/g; #$form{'text'} =~ s/\'/\\\'/g ; #$form{'text'} =~ s/\"/\\\"/g ; # XSS(゚听)イラネ $flag = 0 ; if( $form{'text'} ne ''){ @line = split( /(\r\n|\n|\r)/, $form{'text'}) ; $num = @line ; for( $i=0; $i<$num; $i++){ #BEGIN:VBODYからEND:VBODYまでがデコード対象 if( index( $line[$i], 'BEGIN:VBODY')>=0){ $tmp = '' ; # \n だけの行の次からが本文。 # 出力はShift_JISにするので、ISO-2022-JPを変更しとく while( $line[$i]ne""&&$i<$num){ if( $line[$i] eq 'CHARSET=ISO-2022-JP'){ $line[$i] = 'CHARSET=Shift_JIS' ; } $i++ ; } $i++ ; $j = $i ; # "="で行が終わる場合は次の行へ本文が続くことを表す # ・・・けど、END:VBODYが現れるまでは本文であると見なしてしまおう while( $line[$i]ne"END:VBODY"&&$i<$num){ $tmp .= $line[$i] ; $tmp =~ s/=$// ; $line[$i] = '' ; $i++ ; } $tmp =~ s/\n|\r//g; $tmp =~ s/=([a-fA-F0-9][a-fA-F0-9])/pack("C", hex($1))/eg; Jcode::convert(\$tmp, "sjis"); $line[$j] = "\n\n" . $tmp ; $line[$i-1]="\n" ; } } # print "Content-type: text/x-vmessage\n\n" ; # x-vmessageだとIEはダウソダイアログになってくれないな # print "Content-type: text/plain\n\n" ; print "Content-type: application/octet-stream\n\n" ; # 保存のダイアログをようやって出せるんだよヽ(`Д´)ノウワァン foreach (@line){ print "$_" ; } } else { print "Content-type: text/html\n\n\n" ; print "
\n" ; print "$form{'text'} |