From f49fd5f0f741696f38acbb9553d319b2d65fb5c4 Mon Sep 17 00:00:00 2001 From: Michael Kaufmann Date: Wed, 9 Nov 2022 17:07:48 +0100 Subject: [PATCH] show replacer-variables in php-config add/edit and fpm-versions add/edit; catch potential Exception thrown by Form::processForm() to display the error nicely; minor fixes in field-visibility for phpconfigs depending on php-interface and webserver; validate fcgid/fpm enable-flag correctly if not POST'ed at the same time (older behaviour) Signed-off-by: Michael Kaufmann --- admin_phpsettings.php | 8 +-- admin_settings.php | 32 +++++++----- lib/Froxlor/Validate/Check.php | 6 +++ .../phpconfig/formfield.fpmconfig_add.php | 52 +++++++++++++++++++ .../phpconfig/formfield.fpmconfig_edit.php | 52 +++++++++++++++++++ .../phpconfig/formfield.phpconfig_add.php | 2 +- .../phpconfig/formfield.phpconfig_edit.php | 3 +- 7 files changed, 136 insertions(+), 19 deletions(-) diff --git a/admin_phpsettings.php b/admin_phpsettings.php index e8ea11b0..77cb6912 100644 --- a/admin_phpsettings.php +++ b/admin_phpsettings.php @@ -212,9 +212,10 @@ if ($page == 'overview') { } else { $fpmconfig_add_data = include_once dirname(__FILE__) . '/lib/formfields/admin/phpconfig/formfield.fpmconfig_add.php'; - UI::view('user/form.html.twig', [ + UI::view('user/form-replacers.html.twig', [ 'formaction' => $linker->getLink(['section' => 'phpsettings', 'page' => 'fpmdaemons']), - 'formdata' => $fpmconfig_add_data['fpmconfig_add'] + 'formdata' => $fpmconfig_add_data['fpmconfig_add'], + 'replacers' => $fpmconfig_add_data['fpmconfig_replacers'] ]); } } else { @@ -282,9 +283,10 @@ if ($page == 'overview') { } else { $fpmconfig_edit_data = include_once dirname(__FILE__) . '/lib/formfields/admin/phpconfig/formfield.fpmconfig_edit.php'; - UI::view('user/form.html.twig', [ + UI::view('user/form-replacers.html.twig', [ 'formaction' => $linker->getLink(['section' => 'phpsettings', 'page' => 'fpmdaemons', 'id' => $id]), 'formdata' => $fpmconfig_edit_data['fpmconfig_edit'], + 'replacers' => $fpmconfig_edit_data['fpmconfig_replacers'], 'editid' => $id ]); } diff --git a/admin_settings.php b/admin_settings.php index df45b28e..4a8f384e 100644 --- a/admin_settings.php +++ b/admin_settings.php @@ -79,23 +79,27 @@ if ($page == 'overview' && $userinfo['change_serversettings'] == '1') { Response::standardError(lng('error.session_timeout'), lng('error.session_timeout_desc')); } - if (Form::processForm($settings_data, $_POST, [ - 'filename' => $filename, - 'action' => $action, - 'page' => $page - ], $_part, $settings_all, $settings_part, $only_enabledisable)) { - $log->logAction(FroxlorLogger::ADM_ACTION, LOG_INFO, "rebuild configfiles due to changed setting"); - Cronjob::inserttask(TaskId::REBUILD_VHOST); - // Using nameserver, insert a task which rebuilds the server config - Cronjob::inserttask(TaskId::REBUILD_DNS); - // cron.d file - Cronjob::inserttask(TaskId::REBUILD_CRON); - - Response::standardSuccess('settingssaved', '', [ + try { + if (Form::processForm($settings_data, $_POST, [ 'filename' => $filename, 'action' => $action, 'page' => $page - ]); + ], $_part, $settings_all, $settings_part, $only_enabledisable)) { + $log->logAction(FroxlorLogger::ADM_ACTION, LOG_INFO, "rebuild configfiles due to changed setting"); + Cronjob::inserttask(TaskId::REBUILD_VHOST); + // Using nameserver, insert a task which rebuilds the server config + Cronjob::inserttask(TaskId::REBUILD_DNS); + // cron.d file + Cronjob::inserttask(TaskId::REBUILD_CRON); + + Response::standardSuccess('settingssaved', '', [ + 'filename' => $filename, + 'action' => $action, + 'page' => $page + ]); + } + } catch (Exception $e) { + Response::dynamicError($e->getMessage(), $e->getCode()); } } else { $_part = isset($_GET['part']) ? $_GET['part'] : ''; diff --git a/lib/Froxlor/Validate/Check.php b/lib/Froxlor/Validate/Check.php index 12f346a2..2c487da5 100644 --- a/lib/Froxlor/Validate/Check.php +++ b/lib/Froxlor/Validate/Check.php @@ -85,6 +85,12 @@ class Check ]; } } + } elseif ((int)Settings::Get($check_array[$fieldname]['other_enabled']) == 1) { + // not in the same POST so we still need to check whether the other one's enabled + $returnvalue = [ + self::FORMFIELDS_PLAUSIBILITY_CHECK_ERROR, + $check_array[$fieldname]['other_enabled_lng'] + ]; } if (in_array(self::FORMFIELDS_PLAUSIBILITY_CHECK_OK, $returnvalue)) { // be sure to deactivate the other one for the froxlor-vhost diff --git a/lib/formfields/admin/phpconfig/formfield.fpmconfig_add.php b/lib/formfields/admin/phpconfig/formfield.fpmconfig_add.php index 15313085..0f8d005d 100644 --- a/lib/formfields/admin/phpconfig/formfield.fpmconfig_add.php +++ b/lib/formfields/admin/phpconfig/formfield.fpmconfig_add.php @@ -116,5 +116,57 @@ return [ ] ] ] + ], + 'fpmconfig_replacers' => [ + 'replacers' => [ + [ + 'var' => 'PEAR_DIR', + 'description' => lng('admin.phpconfig.pear_dir') + ], + [ + 'var' => 'OPEN_BASEDIR_C', + 'description' => lng('admin.phpconfig.open_basedir_c') + ], + [ + 'var' => 'OPEN_BASEDIR', + 'description' => lng('admin.phpconfig.open_basedir') + ], + [ + 'var' => 'OPEN_BASEDIR_GLOBAL', + 'description' => lng('admin.phpconfig.open_basedir_global') + ], + [ + 'var' => 'TMP_DIR', + 'description' => lng('admin.phpconfig.tmp_dir') + ], + [ + 'var' => 'CUSTOMER_EMAIL', + 'description' => lng('admin.phpconfig.customer_email') + ], + [ + 'var' => 'ADMIN_EMAIL', + 'description' => lng('admin.phpconfig.admin_email') + ], + [ + 'var' => 'DOMAIN', + 'description' => lng('admin.phpconfig.domain') + ], + [ + 'var' => 'CUSTOMER', + 'description' => lng('admin.phpconfig.customer') + ], + [ + 'var' => 'ADMIN', + 'description' => lng('admin.phpconfig.admin') + ], + [ + 'var' => 'DOCUMENT_ROOT', + 'description' => lng('admin.phpconfig.docroot') + ], + [ + 'var' => 'CUSTOMER_HOMEDIR', + 'description' => lng('admin.phpconfig.homedir') + ] + ] ] ]; diff --git a/lib/formfields/admin/phpconfig/formfield.fpmconfig_edit.php b/lib/formfields/admin/phpconfig/formfield.fpmconfig_edit.php index 224fbe87..49f5daf7 100644 --- a/lib/formfields/admin/phpconfig/formfield.fpmconfig_edit.php +++ b/lib/formfields/admin/phpconfig/formfield.fpmconfig_edit.php @@ -119,5 +119,57 @@ return [ ] ] ] + ], + 'fpmconfig_replacers' => [ + 'replacers' => [ + [ + 'var' => 'PEAR_DIR', + 'description' => lng('admin.phpconfig.pear_dir') + ], + [ + 'var' => 'OPEN_BASEDIR_C', + 'description' => lng('admin.phpconfig.open_basedir_c') + ], + [ + 'var' => 'OPEN_BASEDIR', + 'description' => lng('admin.phpconfig.open_basedir') + ], + [ + 'var' => 'OPEN_BASEDIR_GLOBAL', + 'description' => lng('admin.phpconfig.open_basedir_global') + ], + [ + 'var' => 'TMP_DIR', + 'description' => lng('admin.phpconfig.tmp_dir') + ], + [ + 'var' => 'CUSTOMER_EMAIL', + 'description' => lng('admin.phpconfig.customer_email') + ], + [ + 'var' => 'ADMIN_EMAIL', + 'description' => lng('admin.phpconfig.admin_email') + ], + [ + 'var' => 'DOMAIN', + 'description' => lng('admin.phpconfig.domain') + ], + [ + 'var' => 'CUSTOMER', + 'description' => lng('admin.phpconfig.customer') + ], + [ + 'var' => 'ADMIN', + 'description' => lng('admin.phpconfig.admin') + ], + [ + 'var' => 'DOCUMENT_ROOT', + 'description' => lng('admin.phpconfig.docroot') + ], + [ + 'var' => 'CUSTOMER_HOMEDIR', + 'description' => lng('admin.phpconfig.homedir') + ] + ] ] ]; diff --git a/lib/formfields/admin/phpconfig/formfield.phpconfig_add.php b/lib/formfields/admin/phpconfig/formfield.phpconfig_add.php index 40dfd6a9..f21a66b9 100644 --- a/lib/formfields/admin/phpconfig/formfield.phpconfig_add.php +++ b/lib/formfields/admin/phpconfig/formfield.phpconfig_add.php @@ -102,7 +102,7 @@ return [ 'value' => '5s' ], 'phpfpm_pass_authorizationheader' => [ - 'visible' => Settings::Get('phpfpm.enabled') == 1, + 'visible' => Settings::Get('phpfpm.enabled') == 1 && Settings::Get('system.webserver') == "apache2", 'label' => lng('admin.phpsettings.pass_authorizationheader'), 'type' => 'checkbox', 'value' => '1', diff --git a/lib/formfields/admin/phpconfig/formfield.phpconfig_edit.php b/lib/formfields/admin/phpconfig/formfield.phpconfig_edit.php index 9b25d47d..c3860cda 100644 --- a/lib/formfields/admin/phpconfig/formfield.phpconfig_edit.php +++ b/lib/formfields/admin/phpconfig/formfield.phpconfig_edit.php @@ -105,13 +105,14 @@ return [ 'value' => $result['fpm_reqslow'] ], 'phpfpm_pass_authorizationheader' => [ - 'visible' => Settings::Get('phpfpm.enabled') == 1, + 'visible' => Settings::Get('phpfpm.enabled') == 1 && Settings::Get('system.webserver') == "apache2", 'label' => lng('admin.phpsettings.pass_authorizationheader'), 'type' => 'checkbox', 'value' => '1', 'checked' => $result['pass_authorizationheader'] ], 'override_fpmconfig' => [ + 'visible' => Settings::Get('phpfpm.enabled') == 1, 'label' => lng('serversettings.phpfpm_settings.override_fpmconfig'), 'type' => 'checkbox', 'value' => '1',