Server IP : 103.119.228.120 / Your IP : 3.15.228.162 Web Server : Apache System : Linux v8.techscape8.com 3.10.0-1160.119.1.el7.tuxcare.els2.x86_64 #1 SMP Mon Jul 15 12:09:18 UTC 2024 x86_64 User : nobody ( 99) PHP Version : 5.6.40 Disable Function : shell_exec,symlink,system,exec,proc_get_status,proc_nice,proc_terminate,define_syslog_variables,syslog,openlog,closelog,escapeshellcmd,passthru,ocinum cols,ini_alter,leak,listen,chgrp,apache_note,apache_setenv,debugger_on,debugger_off,ftp_exec,dl,dll,myshellexec,proc_open,socket_bind,proc_close,escapeshellarg,parse_ini_filepopen,fpassthru,exec,passthru,escapeshellarg,escapeshellcmd,proc_close,proc_open,ini_alter,popen,show_source,proc_nice,proc_terminate,proc_get_status,proc_close,pfsockopen,leak,apache_child_terminate,posix_kill,posix_mkfifo,posix_setpgid,posix_setsid,posix_setuid,dl,symlink,shell_exec,system,dl,passthru,escapeshellarg,escapeshellcmd,myshellexec,c99_buff_prepare,c99_sess_put,fpassthru,getdisfunc,fx29exec,fx29exec2,is_windows,disp_freespace,fx29sh_getupdate,fx29_buff_prepare,fx29_sess_put,fx29shexit,fx29fsearch,fx29ftpbrutecheck,fx29sh_tools,fx29sh_about,milw0rm,imagez,sh_name,myshellexec,checkproxyhost,dosyayicek,c99_buff_prepare,c99_sess_put,c99getsource,c99sh_getupdate,c99fsearch,c99shexit,view_perms,posix_getpwuid,posix_getgrgid,posix_kill,parse_perms,parsesort,view_perms_color,set_encoder_input,ls_setcheckboxall,ls_reverse_all,rsg_read,rsg_glob,selfURL,dispsecinfo,unix2DosTime,addFile,system,get_users,view_size,DirFiles,DirFilesWide,DirPrintHTMLHeaders,GetFilesTotal,GetTitles,GetTimeTotal,GetMatchesCount,GetFileMatchesCount,GetResultFiles,fs_copy_dir,fs_copy_obj,fs_move_dir,fs_move_obj,fs_rmdir,SearchText,getmicrotime MySQL : ON | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : ON | Pkexec : ON Directory : /scripts/ |
Upload File : |
#!/usr/local/cpanel/3rdparty/bin/perl # cpanel - scripts/userdirctl 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; use warnings; use Cpanel::Config::LoadUserDomains (); use Cpanel::Config::CpConfGuard (); use Cpanel::Config::LoadConfig (); use Cpanel::ConfigFiles::Apache 'apache_paths_facade'; # see POD for import specifics use Cpanel::ConfigFiles::Apache::Config (); use Cpanel::SafeFile (); use Cpanel::Logger (); use Cpanel::WildcardDomain (); use Cpanel::HttpUtils::ApRestart::BgSafe (); my $logger = Cpanel::Logger->new(); my $ctl = lc shift @ARGV; if ( $ctl !~ /^o(n|ff)$/ ) { die "$0: usage: $0 <on|off>"; } exit if ( !-e apache_paths_facade->bin_httpd() ); my $apache_conf = Cpanel::ConfigFiles::Apache::Config::get_config(); my $bad_mod; if ( $apache_conf->{'supported'}{'mpm_itk'} || $apache_conf->{'supported'}{'itk'} ) { $bad_mod = 'Apache MPM-ITK'; } elsif ( $apache_conf->{'supported'}{'mod_ruid2'} ) { $bad_mod = 'mod_ruid2'; } elsif ( $apache_conf->{'supported'}{'mod_passenger'} ) { $bad_mod = 'mod_passenger'; } #Do not allow use of mod_userdir if running apache mpm-itk or ruid2 or mod_passenger due to security implications if ( $ctl eq 'on' && $bad_mod ) { print "Detected $bad_mod in use.\n"; print "Using both mod_userdir and $bad_mod is not a supported configuration.\n"; print "Changes were not saved.\n"; exit; } my $cpconf_guard = Cpanel::Config::CpConfGuard->new(); $cpconf_guard->{'data'}->{'userdirprotect'} = $ctl eq 'on' ? 1 : 0; $cpconf_guard->save(); my $UDS = Cpanel::Config::LoadConfig::loadConfig( '/var/cpanel/moddirdomains', {}, '\s*[:]\s*', '^\s*[#]' ); my $userdomains = Cpanel::Config::LoadUserDomains::loaduserdomains( {}, 1 ); my $httplock = Cpanel::SafeFile::safeopen( \*HC, "+<", apache_paths_facade->file_conf() ); if ( !$httplock ) { $logger->die( 'Could not edit ' . apache_paths_facade->file_conf() ); } my @CFILE; while (<HC>) { push( @CFILE, $_ ); } seek( HC, 0, 0 ); my ( $bh, $ivh, $iuserdir, $userdirl, $killuserdir ); foreach (@CFILE) { my $line = $_; if ( !( $line =~ /^#/ ) ) { if ( $line =~ /<virtualhost/i ) { $bh = 1; $ivh = 1; } if ( $line =~ /<ifmodule\s*mod_userdir/i && $ivh ) { $iuserdir = 1; $userdirl = ''; $killuserdir = 0; } if ( $line =~ /^\s*userdir\s+/i && !$ivh ) { print HC $line; next; } if ( $iuserdir && $line =~ /<\/ifmodule/i && $ivh ) { $iuserdir = 0; if ($killuserdir) { $userdirl = ''; next; } else { print HC $userdirl; $userdirl = ''; } } if ( $line =~ /<\/virtualhost/i ) { $ivh = 0; } if ( $ivh && $ctl eq "on" ) { if ( $line =~ /^\s*Userdir\s*disabled/i ) { $bh = 0; } if ( $line =~ /ServerName\s*(\S+)/i ) { my $sn = $1; $sn =~ s/^www\.//g; # decode servername to match against userdomains $sn = Cpanel::WildcardDomain::decode_wildcard_domain($sn); if ($bh) { my $owner = $userdomains->{$sn} || ''; if ( $owner ne "" && $owner ne "root" && $owner ne "*" && getpwnam($owner) ) { if ( $UDS->{$sn} ne "-1" ) { print HC " <IfModule mod_userdir.c>\n"; print HC " UserDir disabled\n"; print HC " UserDir enabled ${owner} $UDS->{$sn}\n"; print HC " </IfModule>\n"; } } else { if ( $UDS->{"DefaultHost"} ne "-1" ) { print HC " <IfModule mod_userdir.c>\n"; print HC " UserDir disabled\n"; print HC " UserDir enabled " . $UDS->{"DefaultHost"} . "\n" if ( $UDS->{'DefaultHost'} ); print HC " </IfModule>\n"; } } } } } if ( $ivh && $ctl eq "off" ) { $killuserdir = 1; if ( $line =~ /^\s*Userdir\s*disable/i ) { next; } } } if ($iuserdir) { $userdirl .= $line; } elsif ( $line =~ /^\s*userdir/i ) { next; } else { print HC $line; } } truncate( HC, tell(HC) ); Cpanel::SafeFile::safeclose( \*HC, $httplock ); Cpanel::HttpUtils::ApRestart::BgSafe::restart(); print "Your changes have been saved.\n";