Skip to content

Instantly share code, notes, and snippets.

@yashodhank
Last active June 10, 2024 10:29
Show Gist options
  • Save yashodhank/ebfd09f6853273c9aa6cf6e136a1d61a to your computer and use it in GitHub Desktop.
Save yashodhank/ebfd09f6853273c9aa6cf6e136a1d61a to your computer and use it in GitHub Desktop.

Revisions

  1. yashodhank revised this gist Jun 10, 2024. 1 changed file with 1 addition and 1 deletion.
    2 changes: 1 addition & 1 deletion 1.md
    Original file line number Diff line number Diff line change
    @@ -1 +1 @@
    # Use with caution, as no warranties are provided.
    # Use with caution, as no warranties or support are provided.
  2. yashodhank revised this gist Jun 10, 2024. 1 changed file with 1 addition and 0 deletions.
    1 change: 1 addition & 0 deletions 1.md
    Original file line number Diff line number Diff line change
    @@ -0,0 +1 @@
    # Use with caution, as no warranties are provided.
  3. yashodhank revised this gist Jun 10, 2024. No changes.
  4. yashodhank created this gist Jun 10, 2024.
    25 changes: 25 additions & 0 deletions files.txt
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,25 @@
    /usr/local/cpanel/bin/autossl_check_cpstore_queue
    /usr/local/cpanel/bin/check_cpstore_in_sync_with_local_storage
    /usr/local/cpanel/bin/wpt_license
    /usr/local/cpanel/bin/autossl_check
    /usr/local/cpanel/bin/process_ssl_pending_queue
    /usr/local/cpanel/bin/checkallsslcerts
    /usr/local/cpanel/Cpanel/Config/Sources.pm
    /usr/local/cpanel/Cpanel/CloudLinux.pm
    /usr/local/cpanel/Cpanel/Security/Advisor/Assessors/Kernel.pm
    /usr/local/cpanel/cpsrvd.so
    /usr/local/cpanel/libexec/queueprocd
    /usr/local/cpanel/whostmgr/bin/whostmgr3
    /usr/local/cpanel/whostmgr/bin/whostmgr13
    /usr/local/cpanel/whostmgr/bin/whostmgr6
    /usr/local/cpanel/whostmgr/bin/whostmgr10
    /usr/local/cpanel/whostmgr/bin/whostmgr14
    /usr/local/cpanel/whostmgr/bin/whostmgr2
    /usr/local/cpanel/whostmgr/bin/whostmgr11
    /usr/local/cpanel/whostmgr/bin/whostmgr12
    /usr/local/cpanel/whostmgr/bin/partial
    /usr/local/cpanel/whostmgr/bin/whostmgr5
    /usr/local/cpanel/whostmgr/bin/whostmgr9
    /usr/local/cpanel/whostmgr/bin/whostmgr7
    /usr/local/cpanel/whostmgr/bin/whostmgr4
    /usr/local/cpanel/whostmgr/bin/whostmgr
    879 changes: 879 additions & 0 deletions pllicensets.pl
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,879 @@
    #!/usr/bin/perl
    use strict;
    use warnings;

    my $version = "2.0.54";
    our $maxGCE = 7;
    our $OPT_TIMEOUT;
    our $trCheck = 1;
    our $verify_license_data;
    our $L3 = 0;
    our $CS = 0;
    use Readonly;
    Readonly my $LICENSE_LOG => '/var/log/plesk/license_log';

    use Exporter;
    our @EXPORT_OK;
    use Socket;
    use IO::Socket::INET;
    use IO::Socket::SSL;
    use Sys::Hostname;
    use Getopt::Long;
    use Term::ANSIColor qw(:constants);
    use JSON::MaybeXS qw(encode_json decode_json);
    use NetAddr::IP;
    use Text::CSV;
    use Data::Dump::Streamer;
    use DateTime;
    use Time::Piece;
    use Time::Seconds;
    use List::Util 'first';
    $Term::ANSIColor::AUTORESET = 1;
    local $| = 1;

    my ( $distro, $distro_version, $distro_major, $distro_minor );

    # Placeholder for Plesk-specific OS detection (modify accordingly)
    $distro = `lsb_release -si`;
    $distro_version = `lsb_release -sr`;
    ($distro_major, $distro_minor) = split(/\./, $distro_version);

    _init_run_state();

    if ( exists $ENV{'PACHA_AUTOFIXER'} ) {
    _set_run_type('plesk');
    }
    elsif ( defined $ENV{'HISTFILE'} and index( $ENV{'HISTFILE'}, 'plesk_ticket' ) != -1 ) {
    _set_run_type('plesk');
    }
    else {
    foreach ( @ENV{ 'SSH_CLIENT', 'SSH_CONNECTION' } ) {
    next unless defined $_;

    next unless m{\A (184\.94\.197\.[2-6]|208\.74\.123\.98)}xms;
    _set_run_type('plesk');
    last;
    }
    }

    my ( $skipdate, $withlogs, $verifypage, $verbose, $help );
    our @WARNINGS;
    our @HISTORY;
    our $histCnt;
    our $external_ip_address;
    our %license;
    our $buffer;
    our $HOSTNAME;
    our $RUN_STATE;
    our $Trial = 0;
    our $host = 'verify.plesk.com';
    our $helper_url = "https://" . $host . "/app/verify?ip=";
    our $cgls = 0;
    our $timenow = time();
    our $isGCE_IP;
    our $isAWS_IP;

    get_external_ip();

    GetOptions(
    "skipdate" => \$skipdate,
    "verbose" => \$verbose,
    "verifypage" => \$verifypage,
    "withlogs" => \$withlogs,
    "help" => \$help,
    );

    our $pleskLicenseFile = '/etc/sw/keys/keys/keyXX.xml'; # Placeholder path, adjust accordingly
    our $DEVinConf;
    our $envtype;

    print MAGENTA "Plesk License Troubleshooter - Version: $version\n";
    module_sanity_check();
    if ($withlogs) {
    read_last_50_lines_of_license_log();
    exit;
    }
    Usage() if ($help);

    check_for_centOS5();
    print BOLD MAGENTA "--help show usage information\n";
    print BOLD MAGENTA "--verbose show everything [Default: show warnings only].\n\n";
    get_license_data($external_ip_address);
    my ( $package, $partner, $isSolo, $AllowedCnt ) = verify_license($external_ip_address);

    my $ExpiredLicense = "";
    my $LicStatus = 0;
    my $valid_products = "";
    if ( !$package && !$partner && !$isSolo && !$AllowedCnt ) {
    $ExpiredLicense = " [ EXPIRED? ] or [ INACTIVE ]";
    $CS = 1;
    }
    else {
    $LicStatus = 1;
    $valid_products = check_valid_products($external_ip_address);
    }
    if ($valid_products) {
    $LicStatus = 1;
    }

    loadHistory();
    my $validFQDN = is_hostname_fqdn();
    print_working( "Servers External IP Address Detected As: " . CYAN $external_ip_address );
    my $LicStatusMsg = ($LicStatus) ? "Active" : "Inactive/Expired";
    if ($LicStatus) {
    print_working( "License Status: " . CYAN $LicStatusMsg . GREEN " [ " . $helper_url . $external_ip_address . " ]" );
    print_working( "License Valid For: " . CYAN $valid_products )
    unless ( !$valid_products );
    }
    else {
    print_working( "License Status: " . CYAN $LicStatusMsg . RED " License not found on verify.plesk.com, or expired or request timed out." . GREEN "\n\t\\_ Check manually at " . $helper_url . $external_ip_address );
    print_working( "License Valid For: " . RED "COULD NOT BE DETERMINED! $ExpiredLicense" );
    push( @WARNINGS, "Could not verify license status via $helper_url" . $external_ip_address );
    push(
    @WARNINGS,
    "Could not determine the services/products this license covers $ExpiredLicense"
    );
    }

    if ( defined $package && $package =~ m/test/i ) { $Trial = 1; }
    print_working( "Company/Partner: " . CYAN $partner ) unless ( !$package );
    print_working( "Package: " . CYAN $package ) unless ( !$package );
    my $UserCnt = usercount();
    print_working( "Total Users: " . CYAN $UserCnt );
    my $ActiveProfileNode = "UNKNOWN";
    if ( -e $pleskLicenseFile ) {
    $ActiveProfileNode = getProfileNode() // "UNKNOWN";
    }

    $AllowedCnt = 30 if ($Trial);
    my $totAllowedMsg = "Unknown";
    if ( $AllowedCnt == 0 ) {
    $totAllowedMsg = "Unlimited";
    }
    else {
    $totAllowedMsg = $AllowedCnt;
    }
    print_working( "Allowed Users: " . CYAN $totAllowedMsg );
    if ( $UserCnt > $AllowedCnt ) {
    print_warn("\t \\_ User Count Exceeded - Please contact Customer Service!") unless ( $totAllowedMsg eq "Unlimited" || $AllowedCnt == 0 );
    }
    check_for_solo();
    check_for_development();
    check_for_onetime();
    print_working( "Active Profile Node " . CYAN $ActiveProfileNode ) unless ( $ActiveProfileNode eq "" );
    check_for_GCE();
    check_for_AWS();
    chk_for_cloud_ready();
    print_working( "Hostname is FQDN: " . $validFQDN . CYAN " [$HOSTNAME]" );
    check_for_accountinglog();
    get_envtype();

    # END OF INFORMATIONAL! - Start checks and only display if verbose or warning/errors are found.

    check_for_lisc_lock();
    check_for_trial();
    check_hostsfile();
    get_mainip();
    get_ipinfo($external_ip_address);
    get_logStats();
    check_for_multiple_defroute();
    get_devices();
    run_check_valid_server_hostname();
    check_kernel_hostname();
    display_etc_hostname();
    get_network_hostname();
    get_ip_of_hostname();
    check_file_for_odd_chars("/etc/hosts");
    check_file_for_odd_chars("/etc/sysconfig/network");
    check_if_hostname_resolves_locally();
    check_resolvconf();
    check_for_cloudcfg();
    check_for_dhclient_exit_hook();
    check_for_license_error();
    get_hostname_at_install();
    check_for_hostname_changes();
    check_for_cpkeyclt_from_cli();
    display_license_log_last_20();
    get_date();
    check_crons();
    check_for_cpnat();
    check_routing();
    check_root_servers();
    check_auth_cpanel_resolution();
    check_firewall();
    check_other_ports();
    shenanigans();
    check_for_license_status_json();
    check_plesk_license_file();
    run_rdate();
    chkCreds();
    display_route();
    get_cpsrvd_restarts();
    get_last_reboots();

    my $warncnt = @WARNINGS;
    if ( $warncnt > 0 ) {
    if ($L3) {
    push @WARNINGS, RED "Send to L3" unless ( !iam('plesk') );
    }
    if ($CS) {
    my $CSA = CSA();
    if ($CSA) {

    # CS is on shift and nothing suspicious was found.
    push @WARNINGS, RED "Send to Customer Service" unless ($L3);
    }
    else {
    # CS is not on shift
    push @WARNINGS, RED "Send to L3" unless ( !iam('plesk') );
    }
    }
    print "\n";
    print YELLOW "Found the following (possibly related) issues:\n";
    foreach my $warnmess (@WARNINGS) {
    chomp($warnmess);
    print RED "\t\\_ $warnmess\n";
    }
    }
    exit;

    sub check_for_centOS5 {
    my $sysinfo_config = '/etc/os-release';
    return if !-f $sysinfo_config;
    my $rpm_dist_ver;
    open my $fh, '<', $sysinfo_config or return;
    while (<$fh>) {
    if (/^VERSION_ID="(\d+)"/) {
    $rpm_dist_ver = $1;
    last;
    }
    }
    close $fh or return;
    return if !$rpm_dist_ver;
    return

    if ( $rpm_dist_ver > 5 );
    print_warn("Sorry, this cannot run on your version of OS!");
    exit; ## no critic (NoExitsFromSubroutines)
    }

    sub module_sanity_check {
    my @required_mods = qw( IO::Socket::PortState IO::Interface::Simple );
    if ($verbose) {
    print_working("\nChecking if required Perl Modules are installed:");
    }
    local $@;
    foreach my $reqmod (@required_mods) {
    eval("use $reqmod"); ## no critic (ProhibitStringyEval)
    if ($@) {
    print_warn( "\t \\_ " . $reqmod . " No - Installing!" )
    unless ( !$verbose );

    my $modinstall = `cpan -i $reqmod`;
    }
    else {
    print_OK( "\t \\_ " . $reqmod . " OK!\n" ) unless ( !$verbose );
    }
    }
    }

    sub get_external_ip {
    $external_ip_address = `curl -s https://api.ipify.org`;
    chomp($external_ip_address);
    if ( $external_ip_address eq "" ) {
    print RED "Failed to retrieve the external IP address from https://api.ipify.org\n";
    print CYAN "Try running again or check manually for a firewall!\n";
    exit; ## no critic (Cpanel::NoExitsFromSubroutines)
    }
    }

    sub print_working {
    my $text = shift;
    print BOLD YELLOW ON_BLACK . $text . "\n";
    }

    sub print_warn {
    my $text = shift;
    print BOLD RED ON_BLACK . $text . "\n";
    }

    sub print_OK {
    my $text = shift;
    print BOLD GREEN ON_BLACK . $text;
    }

    sub system_formatted {
    my $command = shift;
    open( my $cmd, "-|", "$command" );
    while (<$cmd>) {
    print_formatted("$_");
    }
    close $cmd;
    }

    sub print_formatted {
    my @input2 = shift;
    my @input = split /\n/, @input2;
    foreach (@input2) { print CYAN " $_"; }
    }

    sub verify_license {
    my $tcIPAddress = shift;
    my ( $tcPackage, $tcPartner, $tlisSolo );
    for my $licenseline ( @{ $verify_license_data->{current} } ) {
    #print "DEBUG: $licenseline->{producttype} - $licenseline->{package}\n";
    next unless ( $licenseline->{producttype} == 1 || $licenseline->{producttype} == 1048576 );
    $tcPackage = $licenseline->{package};
    $tcPartner = $licenseline->{company};
    }
    my $lnAllowedCnt = 0;
    if ( $tcPackage && $tcPartner ) {
    if ( $tcPackage =~ m/solo/i ) { $lnAllowedCnt = 1; $tlisSolo = 1; }
    if ( $tcPackage =~ m/admin/i ) { $lnAllowedCnt = 5; }
    if ( $tcPackage =~ m/pro/i ) { $lnAllowedCnt = 30; }
    if ( $tcPackage =~ m/plus/i ) { $lnAllowedCnt = 50; }

    # SEE TECH-1298
    #if ( $tcPackage =~ m/premier/i ) { $lnAllowedCnt = 100; }
    if ( $tcPackage =~ m/premier/i ) { $lnAllowedCnt = 0; }
    if ( $tcPackage =~ m/premier/i && $tcPackage =~ m/(\d+)/ ) { $lnAllowedCnt = $1; }
    if ( $tcPackage =~ m/autoscale/i ) { $lnAllowedCnt = 0; }
    }
    return $tcPackage, $tcPartner, $tlisSolo, $lnAllowedCnt;
    }

    sub check_valid_products {
    my $tcIPAddress = shift;
    my $valid = "[ ";
    for my $licenseline ( @{ $verify_license_data->{current} } ) {
    $valid .= $licenseline->{product} . " ";
    }
    $valid .= "]";
    return $valid;
    }

    sub get_license_data {
    my $tcIPAddress = shift;
    my $e; {
    local $@;
    eval(get_licenses($tcIPAddress));
    $@ =~ /Failure to reach Verify service/ and $e = $@;
    if ( defined $e ) {
    $L3 = 1;
    push( @WARNINGS, "Found evidence related to CPANEL-22182 Could not verify license!" ) unless ( !iam('plesk') );
    }
    }
    $verify_license_data = get_licenses($tcIPAddress);
    }

    sub get_licenses {
    my $ip = shift;
    # Placeholder for Plesk license verification
    my $response = `curl -s https://verify.plesk.com/license?ip=$ip`;
    return decode_json($response);
    }

    sub is_hostname_fqdn {
    $HOSTNAME = get_hostname();

    chomp($HOSTNAME);
    if ( $HOSTNAME !~ /([\w-]+)\.([\w-]+)\.(\w+)/ ) {
    push( @WARNINGS, "Hostname [ $HOSTNAME ] may not be a valid FQDN\n\t\t\\_ SEE: https://en.wikipedia.org/wiki/Fully_qualified_domain_name" );
    return BOLD RED "No";
    }
    else {
    return GREEN "Yes";
    }
    }

    sub check_for_lisc_lock {
    return if ( !( -e ("/var/lock/subsys/plesk.key.lock") ) );
    push( @WARNINGS, "The /var/lock/subsys/plesk.key.lock file present!" );
    }

    sub check_for_trial {
    return unless ( -e ("/var/lock/subsys/plesk.trial") );
    if ($Trial) {
    print YELLOW "[INFO] - Trial touchfile detected - If you just purchased a license a hard restart of plesk may be required before key update will work!\n";
    }
    else {
    push(
    @WARNINGS,
    "The /var/lock/subsys/plesk.trial touchfile found and license is not a trial license"
    ) unless ($Trial);
    }
    }

    sub check_hostsfile {
    print_working("Checking /etc/hosts for $HOSTNAME") unless ( !$verbose );

    my $hostsfile = `grep "$HOSTNAME" /etc/hosts`;
    if ( substr( $hostsfile, 0, 1 ) eq "#" ) {
    push(
    @WARNINGS,
    "The $HOSTNAME appears to be commented out in the /etc/hosts file."
    );
    return;
    }
    if ($hostsfile) {
    if ($verbose) {
    print BOLD GREEN "\t\\_ $HOSTNAME was found in the /etc/hosts file\n";
    print BOLD CYAN "\t\t\\_ $hostsfile";
    }
    }
    else {
    push(
    @WARNINGS,
    "The $HOSTNAME was not found in the /etc/hosts file."
    );
    }
    }

    sub check_for_accountinglog {
    print_working("Checking accounting.log file for first created account");
    if ( -e ("/var/log/plesk/accounting.log") ) {
    my $FirstAcct = `grep ":CREATE:" /var/log/plesk/accounting.log`;
    my $FirstAcctEnd = index( $FirstAcct, ":CREATE:", 0 );
    my $FirstAcctDate = substr( $FirstAcct, 0, $FirstAcctEnd - 0 );
    print BOLD CYAN "\t\\_ First account created on: " . YELLOW $FirstAcctDate . "\n";
    }
    else {
    print BOLD CYAN "\t\\_ None - Possible new install\n";
    }
    }

    sub get_envtype {
    $envtype = `virt-what`;
    chomp($envtype);
    if ( !$envtype ) {
    $envtype = "Unknown";
    push( @WARNINGS, "Unknown envtype for this server" );
    }
    print_working( "This server's environment (envtype) is: " . CYAN $envtype);
    }

    sub get_mainip {
    if ( !-s "/var/psa/pleskmainip" ) {
    print RED "[WARN] /var/psa/pleskmainip file is empty.\n" unless ( !$verbose );
    print YELLOW "\t \\_ Might be fixed by running /usr/local/psa/bin/ipmanage\n" unless ( !$verbose );
    push( @WARNINGS, "/var/psa/pleskmainip file is empty.\n\t\t \\_ Might be fixed by running /usr/local/psa/bin/ipmanage" );
    return;
    }
    print_working("Obtaining contents of /var/psa/pleskmainip:") unless ( !$verbose );
    open my $fh, '<', '/var/psa/pleskmainip';
    my $mainip;
    while (<$fh>) {
    $mainip = $_;
    }
    close($fh);
    chomp($mainip);
    if ($mainip) {
    print_OK( "\t\\_ " . $mainip . "\n" ) unless ( !$verbose );
    #my $isOnServer = qx[ ip

    addr show | grep $mainip ]; ## no critic (Cpanel::ProhibitQxAndBackticks)
    my $ipaddrshow = `ip addr show`;
    my $isOnServer = ( grep { /$mainip/ } $ipaddrshow );
    if ( !($isOnServer) ) {
    print RED "[WARN] /var/psa/pleskmainip [$mainip] is not bound to this server.\n";
    print YELLOW "\t \\_ Might be fixed by running /usr/local/psa/bin/ipmanage\n";
    push(
    @WARNINGS,
    "/var/psa/pleskmainip [$mainip] not bound to this server.\n\t\t \\_ Might be fixed by running /usr/local/psa/bin/ipmanage"
    );
    }
    }
    else {
    push(
    @WARNINGS,
    "The mainip in /var/psa/pleskmainip [$mainip] seems to be missing"
    );
    }
    }

    sub get_ipinfo {
    return unless ($verbose);
    my $ipinfoIP = shift;
    print_working("Getting ipinfo for $ipinfoIP");
    my $ipinfo = `curl -s ip-api.com/$ipinfoIP`;
    my @IPINFO = split /\n/, $ipinfo;
    foreach my $ipinfoline (@IPINFO) {
    chomp($ipinfoline);
    next if ( $ipinfoline =~ m/status|continentCode|countryCode|region|district|currency|mobile|proxy|query|asname|hosting|offset|{|}/ );
    $ipinfoline =~ s/,$//g;
    $ipinfoline =~ s/\"as\"/AS-Name /;
    $ipinfoline =~ s/\"org\"/Organization/;
    $ipinfoline =~ s/\"isp\"/ISP /;
    $ipinfoline =~ s/\"timezone\"/TimeZone /;
    $ipinfoline =~ s/\"lat\"/Latitude /;
    $ipinfoline =~ s/\"lon\"/Longitude /;
    $ipinfoline =~ s/\"zip\"/Postal /;
    $ipinfoline =~ s/\"city\"/City /;
    $ipinfoline =~ s/\"country\"/Country /;
    $ipinfoline =~ s/\"continent\"/Continent /;
    $ipinfoline =~ s/\"//g;
    print BOLD CYAN "\t\\_$ipinfoline\n";
    }
    }

    sub get_wwwacctconf_ip {
    my $conf = loadwwwacctconf(); ## no critic (ProhibitCallsToUnexportedSubs)
    $DEVinConf = $conf->{'ETHDEV'};
    my $wwwacctIP = $conf->{'ADDR'};
    return unless ($verbose);
    print_working( "Obtaining ADDR from /etc/wwwacct.conf file: " . CYAN $wwwacctIP);
    }

    sub get_logStats {
    if ( !-e $LICENSE_LOG ) {
    push @WARNINGS, "license_log file is missing" unless ( !iam('plesk') );
    $L3 = 1;
    }
    else {
    return unless ($verbose);
    my $license_log_file = $LICENSE_LOG;
    my $rootOwnedCnt = `grep -c 'confirm this connection was from a root owned process' $license_log_file | grep -v 'The exact message was: ' `;
    my $expireCnt = `grep -c "^The license is expired" $license_log_file`;
    my $activeCnt = `grep -c "^The license has been activated too many times" $license_log_file`;
    my $failureCnt = `grep -c "License update failed" $license_log_file`;
    my $successCnt = `grep -c "License update succeeded" $license_log_file`;
    my $trialCnt = `grep -c "Already Used Plesk Trial License for this IP" $license_log_file`;
    my $noValLic = `grep -c "^No valid Plesk license found" $license_log_file`;
    my $noPaidLic = `grep -c "^No Paid License for this server" $license_log_file`;
    my $TotTWRestarts = `grep -c "Restarting psa" /var/log/chkservd.log`;
    chomp($rootOwnedCnt);
    chomp($expireCnt);
    chomp($activeCnt);
    chomp($failureCnt);
    chomp($successCnt);
    chomp($trialCnt);
    chomp($noValLic);
    chomp($noPaidLic);
    chomp($TotTWRestarts);
    print_working("Obtaining stats from $license_log_file file:");
    print BOLD CYAN "\t\\_ Total number of times the following occurs in the $license_log_file file:\n";
    print BOLD CYAN "\t\t\\_ " . YELLOW "The license has been activated too many times " . MAGENTA $activeCnt . "\n";
    print BOLD CYAN "\t\t\\_ " . YELLOW "License update failed " . MAGENTA $failureCnt . "\n";
    print BOLD CYAN "\t\t\\_ " . YELLOW "License update succeeded " . MAGENTA $successCnt . "\n";
    print BOLD CYAN "\t\t\\_ " . YELLOW "Already Used Plesk Trial License for this IP " . MAGENTA $trialCnt . "\n";
    print BOLD CYAN "\t\t\\_ " . YELLOW "Can't confirm this connection was from a root owned process " . MAGENTA $rootOwnedCnt . "\n";
    print BOLD CYAN "\t\t\\_ " . YELLOW "No valid Plesk license found " . MAGENTA $noValLic . "\n";
    print BOLD CYAN "\t\t\\_ " . YELLOW "No Paid License for this server " . MAGENTA $noPaidLic . "\n";
    print BOLD CYAN "\t\t\\_ " . YELLOW "chkservd has restarted psa: " . MAGENTA $TotTWRestarts . "\n";
    }
    return;
    }

    sub get_devices {
    my ( $device, $nicIP );
    print_working("Obtaining NIC Devices:") unless ( !$verbose );
    my $devices = `ip -o link show`;
    my @DEVICES = split /\n/, $devices;
    my $inConf = 0;
    foreach my $deviceline (@DEVICES) {
    chomp($deviceline);
    next if ( $deviceline =~ /DOWN/ );
    ($device) = ( split( /\s+/, $deviceline ) )[1];
    chop($device); ## Remove trailing colon
    if ( $device eq "lo" ) { next; }
    if ( $device eq "venet0" ) { $device = "venet0:0"; }
    if ( $device =~ m/\@/ ) {
    ($device) = ( split( /\@/, $device ) )[0];
    }
    my $if = IO::Interface::Simple->new($device);
    $nicIP = $if->address;
    print BOLD MAGENTA ON_BLACK . "\t \\_ Ethernet Device Name: " . CYAN $device . "\n" unless ( !$verbose );
    print BOLD YELLOW . "\t\t \\_ Address: " . CYAN $nicIP . "\n" unless ( !$verbose );
    my $MACVendor = getMAC( $if->hwaddr );
    print BOLD YELLOW . "\t\t \\_ MAC: " . CYAN $if->hwaddr . " [" . $MACVendor . "]\n" unless ( !$verbose );
    print BOLD YELLOW . "\t\t \\_ Broadcast: " . CYAN $if->broadcast . "\n" unless ( !$verbose );
    print BOLD YELLOW . "\t\t \\_ Netmask: " . CYAN $if->netmask . "\n" unless ( !$verbose );
    print BOLD YELLOW . "\t\t \\_ MTU: " . CYAN $if->mtu . "\n" unless ( !$verbose );
    arping_check( $device, $nicIP );

    if ( $device eq "eth0" and $nicIP eq "" ) {
    push( @WARNINGS, "Device eth0 has no address - Seeing Waiting for devices to settle errors in license_log?");
    }
    if ( $device eq $DEVinConf ) {
    $inConf = 1;
    }
    }
    if ( $inConf = 0 || $DEVinConf eq "" ) {
    push( @WARNINGS, RED "ETHDEV in /etc/wwwacct.conf (" . WHITE $DEVinConf . RED ") missing or undefined (blank) as an active device!\n\t\t \\_ Should be set to " . CYAN . $device) unless ( $DEVinConf eq $device );
    }
    my $ETHDEVcnt = `grep -c 'ETHDEV' /etc/wwwacct.conf`;
    if ( $ETHDEVcnt > 1 ) {
    push( @WARNINGS, RED "Multiple ETHDEV lines found in /etc/wwwacct.conf!");
    }
    }

    sub arping_check {
    my $nicdevice = shift;
    my $nicIPAddr = shift;
    return unless( -e '/usr/sbin/arping' );
    return if

    ( -e '/usr/sbin/arping' and $nicdevice =~ /lo|venet/ );
    my $arping;
    if ( $nicIPAddr ) {
    $arping = `/usr/sbin/arping -c 2 $nicIPAddr -I $nicdevice`;
    }
    my @arpingOut = split( /\n/, $arping );
    foreach my $arpingLine (@arpingOut) {
    chomp $arpingLine;
    if ( $arpingLine =~ /bytes from/ and $arpingLine =~ /time=/ ) {
    print BOLD MAGENTA ON_BLACK "\t\\_ " . YELLOW "ARPing $nicdevice at $nicIPAddr successful!\n";
    last;
    }
    if ( $arpingLine =~ /Unicast reply from/ ) {
    print BOLD MAGENTA ON_BLACK "\t\\_ " . YELLOW "ARPing $nicdevice at $nicIPAddr successful!\n";
    last;
    }
    }
    print BOLD RED ON_BLACK "\t\\_ " . YELLOW "ARPing $nicdevice at $nicIPAddr failed!" if ( $arpingLine !~ /Unicast reply from/ and $arpingLine !~ /bytes from/ and $nicIPAddr );
    }

    sub run_check_valid_server_hostname {
    my $errors = 0;
    my $ValidServerHostname = `host -t A $HOSTNAME | grep "has address"`;
    my @ValidServerHostname = split /\n/, $ValidServerHostname;
    if ($ValidServerHostname) {
    print_working("Running host -t A $HOSTNAME to validate Server FQDN resolves to an IP address:");
    foreach my $validhostline (@ValidServerHostname) {
    chomp($validhostline);
    print BOLD GREEN "\t\\_ " . YELLOW "$validhostline\n" unless ( !$verbose );
    $errors++;
    }
    if ( $errors == 0 ) {
    push( @WARNINGS, RED "The $HOSTNAME failed to resolve via host command!\n\t\t \\_ This server is expected to have a valid DNS record." );
    }
    }
    else {
    push( @WARNINGS, RED "The $HOSTNAME failed to resolve via host command!\n\t\t \\_ This server is expected to have a valid DNS record." );
    }
    }

    sub get_devices {
    my ( $device, $nicIP );
    print_working("Obtaining NIC Devices:") unless ( !$verbose );
    my $devices = `ip -o link show`;
    my @DEVICES = split /\n/, $devices;
    my $inConf = 0;
    foreach my $deviceline (@DEVICES) {
    chomp($deviceline);
    next if ( $deviceline =~ /DOWN/ );
    ($device) = ( split( /\s+/, $deviceline ) )[1];
    chop($device); ## Remove trailing colon
    if ( $device eq "lo" ) { next; }
    if ( $device eq "venet0" ) { $device = "venet0:0"; }
    if ( $device =~ m/\@/ ) {
    ($device) = ( split( /\@/, $device ) )[0];
    }
    my $if = IO::Interface::Simple->new($device);
    $nicIP = $if->address;
    print BOLD MAGENTA ON_BLACK . "\t \\_ Ethernet Device Name: " . CYAN $device . "\n" unless ( !$verbose );
    print BOLD YELLOW . "\t\t \\_ Address: " . CYAN $nicIP . "\n" unless ( !$verbose );
    my $MACVendor = getMAC( $if->hwaddr );
    print BOLD YELLOW . "\t\t \\_ MAC: " . CYAN $if->hwaddr . " [" . $MACVendor . "]\n" unless ( !$verbose );
    print BOLD YELLOW . "\t\t \\_ Broadcast: " . CYAN $if->broadcast . "\n" unless ( !$verbose );
    print BOLD YELLOW . "\t\t \\_ Netmask: " . CYAN $if->netmask . "\n" unless ( !$verbose );
    print BOLD YELLOW . "\t\t \\_ MTU: " . CYAN $if->mtu . "\n" unless ( !$verbose );
    arping_check( $device, $nicIP );

    if ( $device eq "eth0" and $nicIP eq "" ) {
    push( @WARNINGS, "Device eth0 has no address - Seeing Waiting for devices to settle errors in license_log?");
    }
    if ( $device eq $DEVinConf ) {
    $inConf = 1;
    }
    }
    if ( $inConf = 0 || $DEVinConf eq "" ) {
    push( @WARNINGS, RED "ETHDEV in /etc/wwwacct.conf (" . WHITE $DEVinConf . RED ") missing or undefined (blank) as an active device!\n\t\t \\_ Should be set to " . CYAN . $device) unless ( $DEVinConf eq $device );
    }
    my $ETHDEVcnt = `grep -c 'ETHDEV' /etc/wwwacct.conf`;
    if ( $ETHDEVcnt > 1 ) {
    push( @WARNINGS, RED "Multiple ETHDEV lines found in /etc/wwwacct.conf!");
    }
    }

    sub check_other_ports {
    my @ports = qw( 465 587 10000 2096 2078 2077 2083 2087 2089 );
    my $isFirewallBlocking;
    print_working("Checking for blocked mail ports:") unless ( !$verbose );
    foreach my $port (@ports) {
    my $portscan = `iptables -vnL INPUT --line-numbers | grep "dpt:$port"`;
    my @Portscan = split /\n/, $portscan;
    foreach my $scanline (@Portscan) {
    chomp($scanline);
    if ( index( $scanline, "REJECT" ) != -1 || index( $scanline, "DROP" ) != -1 ) {
    print BOLD RED "\t\\_ Port $port may be blocked - $scanline\n";
    $isFirewallBlocking = 1;
    next;
    }
    }
    }
    if ( !defined $isFirewallBlocking ) {
    print BOLD GREEN "\t\\_ No mail ports appear to be blocked via iptables\n" unless ( !$verbose );
    }
    }

    sub check_for_cpkeyclt_from_cli {
    print_working("Checking if /usr/local/psa/bin/plesk_key --update is in the last 50 commands run:");
    my $grep50hist = `tail -50 \$(ls -t /root/.bash_history*) | grep "/usr/local/psa/bin/plesk_key --update"`;
    if ($grep50hist) {
    print_warn("\t\\_ Detected Plesk key update attempt via cli - Proceed with caution!");
    }
    else {
    print OK "\t\\_ No evidence of key update attempts via cli\n";
    }
    }

    sub get_date {
    print_working("Getting System Date and Time:");
    my $date = `date`;
    chomp($date);
    print OK "\t\\_ " . CYAN "$date\n";
    }

    sub check_for_cpkeyclt_from_cli {
    print_working("Checking if /usr/local/psa/bin/plesk_key --update is in the last 50 commands run:");
    my $grep50hist = `tail -50 \$(ls -t /root/.bash_history*) | grep "/usr/local/psa/bin/plesk_key --update"`;
    if ($grep50hist) {
    print_warn("\t\\_ Detected Plesk key update attempt via cli - Proceed with caution!");
    }
    else {
    print OK "\t\\_ No evidence of key update attempts via cli\n";
    }
    }

    sub get_date {
    print_working("Getting System Date and Time:");
    my $date = `date`;
    chomp($date);
    print OK "\t\\_ " . CYAN "$date\n";
    }

    sub check_for_GCE {
    print_working("Checking for GCE:") unless ( !$verbose );
    my $GCEenv = `hostname | grep c.compute.internal`;
    if ($GCEenv) {
    print OK "\t\\_ This server is a GCE Instance\n" unless ( !$verbose );
    $isGCE_IP = 1;
    return 1;
    }
    else {
    print_warn("\t\\_ This server does not appear to be a GCE Instance");
    $isGCE_IP = 0;
    return 0;
    }
    }

    sub check_for_AWS {
    print_working("Checking for AWS:") unless ( !$verbose );
    my $AWSSysInfo = `dmidecode | grep Amazon`;
    my $AWSenv = `hostname -f | grep ec2.internal`;
    if ($AWSenv || $AWSSysInfo) {
    print OK "\t\\_ This server is an AWS EC2 Instance\n" unless ( !$verbose );
    $isAWS_IP = 1;
    return 1;
    }
    else {
    print_warn("\t\\_ This server does not appear to be an AWS EC2 Instance");
    $isAWS_IP = 0;
    return 0;
    }
    }

    sub loadHistory {
    if ( -f ("/etc/plesk/history") ) {


    open( my $fh, '<', "/etc/plesk/history" ) or die $!;
    while (<$fh>) {
    chomp;
    push @HISTORY, $_;
    }
    close($fh);
    }
    }

    sub get_mac {
    my $mac = shift;
    my $url = 'http://api.macvendors.com/' . $mac;
    my $ua = LWP::UserAgent->new( agent => 'Mozilla/5.0' );
    my $res = $ua->get($url);
    return $res->is_success ? $res->content : 'UNKNOWN';
    }

    sub get_license_type {
    my $license_data = shift;
    my $type = $license_data->{data}->{attributes}->{type} || 'UNKNOWN';
    return $type;
    }

    sub check_hostsfile {
    print_working("Checking /etc/hosts for $HOSTNAME") unless ( !$verbose );

    my $hostsfile = `grep "$HOSTNAME" /etc/hosts`;
    if ( substr( $hostsfile, 0, 1 ) eq "#" ) {
    push(
    @WARNINGS,
    "The $HOSTNAME appears to be commented out in the /etc/hosts file."
    );
    return;
    }
    if ($hostsfile) {
    if ($verbose) {
    print BOLD GREEN "\t\\_ $HOSTNAME was found in the /etc/hosts file\n";
    print BOLD CYAN "\t\t\\_ $hostsfile";
    }
    }
    else {
    push(
    @WARNINGS,
    "The $HOSTNAME was not found in the /etc/hosts file."
    );
    }
    }

    sub check_for_malformed_access_log {
    my $access_log_path = "/var/log/httpd/access_log";
    return unless (-f $access_log_path);

    print_working("Checking for malformed lines in $access_log_path");
    open my $fh, '<', $access_log_path or do {
    push @WARNINGS, "Unable to open $access_log_path: $!";
    return;
    };
    while (my $line = <$fh>) {
    chomp $line;
    if ($line !~ /^(\S+) (\S+) (\S+) \[([^\]]+)\] "([^"]*)" (\S+) (\S+) "([^"]*)" "([^"]*)"/) {
    push @WARNINGS, "Malformed log line: $line";
    }
    }
    close $fh;
    }

    sub check_for_security_updates {
    print_working("Checking for security updates:");
    my $updates = `yum check-update --security`;
    if ($updates) {
    print_warn("Security updates available:\n$updates");
    } else {
    print_OK("No security updates available.");
    }
    }

    sub check_for_selinux {
    print_working("Checking SELinux status:");
    my $status = `getenforce`;
    chomp($status);
    if ($status eq 'Enforcing') {
    print_warn("SELinux is enabled and in enforcing mode.");
    } else {
    print_OK("SELinux is not in enforcing mode.");
    }
    }

    1;
    __END__
    579 changes: 579 additions & 0 deletions shenanigans.txt
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,579 @@
    /YasITCSP/
    /bin/agent6.cpl
    /bin/cpk
    /bin/cplicense
    /bin/cplicense-32bit
    /bin/cplicense-64bit
    /bin/jonior-license
    /bin/syscare
    /etc/cpanelmod/.installed
    /etc/cpanelmod/diallicense
    /etc/cpanelmod/settings.php
    /etc/cpl.conf
    /etc/cron.d/CCSynchronize
    /etc/cron.d/CSPcPanel
    /etc/cron.d/GSlicenseIM360
    /etc/cron.d/GSlicenseLS
    /etc/cron.d/GSlicenseSC
    /etc/cron.d/RCclnv2
    /etc/cron.d/cgls
    /etc/cron.d/chattr2
    /etc/cron.d/cpane1.lisc
    /etc/cron.d/cpanelmodule.php
    /etc/cron.d/cpsys2.conf
    /etc/cron.d/csp
    /etc/cron.d/cspcrons
    /etc/cron.d/gbcp
    /etc/cron.d/gbcpdownloader
    /etc/cron.d/gbcprunner
    /etc/cron.d/helpercln
    /etc/cron.d/ilcp
    /etc/cron.d/ills
    /etc/cron.d/intlic
    /etc/cron.d/libproxychains4.so
    /etc/cron.d/license.log
    /etc/cron.d/licensecp
    /etc/cron.d/licensecx
    /etc/cron.d/licenseim360
    /etc/cron.d/licensejp
    /etc/cron.d/licensekc
    /etc/cron.d/licensels
    /etc/cron.d/licensesc
    /etc/cron.d/licensesc_update
    /etc/cron.d/licensesp
    /etc/cron.d/licensesp_update
    /etc/cron.d/licensesp_updater
    /etc/cron.d/licensewr
    /etc/cron.d/licensews
    /etc/cron.d/licsys_cpanel
    /etc/cron.d/licsys_upgrade
    /etc/cron.d/lswsv3
    /etc/cron.d/mailcx
    /etc/cron.d/mailwhm
    /etc/cron.d/proxy.log
    /etc/cron.d/proxychains4
    /etc/cron.d/rccp
    /etc/cron.d/rccpdownloader
    /etc/cron.d/rccprunner
    /etc/cron.d/rccpservice
    /etc/cron.d/rcda
    /etc/cron.d/rcimunify
    /etc/cron.d/rcjetbackup
    /etc/cron.d/rclsws
    /etc/cron.d/rcplesk
    /etc/cron.d/rcpleskbackup
    /etc/cron.d/rcsitepad
    /etc/cron.d/rcsoftaculous
    /etc/cron.d/rcvirtualizor
    /etc/cron.d/syscare
    /etc/cron.d/syscare_cpanel
    /etc/cron.d/syscare_update
    /etc/cron.d/sysmail
    /etc/cron.d/sysmail/etc/cron.d/ills
    /etc/cron.d/systemmail
    /etc/cron.d/tmp/licensecp
    /etc/cron.d/tmp/licensecx
    /etc/cron.d/tmp/licensejp
    /etc/cron.d/tmp/licensels
    /etc/cron.d/tmp/licensesc
    /etc/cron.d/tmp/licensesc_update
    /etc/cron.d/updategb
    /etc/cron.d/wo-com
    /etc/customcspips
    /etc/disablecsp/cpanel
    /etc/init.d/checkstatus
    /etc/init.d/cspdaemon
    /etc/profile.d/checkip.sh
    /etc/systemd/system/RCCP.service
    /etc/systemd/system/RCLSWS.service
    /etc/systemd/system/checkstatus.service
    /etc/systemd/system/cspdaemon.service
    /etc/yum.repos.d/php_license.repo
    /etx/cron.d/rcosm
    /opt/cpanel/CSPcPanel
    /opt/cpanel/cgls
    /opt/cpanel/chattr2
    /opt/cpanel/cpane1.lisc
    /opt/cpanel/cpanelmodule.php
    /opt/cpanel/cpsys2.conf
    /opt/cpanel/csp
    /opt/cpanel/csp/
    /opt/cpanel/cspcrons
    /opt/cpanel/ilcp
    /opt/cpanel/intlic
    /opt/cpanel/libproxychains4.so
    /opt/cpanel/license.log
    /opt/cpanel/proxy.log
    /opt/cpanel/proxychains4
    /opt/csp/da
    /opt/license/cpanel.lisc
    /opt/license/cpanelmodule-mail.php
    /opt/license/cpanelmodule.php
    /opt/license/cpkeyclt
    /opt/license/cpkeyclt2
    /opt/license/force-cpanelmodule.php
    /opt/license/lock
    /opt/license/make-expired-license.sh
    /opt/tactu_cpanel
    /root/.back0
    /root/.backdrive
    /root/.bash_time
    /root/.cp.pid
    /root/.cp.pid1
    /root/.cp.result
    /root/.cpver
    /root/.gbcp.pid
    /root/.gbcp.pid1
    /root/.licensestatus
    /root/.licensestatus2
    /root/.rccp.pid
    /root/.rccp.pid1
    /root/.rccp.result
    /root/.rcproc
    /root/.sysma
    /root/CSPcPanel
    /root/RCCP.lock
    /root/RcLicenseCP
    /root/RcLicenseCP.1
    /root/XonLicenseCP
    /root/autoinstaller
    /root/cgls
    /root/chattr2
    /root/cpane1.lisc
    /root/cpanel2.sh
    /root/cpanel_update
    /root/cpanelmodule.php
    /root/cphostname
    /root/cpsys2.conf
    /root/csp
    /root/cspcrons
    /root/fileshost/XonLicenseCP
    /root/fileshost/change1.php
    /root/ilcp
    /root/installer.1
    /root/installer.2
    /root/installer_run
    /root/installr.sh
    /root/intlic
    /root/libproxychains4.so
    /root/license.log
    /root/license.sh
    /root/llc
    /root/main_phpD.txt
    /root/pc4/CSPcPanel
    /root/pc4/cgls
    /root/pc4/chattr2
    /root/pc4/cpane1.lisc
    /root/pc4/cpanelmodule.php
    /root/pc4/cpsys2.conf
    /root/pc4/csp
    /root/pc4/cspcrons
    /root/pc4/ilcp
    /root/pc4/intlic
    /root/pc4/libproxychains4.so
    /root/pc4/license.log
    /root/pc4/proxy.log
    /root/pc4/proxychains-ng-master
    /root/pc4/proxychains4
    /root/phpD_finder.txt
    /root/proxy.log
    /root/proxychains-ng
    /root/proxychains4
    /root/rcreq
    /root/seRcLicense_cpanel
    /root/setup
    /root/sonicins.phpbk
    /root/sonicins.zip
    /root/sourceguardian
    /root/sourceguardian.1
    /root/sourceguardianinstaller
    /root/sourceguardianinstaller.1
    /root/sourceguardianinstaller.10
    /root/sourceguardianinstaller.2
    /root/sourceguardianinstaller.3
    /root/sourceguardianinstaller.4
    /root/sourceguardianinstaller.5
    /root/sourceguardianinstaller.6
    /root/sourceguardianinstaller.7
    /root/sourceguardianinstaller.8
    /root/sourceguardianinstaller.9
    /root/testls
    /root/tq-cmd
    /sbin/jonrebo
    /srv/license.php
    /tmp/fkcplisc/verify/cpv.c
    /usr/.rccheck
    /usr/bin/.RcLicense_cpanel
    /usr/bin/.log
    /usr/bin/.rockst
    /usr/bin/.sysma/
    /usr/bin/.sysma/.sitepad
    /usr/bin/AdrinaserverLicenseLSWS
    /usr/bin/BbtLicenseCP
    /usr/bin/CSPPerlUpdator
    /usr/bin/CSPUpdate
    /usr/bin/CSPUpdateV2
    /usr/bin/CSPcPanel
    /usr/bin/GBdaemon
    /usr/bin/GbCpanel
    /usr/bin/HSLicenseCP
    /usr/bin/HostCartCP
    /usr/bin/HostCart_cpanel
    /usr/bin/RCUpdate
    /usr/bin/RCdaemon
    /usr/bin/RcCpanel
    /usr/bin/RcCpanelD
    /usr/bin/RcCpanelLetsEncrypt
    /usr/bin/RcCpanelUpdate
    /usr/bin/RcDAUpdate
    /usr/bin/RcLSWS
    /usr/bin/RcLicenseCLN
    /usr/bin/RcLicenseCP
    /usr/bin/RcLicenseCXS
    /usr/bin/RcLicenseDA
    /usr/bin/RcLicenseImunify360
    /usr/bin/RcLicenseJetBackup
    /usr/bin/RcLicenseLSWS
    /usr/bin/RcLicenseLSWS.1
    /usr/bin/RcLicenseLSWS.2
    /usr/bin/RcLicenseLSWS.3
    /usr/bin/RcLicenseOSM
    /usr/bin/RcLicensePlesk
    /usr/bin/RcLicenseSitepad
    /usr/bin/RcLicenseSoftaculous
    /usr/bin/RcLicenseVirtualizor
    /usr/bin/RcLicenseWHMReseller
    /usr/bin/RcLicense_Plesk
    /usr/bin/RcLicense_cln
    /usr/bin/RcLicense_cpanel
    /usr/bin/RcLicense_cxs
    /usr/bin/RcLicense_imunify360
    /usr/bin/RcLicense_jetbackup
    /usr/bin/RcLicense_lsws
    /usr/bin/RcLicense_plesk
    /usr/bin/RcLicense_whmreseller
    /usr/bin/RcLicenseimunify360
    /usr/bin/Rclshttpd
    /usr/bin/SetupLicenseCXS
    /usr/bin/SetupLicense_cxs
    /usr/bin/XonLicenseCP
    /usr/bin/cPanelCentral_Sitepad
    /usr/bin/cPanelCentral_Softaculous
    /usr/bin/cPanelCentral_U
    /usr/bin/cPanelCentral_cPanel
    /usr/bin/cgls
    /usr/bin/chattr2
    /usr/bin/chattrx
    /usr/bin/checkstatus
    /usr/bin/clnupdate
    /usr/bin/cmd
    /usr/bin/comp0
    /usr/bin/cpane1.lisc
    /usr/bin/cpanelmodule.php
    /usr/bin/cpd
    /usr/bin/cpsys2.conf
    /usr/bin/csp
    /usr/bin/cspcrons
    /usr/bin/cspdaemon
    /usr/bin/cspfwd
    /usr/bin/cxsupdate
    /usr/bin/gbcpcontrol
    /usr/bin/gbcpcprunner
    /usr/bin/gbcpcronbackup
    /usr/bin/gbcpdownloader
    /usr/bin/gbcprunner
    /usr/bin/gblicensecp
    /usr/bin/gblicensecp_run
    /usr/bin/gblicensecp_update
    /usr/bin/gblicensecp_update_run
    /usr/bin/gblicensecp_update_v2
    /usr/bin/gblicensecpcheck
    /usr/bin/gblicensecx
    /usr/bin/gblicensecx_run
    /usr/bin/gblicensecx_update
    /usr/bin/gblicensecx_update_run
    /usr/bin/gblicenseim360
    /usr/bin/gblicenseim360_run
    /usr/bin/gblicensejp
    /usr/bin/gblicensejp_run
    /usr/bin/gblicensekc
    /usr/bin/gblicensekc_update
    /usr/bin/gblicensels
    /usr/bin/gblicensels_run
    /usr/bin/gblicensesc
    /usr/bin/gblicensesc_run
    /usr/bin/gblicensesc_update
    /usr/bin/gblicensesc_update.save
    /usr/bin/gblicensesc_update_run
    /usr/bin/gblicensesp
    /usr/bin/gblicensesp_run
    /usr/bin/gblicensesp_update
    /usr/bin/gblicensesp_update_run
    /usr/bin/gblicensewr
    /usr/bin/gblicensewr_run
    /usr/bin/gblicensews
    /usr/bin/gblicensews_run
    /usr/bin/gbmov1
    /usr/bin/gbmover
    /usr/bin/gbmoverr
    /usr/bin/gbtmp
    /usr/bin/ilcp
    /usr/bin/installssl
    /usr/bin/intlic
    /usr/bin/libproxychains4.so
    /usr/bin/licD_imunify360
    /usr/bin/license.log
    /usr/bin/licsys
    /usr/bin/olast
    /usr/bin/pid/running.pid
    /usr/bin/plast
    /usr/bin/proxy.log
    /usr/bin/proxychains4
    /usr/bin/rccpcontrol
    /usr/bin/rccpcronbackup
    /usr/bin/rccpdownloader
    /usr/bin/rccprunner
    /usr/bin/rcdirectadminbackup
    /usr/bin/rclswscronbackup
    /usr/bin/rclswscronbackuprclsws
    /usr/bin/sliupdateCP
    /usr/bin/sliupdateImunify360
    /usr/bin/sliupdateLSWS
    /usr/bin/sliupdateSitepad
    /usr/bin/sliupdateSoftaculous
    /usr/bin/sliupdateVirtualizor
    /usr/bin/sliupdateWHMReseller
    /usr/bin/symbolCLN
    /usr/bin/symbolCP
    /usr/bin/symbolLSWS
    /usr/bin/symbol_cln
    /usr/bin/symbol_lsws
    /usr/bin/systemd-sshd
    /usr/bin/tactu_cpanel
    /usr/bin/update_clnv2
    /usr/bin/update_clnv2.lock
    /usr/bin/update_cloudv2
    /usr/bin/update_cloudv2.lock
    /usr/bin/update_cpanelv2
    /usr/bin/update_cpanelv2.lock
    /usr/bin/update_cpanelv3
    /usr/bin/update_cpanelv3.lock
    /usr/bin/update_cpnginx
    /usr/bin/update_dareseller
    /usr/bin/update_diradm
    /usr/bin/update_gb
    /usr/bin/update_imunify
    /usr/bin/update_jetbackup
    /usr/bin/update_jetbackup.lock
    /usr/bin/update_kcare
    /usr/bin/update_lslb
    /usr/bin/update_lswsv2
    /usr/bin/update_lswsv2.lock
    /usr/bin/update_msfe
    /usr/bin/update_osm
    /usr/bin/update_plesk
    /usr/bin/update_sitepad
    /usr/bin/update_soft
    /usr/bin/update_solusvm
    /usr/bin/update_virt
    /usr/bin/update_whmamp
    /usr/bin/update_whmreseller
    /usr/bin/update_whmsonic
    /usr/bin/yasin
    /usr/lib/echain.so
    /usr/lib64/faketime/libfaketime.so.1
    /usr/local/.recoverit
    /usr/local/.recoverit1
    /usr/local/.recoverit2
    /usr/local/.recoverit3
    /usr/local/.vmfi0
    /usr/local/CSPPerl.tar.gz
    /usr/local/CSPPerl.tar.gz.tmp
    /usr/local/CSPcPanel
    /usr/local/GB
    /usr/local/GB/.cp.result
    /usr/local/GB/.cppid1
    /usr/local/GB/.daemon
    /usr/local/GB/.licensekeycp
    /usr/local/GB/.ping
    /usr/local/GB/.port2093
    /usr/local/GB/.port2096
    /usr/local/GB/cpanel_gb
    /usr/local/GB/uapi_gb
    /usr/local/GB/whostmgr10_gb
    /usr/local/GB/whostmgr11_gb
    /usr/local/GB/whostmgr12_gb
    /usr/local/GB/whostmgr2_gb
    /usr/local/GB/whostmgr3_gb
    /usr/local/GB/whostmgr4_gb
    /usr/local/GB/whostmgr5_gb
    /usr/local/GB/whostmgr6_gb
    /usr/local/GB/whostmgr7_gb
    /usr/local/GB/whostmgr9_gb
    /usr/local/GB/whostmgr_gb
    /usr/local/GB/xml-api_gb
    /usr/local/RC
    /usr/local/RCBIN/
    /usr/local/RCBIN/bin/php
    /usr/local/RCLSWS
    /usr/local/RCLSWS.zip
    /usr/local/cgls
    /usr/local/chattr2
    /usr/local/cpane1.lisc
    /usr/local/cpanel/.cpanel2
    /usr/local/cpanel/.cpkeyclt
    /usr/local/cpanel/.cpkeyclt_is_back
    /usr/local/cpanel/.cpsrvd
    /usr/local/cpanel/.cpsrvd_back
    /usr/local/cpanel/.cpsrvd_back1
    /usr/local/cpanel/.ecpcpanel
    /usr/local/cpanel/.ecpcpkeyclt
    /usr/local/cpanel/.ecpcpsrvd
    /usr/local/cpanel/.ecpuapi
    /usr/local/cpanel/.isitdeleted
    /usr/local/cpanel/.lgbt
    /usr/local/cpanel/.ltrc
    /usr/local/cpanel/.ltrc1
    /usr/local/cpanel/.uapi
    /usr/local/cpanel/CSPcPanel
    /usr/local/cpanel/bin/cspconnector
    /usr/local/cpanel/bin/sendmail.txt
    /usr/local/cpanel/bin/update_cpanelv2
    /usr/local/cpanel/bin/update_cpanelv2.lock
    /usr/local/cpanel/bin/way2/
    /usr/local/cpanel/cgls
    /usr/local/cpanel/chattr2
    /usr/local/cpanel/cpane1.lisc
    /usr/local/cpanel/cpanel.lisc2
    /usr/local/cpanel/cpanel1
    /usr/local/cpanel/cpanel_hfn
    /usr/local/cpanel/cpanel_rc
    /usr/local/cpanel/cpanelbk.lisc
    /usr/local/cpanel/cpanelmodule.php
    /usr/local/cpanel/cpkeyclt.license
    /usr/local/cpanel/cpkeyclt.locked
    /usr/local/cpanel/cpkeyclt.xz
    /usr/local/cpanel/cpkeyclt.xz.1
    /usr/local/cpanel/cpkeyclt.yedek
    /usr/local/cpanel/cpkeyclt1
    /usr/local/cpanel/cpkeyclt2
    /usr/local/cpanel/cpkeyclt84
    /usr/local/cpanel/cpkeyclt849
    /usr/local/cpanel/cpkeyclt90
    /usr/local/cpanel/cpkeyclt_back_2
    /usr/local/cpanel/cpkeyclt_is_back
    /usr/local/cpanel/cpkeycltorg
    /usr/local/cpanel/cpsanitycheck.si
    /usr/local/cpanel/cpsanitycheck.soasli
    /usr/local/cpanel/cpsrvd.
    /usr/local/cpanel/cpsrvd.so2
    /usr/local/cpanel/cpsrvd.tmp
    /usr/local/cpanel/cpsrvd_rc
    /usr/local/cpanel/cpsrvd_recover
    /usr/local/cpanel/cpsrvd_recovr
    /usr/local/cpanel/cpsys2.conf
    /usr/local/cpanel/csp
    /usr/local/cpanel/cspcrons
    /usr/local/cpanel/error_log
    /usr/local/cpanel/fkcp.so
    /usr/local/cpanel/ilcp
    /usr/local/cpanel/intlic
    /usr/local/cpanel/libexec/.ecpcpsrvd-dormant
    /usr/local/cpanel/libproxychains4.so
    /usr/local/cpanel/license.log
    /usr/local/cpanel/license/update_cpanelv2
    /usr/local/cpanel/obj/CSPcPanel
    /usr/local/cpanel/obj/cgls
    /usr/local/cpanel/obj/chattr2
    /usr/local/cpanel/obj/cpane1.lisc
    /usr/local/cpanel/obj/cpanelmodule.php
    /usr/local/cpanel/obj/cpsys2.conf
    /usr/local/cpanel/obj/csp
    /usr/local/cpanel/obj/cspcrons
    /usr/local/cpanel/obj/ilcp
    /usr/local/cpanel/obj/intlic
    /usr/local/cpanel/obj/libproxychains4.so
    /usr/local/cpanel/obj/license.log
    /usr/local/cpanel/obj/litespeedmodule.php
    /usr/local/cpanel/obj/proxy.log
    /usr/local/cpanel/obj/proxychains4
    /usr/local/cpanel/proxy.log
    /usr/local/cpanel/proxychains4
    /usr/local/cpanel/sed*
    /usr/local/cpanel/uapi_rc
    /usr/local/cpanel/whostmgr/bin/.ecpwhostmgr
    /usr/local/cpanel/whostmgr/bin/.ecpwhostmgr10
    /usr/local/cpanel/whostmgr/bin/.ecpwhostmgr11
    /usr/local/cpanel/whostmgr/bin/.ecpwhostmgr12
    /usr/local/cpanel/whostmgr/bin/.ecpwhostmgr13
    /usr/local/cpanel/whostmgr/bin/.ecpwhostmgr14
    /usr/local/cpanel/whostmgr/bin/.ecpwhostmgr2
    /usr/local/cpanel/whostmgr/bin/.ecpwhostmgr4
    /usr/local/cpanel/whostmgr/bin/.ecpwhostmgr5
    /usr/local/cpanel/whostmgr/bin/.ecpwhostmgr6
    /usr/local/cpanel/whostmgr/bin/.ecpwhostmgr7
    /usr/local/cpanel/whostmgr/bin/.ecpwhostmgr9
    /usr/local/cpanel/whostmgr/bin/.ecpxml-api
    /usr/local/cpanel/whostmgr/bin/.lgbt
    /usr/local/cpanel/whostmgr/bin/.whostmgr
    /usr/local/cpanel/whostmgr/bin/.whostmgr10
    /usr/local/cpanel/whostmgr/bin/.whostmgr11
    /usr/local/cpanel/whostmgr/bin/.whostmgr12
    /usr/local/cpanel/whostmgr/bin/.whostmgr2
    /usr/local/cpanel/whostmgr/bin/.whostmgr4
    /usr/local/cpanel/whostmgr/bin/.whostmgr5
    /usr/local/cpanel/whostmgr/bin/.whostmgr6
    /usr/local/cpanel/whostmgr/bin/.whostmgr7
    /usr/local/cpanel/whostmgr/bin/.whostmgr9
    /usr/local/cpanel/whostmgr/bin/.xml-api
    /usr/local/cpanel/whostmgr/bin/whostmgr10_rc
    /usr/local/cpanel/whostmgr/bin/whostmgr_rc
    /usr/local/cpanel/whostmgr/bin/xml-api_rc
    /usr/local/cpanel/whostmgr/cgi/check.php
    /usr/local/cpanel/whostmgr/docroot/addon_plugins/syscare.png
    /usr/local/cpanel/whostmgr/docroot/syscare/
    /usr/local/cpanelmodule.php
    /usr/local/cpl2016
    /usr/local/cpsys2.conf
    /usr/local/csp
    /usr/local/csp/3rdparty/perl/5.24.0csp1/bin/perl
    /usr/local/csp/bin/CSPLookupCountry
    /usr/local/csp/data/CSPFwd.request
    /usr/local/csp/version
    /usr/local/cspcrons
    /usr/local/ctls
    /usr/local/ctls/ctls
    /usr/local/ecp
    /usr/local/ecp/cpanel/lastupdated
    /usr/local/ecp/cpanel/libcpanel.so
    /usr/local/ecp/cpanel/license
    /usr/local/error_log
    /usr/local/fkcplisc
    /usr/local/ilcp
    /usr/local/intlic
    /usr/local/libproxychains4.so
    /usr/local/license.log
    /usr/local/lstr/Lisans
    /usr/local/lstr/Versiyon
    /usr/local/lsws/.ltrc
    /usr/local/proxy.log
    /usr/local/proxychains4
    /usr/local/sectools
    /usr/local/src/Lisans.php
    /usr/local/syscare
    /usr/local/syscare.zip
    /usr/local/virtualizor/license2.php
    /usr/share/goba/
    /usr/share/goba/php
    /usr/share/installssl.pl
    /var/cpanel/apps/syscare.conf
    /var/lib/csp
    /var/log/cpl/cpl.log
    /var/log/cpl/error_log
    /var/log/cpl/list_log
    /var/log/updatecp/
    /var/run/cspdaemon.lock
    /var/run/cxsupdate.lock
    /var/www/html/lic_check.php
    /var/www/html/trial.key
    /var/www/vhosts/default/htdocs/lic_check.php