mirror of
				https://github.com/NginxProxyManager/nginx-proxy-manager.git
				synced 2025-11-04 01:15:14 +00:00 
			
		
		
		
	add feature: set default server
This commit is contained in:
		@@ -228,8 +228,32 @@ const internalHost = {
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		return response;
 | 
			
		||||
	}
 | 
			
		||||
	},
 | 
			
		||||
 | 
			
		||||
	/**
 | 
			
		||||
	 * Internal use only, checks to see if the there is another default server record
 | 
			
		||||
	 *
 | 
			
		||||
	 * @param   {String}   hostname
 | 
			
		||||
	 * @param   {String}   [ignore_type]   'proxy', 'redirection', 'dead'
 | 
			
		||||
	 * @param   {Integer}  [ignore_id]     Must be supplied if type was also supplied
 | 
			
		||||
	 * @returns {Promise}
 | 
			
		||||
	 */
 | 
			
		||||
	checkDefaultServerNotExist: function (hostname) {
 | 
			
		||||
		let promises = proxyHostModel
 | 
			
		||||
			.query()
 | 
			
		||||
			.where('default_server', true)
 | 
			
		||||
			.andWhere('domain_names', 'not like', '%' + hostname + '%');
 | 
			
		||||
 | 
			
		||||
		
 | 
			
		||||
		return Promise.resolve(promises)
 | 
			
		||||
			.then((promises_results) => {
 | 
			
		||||
				if (promises_results.length > 0){
 | 
			
		||||
					return false;
 | 
			
		||||
				}
 | 
			
		||||
				return true;
 | 
			
		||||
			});
 | 
			
		||||
		
 | 
			
		||||
	}
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
module.exports = internalHost;
 | 
			
		||||
 
 | 
			
		||||
@@ -185,7 +185,7 @@ const internalNginx = {
 | 
			
		||||
		// Prevent modifying the original object:
 | 
			
		||||
		let host             = JSON.parse(JSON.stringify(host_row));
 | 
			
		||||
		const nice_host_type = internalNginx.getFileFriendlyHostType(host_type);
 | 
			
		||||
 | 
			
		||||
		
 | 
			
		||||
		if (config.debug()) {
 | 
			
		||||
			logger.info('Generating ' + nice_host_type + ' Config:', JSON.stringify(host, null, 2));
 | 
			
		||||
		}
 | 
			
		||||
 
 | 
			
		||||
@@ -43,6 +43,22 @@ const internalProxyHost = {
 | 
			
		||||
						});
 | 
			
		||||
					});
 | 
			
		||||
			})
 | 
			
		||||
			.then(() => {
 | 
			
		||||
				// Get a list of the domain names and check each of them against default records
 | 
			
		||||
				if (data.default_server){
 | 
			
		||||
					if (data.domain_names.length > 1) {
 | 
			
		||||
						throw new error.ValidationError('Default server cant be set for multiple domain!');
 | 
			
		||||
					}
 | 
			
		||||
	
 | 
			
		||||
					return internalHost
 | 
			
		||||
						.checkDefaultServerNotExist(data.domain_names[0])
 | 
			
		||||
						.then((result) => {
 | 
			
		||||
							if (!result){
 | 
			
		||||
								throw new error.ValidationError('One default server already exists');
 | 
			
		||||
							}
 | 
			
		||||
						});
 | 
			
		||||
				}
 | 
			
		||||
			})
 | 
			
		||||
			.then(() => {
 | 
			
		||||
				// At this point the domains should have been checked
 | 
			
		||||
				data.owner_user_id = access.token.getUserId(1);
 | 
			
		||||
@@ -140,6 +156,22 @@ const internalProxyHost = {
 | 
			
		||||
						});
 | 
			
		||||
				}
 | 
			
		||||
			})
 | 
			
		||||
			.then(() => {
 | 
			
		||||
				// Get a list of the domain names and check each of them against default records
 | 
			
		||||
				if (data.default_server){
 | 
			
		||||
					if (data.domain_names.length > 1) {
 | 
			
		||||
						throw new error.ValidationError('Default server cant be set for multiple domain!');
 | 
			
		||||
					}
 | 
			
		||||
	
 | 
			
		||||
					return internalHost
 | 
			
		||||
						.checkDefaultServerNotExist(data.domain_names[0])
 | 
			
		||||
						.then((result) => {
 | 
			
		||||
							if (!result){
 | 
			
		||||
								throw new error.ValidationError('One default server already exists');
 | 
			
		||||
							}
 | 
			
		||||
						});
 | 
			
		||||
				}
 | 
			
		||||
			})
 | 
			
		||||
			.then(() => {
 | 
			
		||||
				return internalProxyHost.get(access, {id: data.id});
 | 
			
		||||
			})
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user