From ab7597c7ec2d62aadf82c4c647d3dc63dae8de90 Mon Sep 17 00:00:00 2001
From: mcramer <m.cramer@pixcept.de>
Date: Thu, 16 Aug 2012 18:53:05 +0000
Subject: [PATCH] Implemented  FS#2379 - Add perl option to web sites (apache2
 mod_perl2) Fixed (partly) FS#2310 - Template switch not working in mailuser
 module, for dashlets and the login page

---
 install/sql/incremental/upd_0036.sql              |  5 +++++
 install/sql/ispconfig3.sql                        |  1 +
 interface/web/index.php                           |  2 ++
 interface/web/sites/form/web_domain.tform.php     |  6 ++++++
 interface/web/sites/lib/lang/de_web_domain.lng    |  1 +
 interface/web/sites/lib/lang/en_web_domain.lng    |  1 +
 interface/web/sites/templates/web_domain_edit.htm |  6 ++++++
 server/conf/vhost.conf.master                     | 13 +++++++++++++
 8 files changed, 35 insertions(+)
 create mode 100644 install/sql/incremental/upd_0036.sql

diff --git a/install/sql/incremental/upd_0036.sql b/install/sql/incremental/upd_0036.sql
new file mode 100644
index 0000000000..db0d59d5e6
--- /dev/null
+++ b/install/sql/incremental/upd_0036.sql
@@ -0,0 +1,5 @@
+-- --------------------------------------------------------
+
+ALTER TABLE  `web_domain` ADD  `perl` enum('n','y') NOT NULL default 'n' AFTER  `python`;
+
+
diff --git a/install/sql/ispconfig3.sql b/install/sql/ispconfig3.sql
index a7ac059a32..88a68846e9 100644
--- a/install/sql/ispconfig3.sql
+++ b/install/sql/ispconfig3.sql
@@ -1643,6 +1643,7 @@ CREATE TABLE `web_domain` (
   `php` varchar(32) NOT NULL default 'y',
   `ruby` enum('n','y') NOT NULL default 'n',
   `python` enum('n','y') NOT NULL default 'n',
+  `perl` enum('n','y') NOT NULL default 'n',
   `redirect_type` varchar(255) default NULL,
   `redirect_path` varchar(255) default NULL,
   `seo_redirect` varchar(255) default NULL,
diff --git a/interface/web/index.php b/interface/web/index.php
index 5122d2d07e..b131396cef 100644
--- a/interface/web/index.php
+++ b/interface/web/index.php
@@ -31,6 +31,8 @@ EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 require_once('../lib/config.inc.php');
 require_once('../lib/app.inc.php');
 
+if(!isset($_SESSION['s']['module']['name'])) $_SESSION['s']['module']['name'] = 'login';
+
 $app->uses('tpl');
 $app->tpl->newTemplate('main.tpl.htm');
 
diff --git a/interface/web/sites/form/web_domain.tform.php b/interface/web/sites/form/web_domain.tform.php
index 1682f6b6f2..ef9470e37a 100644
--- a/interface/web/sites/form/web_domain.tform.php
+++ b/interface/web/sites/form/web_domain.tform.php
@@ -230,6 +230,12 @@ $form["tabs"]['domain'] = array (
 									 ),*/
 			'value'		=> ''
 		),
+		'perl' => array (
+			'datatype'	=> 'VARCHAR',
+			'formtype'	=> 'CHECKBOX',
+			'default'	=> 'n',
+			'value'		=> array(0 => 'n',1 => 'y')
+		),
 		'ruby' => array (
 			'datatype'	=> 'VARCHAR',
 			'formtype'	=> 'CHECKBOX',
diff --git a/interface/web/sites/lib/lang/de_web_domain.lng b/interface/web/sites/lib/lang/de_web_domain.lng
index 00d262afc6..e969e17197 100644
--- a/interface/web/sites/lib/lang/de_web_domain.lng
+++ b/interface/web/sites/lib/lang/de_web_domain.lng
@@ -80,6 +80,7 @@ $wb['php_fpm_use_socket_txt'] = 'Benutze Socket für PHP-FPM';
 $wb['ipv6_address_txt'] = 'IPv6-Adresse';
 $wb['error_no_sni_txt'] = 'SNI for SSL is not activated on this server. You can enable only one SSL certificate on each IP address.';
 $wb['python_txt'] = 'Python';
+$wb['perl_txt'] = 'Perl';
 $wb['pm_max_children_txt'] = 'PHP-FPM pm.max_children';
 $wb['pm_start_servers_txt'] = 'PHP-FPM pm.start_servers';
 $wb['pm_min_spare_servers_txt'] = 'PHP-FPM pm.min_spare_servers';
diff --git a/interface/web/sites/lib/lang/en_web_domain.lng b/interface/web/sites/lib/lang/en_web_domain.lng
index 4968cfd0f4..ba17f7e05d 100644
--- a/interface/web/sites/lib/lang/en_web_domain.lng
+++ b/interface/web/sites/lib/lang/en_web_domain.lng
@@ -81,6 +81,7 @@ $wb["www_to_non_www_txt"] = 'www -&gt; non-www';
 $wb["php_fpm_use_socket_txt"] = 'Use Socket For PHP-FPM';
 $wb["error_no_sni_txt"] = 'SNI for SSL is not activated on this server. You can enable only one SSL certificate on each IP address.';
 $wb["python_txt"] = 'Python';
+$wb["perl_txt"] = 'Perl';
 $wb["pm_max_children_txt"] = 'PHP-FPM pm.max_children';
 $wb["pm_start_servers_txt"] = 'PHP-FPM pm.start_servers';
 $wb["pm_min_spare_servers_txt"] = 'PHP-FPM pm.min_spare_servers';
diff --git a/interface/web/sites/templates/web_domain_edit.htm b/interface/web/sites/templates/web_domain_edit.htm
index 496ddec532..96319c9ca9 100644
--- a/interface/web/sites/templates/web_domain_edit.htm
+++ b/interface/web/sites/templates/web_domain_edit.htm
@@ -79,6 +79,12 @@
                     {tmpl_var name='ssi'}
                 </div>
             </div>
+            <div class="ctrlHolder apache">
+                <p class="label">{tmpl_var name='perl_txt'}</p>
+                <div class="multiField">
+                    {tmpl_var name='perl'}
+                </div>
+            </div>
             <div class="ctrlHolder apache">
                 <p class="label">{tmpl_var name='ruby_txt'}</p>
                 <div class="multiField">
diff --git a/server/conf/vhost.conf.master b/server/conf/vhost.conf.master
index 4b11640387..6c9513a567 100644
--- a/server/conf/vhost.conf.master
+++ b/server/conf/vhost.conf.master
@@ -109,6 +109,19 @@
 		</IfModule>
 </tmpl_if>
 
+<tmpl_if name='perl' op='==' value='y'>
+		<IfModule mod_perl.c>
+			PerlModule ModPerl::Registry
+			PerlModule Apache2::Reload
+			<Directory {tmpl_var name='web_document_root_www'}>
+				SetHandler perl-script
+				PerlResponseHandler ModPerl::Registry
+				PerlOptions +ParseHeaders
+				Options +ExecCGI
+			</Directory>
+		</IfModule>
+</tmpl_if>
+
 <tmpl_if name='python' op='==' value='y'>
 		<IfModule mod_python.c>
 			<Directory {tmpl_var name='web_document_root_www'}>
-- 
GitLab