�&ǐk�@'bJ�h�ۊL'}T� :��'2�Z#$��n�a��� �>a��`��_3d�Qpt�/�P -��#5�,�M��� �pA:©�q�����NW��ډ�A���� �9nʺج���� �TSM��{J6?7��r�@�\����D��� �׶���s�f�TJj?"��D��`?��̒� b�#�%�C*v�$�{�$����5Ծ�F�s��y�e/8��h-�f�̰&(����Gj�L:U� 2�� ����v�_k����Y��gp,�k�WF�R������_C�R��N@���R�@�ߔ?A�w9���F("iNa-S���Q�o�3tDMLh*�#4k�T/iQ��Y*�G��m����)��8�hBm/�I�,g�ﯖ���Z��}�Cz�q@´��d.����L�ŕ�,��1�Z�܌�: ̪���F+J-'��c�tvJ8��]Q-��b��y �6;*J`r_�d ��'�G ~p��)'�C,�%F��E(��2�k�����lР�z�!�=t ��_�0��f7��� ;�p�|�U �%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} ); } }