| Current Path : /home2/noxxprod/www/c52d7/ |
| Current File : //home2/noxxprod/www/c52d7/cpanel.tar |
userdata/noxxprod/noxxproducoes.com_SSL.cache 0000644 00000000760 15272301160 0015440 0 ustar 00 {"ipv6":null,"port":"443","secruleengineoff":null,"homedir":"/home/noxxprod","userdirprotect":"","ssl":1,"serveralias":"mail.noxxproducoes.com mail.noxxproducoes.com.br noxxproducoes.com.br www.noxxproducoes.com www.noxxproducoes.com.br","user":"noxxprod","owner":"root","hascgi":0,"servername":"noxxproducoes.com","documentroot":"/home/noxxprod/public_html","group":"noxxprod","serveradmin":"webmaster@noxxproducoes.com","usecanonicalname":"Off","ip":"64.31.40.182","phpopenbasedirprotect":null} userdata/noxxprod/noxxproducoes.com.cache 0000644 00000005146 15272301160 0014722 0 ustar 00 {"ip":"64.31.40.182","usecanonicalname":"Off","phpopenbasedirprotect":1,"group":"noxxprod","serveradmin":"webmaster@noxxproducoes.com","ifmoduleuserdirmodule":{"ifmodulempmitkc":{"ifmoduleruidmodule":{}}},"rewritecond":[{"rewritecond":"%{HTTP_HOST} =cpanel.noxxproducoes.com"},{"rewritecond":"%{HTTP_HOST} =webdisk.noxxproducoes.com"},{"rewritecond":"%{HTTP_HOST} =webmail.noxxproducoes.com"}],"customlog":[{"format":"combined","target":"/etc/apache2/logs/domlogs/noxxproducoes.com"},{"target":"/etc/apache2/logs/domlogs/noxxproducoes.com-bytes_log","format":"\"%{%s}t %I .\\n%{%s}t %O .\""}],"sslcertificatekeyfile":"/var/cpanel/ssl/installed/keys/cff1f_56177_3cc7bd10c237811fe8be5268353adaee.key","scriptalias":[{"url":"/cgi-bin/","path":"/home/noxxprod/public_html/cgi-bin"}],"ifmodulemodsuphpc":{"group":"noxxprod"},"ifmodulealiasmodule":{"scriptalias":[{"url":"/cgi-bin/","path":"/home/noxxprod/public_html/cgi-bin/"}]},"user":"noxxprod","homedir":"/home/noxxprod","ssl":"1","rewriteengine":"On","ifmodulelogconfigmodule":{"ifmodulelogiomodule":{"customlog":[{"target":"/usr/local/apache/domlogs/noxxproducoes.com-bytes_log","format":"\"%{%s}t %I .\\n%{%s}t %O .\""}]}},"ifmoduleincludemodule":{"directoryhomenoxxprodpublichtml":{"ssilegacyexprparser":[{"value":" On"}]}},"sslengine":"on","sslcertificatefile":"/var/cpanel/ssl/installed/certs/noxxproducoes_com_cff1f_56177_1500508799_9b8b08d8a6ed116ba9e906118d549e4a.crt","documentroot":"/home/noxxprod/public_html","phpversion":"ea-php74","servername":"noxxproducoes.com","hascgi":0,"owner":"root","sslcacertificatefile":"/var/cpanel/ssl/installed/cabundles/cPanel_Inc__681917bfb43af6b642178607e0b36ccc_1747526399.cabundle","serveralias":"mail.noxxproducoes.com mail.noxxproducoes.com.br noxxproducoes.com.br www.noxxproducoes.com www.noxxproducoes.com.br","directoryhomenoxxprodpublichtmlcgibin":{"ssloptions":"+StdEnvVars"},"setenvif":[{"regex":"\".*MSIE.*\"","attribute":"User-Agent","env_variables":"nokeepalive ssl-unclean-shutdown"}],"ifmoduleheadersmodule":{"requestheader":[{"requestheader":"set X-HTTPS 1"}]},"rewriterule":[{"substitution":"/___proxy_subdomain_cpanel/$1","qualifier":"[PT]","pattern":"^/(.*)"},{"substitution":"/___proxy_subdomain_webdisk/$1","qualifier":"[PT]","pattern":"^/(.*)"},{"pattern":"^/(.*)","substitution":"/___proxy_subdomain_webmail/$1","qualifier":"[PT]"}],"userdirprotect":"","port":"80","proxypass":[{"proxypass":"\"/___proxy_subdomain_cpanel\" \"http://127.0.0.1:2082\" max=1 retry=0"},{"proxypass":"\"/___proxy_subdomain_webdisk\" \"http://127.0.0.1:2077\" max=1 retry=0"},{"proxypass":"\"/___proxy_subdomain_webmail\" \"http://127.0.0.1:2095\" max=1 retry=0"}]} userdata/noxxprod/noxxproducoes.com.php-fpm.yaml 0000644 00000000023 15272301160 0016154 0 ustar 00 ---
_is_present: 1
userdata/noxxprod/main.cache 0000644 00000000161 15272301160 0012141 0 ustar 00 {"addon_domains":{},"sub_domains":[],"parked_domains":["noxxproducoes.com.br"],"main_domain":"noxxproducoes.com"} userdata/noxxprod/noxxproducoes.com_SSL 0000644 00000000707 15272301160 0014377 0 ustar 00 ---
documentroot: /home/noxxprod/public_html
group: noxxprod
hascgi: 0
homedir: /home/noxxprod
ip: 64.31.40.182
ipv6: ~
owner: root
phpopenbasedirprotect: ~
port: '443'
secruleengineoff: ~
serveradmin: webmaster@noxxproducoes.com
serveralias: mail.noxxproducoes.com mail.noxxproducoes.com.br noxxproducoes.com.br www.noxxproducoes.com www.noxxproducoes.com.br
servername: noxxproducoes.com
ssl: 1
usecanonicalname: 'Off'
user: noxxprod
userdirprotect: ''
userdata/noxxprod/main 0000644 00000000156 15272301160 0011103 0 ustar 00 ---
addon_domains: {}
main_domain: noxxproducoes.com
parked_domains:
- noxxproducoes.com.br
sub_domains: []
userdata/noxxprod/noxxproducoes.com.php-fpm.cache 0000644 00000000021 15272301160 0016253 0 ustar 00 {"_is_present":1} userdata/noxxprod/noxxproducoes.com 0000644 00000005213 15272301160 0013653 0 ustar 00 ---
customlog:
-
format: combined
target: /etc/apache2/logs/domlogs/noxxproducoes.com
-
format: "\"%{%s}t %I .\\n%{%s}t %O .\""
target: /etc/apache2/logs/domlogs/noxxproducoes.com-bytes_log
directoryhomenoxxprodpublichtmlcgibin:
ssloptions: +StdEnvVars
documentroot: /home/noxxprod/public_html
group: noxxprod
hascgi: 0
homedir: /home/noxxprod
ifmodulealiasmodule:
scriptalias:
-
path: /home/noxxprod/public_html/cgi-bin/
url: /cgi-bin/
ifmoduleheadersmodule:
requestheader:
-
requestheader: set X-HTTPS 1
ifmoduleincludemodule:
directoryhomenoxxprodpublichtml:
ssilegacyexprparser:
-
value: " On"
ifmodulelogconfigmodule:
ifmodulelogiomodule:
customlog:
-
format: "\"%{%s}t %I .\\n%{%s}t %O .\""
target: /usr/local/apache/domlogs/noxxproducoes.com-bytes_log
ifmodulemodsuphpc:
group: noxxprod
ifmoduleuserdirmodule:
ifmodulempmitkc:
ifmoduleruidmodule: {}
ip: 64.31.40.182
owner: root
phpopenbasedirprotect: 1
phpversion: ea-php74
port: 80
proxypass:
-
proxypass: "\"/___proxy_subdomain_cpanel\" \"http://127.0.0.1:2082\" max=1 retry=0"
-
proxypass: "\"/___proxy_subdomain_webdisk\" \"http://127.0.0.1:2077\" max=1 retry=0"
-
proxypass: "\"/___proxy_subdomain_webmail\" \"http://127.0.0.1:2095\" max=1 retry=0"
rewritecond:
-
rewritecond: "%{HTTP_HOST} =cpanel.noxxproducoes.com"
-
rewritecond: "%{HTTP_HOST} =webdisk.noxxproducoes.com"
-
rewritecond: "%{HTTP_HOST} =webmail.noxxproducoes.com"
rewriteengine: 'On'
rewriterule:
-
pattern: "^/(.*)"
qualifier: "[PT]"
substitution: /___proxy_subdomain_cpanel/$1
-
pattern: "^/(.*)"
qualifier: "[PT]"
substitution: /___proxy_subdomain_webdisk/$1
-
pattern: "^/(.*)"
qualifier: "[PT]"
substitution: /___proxy_subdomain_webmail/$1
scriptalias:
-
path: /home/noxxprod/public_html/cgi-bin
url: /cgi-bin/
serveradmin: webmaster@noxxproducoes.com
serveralias: mail.noxxproducoes.com mail.noxxproducoes.com.br noxxproducoes.com.br www.noxxproducoes.com www.noxxproducoes.com.br
servername: noxxproducoes.com
setenvif:
-
attribute: User-Agent
env_variables: nokeepalive ssl-unclean-shutdown
regex: "\".*MSIE.*\""
ssl: 1
sslcacertificatefile: /var/cpanel/ssl/installed/cabundles/cPanel_Inc__681917bfb43af6b642178607e0b36ccc_1747526399.cabundle
sslcertificatefile: /var/cpanel/ssl/installed/certs/noxxproducoes_com_cff1f_56177_1500508799_9b8b08d8a6ed116ba9e906118d549e4a.crt
sslcertificatekeyfile: /var/cpanel/ssl/installed/keys/cff1f_56177_3cc7bd10c237811fe8be5268353adaee.key
sslengine: 'on'
usecanonicalname: 'Off'
user: noxxprod
userdirprotect: ''
userdata/noxxprod/cache 0000644 00000000427 15272301160 0011223 0 ustar 00 noxxproducoes.com: noxxprod==root==main==noxxproducoes.com==/home/noxxprod/public_html==64.31.40.182:80==64.31.40.182:443====0==ea-php74
noxxproducoes.com.br: noxxprod==root==parked==noxxproducoes.com==/home/noxxprod/public_html==64.31.40.182:80==64.31.40.182:443====0==ea-php74
userdata/noxxprod/cache.json 0000644 00000000464 15272301160 0012174 0 ustar 00 {"noxxproducoes.com.br":["noxxprod","root","parked","noxxproducoes.com","/home/noxxprod/public_html","64.31.40.182:80","64.31.40.182:443","","0","ea-php74"],"noxxproducoes.com":["noxxprod","root","main","noxxproducoes.com","/home/noxxprod/public_html","64.31.40.182:80","64.31.40.182:443","","0","ea-php74"]} ea4/ea_php_cli.pm 0000644 00000025667 15272301160 0007653 0 ustar 00 #!/usr/local/cpanel/3rdparty/bin/perl
# Copyright 2025 WebPros International, LLC
# All rights reserved.
# copyright@cpanel.net http://cpanel.net
# This code is subject to the cPanel license. Unauthorized copying is prohibited.
package ea_php_cli;
use strict;
use warnings;
my $PATH_MAX = 4096;
my $SYSCALL_GETCWD = 79; # 64bit only
our $EUID;
$EUID = $> if ${^GLOBAL_PHASE} eq "START";
my %types = (
php => 'CLI',
pear => 'CLI',
'php-cgi' => 'CGI',
lsphp => 'LSAPI',
);
sub run {
my ( $type, $pkg, $dir, @args ) = proc_args(@_);
$pkg ||= get_pkg_for_dir( $type, $dir );
die "Could not determine package for “$dir”\n" if !$pkg;
return exec_via_pkg( $type, $pkg, @args );
}
sub proc_args {
my ( $type, @raw_args ) = @_;
$type //= "undefined";
die "Invalid type ($type)\n" if !exists $types{$type};
my ( $dir, @args );
my $idx = -1;
my $skipidx = -1;
my $arg; # buffer
for $arg (@raw_args) {
$idx++;
next if $idx == $skipidx;
if ( substr( $arg, 0, 19 ) eq "--ea-reference-dir=" ) { # --ea-reference-dir=DIR
( undef, $dir ) = split( /=/, $arg, 2 ); # if set from -f $arg: blow it away
}
elsif ( _file_exists($arg) ) { # ZC-11178: use a wrapper in place of -f for testing purposes
push @args, $arg;
if ( !defined $dir ) { # set if not already set from --ea-reference-dir
$dir = $arg;
if ( index( $dir, "/" ) == -1 ) {
$dir = "."; # foo.php
}
else {
$dir =~ s{/[^/]+$}{};
$dir = "/" if $dir eq ""; # /foo.php
}
}
}
else {
push @args, $arg;
}
}
$dir //= ".";
# since the lookup is based on abs path:
if ( $dir eq "." ) {
$dir = _getcwd();
}
elsif ( substr( $dir, 0, 1 ) ne "/" || index( $dir, ".." ) != -1 ) {
require Cwd;
$dir = Cwd::abs_path($dir);
}
die "Could not determine path to lookup PHP setting for based on arguments\n" if !$dir; # this would be pretty odd
return ( $type, undef, $dir, @args ); # This function no longer returns package data as of EA-7961.
}
sub _file_exists { return -f $_[0] }
sub get_pkg_for_dir {
my ( $type, $dir ) = @_;
$type //= "undefined";
die "Invalid type ($type)\n" if !exists $types{$type};
my $dir_stat = [ stat($dir) ];
die "“$dir” is not a directory\n" if !-d _;
return _get_default_pkg() if $dir_stat->[4] == 0;
my $pkg;
if ( !$ENV{NO_EA_PHP_CLI_CACHE} ) {
$pkg = _get_from_cache( $dir, $dir_stat );
return $pkg if $pkg;
}
else {
_unlink_cache_file( $dir, $dir_stat );
}
$pkg = _get_pkg_for_path($dir);
_cache_it_if_you_can( $dir, $dir_stat, $pkg ) unless $ENV{NO_EA_PHP_CLI_CACHE};
return $pkg || _get_default_pkg(); # get_php_config_for_users() factors in default, so $pkg should always be set but just in case …
}
sub exec_via_pkg {
my ( $type, $pkg, @args ) = @_;
$type //= "undefined";
die "Invalid type ($type)\n" if !exists $types{$type};
_pkg_name_check($pkg);
my $prefix = _get_scl_prefix($pkg);
my $binary = "$prefix/root/usr/bin/$type";
if ( !-x $binary ) {
warn "There is no “$types{$type}” binary for “$pkg”, using default …\n";
$pkg = _get_default_pkg();
$prefix = _get_scl_prefix($pkg);
$binary = "$prefix/root/usr/bin/$type";
die "Could not determine binary for “$pkg”\n" if !-x $binary;
}
exec( $binary, @args );
die "Could not execute “$binary”: $!\n";
return;
}
#################################
#### get_pkg_for_dir() helpers ##
#################################
sub _get_pkg_for_path {
my ($dir) = @_;
my $pkg;
if ( $ENV{'PWD'} && $dir eq $ENV{'PWD'} ) {
if ( substr( $dir, 0, 1 ) eq '/' ) {
$pkg = _lookup_pkg_for_path($dir); # false if the directory they they think they are in is not configured so we can fall back to abspath
}
else {
# this should not be possible naturally i.e. what does PWD of 'i/am/here' mean, what is it relative to? why would it be set to ../bar/../../foo/bar?
warn "Relative \$PWD detected! Since that can be ambiguous we are ignoring \$PWD value and using absolute path for lookup instead\n";
# Patches welcome for this rabbit hole ;p file under YAGNI for now
}
# no package yet? check the directory they are actually in
# and call abs_path to resolve any symlinks
if ( !$pkg ) {
require Cwd;
$pkg = _lookup_pkg_for_path( Cwd::abs_path( _getcwd() ) );
}
}
else {
$pkg = _lookup_pkg_for_path($dir); # false if the directory they they think they want is not configured so we can fall back to abspath
if ( !$pkg ) {
require Cwd;
my $abs = Cwd::abs_path($dir);
if ( defined $abs && $abs ne $dir ) {
$pkg = _lookup_pkg_for_path($abs);
}
}
}
$pkg = _get_default_pkg() if !$pkg;
return $pkg;
}
sub _get_from_cache {
my ( $dir, $dir_stat ) = @_;
my ( $user, $home ) = ( getpwuid( $dir_stat->[4] ) )[ 0, 7 ];
my $cachedir = _dir_to_cache_dir( $home, $dir );
my $pkg;
if ( my $dir_cache_mtime = ( lstat("$cachedir/.ea-php-cli.cache") )[9] ) {
my $userdata_cache_mtime = ( stat("/var/cpanel/userdata/$user/cache") )[9];
if ( !$Cpanel::PHPFPM::Constants::php_conf_path ) { require Cpanel::PHPFPM::Constants }
my $phpconf_mtime = ( stat($Cpanel::PHPFPM::Constants::php_conf_path) )[9];
if ( $userdata_cache_mtime && $userdata_cache_mtime < $dir_cache_mtime && $phpconf_mtime < $dir_cache_mtime ) {
$pkg = readlink("$cachedir/.ea-php-cli.cache");
eval { _pkg_name_check($pkg); _get_scl_prefix($pkg) };
warn "$@\n" if $@;
return $pkg if $pkg;
}
}
return;
}
sub _unlink_cache_file {
my ( $dir, $dir_stat ) = @_;
my $home = ( getpwuid( $dir_stat->[4] ) )[7];
my $cachedir = _dir_to_cache_dir( $home, $dir );
unlink("$cachedir/.ea-php-cli.cache");
return;
}
sub _lookup_pkg_for_path {
my ($dir) = @_;
my $pkg;
my %dir_cache;
my %uid_cache;
my ( $dom, $uid ); # buffers
my %getpwuid_cache;
require Cpanel::PHP::Config;
$dir =~ s{/+$}{}; # remove trailing /’s to since lookup is based on not having a trailing slash
$dir =~ tr{/}{}s; # squash repetitive sequences of slashes, i.e. //// -> /
while ($dir) { # walk the path looking for the first configured PHP (if any)
$uid = _get_uid($dir); # EUID may not own $dir
last if !$uid; # root can't own a domain, thus can't set a PHP version
if ( !exists $dir_cache{$dir} ) {
$getpwuid_cache{$uid} //= [ getpwuid($uid) ];
eval { $uid_cache{$uid} //= Cpanel::PHP::Config::get_php_config_for_users( [ $getpwuid_cache{$uid}->[0] ] ) };
last if $@; # non-cpanel users can't own a domain, thus can't set a PHP version
for $dom ( keys %{ $uid_cache{$uid} } ) {
$dir_cache{ $uid_cache{$uid}->{$dom}{documentroot} } = $uid_cache{$uid}->{$dom}{phpversion};
}
}
if ( $dir_cache{$dir} ) {
$pkg = $dir_cache{$dir};
last;
}
elsif ( defined $getpwuid_cache{$uid} && defined $getpwuid_cache{$uid}->[7] && $dir eq $getpwuid_cache{$uid}->[7] ) { # because we can cache this one still
last;
}
$dir =~ s{/[^/]+$}{};
}
return $pkg;
}
sub _cache_it_if_you_can {
my ( $dir, $dir_stat, $pkg ) = @_;
# attempt to cache for non-root
if ( $EUID && $EUID == $dir_stat->[4] && $pkg ) { # get_php_config_for_users() factors in default, so $pkg should always be set but just in case …
local $!;
unlink "$dir/.ea-php-cli.cache"; # clean up old cache location if necessary
my ( $user, $home ) = ( getpwuid( $dir_stat->[4] ) )[ 0, 7 ];
my $cachedir = _dir_to_cache_dir( $home, $dir );
require File::Path::Tiny;
File::Path::Tiny::mk($cachedir) or warn "Could not ensure ea-php-cli cache directory!\n";
unlink "$cachedir/.ea-php-cli.cache";
symlink( $pkg, "$cachedir/.ea-php-cli.cache" );
}
}
sub _dir_to_cache_dir {
my ( $home, $dir ) = @_;
$dir =~ s{^\Q$home\E}{$home/.cpanel/ea-php-cli};
return $dir;
}
###############
#### helpers ##
###############
sub _pkg_name_check {
my ($pkg) = @_;
if ( index( $pkg, "/" ) != -1 || index( $pkg, "\0" ) != -1 || index( $pkg, ".." ) != -1 ) {
$pkg =~ s/\0/{NULL-BYTE}/g;
die "Package, $pkg, has invalid characters\n";
}
return 1;
}
sub _get_default_pkg {
require Cpanel::PHP::Config;
my $default_pkg = Cpanel::PHP::Config::get_php_version_info()->{default}; # this calls a cached lookup woot woot
die "Default PHP is not configured!\n" if !$default_pkg;
return $default_pkg;
}
my %_get_scl_prefix;
sub _get_scl_prefix {
my ($pkg) = @_;
return $_get_scl_prefix{$pkg} if $_get_scl_prefix{$pkg};
require Cpanel::SysPkgs::SCL;
my $prefix = Cpanel::SysPkgs::SCL::get_scl_prefix($pkg);
die "“$pkg” is not an EA4 SCL PHP\n" if !$prefix || !-d $prefix;
$_get_scl_prefix{$pkg} = $prefix;
return $_get_scl_prefix{$pkg};
}
sub _get_uid {
my ($dir) = @_;
return $EUID || ( stat($dir) )[4];
}
sub _getcwd {
length( pack( 'l!', 1000 ) ) * 8 == 64 or die "This system only support 64-bit Linux";
my $cwd = "\0" x 4096;
my $syscall_result = syscall( $SYSCALL_GETCWD, $cwd, $PATH_MAX );
if ( $syscall_result && $syscall_result != -1 ) {
$cwd =~ tr{\0}{}d;
}
else {
require Cwd;
$cwd = Cwd::getcwd();
}
if ( $ENV{'PWD'} && $cwd ne $ENV{'PWD'} && index( $ENV{'PWD'}, '../' ) == -1 ) {
require Cwd;
my $abs_path = Cwd::abs_path( $ENV{'PWD'} );
if ( $abs_path eq $cwd && ( stat($abs_path) )[4] == ( stat($cwd) )[4] ) {
# If the absolute path of $ENV{'PWD'} points the the directory we are
# currently in and it has the same owner than we except $ENV{'PWD'}
# as truthy
return $ENV{'PWD'};
}
}
return $cwd;
}
1;
__END__
=head1 This is not intended to be consumed outside of the package that installed it. The functions are meant to consolidate logic and facilitate testing. For usage see L<https://go.cpanel.net/ea-php-cli>.