diff --git a/install/sql/ispconfig3.sql b/install/sql/ispconfig3.sql
index a1b77304e03ae0988771c6cabf26a9c080928b55..90274d239b747aab3995666fd8491b02cb412180 100644
--- a/install/sql/ispconfig3.sql
+++ b/install/sql/ispconfig3.sql
@@ -77,10 +77,12 @@ CREATE TABLE `client` (
`default_webserver` int(11) NOT NULL default '1',
`limit_web_ip` text,
`limit_web_domain` int(11) NOT NULL default '-1',
+ `web_php_options` varchar(255) NOT NULL default 'no,fast-cgi,cgi,mod,suphp',
`limit_web_subdomain` int(11) NOT NULL default '-1',
`limit_web_aliasdomain` int(11) NOT NULL default '-1',
`limit_ftp_user` int(11) NOT NULL default '-1',
`limit_shell_user` int(11) NOT NULL default '0',
+ `ssh_chroot` varchar(255) NOT NULL DEFAULT 'no,jailkit,ssh-chroot',
`default_dnsserver` int(10) unsigned NOT NULL default '1',
`limit_dns_zone` int(11) NOT NULL default '-1',
`limit_dns_record` int(11) NOT NULL default '-1',
@@ -92,49 +94,49 @@ CREATE TABLE `client` (
`password` varchar(255) default NULL,
`language` varchar(255) NOT NULL default 'en',
`usertheme` varchar(255) NOT NULL default 'default',
- `template_master` bigint(20) NOT NULL default '0',
+ `template_master` bigint(20) NOT NULL default '0',
`template_additional` varchar(255) NOT NULL default '',
PRIMARY KEY (`client_id`)
) ENGINE=MyISAM AUTO_INCREMENT=1 ;
-- --------------------------------------------------------
---
--- Table structure for table `client_template`
---
-
-CREATE TABLE `client_template` (
- `template_id` bigint(20) NOT NULL auto_increment,
- `template_name` varchar(50) NOT NULL,
- `template_type` varchar(1) NOT NULL default 'm',
- `limit_maildomain` int(11) NOT NULL default '-1',
- `limit_mailbox` int(11) NOT NULL default '-1',
- `limit_mailalias` int(11) NOT NULL default '-1',
- `limit_mailforward` int(11) NOT NULL default '-1',
- `limit_mailcatchall` int(11) NOT NULL default '-1',
- `limit_mailrouting` int(11) NOT NULL default '0',
- `limit_mailfilter` int(11) NOT NULL default '-1',
- `limit_fetchmail` int(11) NOT NULL default '-1',
- `limit_mailquota` int(11) NOT NULL default '-1',
- `limit_spamfilter_wblist` int(11) NOT NULL default '0',
- `limit_spamfilter_user` int(11) NOT NULL default '0',
- `limit_spamfilter_policy` int(11) NOT NULL default '0',
- `limit_web_ip` text,
- `limit_web_domain` int(11) NOT NULL default '-1',
- `limit_web_subdomain` int(11) NOT NULL default '-1',
- `limit_web_aliasdomain` int(11) NOT NULL default '-1',
- `limit_ftp_user` int(11) NOT NULL default '-1',
- `limit_shell_user` int(11) NOT NULL default '0',
- `limit_dns_zone` int(11) NOT NULL default '-1',
- `limit_dns_record` int(11) NOT NULL default '-1',
- `limit_database` int(11) NOT NULL default '-1',
+--
+-- Table structure for table `client_template`
+--
+
+CREATE TABLE `client_template` (
+ `template_id` bigint(20) NOT NULL auto_increment,
+ `template_name` varchar(50) NOT NULL,
+ `template_type` varchar(1) NOT NULL default 'm',
+ `limit_maildomain` int(11) NOT NULL default '-1',
+ `limit_mailbox` int(11) NOT NULL default '-1',
+ `limit_mailalias` int(11) NOT NULL default '-1',
+ `limit_mailforward` int(11) NOT NULL default '-1',
+ `limit_mailcatchall` int(11) NOT NULL default '-1',
+ `limit_mailrouting` int(11) NOT NULL default '0',
+ `limit_mailfilter` int(11) NOT NULL default '-1',
+ `limit_fetchmail` int(11) NOT NULL default '-1',
+ `limit_mailquota` int(11) NOT NULL default '-1',
+ `limit_spamfilter_wblist` int(11) NOT NULL default '0',
+ `limit_spamfilter_user` int(11) NOT NULL default '0',
+ `limit_spamfilter_policy` int(11) NOT NULL default '0',
+ `limit_web_ip` text,
+ `limit_web_domain` int(11) NOT NULL default '-1',
+ `limit_web_subdomain` int(11) NOT NULL default '-1',
+ `limit_web_aliasdomain` int(11) NOT NULL default '-1',
+ `limit_ftp_user` int(11) NOT NULL default '-1',
+ `limit_shell_user` int(11) NOT NULL default '0',
+ `limit_dns_zone` int(11) NOT NULL default '-1',
+ `limit_dns_record` int(11) NOT NULL default '-1',
+ `limit_database` int(11) NOT NULL default '-1',
`limit_client` int(11) NOT NULL default '0',
- `sys_userid` int(11) NOT NULL default '0',
- `sys_groupid` int(11) NOT NULL default '0',
- `sys_perm_user` varchar(5) default NULL,
- `sys_perm_group` varchar(5) default NULL,
- `sys_perm_other` varchar(5) default NULL,
- PRIMARY KEY (`template_id`)
+ `sys_userid` int(11) NOT NULL default '0',
+ `sys_groupid` int(11) NOT NULL default '0',
+ `sys_perm_user` varchar(5) default NULL,
+ `sys_perm_group` varchar(5) default NULL,
+ `sys_perm_other` varchar(5) default NULL,
+ PRIMARY KEY (`template_id`)
) ENGINE=MyISAM AUTO_INCREMENT=1 ;
-- --------------------------------------------------------
diff --git a/interface/lib/classes/tform.inc.php b/interface/lib/classes/tform.inc.php
index 4bf226937ffe61fd5f35e5c452cab750e16b69bf..5a53a4f831e1d8f532baae87c8688370513b4237 100644
--- a/interface/lib/classes/tform.inc.php
+++ b/interface/lib/classes/tform.inc.php
@@ -252,6 +252,45 @@ class tform {
return $values;
}
+
+ //* If the parameter 'valuelimit' is set
+ function applyValueLimit($limit,$values) {
+
+ global $app;
+
+ $limit_parts = explode(':',$limit);
+
+ //* values are limited to a comma separated list
+ if($limit_parts[0] == 'list') {
+ $allowed = explode(',',$limit_parts[1]);
+ }
+
+ //* values are limited to a field in the client settings
+ if($limit_parts[0] == 'client') {
+ if($_SESSION["s"]["user"]["typ"] == 'admin') {
+ return $values;
+ } else {
+ $client_group_id = $_SESSION["s"]["user"]["default_group"];
+ $client = $app->db->queryOneRecord("SELECT ".$limit_parts[1]." as lm FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = $client_group_id");
+ $allowed = explode(',',$client['lm']);
+ }
+ }
+
+ //* values are limited to a field in the system settings
+ if($limit_parts[0] == 'system') {
+ $app->uses('getconf');
+ $tmp_conf = $app->getconf->get_global_config($limit_parts[1]);
+ $tmp_key = $limit_parts[2];
+ $allowed = $tmp_conf[$tmp_key];
+ }
+
+ $values_new = array();
+ foreach($values as $key => $val) {
+ if(in_array($key,$allowed)) $values_new[$key] = $val;
+ }
+
+ return $values_new;
+ }
/**
@@ -281,6 +320,11 @@ class tform {
if(isset($field['datasource']) && is_array($field['datasource'])) {
$field["value"] = $this->getDatasourceData($field, $record);
}
+
+ // If a limitation for the values is set
+ if(isset($field['valuelimit']) && is_array($field["value"])) {
+ $field["value"] = $this->applyValueLimit($field['valuelimit'],$field["value"]);
+ }
switch ($field['formtype']) {
case 'SELECT':
@@ -340,7 +384,7 @@ class tform {
$out .= "\r\n
\r\n
\r\n
-
\r\n";
+ \r\n";
}
}
$new_record[$key] = $out;
@@ -373,8 +417,13 @@ class tform {
// If Datasource is set, get the data from there
if(@is_array($field['datasource'])) {
- $field["value"] = $this->getDatasourceData($field, $record);
+ $field["value"] = $this->getDatasourceData($field, $record);
}
+
+ // If a limitation for the values is set
+ if(isset($field['valuelimit']) && is_array($field["value"])) {
+ $field["value"] = $this->applyValueLimit($field['valuelimit'],$field["value"]);
+ }
switch ($field['formtype']) {
case 'SELECT':
@@ -431,7 +480,7 @@ class tform {
$out .= "\r\n
\r\n
\r\n
-
\r\n";
+ \r\n";
}
}
$new_record[$key] = $out;
@@ -486,7 +535,7 @@ class tform {
switch ($field['datatype']) {
case 'VARCHAR':
if(!@is_array($record[$key])) {
- $new_record[$key] = (isset($record[$key]))?$app->db->quote($record[$key]):'';
+ $new_record[$key] = (isset($record[$key]))?$app->db->quote($record[$key]):'';
} else {
$new_record[$key] = implode($field['separator'],$record[$key]);
}
diff --git a/interface/web/client/form/client.tform.php b/interface/web/client/form/client.tform.php
index 1124c7e094173453d4981ab8d36a921554b4b3ae..201a7baa8419c204b96240778d7440f5b10366bf 100644
--- a/interface/web/client/form/client.tform.php
+++ b/interface/web/client/form/client.tform.php
@@ -515,6 +515,13 @@ $form["tabs"]['limits'] = array (
'rows' => '',
'cols' => ''
),
+ 'web_php_options' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'CHECKBOXARRAY',
+ 'default' => '',
+ 'separator' => ',',
+ 'value' => array('no' => 'Disabled', 'fast-cgi' => 'Fast-CGI', 'cgi' => 'CGI', 'mod' => 'Mod-PHP', 'suphp' => 'SuPHP')
+ ),
'limit_web_aliasdomain' => array (
'datatype' => 'INTEGER',
'formtype' => 'TEXT',
@@ -571,6 +578,13 @@ $form["tabs"]['limits'] = array (
'rows' => '',
'cols' => ''
),
+ 'ssh_chroot' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'CHECKBOXARRAY',
+ 'default' => '',
+ 'separator' => ',',
+ 'value' => array('no' => 'None', 'jailkit' => 'Jailkit', 'ssh-chroot' => 'SSH Chroot')
+ ),
'default_dnsserver' => array (
'datatype' => 'INTEGER',
'formtype' => 'SELECT',
diff --git a/interface/web/client/lib/lang/en_client.lng b/interface/web/client/lib/lang/en_client.lng
index 6eabb3270ba2508274762ba06ea7bc4f17ad62ca..922354a80614c9fe85dc0918509343dabc381eb7 100644
--- a/interface/web/client/lib/lang/en_client.lng
+++ b/interface/web/client/lib/lang/en_client.lng
@@ -81,4 +81,6 @@ $wb["limit_database_error_notint"] = 'The database limit must be a number.';
$wb["username_error_regex"] = 'The Username contains invalid chracaters.';
$wb["template_master_txt"] = 'Master';
$wb["template_additional_txt"] = 'Addon';
+$wb["ssh_chroot_txt"] = 'SSH-Chroot Options';
+$wb["web_php_options_txt"] = 'PHP Options';
?>
diff --git a/interface/web/client/templates/client_edit_limits.htm b/interface/web/client/templates/client_edit_limits.htm
index 4b0e01f3796ac8f080fcd2d86592e972f0494399..d224da66b51dd353c1601f37669593749500b292 100644
--- a/interface/web/client/templates/client_edit_limits.htm
+++ b/interface/web/client/templates/client_edit_limits.htm
@@ -77,6 +77,10 @@
+
+
+
+ {tmpl_var name='web_php_options'}
@@ -93,6 +97,10 @@
+
+
+
+ {tmpl_var name='ssh_chroot'}
diff --git a/interface/web/client/tools.inc.php b/interface/web/client/tools.inc.php
index d66afc16e72255d8c68d62e5472c7c255861307c..4f757ccf3ce500db4d79e80a2b114e9257db372f 100644
--- a/interface/web/client/tools.inc.php
+++ b/interface/web/client/tools.inc.php
@@ -77,7 +77,7 @@ function applyClientTemplates($clientId){
*/
$update = '';
foreach($limits as $k => $v){
- if (strpos($k, 'limit') !== false){
+ if (strpos($k, 'limit') !== false && !is_array($v)){
if ($update != '') $update .= ', ';
$update .= '`' . $k . "`='" . $v . "'";
}
diff --git a/interface/web/sites/form/shell_user.tform.php b/interface/web/sites/form/shell_user.tform.php
index d9766a5dc33f38df1eca1dc158bdf24e6c519154..48c596de9c9ab3bd46271b61d2468f17d3f9e3b9 100644
--- a/interface/web/sites/form/shell_user.tform.php
+++ b/interface/web/sites/form/shell_user.tform.php
@@ -109,7 +109,8 @@ $form["tabs"]['shell'] = array (
'datatype' => 'VARCHAR',
'formtype' => 'SELECT',
'default' => '',
- 'value' => array('' => 'None', 'jailkit' => 'Jailkit', 'ssh-chroot' => 'SSH Chroot')
+ 'valuelimit' => 'client:ssh_chroot',
+ 'value' => array('no' => 'None', 'jailkit' => 'Jailkit', 'ssh-chroot' => 'SSH Chroot')
),
'quota_size' => array (
'datatype' => 'INTEGER',
diff --git a/interface/web/sites/form/web_domain.tform.php b/interface/web/sites/form/web_domain.tform.php
index c10e891f768a802c1db73255de32708c1b951fe7..c62fcec57e2dac1bd8b543001488643d738e41b1 100644
--- a/interface/web/sites/form/web_domain.tform.php
+++ b/interface/web/sites/form/web_domain.tform.php
@@ -1,383 +1,384 @@
- 0 id must match with id of current user
-$form["auth_preset"]["groupid"] = 0; // 0 = default groupid of the user, > 0 id must match with groupid of current user
-$form["auth_preset"]["perm_user"] = 'riud'; //r = read, i = insert, u = update, d = delete
-$form["auth_preset"]["perm_group"] = 'riud'; //r = read, i = insert, u = update, d = delete
-$form["auth_preset"]["perm_other"] = ''; //r = read, i = insert, u = update, d = delete
-
-// Clients may not change the website basic settings if they are not resellers
-if($app->auth->has_clients($_SESSION['s']['user']['userid']) || $app->auth->is_admin()) {
- $web_domain_edit_readonly = false;
-} else {
- $web_domain_edit_readonly = true;
-}
-
-
-$form["tabs"]['domain'] = array (
- 'title' => "Domain",
- 'width' => 100,
- 'template' => "templates/web_domain_edit.htm",
- 'readonly' => $web_domain_edit_readonly,
- 'fields' => array (
- ##################################
- # Begin Datatable fields
- ##################################
- 'server_id' => array (
- 'datatype' => 'INTEGER',
- 'formtype' => 'SELECT',
- 'default' => '',
- 'datasource' => array ( 'type' => 'SQL',
- 'querystring' => 'SELECT server_id,server_name FROM server WHERE web_server = 1 AND {AUTHSQL} ORDER BY server_name',
- 'keyfield'=> 'server_id',
- 'valuefield'=> 'server_name'
- ),
- 'value' => ''
- ),
- 'ip_address' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'SELECT',
- 'default' => '',
- 'datasource' => array ( 'type' => 'SQL',
- 'querystring' => 'SELECT ip_address,ip_address FROM server_ip WHERE {AUTHSQL} ORDER BY ip_address',
- 'keyfield'=> 'ip_address',
- 'valuefield'=> 'ip_address'
- ),
- 'value' => ''
- ),
- 'domain' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'TEXT',
- 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY',
- 'errmsg'=> 'domain_error_empty'),
- 1 => array ( 'type' => 'UNIQUE',
- 'errmsg'=> 'domain_error_unique'),
- 2 => array ( 'type' => 'REGEX',
- 'regex' => '/^[\w\.\-]{2,64}\.[a-zA-Z]{2,10}$/',
- 'errmsg'=> 'domain_error_regex'),
- ),
- 'default' => '',
- 'value' => '',
- 'width' => '30',
- 'maxlength' => '255'
- ),
- 'type' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'SELECT',
- 'default' => 'y',
- 'value' => array('vhost' => 'Site', 'alias' => 'Alias')
- ),
- 'parent_domain_id' => array (
- 'datatype' => 'INTEGER',
- 'formtype' => 'SELECT',
- 'default' => '',
- 'datasource' => array ( 'type' => 'SQL',
- 'querystring' => "SELECT domain_id,domain FROM web_domain WHERE type = 'site' AND {AUTHSQL} ORDER BY domain",
- 'keyfield'=> 'domain_id',
- 'valuefield'=> 'domain'
- ),
- 'value' => ''
- ),
- 'vhost_type' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'SELECT',
- 'default' => 'y',
- 'value' => array('name' => 'Namebased', 'ip' => 'IP-Based')
- ),
- 'hd_quota' => array (
- 'datatype' => 'INTEGER',
- 'formtype' => 'TEXT',
- 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY',
- 'errmsg'=> 'hd_quota_error_empty'),
- ),
- 'default' => '-1',
- 'value' => '',
- 'width' => '7',
- 'maxlength' => '7'
- ),
- 'traffic_quota' => array (
- 'datatype' => 'INTEGER',
- 'formtype' => 'TEXT',
- 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY',
- 'errmsg'=> 'traffic_quota_error_empty'),
- ),
- 'default' => '-1',
- 'value' => '',
- 'width' => '7',
- 'maxlength' => '7'
- ),
- 'cgi' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'CHECKBOX',
- 'default' => 'n',
- 'value' => array(0 => 'n',1 => 'y')
- ),
- 'ssi' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'CHECKBOX',
- 'default' => 'n',
- 'value' => array(0 => 'n',1 => 'y')
- ),
- 'suexec' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'CHECKBOX',
- 'default' => 'n',
- 'value' => array(0 => 'n',1 => 'y')
- ),
- 'errordocs' => array (
- 'datatype' => 'INTEGER',
- 'formtype' => 'CHECKBOX',
- 'default' => '1',
- 'value' => array(0 => '0',1 => '1')
- ),
- 'subdomain' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'SELECT',
- 'default' => 'y',
- 'value' => array('none' => 'none', 'www' => 'www.', '*' => '*.')
- ),
- 'ssl' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'CHECKBOX',
- 'default' => 'n',
- 'value' => array(0 => 'n',1 => 'y')
- ),
- 'php' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'SELECT',
- 'default' => 'fast-cgi',
- 'value' => array('' => 'Disabled', 'fast-cgi' => 'Fast-CGI', 'cgi' => 'CGI', 'mod' => 'Mod-PHP', 'suphp' => 'SuPHP')
- ),
- 'active' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'CHECKBOX',
- 'default' => 'y',
- 'value' => array(0 => 'n',1 => 'y')
- ),
- ##################################
- # ENDE Datatable fields
- ##################################
- )
-);
-
-
-$form["tabs"]['redirect'] = array (
- 'title' => "Redirect",
- 'width' => 100,
- 'template' => "templates/web_domain_redirect.htm",
- 'readonly' => false,
- 'fields' => array (
- ##################################
- # Begin Datatable fields
- ##################################
- 'redirect_type' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'SELECT',
- 'default' => '',
- 'value' => array('' => 'No redirect', 'R' => 'R', 'L' => 'L')
- ),
- 'redirect_path' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'TEXT',
- 'default' => '',
- 'value' => '',
- 'width' => '30',
- 'maxlength' => '255'
- ),
- ##################################
- # ENDE Datatable fields
- ##################################
- )
-);
-
-$form["tabs"]['ssl'] = array (
- 'title' => "SSL",
- 'width' => 100,
- 'template' => "templates/web_domain_ssl.htm",
- 'readonly' => false,
- 'fields' => array (
- ##################################
- # Begin Datatable fields
- ##################################
- 'ssl_state' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'TEXT',
- 'default' => '',
- 'value' => '',
- 'width' => '30',
- 'maxlength' => '255'
- ),
- 'ssl_locality' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'TEXT',
- 'default' => '',
- 'value' => '',
- 'width' => '30',
- 'maxlength' => '255'
- ),
- 'ssl_organisation' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'TEXT',
- 'default' => '',
- 'value' => '',
- 'width' => '30',
- 'maxlength' => '255'
- ),
- 'ssl_organisation_unit' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'TEXT',
- 'default' => '',
- 'value' => '',
- 'width' => '30',
- 'maxlength' => '255'
- ),
- 'ssl_country' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'TEXT',
- 'default' => '',
- 'value' => '',
- 'width' => '2',
- 'maxlength' => '2'
- ),
- 'ssl_request' => array (
- 'datatype' => 'TEXT',
- 'formtype' => 'TEXTAREA',
- 'default' => '',
- 'value' => '',
- 'cols' => '30',
- 'rows' => '10'
- ),
- 'ssl_cert' => array (
- 'datatype' => 'TEXT',
- 'formtype' => 'TEXTAREA',
- 'default' => '',
- 'value' => '',
- 'cols' => '30',
- 'rows' => '10'
- ),
- 'ssl_bundle' => array (
- 'datatype' => 'TEXT',
- 'formtype' => 'TEXTAREA',
- 'default' => '',
- 'value' => '',
- 'cols' => '30',
- 'rows' => '10'
- ),
- 'ssl_action' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'SELECT',
- 'default' => '',
- 'value' => array('' => 'None', 'save' => 'Save Certificate', 'create' => 'Create Certificate','del' => 'Delete Certificate')
- ),
- ##################################
- # ENDE Datatable fields
- ##################################
- )
-);
-
-if($_SESSION["s"]["user"]["typ"] == 'admin') {
-
-$form["tabs"]['advanced'] = array (
- 'title' => "Options",
- 'width' => 100,
- 'template' => "templates/web_domain_advanced.htm",
- 'readonly' => false,
- 'fields' => array (
- ##################################
- # Begin Datatable fields
- ##################################
- 'document_root' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'TEXT',
- 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY',
- 'errmsg'=> 'documentroot_error_empty'),
- ),
- 'default' => '',
- 'value' => '',
- 'width' => '30',
- 'maxlength' => '255'
- ),
- 'system_user' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'TEXT',
- 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY',
- 'errmsg'=> 'sysuser_error_empty'),
- ),
- 'default' => '',
- 'value' => '',
- 'width' => '30',
- 'maxlength' => '255'
- ),
- 'system_group' => array (
- 'datatype' => 'VARCHAR',
- 'formtype' => 'TEXT',
- 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY',
- 'errmsg'=> 'sysgroup_error_empty'),
- ),
- 'default' => '',
- 'value' => '',
- 'width' => '30',
- 'maxlength' => '255'
- ),
- 'apache_directives' => array (
- 'datatype' => 'TEXT',
- 'formtype' => 'TEXT',
- 'default' => '',
- 'value' => '',
- 'width' => '30',
- 'maxlength' => '255'
- ),
- ##################################
- # ENDE Datatable fields
- ##################################
- )
-);
-
-}
-
-
+ 0 id must match with id of current user
+$form["auth_preset"]["groupid"] = 0; // 0 = default groupid of the user, > 0 id must match with groupid of current user
+$form["auth_preset"]["perm_user"] = 'riud'; //r = read, i = insert, u = update, d = delete
+$form["auth_preset"]["perm_group"] = 'riud'; //r = read, i = insert, u = update, d = delete
+$form["auth_preset"]["perm_other"] = ''; //r = read, i = insert, u = update, d = delete
+
+// Clients may not change the website basic settings if they are not resellers
+if($app->auth->has_clients($_SESSION['s']['user']['userid']) || $app->auth->is_admin()) {
+ $web_domain_edit_readonly = false;
+} else {
+ $web_domain_edit_readonly = true;
+}
+
+
+$form["tabs"]['domain'] = array (
+ 'title' => "Domain",
+ 'width' => 100,
+ 'template' => "templates/web_domain_edit.htm",
+ 'readonly' => $web_domain_edit_readonly,
+ 'fields' => array (
+ ##################################
+ # Begin Datatable fields
+ ##################################
+ 'server_id' => array (
+ 'datatype' => 'INTEGER',
+ 'formtype' => 'SELECT',
+ 'default' => '',
+ 'datasource' => array ( 'type' => 'SQL',
+ 'querystring' => 'SELECT server_id,server_name FROM server WHERE web_server = 1 AND {AUTHSQL} ORDER BY server_name',
+ 'keyfield'=> 'server_id',
+ 'valuefield'=> 'server_name'
+ ),
+ 'value' => ''
+ ),
+ 'ip_address' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'SELECT',
+ 'default' => '',
+ 'datasource' => array ( 'type' => 'SQL',
+ 'querystring' => 'SELECT ip_address,ip_address FROM server_ip WHERE {AUTHSQL} ORDER BY ip_address',
+ 'keyfield'=> 'ip_address',
+ 'valuefield'=> 'ip_address'
+ ),
+ 'value' => ''
+ ),
+ 'domain' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'TEXT',
+ 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY',
+ 'errmsg'=> 'domain_error_empty'),
+ 1 => array ( 'type' => 'UNIQUE',
+ 'errmsg'=> 'domain_error_unique'),
+ 2 => array ( 'type' => 'REGEX',
+ 'regex' => '/^[\w\.\-]{2,64}\.[a-zA-Z]{2,10}$/',
+ 'errmsg'=> 'domain_error_regex'),
+ ),
+ 'default' => '',
+ 'value' => '',
+ 'width' => '30',
+ 'maxlength' => '255'
+ ),
+ 'type' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'SELECT',
+ 'default' => 'y',
+ 'value' => array('vhost' => 'Site', 'alias' => 'Alias')
+ ),
+ 'parent_domain_id' => array (
+ 'datatype' => 'INTEGER',
+ 'formtype' => 'SELECT',
+ 'default' => '',
+ 'datasource' => array ( 'type' => 'SQL',
+ 'querystring' => "SELECT domain_id,domain FROM web_domain WHERE type = 'site' AND {AUTHSQL} ORDER BY domain",
+ 'keyfield'=> 'domain_id',
+ 'valuefield'=> 'domain'
+ ),
+ 'value' => ''
+ ),
+ 'vhost_type' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'SELECT',
+ 'default' => 'y',
+ 'value' => array('name' => 'Namebased', 'ip' => 'IP-Based')
+ ),
+ 'hd_quota' => array (
+ 'datatype' => 'INTEGER',
+ 'formtype' => 'TEXT',
+ 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY',
+ 'errmsg'=> 'hd_quota_error_empty'),
+ ),
+ 'default' => '-1',
+ 'value' => '',
+ 'width' => '7',
+ 'maxlength' => '7'
+ ),
+ 'traffic_quota' => array (
+ 'datatype' => 'INTEGER',
+ 'formtype' => 'TEXT',
+ 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY',
+ 'errmsg'=> 'traffic_quota_error_empty'),
+ ),
+ 'default' => '-1',
+ 'value' => '',
+ 'width' => '7',
+ 'maxlength' => '7'
+ ),
+ 'cgi' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'CHECKBOX',
+ 'default' => 'n',
+ 'value' => array(0 => 'n',1 => 'y')
+ ),
+ 'ssi' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'CHECKBOX',
+ 'default' => 'n',
+ 'value' => array(0 => 'n',1 => 'y')
+ ),
+ 'suexec' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'CHECKBOX',
+ 'default' => 'n',
+ 'value' => array(0 => 'n',1 => 'y')
+ ),
+ 'errordocs' => array (
+ 'datatype' => 'INTEGER',
+ 'formtype' => 'CHECKBOX',
+ 'default' => '1',
+ 'value' => array(0 => '0',1 => '1')
+ ),
+ 'subdomain' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'SELECT',
+ 'default' => 'y',
+ 'value' => array('none' => 'none', 'www' => 'www.', '*' => '*.')
+ ),
+ 'ssl' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'CHECKBOX',
+ 'default' => 'n',
+ 'value' => array(0 => 'n',1 => 'y')
+ ),
+ 'php' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'SELECT',
+ 'default' => 'fast-cgi',
+ 'valuelimit' => 'client:web_php_options',
+ 'value' => array('no' => 'Disabled', 'fast-cgi' => 'Fast-CGI', 'cgi' => 'CGI', 'mod' => 'Mod-PHP', 'suphp' => 'SuPHP')
+ ),
+ 'active' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'CHECKBOX',
+ 'default' => 'y',
+ 'value' => array(0 => 'n',1 => 'y')
+ ),
+ ##################################
+ # ENDE Datatable fields
+ ##################################
+ )
+);
+
+
+$form["tabs"]['redirect'] = array (
+ 'title' => "Redirect",
+ 'width' => 100,
+ 'template' => "templates/web_domain_redirect.htm",
+ 'readonly' => false,
+ 'fields' => array (
+ ##################################
+ # Begin Datatable fields
+ ##################################
+ 'redirect_type' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'SELECT',
+ 'default' => '',
+ 'value' => array('' => 'No redirect', 'R' => 'R', 'L' => 'L')
+ ),
+ 'redirect_path' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'TEXT',
+ 'default' => '',
+ 'value' => '',
+ 'width' => '30',
+ 'maxlength' => '255'
+ ),
+ ##################################
+ # ENDE Datatable fields
+ ##################################
+ )
+);
+
+$form["tabs"]['ssl'] = array (
+ 'title' => "SSL",
+ 'width' => 100,
+ 'template' => "templates/web_domain_ssl.htm",
+ 'readonly' => false,
+ 'fields' => array (
+ ##################################
+ # Begin Datatable fields
+ ##################################
+ 'ssl_state' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'TEXT',
+ 'default' => '',
+ 'value' => '',
+ 'width' => '30',
+ 'maxlength' => '255'
+ ),
+ 'ssl_locality' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'TEXT',
+ 'default' => '',
+ 'value' => '',
+ 'width' => '30',
+ 'maxlength' => '255'
+ ),
+ 'ssl_organisation' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'TEXT',
+ 'default' => '',
+ 'value' => '',
+ 'width' => '30',
+ 'maxlength' => '255'
+ ),
+ 'ssl_organisation_unit' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'TEXT',
+ 'default' => '',
+ 'value' => '',
+ 'width' => '30',
+ 'maxlength' => '255'
+ ),
+ 'ssl_country' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'TEXT',
+ 'default' => '',
+ 'value' => '',
+ 'width' => '2',
+ 'maxlength' => '2'
+ ),
+ 'ssl_request' => array (
+ 'datatype' => 'TEXT',
+ 'formtype' => 'TEXTAREA',
+ 'default' => '',
+ 'value' => '',
+ 'cols' => '30',
+ 'rows' => '10'
+ ),
+ 'ssl_cert' => array (
+ 'datatype' => 'TEXT',
+ 'formtype' => 'TEXTAREA',
+ 'default' => '',
+ 'value' => '',
+ 'cols' => '30',
+ 'rows' => '10'
+ ),
+ 'ssl_bundle' => array (
+ 'datatype' => 'TEXT',
+ 'formtype' => 'TEXTAREA',
+ 'default' => '',
+ 'value' => '',
+ 'cols' => '30',
+ 'rows' => '10'
+ ),
+ 'ssl_action' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'SELECT',
+ 'default' => '',
+ 'value' => array('' => 'None', 'save' => 'Save Certificate', 'create' => 'Create Certificate','del' => 'Delete Certificate')
+ ),
+ ##################################
+ # ENDE Datatable fields
+ ##################################
+ )
+);
+
+if($_SESSION["s"]["user"]["typ"] == 'admin') {
+
+$form["tabs"]['advanced'] = array (
+ 'title' => "Options",
+ 'width' => 100,
+ 'template' => "templates/web_domain_advanced.htm",
+ 'readonly' => false,
+ 'fields' => array (
+ ##################################
+ # Begin Datatable fields
+ ##################################
+ 'document_root' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'TEXT',
+ 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY',
+ 'errmsg'=> 'documentroot_error_empty'),
+ ),
+ 'default' => '',
+ 'value' => '',
+ 'width' => '30',
+ 'maxlength' => '255'
+ ),
+ 'system_user' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'TEXT',
+ 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY',
+ 'errmsg'=> 'sysuser_error_empty'),
+ ),
+ 'default' => '',
+ 'value' => '',
+ 'width' => '30',
+ 'maxlength' => '255'
+ ),
+ 'system_group' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'TEXT',
+ 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY',
+ 'errmsg'=> 'sysgroup_error_empty'),
+ ),
+ 'default' => '',
+ 'value' => '',
+ 'width' => '30',
+ 'maxlength' => '255'
+ ),
+ 'apache_directives' => array (
+ 'datatype' => 'TEXT',
+ 'formtype' => 'TEXT',
+ 'default' => '',
+ 'value' => '',
+ 'width' => '30',
+ 'maxlength' => '255'
+ ),
+ ##################################
+ # ENDE Datatable fields
+ ##################################
+ )
+);
+
+}
+
+
?>
\ No newline at end of file