From f7ec00b2f8ba3efc5bdeacef9c813f8a826ae3be Mon Sep 17 00:00:00 2001
From: Patrick Anders <p.anders@timmehosting.de>
Date: Wed, 10 Dec 2014 08:44:26 -0500
Subject: [PATCH] add Spdy option - http://en.wikipedia.org/wiki/SPDY

---
 server/conf/apache_apps.vhost.master                        |   10 ++++-
 server/conf/nginx_vhost.conf.master                         |    4 +-
 interface/web/admin/templates/server_config_web_edit.htm    |    8 ++++
 interface/web/sites/templates/web_vhost_domain_advanced.htm |    2 
 interface/web/sites/lib/lang/en_web_vhost_domain.lng        |    1 
 interface/web/admin/lib/lang/en_server_config.lng           |    1 
 install/tpl/server.ini.master                               |    1 
 interface/web/admin/form/server_config.tform.php            |    9 ++++
 interface/web/sites/lib/lang/de_web_vhost_domain.lng        |    1 
 install/sql/incremental/upd_0080.sql                        |    1 
 interface/web/admin/lib/lang/de_server_config.lng           |    1 
 install/sql/ispconfig3.sql                                  |    1 
 server/plugins-available/nginx_plugin.inc.php               |    6 +++
 interface/web/sites/form/web_vhost_domain.tform.php         |    9 ++++
 interface/web/sites/templates/web_vhost_domain_ssl.htm      |    8 +++
 15 files changed, 57 insertions(+), 6 deletions(-)

diff --git a/install/sql/incremental/upd_0080.sql b/install/sql/incremental/upd_0080.sql
new file mode 100644
index 0000000..fcdcb62
--- /dev/null
+++ b/install/sql/incremental/upd_0080.sql
@@ -0,0 +1 @@
+ALTER TABLE `web_domain` ADD COLUMN `enable_spdy` ENUM('y','n') NULL DEFAULT 'n' AFTER `proxy_directives`;
diff --git a/install/sql/ispconfig3.sql b/install/sql/ispconfig3.sql
index 6af74fb..b6390e7 100644
--- a/install/sql/ispconfig3.sql
+++ b/install/sql/ispconfig3.sql
@@ -1877,6 +1877,7 @@
   `traffic_quota_lock` enum('n','y') NOT NULL default 'n',
   `fastcgi_php_version` varchar(255) DEFAULT NULL,
   `proxy_directives` mediumtext,
+  `enable_spdy` ENUM('y','n') NULL DEFAULT 'n',
   `last_quota_notification` date NULL default NULL,
   `rewrite_rules` mediumtext,
   `added_date` date NOT NULL DEFAULT '0000-00-00',
diff --git a/install/tpl/server.ini.master b/install/tpl/server.ini.master
index c563650..7805988 100644
--- a/install/tpl/server.ini.master
+++ b/install/tpl/server.ini.master
@@ -85,6 +85,7 @@
 php_ini_path_cgi=/etc/php5/cgi/php.ini
 check_apache_config=y
 enable_sni=y
+enable_spdy=n
 enable_ip_wildcard=y
 overtraffic_notify_admin=y
 overtraffic_notify_client=y
diff --git a/interface/web/admin/form/server_config.tform.php b/interface/web/admin/form/server_config.tform.php
index debceae..209a0a4 100644
--- a/interface/web/admin/form/server_config.tform.php
+++ b/interface/web/admin/form/server_config.tform.php
@@ -1021,6 +1021,15 @@
 			'width' => '40',
 			'maxlength' => '255'
 		),
+		'enable_spdy' => array (
+			'datatype' => 'VARCHAR',
+			'formtype' => 'CHECKBOX',
+			'default'  => 'y',
+			'value' => array (
+				0 => 'n',
+				1 => 'y'
+			)
+		),
 		'apps_vhost_port' => array(
 			'datatype' => 'VARCHAR',
 			'formtype' => 'TEXT',
diff --git a/interface/web/admin/lib/lang/de_server_config.lng b/interface/web/admin/lib/lang/de_server_config.lng
index 6a8e421..fa9ee44 100644
--- a/interface/web/admin/lib/lang/de_server_config.lng
+++ b/interface/web/admin/lib/lang/de_server_config.lng
@@ -262,4 +262,5 @@
 $wb['php_ini_check_minutes_error_empty'] = 'Bitte geben Sie einen Wert an, wie oft die php.ini auf Änderungen geprüft werden soll.';
 $wb['php_ini_check_minutes_info_txt'] = '0 = keine Prüfung';
 $wb['php_handler_txt'] = 'Standard-PHP-Handler';
+$wb['enable_spdy_txt'] = 'Stellt Spdy zur Verfügung';
 ?>
diff --git a/interface/web/admin/lib/lang/en_server_config.lng b/interface/web/admin/lib/lang/en_server_config.lng
index b628834..1134e9f 100644
--- a/interface/web/admin/lib/lang/en_server_config.lng
+++ b/interface/web/admin/lib/lang/en_server_config.lng
@@ -263,4 +263,5 @@
 $wb['php_ini_check_minutes_txt'] = 'Check php.ini every X minutes for changes';
 $wb['php_ini_check_minutes_error_empty'] = 'Please specify a value how often php.ini should be checked for changes.';
 $wb['php_ini_check_minutes_info_txt'] = '0 = no check';
+$wb['enable_spdy_txt'] = 'enables spdy';
 ?>
diff --git a/interface/web/admin/templates/server_config_web_edit.htm b/interface/web/admin/templates/server_config_web_edit.htm
index 1ea5255..1ad90ba 100644
--- a/interface/web/admin/templates/server_config_web_edit.htm
+++ b/interface/web/admin/templates/server_config_web_edit.htm
@@ -101,6 +101,14 @@
                 <label for="htaccess_allow_override">{tmpl_var name='htaccess_allow_override_txt'}</label>
                 <input name="htaccess_allow_override" id="htaccess_allow_override" value="{tmpl_var name='htaccess_allow_override'}" size="40" maxlength="255" type="text" class="textInput" />
             </div>
+			<div class="ctrlHolder">
+				<p class="label">
+					<tmpl_var name="enable_spdy_txt">
+				</p>
+				<div class="multiField">
+					<tmpl_var name="enable_spdy">
+				</div>
+			</div>
             <div class="ctrlHolder">
                 <p class="label">{tmpl_var name='enable_ip_wildcard_txt'}</p>
                 <div class="multiField">
diff --git a/interface/web/sites/form/web_vhost_domain.tform.php b/interface/web/sites/form/web_vhost_domain.tform.php
index 4d6b161..c342605 100644
--- a/interface/web/sites/form/web_vhost_domain.tform.php
+++ b/interface/web/sites/form/web_vhost_domain.tform.php
@@ -523,6 +523,15 @@
 				'default' => '',
 				'value'  => array('' => 'none_txt', 'save' => 'save_certificate_txt', 'create' => 'create_certificate_txt', 'del' => 'delete_certificate_txt')
 			),
+			'enable_spdy' => array (
+				'datatype' => 'VARCHAR',
+				'formtype' => 'CHECKBOX',
+				'default'  => 'n',
+				'value' => array (
+					0 => 'n',
+					1 => 'y'
+				)
+			),
 			//#################################
 			// ENDE Datatable fields
 			//#################################
diff --git a/interface/web/sites/lib/lang/de_web_vhost_domain.lng b/interface/web/sites/lib/lang/de_web_vhost_domain.lng
index 7cce816..ddf32fb 100644
--- a/interface/web/sites/lib/lang/de_web_vhost_domain.lng
+++ b/interface/web/sites/lib/lang/de_web_vhost_domain.lng
@@ -136,4 +136,5 @@
 $wb['apache_directive_blocked_error'] = 'Die Apache Direktive wurde durch die Sicherheitsrichtline blockiert:';
 $wb['btn_save_txt'] = 'Speichern';
 $wb['btn_cancel_txt'] = 'Abbrechen';
+$wb['enable_spdy_txt'] = 'Aktiviere Spdy';
 ?>
diff --git a/interface/web/sites/lib/lang/en_web_vhost_domain.lng b/interface/web/sites/lib/lang/en_web_vhost_domain.lng
index 1f6b455..65a2f62 100644
--- a/interface/web/sites/lib/lang/en_web_vhost_domain.lng
+++ b/interface/web/sites/lib/lang/en_web_vhost_domain.lng
@@ -139,4 +139,5 @@
 $wb['subdomain_error_empty'] = 'The subdommain field is empty or contains invalid characters.';
 $wb['btn_save_txt'] = "Save";
 $wb['btn_cancel_txt'] = "Cancel";
+$wb['enable_spdy_txt'] = 'activate Spdy';
 ?>
diff --git a/interface/web/sites/templates/web_vhost_domain_advanced.htm b/interface/web/sites/templates/web_vhost_domain_advanced.htm
index d2c3bb8..8529819 100644
--- a/interface/web/sites/templates/web_vhost_domain_advanced.htm
+++ b/interface/web/sites/templates/web_vhost_domain_advanced.htm
@@ -176,4 +176,4 @@
         });
     }
 			
-</script>
\ No newline at end of file
+</script>
diff --git a/interface/web/sites/templates/web_vhost_domain_ssl.htm b/interface/web/sites/templates/web_vhost_domain_ssl.htm
index 4869c19..75bf9e6 100644
--- a/interface/web/sites/templates/web_vhost_domain_ssl.htm
+++ b/interface/web/sites/templates/web_vhost_domain_ssl.htm
@@ -64,6 +64,12 @@
                     {tmpl_var name='ssl_action'}
                 </select>
             </div>
+			<div class="ctrlHolder">
+				<p class="label">{tmpl_var name='enable_spdy_txt'}</p>
+				<div class="multiField">
+					{tmpl_var name="enable_spdy"}
+				</div>
+			</div>
         </fieldset>
 
         <input type="hidden" name="id" value="{tmpl_var name='id'}">
@@ -74,4 +80,4 @@
         </div>
     </div>
 
-</div>
\ No newline at end of file
+</div>
diff --git a/server/conf/apache_apps.vhost.master b/server/conf/apache_apps.vhost.master
index bc6c6bc..7d6d665 100644
--- a/server/conf/apache_apps.vhost.master
+++ b/server/conf/apache_apps.vhost.master
@@ -10,11 +10,17 @@
 <VirtualHost {tmpl_var name='apps_vhost_ip'}:{tmpl_var name='apps_vhost_port'}>
   ServerAdmin webmaster@localhost
   {tmpl_var name='apps_vhost_servername'}
-  
+
   <FilesMatch "\.ph(p3?|tml)$">
     SetHandler None
   </FilesMatch>
-  
+
+  {tmpl_if name="enable_spdy" op="==" value="y"}
+  <IfModule spdy_module>
+	SpdyEnabled on
+  </IfModule>
+  {/tmpl_if}
+
   <IfModule mod_php5.c>
     DocumentRoot {tmpl_var name='apps_vhost_dir'}
     AddType application/x-httpd-php .php
diff --git a/server/conf/nginx_vhost.conf.master b/server/conf/nginx_vhost.conf.master
index 222bf29..41e08c8 100644
--- a/server/conf/nginx_vhost.conf.master
+++ b/server/conf/nginx_vhost.conf.master
@@ -5,7 +5,7 @@
 </tmpl_if>
 		
 <tmpl_if name='ssl_enabled'>
-        listen <tmpl_var name='ip_address'>:443 ssl;
+        listen <tmpl_var name='ip_address'>:443 ssl{tmpl_if name='enable_spdy' op='==' value='y'} spdy{/tmpl_if};
 		ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
 <tmpl_if name='ipv6_enabled'>
         listen [<tmpl_var name='ipv6_address'>]:443 ssl;
@@ -242,4 +242,4 @@
         }
 </tmpl_if>
 }
-</tmpl_loop>
\ No newline at end of file
+</tmpl_loop>
diff --git a/server/plugins-available/nginx_plugin.inc.php b/server/plugins-available/nginx_plugin.inc.php
index c256ae1..27c17f2 100644
--- a/server/plugins-available/nginx_plugin.inc.php
+++ b/server/plugins-available/nginx_plugin.inc.php
@@ -925,6 +925,12 @@
 			}
 		}
 
+		// Spdy
+		$tpl->setVar('spdy_enabled', '');
+		if($data['new']['enable_spdy'] == 'y') {
+			$tpl->setVar('spdy_enabled', ' spdy');
+		}
+
 		// PHP-FPM
 		// Support for multiple PHP versions
 		/*

--
Gitblit v1.9.1