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.
Complete rewrite of the cPanel cplicensets Perl script to support and work with the Plesk panel.

Use with caution, as no warranties or support are provided.

/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
#!/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__
/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
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment