MOON
Server: Apache/2.2.31 (Unix) mod_ssl/2.2.31 OpenSSL/0.9.8e-fips-rhel5 mod_bwlimited/1.4
System: Linux csr818.wilogic.com 2.6.18-419.el5xen #1 SMP Fri Feb 24 22:50:37 UTC 2017 x86_64
User: digitals (531)
PHP: 5.4.45
Disabled: NONE
Upload Files
File: //proc/self/root/scripts.20110531.215904.25158/fixspamassassinfailedupdate
#!/usr/bin/perl
# cpanel - fixspamassassinfailedupdate            Copyright(c) 2010 cPanel, Inc.
#                                                           All rights Reserved.
# copyright@cpanel.net                                         http://cpanel.net
# This code is subject to the cPanel license. Unauthorized copying is prohibited

BEGIN { unshift @INC, '/usr/local/cpanel', '/scripts'; }

use RestartSrv;
use Cpanel::SafeRun::Errors ();
use Cpanel::FindBin         ();

if ( -e '/etc/spamddisable' || -e '/etc/spamdisable' ) {
    print "SpamAssassin disabled in Service Manager\n";
    exit;
}

my $spamassassin_bin = Cpanel::FindBin::findbin( 'spamassassin', 'path' => [ '/usr/sbin', '/usr/local/sbin', '/usr/bin', '/usr/local/bin' ] );

my $has_rules = 1;
my @FILES;
if ( -x $spamassassin_bin ) {
    my @testout = Cpanel::SafeRun::Errors::saferunallerrors( $spamassassin_bin, '--lint', '-D' );
    if ( grep ( /no rules were found/, @testout ) ) {
        $has_rules = 0;
    }
    @FILES = grep( /read\s+file/, @testout );
}

if ( !$has_rules ) {
    print "spamassassin rule update has not yet run.\n";
    my $saupdate = Cpanel::FindBin::findbin( 'sa-update', 'path' => [ '/usr/sbin', '/usr/local/sbin', '/usr/bin', '/usr/local/bin' ] );

    if ( !$saupdate || !-e $saupdate || !-x $saupdate ) {
        print "$app: sa-update is missing!\n";
        exit 1;
    }

    print "Running sa-update ($saupdate).....";
    system( $saupdate, '-D' );
    print "Done\n";
}

my $spamd_check = spamdcheck();

if ( !$spamd_check ) {
    $spamd_check = undef;
    print "Restarting spamd\n";
    system '/scripts/restartsrv_spamd';
}

my @BINS = ( "spamd", "sa-learn", "spamc", "spamassassin" );

$spamd_check = spamdcheck() if ( !defined $spamd_check );

if ( !@FILES || !$spamd_check ) {
    print "Config File Count: " . scalar @FILES . "\n";
    print "Spamassassin Update Failed, reinstalling!\n";
    system( "rm", "-rf", "/usr/local/share/spamassassin", "/usr/share/spamassassin" );
    foreach my $bin (@BINS) {
        unlink( "/usr/local/bin/${bin}", "/usr/bin/${bin}" );
    }
    system( "/scripts/perlinstaller", "--force", "Mail::SpamAssassin" );
    $spamd_check = undef;
    update_rules();
}

foreach my $bin (@BINS) {
    if ( !-e "/usr/bin/${bin}" && -e "/usr/local/bin/${bin}" ) {
        symlink( "../local/bin/${bin}", "/usr/bin/${bin}" );
    }
}

$spamd_check = spamdcheck() if ( !defined $spamd_check );

system("/scripts/restartsrv_spamd") if !$spamd_check;

sub update_rules {
    print "Running sa-update ($saupdate).....";
    system('/scripts/sa-update_wrapper');
    print "Done\n";
}