From 838c874d186669867fee81800aaaf29655b4a15f Mon Sep 17 00:00:00 2001 From: tbrehm <t.brehm@ispconfig.org> Date: Wed, 04 Mar 2009 13:36:14 -0500 Subject: [PATCH] - Added more redirect options. - Made jailkit programs configurable per linux distribution in the installer. --- server/conf/vhost.conf.master | 2 install/lib/installer_base.lib.php | 8 + interface/web/sites/form/web_aliasdomain.tform.php | 274 ++++++++++++++++++++++---------------------- server/plugins-available/apache2_plugin.inc.php | 8 install/dist/conf/fedora9.conf.php | 2 install/dist/conf/opensuse110.conf.php | 2 install/dist/conf/debian40.conf.php | 2 install/dist/conf/gentoo.conf.php | 2 interface/web/sites/form/web_subdomain.tform.php | 2 interface/web/sites/form/web_domain.tform.php | 2 install/dist/conf/centos52.conf.php | 1 11 files changed, 161 insertions(+), 144 deletions(-) diff --git a/install/dist/conf/centos52.conf.php b/install/dist/conf/centos52.conf.php index 4c42812..c74e5ed 100644 --- a/install/dist/conf/centos52.conf.php +++ b/install/dist/conf/centos52.conf.php @@ -137,5 +137,6 @@ $conf['jailkit']['config_dir'] = '/etc/jailkit'; $conf['jailkit']['jk_init'] = 'jk_init.ini'; $conf['jailkit']['jk_chrootsh'] = 'jk_chrootsh.ini'; +$conf['jailkit']['jailkit_chroot_app_programs'] = '/usr/bin/groups /usr/bin/id /usr/bin/dircolors /bin/basename /usr/bin/dirname /usr/bin/nano'; ?> \ No newline at end of file diff --git a/install/dist/conf/debian40.conf.php b/install/dist/conf/debian40.conf.php index 131669e..7d63329 100644 --- a/install/dist/conf/debian40.conf.php +++ b/install/dist/conf/debian40.conf.php @@ -137,5 +137,7 @@ $conf['jailkit']['config_dir'] = '/etc/jailkit'; $conf['jailkit']['jk_init'] = 'jk_init.ini'; $conf['jailkit']['jk_chrootsh'] = 'jk_chrootsh.ini'; +$conf['jailkit']['jailkit_chroot_app_programs'] = '/usr/bin/groups /usr/bin/id /usr/bin/dircolors /usr/bin/lesspipe /usr/bin/basename /usr/bin/dirname /usr/bin/nano /usr/bin/pico'; + ?> \ No newline at end of file diff --git a/install/dist/conf/fedora9.conf.php b/install/dist/conf/fedora9.conf.php index 1186ef0..29934d4 100644 --- a/install/dist/conf/fedora9.conf.php +++ b/install/dist/conf/fedora9.conf.php @@ -137,5 +137,7 @@ $conf['jailkit']['config_dir'] = '/etc/jailkit'; $conf['jailkit']['jk_init'] = 'jk_init.ini'; $conf['jailkit']['jk_chrootsh'] = 'jk_chrootsh.ini'; +$conf['jailkit']['jailkit_chroot_app_programs'] = '/usr/bin/groups /usr/bin/id /usr/bin/dircolors /bin/basename /usr/bin/dirname /usr/bin/nano'; + ?> \ No newline at end of file diff --git a/install/dist/conf/gentoo.conf.php b/install/dist/conf/gentoo.conf.php index 5cefec7..ff7b626 100644 --- a/install/dist/conf/gentoo.conf.php +++ b/install/dist/conf/gentoo.conf.php @@ -95,5 +95,7 @@ $conf['jailkit']['config_dir'] = '/etc/jailkit'; $conf['jailkit']['jk_init'] = 'jk_init.ini'; $conf['jailkit']['jk_chrootsh'] = 'jk_chrootsh.ini'; +$conf['jailkit']['jailkit_chroot_app_programs'] = '/usr/bin/groups /usr/bin/id /usr/bin/dircolors /usr/bin/lesspipe /usr/bin/basename /usr/bin/dirname /usr/bin/nano /usr/bin/pico'; + ?> \ No newline at end of file diff --git a/install/dist/conf/opensuse110.conf.php b/install/dist/conf/opensuse110.conf.php index a84ae27..202e628 100644 --- a/install/dist/conf/opensuse110.conf.php +++ b/install/dist/conf/opensuse110.conf.php @@ -137,5 +137,7 @@ $conf['jailkit']['config_dir'] = '/etc/jailkit'; $conf['jailkit']['jk_init'] = 'jk_init.ini'; $conf['jailkit']['jk_chrootsh'] = 'jk_chrootsh.ini'; +$conf['jailkit']['jailkit_chroot_app_programs'] = '/usr/bin/groups /usr/bin/id /usr/bin/dircolors /usr/bin/lesspipe /usr/bin/basename /usr/bin/dirname /usr/bin/nano /usr/bin/pico'; + ?> \ No newline at end of file diff --git a/install/lib/installer_base.lib.php b/install/lib/installer_base.lib.php index 13a3c92..a13bdb9 100644 --- a/install/lib/installer_base.lib.php +++ b/install/lib/installer_base.lib.php @@ -202,6 +202,8 @@ // TODO: Update further distribution specific parameters for server config here $tpl_ini_array['web']['vhost_conf_dir'] = $conf['apache']['vhost_conf_dir']; $tpl_ini_array['web']['vhost_conf_enabled_dir'] = $conf['apache']['vhost_conf_enabled_dir']; + $tpl_ini_array['web']['jailkit_chroot_app_programs'] = $conf['jailkit']['jailkit_chroot_app_programs']; + $server_ini_content = array_to_ini($tpl_ini_array); $server_ini_content = mysql_real_escape_string($server_ini_content); @@ -908,6 +910,12 @@ $file_server_enabled = ($conf['services']['file'])?1:0; $db_server_enabled = ($conf['services']['db'])?1:0; $vserver_server_enabled = ($conf['services']['vserver'])?1:0; + + + + + + $sql = "UPDATE `server` SET mail_server = '$mail_server_enabled', web_server = '$web_server_enabled', dns_server = '$dns_server_enabled', file_server = '$file_server_enabled', db_server = '$db_server_enabled', vserver_server = '$vserver_server_enabled' WHERE server_id = ".intval($conf['server_id']); if($conf['mysql']['master_slave_setup'] == 'y') { diff --git a/interface/web/sites/form/web_aliasdomain.tform.php b/interface/web/sites/form/web_aliasdomain.tform.php index 6923bd2..f69e16d 100644 --- a/interface/web/sites/form/web_aliasdomain.tform.php +++ b/interface/web/sites/form/web_aliasdomain.tform.php @@ -1,138 +1,138 @@ -<?php - -/* - Form Definition - - Tabledefinition - - Datatypes: - - INTEGER (Forces the input to Int) - - DOUBLE - - CURRENCY (Formats the values to currency notation) - - VARCHAR (no format check, maxlength: 255) - - TEXT (no format check) - - DATE (Dateformat, automatic conversion to timestamps) - - Formtype: - - TEXT (Textfield) - - TEXTAREA (Textarea) - - PASSWORD (Password textfield, input is not shown when edited) - - SELECT (Select option field) - - RADIO - - CHECKBOX - - CHECKBOXARRAY - - FILE - - VALUE: - - Wert oder Array - - Hint: - The ID field of the database table is not part of the datafield definition. - The ID field must be always auto incement (int or bigint). - - -*/ - -$form["title"] = "Web Aliasdomain"; -$form["description"] = ""; -$form["name"] = "web_domain"; -$form["action"] = "web_aliasdomain_edit.php"; -$form["db_table"] = "web_domain"; -$form["db_table_idx"] = "domain_id"; -$form["db_history"] = "yes"; -$form["tab_default"] = "domain"; -$form["list_default"] = "web_aliasdomain_list.php"; -$form["auth"] = 'yes'; // yes / no - -$form["auth_preset"]["userid"] = 0; // 0 = id of the user, > 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"]['domain'] = array ( - 'title' => "Domain", - 'width' => 100, - 'template' => "templates/web_aliasdomain_edit.htm", - '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 {AUTHSQL} ORDER BY server_name', - 'keyfield'=> 'server_id', - 'valuefield'=> 'server_name' - ), - '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', 'subdomain' => 'Subdomain') - ), - 'parent_domain_id' => array ( - 'datatype' => 'INTEGER', - 'formtype' => 'SELECT', - 'default' => '', - 'datasource' => array ( 'type' => 'SQL', - 'querystring' => "SELECT domain_id,domain FROM web_domain WHERE type = 'vhost' AND {AUTHSQL} ORDER BY domain", - 'keyfield'=> 'domain_id', - 'valuefield'=> 'domain' - ), - 'value' => '' - ), - 'redirect_type' => array ( - 'datatype' => 'VARCHAR', - 'formtype' => 'SELECT', - 'default' => 'y', - 'value' => array('' => 'No redirect', 'R' => 'R', 'L' => 'L') - ), - 'redirect_path' => array ( - 'datatype' => 'VARCHAR', - 'formtype' => 'TEXT', - 'default' => '', - 'value' => '', - 'width' => '30', - 'maxlength' => '255' - ), - 'subdomain' => array ( - 'datatype' => 'VARCHAR', - 'formtype' => 'SELECT', - 'default' => 'y', - 'value' => array('none' => 'none', 'www' => 'www.', '*' => '*.') - ), - 'active' => array ( - 'datatype' => 'VARCHAR', - 'formtype' => 'CHECKBOX', - 'default' => 'y', - 'value' => array(0 => 'n',1 => 'y') - ), - ################################## - # ENDE Datatable fields - ################################## - ) -); - - +<?php + +/* + Form Definition + + Tabledefinition + + Datatypes: + - INTEGER (Forces the input to Int) + - DOUBLE + - CURRENCY (Formats the values to currency notation) + - VARCHAR (no format check, maxlength: 255) + - TEXT (no format check) + - DATE (Dateformat, automatic conversion to timestamps) + + Formtype: + - TEXT (Textfield) + - TEXTAREA (Textarea) + - PASSWORD (Password textfield, input is not shown when edited) + - SELECT (Select option field) + - RADIO + - CHECKBOX + - CHECKBOXARRAY + - FILE + + VALUE: + - Wert oder Array + + Hint: + The ID field of the database table is not part of the datafield definition. + The ID field must be always auto incement (int or bigint). + + +*/ + +$form["title"] = "Web Aliasdomain"; +$form["description"] = ""; +$form["name"] = "web_domain"; +$form["action"] = "web_aliasdomain_edit.php"; +$form["db_table"] = "web_domain"; +$form["db_table_idx"] = "domain_id"; +$form["db_history"] = "yes"; +$form["tab_default"] = "domain"; +$form["list_default"] = "web_aliasdomain_list.php"; +$form["auth"] = 'yes'; // yes / no + +$form["auth_preset"]["userid"] = 0; // 0 = id of the user, > 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"]['domain'] = array ( + 'title' => "Domain", + 'width' => 100, + 'template' => "templates/web_aliasdomain_edit.htm", + '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 {AUTHSQL} ORDER BY server_name', + 'keyfield'=> 'server_id', + 'valuefield'=> 'server_name' + ), + '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', 'subdomain' => 'Subdomain') + ), + 'parent_domain_id' => array ( + 'datatype' => 'INTEGER', + 'formtype' => 'SELECT', + 'default' => '', + 'datasource' => array ( 'type' => 'SQL', + 'querystring' => "SELECT domain_id,domain FROM web_domain WHERE type = 'vhost' AND {AUTHSQL} ORDER BY domain", + 'keyfield'=> 'domain_id', + 'valuefield'=> 'domain' + ), + 'value' => '' + ), + 'redirect_type' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'SELECT', + 'default' => 'y', + 'value' => array('' => 'No redirect', 'no' => 'No flag', 'R' => 'R', 'L' => 'L', 'R,L' => 'R,L') + ), + 'redirect_path' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'TEXT', + 'default' => '', + 'value' => '', + 'width' => '30', + 'maxlength' => '255' + ), + 'subdomain' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'SELECT', + 'default' => 'y', + 'value' => array('none' => 'none', 'www' => 'www.', '*' => '*.') + ), + 'active' => array ( + 'datatype' => 'VARCHAR', + 'formtype' => 'CHECKBOX', + 'default' => 'y', + 'value' => array(0 => 'n',1 => 'y') + ), + ################################## + # ENDE Datatable fields + ################################## + ) +); + + ?> \ No newline at end of file diff --git a/interface/web/sites/form/web_domain.tform.php b/interface/web/sites/form/web_domain.tform.php index 0c30ec5..ffc2585 100644 --- a/interface/web/sites/form/web_domain.tform.php +++ b/interface/web/sites/form/web_domain.tform.php @@ -221,7 +221,7 @@ 'datatype' => 'VARCHAR', 'formtype' => 'SELECT', 'default' => '', - 'value' => array('' => 'No redirect', 'R' => 'R', 'L' => 'L') + 'value' => array('' => 'No redirect', 'no' => 'No flag', 'R' => 'R', 'L' => 'L', 'R,L' => 'R,L') ), 'redirect_path' => array ( 'datatype' => 'VARCHAR', diff --git a/interface/web/sites/form/web_subdomain.tform.php b/interface/web/sites/form/web_subdomain.tform.php index a3a25ba..271e9a1 100644 --- a/interface/web/sites/form/web_subdomain.tform.php +++ b/interface/web/sites/form/web_subdomain.tform.php @@ -106,7 +106,7 @@ 'datatype' => 'VARCHAR', 'formtype' => 'SELECT', 'default' => 'y', - 'value' => array('' => 'No redirect', 'R' => 'R', 'L' => 'L') + 'value' => array('' => 'No redirect', 'no' => 'No flag', 'R' => 'R', 'L' => 'L', 'R,L' => 'R,L') ), 'redirect_path' => array ( 'datatype' => 'VARCHAR', diff --git a/server/conf/vhost.conf.master b/server/conf/vhost.conf.master index 38d1b61..b0fd8e5 100644 --- a/server/conf/vhost.conf.master +++ b/server/conf/vhost.conf.master @@ -124,7 +124,7 @@ RewriteEngine on <tmpl_loop name="redirects"> RewriteCond %{HTTP_HOST} ^<tmpl_var name='rewrite_domain'> [NC] - RewriteRule ^/(.*)$ <tmpl_var name='rewrite_target'>$1 [<tmpl_var name='rewrite_type'>] + RewriteRule ^/(.*)$ <tmpl_var name='rewrite_target'>$1 <tmpl_var name='rewrite_type'> </tmpl_loop> </tmpl_if> diff --git a/server/plugins-available/apache2_plugin.inc.php b/server/plugins-available/apache2_plugin.inc.php index 555cffa..65ce21e 100644 --- a/server/plugins-available/apache2_plugin.inc.php +++ b/server/plugins-available/apache2_plugin.inc.php @@ -472,13 +472,13 @@ $rewrite_rules = array(); if($data["new"]["redirect_type"] != '') { $rewrite_rules[] = array( 'rewrite_domain' => $data["new"]["domain"], - 'rewrite_type' => $data["new"]["redirect_type"], + 'rewrite_type' => ($data["new"]["redirect_type"] == 'no')?'':'['.$data["new"]["redirect_type"].']', 'rewrite_target' => $data["new"]["redirect_path"]); switch($data["new"]["subdomain"]) { case 'www': $rewrite_rules[] = array( 'rewrite_domain' => 'www.'.$data["new"]["domain"], - 'rewrite_type' => $data["new"]["redirect_type"], + 'rewrite_type' => ($data["new"]["redirect_type"] == 'no')?'':'['.$data["new"]["redirect_type"].']', 'rewrite_target' => $data["new"]["redirect_path"]); break; case '*': @@ -517,12 +517,12 @@ // Rewriting if($alias["redirect_type"] != '') { $rewrite_rules[] = array( 'rewrite_domain' => $alias["domain"], - 'rewrite_type' => $alias["redirect_type"], + 'rewrite_type' => ($alias["redirect_type"] == 'no')?'':'['.$alias["redirect_type"].']', 'rewrite_target' => $alias["redirect_path"]); switch($alias["subdomain"]) { case 'www': $rewrite_rules[] = array( 'rewrite_domain' => 'www.'.$alias["domain"], - 'rewrite_type' => $alias["redirect_type"], + 'rewrite_type' => ($alias["redirect_type"] == 'no')?'':'['.$alias["redirect_type"].']', 'rewrite_target' => $alias["redirect_path"]); break; case '*': -- Gitblit v1.9.1