瀏覽代碼

Fix renderLocations to accept more parameters from host

Amend renderLocations to pass more host parameters into the custom locations to match the requirements set for the default location. This will apply all parameters set in the UI to all custom locations.
vipergts450 4 年之前
父節點
當前提交
6a46e88f8f
共有 1 個文件被更改,包括 16 次插入2 次删除
  1. 16 2
      backend/internal/nginx.js

+ 16 - 2
backend/internal/nginx.js

@@ -136,6 +136,8 @@ const internalNginx = {
 	 * @returns {Promise}
 	 */
 	renderLocations: (host) => {
+
+	//	logger.info('host = ' + JSON.stringify(host, null, 2));
 		return new Promise((resolve, reject) => {
 			let template;
 
@@ -153,8 +155,13 @@ const internalNginx = {
 
 			const locationRendering = async () => {
 				for (let i = 0; i < host.locations.length; i++) {
-					let locationCopy = Object.assign({}, host.locations[i]);
-
+					let locationCopy = Object.assign({}, {access_list_id : host.access_list_id}, {certificate_id : host.certificate_id}, 
+									{ssl_forced : host.ssl_forced}, {caching_enabled : host.caching_enabled}, 
+									{block_exploits : host.block_exploits}, {allow_websocket_upgrade : host.allow_websocket_upgrade}, 
+									{http2_support : host.http2_support}, {hsts_enabled : host.hsts_enabled}, 
+									{hsts_subdomains : host.hsts_subdomains}, {access_list : host.access_list},
+									{certificate : host.certificate}, host.locations[i]);
+			
 					if (locationCopy.forward_host.indexOf('/') > -1) {
 						const splitted = locationCopy.forward_host.split('/');
 
@@ -162,12 +169,16 @@ const internalNginx = {
 						locationCopy.forward_path = `/${splitted.join('/')}`;
 					}
 
+				//	logger.info('locationCopy = ' + JSON.stringify(locationCopy, null, 2));
+
 					// eslint-disable-next-line
 					renderedLocations += await renderer.parseAndRender(template, locationCopy);
 				}
+
 			};
 
 			locationRendering().then(() => resolve(renderedLocations));
+			
 		});
 	},
 
@@ -183,6 +194,8 @@ const internalNginx = {
 			logger.info('Generating ' + host_type + ' Config:', host);
 		}
 
+		// logger.info('host = ' + JSON.stringify(host, null, 2));
+
 		let renderEngine = new Liquid({
 			root: __dirname + '/../templates/'
 		});
@@ -210,6 +223,7 @@ const internalNginx = {
 			}
 
 			if (host.locations) {
+		//		logger.info ('host.locations = ' + JSON.stringify(host.locations, null, 2));
 				origLocations    = [].concat(host.locations);
 				locationsPromise = internalNginx.renderLocations(host).then((renderedLocations) => {
 					host.locations = renderedLocations;