initial commit of file from CVS for smeserver-php on Sat Mar 23 15:31:58 AEDT 2024

This commit is contained in:
Trevor Batley
2024-03-23 15:31:58 +11:00
parent ba0cd7fb70
commit e590ff9746
164 changed files with 2705 additions and 2 deletions

View File

@@ -0,0 +1,87 @@
{
use esmith::ConfigDB;
my $pool_db = esmith::ConfigDB->open_ro('php') || esmith::ConfigDB->create('php');
foreach my $pool ($pool_db->get_all_by_prop(type => 'pool')){
my $version = $pool->prop('Version') || '';
my $status = $pool->prop('status') || 'enabled';
next unless ($version eq $PHP_VERSION && $status eq 'enabled');
my $key = $pool->key;
my $pool_name = 'php' . $version . '-' . $key;
my $memory_limit = $pool->prop('MemoryLimit') || '128M';
my $max_execution_time = $pool->prop('MaxExecutionTime') || '30';
my $max_input_time = $pool->prop('MaxInputTime') || '60';
my $allow_url_fopen = $pool->prop('AllowUrlFopen') || 'disabled';
my $post_max_size = $pool->prop('PostMaxSize') || '10M';
my $upload_max_filesize = $pool->prop('UploadMaxFilesize') || '10M';
my $file_upload = $pool->prop('FileUpload') || 'enabled';
my $open_basedir = $pool->prop('BaseDir') || undef;
my $disabled_functions = $pool->prop('DisabledFunctions') || 'system,show_source,' .
'symlink,exec,dl,shell_exec,' .
'passthru,phpinfo,' .
'escapeshellarg,escapeshellcmd';
my $user = $pool->prop('User') || 'www';
my $group = $pool->prop('Group') || $user;
my $max_children = $pool->prop('MaxChildren') || '15';
my $display_errors = $pool->prop('DisplayErrors') || 'disabled';
my $log_errors = $pool->prop('LogErrors') || 'disabled';
my $autoprepend = $pool->prop('AutoPrependFile') || 'enabled';
my $MailForceSender = $pool->prop('MailForceSender') || "php\@$DomainName";
# Format vars
my $autoprep = ( $autoprepend eq "disabled") ? "" : "/usr/share/php/auth_translation.php";
my $autoprepath = ( $autoprepend eq "disabled") ? "" : ",/usr/share/php/";
$file_upload = ($file_upload =~ m/^1|yes|on|enabled$/) ? 'on' : 'off';
$allow_url_fopen = ($allow_url_fopen =~ m/^1|yes|on|enabled$/) ? 'on' : 'off';
$display_errors = ($display_errors =~ m/^1|yes|on|enabled$/) ? 'on' : 'off';
$log_errors = ($log_errors =~ m/^1|yes|on|enabled$/) ? 'on' : 'off';
$disabled_functions = join(', ', split /[,;:]/, $disabled_functions);
$open_basedir = (defined $open_basedir) ? 'php_admin_value[open_basedir] = ' . join(':', split(/[,;:]/, $open_basedir . $autoprepath)) :
'; open_basedir is not set';
$OUT .=<<"_EOF";
[$pool_name]
user = $user
group = $group
listen.owner = root
listen.group = www
listen.mode = 0660
listen = /var/run/php-fpm/$pool_name.sock
pm = dynamic
pm.max_children = $max_children
pm.start_servers = 3
pm.min_spare_servers = 3
pm.max_spare_servers = 4
pm.max_requests = 1000
slowlog = /var/log/php/$key/slow.log
php_admin_value[session.save_path] = /var/lib/php/$key/session
php_admin_value[opcache.file_cache] = /var/lib/php/$key/opcache
php_admin_value[upload_tmp_dir] = /var/lib/php/$key/tmp
php_admin_value[sys_temp_dir] = /var/lib/php/$key/tmp
php_admin_value[mail.force_extra_parameters] = '-f $MailForceSender'
php_admin_flag[display_errors] = $display_errors
php_admin_flag[log_errors] = $log_errors
php_admin_value[error_log] = /var/log/php/$key/error.log
php_admin_value[memory_limit] = $memory_limit
php_admin_value[max_execution_time] = $max_execution_time
php_admin_value[post_max_size] = $post_max_size
php_admin_value[upload_max_filesize] = $upload_max_filesize
php_admin_value[max_input_time] = $max_input_time
php_admin_value[disable_functions] = $disabled_functions
php_admin_flag[allow_url_fopen] = $allow_url_fopen
php_admin_flag[file_upload] = $file_upload
php_admin_flag[session.cookie_httponly] = on
php_admin_flag[allow_url_include] = off
php_admin_value[auto_prepend_file] = $autoprep
php_value[session.save_handler] = files
$open_basedir
_EOF
}
}

View File

@@ -0,0 +1,84 @@
{
use esmith::AccountsDB;
use esmith::php;
my $a = esmith::AccountsDB->open_ro || die "Couldn't open the accounts database";
foreach my $ibay ($a->get_all_by_prop(type => 'ibay')){
my $version = PhpFpmVersionToUse($ibay);
my $dynamic = $ibay->prop('CgiBin') || 'disabled';
my $custom = $ibay->prop('CustomPool') || undef;
next unless ($dynamic eq 'enabled' && $version eq $PHP_VERSION && !$custom);
my $key = $ibay->key;
my $name = lc $key;
my $pool_name = 'php' . $version . '-' . $name;
my $memory_limit = $ibay->prop('MemoryLimit') || $defaultPHPproperties{'MemoryLimit'};
my $max_execution_time = (defined $ibay->prop('MaxExecutionTime') ) ? $ibay->prop('MaxExecutionTime') : $defaultPHPproperties{'MaxExecutionTime'};
my $max_input_time = (defined $ibay->prop('MaxInputTime'))? $ibay->prop('MaxInputTime') : $defaultPHPproperties{'MaxInputTime'};
my $allow_url_fopen = $ibay->prop('AllowUrlFopen') || $defaultPHPproperties{'AllowUrlFopen'};
my $post_max_size = $ibay->prop('PostMaxSize') || $defaultPHPproperties{'PostMaxSize'};
my $upload_max_filesize = $ibay->prop('UploadMaxFilesize') || $defaultPHPproperties{'UploadMaxFilesize'};
my $file_upload = $ibay->prop('FileUpload') || $defaultPHPproperties{'FileUpload'};
my $display_errors = $ibay->prop('DisplayErrors') || 'off'; #we do not set this one at php level to avoid to have a whole server displaying errors and security issues
my $error_reporting = $ibay->prop('ErrorReporting') || 'E_ALL & ~E_NOTICE & ~E_DEPRECATED & ~E_STRICT'; #same reason, we hardcoded the default
my $open_basedir = $ibay->prop('PHPBaseDir') || '/home/e-smith/files/ibays/' . $key . '/' . ':/var/lib/php/' . $key . '/';
my $disabled_functions = (defined $ibay->prop('DisabledFunctions')) ? $ibay->prop('DisabledFunctions') : $defaultPHPproperties{'DisabledFunctions'};
my $autoprepend = $ibay->prop('AutoPrependFile') || $defaultPHPproperties{'AutoPrependFile'};
my $MailForceSender = $ibay->prop('MailForceSender') || "$name\@$DomainName"; # TODO => check ibay associated domains.
my $limitExtensions = ( ($ibay->prop('AllowPHTML') || $defaultPHPproperties{'AllowPHTML'} ) eq 'enabled' ) ? "security.limit_extensions= .php .htm .html .phar .phtml .xml " : "";
# Format vars
my $autoprep = ( $autoprepend eq "disabled") ? "" : "/usr/share/php/auth_translation.php";
my $autoprepath = ( -d "/opt/remi/php$version/root/usr/share/pear/" && -d "/opt/remi/php$version/root/usr/share/php/" ) ? ":/usr/share/php/:/usr/share/pear/:/opt/remi/php$version/root/usr/share/pear/:/opt/remi/php$version/root/usr/share/php/" : ":/usr/share/php/:/usr/share/pear/";
$file_upload = ($file_upload =~ m/^1|yes|on|enabled$/) ? 'on' : 'off';
$allow_url_fopen = ($allow_url_fopen =~ m/^1|yes|on|enabled$/) ? 'on' : 'off';
$disabled_functions = join(', ', split /[,;:]/, $disabled_functions);
$display_errors = ($display_errors =~ m/^1|yes|on|enabled$/) ? 'on' : 'off';
$error_reporting = ($error_reporting eq 'E_ALL & ~E_NOTICE & ~E_DEPRECATED & ~E_STRICT') ? '; default error_reporting' : "php_value[error_reporting] = $error_reporting";
$open_basedir = join(':', split(/[,;:]/, $open_basedir . $autoprepath));
$OUT .=<<"_EOF" if ($version eq $PHP_VERSION);
[$pool_name]
user = www
group = www
listen.owner = root
listen.group = www
listen.mode = 0660
listen = /var/run/php-fpm/$pool_name.sock
pm = dynamic
pm.max_children = 15
pm.start_servers = 3
pm.min_spare_servers = 3
pm.max_spare_servers = 4
pm.max_requests = 1000
$limitExtensions
slowlog = /var/log/php/$key/slow.log
php_admin_value[session.save_path] = /var/lib/php/$key/session
php_admin_value[opcache.file_cache] = /var/lib/php/$key/opcache
php_admin_value[upload_tmp_dir] = /var/lib/php/$key/tmp
php_admin_value[sys_temp_dir] = /var/lib/php/$key/tmp
php_admin_value[mail.force_extra_parameters] = '-f $MailForceSender'
php_flag[display_errors] = $display_errors
$error_reporting
php_admin_flag[log_errors] = on
php_admin_value[error_log] = /var/log/php/$key/error.log
php_admin_value[memory_limit] = $memory_limit
php_admin_value[max_execution_time] = $max_execution_time
php_admin_value[post_max_size] = $post_max_size
php_admin_value[upload_max_filesize] = $upload_max_filesize
php_admin_value[max_input_time] = $max_input_time
php_admin_value[disable_functions] = $disabled_functions
php_admin_flag[allow_url_fopen] = $allow_url_fopen
php_admin_flag[file_upload] = $file_upload
php_admin_flag[session.cookie_httponly] = on
php_admin_flag[allow_url_include] = off
php_value[session.save_handler] = files
php_admin_value[auto_prepend_file] = $autoprep
php_admin_value[open_basedir] = $open_basedir
_EOF
}
}

View File

@@ -0,0 +1,22 @@
{
use esmith::ConfigDB;
my $c = esmith::ConfigDB->open_ro || die "Couldn't opeen the configuration database\n";
my $srv = ( $PHP_VERSION ne '') ? 'php' . $PHP_VERSION . '-php-fpm' : 'php-fpm';
my $php = $c->get( $srv );
if ($php){
$MemoryLimit = $php->prop('MemoryLimit') || '128M';
$MaxExecutionTime = $php->prop('MaxExecutionTime') || '30';
$MaxInputTime = $php->prop('MaxInputTime') || '60';
$AllowUrlFopen = $php->prop('AllowUrlFopen') || 'off';
$MaxChildren = $php->prop('MaxChildren') || '15';
$PostMaxSize = $php->prop('PostMaxSize') || '10M';
$UploadMaxFilesize = $php->prop('UploadMaxFilesize') || '10M';
$OpenBasedir = $php->prop('OpenBasedir') || undef;
$DisableFunctions = $php->prop('DisableFunctions') || 'system,show_source,' .
'symlink,exec,dl,shell_exec,' .
'passthru,phpinfo,' .
'escapeshellarg,escapeshellcmd';
}
return "";
}
[php{ $PHP_VERSION }]

View File

@@ -0,0 +1,2 @@
user = www
group = www

View File

@@ -0,0 +1,4 @@
listen.owner = root
listen.group = www
listen.mode = 0660
listen = /var/run/php-fpm/php{ $PHP_VERSION }.sock

View File

@@ -0,0 +1,7 @@
pm = dynamic
pm.max_children = { $MaxChildren }
pm.start_servers = 3
pm.min_spare_servers = 3
pm.max_spare_servers = 4
pm.max_requests = 5000
request_terminate_timeout = { $MaxExecutionTime }

View File

@@ -0,0 +1,11 @@
{
$OUT .=<<_EOF;
php_admin_value[session.save_path] = /var/lib/php/php$PHP_VERSION/session
php_admin_value[soap.wsdl_cache_dir] = /var/lib/php/php$PHP_VERSION/wsdlcache
php_admin_value[opcache.file_cache] = /var/lib/php/php$PHP_VERSION/opcache
php_admin_value[upload_tmp_dir] = /var/lib/php/php$PHP_VERSION/tmp
php_admin_value[sys_temp_dir] = /var/lib/php/php$PHP_VERSION/tmp
_EOF
}
php_admin_value[error_log] = /var/log/php/php{ $PHP_VERSION }/error.log
slowlog = /var/log/php/php{ $PHP_VERSION }/slow.log

View File

@@ -0,0 +1,22 @@
php_admin_value[mail.force_extra_parameters] = '-f { "php\@$DomainName" }'
php_admin_flag[display_errors] = off
php_admin_flag[log_errors] = on
php_admin_value[memory_limit] = { $MemoryLimit }
php_admin_value[max_execution_time] = { $MaxExecutionTime }
php_admin_value[post_max_size] = { $PostMaxSize }
php_admin_value[upload_max_filesize] = { $UploadMaxFilesize }
php_admin_value[max_input_time] = { $MaxInputTime }
{
if ($OpenBasedir){
$OUT .= "php_admin_value[open_basedir] = " . join( ':', (split(/[;,:]/, "$OpenBasedir,/usr/share/php/")) ) . "\n";
}
if ($DisableFunctions){
$OUT .= "php_admin_value[disable_functions] = " . join( ', ', (split(/[;,:]/, $DisableFunctions)) ) . "\n";
}
}
php_admin_flag[allow_url_fopen] = { $AllowUrlFopen }
php_admin_flag[file_upload] = { $FileUpload }
php_admin_flag[session.cookie_httponly] = on
php_admin_flag[allow_url_include] = off
php_admin_value[auto_prepend_file] = /usr/share/php/auth_translation.php
php_admin_value[session.save_handler] = files