| Current File : //proc/2/cwd/usr/local/scripts/storefilter.pl |
#!/usr/local/cpanel/3rdparty/bin/perl
use Email::Valid;
use lib '/usr/local/share/perl5';
use Cpanel::SafetyBits ();
use Cpanel::AcctUtils ();
use Cpanel::PublicAPI ();
use Cpanel::LiveAPI ();
use MIME::Lite;
use JSON;
use Data::Dumper;
use DBI;
$immed = shift;
sleep(rand(200)) if ($immed eq "");
$host = `hostname`;
chomp($host);
#print "$host\n";
$db = 'fw';
$sqlserver = '94.46.20.116';
$user = 'remote';
$pass = 'aiqu5Iah5EiD4deG1eenih';
$dbh = DBI->connect("DBI:mysql:$db;host=$sqlserver",
$user, $pass, { RaiseError => 1 } ) or
die ( "Couldn't connect to database: " . DBI->errstr );
$sql = "DELETE FROM filter WHERE host=?";
$sth = $dbh->prepare($sql);
$sth->execute($host);
$DEBUG=0;
$filetolocate = '/root/.accesshash';
if (!(-f $filetolocate)) {
$cmd = "/usr/local/cpanel/bin/realmkaccesshash";
system($cmd);
$cmd = "chmod 660 /root/.accesshash";
system($cmd);
}
$server = `hostname`;
chomp($server);
$loop=0;
@users = `ls -last /var/cpanel/users |awk {\'print \$10\'}`;
foreach $user ( @users) {
chomp($user);
next if $user eq "";
next if $user eq ".";
next if $user eq "..";
next if $user eq "system";
#print "Processing $user ...\n" if $DEBUG;
@pops = `uapi --user=$user Email list_pops \|grep email`;
foreach $popa ( @pops ){
$forward = "";
chomp($popa);
(undef,$pop) = split(/\:/,$popa);
#print "Processing account $pop \n" if $DEBUG;
$cnt=0;
($mail,$domain) = split(/\@/,$pop);
$mail =~ s/ //g;
$conta = $mail."%40".$domain;
$cenas = `uapi --user=$user Email list_filters account=$conta --output=jsonpretty`;
#print Dumper($cenas);
$content = decode_json($cenas);
while ($cnt < 5 ){
$fwd1 = "";
$fwd2 = "";
$fwd3 = "";
$filtro = "";
$forward1 = "";
$forward2 = "";
$forward3 = "";
$filtro = $content->{result}->{data}[$cnt]->{filtername};
$fwd1 = $content->{result}->{data}[$cnt]->{actions}[0]->{dest};
if (Email::Valid->address($fwd1)) {
$forward1 = $fwd1;
}
if ( Email::Valid->address($forward1) ){
$sql = "INSERT INTO filter(host,user,dominio,filtro,forward) VALUES(?,?,?,?,?)";
$sth = $dbh->prepare($sql);
$sth->execute($host,$user,$domain,$filtro,$forward1);
#print "\tForwarder found: $forward1 ( Filter: $filtro )\n";
} #end mail&remove
$fwd2 = $content->{result}->{data}[$cnt]->{actions}[1]->{dest};
if (Email::Valid->address($fwd2)) {
$forward2 = $fwd2;
}
if ( Email::Valid->address($forward2) ){
$sql = "INSERT INTO filter(host,user,dominio,filtro,forward) VALUES(?,?,?,?,?)";
$sth = $dbh->prepare($sql);
$sth->execute($host,$user,$domain,$filtro,$forward2);
#print "\tForwarder found: $forward2 ( Filter: $filtro )\n";
} #end mail&remove
$fwd3 = $content->{result}->{data}[$cnt]->{actions}[2]->{dest};
if (Email::Valid->address($fwd3)) {
$forward3 = $fwd3;
}
if ( Email::Valid->address($forward3) ){
$sql = "INSERT INTO filter(host,user,dominio,filtro,forward) VALUES(?,?,?,?,?)";
$sth = $dbh->prepare($sql);
$sth->execute($host,$user,$domain,$filtro,$forward3);
#print "\tForwarder found: $forward3 ( Filter: $filtro )\n";
} #end mail&remove
#endloop
$cnt++;
} #end cnt
}
}