Current File : //proc/2/root/usr/local/scripts/findfilters.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;

$DEBUG=0;

$server = `hostname`;
chomp($server);


@users = `ls -last /var/cpanel/users |awk {\'print \$10\'}`;

$msga = "";

foreach $user ( @users) {

#            "rules" : [
#               {
#                  "part" : "$header_from:",
#                  "match" : "contains",
#                  "val" : "@",
#                  "opt" : "or"
#               }
#            ],
#            "filtername" : "..",
#            "actions" : [
#               {
#                  "dest" : "ozkgroupltd032@gmail.com",
#                  "action" : "deliver"
#               },
#               {
#                  "action" : "save",
#                  "dest" : "$home/mail/tecmacal.pt/tecmacal/INBOX"
#               }
#            ],
#            "enabled" : 1,
#            "unescaped" : 1


	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);

			($mail,$domain) = split(/\@/,$pop);
			$mail =~ s/ //g;
			
			$conta = $mail."%40".$domain;

			$cenas = `uapi --user=$user Email list_filters account=$conta --output=jsonpretty`;
			$content = decode_json($cenas);

			$filtro = $content->{result}->{data}[0]->{filtername};
			$forward = $content->{result}->{data}[0]->{actions}[0]->{dest};
			$cena1 = $content->{result}->{data}[0]->{rules}[0]->{part};
			$cena2 = $content->{result}->{data}[0]->{rules}[0]->{match};
			$cena3 = $content->{result}->{data}[0]->{rules}[0]->{val};
			$condicao = "$cena1 - $cena2 - $cena3";

	
			next if ($forward eq "");
			if ( Email::Valid->address($forward) ){	
				$msga = $msga . "User: $user - Conta $pop - Filtername: $filtro - Forward: $forward ( $condicao ) <br>" if (length($filtro) <= 8 );

			}
		}
}

mandamail($server,$msga);


sub mandamail {

			($server,$msga) = @_;

			$msg = "Server $server - Filter List length <= 8 !!!! <BR><BR>";

			$msg = $msg . $msga;


                        $to = "pazevedo\@ptisp.pt";

                        $mesg = MIME::Lite->new(
                                From     =>'FilterSearch <message@ptisp.pt>',
                                To       =>$to,
                                Subject  =>"Filter list - $server ",
                                Data     =>$msg,
                                Type     =>'text/html'
                            );

                        $usr = "message\@ptisp.systems";
                        $pass = "geicu7ohy4utaiceiN6eGe";
                        $mesg->send('smtp', 'mta.ptisp.systems', AuthUser=>$usr, AuthPass=>$pass, Timeout=>60,);

}