__ __ __ __ _____ _ _ _____ _ _ _ | \/ | \ \ / / | __ \ (_) | | / ____| | | | | | \ / |_ __\ V / | |__) | __ ___ ____ _| |_ ___ | (___ | |__ ___| | | | |\/| | '__|> < | ___/ '__| \ \ / / _` | __/ _ \ \___ \| '_ \ / _ \ | | | | | | |_ / . \ | | | | | |\ V / (_| | || __/ ____) | | | | __/ | | |_| |_|_(_)_/ \_\ |_| |_| |_| \_/ \__,_|\__\___| |_____/|_| |_|\___V 2.1 if you need WebShell for Seo everyday contact me on Telegram Telegram Address : @jackleetFor_More_Tools:
#!/usr/local/cpanel/3rdparty/bin/perl
# cpanel - scripts/cpanelsync 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::cpanelsync;
## "grep '###' cpanelsync" gives an overview of the logic and files downloaded
BEGIN {
my $running_in_debugger = exists $INC{'perl5db.pl'};
if ($running_in_debugger) {
$ENV{'LANG'} = 'C';
}
if ( defined $ENV{'LANG'} && $ENV{'LANG'} ne 'C' && !$^C ) {
$ENV{'LANG'} = 'C';
exec $0, @ARGV;
die 'Failed to recreate self in a sane env';
}
}
use strict;
use warnings;
use Socket;
use Cpanel::Tar ();
use Cpanel::HttpRequest ();
use Cpanel::SafeDir::MK ();
use Cpanel::Sync::Common ();
use Cpanel::Sync::Digest ();
use Cpanel::Usage ();
use Cpanel::Crypt::GPG::Settings ();
exit __PACKAGE__->script(@ARGV) unless caller();
sub script {
my ( $package, @argv ) = @_;
local $| = 1;
$SIG{'INT'} = 'IGNORE';
my ( $exit_code, $options, $host, $url, $root ) = _parse_argv( \@argv );
if ( defined $exit_code ) {
return $exit_code;
}
else {
$exit_code = 0;
}
eval {
no warnings;
local $SIG{'__DIE__'};
local $SIG{'__WARN__'};
require Cpanel::Carp;
local $SIG{'__DIE__'};
local $SIG{'__WARN__'};
Cpanel::Carp::enable();
$Cpanel::Carp::OUTPUT_FORMAT = 'suppress';
};
# setup httpclient with keyring
my $httpClient = Cpanel::HttpRequest->new(
categories => $options->{categories},
vendor => $options->{vendor},
hideOutput => $options->{quiet},
);
if ( !-d $root ) {
Cpanel::SafeDir::MK::safemkdir( $root, '0755', 2 );
if ( !-d $root ) {
die "Unable to create directory $root";
}
}
_wait_for_mirror_lock( $httpClient, $host, $url, $options );
### "$url/.cpanelsync.version",
if ( $options->{repo} ) {
# The intent with the unchecked exit code is apparently that the repo version needs to
# be updated at the start of the cpanelsync run so that it can be compared to the state
# at the end of the cpanelsync run.
$exit_code = check_repo_version( $options->{repo}, $httpClient, $host, $url );
}
my $dotcpanelsync = "$root/.cpanelsync";
my %OLDFILES;
my %NEWFILES;
if ( !-e $dotcpanelsync ) { ###
## if .cpanelsync does not exist, download/extract the .tar.bz2
my $basedir = $root;
my @DIRS = split m{ [/] }xms, $basedir;
pop @DIRS;
$basedir = join '/', @DIRS;
my $basename = $url;
my @BDIR = split m{ [/] }xms, $basename;
$basename = pop @BDIR;
if ( $basedir eq '' ) { $basedir = '/'; }
my $tarball = "$basedir/$basename.tar";
my $bz2 = "$tarball.bz2";
unlink $bz2;
### "http://${host}${url}.tar.bz2"
if ( eval { downloadfile( $httpClient, "http://${host}${url}.tar.bz2", $bz2, $options->{signed} ) } ) {
my $tarcfg = Cpanel::Tar::load_tarcfg();
system( $tarcfg->{'bin'}, '-x', '-p', $tarcfg->{'no_same_owner'}, '-j', '-v', '-C', $basedir, '-f', $bz2 );
unlink $bz2;
}
## TODO?: take the md5sums of the new files, and manipulate %OLDFILES (or %MD5LIST?)
}
else {
if ( open my $cpsync_fh, '<', $dotcpanelsync ) {
no warnings; # we will discard undef in our delete
local $/;
%OLDFILES = map { reverse( ( split( /===/, $_ ) )[ 0, 1 ] ) } split( /\n/, readline($cpsync_fh) );
delete @OLDFILES{''};
$OLDFILES{'.'} = 'd';
close $cpsync_fh;
}
}
my @FILELIST;
my $trycount = 0;
my $usebz2 = 1;
my $skipbz2 = 0;
# Download file list to sync
while (1) { ###
$trycount++;
if ( $trycount % 2 == 0 ) { $usebz2 = 0; }
else { $usebz2 = 1; }
my $target_url = "${url}/.cpanelsync";
my $staged_destfile = "${dotcpanelsync}.staged";
my $download_destfile = $staged_destfile;
if ( !$skipbz2 && $usebz2 ) {
$target_url .= '.bz2';
$download_destfile .= '.bz2';
}
eval { $httpClient->request( 'host' => $host, 'url' => $target_url, 'protocol' => 1, 'destfile' => $download_destfile, 'signed' => $options->{signed} ); };
# Note: signed requests will automatically unbzip the target to verify signatures
if ( !$@ && -e $staged_destfile ) {
if ( rename( $staged_destfile, $dotcpanelsync ) ) {
if ( open( my $cpanelsync_fh, $dotcpanelsync ) ) {
local $/;
@FILELIST = split( /\n/, readline($cpanelsync_fh) );
close($cpanelsync_fh);
}
}
else {
print "Failed to overwrite $dotcpanelsync: $!\n";
}
}
if ( -e "$dotcpanelsync.bz2" ) {
unlink "$dotcpanelsync.bz2";
$skipbz2 = 1;
}
last if ( @FILELIST && $FILELIST[-1] eq '.' );
if ( $trycount > 1 ) {
if ( $trycount == 10 ) {
print "Tried to download the sync file 10 times and failed!\n";
return 1;
}
downloadfailed($httpClient);
}
}
# Global excludes for handling excluded files from update or permission checks
my @excludes = Cpanel::Sync::Common::get_excludes($Cpanel::Sync::Common::cpanelsync_excludes);
my @chmod_excludes = Cpanel::Sync::Common::get_excludes($Cpanel::Sync::Common::cpanelsync_chmod_excludes);
my %MD5LIST;
loadmd5s( \%MD5LIST, $root ) if -e "$dotcpanelsync.md5s";
my @allowed_digests = Cpanel::Crypt::GPG::Settings::allowed_digest_algorithms();
foreach my $fileinfo (@FILELIST) { ###
chomp $fileinfo;
next if ( $fileinfo eq '.' );
## note: appending 'r' to these vars to denote that they represent info on the
## remote (incoming) resource. Ideally, they should be packaged in a hash,
## similar to how $target is handled.
## $rextra is either an md5 for 'file' $ftype, or symlink destination
## $rsha is only valid for 'file' types, and will contain a SHA512 digest for the file.
my ( $rtype, $rfile, $rperm, $rextra, $rsha ) = split( /===/, $fileinfo );
my $target_info = lstat_target( $root, $rfile );
## using %04d as $rperm is a string (comes from the .cpanelsync file)
$rperm = sprintf( "%04d", $rperm );
prune_OLDFILES( \%OLDFILES, $rfile, $rtype );
next if ( @excludes && is_excluded( \@excludes, $root, $rfile ) );
if ( $rtype eq 'f' ) {
$exit_code = handle_file( $target_info, \%MD5LIST, $root, $rfile, $rextra, $rsha, \@allowed_digests, $skipbz2, $httpClient, $host, $url, $Cpanel::Sync::Common::hasbzip2, $exit_code, $options->{repo}, \@chmod_excludes, $rperm, \%NEWFILES );
return $exit_code if ( $exit_code != 0 );
}
elsif ( $rtype eq 'd' ) {
handle_dir( $target_info, \@chmod_excludes, $root, $rfile, $rperm );
}
elsif ( $rtype eq 'l' ) {
handle_symlink( $target_info, $rextra );
}
}
my $saferoot = $root;
$saferoot =~ s/\.\///g;
handle_deletes( \@FILELIST, \%OLDFILES, $saferoot );
write_newlist( \%NEWFILES, $saferoot );
writemd5s( \%MD5LIST, $saferoot );
### "$url/.cpanelsync.version",
if ( $exit_code == 0 && $options->{repo} ) {
$exit_code = check_repo_version( $options->{repo}, 0, $httpClient, $host, $url );
}
if ( -x '/usr/local/cpanel/scripts/cpanelsync_postprocessor' ) {
system '/usr/local/cpanel/scripts/cpanelsync_postprocessor', $saferoot;
}
if ( -x '/usr/local/cpanel/scripts/cpanelsync_postprocessor.custom' ) {
system '/usr/local/cpanel/scripts/cpanelsync_postprocessor.custom', $saferoot;
}
return $exit_code;
}
sub downloadfile {
my ( $httpClient, $file, $where, $signed ) = @_;
$file =~ m!http://([^/]+)(.*)!;
my $host = $1;
my $url = $2;
$httpClient->request(
'host' => $1,
'url' => $2,
'protocol' => 1,
'destfile' => $where,
'signed' => $signed,
);
}
sub loadmd5s {
my ( $hr_MD5LIST, $dir ) = @_;
if ( open( my $md5_fh, '<', $dir . '/.cpanelsync.md5s' ) ) {
local $/;
%{$hr_MD5LIST} = map { $_ = [ split( /:::/, $_, 4 ) ]; $_->[0] => { 'size' => $_->[1], 'mtime' => $_->[2], 'md5' => $_->[3] } } split( /\n/, readline($md5_fh) );
close($md5_fh);
}
return;
}
sub write_newlist {
my ( $hr_NEWFILES, $dir ) = @_;
$dir =~ s/\/$//g;
open( my $new_fh, '>', $dir . '/.cpanelsync.new' ) || do {
warn "Could not write new list: " . $dir . '/.cpanelsync.new';
return;
};
print {$new_fh} join( "\n", keys %$hr_NEWFILES ) . ( scalar keys %$hr_NEWFILES ? "\n" : '' ); # as we did before
close($new_fh);
}
sub writemd5s {
my ( $hr_MD5LIST, $dir ) = @_;
$dir =~ s/\/$//g;
open( MD5, '>', $dir . '/.cpanelsync.md5s' ) || do {
warn "Could not write md5 cache: " . $dir . '/.cpanelsync.md5s';
return;
};
foreach my $filename ( keys %$hr_MD5LIST ) {
next if ( !$hr_MD5LIST->{$filename}{'used'} || substr( $filename, 0, 1 ) eq '/' );
print MD5 join( ':::', $filename, $hr_MD5LIST->{$filename}{'size'}, $hr_MD5LIST->{$filename}{'mtime'}, $hr_MD5LIST->{$filename}{'md5'} ) . "\n";
}
close(MD5);
}
sub downloadfailed {
my ($httpClient) = @_;
print 'Download Failed... trying again...in..';
if ($httpClient) {
$httpClient->disconnect();
}
my $sleepsecs = 60;
for ( my $i = $sleepsecs; $i > 0; $i-- ) {
print '..' . $i . '..';
sleep 1;
}
}
sub check_repo_version {
my ( $repo, $httpClient, $host, $url ) = @_;
my $local_repo_v;
if ( !-e '/var/cpanel' ) { mkdir( '/var/cpanel', 0755 ); }
if ( !-e '/var/cpanel/cpanelsync' ) { mkdir( '/var/cpanel/cpanelsync', 0755 ); }
if ( !-e '/var/cpanel/cpanelsync/repoversions' ) {
mkdir( '/var/cpanel/cpanelsync/repoversions', 0755 );
}
my $repo_fh;
open( $repo_fh, '<', '/var/cpanel/cpanelsync/repoversions/' . $repo ) && do {
$local_repo_v = readline($repo_fh);
chomp($local_repo_v);
close($repo_fh);
};
my ( $remote_repo_v, $status ) = $httpClient->request(
'exitOn404' => 0,
'host' => $host,
'url' => "$url/.cpanelsync.version",
'protocol' => 1,
);
if ($remote_repo_v) {
if ( !$local_repo_v || $remote_repo_v ne $local_repo_v ) {
open( my $repo_fh, '>', '/var/cpanel/cpanelsync/repoversions/' . $repo );
print {$repo_fh} $remote_repo_v;
close($repo_fh);
if ($local_repo_v) {
print "Repo: $repo : version changed from $local_repo_v to $remote_repo_v in mid sync. Sync needs to be restarted.\n";
return 16;
}
else {
print "Repo: $repo : learned new version: $remote_repo_v\n";
}
}
else {
print "Repo: $repo : check passed : local=$local_repo_v & remote=$remote_repo_v\n";
}
}
return 0;
}
sub is_excluded {
my ( $ar_excludes, $root, $rfile ) = @_;
if ( @{$ar_excludes} ) {
my $clean_rfile = $rfile;
$clean_rfile =~ s!^\./!!;
my $absfile = $root . '/' . $clean_rfile;
$absfile =~ tr{/}{}s;
$absfile =~ s{ [/] \z }{}xmsg;
## Note: to take advantage of the "implicit" exclusion of a directory's contents, as written
## the explicitly listed exclude directory must exist at the installation site.
if ( grep { $_ eq $absfile || ( -d $_ && $absfile =~ m/^\Q$_\E\// ) } @{$ar_excludes} ) {
print "Skipping sync of $absfile (check /etc/cpanelsync.exclude)\n";
return 1;
}
## Maintain support for old broken behavior --------------
$absfile = $root . '/' . $rfile;
$absfile =~ tr{/}{}s;
$absfile =~ s{ [/] \z }{}xmsg;
if ( grep { $_ eq $absfile } @{$ar_excludes} ) {
print "Skipping sync of $absfile (check /etc/cpanelsync.exclude)\n";
return 1;
}
## -------------------------------------------------------
}
return;
}
sub in_chmod_excludes {
my ( $ar_chmod_excludes, $root, $rfile ) = @_;
if (@$ar_chmod_excludes) {
my $clean_rfile = $rfile;
$clean_rfile =~ s/^\.\///;
my $absfile = $root . '/' . $clean_rfile;
$absfile =~ tr{/}{}s;
$absfile =~ s{ [/] \z }{}xmsg;
return 1 if ( grep { $_ eq $absfile } @$ar_chmod_excludes );
}
return;
}
sub handle_symlink {
my ( $target, $rextra ) = @_;
my $dolink = 0;
if ( !$target->{'exists'} ) {
$dolink = 1;
}
elsif ( $target->{'islnk'} ) {
if ( readlink $target->{'path'} ne $rextra ) {
unlink $target->{'path'};
$dolink = 1;
}
}
elsif ( $target->{'isnormfile'} ) {
unlink $target->{'path'};
$dolink = 1;
}
elsif ( $target->{'isdir'} ) {
system 'rm', '-rf', '--', $target->{'path'};
$dolink = 1;
}
if ($dolink) {
if ( symlink( $rextra, $target->{'path'} ) ) {
print "Created symlink $target->{'path'} -> $rextra successfully\n";
}
else {
print "Failed to create symlink $target->{'path'} -> $rextra: $!\n";
}
}
return;
}
sub handle_dir {
my ( $target, $ar_chmod_excludes, $root, $rfile, $rperm ) = @_;
## note: $rperm is an octal string (e.g. '0751')
if ( $target->{'islnk'} || $target->{'isnormfile'} ) {
unlink $target->{'path'};
$target->{'exists'} = 0;
}
if ( !$target->{'exists'} ) {
## FIX: used to be created with a hardcoded mode of '0755'. The only case this
## will not account for is a new directory that is also in chmod_excludes. I believe
## this to be a very edge case.
if ( Cpanel::SafeDir::MK::safemkdir( $target->{'path'}, $rperm, 2 ) ) {
print "Created directory $target->{'path'} successfully\n";
}
}
elsif ( ( !@$ar_chmod_excludes || !in_chmod_excludes( $ar_chmod_excludes, $root, $rfile ) )
&& sprintf( "%04o", ( $target->{'perm'} & 07777 ) ) ne $rperm ) {
if ( chmod( oct($rperm), $target->{'path'} ) ) {
print "Directory $target->{'path'} verified\n";
}
else {
print "Failed to update permissions on directory $target->{'path'}: $!";
}
}
}
sub handle_file { ###
my ( $target, $hr_MD5LIST, $root, $rfile, $rextra, $rsha, $allowed_digests_ar, $skipbz2, $httpClient, $host, $url, $hasbzip2, $exit_code, $repo, $ar_chmod_excludes, $rperm, $newfiles_ref ) = @_;
if ( $target->{'isdir'} ) {
system 'rm', '-rf', '--', $target->{'path'};
}
elsif ( $target->{'islnk'} ) {
unlink $target->{'path'};
}
my $local_digest = Cpanel::Sync::Common::get_digest_from_cache( $hr_MD5LIST, $target );
$local_digest ||= Cpanel::Sync::Digest::digest( $target->{'path'} );
if ( ( $target->{'isdir'} || $target->{'islnk'} || !$target->{'exists'} ) || ( $local_digest ne $rextra ) ) {
my $dfile = $rfile;
$dfile =~ s/^\.//g;
my $trycount = 0;
my $goodfile = 1;
my $usebz2 = 1;
my $pathtemp = $target->{'path'} . '-cpanelsync';
DOWNLOAD:
while (1) { ###
$trycount++;
if ( $trycount % 2 == 0 ) { $usebz2 = 0; }
else { $usebz2 = 1; }
unlink($pathtemp);
### "http://${host}${url}${dfile}.bz2" -or-
### "http://${host}${url}${dfile}"
if ( !$skipbz2 && $usebz2 && $dfile !~ m/\.bz2$/ ) {
downloadfile( $httpClient, "http://${host}${url}${dfile}.bz2", "$pathtemp.bz2" );
my $size = ( stat("$pathtemp.bz2") )[7];
if ( $size && $size > 0 ) {
Cpanel::Sync::Common::unbzip2("$pathtemp.bz2");
}
if ( -e "$pathtemp.bz2" ) {
## TODO: meaning what exactly? test with dashk
### TODO: I have no idea myself. Maybe someone else will figure it out.
print "$pathtemp.bz2 still exists\n";
unlink "$pathtemp.bz2";
$skipbz2 = 1;
next;
}
}
else {
downloadfile( $httpClient, "http://${host}${url}${dfile}", $pathtemp );
}
my $size = ( stat( $rfile . '-cpanelsync' ) )[7] || 0;
my %expected_digests = (
'md5' => $rextra,
'sha512' => $rsha,
);
for my $algo (@$allowed_digests_ar) {
my $expected_digest = $expected_digests{$algo};
my $real_digest = Cpanel::Sync::Digest::digest( $target->{'path'} . '-cpanelsync', { algo => $algo } );
if ( $real_digest && $expected_digest ) {
if ( $real_digest eq $expected_digest ) {
last DOWNLOAD;
}
else {
print "Digest mismatch (actual: $real_digest) (expected: $expected_digest) (size: $size)\n";
}
}
}
print "No valid digest found\n";
if ( $trycount > 1 ) {
if ( $trycount % 3 == 0 ) { $httpClient->skiphost(); }
if ( $trycount == 10 ) {
print "Tried to download the file $rfile 10 times and failed!\n";
if ($repo) {
return 16;
}
$goodfile = 0;
last;
}
### "$url/.cpanelsync.version",
if ($repo) {
$exit_code = check_repo_version( $repo, 0, $httpClient, $host, $url );
if ( $exit_code != 0 ) {
return $exit_code;
}
}
downloadfailed($httpClient);
}
}
if ($goodfile) {
print "Got file $rfile ok (digest matched)\n";
_goodfile_handle_chmod(
$ar_chmod_excludes, $root, $rfile, $target->{'perm'},
$pathtemp, $rperm
);
_goodfile_handle_rename( $target->{'path'} );
$newfiles_ref->{ $target->{'path'} } = 1;
$hr_MD5LIST->{$rfile} = $hr_MD5LIST->{ $rfile . '-cpanelsync' };
delete $hr_MD5LIST->{ $rfile . '-cpanelsync' };
}
else {
unlink $pathtemp;
}
}
else {
if ( ( !@$ar_chmod_excludes || !in_chmod_excludes( $ar_chmod_excludes, $root, $rfile ) )
&& $target->{'exists'}
&& ( sprintf( "%04o", ( $target->{'perm'} & 07777 ) ) ne $rperm ) ) {
chmod( oct($rperm), $target->{'path'} );
}
}
return 0;
}
sub _goodfile_handle_chmod {
my ( $ar_chmod_excludes, $root, $rfile, $origperm, $pathtemp, $rperm ) = @_;
## if file matches the chmod exclude list, chmod the new temp file with
## the mode from the old file
if ( @$ar_chmod_excludes && in_chmod_excludes( $ar_chmod_excludes, $root, $rfile ) && $origperm ) {
my $real_origperm = sprintf( "%04o", ( $origperm & 07777 ) );
chmod( oct($real_origperm), $pathtemp );
}
else {
chmod( oct($rperm), $pathtemp );
}
}
sub _goodfile_handle_rename {
my ($path) = @_;
unlink $path;
if ( -e $path ) {
if ( rename( $path, $path . '.unlink' ) ) {
unlink $path . '.unlink';
}
else {
unlink $path;
}
}
## the "rename || unlink" clause ideally should warn the user that the file did not make it to
## its production location. but this, as this runs as root, is hard-to-replicate.
rename( $path . '-cpanelsync', $path ) || unlink( $path . '-cpanelsync' );
return;
}
sub prune_OLDFILES {
my ( $hr_OLDFILES, $rfile, $rtype ) = @_;
if ( exists $hr_OLDFILES->{$rfile} ) {
# Handle transition from directory to a symlink
if ( $rtype eq 'l' && $hr_OLDFILES->{$rfile} ne 'l' ) {
foreach my $old_file ( keys %$hr_OLDFILES ) {
## delete from hash all subdirs of $rfile, which is becoming a link
if ( $old_file =~ m/^\Q$rfile\E\// ) {
delete $hr_OLDFILES->{$old_file};
}
}
}
delete $hr_OLDFILES->{$rfile};
}
return;
}
sub handle_deletes {
my ( $ar_FILELIST, $hr_OLDFILES, $saferoot ) = @_;
my @olddirectories;
my %EXCLUDE_DELETE;
if ( -e $saferoot . '/.cpanelsync.delete.exclude' && open( my $exc_fh, '<', $saferoot . '/.cpanelsync.delete.exclude' ) ) {
%EXCLUDE_DELETE = map { chomp($_); $_ => undef } (<$exc_fh>);
close($exc_fh);
}
## note: loop on @FILELIST to prevent mass deletion on an inadvertantly empty .cpanelsync
if ( scalar @$ar_FILELIST ) {
## adding 'sort' to guarantee an order for keys()
foreach my $oldfile ( sort keys %$hr_OLDFILES ) {
$oldfile =~ s/^\.\///g;
my @BASEDIR = split( /\//, $saferoot . '/' . $oldfile );
pop(@BASEDIR);
my $basedir = join( '/', @BASEDIR );
if ( -l $basedir ) {
print "Skipping cleanse of $saferoot/$oldfile (within symlinked directory)\n";
next;
}
if ( exists $EXCLUDE_DELETE{ $saferoot . '/' . $oldfile } ) {
print "Excluding file removal from previous tree: $saferoot/$oldfile\n";
next;
}
if ( -l $saferoot . '/' . $oldfile ) {
## ???: what sets the .keep files?
next if -e $saferoot . '/' . $oldfile . '.keep';
print "Removing symlink from previous tree: $saferoot/$oldfile\n";
unlink $saferoot . '/' . $oldfile or print "Unable to remove deprecated symlink $saferoot/$oldfile: $!\n";
}
elsif ( -d $saferoot . '/' . $oldfile ) {
push @olddirectories, $saferoot . '/' . $oldfile;
}
elsif ( -e _ ) {
## ???: what sets the .keep files?
next if -e $saferoot . '/' . $oldfile . '.keep';
print "Removing file from previous tree: $saferoot/$oldfile\n";
unlink $saferoot . '/' . $oldfile or print "Unable to remove deprecated file $saferoot/$oldfile: $!\n";
}
}
}
foreach my $dir ( reverse sort @olddirectories ) {
print "Removing directory from previous tree: $dir\n";
rmdir $dir or print "Unable to remove deprecated directory $dir: $!\n";
}
return;
}
sub lstat_target {
my ( $root, $rfile ) = @_;
my %target;
$target{'path'} = $root . '/' . $rfile;
$target{'path'} =~ s/^\.\///;
$target{'path'} =~ s/\/(?:\.\/)+/\//g;
$target{'path'} =~ s/\/{2,}/\//g;
my @_lstat = lstat( $target{'path'} );
## two slices to assign @_lstat indexes into %target
#'S_IFDIR', 0040000 == Directory
#'S_IFREG', 0100000 == Regular file
#'S_IFLNK', 0120000 == Symbolic link
@target{ 'perm', 'size', 'mtime', 'isdir', 'exists', 'isnormfile', 'islnk' } = (
@_lstat[ 2, 7, 9 ], #perm,size,mtime
( defined $_lstat[2] && $_lstat[2] & 0170000 ) == 0040000 ? 1 : 0, #isdir
defined $_lstat[2] ? 1 : 0, #exists
( defined $_lstat[2] && $_lstat[2] & 0170000 ) == 0100000 ? 1 : 0, #isnormfile
( defined $_lstat[2] && $_lstat[2] & 0170000 ) == 0120000 ? 1 : 0 #islnk
);
return \%target;
}
sub _usage {
print <<EO_USAGE;
Usage: cpanelsync [options] <host> [url] [root]
Options:
--help Brief help message
--nfok=[1|0] Exit on a 404 response from the mirror. Defaults off.
--repo=<name> Treats the sync source as a named repo that supports versioning.
--signed=[1|0] Enforce GPG signature verificaiton for the .cpanelsync files.
--vendor=<name> Specifies the vendor to use with GPG signature verification.
Defaults to 'cpanel'
--categories=<name> Specifies the vendor keyring to use with GPG signature verification.
Defaults based on the globally configured TweakSetting.
--quiet=1 Suppress HttpRequest output.
Arguments:
host The mirror to download from. Normally httpupdate.cpanel.net
url The mirror URL that represents the base of the cpanelsync repo.
Defaults to '/'
root The local directory that is being synced. Defaults to '/'.
Notes:
This script no longer supports syncing directly against named cPanel tier targets
such as RELEASE or STABLE. The cPanel update system in all releases after 11.30
uses a separate cpanelsync v2 system and should be updated using upcp or updatenow.
EO_USAGE
return 1;
}
sub _parse_argv {
my $argv_ar = shift;
my %options = (
nfok => 0,
repo => undef,
signed => 0,
categories => undef,
vendor => undef,
help => 0,
quiet => 0,
);
my $usage_flags = {};
foreach my $option_name ( keys %options ) {
$usage_flags->{$option_name} = \$options{$option_name};
}
my $help_called = 0;
my $usage_cr = sub { $help_called = 1; _usage(); };
Cpanel::Usage::wrap_options( { remove => 1 }, $argv_ar, $usage_cr, $usage_flags );
return 0 if ($help_called);
if ( $argv_ar->[0] && $argv_ar->[0] =~ m/404/ ) {
$options{nfok} = 1;
shift @$argv_ar;
}
my $host = $argv_ar->[0] || '';
my $url = $argv_ar->[1] || '/';
my $root = $argv_ar->[2] || '/';
if ( !$host || $host eq '' ) {
return _usage();
}
# Block accidental legacy use of cpanelsync to sync /scripts /usr/local/cpanel paths
# Only block if coming from cpanel servers so we don't break 3rd party addons
if ( $host =~ m{^httpupdate\w*.cpanel.net$}i
&& $url =~ m{^/cpanelsync/(BETA|CURRENT|DEMO|DNSONLY|EDGE|RELEASE|STABLE)} ) {
print "The use of cpanelsync to sync /scripts and/or most /usr/local/cpanel trees is unsupported in 11.30+\n";
print "Please run /usr/local/cpanel/scripts/upcp --force instead.\n";
return 1;
}
return ( undef, \%options, $host, $url, $root );
}
sub _wait_for_mirror_lock {
my ( $httpClient, $host, $url, $options ) = @_;
my $lock = 'locked';
my $sleep = 30;
my $lock_count = 0;
my $trycount = 0;
# Check for Locked file
### "$url/.cpanelsync.lock",
while ( $lock =~ m/locked/i ) {
# Unsigned request: no trust anchor, content is not sensitive
my ( $lock, $status ) = $httpClient->request(
'exitOn404' => $options->{nfok},
'host' => $host,
'url' => "$url/.cpanelsync.lock",
#http 1.1 on the first request, but drop the connection on the
#second one to not tie up the server
'protocol' => ( $lock_count == 0 ? 1 : 0 )
);
return 0 if ( $status == 0 );
last if ( !$lock || $lock !~ m/locked/i );
$lock_count++;
if ( $lock_count > 20 ) {
$sleep += 30;
}
elsif ( $lock_count == 20 ) {
$sleep = 120;
}
print "The update server is currently updating its files.\n";
print "It may take up to 30 minutes before access can be obtained.\n";
print "Waiting $sleep seconds for access to the update server......\n";
$httpClient->disconnect(); #do not leave the connection open
if ( ++$trycount % 30 == 0 ) { $httpClient->skiphost(); }
sleep $sleep;
print "Checking again....\n";
}
return;
}
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 |
|
| agent360.sh | File | 16.03 KB | 0700 |
|
| apachelimits | File | 4.31 KB | 0755 |
|
| archive_sync_zones | File | 3.05 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 | 7.8 KB | 0755 |
|
| buildeximconf | File | 7 KB | 0755 |
|
| buildhttpdconf | File | 2.6 KB | 0755 |
|
| buildpureftproot | File | 539 B | 0755 |
|
| ccs-check | File | 4.91 KB | 0755 |
|
| check_cpanel_pkgs | File | 10.75 KB | 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.56 KB | 0755 |
|
| check_plugin_pkgs | File | 2.45 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 |
|
| checkusers | File | 856 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.11 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.89 KB | 0755 |
|
| cleanupinterchange | File | 2.64 KB | 0755 |
|
| cleanupmysqlprivs | File | 773 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 | 26.12 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.81 KB | 0755 |
|
| cpanelsync | File | 28.31 KB | 0755 |
|
| cpanelsync_postprocessor | File | 1.62 KB | 0755 |
|
| cpanpingtest | File | 965 B | 0755 |
|
| cpbackup | File | 44.79 KB | 0755 |
|
| cpbackup_transport_file | File | 5.65 KB | 0755 |
|
| cpdig | File | 2.09 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 |
|
| create_default_featurelist | File | 11.61 KB | 0700 |
|
| createacct | File | 29.3 MB | 0700 |
|
| custom_backup_destination.pl.sample | File | 5.06 KB | 0755 |
|
| custom_backup_destination.pl.skeleton | File | 2.84 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.19 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.66 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.43 KB | 0755 |
|
| elevate-cpanel | File | 405.07 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 | 3.18 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.51 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 |
|
| 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 | 6.06 KB | 0755 |
|
| find_pids_with_inotify_watch_on_path | File | 3.66 KB | 0755 |
|
| fix-cpanel-perl | File | 28.44 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.69 KB | 0755 |
|
| fix_dns_zone_ttls | File | 1.34 KB | 0755 |
|
| fix_innodb_tables | File | 4.05 KB | 0755 |
|
| fix_reseller_acls | File | 10.7 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 | 18.39 KB | 0755 |
|
| fixrelayd | File | 1.74 KB | 0755 |
|
| fixrndc | File | 16.39 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 | 4.11 MB | 0700 |
|
| import_exim_data | File | 8.39 KB | 0755 |
|
| increase_filesystem_limits | File | 891 B | 0755 |
|
| initacls | File | 4.99 KB | 0755 |
|
| initfpsuexec | File | 444 B | 0755 |
|
| initialize_360monitoring | File | 2.76 KB | 0700 |
|
| 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 |
|
| install_tuxcare_els_php | File | 1.84 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 | 5.21 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.53 KB | 0755 |
|
| mailscannerupdate | File | 2.42 KB | 0755 |
|
| mainipcheck | File | 10 KB | 0755 |
|
| maintenance | File | 51.87 KB | 0755 |
|
| make_config | File | 407 B | 0644 |
|
| make_hostname_unowned | File | 1.16 KB | 0755 |
|
| manage_extra_marketing | File | 12.76 KB | 0700 |
|
| manage_greylisting | File | 16.19 KB | 0755 |
|
| manage_mysql_profiles | File | 16.33 KB | 0755 |
|
| migrate_ccs_to_cpdavd | File | 47.06 KB | 0755 |
|
| 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.07 KB | 0755 |
|
| modify_featurelist | File | 9.22 KB | 0700 |
|
| modify_packages | File | 3.64 KB | 0755 |
|
| modsec_vendor | File | 15.63 KB | 0755 |
|
| mysqlconnectioncheck | File | 6.72 KB | 0755 |
|
| mysqlpasswd | File | 4.14 KB | 0755 |
|
| named.ca | File | 1.57 KB | 0644 |
|
| named.rfc1912.zones | File | 774 B | 0644 |
|
| 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 | 1.98 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 | 88.2 KB | 0755 |
|
| post_snapshot | File | 2.09 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 | 2.73 KB | 0755 |
|
| process_site_templates | File | 7.27 KB | 0755 |
|
| proxydomains | File | 9.59 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 | 25.5 KB | 0755 |
|
| rebuildhttpdconf | File | 2.6 KB | 0755 |
|
| rebuildinstalledssldb | File | 2.85 KB | 0755 |
|
| rebuildippool | File | 509 B | 0755 |
|
| rebuilduserssldb | File | 948 B | 0755 |
|
| refresh-dkim-validity-cache | File | 5.97 KB | 0755 |
|
| regenerate_tokens | File | 2.18 KB | 0755 |
|
| remote_log_transfer | File | 11.6 KB | 0755 |
|
| remove_dovecot_index_files | File | 5.89 KB | 0755 |
|
| removeacct | File | 27.37 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.61 KB | 0755 |
|
| restartsrv | File | 3.19 KB | 0755 |
|
| restartsrv_apache | File | 422 B | 0755 |
|
| restartsrv_apache_php_fpm | File | 10.77 MB | 0755 |
|
| restartsrv_base | File | 10.77 MB | 0755 |
|
| restartsrv_bind | File | 10.77 MB | 0755 |
|
| restartsrv_chkservd | File | 427 B | 0755 |
|
| restartsrv_clamd | File | 10.77 MB | 0755 |
|
| restartsrv_cpanel_php_fpm | File | 10.77 MB | 0755 |
|
| restartsrv_cpanellogd | File | 10.77 MB | 0755 |
|
| restartsrv_cpdavd | File | 10.77 MB | 0755 |
|
| restartsrv_cpgreylistd | File | 10.77 MB | 0755 |
|
| restartsrv_cphulkd | File | 10.77 MB | 0755 |
|
| restartsrv_cpipv6 | File | 10.77 MB | 0755 |
|
| restartsrv_cpsrvd | File | 10.77 MB | 0755 |
|
| restartsrv_crond | File | 10.77 MB | 0755 |
|
| restartsrv_dnsadmin | File | 10.77 MB | 0755 |
|
| restartsrv_dovecot | File | 10.77 MB | 0755 |
|
| restartsrv_exim | File | 10.77 MB | 0755 |
|
| restartsrv_eximstats | File | 504 B | 0755 |
|
| restartsrv_ftpd | File | 426 B | 0755 |
|
| restartsrv_ftpserver | File | 911 B | 0755 |
|
| restartsrv_httpd | File | 10.77 MB | 0755 |
|
| restartsrv_imap | File | 437 B | 0755 |
|
| restartsrv_inetd | File | 2.47 KB | 0755 |
|
| restartsrv_ipaliases | File | 10.77 MB | 0755 |
|
| restartsrv_lmtp | File | 437 B | 0755 |
|
| restartsrv_mailman | File | 10.77 MB | 0755 |
|
| restartsrv_mysql | File | 10.77 MB | 0755 |
|
| restartsrv_named | File | 579 B | 0755 |
|
| restartsrv_nscd | File | 10.77 MB | 0755 |
|
| restartsrv_p0f | File | 10.77 MB | 0755 |
|
| restartsrv_pdns | File | 10.77 MB | 0755 |
|
| restartsrv_pop3 | File | 437 B | 0755 |
|
| restartsrv_postgres | File | 427 B | 0755 |
|
| restartsrv_postgresql | File | 10.77 MB | 0755 |
|
| restartsrv_powerdns | File | 442 B | 0755 |
|
| restartsrv_proftpd | File | 10.77 MB | 0755 |
|
| restartsrv_pureftpd | File | 10.77 MB | 0755 |
|
| restartsrv_queueprocd | File | 10.77 MB | 0755 |
|
| restartsrv_rsyslog | File | 10.77 MB | 0755 |
|
| restartsrv_rsyslogd | File | 437 B | 0755 |
|
| restartsrv_spamd | File | 10.77 MB | 0755 |
|
| restartsrv_sshd | File | 10.77 MB | 0755 |
|
| restartsrv_syslogd | File | 2.4 KB | 0755 |
|
| restartsrv_tailwatchd | File | 10.77 MB | 0755 |
|
| restartsrv_unknown | File | 10.77 MB | 0755 |
|
| restartsrv_xinetd | File | 422 B | 0755 |
|
| restorecpuserfromcache | File | 1.96 KB | 0755 |
|
| restorepkg | File | 47.21 MB | 0700 |
|
| rfc1912_zones.tar | File | 10 KB | 0644 |
|
| rpmup | File | 5.07 KB | 0755 |
|
| rsync-user-homedir.pl | File | 5.76 KB | 0755 |
|
| run_if_exists | File | 512 B | 0755 |
|
| run_plugin_lifecycle | File | 3.66 KB | 0700 |
|
| 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.4 KB | 0755 |
|
| securerailsapps | File | 3.58 KB | 0755 |
|
| securetmp | File | 16.76 KB | 0755 |
|
| sendicq | File | 474 B | 0755 |
|
| servicedomains | File | 9.59 KB | 0755 |
|
| set_mailman_archive_perms | File | 1.75 KB | 0755 |
|
| setpostgresconfig | File | 6.04 KB | 0755 |
|
| setup_greylist_db | File | 16.19 KB | 0755 |
|
| setup_modsec_db | File | 1.3 KB | 0755 |
|
| setup_systemd_timer_for_plugins | File | 3.92 KB | 0700 |
|
| setupftpserver | File | 10.47 KB | 0755 |
|
| setupmailserver | File | 9.39 KB | 0755 |
|
| setupnameserver | File | 12.6 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.08 KB | 0755 |
|
| suspendmysqlusers | File | 4.78 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 | 10.12 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.96 KB | 0755 |
|
| unsuspendmysqlusers | File | 7.1 KB | 0755 |
|
| upcp | File | 31.97 KB | 0755 |
|
| upcp-running | File | 2.7 KB | 0755 |
|
| upcp.static | File | 731.4 KB | 0755 |
|
| update-packages | File | 5.07 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_feature_flags | File | 957 B | 0755 |
|
| update_freebusy_data | File | 5.25 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.07 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 | 2.02 MB | 0755 |
|
| 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 |
|
| wwwacct | File | 29.3 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.23 KB | 0755 |
|
| zoneexists | File | 800 B | 0755 |
|