ShellBanner
System:Linux MiraNet 3.0.0-14-generic-pae #23-Ubuntu SMP Mon Nov 21 22:07:10 UTC 2011 i686
Software:Apache. PHP/5.3.6-13ubuntu3.10
ID:uid=65534(nobody) gid=65534(nogroup) groups=65534(nogroup)
Safe Mode:OFF
Open_Basedir:OFF
Freespace:20.76 GB of 70.42 GB (29.49%)
MySQL: ON MSSQL: OFF Oracle: OFF PostgreSQL: OFF Curl: OFF Sockets: ON Fetch: OFF Wget: ON Perl: ON
Disabled Functions: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,

/ usr/ src/ courier-0.66.1/ courier/ webadmin/ - drwxrwxrwx

Directory:
Viewing file:     admin-30esmtp.pl (12.3 KB)      -rw-rw-rw-
Select action/file-type:
(+) | (+) | (+) | Code (+) | Session (+) | (+) | SDB (+) | (+) | (+) | (+) | (+) | (+) |
#! perl
#
# TITLE: Inbound ESMTP
#
#
# Copyright 2001-2004 Double Precision, Inc.  See COPYING for
# distribution information.

use webadmin;

eval 'use Net::CIDR';

# Parse the BLACKLISTS string

sub parsebl {
    my $str=shift;

    my @bl;

    while ($str)
    {
    if ($str =~ /^\s+(.*)/)
    {
        $str=$1;
        next;
    }

    my $i=0;
    my $inq=0;

    for ($i=0; $i < length($str); $i++)
    {
        $inq ^= 1 if substr($str, $i, 1) eq "\"";
        last if substr($str, $i, 1) =~ /\s/ && !$inq;
        $i++ if substr($str, $i, 1) eq "\\";
    }

    my $s=substr($str, 0, $i);
    $str=substr($str, $i);

    my $hash={ "STR" => $s };

    next unless $s =~ /^-block=(.*)/;

    $s=$1;

    my $zone;
    my $var="BLOCK";
    my $ip;
    my $msg;

    $zone=$s;

    if ($s =~ /^([^,]*),(.*)/)
    {
        $zone=$1;
        $var=$2;

        if ($var =~ /^([^,]*),(.*)/)
        {
        $var=$1;
        $msg=$2;
        }

        if ($var =~ /(.*)\/(.*)/)
        {
        $var=$1;
        $ip=$2;
        }
    }

    $$hash{'ZONE'}=$zone;
    $$hash{'VAR'}=$var;
    $$hash{'IP'}=$ip;
    $$hash{'MSG'}=$msg;

    push @bl, $hash;
    }
    return @bl;
}

my $errstr="";
my $changed=0;
my $changedsmtp=0;

if ($cgi->param("Save"))
{
    ReplaceEnvVarConfigFile("esmtpd", "ESMTPDSTART",
                $cgi->param("ENABLED") ? "YES":"NO");
    ReplaceEnvVarConfigFile("esmtpd-ssl", "ESMTPDSSLSTART",
                $cgi->param("ENABLED_SSL") ? "YES":"NO");
    ReplaceEnvVarConfigFile("esmtpd-msa", "ESMTPDSTART",
                $cgi->param("ENABLED_MSA") ? "YES":"NO");

    ReplaceEnvVarConfigFile("esmtpd", "NOADDMSGID",
                $cgi->param("MSGID") ? "0":"1");
    ReplaceEnvVarConfigFile("esmtpd-ssl", "NOADDMSGID",
                $cgi->param("MSGID_SSL") ? "0":"1");
    ReplaceEnvVarConfigFile("esmtpd-msa", "NOADDMSGID",
                $cgi->param("MSGID_MSA") ? "0":"1");

    ReplaceEnvVarConfigFile("esmtpd", "NOADDDATE",
                $cgi->param("DATE") ? "0":"1");
    ReplaceEnvVarConfigFile("esmtpd-ssl", "NOADDDATE",
                $cgi->param("DATE_SSL") ? "0":"1");
    ReplaceEnvVarConfigFile("esmtpd-msa", "NOADDDATE",
                $cgi->param("DATE_MSA") ? "0":"1");

    ReplaceEnvVarConfigFile("esmtpd", "AUTH_REQUIRED",
                $cgi->param("AUTH") ? "1":"0");
    ReplaceEnvVarConfigFile("esmtpd-ssl", "AUTH_REQUIRED",
                $cgi->param("AUTH_SSL") ? "1":"0");
    ReplaceEnvVarConfigFile("esmtpd-msa", "AUTH_REQUIRED",
                $cgi->param("AUTH_MSA") ? "1":"0");

    ReplaceEnvVarConfigFile("esmtpd", "BOFHCHECKDNS",
                $cgi->param("CHECKDNS") ? "1":"0");
    ReplaceEnvVarConfigFile("esmtpd-ssl", "BOFHCHECKDNS",
                $cgi->param("CHECKDNS_SSL") ? "1":"0");
    ReplaceEnvVarConfigFile("esmtpd-msa", "BOFHCHECKDNS",
                $cgi->param("CHECKDNS_MSA") ? "1":"0");

    ReplaceEnvVarConfigFile("esmtpd", "MAXDAEMONS", $cgi->param("MAXDAEMONS"));
    ReplaceEnvVarConfigFile("esmtpd-ssl", "MAXDAEMONS",
                $cgi->param("MAXDAEMONS_SSL"));
    ReplaceEnvVarConfigFile("esmtpd-msa", "MAXDAEMONS",
                $cgi->param("MAXDAEMONS_MSA"));
    ReplaceEnvVarConfigFile("esmtpd", "MAXPERIP", $cgi->param("MAXPERIP"));
    ReplaceEnvVarConfigFile("esmtpd-ssl", "MAXPERIP",
                $cgi->param("MAXPERIP_SSL"));
    ReplaceEnvVarConfigFile("esmtpd-msa", "MAXPERIP",
                $cgi->param("MAXPERIP_MSA"));
    ReplaceEnvVarConfigFile("esmtpd", "MAXPERC", $cgi->param("MAXPERC"));
    ReplaceEnvVarConfigFile("esmtpd-ssl", "MAXPERC",
                $cgi->param("MAXPERC_SSL"));
    ReplaceEnvVarConfigFile("esmtpd-msa", "MAXPERC",
                $cgi->param("MAXPERC_MSA"));

    $dodrop=$cgi->param("DROP") || "";

    ReplaceEnvVarConfigFile("esmtpd", "DROP", $dodrop ? "-drop":"");

    my $esmtp=ReadEnvVarConfigFile("esmtpd");


    my @a;

    foreach (grep (/./,split(/\s+/, $$esmtp{'ESMTPAUTH_WEBADMIN'})))
    {
    push @a, $_ if $cgi->param("SASL_$_");
    }

    my $esmtpauth=join(" ", @a);

    ReplaceEnvVarConfigFile("esmtpd", "ESMTPAUTH", $esmtpauth);

    @a=();

    foreach (grep (/./,split(/\s+/, $$esmtp{'ESMTPAUTH_TLS_WEBADMIN'})))
    {
    push @a, $_ if $cgi->param("SASL_TLS_$_");
    }

    $esmtpauth=join(" ", @a);

    ReplaceEnvVarConfigFile("esmtpd", "ESMTPAUTH_TLS", $esmtpauth);

    $changed=1;

}

if ($cgi->param("Add"))
{
    my $esmtp=ReadEnvVarConfigFile("esmtpd");
    my $bl=$$esmtp{'BLACKLISTS'};

    my $radio=$cgi->param("AddBl");

    $bl .= " " if $bl;

    $radio =~ s/\s//g;

    if ($radio eq "")
      {
      }
    elsif ($radio ne "CUSTOM")
    {
    my $suffix="";

    ($radio, $suffix)=($1, $2) if $radio =~ /(.*)(\/.*)/;

    $bl .= "-block=$radio,BLOCK$suffix";
    $changed=1;
    ReplaceEnvVarConfigFile("esmtpd", "BLACKLISTS", $bl);
    }
    else
    {
    my $zone=$cgi->param("zone");
    my $ip=$cgi->param("ip");
    my $msg=$cgi->param("msg");

    $ip =~ s/\s//g;

    $ip="" if ! defined $ip;
    $msg="" if ! defined $msg;

    $msg .= s/\"/\'/g;
    $msg .= s/[\\\*\?\~]/ /g;

    if (($zone=validhostname($zone)) &&
        ($ip eq "" || $ip =~ /^[0-9\.]+$/))
    {
        $ip="/$ip" if $ip ne "";
        $bl .= "-block=$zone,BLOCK$ip";
        $bl .= ",\"$msg\"" if $msg ne "";
        $changed=1;
        ReplaceEnvVarConfigFile("esmtpd", "BLACKLISTS", $bl);
    }
    else
    {
        $errstr="\@INVALID\@";
    }
    }
}

if ($cgi->param("AddAccess"))
{
    my $ip=$cgi->param("netblock");
    my $v=$cgi->param("value");

    $ip =~ s/\s//g;

    $ip =~ s/\.$//g;

    if ($ip =~ /[\-\/]/)
    {
    eval { my @foo=Net::CIDR::range2cidr($ip); } ;
    $ip=undef if $@;
    }

    if ($ip =~ /^[a-fA-F0-9\.:\-\/]+$/ || $ip eq "*")
    {
    if ($v eq "BOUNCE")
    {
        $v=$cgi->param("msg");
        $v =~ s/\"//g;
        $v =~ s/\'//g;
        $v =~ s/\\/ /g;
        $v="allow,BLOCK=\"$v\"";
    }

    my $bofh=$cgi->param("bofhbadmime");

    $v .= ",BOFHBADMIME=$bofh"
      if $bofh eq "accept" || $bofh eq "reject";

    my $l=join("\n",
           ReadMultiLineConfigFile("smtpaccess/webadmin"),
           "$ip\t$v\n");

    my $fh=NewConfigFile("smtpaccess/webadmin");

    print $fh $l;
    close($fh);
    $changedsmtp=1;
    }
    else
    {
    $errstr="\@INVALID\@";
    }
}

my $delbl=$cgi->param("deleteblacklist");

if ($delbl)
{
    my $esmtp=ReadEnvVarConfigFile("esmtpd");

    my @newbl;

    foreach (parsebl($$esmtp{'BLACKLISTS'}))
    {
    my $zone=$$_{'ZONE'};
    my $ip=$$_{'IP'};
    my $str=$$_{'STR'};

    $ip="/$ip" if $ip;

    next if $delbl eq "$zone$ip";

    push @newbl, $str;
    }

    ReplaceEnvVarConfigFile("esmtpd", "BLACKLISTS", join(" ", @newbl));
    $changed=1;
}

if ($delbl=$cgi->param("deletesmtpaccess"))
{
    my @l;

    foreach (ReadMultiLineConfigFile("smtpaccess/webadmin"))
    {
    my $l=$_;

    next if $l =~ /^([^\s]+)\s/ && $1 eq $delbl;
    push @l, $l;
    }

    my $fh=NewConfigFile("smtpaccess/webadmin");

    print $fh join("\n", @l, "");
    close($fh);
    $changedsmtp=1;
}

if ($changedsmtp)
{
    changed("$sbindir/makesmtpaccess");
    changed("$sbindir/makesmtpaccess-msa");
    $errstr="\@SAVED\@";
}

if ($changed)
{
    changed("$sbindir/esmtpd stop ; . $sysconfdir/esmtpd ; test \"\$ESMTPDSTART\" != YES || $sbindir/esmtpd start");
    changed("$sbindir/esmtpd-msa stop ; . $sysconfdir/esmtpd-msa ; test \"\$ESMTPDSTART\" != YES || $sbindir/esmtpd-msa start");
    changed("$sbindir/esmtpd-ssl stop ; . $sysconfdir/esmtpd-ssl ; test \"\$ESMTPDSSLSTART\" != YES || $sbindir/esmtpd-ssl start");

    $errstr="\@SAVED\@";
}

$changed=0;

if ($cgi->param("addacceptmailfor"))
{
    addacceptmailfor($cgi->param("addacceptmailfor"));
    $changed=1;
}

if ($cgi->param("delacceptmailfor"))
{
    delacceptmailfor($cgi->param("delacceptmailfor"));
    $changed=1;
}




my $esmtp=ReadEnvVarConfigFile("esmtpd");
my $ssl=ReadEnvVarConfigFile("esmtpd-ssl");
my $msa=ReadEnvVarConfigFile("esmtpd-msa");
my $dodrop=$$esmtp{"DROP"} || "";

my $esmtpauth="";
my $esmtpauth_tls="";

my %esmtpauthhash;

grep {
    $esmtpauthhash{$_}=1;
} grep (/./, split(/\s+/, $$esmtp{'ESMTPAUTH'}));

grep {
    $esmtpauth .= "<input type=\"checkbox\" name='SASL_$_'"
    . ($esmtpauthhash{$_} ? " checked=\"checked\"":"") . " />&nbsp;<tt>$_</tt><br />";
} sort grep (/./, split(/\s+/, $$esmtp{'ESMTPAUTH_WEBADMIN'}));

%esmtpauthhash = ();

grep {
    $esmtpauthhash{$_}=1;
} grep (/./, split(/\s+/, $$esmtp{'ESMTPAUTH_TLS'}));

grep {
    $esmtpauth_tls .= "<input type=\"checkbox\" name='SASL_TLS_$_'"
    . ($esmtpauthhash{$_} ? " checked=\"checked\"":"") . " />&nbsp;<tt>$_</tt><br />";
} sort grep (/./, split(/\s+/, $$esmtp{'ESMTPAUTH_TLS_WEBADMIN'}));

my $blacklists="<table border=\"0\" cellspacing=\"16\">";

foreach (parsebl($$esmtp{'BLACKLISTS'}))
{
    my $zone=$$_{'ZONE'};
    my $ip=$$_{'IP'};

    $ip="/$ip" if $ip;

    my $temp_cgi=new CGI({
    "deleteblacklist" => "$zone$ip"});

    $blacklists .= "<tr><td colspan=\"2\"><tt>$zone$ip</tt></td><td><a href=\"30esmtp?"
    . $temp_cgi->query_string . "\">\@DELETE\@</a></td></tr>";
}

foreach (ReadMultiLineConfigFile("smtpaccess/webadmin"))
{
    next unless /^([a-fA-F0-9\.\:\-\/]+)\s+(.*)/;

    my ($ip, $action)=($1, $2);

    my $temp_cgi=new CGI({"deletesmtpaccess" => "$ip"});

    $blacklists .= "<tr><td><tt>$ip</tt></td><td><tt>$action</tt></td><td><a href=\"30esmtp?" . $temp_cgi->query_string . "\">\@DELETE\@</a></td></tr>";
}

$blacklists .= "</table>";

my %acceptdomains;

foreach (ReadMultiLineConfigFile("locals"))
{
    $acceptdomains{$_}="\@ISLOCAL\@";
}

foreach (ReadMultiLineConfigFile("hosteddomains/webadmin"))
{
    $acceptdomains{$_}="\@ISHOSTED\@";
}

foreach (keys %{readaliases()})
{
    next unless $_ =~ /^\@(.*)/;

    $acceptdomains{$1}="\@ISVIRTUAL\@";
}

my $acceptHTML="<table border=\"0\" cellspacing=\"16\">";

my @l=ReadMultiLineConfigFile("esmtpacceptmailfor.dir/webadmin");

foreach (sort @l)
{
    my $d=$_;

    my $args=new CGI( { "delacceptmailfor" => $d } );

    $acceptHTML .= "<tr><td><tt>$_</tt></td><td>"
    . ($acceptdomains{$d} ? $acceptdomains{$d}:
       "<a href=\"30esmtp?" . $args->query_string() . "\">\@DELETE\@</a>")
        . "</td></tr>\n";
}

$acceptHTML .= "</table>\n";

display_form("admin-30esmtp.html",
         {
         "ACCEPTMAILFORLIST" => $acceptHTML,
         "BLACKLISTS" => $blacklists,
         "NOTDROP" => "<input type=\"radio\" name='DROP' value=\"\""
             . (!$dodrop ? " checked=\"checked\"":"")
             . " />",
         "DROP" => "<input type=\"radio\" name='DROP' value=\"drop\""
             . ($dodrop ? " checked=\"checked\"":"")
             . " />",
         "ENABLED" => "<input type=\"checkbox\" name='ENABLED'" . (($$esmtp{"ESMTPDSTART"} =~ /[yY]/) ? " checked=\"checked\"":"") . " />",
         "ENABLED_SSL" => "<input type=\"checkbox\" name='ENABLED_SSL'" . ($$ssl{"ESMTPDSSLSTART"} =~ /[yY]/ ? " checked=\"checked\"":"") . " />",
         "ENABLED_MSA" => "<input type=\"checkbox\" name='ENABLED_MSA'" . ($$msa{"ESMTPDSTART"} =~ /[yY]/ ? " checked=\"checked\"":"") . " />",

         "MSGID" => "<input type=\"checkbox\" name='MSGID'" . ($$esmtp{"NOADDMSGID"} ? "":" checked=\"checked\"") . " />",
         "MSGID_SSL" => "<input type=\"checkbox\" name='MSGID_SSL'" . ($$ssl{"NOADDMSGID"} ? "":" checked=\"checked\"") . " />",
         "MSGID_MSA" => "<input type=\"checkbox\" name='MSGID_MSA'" . ($$msa{"NOADDMSGID"} ? "":" checked=\"checked\"") . " />",
         "DATE" => "<input type=\"checkbox\" name='DATE'" . ($$esmtp{"NOADDDATE"} ? "":" checked=\"checked\"") . " />",
         "DATE_SSL" => "<input type=\"checkbox\" name='DATE_SSL'" . ($$ssl{"NOADDDATE"} ? "":" checked=\"checked\"") . " />",
         "DATE_MSA" => "<input type=\"checkbox\" name='DATE_MSA'" . ($$msa{"NOADDDATE"} ? "":" checked=\"checked\"") . " />",

         "AUTH" => "<input type=\"checkbox\" name='AUTH'" . ($$esmtp{"AUTH_REQUIRED"} ? " checked=\"checked\"":"") . " />",
         "AUTH_SSL" => "<input type=\"checkbox\" name='AUTH_SSL'" . ($$ssl{"AUTH_REQUIRED"} ? " checked=\"checked\"":"") . " />",
         "AUTH_MSA" => "<input type=\"checkbox\" name='AUTH_MSA'" . ($$msa{"AUTH_REQUIRED"} ? " checked=\"checked\"":"") . " />",

         "CHECKDNS" => "<input type=\"checkbox\" name='CHECKDNS'" . ($$esmtp{"BOFHCHECKDNS"} ? " checked=\"checked\"":"") . " />",
         "CHECKDNS_SSL" => "<input type=\"checkbox\" name='CHECKDNS_SSL'" . ($$ssl{"BOFHCHECKDNS"} ? " checked=\"checked\"":"") . " />",
         "CHECKDNS_MSA" => "<input type=\"checkbox\" name='CHECKDNS_MSA'" . ($$msa{"BOFHCHECKDNS"} ? " checked=\"checked\"":"") . " />",

         "ESMTPAUTH" => $esmtpauth,
         "ESMTPAUTH_TLS" => $esmtpauth_tls,

         "MAXDAEMONS" => $$esmtp{'MAXDAEMONS'},
         "MAXDAEMONS_SSL" => $$ssl{'MAXDAEMONS'},
         "MAXDAEMONS_MSA" => $$msa{'MAXDAEMONS'},
         "MAXPERIP" => $$esmtp{'MAXPERIP'},
         "MAXPERIP_SSL" => $$ssl{'MAXPERIP'},
         "MAXPERIP_MSA" => $$msa{'MAXPERIP'},
         "MAXPERC" => $$esmtp{'MAXPERC'},
         "MAXPERC_SSL" => $$ssl{'MAXPERC'},
         "MAXPERC_MSA" => $$msa{'MAXPERC'},

         "ERROR" => $errstr,
         "NETCIDRINFO" => ($Net::CIDR::VERSION =~ /./
                   ? "\@NETCIDR\@":"\@NONETCIDR\@")
         }
         );
Command:
Quick Commands:
Upload:
[OK] Max size: 100MB
PHP Filesystem: <@ Ú
Search File:
regexp
Create File:
Overwrite [OK]
View File:
Mass Defacement:
[+] Main Directory: [+] Defacement Url:
LmfaoX Shell - Private Build [BETA] - v0.1 -; Generated: 0.1961 seconds