diff --git a/interface/web/admin/form/server_config.tform.php b/interface/web/admin/form/server_config.tform.php
new file mode 100644
index 0000000000000000000000000000000000000000..f3e2a5a581f14d75d1883a7446c91d9b3da328ab
--- /dev/null
+++ b/interface/web/admin/form/server_config.tform.php
@@ -0,0 +1,484 @@
+ 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
+
+$form["tabs"]['server'] = array (
+ 'title' => "Server",
+ 'width' => 70,
+ 'template' => "templates/server_config_server_edit.htm",
+ 'fields' => array (
+ ##################################
+ # Begin Datatable fields
+ ##################################
+ 'ip_address' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'TEXT',
+ 'default' => '192.168.0.100',
+ 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY',
+ 'errmsg'=> 'ip_address_error_empty'),
+ ),
+ 'value' => '',
+ 'width' => '15',
+ 'maxlength' => '255'
+ ),
+ 'netmask' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'TEXT',
+ 'default' => '255.255.255.0',
+ 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY',
+ 'errmsg'=> 'netmask_error_empty'),
+ ),
+ 'value' => '',
+ 'width' => '15',
+ 'maxlength' => '255'
+ ),
+ 'gateway' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'TEXT',
+ 'default' => '192.168.0.1',
+ 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY',
+ 'errmsg'=> 'gateway_error_empty'),
+ ),
+ 'value' => '',
+ 'width' => '15',
+ 'maxlength' => '255'
+ ),
+ 'hostname' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'TEXT',
+ 'default' => 'server1.example.com',
+ 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY',
+ 'errmsg'=> 'hostname_error_empty'),
+ ),
+ 'value' => '',
+ 'width' => '40',
+ 'maxlength' => '255'
+ ),
+ 'nameservers' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'TEXT',
+ 'default' => '192.168.0.1,192.168.0.2',
+ 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY',
+ 'errmsg'=> 'nameservers_error_empty'),
+ ),
+ 'value' => '',
+ 'width' => '40',
+ 'maxlength' => '255'
+ ),
+ ##################################
+ # ENDE Datatable fields
+ ##################################
+ )
+);
+
+$form["tabs"]['mail'] = array (
+ 'title' => "Mail",
+ 'width' => 60,
+ 'template' => "templates/server_config_mail_edit.htm",
+ 'fields' => array (
+ ##################################
+ # Begin Datatable fields
+ ##################################
+ 'module' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'SELECT',
+ 'default' => '',
+ 'value' => array('postfix_mysql' => 'postfix_mysql')
+ ),
+ 'maildir_path' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'TEXT',
+ 'default' => '/home/vmail/[domain]/[localpart]/',
+ 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY',
+ 'errmsg'=> 'maildir_path_error_empty'),
+ ),
+ 'value' => '',
+ 'width' => '40',
+ 'maxlength' => '255'
+ ),
+ 'homedir_path' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'TEXT',
+ 'default' => '/home/vmail/',
+ 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY',
+ 'errmsg'=> 'homedir_path_error_empty'),
+ ),
+ 'value' => '',
+ 'width' => '40',
+ 'maxlength' => '255'
+ ),
+ 'mailuser_uid' => array (
+ 'datatype' => 'INTEGER',
+ 'formtype' => 'TEXT',
+ 'default' => '5000',
+ 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY',
+ 'errmsg'=> 'mailuser_uid_error_empty'),
+ ),
+ 'value' => '',
+ 'width' => '10',
+ 'maxlength' => '255'
+ ),
+ 'mailuser_gid' => array (
+ 'datatype' => 'INTEGER',
+ 'formtype' => 'TEXT',
+ 'default' => '5000',
+ 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY',
+ 'errmsg'=> 'mailuser_gid_error_empty'),
+ ),
+ 'value' => '',
+ 'width' => '10',
+ 'maxlength' => '255'
+ ),
+ 'mailuser_name' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'TEXT',
+ 'default' => 'vmail',
+ 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY',
+ 'errmsg'=> 'mailuser_name_error_empty'),
+ ),
+ 'value' => '',
+ 'width' => '10',
+ 'maxlength' => '255'
+ ),
+ 'mailuser_group' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'TEXT',
+ 'default' => 'vmail',
+ 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY',
+ 'errmsg'=> 'mailuser_group_error_empty'),
+ ),
+ 'value' => '',
+ 'width' => '10',
+ 'maxlength' => '255'
+ ),
+ 'relayhost' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'TEXT',
+ 'default' => '',
+ 'value' => '',
+ 'width' => '40',
+ 'maxlength' => '255'
+ ),
+ 'relayhost_user' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'TEXT',
+ 'default' => '',
+ 'value' => '',
+ 'width' => '40',
+ 'maxlength' => '255'
+ ),
+ 'relayhost_password' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'TEXT',
+ 'default' => '',
+ 'value' => '',
+ 'width' => '40',
+ 'maxlength' => '255'
+ ),
+ 'mailbox_size_limit' => array (
+ 'datatype' => 'INTEGER',
+ 'formtype' => 'TEXT',
+ 'default' => '0',
+ 'value' => '',
+ 'width' => '10',
+ 'maxlength' => '15'
+ ),
+ 'message_size_limit' => array (
+ 'datatype' => 'INTEGER',
+ 'formtype' => 'TEXT',
+ 'default' => '0',
+ 'value' => '',
+ 'width' => '10',
+ 'maxlength' => '15'
+ ),
+ ##################################
+ # ENDE Datatable fields
+ ##################################
+ )
+);
+
+$form["tabs"]['getmail'] = array (
+ 'title' => "Getmail",
+ 'width' => 80,
+ 'template' => "templates/server_config_getmail_edit.htm",
+ 'fields' => array (
+ ##################################
+ # Begin Datatable fields
+ ##################################
+ 'getmail_config_dir' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'TEXT',
+ 'default' => '',
+ 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY',
+ 'errmsg'=> 'getmail_config_dir_error_empty'),
+ ),
+ 'value' => '',
+ 'width' => '40',
+ 'maxlength' => '255'
+ ),
+ ##################################
+ # ENDE Datatable fields
+ ##################################
+ )
+);
+
+$form["tabs"]['web'] = array (
+ 'title' => "Web",
+ 'width' => 60,
+ 'template' => "templates/server_config_web_edit.htm",
+ 'fields' => array (
+ ##################################
+ # Begin Datatable fields
+ ##################################
+ 'website_path' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'TEXT',
+ 'default' => '',
+ 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY',
+ 'errmsg'=> 'website_path_error_empty'),
+ ),
+ 'value' => '',
+ 'width' => '40',
+ 'maxlength' => '255'
+ ),
+ 'website_symlinks' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'TEXT',
+ 'default' => '',
+ 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY',
+ 'errmsg'=> 'website_symlinks_error_empty'),
+ ),
+ 'value' => '',
+ 'width' => '40',
+ 'maxlength' => '255'
+ ),
+ 'vhost_conf_dir' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'TEXT',
+ 'default' => '',
+ 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY',
+ 'errmsg'=> 'vhost_conf_dir_error_empty'),
+ ),
+ 'value' => '',
+ 'width' => '40',
+ 'maxlength' => '255'
+ ),
+ 'vhost_conf_enabled_dir' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'TEXT',
+ 'default' => '',
+ 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY',
+ 'errmsg'=> 'vhost_conf_enabled_dir_error_empty'),
+ ),
+ 'value' => '',
+ 'width' => '40',
+ 'maxlength' => '255'
+ ),
+ ##################################
+ # ENDE Datatable fields
+ ##################################
+ )
+);
+
+$form["tabs"]['fastcgi'] = array (
+ 'title' => "FastCGI",
+ 'width' => 80,
+ 'template' => "templates/server_config_fastcgi_edit.htm",
+ 'fields' => array (
+ ##################################
+ # Begin Datatable fields
+ ##################################
+ 'fastcgi_starter_path' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'TEXT',
+ 'default' => '',
+ 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY',
+ 'errmsg'=> 'fastcgi_starter_path_error_empty'),
+ ),
+ 'value' => '',
+ 'width' => '40',
+ 'maxlength' => '255'
+ ),
+ 'fastcgi_starter_script' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'TEXT',
+ 'default' => '',
+ 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY',
+ 'errmsg'=> 'fastcgi_starter_script_error_empty'),
+ ),
+ 'value' => '',
+ 'width' => '40',
+ 'maxlength' => '255'
+ ),
+ 'fastcgi_alias' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'TEXT',
+ 'default' => '',
+ 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY',
+ 'errmsg'=> 'fastcgi_alias_error_empty'),
+ ),
+ 'value' => '',
+ 'width' => '40',
+ 'maxlength' => '255'
+ ),
+ 'fastcgi_phpini_path' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'TEXT',
+ 'default' => '',
+ 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY',
+ 'errmsg'=> 'fastcgi_phpini_path_error_empty'),
+ ),
+ 'value' => '',
+ 'width' => '40',
+ 'maxlength' => '255'
+ ),
+ 'fastcgi_children' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'TEXT',
+ 'default' => '',
+ 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY',
+ 'errmsg'=> 'fastcgi_children_error_empty'),
+ ),
+ 'value' => '',
+ 'width' => '40',
+ 'maxlength' => '255'
+ ),
+ 'fastcgi_max_requests' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'TEXT',
+ 'default' => '',
+ 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY',
+ 'errmsg'=> 'fastcgi_max_requests_error_empty'),
+ ),
+ 'value' => '',
+ 'width' => '40',
+ 'maxlength' => '255'
+ ),
+ 'fastcgi_bin' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'TEXT',
+ 'default' => '',
+ 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY',
+ 'errmsg'=> 'fastcgi_bin_error_empty'),
+ ),
+ 'value' => '',
+ 'width' => '40',
+ 'maxlength' => '255'
+ ),
+ ##################################
+ # ENDE Datatable fields
+ ##################################
+ )
+);
+
+
+$form["tabs"]['jailkit'] = array (
+ 'title' => "Jailkit",
+ 'width' => 80,
+ 'template' => "templates/server_config_jailkit_edit.htm",
+ 'fields' => array (
+ ##################################
+ # Begin Datatable fields
+ ##################################
+ 'jailkit_chroot_home' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'TEXT',
+ 'default' => '',
+ 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY',
+ 'errmsg'=> 'jailkit_chroot_home_error_empty'),
+ ),
+ 'value' => '',
+ 'width' => '40',
+ 'maxlength' => '255'
+ ),
+ 'jailkit_chroot_app_sections' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'TEXT',
+ 'default' => '',
+ 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY',
+ 'errmsg'=> 'jailkit_chroot_app_sections_error_empty'),
+ ),
+ 'value' => '',
+ 'width' => '40',
+ 'maxlength' => '1000'
+ ),
+ 'jailkit_chroot_app_programs' => array (
+ 'datatype' => 'VARCHAR',
+ 'formtype' => 'TEXT',
+ 'default' => '',
+ 'validators' => array ( 0 => array ( 'type' => 'NOTEMPTY',
+ 'errmsg'=> 'jailkit_chroot_app_programs_error_empty'),
+ ),
+ 'value' => '',
+ 'width' => '40',
+ 'maxlength' => '1000'
+ ),
+ ##################################
+ # ENDE Datatable fields
+ ##################################
+ )
+);
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+?>
\ No newline at end of file
diff --git a/interface/web/admin/lib/lang/en_server_config.lng b/interface/web/admin/lib/lang/en_server_config.lng
new file mode 100644
index 0000000000000000000000000000000000000000..5c046b84b2bb4a389a8cbb5d2feb316a940c11bf
--- /dev/null
+++ b/interface/web/admin/lib/lang/en_server_config.lng
@@ -0,0 +1,36 @@
+
\ No newline at end of file
diff --git a/interface/web/admin/lib/lang/en_server_config_list.lng b/interface/web/admin/lib/lang/en_server_config_list.lng
new file mode 100644
index 0000000000000000000000000000000000000000..be6f14f2c9ac280c24dc8c0a2283ad514a4856ee
--- /dev/null
+++ b/interface/web/admin/lib/lang/en_server_config_list.lng
@@ -0,0 +1,10 @@
+
\ No newline at end of file
diff --git a/interface/web/admin/lib/module.conf.php b/interface/web/admin/lib/module.conf.php
index b6d43846e29850c68de641e3894c647af0e777f8..8a787a44578b3662fb7389d91e38c3cd27e5fa71 100644
--- a/interface/web/admin/lib/module.conf.php
+++ b/interface/web/admin/lib/module.conf.php
@@ -50,6 +50,11 @@ $items[] = array( 'title' => 'Add server',
$items[] = array( 'title' => 'Edit server',
'target' => 'content',
'link' => 'admin/server_list.php');
+
+$items[] = array( 'title' => 'Server Config',
+ 'target' => 'content',
+ 'link' => 'admin/server_config_list.php');
+
/*
$items[] = array( 'title' => 'Add Server IP',
'target' => 'content',
diff --git a/interface/web/admin/list/server_config.list.php b/interface/web/admin/list/server_config.list.php
new file mode 100644
index 0000000000000000000000000000000000000000..6fc289d407d500da3793fd4a3385761c97a3f4c1
--- /dev/null
+++ b/interface/web/admin/list/server_config.list.php
@@ -0,0 +1,60 @@
+ "server_name",
+ 'datatype' => "VARCHAR",
+ 'formtype' => "TEXT",
+ 'op' => "like",
+ 'prefix' => "%",
+ 'suffix' => "%",
+ 'width' => "",
+ 'value' => "");
+
+
+?>
\ No newline at end of file
diff --git a/interface/web/admin/server_config_del.php b/interface/web/admin/server_config_del.php
new file mode 100644
index 0000000000000000000000000000000000000000..67c0096af788016df169be532ea5a9cf2053b2bb
--- /dev/null
+++ b/interface/web/admin/server_config_del.php
@@ -0,0 +1,51 @@
+auth->check_module_permissions('admin');
+
+$app->uses("tform_actions");
+$app->tform_actions->onDelete();
+
+?>
\ No newline at end of file
diff --git a/interface/web/admin/server_config_edit.php b/interface/web/admin/server_config_edit.php
new file mode 100644
index 0000000000000000000000000000000000000000..052c9826c64ae3b0a0f76295e3b1547420a0c4a9
--- /dev/null
+++ b/interface/web/admin/server_config_edit.php
@@ -0,0 +1,96 @@
+auth->check_module_permissions('admin');
+
+// Loading classes
+$app->uses('tpl,tform,tform_actions');
+$app->load('tform_actions');
+
+class page_action extends tform_actions {
+
+ function onShowEdit() {
+ global $app, $conf;
+
+ if($_SESSION["s"]["user"]["typ"] != 'admin') die('This function needs admin priveliges');
+
+ if($app->tform->errorMessage == '') {
+ $app->uses('ini_parser,getconf');
+
+ $section = $this->active_tab;
+ $server_id = $this->id;
+
+ $this->dataRecord = $app->getconf->get_server_config($server_id,$section);
+ }
+
+ $record = $app->tform->getHTML($this->dataRecord, $this->active_tab,'EDIT');
+
+ $record['id'] = $this->id;
+ $app->tpl->setVar($record);
+ }
+
+ function onUpdateSave($sql) {
+ global $app;
+
+ if($_SESSION["s"]["user"]["typ"] != 'admin') die('This function needs admin priveliges');
+ $app->uses('ini_parser,getconf');
+
+ $section = $app->tform->getCurrentTab();
+ $server_id = $this->id;
+
+ $server_config_array = $app->getconf->get_server_config($server_id);
+ $server_config_array[$section] = $app->tform->encode($this->dataRecord,$section);
+ $server_config_str = $app->ini_parser->get_ini_string($server_config_array);
+
+ $sql = "UPDATE server SET config = '".$app->db->quote($server_config_str)."' WHERE server_id = ".$server_id;
+ $app->db->query($sql);
+ }
+
+}
+
+$app->tform_actions = new page_action;
+$app->tform_actions->onLoad();
+
+
+?>
\ No newline at end of file
diff --git a/interface/web/admin/server_config_list.php b/interface/web/admin/server_config_list.php
new file mode 100644
index 0000000000000000000000000000000000000000..5fc8ddb902007ff0d61e1ca8e86f75f011a18d21
--- /dev/null
+++ b/interface/web/admin/server_config_list.php
@@ -0,0 +1,53 @@
+auth->check_module_permissions('admin');
+
+$app->uses('listform_actions');
+//$app->listform_actions->SQLExtWhere = "wb = 'W'";
+
+$app->listform_actions->onLoad();
+
+
+?>
\ No newline at end of file
diff --git a/interface/web/admin/templates/server_config_fastcgi_edit.htm b/interface/web/admin/templates/server_config_fastcgi_edit.htm
new file mode 100644
index 0000000000000000000000000000000000000000..ac972f4b5ab7e64c1630ef02a5cad08d364e21dc
--- /dev/null
+++ b/interface/web/admin/templates/server_config_fastcgi_edit.htm
@@ -0,0 +1,40 @@
+
+
\ No newline at end of file
diff --git a/interface/web/admin/templates/server_config_getmail_edit.htm b/interface/web/admin/templates/server_config_getmail_edit.htm
new file mode 100644
index 0000000000000000000000000000000000000000..d2b8abbc21d6e69a147a3da36b3b89bf783a1fde
--- /dev/null
+++ b/interface/web/admin/templates/server_config_getmail_edit.htm
@@ -0,0 +1,16 @@
+
+
\ No newline at end of file
diff --git a/interface/web/admin/templates/server_config_jailkit_edit.htm b/interface/web/admin/templates/server_config_jailkit_edit.htm
new file mode 100644
index 0000000000000000000000000000000000000000..aae780c3ed97d1bdb60737522498e1d81cb3f871
--- /dev/null
+++ b/interface/web/admin/templates/server_config_jailkit_edit.htm
@@ -0,0 +1,24 @@
+
+
\ No newline at end of file
diff --git a/interface/web/admin/templates/server_config_list.htm b/interface/web/admin/templates/server_config_list.htm
new file mode 100644
index 0000000000000000000000000000000000000000..d87841000b4b6e858f7d9811e9b7650a5053d96f
--- /dev/null
+++ b/interface/web/admin/templates/server_config_list.htm
@@ -0,0 +1,21 @@
+
+
\ No newline at end of file
diff --git a/interface/web/admin/templates/server_config_mail_edit.htm b/interface/web/admin/templates/server_config_mail_edit.htm
new file mode 100644
index 0000000000000000000000000000000000000000..6d40ef3152a867ba1f8f9f858838ae12bdbfee85
--- /dev/null
+++ b/interface/web/admin/templates/server_config_mail_edit.htm
@@ -0,0 +1,64 @@
+
+
\ No newline at end of file
diff --git a/interface/web/admin/templates/server_config_server_edit.htm b/interface/web/admin/templates/server_config_server_edit.htm
new file mode 100644
index 0000000000000000000000000000000000000000..6200fbc6ca4548d3d6077f20f5b1c926cd00483a
--- /dev/null
+++ b/interface/web/admin/templates/server_config_server_edit.htm
@@ -0,0 +1,32 @@
+
+
\ No newline at end of file
diff --git a/interface/web/admin/templates/server_config_web_edit.htm b/interface/web/admin/templates/server_config_web_edit.htm
new file mode 100644
index 0000000000000000000000000000000000000000..59ca5138b0fc89d0b040241f622b40a4fd66617c
--- /dev/null
+++ b/interface/web/admin/templates/server_config_web_edit.htm
@@ -0,0 +1,28 @@
+
+
\ No newline at end of file