Current File : //proc/24011/root/proc/3/root/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
		}
}