minor bugfixes
This commit is contained in:
		
							parent
							
								
									aa53b18a9d
								
							
						
					
					
						commit
						b9537f8419
					
				@ -1,3 +1,3 @@
 | 
			
		||||
# greenlock-manager-fs.js
 | 
			
		||||
 | 
			
		||||
A simple file-based management strategy for greenlock
 | 
			
		||||
A simple file-based management strategy for greenlock
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										93
									
								
								manager.js
									
									
									
									
									
								
							
							
						
						
									
										93
									
								
								manager.js
									
									
									
									
									
								
							@ -17,9 +17,7 @@ Manage.create = function(opts) {
 | 
			
		||||
	}
 | 
			
		||||
	if (!opts.configFile) {
 | 
			
		||||
		opts.configFile = '~/.config/greenlock/manager.json';
 | 
			
		||||
		console.info(
 | 
			
		||||
			"[Manager] using default config file:\n\t'" + opts.configFile + "'"
 | 
			
		||||
		);
 | 
			
		||||
		console.info('Greenlock Manager Config File: ' + opts.configFile);
 | 
			
		||||
	}
 | 
			
		||||
	opts.configFile = opts.configFile.replace('~/', homedir + '/');
 | 
			
		||||
 | 
			
		||||
@ -29,9 +27,7 @@ Manage.create = function(opts) {
 | 
			
		||||
		return Manage._ping(manage, opts);
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	manage._txPromise = new Promise(function(resolve) {
 | 
			
		||||
		resolve();
 | 
			
		||||
	});
 | 
			
		||||
	manage._txPromise = Promise.resolve();
 | 
			
		||||
 | 
			
		||||
	manage.config = function(conf) {
 | 
			
		||||
		// get / set default site settings such as
 | 
			
		||||
@ -87,7 +83,7 @@ Manage.create = function(opts) {
 | 
			
		||||
				config[k] = conf[k];
 | 
			
		||||
			});
 | 
			
		||||
 | 
			
		||||
			return manage.save(config);
 | 
			
		||||
			return manage._save(config);
 | 
			
		||||
		});
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
@ -129,6 +125,7 @@ Manage.create = function(opts) {
 | 
			
		||||
			// if the fs has changed since we last wrote, get the lastest from disk
 | 
			
		||||
			return Manage._getLatest(manage, opts).then(function(config) {
 | 
			
		||||
				// TODO move to Greenlock.add
 | 
			
		||||
				var subscriberEmail = args.subscriberEmail;
 | 
			
		||||
				var subject = args.subject || args.domain;
 | 
			
		||||
				var primary = subject;
 | 
			
		||||
				var altnames = args.altnames || args.domains;
 | 
			
		||||
@ -160,10 +157,14 @@ Manage.create = function(opts) {
 | 
			
		||||
				// and to make deterministic auto-corrections
 | 
			
		||||
 | 
			
		||||
				// TODO added, removed, moved (duplicate), changed
 | 
			
		||||
				site.subscriberEmail = site.subscriberEmail;
 | 
			
		||||
				if (subscriberEmail) {
 | 
			
		||||
					site.subscriberEmail = subscriberEmail;
 | 
			
		||||
				}
 | 
			
		||||
				site.subject = subject;
 | 
			
		||||
				site.altnames = altnames;
 | 
			
		||||
				site.issuedAt = site.issuedAt || 0;
 | 
			
		||||
				if (!site.issuedAt) {
 | 
			
		||||
					site.issuedAt = 0;
 | 
			
		||||
				}
 | 
			
		||||
				site.expiresAt = site.expiresAt || 0;
 | 
			
		||||
				site.lastAttemptAt = site.lastAttemptAt || 0;
 | 
			
		||||
				// re-add if this was deleted
 | 
			
		||||
@ -183,11 +184,15 @@ Manage.create = function(opts) {
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
				// These should usually be empty, for most situations
 | 
			
		||||
				site.subscriberEmail = args.subscriberEmail;
 | 
			
		||||
				site.customerEmail = args.customerEmail;
 | 
			
		||||
				site.challenges = args.challenges;
 | 
			
		||||
				site.store = args.store;
 | 
			
		||||
				console.log('[debug] save site', site);
 | 
			
		||||
				if (args.customerEmail) {
 | 
			
		||||
					site.customerEmail = args.customerEmail;
 | 
			
		||||
				}
 | 
			
		||||
				if (args.challenges) {
 | 
			
		||||
					site.challenges = args.challenges;
 | 
			
		||||
				}
 | 
			
		||||
				if (args.store) {
 | 
			
		||||
					site.store = args.store;
 | 
			
		||||
				}
 | 
			
		||||
 | 
			
		||||
				return manage._save(config).then(function() {
 | 
			
		||||
					return JSON.parse(JSON.stringify(site));
 | 
			
		||||
@ -204,11 +209,18 @@ Manage.create = function(opts) {
 | 
			
		||||
			// i.e. find certs more that will expire in less than 45 days
 | 
			
		||||
			//args.expiresBefore = Date.now() + 45 * 24 * 60 * 60 * 1000;
 | 
			
		||||
			var issuedBefore = args.issuedBefore || 0;
 | 
			
		||||
			var expiresBefore =
 | 
			
		||||
				args.expiresBefore || Date.now() + 21 * 24 * 60 * 60 * 1000;
 | 
			
		||||
			var expiresBefore = args.expiresBefore || Infinity; //Date.now() + 21 * 24 * 60 * 60 * 1000;
 | 
			
		||||
 | 
			
		||||
			var altnames = (args.altnames || args.domains || []).slice(0);
 | 
			
		||||
			if (args.servername && !altnames.includes(args.servername)) {
 | 
			
		||||
				altnames.push(args.servername);
 | 
			
		||||
			}
 | 
			
		||||
			if (args.subject && !altnames.includes(args.subject)) {
 | 
			
		||||
				altnames.push(args.subject);
 | 
			
		||||
			}
 | 
			
		||||
 | 
			
		||||
			// TODO match ANY domain on any cert
 | 
			
		||||
			var sites = Object.keys(config.sites)
 | 
			
		||||
			var sites = Object.keys(config.sites || {})
 | 
			
		||||
				.filter(function(sub) {
 | 
			
		||||
					var site = config.sites[sub];
 | 
			
		||||
					if (
 | 
			
		||||
@ -216,14 +228,13 @@ Manage.create = function(opts) {
 | 
			
		||||
						site.expiresAt < expiresBefore ||
 | 
			
		||||
						site.issuedAt < issuedBefore
 | 
			
		||||
					) {
 | 
			
		||||
						if (!args.subject || sub === args.subject) {
 | 
			
		||||
							return true;
 | 
			
		||||
						}
 | 
			
		||||
						return (site.altnames || []).some(function(name) {
 | 
			
		||||
							return altnames.includes(name);
 | 
			
		||||
						});
 | 
			
		||||
					}
 | 
			
		||||
				})
 | 
			
		||||
				.map(function(name) {
 | 
			
		||||
					var site = config.sites[name];
 | 
			
		||||
					console.debug('debug', site);
 | 
			
		||||
					return {
 | 
			
		||||
						subject: site.subject,
 | 
			
		||||
						altnames: site.altnames,
 | 
			
		||||
@ -269,7 +280,45 @@ Manage.create = function(opts) {
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		// TODO define message types
 | 
			
		||||
		console.info(ev, args);
 | 
			
		||||
		if (!manage._notify_notice) {
 | 
			
		||||
			console.info(
 | 
			
		||||
				'set greenlockOptions.notify to override the default logger'
 | 
			
		||||
			);
 | 
			
		||||
			manage._notify_notice = true;
 | 
			
		||||
		}
 | 
			
		||||
		switch (ev) {
 | 
			
		||||
			case 'error':
 | 
			
		||||
			/* falls through */
 | 
			
		||||
			case 'warning':
 | 
			
		||||
				console.error(
 | 
			
		||||
					'Error%s:',
 | 
			
		||||
					args.context ? ' ' + args.context : ''
 | 
			
		||||
				);
 | 
			
		||||
				console.error(args.message);
 | 
			
		||||
				if (args.description) {
 | 
			
		||||
					console.error(args.description);
 | 
			
		||||
				}
 | 
			
		||||
				if (args.code) {
 | 
			
		||||
					console.error('code:', args.code);
 | 
			
		||||
				}
 | 
			
		||||
				break;
 | 
			
		||||
			default:
 | 
			
		||||
				if (/status/.test(ev)) {
 | 
			
		||||
					console.info(
 | 
			
		||||
						ev,
 | 
			
		||||
						args.altname || args.subject || '',
 | 
			
		||||
						args.status || ''
 | 
			
		||||
					);
 | 
			
		||||
					if (!args.status) {
 | 
			
		||||
						console.log(args);
 | 
			
		||||
					}
 | 
			
		||||
					break;
 | 
			
		||||
				}
 | 
			
		||||
				console.info(
 | 
			
		||||
					ev,
 | 
			
		||||
					'(more info available: ' + Object.keys(args).join(' ') + ')'
 | 
			
		||||
				);
 | 
			
		||||
		}
 | 
			
		||||
	};
 | 
			
		||||
 | 
			
		||||
	manage.errors = function(err) {
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user