shell bypass 403
package Razor2::Preproc::Manager;
use Razor2::Preproc::deBase64;
use Razor2::Preproc::deQP;
use Razor2::Preproc::deHTMLxs;
use Razor2::Preproc::deHTML;
use Razor2::Preproc::deNewline;
use Razor2::Preproc::deHTML_comment;
use Data::Dumper;
use strict;
sub new {
my ( $class, %args ) = @_;
my %self = ();
$self{deBase64} = new Razor2::Preproc::deBase64 unless exists $args{no_deBase64};
$self{deQP} = new Razor2::Preproc::deQP unless exists $args{no_deQP};
$self{deHTML} = new Razor2::Preproc::deHTMLxs unless exists $args{no_deHTML};
$self{deNewline} = new Razor2::Preproc::deNewline unless exists $args{no_deNewline};
$self{deHTML_comment} = new Razor2::Preproc::deHTML_comment if exists $args{deHTML_comment};
$self{rm} = $args{RM};
return bless \%self, $class;
}
#
# $bodyref must be Headers\n\r*\nBody
# for this to work. Cleaned ref to Body returned.
#
sub preproc {
my ( $self, $bodyref, $dolength ) = @_;
my $lengths = { '1_orig' => length($$bodyref) } if $dolength;
#-- $self->{rm}->{log}->log(12, "before_deBase64:");
if ( exists $$self{deBase64} && $self->{deBase64}->isit($bodyref) ) {
$self->{deBase64}->doit($bodyref);
}
#-- $self->{rm}->{log}->log(12, "after_deBase64:");
#$self->log2file($bodyref, "preproc.afta.debase64");
$lengths->{'2_after_deBase64'} = length($$bodyref) if $dolength;
#-- $self->{rm}->{log}->log(12, "before_deQP:");
my $isQP;
if ( exists $$self{deQP} && ( $isQP = $self->{deQP}->isit($bodyref) ) ) {
$self->{deQP}->doit($bodyref);
}
#-- $self->{rm}->{log}->log(12, "after_deQP:");
#$self->log2file($bodyref, "preproc.afta.deQP.$isQP");
$lengths->{'3_after_deQP'} = length($$bodyref) if $dolength;
#-- $self->{rm}->{log}->log(12, "before_deHTML:");
if ( exists $$self{deHTML} && $self->{deHTML}->isit($bodyref) ) {
$self->{deHTML}->doit($bodyref);
}
#-- $self->{rm}->{log}->log(12, "after_deHTML:");
if ( exists $$self{deHTML_comment} && $self->{deHTML_comment}->isit($bodyref) ) {
$self->{deHTML_comment}->doit($bodyref);
}
#-- $self->{rm}->{log}->log(12, "before_deNewline:");
if ( exists $$self{deNewline} ) {
$self->{deNewline}->doit($bodyref);
}
#-- $self->{rm}->{log}->log(12, "after_deNewline:");
#$self->log2file($bodyref, "preproc.afta.deHTML");
$lengths->{'4_after_deHTML'} = length($$bodyref) if $dolength;
my ( $hdr, $body ) = split /\n\r*\n/, $$bodyref, 2;
$$bodyref = $body;
$lengths->{'5_after_header_removal'} = length($$bodyref) if $dolength;
return $lengths;
}
sub log2file {
my ( $self, $msgref, $mailid ) = @_;
my $len = length($$msgref);
my $fn = "/tmp/.razor.debug.msg.$$.$mailid";
if ( open OUT, ">$fn" ) {
print OUT $$msgref;
close OUT;
}
else {
}
}
1;