From 86bc6556b8378eb3ff0c3f39f98002d8d42d7a8a Mon Sep 17 00:00:00 2001
From: Marius Cramer <m.cramer@pixcept.de>
Date: Wed, 13 May 2015 03:04:02 -0400
Subject: [PATCH] - ported some patches

---
 interface/web/sites/web_vhost_domain_edit.php           |    1 
 interface/web/sites/templates/web_vhost_domain_edit.htm |   33 ++++++++++++++++
 server/conf/nginx_vhost.conf.master                     |   50 ++++++++++++++++++++++++
 install/lib/installer_base.lib.php                      |    6 ++
 interface/lib/classes/tform_base.inc.php                |    2 
 server/plugins-available/nginx_plugin.inc.php           |   11 +++++
 interface/web/sites/form/web_vhost_domain.tform.php     |    9 ++++
 7 files changed, 109 insertions(+), 3 deletions(-)

diff --git a/install/lib/installer_base.lib.php b/install/lib/installer_base.lib.php
index d3d0c0c..9610e19 100644
--- a/install/lib/installer_base.lib.php
+++ b/install/lib/installer_base.lib.php
@@ -2514,7 +2514,11 @@
 		if(is_file('/usr/local/ispconfig/interface/lib/classes/db_firebird.inc.php')) unlink('/usr/local/ispconfig/interface/lib/classes/db_firebird.inc.php');
 		if(is_file('/usr/local/ispconfig/interface/lib/classes/form.inc.php')) unlink('/usr/local/ispconfig/interface/lib/classes/form.inc.php');
 		
-		
+		// Change mode of a few files from amavisd
+		if(is_file($conf['amavis']['config_dir'].'/conf.d/50-user')) chmod($conf['amavis']['config_dir'].'/conf.d/50-user', 0640);
+		if(is_file($conf['amavis']['config_dir'].'/50-user~')) chmod($conf['amavis']['config_dir'].'/50-user~', 0400);
+		if(is_file($conf['amavis']['config_dir'].'/amavisd.conf')) chmod($conf['amavis']['config_dir'].'/amavisd.conf', 0640);
+		if(is_file($conf['amavis']['config_dir'].'/amavisd.conf~')) chmod($conf['amavis']['config_dir'].'/amavisd.conf~', 0400);
 		
 	}
 
diff --git a/interface/lib/classes/tform_base.inc.php b/interface/lib/classes/tform_base.inc.php
index 9fbd530..749ea5c 100644
--- a/interface/lib/classes/tform_base.inc.php
+++ b/interface/lib/classes/tform_base.inc.php
@@ -710,7 +710,7 @@
 					if($record[$key] != '' && $record[$key] != '0000-00-00') {
 						if(function_exists('date_parse_from_format')) {
 							$date_parts = date_parse_from_format($this->dateformat, $record[$key]);
-							$new_record[$key] = $date_parts['year'].'-'.$date_parts['month'].'-'.$date_parts['day'];
+							$new_record[$key] = $date_parts['year'].'-'.str_pad($date_parts['month'], 2, "0", STR_PAD_LEFT).'-'.str_pad($date_parts['day'], 2, "0", STR_PAD_LEFT);
 						} else {
 							$tmp = strtotime($record[$key]);
 							$new_record[$key] = date('Y-m-d', $tmp);
diff --git a/interface/web/sites/form/web_vhost_domain.tform.php b/interface/web/sites/form/web_vhost_domain.tform.php
index 3c4723a..b457be7 100644
--- a/interface/web/sites/form/web_vhost_domain.tform.php
+++ b/interface/web/sites/form/web_vhost_domain.tform.php
@@ -276,6 +276,15 @@
 			'default' => 'n',
 			'value'  => array(0 => 'n', 1 => 'y')
 		),
+		'enable_pagespeed' => array (
+			'datatype' => 'VARCHAR',
+			'formtype' => 'CHECKBOX',
+			'default'  => 'n',
+			'value' => array (
+				0 => 'n',
+				1 => 'y'
+			)
+		),
 		'active' => array (
 			'datatype' => 'VARCHAR',
 			'formtype' => 'CHECKBOX',
diff --git a/interface/web/sites/templates/web_vhost_domain_edit.htm b/interface/web/sites/templates/web_vhost_domain_edit.htm
index fa53727..801c69f 100644
--- a/interface/web/sites/templates/web_vhost_domain_edit.htm
+++ b/interface/web/sites/templates/web_vhost_domain_edit.htm
@@ -217,6 +217,12 @@
                 </select></div>
             </div>
 			{tmpl_var name="directive_snippets_id"}
+			<div class="form-group nginx pagespeed">
+				<label class="col-sm-3 control-label">{tmpl_var name='enable_pagespeed_txt'}</label>
+				<div class="col-sm-9">
+					{tmpl_var name="enable_pagespeed"}
+				</div>
+			</div>
             <div class="form-group">
                 <label class="col-sm-3 control-label">{tmpl_var name='active_txt'}</label>
                 <div class="col-sm-9">
@@ -276,6 +282,19 @@
     });
 	// new Vhostsubdomains/Vhostaliasdomains
 	if(serverId == '') jQuery('#parent_domain_id').trigger('change');
+	
+	if(jQuery('#directive_snippets_id').val() > 0){
+		jQuery('.pagespeed').show();
+	} else {
+		jQuery('.pagespeed').hide();
+	}
+	jQuery('#directive_snippets_id').change(function(){
+		if(jQuery(this).val() > 0){
+			jQuery('.pagespeed').show();
+		} else {
+			jQuery('.pagespeed').hide();
+		}
+	});
     
     function reloadServerId(noFormChange) {
         var parentWebId = jQuery('#parent_domain_id').val();
@@ -291,6 +310,19 @@
             if(data.servertype == "nginx"){
                 var selected = jQuery('#php').val();
                 jQuery('.apache').hide();
+				jQuery('.nginx').show();
+				if(jQuery('#directive_snippets_id').val() > 0){
+					jQuery('.pagespeed').show();
+				} else {
+					jQuery('.pagespeed').hide();
+				}
+				jQuery('#directive_snippets_id').change(function(){
+					if(jQuery(this).val() > 0){
+						jQuery('.pagespeed').show();
+					} else {
+						jQuery('.pagespeed').hide();
+					}
+				});
                 if(selected != "no" && selected != "php-fpm" && selected != "hhvm") {
                     jQuery('#php option[value="php-fpm"]').attr('selected', 'selected').val('php-fpm');
                 }
@@ -299,6 +331,7 @@
                 jQuery('#php option[value="mod"]').hide();
                 jQuery('#php option[value="suphp"]').hide();
             } else {
+				jQuery('.nginx').hide();
                 jQuery('.apache').show();
                 jQuery('#php option[value="fast-cgi"]').show();
                 jQuery('#php option[value="cgi"]').show();
diff --git a/interface/web/sites/web_vhost_domain_edit.php b/interface/web/sites/web_vhost_domain_edit.php
index 6c3f4e9..a4a5a39 100644
--- a/interface/web/sites/web_vhost_domain_edit.php
+++ b/interface/web/sites/web_vhost_domain_edit.php
@@ -1091,6 +1091,7 @@
 		if($web_config['enable_spdy'] === 'n') {
 			unset($app->tform->formDef["tabs"]['ssl']['fields']['enable_spdy']);
 		}
+		if($this->dataRecord["directive_snippets_id"] < 1) $this->dataRecord["enable_pagespeed"] = 'n';
 
 		parent::onSubmit();
 	}
diff --git a/server/conf/nginx_vhost.conf.master b/server/conf/nginx_vhost.conf.master
index 5236a19..040af21 100644
--- a/server/conf/nginx_vhost.conf.master
+++ b/server/conf/nginx_vhost.conf.master
@@ -8,7 +8,7 @@
         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{tmpl_if name='enable_spdy' op='==' value='y'} spdy{/tmpl_if};;
+        listen [<tmpl_var name='ipv6_address'>]:443 ssl{tmpl_if name='enable_spdy' op='==' value='y'} spdy{/tmpl_if};
 </tmpl_if>
         ssl_certificate <tmpl_var name='document_root'>/ssl/<tmpl_var name='ssl_domain'>.crt;
         ssl_certificate_key <tmpl_var name='document_root'>/ssl/<tmpl_var name='ssl_domain'>.key;
@@ -192,6 +192,54 @@
         <tmpl_var name='nginx_directive'>
 </tmpl_loop>
 
+<tmpl_if name='enable_pagespeed' op='==' value='y'>
+        pagespeed on;
+        pagespeed FileCachePath /var/ngx_pagespeed_cache;
+        <tmpl_if name='ssl_enabled'>pagespeed FetchHttps enable,allow_self_signed;</tmpl_if>
+
+
+        # let's speed up PageSpeed by storing it in the super duper fast memcached
+        pagespeed MemcachedThreads 1;
+        pagespeed MemcachedServers "localhost:11211";
+
+        # Filter settings
+        pagespeed RewriteLevel CoreFilters;
+        pagespeed EnableFilters collapse_whitespace,remove_comments;
+
+        #  Ensure requests for pagespeed optimized resources go to the pagespeed
+        #  handler and no extraneous headers get set.
+        location ~ "\.pagespeed\.([a-z]\.)?[a-z]{2}\.[^.]{10}\.[^.]+" {
+                add_header "" "";
+                access_log off;
+        }
+        location ~ "^/ngx_pagespeed_static/" {
+                access_log off;
+        }
+        location ~ "^/ngx_pagespeed_beacon$" {
+                access_log off;
+        }
+        location /ngx_pagespeed_statistics {
+                allow 127.0.0.1;
+                deny all;
+                access_log off;
+        }
+        location /ngx_pagespeed_global_statistics {
+                allow 127.0.0.1;
+                deny all;
+                access_log off;
+        }
+        location /ngx_pagespeed_message {
+                allow 127.0.0.1;
+                deny all;
+                access_log off;
+        }
+        location /pagespeed_console {
+                allow 127.0.0.1;
+                deny all;
+                access_log off;
+        }
+</tmpl_if>
+
 <tmpl_loop name="basic_auth_locations">
         location <tmpl_var name='htpasswd_location'> { ##merge##
                 auth_basic "Members Only";
diff --git a/server/plugins-available/nginx_plugin.inc.php b/server/plugins-available/nginx_plugin.inc.php
index 2b5073d..ef48adb 100644
--- a/server/plugins-available/nginx_plugin.inc.php
+++ b/server/plugins-available/nginx_plugin.inc.php
@@ -1097,8 +1097,19 @@
 			} else {
 				$nginx_directives = $data['new']['nginx_directives'];
 			}
+			if($data['new']['enable_pagespeed'] == 'y'){
+				// if PageSpeed is already enabled, don't add configuration again
+				if(stripos($nginx_directives, 'pagespeed') !== false){
+					$vhost_data['enable_pagespeed'] = false;
+				} else {
+					$vhost_data['enable_pagespeed'] = true;
+				}
+			} else {
+				$vhost_data['enable_pagespeed'] = false;
+			}
 		} else {
 			$nginx_directives = $data['new']['nginx_directives'];
+			$vhost_data['enable_pagespeed'] = false;
 		}
 		// Make sure we only have Unix linebreaks
 		$nginx_directives = str_replace("\r\n", "\n", $nginx_directives);

--
Gitblit v1.9.1