From ebd0e986ed11f2a34fb58cdd33efbfab192083ad Mon Sep 17 00:00:00 2001
From: Till Brehm <tbrehm@ispconfig.org>
Date: Fri, 22 Apr 2016 05:26:17 -0400
Subject: [PATCH] Added PHP 7 check in installer and updater.

---
 interface/web/admin/form/server_config.tform.php |  378 ++++++++++++++++++++++++++++++++++++++++-------------
 1 files changed, 286 insertions(+), 92 deletions(-)

diff --git a/interface/web/admin/form/server_config.tform.php b/interface/web/admin/form/server_config.tform.php
index 89eae71..fff0a9f 100644
--- a/interface/web/admin/form/server_config.tform.php
+++ b/interface/web/admin/form/server_config.tform.php
@@ -126,8 +126,11 @@
 				2 => array( 'event' => 'SAVE',
 					'type' => 'TOLOWER')
 			),
-			'validators' => array(0 => array('type' => 'NOTEMPTY',
-					'errmsg' => 'hostname_error_empty'),
+			'validators' => array(	0 => array('type' => 'NOTEMPTY',
+												'errmsg' => 'hostname_error_empty'),
+									1 => array ('type' => 'REGEX',
+												'regex' => '/^[\w\.\-]{2,255}\.[a-zA-Z0-9\-]{2,30}$/',
+												'errmsg'=> 'hostname_error_regex'),
 			),
 			'value' => '',
 			'width' => '40',
@@ -164,12 +167,21 @@
 			'datatype' => 'VARCHAR',
 			'formtype' => 'TEXT',
 			'default' => '/var/backup',
-			'validators' => array(0 => array('type' => 'NOTEMPTY',
-					'errmsg' => 'backup_dir_error_empty'),
+			'validators' => array(	0 => array('type' => 'NOTEMPTY',
+										'errmsg' => 'backup_dir_error_empty'),
+									1 => array ( 	'type' => 'REGEX',
+										'regex' => '/^\/[a-zA-Z0-9\.\-\_\/]{5,128}$/',
+										'errmsg'=> 'backup_dir_error_regex'),
 			),
 			'value' => '',
 			'width' => '40',
 			'maxlength' => '255'
+		),
+		'backup_dir_is_mount' => array(
+			'datatype' => 'VARCHAR',
+			'formtype' => 'CHECKBOX',
+			'default' => 'n',
+			'value' => array(0 => 'n', 1 => 'y')
 		),
 		'backup_mode' => array(
 			'datatype' => 'VARCHAR',
@@ -235,6 +247,12 @@
 			'width' => '40',
 			'maxlength' => '255'
 		),
+		'monitor_system_updates' => array(
+			'datatype' => 'VARCHAR',
+			'formtype' => 'CHECKBOX',
+			'default' => 'y',
+			'value' => array(0 => 'n', 1 => 'y')
+		),
 		//#################################
 		// ENDE Datatable fields
 		//#################################
@@ -259,8 +277,11 @@
 			'datatype' => 'VARCHAR',
 			'formtype' => 'TEXT',
 			'default' => '/home/vmail/[domain]/[localpart]/',
-			'validators' => array(0 => array('type' => 'NOTEMPTY',
-					'errmsg' => 'maildir_path_error_empty'),
+			'validators' => array(	0 => array('type' => 'NOTEMPTY',
+										'errmsg' => 'maildir_path_error_empty'),
+									1 => array ( 	'type' => 'REGEX',
+										'regex' => '/^\/[a-zA-Z0-9\.\-\_\/\[\]]{5,128}$/',
+										'errmsg'=> 'maildir_path_error_regex'),
 			),
 			'value' => '',
 			'width' => '40',
@@ -270,8 +291,11 @@
 			'datatype' => 'VARCHAR',
 			'formtype' => 'TEXT',
 			'default' => '/home/vmail/',
-			'validators' => array(0 => array('type' => 'NOTEMPTY',
-					'errmsg' => 'homedir_path_error_empty'),
+			'validators' => array(	0 => array('type' => 'NOTEMPTY',
+										'errmsg' => 'homedir_path_error_empty'),
+									1 => array ( 	'type' => 'REGEX',
+										'regex' => '/^\/[a-zA-Z0-9\.\-\_\/]{5,128}$/',
+										'errmsg'=> 'homedir_path_error_regex'),
 			),
 			'value' => '',
 			'width' => '40',
@@ -293,8 +317,11 @@
 			'datatype' => 'INTEGER',
 			'formtype' => 'TEXT',
 			'default' => '5000',
-			'validators' => array(0 => array('type' => 'NOTEMPTY',
-					'errmsg' => 'mailuser_uid_error_empty'),
+			'validators' => array(	0 => array('type' => 'NOTEMPTY',
+										'errmsg' => 'mailuser_uid_error_empty'),
+									1 => array('type' => 'RANGE',
+										'range' => '1999:',
+										'errmsg' => 'mailuser_uid_error_range'),
 			),
 			'value' => '',
 			'width' => '10',
@@ -304,8 +331,11 @@
 			'datatype' => 'INTEGER',
 			'formtype' => 'TEXT',
 			'default' => '5000',
-			'validators' => array(0 => array('type' => 'NOTEMPTY',
-					'errmsg' => 'mailuser_gid_error_empty'),
+			'validators' => array(	0 => array('type' => 'NOTEMPTY',
+										'errmsg' => 'mailuser_gid_error_empty'),
+									1 => array('type' => 'RANGE',
+										'range' => '1999:',
+										'errmsg' => 'mailuser_gid_error_range'),
 			),
 			'value' => '',
 			'width' => '10',
@@ -315,8 +345,11 @@
 			'datatype' => 'VARCHAR',
 			'formtype' => 'TEXT',
 			'default' => 'vmail',
-			'validators' => array(0 => array('type' => 'NOTEMPTY',
-					'errmsg' => 'mailuser_name_error_empty'),
+			'validators' => array(	0 => array('type' => 'NOTEMPTY',
+										'errmsg' => 'mailuser_name_error_empty'),
+									1 => array ( 	'type' => 'REGEX',
+										'regex' => '/^(?!ispconfig|root)([a-zA-Z0-9]{1,20})$/',
+										'errmsg'=> 'mailuser_name_error_regex'),
 			),
 			'value' => '',
 			'width' => '10',
@@ -326,8 +359,11 @@
 			'datatype' => 'VARCHAR',
 			'formtype' => 'TEXT',
 			'default' => 'vmail',
-			'validators' => array(0 => array('type' => 'NOTEMPTY',
-					'errmsg' => 'mailuser_group_error_empty'),
+			'validators' => array(	0 => array('type' => 'NOTEMPTY',
+										'errmsg' => 'mailuser_group_error_empty'),
+									1 => array ( 	'type' => 'REGEX',
+										'regex' => '/^(?!ispconfig|root)([a-zA-Z0-9]{1,20})$/',
+										'errmsg'=> 'mailuser_group_name_error_regex'),
 			),
 			'value' => '',
 			'width' => '10',
@@ -435,8 +471,11 @@
 			'datatype' => 'VARCHAR',
 			'formtype' => 'TEXT',
 			'default' => '',
-			'validators' => array(0 => array('type' => 'NOTEMPTY',
-					'errmsg' => 'getmail_config_dir_error_empty'),
+			'validators' => array(	0 => array('type' => 'NOTEMPTY',
+										'errmsg' => 'getmail_config_dir_error_empty'),
+									1 => array ( 	'type' => 'REGEX',
+										'regex' => '/^\/[a-zA-Z0-9\.\-\_\/]{5,128}$/',
+										'errmsg'=> 'getmail_config_dir_error_regex'),
 			),
 			'value' => '',
 			'width' => '40',
@@ -466,8 +505,11 @@
 			'datatype' => 'VARCHAR',
 			'formtype' => 'TEXT',
 			'default' => '',
-			'validators' => array(0 => array('type' => 'NOTEMPTY',
-					'errmsg' => 'website_basedir_error_empty'),
+			'validators' => array(	0 => array('type' => 'NOTEMPTY',
+										'errmsg' => 'website_basedir_error_empty'),
+									1 => array ( 	'type' => 'REGEX',
+										'regex' => '/^\/[a-zA-Z0-9\.\-\_\/]{5,128}$/',
+										'errmsg'=> 'website_basedir_error_regex'),
 			),
 			'value' => '',
 			'width' => '40',
@@ -477,8 +519,11 @@
 			'datatype' => 'VARCHAR',
 			'formtype' => 'TEXT',
 			'default' => '',
-			'validators' => array(0 => array('type' => 'NOTEMPTY',
-					'errmsg' => 'website_path_error_empty'),
+			'validators' => array(	0 => array(	'type' => 'NOTEMPTY',
+										'errmsg' => 'website_path_error_empty'),
+									1 => array ( 	'type' => 'REGEX',
+										'regex' => '/^\/[a-zA-Z0-9\.\-\_\/\[\]]{5,128}$/',
+										'errmsg'=> 'website_path_error_regex'),
 			),
 			'value' => '',
 			'width' => '40',
@@ -488,14 +533,23 @@
 			'datatype' => 'VARCHAR',
 			'formtype' => 'TEXT',
 			'default' => '',
-			'validators' => array(0 => array('type' => 'NOTEMPTY',
-					'errmsg' => 'website_symlinks_error_empty'),
+			'validators' => array(	0 => array('type' => 'NOTEMPTY',
+										'errmsg' => 'website_symlinks_error_empty'),
+									1 => array ( 	'type' => 'REGEX',
+										'regex' => '/^\/[a-zA-Z0-9\.\-\_\/\[\]\:]{5,128}$/',
+										'errmsg'=> 'website_symlinks_error_regex'),
 			),
 			'value' => '',
 			'width' => '40',
 			'maxlength' => '255'
 		),
 		'website_symlinks_rel' => array (
+			'datatype' => 'VARCHAR',
+			'formtype' => 'CHECKBOX',
+			'default' => 'n',
+			'value' => array(0 => 'n', 1 => 'y')
+		),
+		'network_filesystem' => array (
 			'datatype' => 'VARCHAR',
 			'formtype' => 'CHECKBOX',
 			'default' => 'n',
@@ -521,8 +575,11 @@
 			'datatype' => 'VARCHAR',
 			'formtype' => 'TEXT',
 			'default' => '',
-			'validators' => array(0 => array('type' => 'NOTEMPTY',
-					'errmsg' => 'vhost_conf_dir_error_empty'),
+			'validators' => array(	0 => array('type' => 'NOTEMPTY',
+										'errmsg' => 'vhost_conf_dir_error_empty'),
+									1 => array ( 	'type' => 'REGEX',
+										'regex' => '/^\/[a-zA-Z0-9\.\-\_\/]{5,128}$/',
+										'errmsg'=> 'vhost_conf_dir_error_regex'),
 			),
 			'value' => '',
 			'width' => '40',
@@ -532,8 +589,11 @@
 			'datatype' => 'VARCHAR',
 			'formtype' => 'TEXT',
 			'default' => '',
-			'validators' => array(0 => array('type' => 'NOTEMPTY',
-					'errmsg' => 'vhost_conf_enabled_dir_error_empty'),
+			'validators' => array(	0 => array('type' => 'NOTEMPTY',
+										'errmsg' => 'vhost_conf_enabled_dir_error_empty'),
+									1 => array ( 	'type' => 'REGEX',
+										'regex' => '/^\/[a-zA-Z0-9\.\-\_\/]{5,128}$/',
+										'errmsg'=> 'vhost_conf_enabled_dir_error_regex'),
 			),
 			'value' => '',
 			'width' => '40',
@@ -543,8 +603,11 @@
 			'datatype' => 'VARCHAR',
 			'formtype' => 'TEXT',
 			'default' => '',
-			'validators' => array(0 => array('type' => 'NOTEMPTY',
-					'errmsg' => 'nginx_vhost_conf_dir_error_empty'),
+			'validators' => array(	0 => array('type' => 'NOTEMPTY',
+										'errmsg' => 'nginx_vhost_conf_dir_error_empty'),
+									1 => array ( 	'type' => 'REGEX',
+										'regex' => '/^\/[a-zA-Z0-9\.\-\_\/]{5,128}$/',
+										'errmsg'=> 'nginx_vhost_conf_dir_error_regex'),
 			),
 			'value' => '',
 			'width' => '40',
@@ -554,8 +617,11 @@
 			'datatype' => 'VARCHAR',
 			'formtype' => 'TEXT',
 			'default' => '',
-			'validators' => array(0 => array('type' => 'NOTEMPTY',
-					'errmsg' => 'nginx_vhost_conf_enabled_dir_error_empty'),
+			'validators' => array(	0 => array('type' => 'NOTEMPTY',
+										'errmsg' => 'nginx_vhost_conf_enabled_dir_error_empty'),
+									1 => array ( 	'type' => 'REGEX',
+										'regex' => '/^\/[a-zA-Z0-9\.\-\_\/]{5,128}$/',
+										'errmsg'=> 'nginx_vhost_conf_enabled_dir_error_regex'),
 			),
 			'value' => '',
 			'width' => '40',
@@ -564,6 +630,10 @@
 		'CA_path' => array(
 			'datatype' => 'VARCHAR',
 			'formtype' => 'TEXT',
+			'validators' => array(	0 => array ( 	'type' => 'REGEX',
+										'regex' => '/^[a-zA-Z0-9\.\-\_\/]{0,128}$/',
+										'errmsg'=> 'ca_path_error_regex'),
+			),
 			'default' => '',
 			'value' => '',
 			'width' => '40',
@@ -663,6 +733,13 @@
 			'default' => '',
 			'validators' => array(0 => array('type' => 'NOTEMPTY',
 					'errmsg' => 'apache_user_error_empty'),
+					1 => array(
+							'type' => 'CUSTOM',
+							'class' => 'validate_systemuser',
+							'function' => 'check_sysuser',
+							'check_names' => false,
+							'errmsg' => 'invalid_apache_user_txt'
+						),
 			),
 			'value' => '',
 			'width' => '40',
@@ -674,6 +751,13 @@
 			'default' => '',
 			'validators' => array(0 => array('type' => 'NOTEMPTY',
 					'errmsg' => 'apache_group_error_empty'),
+					1 => array(
+							'type' => 'CUSTOM',
+							'class' => 'validate_systemuser',
+							'function' => 'check_sysgroup',
+							'check_names' => false,
+							'errmsg' => 'invalid_apache_group_txt'
+						),
 			),
 			'value' => '',
 			'width' => '40',
@@ -700,8 +784,15 @@
 			'datatype' => 'VARCHAR',
 			'formtype' => 'TEXT',
 			'default' => '',
-			'validators' => array(0 => array('type' => 'NOTEMPTY',
-					'errmsg' => 'nginx_user_error_empty'),
+			'validators' => array(	0 => array('type' => 'NOTEMPTY',
+										'errmsg' => 'nginx_user_error_empty'),
+									1 => array(
+							'type' => 'CUSTOM',
+							'class' => 'validate_systemuser',
+							'function' => 'check_sysuser',
+							'check_names' => false,
+							'errmsg' => 'invalid_nginx_user_txt'
+						),
 			),
 			'value' => '',
 			'width' => '40',
@@ -711,8 +802,15 @@
 			'datatype' => 'VARCHAR',
 			'formtype' => 'TEXT',
 			'default' => '',
-			'validators' => array(0 => array('type' => 'NOTEMPTY',
-					'errmsg' => 'nginx_group_error_empty'),
+			'validators' => array(	0 => array('type' => 'NOTEMPTY',
+										'errmsg' => 'nginx_group_error_empty'),
+									1 => array(
+							'type' => 'CUSTOM',
+							'class' => 'validate_systemuser',
+							'function' => 'check_sysgroup',
+							'check_names' => false,
+							'errmsg' => 'invalid_nginx_group_txt'
+						),
 			),
 			'value' => '',
 			'width' => '40',
@@ -722,8 +820,11 @@
 			'datatype' => 'VARCHAR',
 			'formtype' => 'TEXT',
 			'default' => '',
-			'validators' => array(0 => array('type' => 'NOTEMPTY',
-					'errmsg' => 'php_ini_path_apache_error_empty'),
+			'validators' => array(	0 => array('type' => 'NOTEMPTY',
+										'errmsg' => 'php_ini_path_apache_error_empty'),
+									1 => array ( 	'type' => 'REGEX',
+										'regex' => '/^\/[a-zA-Z0-9\.\-\_\/]{5,128}$/',
+										'errmsg'=> 'php_ini_path_apache_error_regex'),
 			),
 			'value' => '',
 			'width' => '40',
@@ -733,8 +834,11 @@
 			'datatype' => 'VARCHAR',
 			'formtype' => 'TEXT',
 			'default' => '',
-			'validators' => array(0 => array('type' => 'NOTEMPTY',
-					'errmsg' => 'php_ini_path_cgi_error_empty'),
+			'validators' => array(	0 => array('type' => 'NOTEMPTY',
+										'errmsg' => 'php_ini_path_cgi_error_empty'),
+									1 => array ( 	'type' => 'REGEX',
+										'regex' => '/^\/[a-zA-Z0-9\.\-\_\/]{5,128}$/',
+										'errmsg'=> 'php_ini_path_cgi_error_regex'),
 			),
 			'value' => '',
 			'width' => '40',
@@ -744,8 +848,11 @@
 			'datatype' => 'VARCHAR',
 			'formtype' => 'TEXT',
 			'default' => '',
-			'validators' => array(0 => array('type' => 'NOTEMPTY',
-					'errmsg' => 'php_fpm_init_script_error_empty'),
+			'validators' => array(	0 => array('type' => 'NOTEMPTY',
+										'errmsg' => 'php_fpm_init_script_error_empty'),
+									1 => array ( 	'type' => 'REGEX',
+										'regex' => '/^[a-zA-Z0-9\.\-\_]{1,128}$/',
+										'errmsg'=> 'php_fpm_init_script_error_regex'),
 			),
 			'value' => '',
 			'width' => '40',
@@ -755,8 +862,11 @@
 			'datatype' => 'VARCHAR',
 			'formtype' => 'TEXT',
 			'default' => '',
-			'validators' => array(0 => array('type' => 'NOTEMPTY',
-					'errmsg' => 'php_fpm_ini_path_error_empty'),
+			'validators' => array(	0 => array('type' => 'NOTEMPTY',
+										'errmsg' => 'php_fpm_ini_path_error_empty'),
+									1 => array ( 	'type' => 'REGEX',
+										'regex' => '/^\/[a-zA-Z0-9\.\-\_\/]{5,128}$/',
+										'errmsg'=> 'php_fpm_ini_path_error_regex'),
 			),
 			'value' => '',
 			'width' => '40',
@@ -766,8 +876,11 @@
 			'datatype' => 'VARCHAR',
 			'formtype' => 'TEXT',
 			'default' => '',
-			'validators' => array(0 => array('type' => 'NOTEMPTY',
-					'errmsg' => 'php_fpm_pool_dir_error_empty'),
+			'validators' => array(	0 => array('type' => 'NOTEMPTY',
+										'errmsg' => 'php_fpm_pool_dir_error_empty'),
+									1 => array ( 	'type' => 'REGEX',
+										'regex' => '/^\/[a-zA-Z0-9\.\-\_\/]{5,128}$/',
+										'errmsg'=> 'php_fpm_pool_dir_error_regex'),
 			),
 			'value' => '',
 			'width' => '40',
@@ -777,7 +890,7 @@
 			'datatype' => 'VARCHAR',
 			'formtype' => 'TEXT',
 			'default' => '',
-			'validators' => array(0 => array('type' => 'NOTEMPTY',
+			'validators' => array(0 => array('type' => 'ISPOSITIVE',
 					'errmsg' => 'php_fpm_start_port_error_empty'),
 			),
 			'value' => '',
@@ -788,8 +901,11 @@
 			'datatype' => 'VARCHAR',
 			'formtype' => 'TEXT',
 			'default' => '',
-			'validators' => array(0 => array('type' => 'NOTEMPTY',
-					'errmsg' => 'php_fpm_socket_dir_error_empty'),
+			'validators' => array(	0 => array('type' => 'NOTEMPTY',
+										'errmsg' => 'php_fpm_socket_dir_error_empty'),
+									1 => array ( 	'type' => 'REGEX',
+										'regex' => '/^\/[a-zA-Z0-9\.\-\_\/]{5,128}$/',
+										'errmsg'=> 'php_fpm_socket_dir_error_regex'),
 			),
 			'value' => '',
 			'width' => '40',
@@ -799,8 +915,11 @@
 			'datatype' => 'VARCHAR',
 			'formtype' => 'TEXT',
 			'default' => '',
-			'validators' => array(0 => array('type' => 'NOTEMPTY',
-					'errmsg' => 'php_open_basedir_error_empty'),
+			'validators' => array(	0 => array('type' => 'NOTEMPTY',
+										'errmsg' => 'php_open_basedir_error_empty'),
+									1 => array ( 	'type' => 'REGEX',
+										'regex' => '/^[a-zA-Z0-9\.\-\_\/\]\[\:]{1,}$/',
+										'errmsg'=> 'php_open_basedir_error_regex'),
 			),
 			'value' => '',
 			'width' => '40',
@@ -810,8 +929,11 @@
 			'datatype' => 'VARCHAR',
 			'formtype' => 'TEXT',
 			'default' => '',
-			'validators' => array(0 => array('type' => 'NOTEMPTY',
-					'errmsg' => 'nginx_cgi_socket_empty'),
+			'validators' => array(	0 => array('type' => 'NOTEMPTY',
+										'errmsg' => 'nginx_cgi_socket_empty'),
+									1 => array ( 	'type' => 'REGEX',
+										'regex' => '/^\/[a-zA-Z0-9\.\-\_\/]{1,128}$/',
+										'errmsg'=> 'nginx_cgi_socket_error_regex'),
 			),
 			'value' => '',
 			'width' => '40',
@@ -821,8 +943,8 @@
 			'datatype' => 'VARCHAR',
 			'formtype' => 'TEXT',
 			'default' => '',
-			'validators' => array(0 => array('type' => 'NOTEMPTY',
-					'errmsg' => 'htaccess_allow_override_error_empty'),
+			'validators' => array(	0 => array('type' => 'NOTEMPTY',
+										'errmsg' => 'htaccess_allow_override_error_empty'),
 			),
 			'value' => '',
 			'width' => '40',
@@ -869,6 +991,12 @@
 		'awstats_data_dir' => array(
 			'datatype' => 'VARCHAR',
 			'formtype' => 'TEXT',
+			'validators' => array(	0 => array('type' => 'NOTEMPTY',
+										'errmsg' => 'awstats_data_dir_empty'),
+									1 => array ( 	'type' => 'REGEX',
+										'regex' => '/^\/[a-zA-Z0-9\.\-\_\/]{1,128}$/',
+										'errmsg'=> 'awstats_data_dir_error_regex'),
+			),
 			'default' => '',
 			'value' => '',
 			'width' => '40',
@@ -877,6 +1005,12 @@
 		'awstats_pl' => array(
 			'datatype' => 'VARCHAR',
 			'formtype' => 'TEXT',
+			'validators' => array(	0 => array('type' => 'NOTEMPTY',
+										'errmsg' => 'awstats_pl_empty'),
+									1 => array ( 	'type' => 'REGEX',
+										'regex' => '/^\/[a-zA-Z0-9\.\-\_\/]{1,128}$/',
+										'errmsg'=> 'awstats_pl_error_regex'),
+			),
 			'default' => '',
 			'value' => '',
 			'width' => '40',
@@ -885,6 +1019,12 @@
 		'awstats_buildstaticpages_pl' => array(
 			'datatype' => 'VARCHAR',
 			'formtype' => 'TEXT',
+			'validators' => array(	0 => array('type' => 'NOTEMPTY',
+										'errmsg' => 'awstats_buildstaticpages_pl_empty'),
+									1 => array ( 	'type' => 'REGEX',
+										'regex' => '/^\/[a-zA-Z0-9\.\-\_\/]{1,128}$/',
+										'errmsg'=> 'awstats_buildstaticpages_pl_error_regex'),
+			),
 			'default' => '',
 			'value' => '',
 			'width' => '40',
@@ -908,8 +1048,11 @@
 			'datatype' => 'VARCHAR',
 			'formtype' => 'TEXT',
 			'default' => '',
-			'validators' => array(0 => array('type' => 'NOTEMPTY',
-					'errmsg' => 'bind_user_error_empty'),
+			'validators' => array(	0 => array('type' => 'NOTEMPTY',
+										'errmsg' => 'bind_user_error_empty'),
+									1 => array ( 	'type' => 'REGEX',
+										'regex' => '/^(?!ispconfig)([a-zA-Z0-9]{1,20})$/',
+										'errmsg'=> 'invalid_bind_user_txt'),
 			),
 			'value' => '',
 			'width' => '40',
@@ -919,8 +1062,11 @@
 			'datatype' => 'VARCHAR',
 			'formtype' => 'TEXT',
 			'default' => '',
-			'validators' => array(0 => array('type' => 'NOTEMPTY',
-					'errmsg' => 'bind_group_error_empty'),
+			'validators' => array(	0 => array('type' => 'NOTEMPTY',
+										'errmsg' => 'bind_group_error_empty'),
+									1 => array ( 	'type' => 'REGEX',
+										'regex' => '/^(?!ispconfig)([a-zA-Z0-9]{1,20})$/',
+										'errmsg'=> 'invalid_bind_group_txt'),
 			),
 			'value' => '',
 			'width' => '40',
@@ -930,8 +1076,11 @@
 			'datatype' => 'VARCHAR',
 			'formtype' => 'TEXT',
 			'default' => '',
-			'validators' => array(0 => array('type' => 'NOTEMPTY',
-					'errmsg' => 'bind_zonefiles_dir_error_empty'),
+			'validators' => array(	0 => array('type' => 'NOTEMPTY',
+										'errmsg' => 'bind_zonefiles_dir_error_empty'),
+									1 => array ( 	'type' => 'REGEX',
+										'regex' => '/^\/[a-zA-Z0-9\.\-\_\/]{1,128}$/',
+										'errmsg'=> 'bind_zonefiles_dir_error_regex'),
 			),
 			'value' => '',
 			'width' => '40',
@@ -941,8 +1090,11 @@
 			'datatype' => 'VARCHAR',
 			'formtype' => 'TEXT',
 			'default' => '',
-			'validators' => array(0 => array('type' => 'NOTEMPTY',
-					'errmsg' => 'named_conf_path_error_empty'),
+			'validators' => array(	0 => array('type' => 'NOTEMPTY',
+										'errmsg' => 'named_conf_path_error_empty'),
+									1 => array ( 	'type' => 'REGEX',
+										'regex' => '/^\/[a-zA-Z0-9\.\-\_\/]{1,128}$/',
+										'errmsg'=> 'named_conf_path_error_regex'),
 			),
 			'value' => '',
 			'width' => '40',
@@ -952,8 +1104,11 @@
 			'datatype' => 'VARCHAR',
 			'formtype' => 'TEXT',
 			'default' => '',
-			'validators' => array(0 => array('type' => 'NOTEMPTY',
-					'errmsg' => 'named_conf_local_path_error_empty'),
+			'validators' => array(	0 => array('type' => 'NOTEMPTY',
+										'errmsg' => 'named_conf_local_path_error_empty'),
+									1 => array ( 	'type' => 'REGEX',
+										'regex' => '/^\/[a-zA-Z0-9\.\-\_\/]{1,128}$/',
+										'errmsg'=> 'named_conf_local_path_error_regex'),
 			),
 			'value' => '',
 			'width' => '40',
@@ -977,8 +1132,11 @@
 			'datatype' => 'VARCHAR',
 			'formtype' => 'TEXT',
 			'default' => '',
-			'validators' => array(0 => array('type' => 'NOTEMPTY',
-					'errmsg' => 'fastcgi_starter_path_error_empty'),
+			'validators' => array(	0 => array('type' => 'NOTEMPTY',
+										'errmsg' => 'fastcgi_starter_path_error_empty'),
+									1 => array ( 	'type' => 'REGEX',
+										'regex' => '/^\/[a-zA-Z0-9\.\-\_\/\[\]]{1,128}$/',
+										'errmsg'=> 'fastcgi_starter_path_error_regex'),
 			),
 			'value' => '',
 			'width' => '40',
@@ -988,8 +1146,11 @@
 			'datatype' => 'VARCHAR',
 			'formtype' => 'TEXT',
 			'default' => '',
-			'validators' => array(0 => array('type' => 'NOTEMPTY',
-					'errmsg' => 'fastcgi_starter_script_error_empty'),
+			'validators' => array(	0 => array('type' => 'NOTEMPTY',
+										'errmsg' => 'fastcgi_starter_script_error_empty'),
+									1 => array ( 	'type' => 'REGEX',
+										'regex' => '/^[a-zA-Z0-9\.\-\_\/]{1,128}$/',
+										'errmsg'=> 'fastcgi_starter_script_error_regex'),
 			),
 			'value' => '',
 			'width' => '40',
@@ -999,8 +1160,11 @@
 			'datatype' => 'VARCHAR',
 			'formtype' => 'TEXT',
 			'default' => '',
-			'validators' => array(0 => array('type' => 'NOTEMPTY',
-					'errmsg' => 'fastcgi_alias_error_empty'),
+			'validators' => array(	0 => array('type' => 'NOTEMPTY',
+										'errmsg' => 'fastcgi_alias_error_empty'),
+									1 => array ( 	'type' => 'REGEX',
+										'regex' => '/^[a-zA-Z0-9\.\-\_\/]{1,128}$/',
+										'errmsg'=> 'fastcgi_alias_error_regex'),
 			),
 			'value' => '',
 			'width' => '40',
@@ -1010,8 +1174,11 @@
 			'datatype' => 'VARCHAR',
 			'formtype' => 'TEXT',
 			'default' => '',
-			'validators' => array(0 => array('type' => 'NOTEMPTY',
-					'errmsg' => 'fastcgi_phpini_path_error_empty'),
+			'validators' => array(	0 => array('type' => 'NOTEMPTY',
+										'errmsg' => 'fastcgi_phpini_path_error_empty'),
+									1 => array ( 	'type' => 'REGEX',
+										'regex' => '/^\/[a-zA-Z0-9\.\-\_\/\[\]]{1,128}$/',
+										'errmsg'=> 'fastcgi_phpini_path_error_regex'),
 			),
 			'value' => '',
 			'width' => '40',
@@ -1021,7 +1188,7 @@
 			'datatype' => 'VARCHAR',
 			'formtype' => 'TEXT',
 			'default' => '',
-			'validators' => array(0 => array('type' => 'NOTEMPTY',
+			'validators' => array(0 => array('type' => 'ISPOSITIVE',
 					'errmsg' => 'fastcgi_children_error_empty'),
 			),
 			'value' => '',
@@ -1046,8 +1213,11 @@
 			'datatype' => 'VARCHAR',
 			'formtype' => 'TEXT',
 			'default' => '',
-			'validators' => array(0 => array('type' => 'NOTEMPTY',
-					'errmsg' => 'fastcgi_bin_error_empty'),
+			'validators' => array(	0 => array('type' => 'NOTEMPTY',
+										'errmsg' => 'fastcgi_bin_error_empty'),
+									1 => array ( 	'type' => 'REGEX',
+										'regex' => '/^\/[a-zA-Z0-9\.\-\_\/\[\]]{1,128}$/',
+										'errmsg'=> 'fastcgi_bin_error_regex'),
 			),
 			'value' => '',
 			'width' => '40',
@@ -1080,8 +1250,11 @@
 			'datatype' => 'VARCHAR',
 			'formtype' => 'TEXT',
 			'default' => '',
-			'validators' => array(0 => array('type' => 'NOTEMPTY',
-					'errmsg' => 'jailkit_chroot_home_error_empty'),
+			'validators' => array(	0 => array('type' => 'NOTEMPTY',
+										'errmsg' => 'jailkit_chroot_home_error_empty'),
+									1 => array ( 	'type' => 'REGEX',
+										'regex' => '/^\/[a-zA-Z0-9\.\-\_\/\[\]]{1,128}$/',
+										'errmsg'=> 'jailkit_chroot_home_error_regex'),
 			),
 			'value' => '',
 			'width' => '40',
@@ -1091,8 +1264,11 @@
 			'datatype' => 'VARCHAR',
 			'formtype' => 'TEXT',
 			'default' => '',
-			'validators' => array(0 => array('type' => 'NOTEMPTY',
-					'errmsg' => 'jailkit_chroot_app_sections_error_empty'),
+			'validators' => array(	0 => array('type' => 'NOTEMPTY',
+										'errmsg' => 'jailkit_chroot_app_sections_error_empty'),
+									1 => array ( 	'type' => 'REGEX',
+										'regex' => '/^[a-zA-Z0-9\-\_\ ]{1,128}$/',
+										'errmsg'=> 'jailkit_chroot_app_sections_error_regex'),
 			),
 			'value' => '',
 			'width' => '40',
@@ -1102,8 +1278,11 @@
 			'datatype' => 'VARCHAR',
 			'formtype' => 'TEXT',
 			'default' => '',
-			'validators' => array(0 => array('type' => 'NOTEMPTY',
-					'errmsg' => 'jailkit_chroot_app_programs_error_empty'),
+			'validators' => array(	0 => array('type' => 'NOTEMPTY',
+										'errmsg' => 'jailkit_chroot_app_programs_error_empty'),
+									1 => array ( 	'type' => 'REGEX',
+										'regex' => '/^[a-zA-Z0-9\.\-\_\/\ ]{1,}$/',
+										'errmsg'=> 'jailkit_chroot_app_programs_error_regex'),
 			),
 			'value' => '',
 			'width' => '40',
@@ -1113,8 +1292,11 @@
 			'datatype' => 'VARCHAR',
 			'formtype' => 'TEXT',
 			'default' => '',
-			'validators' => array(0 => array('type' => 'NOTEMPTY',
-					'errmsg' => 'jailkit_chroot_cron_programs_error_empty'),
+			'validators' => array(	0 => array('type' => 'NOTEMPTY',
+										'errmsg' => 'jailkit_chroot_cron_programs_error_empty'),
+									1 => array ( 	'type' => 'REGEX',
+										'regex' => '/^[a-zA-Z0-9\.\-\_\/\ ]{1,}$/',
+										'errmsg'=> 'jailkit_chroot_cron_programs_error_regex'),
 			),
 			'value' => '',
 			'width' => '40',
@@ -1202,8 +1384,11 @@
 			'datatype' => 'VARCHAR',
 			'formtype' => 'TEXT',
 			'default' => '',
-			'validators' => array(0 => array('type' => 'NOTEMPTY',
-					'errmsg' => 'vlogger_config_dir_error_empty'),
+			'validators' => array(	0 => array('type' => 'NOTEMPTY',
+										'errmsg' => 'vlogger_config_dir_error_empty'),
+									1 => array ( 	'type' => 'REGEX',
+										'regex' => '/^\/[a-zA-Z0-9\.\-\_\/]{1,128}$/',
+										'errmsg'=> 'vlogger_config_dir_error_regex'),
 			),
 			'value' => '',
 			'width' => '40',
@@ -1229,8 +1414,11 @@
 			'datatype' => 'VARCHAR',
 			'formtype' => 'TEXT',
 			'default' => '',
-			'validators' => array(0 => array('type' => 'NOTEMPTY',
-					'errmsg' => 'cron_init_script_error_empty'),
+			'validators' => array(	0 => array('type' => 'NOTEMPTY',
+										'errmsg' => 'cron_init_script_error_empty'),
+									1 => array ( 	'type' => 'REGEX',
+										'regex' => '/^[a-zA-Z0-9\-\_]{1,30}$/',
+										'errmsg'=> 'cron_init_script_error_regex'),
 			),
 			'value' => '',
 			'width' => '40',
@@ -1240,8 +1428,11 @@
 			'datatype' => 'VARCHAR',
 			'formtype' => 'TEXT',
 			'default' => '',
-			'validators' => array(0 => array('type' => 'NOTEMPTY',
-					'errmsg' => 'crontab_dir_error_empty'),
+			'validators' => array(	0 => array('type' => 'NOTEMPTY',
+										'errmsg' => 'crontab_dir_error_empty'),
+									1 => array ( 	'type' => 'REGEX',
+										'regex' => '/^\/[a-zA-Z0-9\.\-\_\/]{1,128}$/',
+										'errmsg'=> 'crontab_dir_error_regex'),
 			),
 			'value' => '',
 			'width' => '40',
@@ -1251,8 +1442,11 @@
 			'datatype' => 'VARCHAR',
 			'formtype' => 'TEXT',
 			'default' => '',
-			'validators' => array(0 => array('type' => 'NOTEMPTY',
-					'errmsg' => 'cron_wget_error_empty'),
+			'validators' => array(	0 => array('type' => 'NOTEMPTY',
+										'errmsg' => 'cron_wget_error_empty'),
+									1 => array ( 	'type' => 'REGEX',
+										'regex' => '/^\/[a-zA-Z0-9\.\-\_\/]{1,128}$/',
+										'errmsg'=> 'cron_wget_error_regex'),
 			),
 			'value' => '',
 			'width' => '40',

--
Gitblit v1.9.1