PNG  IHDR* pHYs+ IDATx]n#; cdLb Ǚ[at¤_:uP}>!Usă cag޿ ֵNu`ݼTâabO7uL&y^wFٝA"l[|ŲHLN밪4*sG3|Dv}?+y߉{OuOAt4Jj.u]Gz*҉sP'VQKbA1u\`& Af;HWj hsO;ogTu uj7S3/QzUr&wS`M$X_L7r2;aE+ώ%vikDA:dR+%KzƉo>eOth$z%: :{WwaQ:wz%4foɹE[9<]#ERINƻv溂E%P1i01 |Jvҗ&{b?9g=^wζXn/lK::90KwrюO\!ջ3uzuGv^;騢wq<Iatv09:tt~hEG`v;3@MNZD.1]L:{ծI3`L(÷ba")Y.iljCɄae#I"1 `3*Bdz>j<fU40⨬%O$3cGt]j%Fߠ_twJ;ABU8vP3uEԑwQ V:h%))LfraqX-ۿX]v-\9I gl8tzX ]ecm)-cgʒ#Uw=Wlێn(0hPP/ӨtQ“&J35 $=]r1{tLuǮ*i0_;NƝ8;-vݏr8+U-kruȕYr0RnC]*ެ(M:]gE;{]tg(#ZJ9y>utRDRMdr9㪩̞zֹb<ģ&wzJM"iI( .ꮅX)Qw:9,i좜\Ԛi7&N0:asϓc];=ΗOӣ APqz93 y $)A*kVHZwBƺnWNaby>XMN*45~ղM6Nvm;A=jֲ.~1}(9`KJ/V F9[=`~[;sRuk]rєT!)iQO)Y$V ی ۤmzWz5IM Zb )ˆC`6 rRa}qNmUfDsWuˤV{ Pݝ'=Kֳbg,UҘVz2ﴻnjNgBb{? ߮tcsͻQuxVCIY۠:(V뺕 ٥2;t`@Fo{Z9`;]wMzU~%UA蛚dI vGq\r82iu +St`cR.6U/M9IENDB`#!/usr/local/cpanel/3rdparty/bin/perl # cpanel - scripts/cpaddonsup 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 use strict; ## no critic qw(TestingAndDebugging::RequireUseWarnings) use Cpanel::Logger (); use Cpanel::Locale (); use Cpanel::SafeRun::Errors (); use Whostmgr::Cpaddon (); exit if -e '/etc/cpaddonsupdisable'; my $logger = Cpanel::Logger->new(); my $locale = Cpanel::Locale->get_handle(); my $cpaddons_dir = '/usr/local/cpanel/cpaddons'; my $cpanel_log_dir = '/var/cpanel/logs'; if ( !-d $cpaddons_dir ) { mkdir $cpaddons_dir or $logger->die( $locale->maketext( 'Failed to create “[_1]”: [_2]', $cpaddons_dir, $! ) ); } require $cpaddons_dir . '/cPAddonsAvailable.pm'; die $@ if $@; my @current; { no warnings 'once'; foreach my $namespace ( keys %cPAddonsAvailable::list, keys %{ Whostmgr::Cpaddon::get_installed_addons() } ) { my $dirver = $namespace; $dirver =~ s{[:]{2}}{/}g; push @current, $namespace if -d "$cpaddons_dir/$dirver/"; } } my $force = ( grep { $_ eq '--force' } @ARGV ) ? 1 : 0; my $html = ( grep { $_ eq '--nohtml' } @ARGV ) ? 0 : 1; if ( !-d $cpanel_log_dir ) { mkdir $cpanel_log_dir or $logger->warn( $locale->maketext( 'Failed to create “[_1]”: [_2]', $cpanel_log_dir, $! ) ); } # Clear log files older than 30 days my $thirty_days = 30 * 24 * 60 * 60; if ( opendir my $log_dh, $cpanel_log_dir ) { my $now = time(); while ( my $file = readdir $log_dh ) { next if $file !~ m/^cpaddonsup\.(\d+)/; my $age = $1; if ( ( $age + $thirty_days ) < $now ) { unlink $cpanel_log_dir . '/' . $file; } } closedir $log_dh; } if ( @current || $force ) { my $param = !$html ? 'action=update-nohtml' : 'action=update'; $param .= '&force=1' if $force; foreach my $cpaddon (@current) { $param = join '&', $param, qq{$cpaddon=1}; } $ENV{'REMOTE_USER'} = "root"; my $now = time(); my $old_umask = umask(0077); # Case 92381: Logs should not be world-readable. if ( open my $out_fh, '>', $cpanel_log_dir . '/cpaddonsup.' . $now . '.txt' ) { umask($old_umask); print {$out_fh} scalar Cpanel::SafeRun::Errors::saferunallerrors( '/usr/local/cpanel/whostmgr/docroot/cgi/cpaddons.pl', qq{$param} ); if ($html) { print {$out_fh} '

' . $locale->maketext( 'Output from command: [_1] “[_2]”', '/usr/local/cpanel/whostmgr/docroot/cgi/cpaddons.pl', $param ) . "

\n\n"; } else { print {$out_fh} $locale->maketext( 'Output from command: [_1] “[_2]”', '/usr/local/cpanel/whostmgr/docroot/cgi/cpaddons.pl', $param ) . "\n\n"; } close $out_fh; } else { umask($old_umask); $logger->warn( $locale->maketext( 'Could not write log file “[_1]”: [_2]', "${cpanel_log_dir}/cpaddonsup.${now}.txt", $! ) ); print scalar Cpanel::SafeRun::Errors::saferunallerrors( '/usr/local/cpanel/whostmgr/docroot/cgi/cpaddons.pl', qq{$param} ); } }