my($host,$port) = ($ENV{"https_proxy"} =~ /^(\S+)\:(\d+)$/);
$host =~ s/^https?\:\/\///;
$function .= "if (shExpMatch(\$url,\"https://*\")) { return \"PROXY $host\:$port\"; } ";
}
if (exists($ENV{ftp_proxy})) {
my($host,$port) = ($ENV{"ftp_proxy"} =~ /^(\S+)\:(\d+)$/);
$host =~ s/^ftp\:\/\///;
$function .= "if (shExpMatch(\$url,\"ftp://*\")) { return \"PROXY $host\:$port\"; } ";
}
if (defined($http_host) && defined($http_port)) {
$function .= " return \"PROXY $http_host\:$http_port\"; }";
} else {
$function .= " return \"DIRECT\"; }";
}
eval($function);
}
}
##############################################################################
#
# JavaScript2Perl - function to convert JavaScript code into Perl code.
#
##############################################################################
sub JavaScript2Perl {
my $self = shift;
my ($function) = @_;
my $quoted = 0;
my $blockComment = 0;
my $lineComment = 0;
my $newFunction = "";
my %vars;
my $variable;
foreach my $piece (split(/(\s)/,$function)) {
foreach my $subpiece (split(/([\"\'\=])/,$piece)) {
next if ($subpiece eq "");
if ($subpiece eq "=") {
$vars{$variable} = 1;
}
$variable = $subpiece unless ($subpiece eq " ");
$subpiece = "." if (($quoted == 0) && ($subpiece eq "+"));
$lineComment = 0 if ($subpiece eq "\n");
$quoted ^= 1 if (($blockComment == 0) &&
($lineComment == 0) &&
($subpiece =~ /(\"|\')/));
if (($quoted == 0) && ($subpiece =~ /\/\*/)) {
$blockComment = 1;
} elsif (($quoted == 0) && ($subpiece =~ /\/\//)) {
$lineComment = 1;
} elsif (($blockComment == 1) && ($subpiece =~ /\*\//)) {
$blockComment = 0;
} else {
$newFunction .= $subpiece
unless (($blockComment == 1) || ($lineComment == 1));
}
}
}
$newFunction =~ s/^\s*function\s*(\S+)\s*\(\s*([^\,]+)\s*\,\s*([^\)]+)\s*\)\s*\{/sub $1 \{\n my \(\$self,$2,$3\) = \@_\;\n my(\$stub);\n/;
$vars{$2} = 2;
$vars{$3} = 2;
$quoted = 0;
my $finalFunction = "";
foreach my $piece (split(/(\s)/,$newFunction)) {
if ($piece eq "my(\$stub);") {
$piece = "my(\$stub";
foreach my $var (keys(%vars)) {
next if ($vars{$var} == 2);
$piece .= ",\$".$var;
}
$piece .= ");";
}
foreach my $subpiece (split(/([\"\'\=\,\+\)\(])/,$piece)) {
next if ($subpiece eq "");
$quoted ^= 1 if (($blockComment == 0) &&
($lineComment == 0) &&
($subpiece =~ /(\"|\')/));
$subpiece = "\$".$subpiece
if (($quoted == 0) && exists($vars{$subpiece}));
$finalFunction .= $subpiece;
}
}
return $finalFunction;
}
##############################################################################
#
# isPlainHostName - PAC command that tells if this is a plain host name
# (no dots)
#
##############################################################################
=3= |