From b5b6083d345d221c1c1faff5a24f57ef56a0e276 Mon Sep 17 00:00:00 2001
From: Florian Schaal <florian@schaal-24.de>
Date: Tue, 26 Apr 2016 01:13:27 -0400
Subject: [PATCH] Fixes: #3846

---
 server/plugins-available/nginx_plugin.inc.php |   46 ++++++++++++++++++++++++++++++++--------------
 1 files changed, 32 insertions(+), 14 deletions(-)

diff --git a/server/plugins-available/nginx_plugin.inc.php b/server/plugins-available/nginx_plugin.inc.php
index 92c6efb..2a49504 100644
--- a/server/plugins-available/nginx_plugin.inc.php
+++ b/server/plugins-available/nginx_plugin.inc.php
@@ -219,6 +219,22 @@
 			$app->dbmaster->query("UPDATE web_domain SET ssl_action = '' WHERE domain = ?", $data['new']['domain']);
 		}
 
+		//* Check that the SSL key is not password protected
+		if($data["new"]["ssl_action"] == 'save') {
+			if(stristr($data["new"]["ssl_key"],'Proc-Type: 4,ENCRYPTED')) {
+				$data["new"]["ssl_action"] = '';
+			
+				$app->log('SSL Certificate not saved. The SSL key is encrypted.', LOGLEVEL_WARN);
+				$app->dbmaster->datalogError('SSL Certificate not saved. The SSL key is encrypted.');
+			
+				/* Update the DB of the (local) Server */
+				$app->db->query("UPDATE web_domain SET ssl_action = '' WHERE domain = ?", $data['new']['domain']);
+
+				/* Update also the master-DB of the Server-Farm */
+				$app->dbmaster->query("UPDATE web_domain SET ssl_action = '' WHERE domain = ?", $data['new']['domain']);
+			}
+		}
+		
 		//* Save a SSL certificate to disk
 		if($data["new"]["ssl_action"] == 'save') {
 			$this->ssl_certificate_changed = true;
@@ -729,7 +745,7 @@
           $file_system = explode(" ", $df_output)[0];
           $primitive_root = explode(" ", $df_output)[1];
 
-          if ( $file_system , array('ext2','ext3','ext4') ) {
+          if ( in_array($file_system , array('ext2','ext3','ext4'), true) ) {
             exec('setquota -u '. $username . ' ' . $blocks_soft . ' ' . $blocks_hard . ' 0 0 -a &> /dev/null');
             exec('setquota -T -u '.$username.' 604800 604800 -a &> /dev/null');
           } elseif ($file_system == 'xfs') {
@@ -1173,19 +1189,21 @@
 		}
 		
 		// use vLib for template logic
-		$nginx_directives_new = '';
-		$ngx_conf_tpl = new tpl();
-		$ngx_conf_tpl_tmp_file = tempnam($conf['temppath'], "ngx");
-		file_put_contents($ngx_conf_tpl_tmp_file, $nginx_directives);
-		$ngx_conf_tpl->newTemplate($ngx_conf_tpl_tmp_file);
-		$ngx_conf_tpl->setVar('use_tcp', $use_tcp);
-		$ngx_conf_tpl->setVar('use_socket', $use_socket);
-		$ngx_conf_tpl->setVar('fpm_socket', $fpm_socket);
-		$ngx_conf_tpl->setVar($vhost_data);
-		$nginx_directives_new = $ngx_conf_tpl->grab();
-		if(is_file($ngx_conf_tpl_tmp_file)) unlink($ngx_conf_tpl_tmp_file);
-		if($nginx_directives_new != '') $nginx_directives = $nginx_directives_new;
-		unset($nginx_directives_new);
+		if(trim($nginx_directives) != '') {
+			$nginx_directives_new = '';
+			$ngx_conf_tpl = new tpl();
+			$ngx_conf_tpl_tmp_file = tempnam($conf['temppath'], "ngx");
+			file_put_contents($ngx_conf_tpl_tmp_file, $nginx_directives);
+			$ngx_conf_tpl->newTemplate($ngx_conf_tpl_tmp_file);
+			$ngx_conf_tpl->setVar('use_tcp', $use_tcp);
+			$ngx_conf_tpl->setVar('use_socket', $use_socket);
+			$ngx_conf_tpl->setVar('fpm_socket', $fpm_socket);
+			$ngx_conf_tpl->setVar($vhost_data);
+			$nginx_directives_new = $ngx_conf_tpl->grab();
+			if(is_file($ngx_conf_tpl_tmp_file)) unlink($ngx_conf_tpl_tmp_file);
+			if($nginx_directives_new != '') $nginx_directives = $nginx_directives_new;
+			unset($nginx_directives_new);
+		}
 		
 		// Make sure we only have Unix linebreaks
 		$nginx_directives = str_replace("\r\n", "\n", $nginx_directives);

--
Gitblit v1.9.1