From 567f0b2f52d81eb35213b33a9450ab05183e4196 Mon Sep 17 00:00:00 2001
From: ftimme <ft@falkotimme.com>
Date: Tue, 12 Feb 2013 11:42:57 -0500
Subject: [PATCH] - Fixed FS#2668 - ISPCFG3.0.5RC1 refuses to add empty nginx locations in nginx directive.

---
 server/plugins-available/nginx_plugin.inc.php |   13 +++++++++++++
 1 files changed, 13 insertions(+), 0 deletions(-)

diff --git a/server/plugins-available/nginx_plugin.inc.php b/server/plugins-available/nginx_plugin.inc.php
index f84e544..783b208 100644
--- a/server/plugins-available/nginx_plugin.inc.php
+++ b/server/plugins-available/nginx_plugin.inc.php
@@ -2328,6 +2328,15 @@
 		}
 	}
 	
+	private function nginx_replace($matches){
+		$location = 'location'.($matches[1] != '' ? ' '.$matches[1] : '').' '.$matches[2].' '.$matches[3];
+		if($matches[4] == '##merge##' || $matches[7] == '##merge##') $location .= ' ##merge##';
+		$location .= "\n";
+		$location .= $matches[5]."\n";
+		$location .= $matches[6];
+		return $location;
+	}
+	
 	private function nginx_merge_locations($vhost_conf){
 
 		$lines = explode("\n", $vhost_conf);
@@ -2337,6 +2346,7 @@
 			$linecount = sizeof($lines);
 			for($h=0;$h<$linecount;$h++){
 				$lines[$h] = rtrim($lines[$h]);
+				/*
 				if(substr(ltrim($lines[$h]), 0, 8) == 'location' && strpos($lines[$h], '{') !== false && strpos($lines[$h], ';') !== false){
 					$lines[$h] = str_replace("{", "{\n", $lines[$h]);
 					$lines[$h] = str_replace(";", ";\n", $lines[$h]);
@@ -2352,6 +2362,9 @@
 						$lines[$h] = substr($lines[$h],0,strpos($lines[$h], '{')).' ##merge##'.substr($lines[$h],strpos($lines[$h], '{')+1);
 					}
 				}
+				*/
+				$pattern = '/^[^\S\n]*location[^\S\n]+(?:(.+)[^\S\n]+)?(.+)(\{)[^\S\n]*(##merge##)?[^\S\n]*(.+)[^\S\n]*(\})[^\S\n]*(##merge##)?[^\S\n]*$/';
+				$lines[$h] = preg_replace_callback($pattern, array($this, 'nginx_replace') ,$lines[$h]);
 			}
 		}
 		$vhost_conf = implode("\n", $lines);

--
Gitblit v1.9.1