diff --git a/install/lib/installer_base.lib.php b/install/lib/installer_base.lib.php index d3d0c0c547d24c780f9e22b2c38452f725cb43e1..9610e19d957bb78d4a866252464ac9f6ea210c49 100644 --- a/install/lib/installer_base.lib.php +++ b/install/lib/installer_base.lib.php @@ -2514,7 +2514,11 @@ Email Address []: 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 9fbd530c8a4dde878e279cbfddd3642e43db04d0..749ea5c708abceb8f9e0a489b55730b8d7bdf022 100644 --- a/interface/lib/classes/tform_base.inc.php +++ b/interface/lib/classes/tform_base.inc.php @@ -710,7 +710,7 @@ class tform_base { 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 3c4723abaed4a764b9b485102f21de3f613f8652..b457be7bdd66e1b2af4b778a7a6ebabb8fe7c22a 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 @@ $form["tabs"]['domain'] = array ( '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 fa537270546acf8700783f5d629615c586bf776c..801c69f1e26232b688af800868c2eccf6796b8b4 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 @@ {tmpl_var name="directive_snippets_id"} +
+ +
+ {tmpl_var name="enable_pagespeed"} +
+
@@ -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 6c3f4e9d7ba755430661967e3fd524258419f8e6..a4a5a3931b0814957bd5e1dfef12bc8426748753 100644 --- a/interface/web/sites/web_vhost_domain_edit.php +++ b/interface/web/sites/web_vhost_domain_edit.php @@ -1091,6 +1091,7 @@ class page_action extends tform_actions { 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 5236a1958ed94dba5245fed733bd122ab7bf6bd2..040af2151e3e35aab3226872f85d741ec03a2c05 100644 --- a/server/conf/nginx_vhost.conf.master +++ b/server/conf/nginx_vhost.conf.master @@ -8,7 +8,7 @@ server { listen :443 ssl{tmpl_if name='enable_spdy' op='==' value='y'} spdy{/tmpl_if}; ssl_protocols TLSv1 TLSv1.1 TLSv1.2; - listen []:443 ssl{tmpl_if name='enable_spdy' op='==' value='y'} spdy{/tmpl_if};; + listen []:443 ssl{tmpl_if name='enable_spdy' op='==' value='y'} spdy{/tmpl_if}; ssl_certificate /ssl/.crt; ssl_certificate_key /ssl/.key; @@ -192,6 +192,54 @@ server { + + pagespeed on; + pagespeed FileCachePath /var/ngx_pagespeed_cache; + pagespeed FetchHttps enable,allow_self_signed; + + + # 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; + } + + 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 2b5073d8dabdaaa67a0124232ddd84549effe9e5..ef48adbe81967f4807fd0764edecbb7de5578a88 100644 --- a/server/plugins-available/nginx_plugin.inc.php +++ b/server/plugins-available/nginx_plugin.inc.php @@ -1097,8 +1097,19 @@ class nginx_plugin { } 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);