Files
Froxlor/actions/admin/settings/130.webserver.php
Michael Kaufmann f396bd5184 add otp security check to critical settings
Signed-off-by: Michael Kaufmann <d00p@froxlor.org>
2023-07-10 13:40:48 +02:00

428 lines
13 KiB
PHP

<?php
/**
* This file is part of the Froxlor project.
* Copyright (c) 2010 the Froxlor Team (see authors).
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, you can also view it online at
* https://files.froxlor.org/misc/COPYING.txt
*
* @copyright the authors
* @author Froxlor team <team@froxlor.org>
* @license https://files.froxlor.org/misc/COPYING.txt GPLv2
*/
use Froxlor\Settings;
return [
'groups' => [
'webserver' => [
'title' => lng('admin.webserversettings'),
'icon' => 'fa-solid fa-server',
'fields' => [
'system_webserver' => [
'label' => lng('admin.webserver'),
'settinggroup' => 'system',
'varname' => 'webserver',
'type' => 'select',
'default' => 'apache2',
'select_var' => [
'apache2' => 'Apache 2',
'lighttpd' => 'ligHTTPd',
'nginx' => 'Nginx'
],
'save_method' => 'storeSettingField',
'plausibility_check_method' => [
'\\Froxlor\\Validate\\Check',
'checkPhpInterfaceSetting'
],
'requires_reconf' => ['http']
],
'system_apache_24' => [
'label' => lng('serversettings.apache_24'),
'settinggroup' => 'system',
'varname' => 'apache24',
'type' => 'checkbox',
'default' => false,
'save_method' => 'storeSettingField',
'websrv_avail' => [
'apache2'
]
],
'system_apacheitksupport' => [
'label' => lng('serversettings.apache_itksupport'),
'settinggroup' => 'system',
'varname' => 'apacheitksupport',
'type' => 'checkbox',
'default' => false,
'save_method' => 'storeSettingField',
'visible' => (Settings::Get('system.mod_fcgid') == 0 && Settings::Get('phpfpm.enabled') == 0),
'websrv_avail' => [
'apache2'
],
'advanced_mode' => true
],
'system_http2_support' => [
'label' => lng('serversettings.http2_support'),
'settinggroup' => 'system',
'varname' => 'http2_support',
'type' => 'checkbox',
'default' => false,
'save_method' => 'storeSettingField',
'websrv_avail' => [
'apache2',
'nginx'
],
'visible' => Settings::Get('system.use_ssl')
],
'system_dhparams_file' => [
'label' => lng('serversettings.dhparams_file'),
'settinggroup' => 'system',
'varname' => 'dhparams_file',
'type' => 'text',
'string_type' => 'file',
'string_emptyallowed' => true,
'default' => '',
'save_method' => 'storeSettingField',
'visible' => Settings::Get('system.use_ssl'),
'advanced_mode' => true
],
'system_httpuser' => [
'label' => lng('admin.webserver_user'),
'settinggroup' => 'system',
'varname' => 'httpuser',
'type' => 'text',
'default' => 'www-data',
'save_method' => 'storeSettingWebserverFcgidFpmUser'
],
'system_httpgroup' => [
'label' => lng('admin.webserver_group'),
'settinggroup' => 'system',
'varname' => 'httpgroup',
'type' => 'text',
'default' => 'www-data',
'save_method' => 'storeSettingField'
],
'system_apacheconf_vhost' => [
'label' => lng('serversettings.apacheconf_vhost'),
'settinggroup' => 'system',
'varname' => 'apacheconf_vhost',
'type' => 'text',
'string_type' => 'filedir',
'default' => '/etc/apache2/sites-enabled/',
'save_method' => 'storeSettingField',
'requires_reconf' => ['http']
],
'system_apacheconf_diroptions' => [
'label' => lng('serversettings.apacheconf_diroptions'),
'settinggroup' => 'system',
'varname' => 'apacheconf_diroptions',
'type' => 'text',
'string_type' => 'filedir',
'default' => '/etc/apache2/sites-enabled/',
'save_method' => 'storeSettingField',
'requires_reconf' => ['http']
],
'system_apacheconf_htpasswddir' => [
'label' => lng('serversettings.apacheconf_htpasswddir'),
'settinggroup' => 'system',
'varname' => 'apacheconf_htpasswddir',
'type' => 'text',
'string_type' => 'confdir',
'default' => '/etc/apache2/htpasswd/',
'save_method' => 'storeSettingField'
],
'system_logfiles_directory' => [
'label' => lng('serversettings.logfiles_directory'),
'settinggroup' => 'system',
'varname' => 'logfiles_directory',
'type' => 'text',
'string_type' => 'dir',
'default' => '/var/customers/logs/',
'save_method' => 'storeSettingField',
'requires_reconf' => ['http']
],
'system_logfiles_script' => [
'label' => lng('serversettings.logfiles_script'),
'settinggroup' => 'system',
'varname' => 'logfiles_script',
'type' => 'text',
'default' => '',
'save_method' => 'storeSettingField',
'websrv_avail' => [
'apache2'
],
'advanced_mode' => true
],
'system_logfiles_piped' => [
'label' => lng('serversettings.logfiles_piped'),
'settinggroup' => 'system',
'varname' => 'logfiles_piped',
'type' => 'checkbox',
'default' => false,
'save_method' => 'storeSettingField',
'websrv_avail' => [
'apache2'
],
'advanced_mode' => true
],
'system_logfiles_format' => [
'label' => lng('serversettings.logfiles_format'),
'settinggroup' => 'system',
'varname' => 'logfiles_format',
'type' => (strpos(Settings::Get('system.logfiles_format'), '"') !== false ? 'textarea' : 'text'),
'string_regexp' => '/^[^\0\r\n<>]*$/i',
'default' => '',
'string_emptyallowed' => true,
'save_method' => 'storeSettingField',
'websrv_avail' => [
'apache2',
'nginx'
],
'visible' => Settings::Get('system.traffictool') != 'webalizer',
'advanced_mode' => true
],
'system_logfiles_type' => [
'label' => lng('serversettings.logfiles_type'),
'settinggroup' => 'system',
'varname' => 'logfiles_type',
'type' => 'select',
'default' => '1',
'select_var' => [
'1' => 'combined',
'2' => 'vhost_combined'
],
'save_method' => 'storeSettingField',
'websrv_avail' => [
'apache2'
]
],
'system_errorlog_level' => [
'label' => lng('serversettings.errorlog_level'),
'settinggroup' => 'system',
'varname' => 'errorlog_level',
'type' => 'select',
'default' => (Settings::Get('system.webserver') == 'nginx' ? 'error' : 'warn'),
'select_var' => [
'emerg' => 'emerg',
'alert' => 'alert',
'crit' => 'crit',
'error' => 'error',
'warn' => 'warn',
'notice' => 'notice',
'info' => 'info',
'debug' => 'debug'
],
'save_method' => 'storeSettingField',
'websrv_avail' => [
'apache2',
'nginx'
]
],
'system_customer_ssl_path' => [
'label' => lng('serversettings.customerssl_directory'),
'settinggroup' => 'system',
'varname' => 'customer_ssl_path',
'type' => 'text',
'string_type' => 'confdir',
'default' => '/etc/ssl/froxlor-custom/',
'save_method' => 'storeSettingField'
],
'system_phpappendopenbasedir' => [
'label' => lng('serversettings.phpappendopenbasedir'),
'settinggroup' => 'system',
'varname' => 'phpappendopenbasedir',
'type' => 'text',
'string_emptyallowed' => true,
'default' => '',
'save_method' => 'storeSettingField',
'advanced_mode' => true
],
'system_deactivateddocroot' => [
'label' => lng('serversettings.deactivateddocroot'),
'settinggroup' => 'system',
'varname' => 'deactivateddocroot',
'type' => 'text',
'string_type' => 'dir',
'string_emptyallowed' => true,
'default' => '',
'save_method' => 'storeSettingField',
'requires_reconf' => ['http']
],
'system_default_vhostconf' => [
'label' => lng('serversettings.default_vhostconf'),
'settinggroup' => 'system',
'varname' => 'default_vhostconf',
'type' => 'textarea',
'default' => '',
'save_method' => 'storeSettingField',
'advanced_mode' => true
],
'system_default_sslvhostconf' => [
'label' => lng('serversettings.default_sslvhostconf'),
'settinggroup' => 'system',
'varname' => 'default_sslvhostconf',
'type' => 'textarea',
'default' => '',
'save_method' => 'storeSettingField',
'visible' => Settings::Get('system.use_ssl') == 1,
'advanced_mode' => true
],
'system_include_default_vhostconf' => [
'label' => lng('serversettings.includedefault_sslvhostconf'),
'settinggroup' => 'system',
'varname' => 'include_default_vhostconf',
'type' => 'checkbox',
'default' => false,
'save_method' => 'storeSettingField',
'advanced_mode' => true
],
'system_apacheglobaldiropt' => [
'label' => lng('serversettings.apache_globaldiropt'),
'settinggroup' => 'system',
'varname' => 'apacheglobaldiropt',
'type' => 'textarea',
'default' => '',
'save_method' => 'storeSettingField',
'visible' => (Settings::Get('system.mod_fcgid') == 0 && Settings::Get('phpfpm.enabled') == 0),
'websrv_avail' => [
'apache2'
],
'advanced_mode' => true
],
'system_apachereload_command' => [
'label' => lng('serversettings.apachereload_command'),
'settinggroup' => 'system',
'varname' => 'apachereload_command',
'type' => 'text',
'string_regexp' => '/^[a-z0-9\/\._\- ]+$/i',
'default' => '/etc/init.d/apache2 reload',
'save_method' => 'storeSettingField',
'required_otp' => true
],
'system_phpreload_command' => [
'label' => lng('serversettings.phpreload_command'),
'settinggroup' => 'system',
'varname' => 'phpreload_command',
'type' => 'text',
'string_regexp' => '/^[a-z0-9\/\._\- ]+$/i',
'default' => '',
'save_method' => 'storeSettingField',
'websrv_avail' => [
'nginx'
],
'required_otp' => true
],
'system_nginx_php_backend' => [
'label' => lng('serversettings.nginx_php_backend'),
'settinggroup' => 'system',
'varname' => 'nginx_php_backend',
'type' => 'text',
'default' => '127.0.0.1:8888',
'save_method' => 'storeSettingField',
'websrv_avail' => [
'nginx'
]
],
'nginx_fastcgiparams' => [
'label' => lng('serversettings.nginx_fastcgiparams'),
'settinggroup' => 'nginx',
'varname' => 'fastcgiparams',
'type' => 'text',
'string_type' => 'file',
'default' => '/etc/nginx/fastcgi_params',
'save_method' => 'storeSettingField',
'websrv_avail' => [
'nginx'
]
],
'defaultwebsrverrhandler_enabled' => [
'label' => lng('serversettings.defaultwebsrverrhandler_enabled'),
'settinggroup' => 'defaultwebsrverrhandler',
'varname' => 'enabled',
'type' => 'checkbox',
'default' => false,
'save_method' => 'storeSettingField',
'advanced_mode' => true
],
'defaultwebsrverrhandler_err401' => [
'label' => lng('serversettings.defaultwebsrverrhandler_err401'),
'settinggroup' => 'defaultwebsrverrhandler',
'varname' => 'err401',
'type' => 'text',
'default' => '',
'save_method' => 'storeSettingField',
'websrv_avail' => [
'apache2',
'nginx'
],
'advanced_mode' => true
],
'defaultwebsrverrhandler_err403' => [
'label' => lng('serversettings.defaultwebsrverrhandler_err403'),
'settinggroup' => 'defaultwebsrverrhandler',
'varname' => 'err403',
'type' => 'text',
'default' => '',
'save_method' => 'storeSettingField',
'websrv_avail' => [
'apache2',
'nginx'
],
'advanced_mode' => true
],
'defaultwebsrverrhandler_err404' => [
'label' => lng('serversettings.defaultwebsrverrhandler_err404'),
'settinggroup' => 'defaultwebsrverrhandler',
'varname' => 'err404',
'type' => 'text',
'default' => '',
'save_method' => 'storeSettingField',
'advanced_mode' => true
],
'defaultwebsrverrhandler_err500' => [
'label' => lng('serversettings.defaultwebsrverrhandler_err500'),
'settinggroup' => 'defaultwebsrverrhandler',
'varname' => 'err500',
'type' => 'text',
'default' => '',
'save_method' => 'storeSettingField',
'websrv_avail' => [
'apache2',
'nginx'
],
'advanced_mode' => true
],
'customredirect_enabled' => [
'label' => lng('serversettings.customredirect_enabled'),
'settinggroup' => 'customredirect',
'varname' => 'enabled',
'type' => 'checkbox',
'default' => false,
'save_method' => 'storeSettingField'
],
'customredirect_default' => [
'label' => lng('serversettings.customredirect_default'),
'settinggroup' => 'customredirect',
'varname' => 'default',
'type' => 'select',
'default' => '1',
'option_options_method' => ['\\Froxlor\\Domain\\Domain', 'getRedirectCodes'],
'save_method' => 'storeSettingField'
]
]
]
]
];