#!/usr/local/cpanel/3rdparty/bin/perl # cpanel - scripts/upcp Copyright 2022 cPanel, L.L.C. # All rights reserved. # copyright@cpanel.net http://cpanel.net # This code is subject to the cPanel license. Unauthorized copying is prohibited package scripts::upcp; BEGIN { unshift @INC, q{/usr/local/cpanel}; # if we are being called with a compile check flag ( perl -c ), skip the begin block # so we don't actually call upcp.static when just checking syntax and such is OK return if $^C; # static never gets --use-checked and should pass all the begin block checks return if $0 =~ /\.static$/; # let the '--use-check' instance compiled if ( grep { $_ eq '--use-check' } @ARGV ) { no warnings; # dynamic definition of the INIT block eval "INIT { exit(0); }"; return; } system("$0 --use-check >/dev/null 2>&1"); # compilation is ok with '--use-check', we will continue the non static version return if $? == 0; my $static = $0 . ".static"; if ( -f $static ) { print STDERR "We determined that $0 had compilation issues..\n"; print STDERR "Trying to exec $static " . join( ' ', @ARGV ) . "\n"; exec( $^X, $static, @ARGV ); } } use cPstrict; no warnings; ## no critic qw(ProhibitNoWarnings) use Try::Tiny; use Cpanel::OS::All (); # PPI USE OK -- make sure Cpanel::OS is embedded use Cpanel::HiRes ( preload => 'perl' ); use Cpanel::Env (); use Cpanel::Update::IsCron (); use Cpanel::Update::Logger (); use Cpanel::FileUtils::TouchFile (); use Cpanel::LoadFile (); use Cpanel::LoadModule (); use Cpanel::Usage (); use Cpanel::UPID (); use IO::Handle (); use POSIX (); use Cpanel::Unix::PID::Tiny (); my $pidfile = '/var/run/upcp.pid'; my $lastlog = '/var/cpanel/updatelogs/last'; my $upcp_disallowed_path = '/root/.upcp_controlc_disallowed'; my $version_upgrade_file = '/usr/local/cpanel/upgrade_in_progress.txt'; our $logger; # Global for logger object. our $logfile_path; my $now; my $forced = 0; my $fromself = 0; my $sync_requested = 0; my $bg = 0; my $from_version; my $pbar_starting_point; exit( upcp() || 0 ) unless caller(); sub usage { print <<EOS; Usage: scripts/upcp [--bg] [--cron] [--force] [--help] [--log=[path]] [--sync] Updates cPanel & WHM. Options: --bg Runs upcp in the background. Output is only visible in the log. --cron Follow WHM's Update Preferences (/etc/cpupdate.conf). --force Force a reinstall even if the system is up to date. --help Display this documentation. --log=[path] Overrides the default log file. --sync Updates the server to the currently-installed version instead of downloading a newer version. This will also run other maintenance items, such as package updates and repairs. You cannot use the --sync argument with the --force argument. EOS exit 1; ## no critic(Cpanel::NoExitsFromSubroutines) -- /scripts/upcp needs refactor to use Getopt } sub upcp { ## no critic(Subroutines::ProhibitExcessComplexity) - preserve original code Cpanel::Usage::wrap_options( \@ARGV, \&usage, {} ); #display usage information on --help open( STDERR, ">&STDOUT" ) or die $!; local $| = 1; umask(0022); $now = time(); setupenv(); unset_rlimits(); ############################################################################# # Record the arguments used when started, check for certain flags my $update_is_available_exit_code = 42; my @retain_argv = @ARGV; foreach my $arg (@ARGV) { if ( $arg =~ m/^--log=(.*)/ ) { $logfile_path = $1; } elsif ( $arg eq '--fromself' ) { $fromself = 1; } elsif ( $arg eq '--force' ) { $forced = 1; $ENV{'FORCEDCPUPDATE'} = 1; } elsif ( $arg eq '--sync' ) { $sync_requested = 1; } elsif ( $arg eq '--bg' ) { $bg = 1; } } if ( $sync_requested && $forced ) { print "FATAL: --force and --sync are mutually exclusive commands.\n"; print " Force is designed to update your installed version, regardless of whether it's already up to date.\n"; print " Sync is designed to update the version already installed, regardless of what is available.\n"; return 1; } if ( $> != 0 ) { die "upcp must be run as root"; } ############################################################################# # Make sure easyapache isn't already running my $upid = Cpanel::Unix::PID::Tiny->new(); if ( $upid->is_pidfile_running('/var/run/easyapache.pid') ) { print "EasyApache is currently running. Please wait for EasyApache to complete before running cPanel Update (upcp).\n"; return 1; } ############################################################################# # Make sure we aren't already running && make sure everyone knows we are running my $curpid = $upid->get_pid_from_pidfile($pidfile) || 0; if ( $curpid && $curpid != $$ && !$fromself && -e '/var/cpanel/upcpcheck' ) { my $pidfile_mtime = ( stat($pidfile) )[9]; my $pidfile_age = ( time - $pidfile_mtime ); if ( $pidfile_age > 21600 ) { # Running for > 6 hours _logger()->warning("previous PID ($curpid) has been running more than 6 hours. Killing processes."); kill_upcp($curpid); # the pid_file_no_cleanup() will exit if it is still stuck after this sleep 1; # Give the process group time to die. } elsif ( my $logpath = _determine_logfile_path_if_running($curpid) ) { print _message_about_already_running( $curpid, $logpath ) . "\n"; return 1; } } if ( $curpid && $curpid != $$ && !$upid->is_pidfile_running($pidfile) ) { print "Stale PID file '$pidfile' (pid=$curpid)\n"; } if ( !$fromself && !$upid->pid_file_no_cleanup($pidfile) ) { print "process is already running\n"; return 1; } # to indicate re-entry into upcp $pbar_starting_point = $fromself ? 17 : 0; # record current version $from_version = fetch_cpanel_version(); ############################################################################# # Set up the upcp log directory and files setup_updatelogs(); ############################################################################# # Fork a child to the background. The child does all the heavy lifting and # logs to a file; the parent just watches, reads, and parses the log file, # displaying what it gets. # # Note that the parent reads the log in proper line-oriented -- and buffered! # -- fashion. An earlier version of this script did raw sysread() calls here, # and had to deal with all the mess that that entailed. The current approach # reaps all the benefits of Perl's and Linux's significant file read # optimizations without needing to re-invent any of them. The parent loop # below becomes lean, mean, and even elegant. # # Note in particular that we do not need to explicitly deal with an # end-of-file condition (other than avoiding using undefined data). For # exiting the read loop we merely need to test that the child has expired, # which in any case is the only situation that can cause an eof condition for # us on the file the child is writing. # # Note, too, that the open() needs to be inside this loop, in case the child # has not yet created the file. if ( !$fromself ) { # we need to be sure that log an pid are the current one when giving back the end unlink $lastlog if $bg; if ( my $updatepid = fork() ) { $logfile_path ||= _determine_logfile_path_if_running($updatepid); if ($logger) { # Close if logged about killing stale process. $logger->{'brief'} = 1; # Don't be chatty about closing $logger->close_log; } if ($bg) { print _message_about_newly_started( $updatepid, $logfile_path ) . "\n"; my $progress; select undef, undef, undef, .10; while ( !-e $lastlog ) { print '.'; select undef, undef, undef, .25; $progress = 1; } print "\n" if $progress; } else { monitor_upcp($updatepid); } return; } else { $logfile_path ||= _determine_logfile_path_if_running($$); } } local $0 = 'cPanel Update (upcp) - Slave'; open( my $RNULL, '<', '/dev/null' ) or die "Cannot open /dev/null: $!"; chdir '/'; _logger(); # Open the log file. ############################################################################# # Set CPANEL_IS_CRON env var based on detection algorithm my $cron_reason = set_cron_env(); $logger->info("Detected cron=$ENV{'CPANEL_IS_CRON'} ($cron_reason)"); my $set_cron_method = $ENV{'CPANEL_IS_CRON'} ? 'set_on' : 'set_off'; Cpanel::Update::IsCron->$set_cron_method(); my $openmax = POSIX::sysconf( POSIX::_SC_OPEN_MAX() ); if ( !$openmax ) { $openmax = 64; } foreach my $i ( 0 .. $openmax ) { POSIX::close($i) unless $i == fileno( $logger->{'fh'} ); } POSIX::setsid(); open( STDOUT, '>', '/dev/null' ) or warn $!; open( STDERR, '>', '/dev/null' ) or warn $!; $logger->update_pbar($pbar_starting_point); ############################################################################## # Symlink /var/cpanel/updatelogs/last to the current log file unlink $lastlog; symlink( $logfile_path, $lastlog ) or $logger->error("Could not symlink $lastlog: $!"); ############################################################################# # now that we have sporked: update our pidfile and ensure it is removed unlink $pidfile; # so that pid_file() won't see it as running. if ( !$upid->pid_file($pidfile) ) { # re-verifies (i.e. upcp was not also started after the unlink() and here) and sets up cleanup of $pidfile for sporked proc $logger->error("Could not update pidfile “$pidfile” with BG process: $!\n"); return 1; } # Assuming we didn't get re-executed from a upcp change after updatenow (!$fromself). # If the file is still there from a failed run, remove it. unlink($upcp_disallowed_path) if !$fromself && -f $upcp_disallowed_path; # make sure that the pid file is going to be removed when killed by a signal $SIG{INT} = $SIG{HUP} = $SIG{TERM} = sub { ## no critic qw(Variables::RequireLocalizedPunctuationVars) unlink $pidfile; if ($logger) { $logger->close_log; $logger->open_log; $logger->error("User hit ^C or killed the process ( pid file '$pidfile' removed )."); $logger->close_log; } return; }; ############################################################################# # Get variables needed for update my $gotSigALRM = 0; my $connecttimeout = 30; my $liveconnect = 0; my $connectedhost = q{}; my @HOST_IPs = (); ## Case 46528: license checks moved to updatenow and Cpanel::Update::Blocker $logger->debug("Done getting update config variables.."); $logger->increment_pbar; ############################################################################# # Run the preupcp hook if ( -x '/usr/local/cpanel/scripts/preupcp' ) { $logger->info("Running /usr/local/cpanel/scripts/preupcp"); system '/usr/local/cpanel/scripts/preupcp'; } if ( -x '/usr/local/cpanel/scripts/hook' ) { $logger->info("Running Standardized hooks"); system '/usr/local/cpanel/scripts/hook', '--category=System', '--event=upcp', '--stage=pre'; } $logger->increment_pbar(); ############################################################################# # Check mtime on ourselves before sync # This is the target for a goto in the case that the remote TIERS file is # changed sometime during the execution of this upcp run. It prevents the # need for a new script argument and re-exec. STARTOVER: my $mtime = ( stat('/usr/local/cpanel/scripts/upcp') )[9]; $logger->info( "mtime on upcp is $mtime (" . scalar( localtime($mtime) ) . ")" ); # * If no fromself arg is passed, it's either the first run from crontab or called manually. # * --force is passed to updatenow, has no bearing on upcp itself. # * Even if upcp is changed 3 times in a row during an update (fastest builds ever?), we # would never actually update more than once unless the new upcp script changed the logic below if ( !$fromself ) { # run updatenow to sync everything # updatenow expects --upcp to be passed or will error out my @updatenow_args = ( '/usr/local/cpanel/scripts/updatenow', '--upcp', "--log=$logfile_path" ); # if --forced was received, pass it on to updatenow if ($forced) { push( @updatenow_args, '--force' ); } # if --sync was received, pass it on to updatenow. --force makes --sync meaningless. if ( !$forced && $sync_requested ) { push( @updatenow_args, '--sync' ); } # This is the point of no return, we are upgrading # and its no longer abortable. # set flag to disallow ^C during updatenow Cpanel::FileUtils::TouchFile::touchfile($upcp_disallowed_path) or $logger->warn("Failed to create: $upcp_disallowed_path: $!"); # call updatenow, if we get a non-zero status, die. my $exit_code = system(@updatenow_args); $logger->increment_pbar(15); if ( $exit_code != 0 ) { my $signal = $exit_code % 256; $exit_code = $exit_code >> 8; analyze_and_report_error( #success_msg => undef, error_msg => "Running `@updatenow_args` failed, exited with code $exit_code (signal = $signal)", type => 'upcp::UpdateNowFailed', exit_status => $exit_code, extra => [ 'signal' => $signal, 'updatenow_args' => \@updatenow_args, ], ); return ($exit_code); } # get the new mtime and compare it, if upcp changed, let's run ourselves again. # this should be a fairly rare occasion. my $newmtime = ( stat('/usr/local/cpanel/scripts/upcp') )[9]; if ( $newmtime ne $mtime ) { #----> Run our new self (and never come back). $logger->info("New upcp detected, restarting ourself"); $logger->close_log(); exec '/usr/local/cpanel/scripts/upcp', @retain_argv, '--fromself', "--log=$logfile_path"; } } ############################################################################# # Run the maintenance script my $last_logfile_position; my $save_last_logfile_position = sub { $last_logfile_position = int( qx{wc -l $logfile_path 2>/dev/null} || 0 ); }; $logger->close_log(); # Allow maintenance to write to the log $save_last_logfile_position->(); # remember how many lines has the logfile before starting the maintenance script my $exit_status; my $version_change_happened = -e $version_upgrade_file; if ($version_change_happened) { $exit_status = system( '/usr/local/cpanel/scripts/maintenance', '--pre', '--log=' . $logfile_path, '--pbar-start=20', '--pbar-stop=30' ); } else { $exit_status = system( '/usr/local/cpanel/scripts/maintenance', '--log=' . $logfile_path, '--pbar-start=20', '--pbar-stop=95' ); } $logger->open_log(); # Re-open the log now maintenance is done. analyze_and_report_error( success_msg => "Pre Maintenance completed successfully", error_msg => "Pre Maintenance ended, however it did not exit cleanly ($exit_status). Please check the logs for an indication of what happened", type => 'upcp::MaintenanceFailed', exit_status => $exit_status, logfile => $logfile_path, last_logfile_position => $last_logfile_position, ); # Run post-sync cleanup only if updatenow did a sync # Formerly run after layer2 did a sync. if ($version_change_happened) { # post_sync pbar range: 30%-55% $logger->close_log(); # Yield the log to post_sync_cleanup $save_last_logfile_position->(); # remember how many lines has the logfile before starting the post_sync_cleanup script my $post_exit_status = system( '/usr/local/cpanel/scripts/post_sync_cleanup', '--log=' . $logfile_path, '--pbar-start=30', '--pbar-stop=55' ); $logger->open_log; # reopen the log to continue writing messages analyze_and_report_error( success_msg => "Post-sync cleanup completed successfully", error_msg => "Post-sync cleanup has ended, however it did not exit cleanly. Please check the logs for an indication of what happened", type => 'upcp::PostSyncCleanupFailed', exit_status => $post_exit_status, logfile => $logfile_path, last_logfile_position => $last_logfile_position, ); unlink $version_upgrade_file; unlink($upcp_disallowed_path) if -f ($upcp_disallowed_path); # Maintenance pbar range: 55-95% $logger->close_log(); # Allow maintenance to write to the log $save_last_logfile_position->(); # remember how many lines has the logfile before starting the maintenance --post $exit_status = system( '/usr/local/cpanel/scripts/maintenance', '--post', '--log=' . $logfile_path, '--pbar-start=55', '--pbar-stop=95' ); $logger->open_log(); # Re-open the log now maintenance is done. analyze_and_report_error( success_msg => "Post Maintenance completed successfully", error_msg => "Post Maintenance ended, however it did not exit cleanly ($exit_status). Please check the logs for an indication of what happened", type => 'upcp::MaintenanceFailed', exit_status => $exit_status, logfile => $logfile_path, last_logfile_position => $last_logfile_position, ); # Check for new version... used when updating to next LTS version $logger->info("Polling updatenow to see if a newer version is available for upgrade"); $logger->close_log(); # Yield the log to updatenow my $update_available = system( '/usr/local/cpanel/scripts/updatenow', "--log=$logfile_path", '--checkremoteversion' ); $logger->open_log; # reopen the log to continue writing messages if ( !$sync_requested && $update_available && ( $update_available >> 8 ) == $update_is_available_exit_code ) { $logger->info("\n\n/!\\ - Next LTS version available, restarting upcp and updating system. /!\\\n\n"); $fromself = 0; goto STARTOVER; } } else { unlink($upcp_disallowed_path) if -f ($upcp_disallowed_path); } ############################################################################# # Run the post upcp hook $logger->update_pbar(95); if ( -x '/usr/local/cpanel/scripts/postupcp' ) { $logger->info("Running /usr/local/cpanel/scripts/postupcp"); system '/usr/local/cpanel/scripts/postupcp'; } if ( -x '/usr/local/cpanel/scripts/hook' ) { $logger->info("Running Standardized hooks"); system '/usr/local/cpanel/scripts/hook', '--category=System', '--event=upcp', '--stage=post'; } close($RNULL); ############################################################################# # All done. ############################################################################# $logger->update_pbar(100); $logger->info( "\n\n\tcPanel update completed\n\n", 1 ); $logger->info("A log of this update is available at $logfile_path\n\n"); # this happens on exit so it shouldn't be necessary $logger->info("Removing upcp pidfile"); unlink $pidfile if -f $pidfile || $logger->warn("Could not delete pidfile $pidfile : $!"); my $update_blocks_fname = '/var/cpanel/update_blocks.config'; if ( -s $update_blocks_fname ) { $logger->warning("NOTE: A system upgrade was not possible due to the following blockers:\n"); if ( open( my $blocks_fh, '<', $update_blocks_fname ) ) { while ( my $line = readline $blocks_fh ) { my ( $level, $message ) = split /,/, $line, 2; # Not using the level in the log, cause the logger can emit additional messages # on some of the levels used (fatal emits an 'email message', etc) # Remove URL from log output. Make sure message is defined. if ($message) { $message =~ s/<a.*?>//ig; $message =~ s{</a>}{}ig; } $logger->warning( uc("[$level]") . " - $message" ); } } else { $logger->warning("Unable to open blocks file! Please review '/var/cpanel/update_blocks.config' manually."); } } else { $logger->info("\n\nCompleted all updates\n\n"); } $logger->close_log(); return 0; } ############################################################################# ######[ Subroutines ]######################################################## ############################################################################# sub analyze_and_report_error { my %info = @_; my $type = $info{type} or die; my $exit_status = $info{exit_status}; if ( $exit_status == 0 ) { if ( defined $info{success_msg} ) { $logger->info( $info{success_msg} ); } return; } my $msg = $info{error_msg} or die; my @extra; if ( ref $info{extra} ) { @extra = @{ $info{extra} }; } my $logfile_content = Cpanel::LoadFile::loadfile_r($logfile_path); # add events to the end of the error log if ( try( sub { Cpanel::LoadModule::load_perl_module("Cpanel::Logs::ErrorEvents") } ) ) { my ($events) = Cpanel::Logs::ErrorEvents::extract_events_from_log( log => $logfile_content, after_line => $info{last_logfile_position} ); if ( $events && ref $events && scalar @$events ) { my $events_str = join ', ', map { qq["$_"] } @$events; $events_str = qq[The following events were logged: ${events_str}.]; $msg =~ s{(Please check)}{${events_str} $1} or $msg .= ' ' . $events_str; } } $logger->error( $msg, 1 ); if ( try( sub { Cpanel::LoadModule::load_perl_module("Cpanel::iContact::Class::$type") } ) ) { require Cpanel::Notify; Cpanel::Notify::notification_class( 'class' => $type, 'application' => $type, 'constructor_args' => [ 'exit_code' => $exit_status, 'events_after_line' => $info{last_logfile_position}, @extra, 'attach_files' => [ { 'name' => 'update_log.txt', 'content' => $logfile_content, 'number_of_preview_lines' => 25 } ] ] ); } elsif ( !try( sub { Cpanel::LoadModule::load_perl_module("Cpanel::iContact"); Cpanel::iContact::icontact( 'application' => 'upcp', 'subject' => 'cPanel & WHM update failure (upcp)', 'message' => $msg, ); } ) ) { $logger->error('Failed to send contact message'); } return 1; } ############################################################################# sub kill_upcp { my $pid = shift or die; my $status = shift || 'hanging'; my $msg = shift || "/usr/local/cpanel/scripts/upcp was running as pid '$pid' for longer than 6 hours. cPanel will kill this process and run a new upcp in its place."; # Attempt to notify admin of the kill. if ( try( sub { Cpanel::LoadModule::load_perl_module("Cpanel::iContact::Class::upcp::Killed") } ) ) { require Cpanel::Notify; Cpanel::Notify::notification_class( 'class' => 'upcp::Killed', 'application' => 'upcp::Killed', 'constructor_args' => [ 'upcp_path' => '/usr/local/cpanel/scripts/upcp', 'pid' => $pid, 'status' => $status, 'attach_files' => [ { 'name' => 'update_log.txt', 'content' => Cpanel::LoadFile::loadfile_r($logfile_path), 'number_of_preview_lines' => 25 } ] ] ); } else { try( sub { Cpanel::LoadModule::load_perl_module("Cpanel::iContact"); Cpanel::iContact::icontact( 'application' => 'upcp', 'subject' => "cPanel update $status", 'message' => $msg, ); } ); } print "Sending kill signal to process group for $pid\n"; kill -1, $pid; # Kill the process group for ( 1 .. 60 ) { print "Waiting for processes to die\n"; waitpid( $pid, POSIX::WNOHANG() ); last if ( !kill( 0, $pid ) ); sleep 1; } if ( kill( 0, $pid ) ) { print "Could not kill upcp nicely. Doing kill -9 $pid\n"; kill 9, $pid; } else { print "Done!\n"; } return; } ############################################################################# sub setupenv { Cpanel::Env::clean_env(); delete $ENV{'DOCUMENT_ROOT'}; delete $ENV{'SERVER_SOFTWARE'}; if ( $ENV{'WHM50'} ) { $ENV{'GATEWAY_INTERFACE'} = 'CGI/1.1'; } ( $ENV{'USER'}, $ENV{'HOME'} ) = ( getpwuid($>) )[ 0, 7 ]; $ENV{'PATH'} .= ':/sbin:/usr/sbin:/usr/bin:/bin:/usr/local/bin'; $ENV{'LANG'} = 'C'; $ENV{'LC_ALL'} = 'C'; } sub unset_rlimits { # This is required if upcp started running from a pre-1132 eval { local $SIG{__DIE__}; require Cpanel::Rlimit; Cpanel::Rlimit::set_rlimit_to_infinity(); }; } ############################################################################# sub setup_updatelogs { return if ( -d '/var/cpanel/updatelogs' ); unlink('/var/cpanel/updatelogs'); mkdir( '/var/cpanel/updatelogs', 0700 ); } sub set_cron_env { # Do not override the env var if set. return 'env var CPANEL_IS_CRON was present before this process started.' if ( defined $ENV{'CPANEL_IS_CRON'} ); if ( grep { $_ eq '--cron' } @ARGV ) { $ENV{'CPANEL_IS_CRON'} = 1; return 'cron mode set from command line'; } if ( $ARGV[0] eq 'manual' ) { $ENV{'CPANEL_IS_CRON'} = 0; return 'manual flag passed on command line'; } if ($forced) { $ENV{'CPANEL_IS_CRON'} = 0; return '--force passed on command line'; } if ( -t STDOUT ) { $ENV{'CPANEL_IS_CRON'} = 0; return 'Terminal detected'; } if ( $ENV{'SSH_CLIENT'} ) { $ENV{'CPANEL_IS_CRON'} = 0; return 'SSH connection detected'; } # cron sets TERM=dumb if ( $ENV{'TERM'} eq 'dumb' ) { $ENV{'CPANEL_IS_CRON'} = 1; return 'TERM detected as set to dumb'; } # Check if parent is whostmgr if ( readlink( '/proc/' . getppid() . '/exe' ) =~ m/whostmgrd/ ) { $ENV{'CPANEL_IS_CRON'} = 0; return 'parent process is whostmgrd'; } # Default to cron enabled. $ENV{'CPANEL_IS_CRON'} = 1; return 'default'; } ############################################################################# sub fetch_cpanel_version { my $version; my $version_file = '/usr/local/cpanel/version'; return if !-f $version_file; my $fh; local $/ = undef; return if !open $fh, '<', $version_file; $version = <$fh>; close $fh; $version =~ s/^\s+|\s+$//gs; return $version; } ############################################################################# sub monitor_upcp { my $updatepid = shift or die; $0 = 'cPanel Update (upcp) - Master'; $SIG{INT} = $SIG{TERM} = sub { print "User hit ^C\n"; if ( -f $upcp_disallowed_path ) { print "Not allowing upcp slave to be killed during updatenow, just killing monitoring process.\n"; exit; } print "killing upcp\n"; kill_upcp( $updatepid, "aborted", "/usr/local/cpanel/scripts/upcp was aborted by the user hitting Ctrl-C." ); exit; }; $SIG{HUP} = sub { print "SIGHUP detected; closing monitoring process.\n"; print "The upcp slave has not been affected\n"; exit; }; # Wait till the file shows up. until ( -e $logfile_path ) { select undef, undef, undef, .25; # sleep just a bit } # Wait till we're allowed to open it. my $fh; until ( defined $fh && fileno $fh ) { $fh = IO::Handle->new(); if ( !open $fh, '<', $logfile_path ) { undef $fh; select undef, undef, undef, .25; # sleep just a bit next; } } # Read the file until the pid dies. my $child_done = 0; while (1) { # Read all the available lines. while (1) { my $line = <$fh>; last if ( !defined $line || $line eq '' ); print $line; } # Once the child is history, we need to do yet one more final read, # on the off chance (however remote) that she has written one last # hurrah after we last checked. Hence the following. last if $child_done; # from prev. pass $child_done = 1 if -1 == waitpid( $updatepid, 1 ); # and loop back for one more read select undef, undef, undef, .25; # Yield idle time to the cpu } close $fh if $fh; exit; } sub _logger { return $logger if $logger; $logger = Cpanel::Update::Logger->new( { 'logfile' => $logfile_path, 'stdout' => 1, 'log_level' => 'info' } ); # do not set the pbar in the constructor to do not display the 0 % in bg mode $logger->{pbar} = $pbar_starting_point; return $logger; } sub _determine_logfile_path_if_running ($pid) { my $upid = Cpanel::UPID::get($pid); return $upid ? "/var/cpanel/updatelogs/update.$upid.log" : undef; } #---------------------------------------------------------------------- # HANDLE WITH CARE!! This string is parsed # in at least one place. (cf. Cpanel::Update::Start) sub _message_about_newly_started ( $updatepid, $logfile_path ) { return "upcp is going into background mode (PID $updatepid). You can follow “$logfile_path” to watch its progress."; } #---------------------------------------------------------------------- # HANDLE WITH CARE!! This string is parsed # in at least one place. (cf. Cpanel::Update::Start) sub _message_about_already_running ( $curpid, $logpath ) { return "cPanel Update (upcp) is already running. Please wait for the previous upcp (PID $curpid, log file “$logpath”) to complete, then try again. You can use the command 'ps --pid $curpid' to check if the process is running. You may wish to use '--force'."; } 1;
Name | Type | Size | Permission | Actions |
---|---|---|---|---|
cpan_sandbox | Folder | 0755 |
|
|
php_sandbox | Folder | 0755 |
|
|
MirrorSearch_pingtest | File | 2.38 KB | 0755 |
|
activesync-invite-reply | File | 1.69 KB | 0755 |
|
add_dns | File | 2.36 KB | 0755 |
|
adddns | File | 2.36 KB | 0755 |
|
addpop | File | 6.08 KB | 0755 |
|
addsystemuser | File | 3.27 KB | 0755 |
|
adduser | File | 92 B | 0755 |
|
apachelimits | File | 4.31 KB | 0755 |
|
archive_sync_zones | File | 3.02 KB | 0755 |
|
auto-adjust-mysql-limits | File | 1.81 KB | 0755 |
|
autorepair | File | 1.24 KB | 0755 |
|
backups_clean_metadata_for_missing_backups | File | 1.57 KB | 0755 |
|
backups_create_metadata | File | 15.75 KB | 0755 |
|
backups_list_user_files | File | 4.56 KB | 0755 |
|
balance_linked_node_quotas | File | 2.58 KB | 0755 |
|
biglogcheck | File | 1.69 KB | 0755 |
|
build_bandwidthdb_root_cache_in_background | File | 1.52 KB | 0755 |
|
build_cpnat | File | 3.41 KB | 0755 |
|
build_mail_sni | File | 3.87 KB | 0755 |
|
build_maxemails_config | File | 1.14 KB | 0755 |
|
builddovecotconf | File | 6.76 KB | 0755 |
|
buildeximconf | File | 7 KB | 0755 |
|
buildhttpdconf | File | 2.6 KB | 0755 |
|
buildnsdconf | File | 1.01 KB | 0755 |
|
buildpureftproot | File | 539 B | 0755 |
|
ccs-check | File | 4.91 KB | 0755 |
|
check_cpanel_pkgs | File | 10.75 KB | 0755 |
|
check_cpanel_rpms | File | 218 B | 0755 |
|
check_domain_tls_service_domains.pl | File | 6.68 KB | 0755 |
|
check_immutable_files | File | 5.49 KB | 0755 |
|
check_mail_spamassassin_compiledregexps_body_0 | File | 187 B | 0755 |
|
check_maxmem_against_domains_count | File | 3.57 KB | 0755 |
|
check_mount_procfs | File | 2.02 KB | 0755 |
|
check_mysql | File | 5.55 KB | 0755 |
|
check_security_advice_changes | File | 8.28 KB | 0755 |
|
check_unmonitored_enabled_services | File | 4.56 KB | 0755 |
|
check_unreliable_resolvers | File | 3.59 KB | 0755 |
|
check_users_my_cnf | File | 6.05 KB | 0755 |
|
check_valid_server_hostname | File | 7.66 KB | 0755 |
|
checkalldomainsmxs | File | 2.4 KB | 0755 |
|
checkbashshell | File | 1.18 KB | 0755 |
|
checkccompiler | File | 1.22 KB | 0755 |
|
checkexim.pl | File | 3.1 KB | 0755 |
|
checklink | File | 1.29 KB | 0755 |
|
checknsddirs | File | 1014 B | 0755 |
|
checkusers | File | 856 B | 0755 |
|
chkmydns | File | 561 B | 0755 |
|
chkpaths | File | 141 B | 0755 |
|
chpass | File | 416 B | 0755 |
|
ckillall | File | 1.11 KB | 0755 |
|
clean_dead_mailman_locks | File | 2.09 KB | 0755 |
|
clean_up_temp_wheel_users | File | 2.44 KB | 0755 |
|
clean_user_php_sessions | File | 4.76 KB | 0755 |
|
cleandns | File | 13.09 KB | 0755 |
|
cleandns8 | File | 417 B | 0755 |
|
cleanmsglog | File | 735 B | 0755 |
|
cleanphpsessions | File | 932 B | 0755 |
|
cleanphpsessions.php | File | 658 B | 0644 |
|
cleanquotas | File | 1.61 KB | 0755 |
|
cleansessions | File | 5.91 KB | 0755 |
|
cleanupinterchange | File | 2.64 KB | 0755 |
|
cleanupmysqlprivs | File | 533 B | 0755 |
|
clear_cpaddon_ui_caches | File | 1.27 KB | 0755 |
|
clear_orphaned_virtfs_mounts | File | 3.56 KB | 0755 |
|
comparecdb | File | 1.52 KB | 0755 |
|
compilers | File | 2.86 KB | 0755 |
|
compilerscheck | File | 999 B | 0755 |
|
configure_firewall_for_cpanel | File | 520 B | 0755 |
|
configure_rh_firewall_for_cpanel | File | 520 B | 0755 |
|
configure_rh_ipv6_firewall_for_cpanel | File | 520 B | 0755 |
|
convert2dovecot | File | 682 B | 0755 |
|
convert_accesshash_to_token | File | 4.07 KB | 0755 |
|
convert_and_migrate_from_legacy_backup | File | 1.97 KB | 0755 |
|
convert_maildir_to_mdbox | File | 1.66 KB | 0755 |
|
convert_mdbox_to_maildir | File | 1.66 KB | 0755 |
|
convert_roundcube_mysql2sqlite | File | 25.28 KB | 0755 |
|
convert_to_dovecot_delivery | File | 4.33 KB | 0755 |
|
convert_whmxfer_to_sqlite | File | 1.46 KB | 0755 |
|
copy_user_mail_as_root | File | 1.25 KB | 0755 |
|
copy_user_mail_as_user | File | 1.34 KB | 0755 |
|
cpaddonsup | File | 3.25 KB | 0755 |
|
cpan_config | File | 2.8 KB | 0755 |
|
cpanel_initial_install | File | 67.36 KB | 0755 |
|
cpanelsync | File | 28.31 KB | 0755 |
|
cpanelsync_postprocessor | File | 1.62 KB | 0755 |
|
cpanpingtest | File | 965 B | 0755 |
|
cpbackup | File | 44.77 KB | 0755 |
|
cpbackup_transport_file | File | 5.65 KB | 0755 |
|
cpdig | File | 1.81 KB | 0755 |
|
cpfetch | File | 1.23 KB | 0755 |
|
cphulkdblacklist | File | 433 B | 0755 |
|
cphulkdwhitelist | File | 1.3 KB | 0755 |
|
cpservice | File | 2.87 KB | 0755 |
|
cpuser_port_authority | File | 19.29 KB | 0755 |
|
cpuser_service_manager | File | 10.85 KB | 0755 |
|
createacct | File | 24.57 MB | 0700 |
|
custom_backup_destination.pl.sample | File | 5.06 KB | 0755 |
|
custom_backup_destination.pl.skeleton | File | 2.84 KB | 0755 |
|
dav_change_hostname | File | 3.57 KB | 0755 |
|
dcpumon-wrapper | File | 850 B | 0755 |
|
delpop | File | 6.2 KB | 0755 |
|
detect_env_capabilities | File | 508 B | 0755 |
|
disable_prelink | File | 2.77 KB | 0755 |
|
disable_sqloptimizer | File | 1.49 KB | 0755 |
|
disablefileprotect | File | 2.09 KB | 0755 |
|
distro_changed_hook | File | 1.16 KB | 0755 |
|
dnscluster | File | 4.44 KB | 0755 |
|
dnsqueuecron | File | 1.29 KB | 0755 |
|
dnssec-cluster-keys | File | 3.75 KB | 0755 |
|
dovecot_maintenance | File | 7.93 KB | 0755 |
|
dovecot_set_defaults.pl | File | 984 B | 0755 |
|
dumpcdb | File | 866 B | 0755 |
|
dumpinodes | File | 687 B | 0755 |
|
dumpquotas | File | 616 B | 0755 |
|
dumpstor | File | 913 B | 0755 |
|
ea4_fresh_install | File | 2.64 KB | 0755 |
|
edit_cpanelsync_exclude_list | File | 2.58 KB | 0755 |
|
editquota | File | 3.44 KB | 0755 |
|
elevate-cpanel | File | 349.17 KB | 0700 |
|
email_archive_maintenance | File | 6.15 KB | 0755 |
|
email_hold_maintenance | File | 1.46 KB | 0755 |
|
enable_spf_dkim_globally | File | 8.83 KB | 0755 |
|
enable_sqloptimizer | File | 1.57 KB | 0755 |
|
enablefileprotect | File | 2.1 KB | 0755 |
|
ensure_autoenabled_features | File | 2.5 MB | 0700 |
|
ensure_conf_dir_crt_key | File | 4.82 KB | 0755 |
|
ensure_cpuser_file_ip | File | 2.55 KB | 0755 |
|
ensure_crontab_permissions | File | 1.08 KB | 0755 |
|
ensure_dovecot_memory_limits_meet_minimum | File | 3.13 KB | 0755 |
|
ensure_hostname_resolves | File | 2.57 KB | 0755 |
|
ensure_includes | File | 601 B | 0755 |
|
ensure_vhost_includes | File | 13.53 KB | 0755 |
|
exim_tidydb | File | 2.96 KB | 0755 |
|
eximconfgen | File | 1.32 KB | 0755 |
|
eximstats_spam_check | File | 867 B | 0755 |
|
export_horde_calendars_to_ics | File | 15.07 KB | 0755 |
|
export_horde_contacts_to_vcf | File | 13.94 KB | 0755 |
|
exportmydnsdb | File | 3.47 KB | 0755 |
|
expunge_expired_certificates_from_sslstorage | File | 3.56 KB | 0755 |
|
expunge_expired_pkgacct_sessions | File | 852 B | 0755 |
|
expunge_expired_transfer_sessions | File | 1.06 KB | 0755 |
|
fastmail | File | 5.16 KB | 0755 |
|
featuremod | File | 1.92 KB | 0755 |
|
fetchfile | File | 422 B | 0755 |
|
find_and_fix_rpm_issues | File | 6.99 KB | 0755 |
|
find_outdated_services | File | 5.41 KB | 0755 |
|
find_pids_with_inotify_watch_on_path | File | 3.66 KB | 0755 |
|
fix-cpanel-perl | File | 28.82 KB | 0755 |
|
fix-listen-on-localhost | File | 3.52 KB | 0755 |
|
fix-web-vhost-configuration | File | 6.15 KB | 0755 |
|
fix_addon_permissions | File | 7.68 KB | 0755 |
|
fix_dns_zone_ttls | File | 1.34 KB | 0755 |
|
fix_innodb_tables | File | 4.05 KB | 0755 |
|
fix_pear_registry | File | 4.07 KB | 0755 |
|
fix_reseller_acls | File | 10.88 KB | 0755 |
|
fixetchosts | File | 4.32 KB | 0755 |
|
fixheaders | File | 572 B | 0755 |
|
fixmailinglistperms | File | 1008 B | 0755 |
|
fixmailman | File | 2.09 KB | 0755 |
|
fixnamedviews | File | 1.22 KB | 0755 |
|
fixndc | File | 413 B | 0755 |
|
fixquotas | File | 17.45 KB | 0755 |
|
fixrelayd | File | 1.74 KB | 0755 |
|
fixrndc | File | 16.48 KB | 0755 |
|
fixtar | File | 503 B | 0755 |
|
fixtlsversions | File | 4.7 KB | 0755 |
|
fixvaliases | File | 2 KB | 0755 |
|
fixwebalizer | File | 966 B | 0755 |
|
forcelocaldomain | File | 895 B | 0755 |
|
ftpfetch | File | 2.2 KB | 0755 |
|
ftpquotacheck | File | 8.31 KB | 0755 |
|
ftpsfetch | File | 2.36 KB | 0755 |
|
ftpupdate | File | 261 B | 0755 |
|
gather_update_log_stats | File | 4.25 KB | 0700 |
|
gather_update_logs_setupcrontab | File | 5.45 KB | 0700 |
|
gemwrapper | File | 1.74 KB | 0755 |
|
gencrt | File | 6.26 KB | 0755 |
|
generate_account_suspension_include | File | 5.7 KB | 0755 |
|
generate_google_drive_credentials | File | 1.11 KB | 0755 |
|
generate_google_drive_oauth_uri | File | 984 B | 0755 |
|
generate_maildirsize | File | 13.94 KB | 0755 |
|
gensysinfo | File | 1.16 KB | 0755 |
|
get_locale_from_legacy_name_info | File | 1.99 KB | 0755 |
|
getremotecpmove | File | 12.67 KB | 0755 |
|
grpck | File | 1.19 KB | 0755 |
|
hackcheck | File | 3.02 KB | 0755 |
|
hook | File | 1.45 KB | 0755 |
|
httpspamdetect | File | 2.66 KB | 0755 |
|
hulk-unban-ip | File | 3.93 MB | 0700 |
|
import_exim_data | File | 8.39 KB | 0755 |
|
importmydnsdb | File | 11.34 KB | 0755 |
|
increase_filesystem_limits | File | 891 B | 0755 |
|
initacls | File | 4.99 KB | 0755 |
|
initfpsuexec | File | 444 B | 0755 |
|
initquotas | File | 19.47 KB | 0755 |
|
initsuexec | File | 4.03 KB | 0755 |
|
install_cpanel_analytics | File | 1.93 KB | 0755 |
|
install_dovecot_fts | File | 1.57 KB | 0755 |
|
install_plugin | File | 2.8 KB | 0755 |
|
installpkg | File | 575 B | 0755 |
|
installpostgres | File | 6.56 KB | 0755 |
|
installsqlite3 | File | 1.82 KB | 0755 |
|
ipcheck | File | 3.93 KB | 0755 |
|
ipusage | File | 7.45 KB | 0755 |
|
isdedicatedip | File | 602 B | 0755 |
|
jetbackup-check | File | 3.69 KB | 0755 |
|
killdns | File | 422 B | 0755 |
|
killdns-dnsadmin | File | 1.15 KB | 0755 |
|
killmysqluserprivs | File | 433 B | 0755 |
|
killmysqlwildcard | File | 1.15 KB | 0755 |
|
killpvhost | File | 853 B | 0755 |
|
killspamkeys | File | 937 B | 0755 |
|
link_3rdparty_binaries | File | 1.24 KB | 0755 |
|
linksubemailtomainacct | File | 3.17 KB | 0755 |
|
listcheck | File | 538 B | 0755 |
|
listsubdomains | File | 1.05 KB | 0755 |
|
litespeed-check | File | 3.86 KB | 0755 |
|
locale_export | File | 4.82 KB | 0755 |
|
locale_import | File | 4.35 KB | 0755 |
|
locale_info | File | 3.99 KB | 0755 |
|
logo.dat | File | 205 B | 0644 |
|
magicloader | File | 1.94 KB | 0755 |
|
maildir_converter | File | 6.08 KB | 0755 |
|
mailperm | File | 16.58 KB | 0755 |
|
mailscannerupdate | File | 2.42 KB | 0755 |
|
mainipcheck | File | 10 KB | 0755 |
|
maintenance | File | 46.62 KB | 0755 |
|
make_config | File | 407 B | 0644 |
|
make_hostname_unowned | File | 1.16 KB | 0755 |
|
manage_extra_marketing | File | 12.41 KB | 0700 |
|
manage_greylisting | File | 16.19 KB | 0755 |
|
manage_mysql_profiles | File | 20.02 KB | 0755 |
|
migrate-pdns-conf | File | 9.83 KB | 0755 |
|
migrate_legacy_wordpress_to_modern_wordpress | File | 12.99 KB | 0700 |
|
migrate_local_ini_to_php_ini | File | 7.41 KB | 0755 |
|
migrate_whmtheme_file_to_userdata | File | 2.95 KB | 0755 |
|
mkwwwacctconf | File | 2.33 KB | 0755 |
|
modify_accounts | File | 4.09 KB | 0755 |
|
modify_default_featurelist_entry.pl | File | 5.18 KB | 0700 |
|
modify_packages | File | 3.65 KB | 0755 |
|
modsec_vendor | File | 15.63 KB | 0755 |
|
mysqlconnectioncheck | File | 6.55 KB | 0755 |
|
mysqlpasswd | File | 4.09 KB | 0755 |
|
named.ca | File | 1.57 KB | 0644 |
|
named.rfc1912.zones | File | 774 B | 0644 |
|
nixstatsagent.sh | File | 58.67 KB | 0700 |
|
notify_expiring_certificates | File | 9.37 KB | 0755 |
|
notify_expiring_certificates_on_linked_nodes | File | 1.33 KB | 0755 |
|
oopscheck | File | 1.12 KB | 0755 |
|
optimize_eximstats | File | 3.88 KB | 0755 |
|
patch_mail_spamassassin_compiledregexps_body_0 | File | 2.39 KB | 0755 |
|
patchfdsetsize | File | 2.72 KB | 0755 |
|
pedquota | File | 2.26 KB | 0755 |
|
perform_sqlite_auto_rebuild_db_maintenance | File | 2.2 KB | 0755 |
|
perlinstaller | File | 528 B | 0755 |
|
perlmods | File | 1.18 KB | 0755 |
|
php_fpm_config | File | 9.73 KB | 0755 |
|
phpini_tidy | File | 687 B | 0755 |
|
pkgacct | File | 87.82 KB | 0755 |
|
post_snapshot | File | 3.16 KB | 0755 |
|
post_sync_cleanup | File | 6.09 KB | 0755 |
|
primary_virtual_host_migration | File | 2.44 KB | 0755 |
|
process_pending_cpanel_php_pear_registration | File | 3.49 KB | 0755 |
|
process_site_templates | File | 7.27 KB | 0755 |
|
proxydomains | File | 9.34 KB | 0755 |
|
ptycheck | File | 724 B | 0755 |
|
purge_modsec_log | File | 1.53 KB | 0755 |
|
purge_old_config_caches | File | 2.08 KB | 0755 |
|
pwck | File | 708 B | 0755 |
|
quickdnslookup | File | 1.13 KB | 0755 |
|
quickwhoisips | File | 2.29 KB | 0755 |
|
quota_auto_fix | File | 1.41 KB | 0755 |
|
quotacheck | File | 22.36 KB | 0755 |
|
rawchpass | File | 460 B | 0755 |
|
rdate | File | 4.8 KB | 0755 |
|
realadduser | File | 5.61 KB | 0755 |
|
realchpass | File | 3.26 KB | 0755 |
|
realperlinstaller | File | 5.67 KB | 0755 |
|
realrawchpass | File | 425 B | 0755 |
|
rebuild_available_addons_packages_cache | File | 1.27 KB | 0755 |
|
rebuild_available_rpm_addons_cache | File | 1.27 KB | 0755 |
|
rebuild_bandwidthdb_root_cache | File | 1.45 KB | 0755 |
|
rebuild_dbmap | File | 5.8 KB | 0755 |
|
rebuild_provider_openid_connect_links_db | File | 1.01 KB | 0755 |
|
rebuild_whm_chrome | File | 2.22 KB | 0755 |
|
rebuilddnsconfig | File | 26.21 KB | 0755 |
|
rebuildhttpdconf | File | 2.6 KB | 0755 |
|
rebuildinstalledssldb | File | 2.85 KB | 0755 |
|
rebuildippool | File | 509 B | 0755 |
|
rebuildnsdzones | File | 1.14 KB | 0755 |
|
rebuilduserssldb | File | 948 B | 0755 |
|
refresh-dkim-validity-cache | File | 5.97 KB | 0755 |
|
regenerate_tokens | File | 2.18 KB | 0755 |
|
reloadnsd | File | 821 B | 0755 |
|
remote_log_transfer | File | 11.6 KB | 0755 |
|
remove_dovecot_index_files | File | 5.89 KB | 0755 |
|
removeacct | File | 20.91 MB | 0700 |
|
rescan_user_dovecot_fts | File | 2.98 KB | 0755 |
|
reset_mail_quotas_to_sane_values | File | 6.82 KB | 0755 |
|
resetmailmanurls | File | 2.03 KB | 0755 |
|
resetquotas | File | 4.68 KB | 0755 |
|
restartsrv | File | 3.23 KB | 0755 |
|
restartsrv_apache | File | 422 B | 0755 |
|
restartsrv_apache_php_fpm | File | 9.9 MB | 0755 |
|
restartsrv_base | File | 9.9 MB | 0755 |
|
restartsrv_bind | File | 9.9 MB | 0755 |
|
restartsrv_chkservd | File | 427 B | 0755 |
|
restartsrv_clamd | File | 9.9 MB | 0755 |
|
restartsrv_cpanalyticsd | File | 9.9 MB | 0755 |
|
restartsrv_cpanel_php_fpm | File | 9.9 MB | 0755 |
|
restartsrv_cpanellogd | File | 9.9 MB | 0755 |
|
restartsrv_cpdavd | File | 9.9 MB | 0755 |
|
restartsrv_cpgreylistd | File | 9.9 MB | 0755 |
|
restartsrv_cphulkd | File | 9.9 MB | 0755 |
|
restartsrv_cpipv6 | File | 9.9 MB | 0755 |
|
restartsrv_cpsrvd | File | 9.9 MB | 0755 |
|
restartsrv_crond | File | 9.9 MB | 0755 |
|
restartsrv_dnsadmin | File | 9.9 MB | 0755 |
|
restartsrv_dovecot | File | 9.9 MB | 0755 |
|
restartsrv_exim | File | 9.9 MB | 0755 |
|
restartsrv_eximstats | File | 504 B | 0755 |
|
restartsrv_ftpd | File | 426 B | 0755 |
|
restartsrv_ftpserver | File | 911 B | 0755 |
|
restartsrv_httpd | File | 9.9 MB | 0755 |
|
restartsrv_imap | File | 437 B | 0755 |
|
restartsrv_inetd | File | 2.47 KB | 0755 |
|
restartsrv_ipaliases | File | 9.9 MB | 0755 |
|
restartsrv_lmtp | File | 437 B | 0755 |
|
restartsrv_mailman | File | 9.9 MB | 0755 |
|
restartsrv_mydns | File | 9.9 MB | 0755 |
|
restartsrv_mysql | File | 9.9 MB | 0755 |
|
restartsrv_named | File | 777 B | 0755 |
|
restartsrv_nscd | File | 9.9 MB | 0755 |
|
restartsrv_nsd | File | 9.9 MB | 0755 |
|
restartsrv_p0f | File | 9.9 MB | 0755 |
|
restartsrv_pdns | File | 9.9 MB | 0755 |
|
restartsrv_pop3 | File | 437 B | 0755 |
|
restartsrv_postgres | File | 427 B | 0755 |
|
restartsrv_postgresql | File | 9.9 MB | 0755 |
|
restartsrv_powerdns | File | 442 B | 0755 |
|
restartsrv_proftpd | File | 9.9 MB | 0755 |
|
restartsrv_pureftpd | File | 9.9 MB | 0755 |
|
restartsrv_queueprocd | File | 9.9 MB | 0755 |
|
restartsrv_rsyslog | File | 9.9 MB | 0755 |
|
restartsrv_rsyslogd | File | 437 B | 0755 |
|
restartsrv_spamd | File | 9.9 MB | 0755 |
|
restartsrv_sshd | File | 9.9 MB | 0755 |
|
restartsrv_syslogd | File | 2.4 KB | 0755 |
|
restartsrv_tailwatchd | File | 9.9 MB | 0755 |
|
restartsrv_unknown | File | 9.9 MB | 0755 |
|
restartsrv_xinetd | File | 422 B | 0755 |
|
restorecpuserfromcache | File | 1.96 KB | 0755 |
|
restorepkg | File | 36.49 MB | 0700 |
|
rfc1912_zones.tar | File | 10 KB | 0644 |
|
rpmup | File | 4.77 KB | 0755 |
|
rsync-user-homedir.pl | File | 5.76 KB | 0755 |
|
run_if_exists | File | 512 B | 0755 |
|
runstatsonce | File | 440 B | 0755 |
|
runweblogs | File | 1.02 KB | 0755 |
|
sa-update_wrapper | File | 3.34 KB | 0755 |
|
safetybits.pl | File | 844 B | 0755 |
|
secureit | File | 4.72 KB | 0755 |
|
securemysql | File | 4.54 KB | 0755 |
|
securerailsapps | File | 3.58 KB | 0755 |
|
securetmp | File | 15.99 KB | 0755 |
|
sendicq | File | 474 B | 0755 |
|
servicedomains | File | 9.34 KB | 0755 |
|
set_mailman_archive_perms | File | 1.75 KB | 0755 |
|
set_php_memory_limits | File | 3.67 KB | 0755 |
|
setpostgresconfig | File | 6.04 KB | 0755 |
|
setup_greylist_db | File | 16.19 KB | 0755 |
|
setup_modsec_db | File | 1.3 KB | 0755 |
|
setupftpserver | File | 10.47 KB | 0755 |
|
setupmailserver | File | 9.55 KB | 0755 |
|
setupnameserver | File | 13.75 KB | 0755 |
|
shrink_modsec_ip_database | File | 12.97 KB | 0755 |
|
simpleps | File | 3.05 KB | 0755 |
|
slurp_exim_mainlog | File | 5.78 KB | 0755 |
|
smartcheck | File | 15.13 KB | 0755 |
|
smtpmailgidonly | File | 8.15 KB | 0755 |
|
snapshot_prep | File | 5.88 KB | 0755 |
|
spamassassin_dbm_cleaner | File | 5.85 KB | 0755 |
|
spamassassindisable | File | 3.74 KB | 0755 |
|
spamboxdisable | File | 2.27 KB | 0755 |
|
sshcontrol | File | 14.38 KB | 0755 |
|
ssl_crt_status | File | 3.84 KB | 0755 |
|
suspendacct | File | 18.01 KB | 0755 |
|
suspendmysqlusers | File | 4.42 KB | 0755 |
|
swapip | File | 3.82 KB | 0755 |
|
sync-mysql-users-from-grants | File | 1.2 KB | 0755 |
|
sync_child_accounts | File | 1.77 KB | 0755 |
|
sync_contact_emails_to_cpanel_users_files | File | 1.14 KB | 0755 |
|
synccpaddonswithsqlhost | File | 6.59 KB | 0755 |
|
synctransfers | File | 1.92 KB | 0755 |
|
syslog_check | File | 1.36 KB | 0755 |
|
sysup | File | 645 B | 0755 |
|
test_sa_compiled | File | 1.07 KB | 0755 |
|
transfer_account_as_user | File | 2.34 KB | 0755 |
|
transfer_accounts_as_root | File | 4.76 KB | 0755 |
|
transfer_in_progress | File | 3.08 KB | 0755 |
|
transfer_in_progress.pod | File | 312 B | 0644 |
|
transfermysqlusers | File | 9.53 MB | 0700 |
|
try-later | File | 7.95 KB | 0755 |
|
unblockip | File | 667 B | 0755 |
|
uninstall_cpanel_analytics | File | 1.2 KB | 0755 |
|
uninstall_dovecot_fts | File | 562 B | 0755 |
|
uninstall_plugin | File | 2.84 KB | 0755 |
|
unlink_service_account | File | 2.62 KB | 0755 |
|
unpkgacct | File | 4.6 KB | 0755 |
|
unslavenamedconf | File | 863 B | 0755 |
|
unsuspendacct | File | 17.8 KB | 0755 |
|
unsuspendmysqlusers | File | 6.71 KB | 0755 |
|
upcp | File | 31.56 KB | 0755 |
|
upcp-running | File | 2.7 KB | 0755 |
|
upcp.static | File | 708.4 KB | 0755 |
|
update-packages | File | 4.77 KB | 0755 |
|
update_apachectl | File | 480 B | 0755 |
|
update_db_cache | File | 430 B | 0755 |
|
update_dkim_keys | File | 1.45 KB | 0755 |
|
update_exim_rejects | File | 1.21 KB | 0755 |
|
update_existing_mail_quotas_for_account | File | 4.78 KB | 0755 |
|
update_known_proxy_ips | File | 1002 B | 0755 |
|
update_local_rpm_versions | File | 4.56 KB | 0755 |
|
update_mailman_cache | File | 8.34 KB | 0755 |
|
update_mysql_systemd_config | File | 1.25 KB | 0755 |
|
update_neighbor_netblocks | File | 487 B | 0755 |
|
update_sa_config | File | 2.14 KB | 0755 |
|
update_spamassassin_config | File | 10.73 KB | 0755 |
|
update_users_jail | File | 691 B | 0755 |
|
update_users_vhosts | File | 801 B | 0755 |
|
updatedomainips | File | 605 B | 0755 |
|
updatenameserverips | File | 1.66 KB | 0755 |
|
updatenow | File | 5.18 KB | 0755 |
|
updatenow.static | File | 1.91 MB | 0755 |
|
updatenow.static-cpanelsync | File | 1.97 MB | 0700 |
|
updatesigningkey | File | 1.95 KB | 0755 |
|
updatessldomains | File | 1.81 KB | 0755 |
|
updatesupportauthorizations | File | 2.49 KB | 0755 |
|
updateuserdatacache | File | 2.47 KB | 0755 |
|
updateuserdomains | File | 774 B | 0755 |
|
upgrade_bandwidth_dbs | File | 2.22 KB | 0755 |
|
upgrade_subaccount_databases | File | 2.73 KB | 0755 |
|
userdata_wildcard_cleanup | File | 5.74 KB | 0755 |
|
userdirctl | File | 5.01 KB | 0755 |
|
validate_sshkey_passphrase | File | 1.21 KB | 0755 |
|
verify_api_spec_files | File | 757 B | 0755 |
|
verify_pidfile | File | 1.96 KB | 0755 |
|
verify_vhost_includes | File | 7.34 KB | 0755 |
|
vps_optimizer | File | 7.82 KB | 0755 |
|
vzzo-fixer | File | 725 B | 0755 |
|
whmlogin | File | 2.33 KB | 0755 |
|
whoowns | File | 1.13 KB | 0755 |
|
wpt_license | File | 6.27 MB | 0700 |
|
wwwacct | File | 24.57 MB | 0700 |
|
wwwacct2 | File | 88 B | 0755 |
|
xfer_rcube_schema_migrate.pl | File | 2.4 KB | 0755 |
|
xfer_rcube_uid_resolver.pl | File | 1.8 KB | 0755 |
|
xferpoint | File | 3.13 KB | 0755 |
|
xfertool | File | 16.14 KB | 0755 |
|
zoneexists | File | 800 B | 0755 |
|