mirror of
				https://github.com/therootcompany/greenlock-express.js.git
				synced 2024-11-16 17:28:59 +00:00 
			
		
		
		
	solution for #2, send updates to all workers, all workers update caches
This commit is contained in:
		
							parent
							
								
									42351396f0
								
							
						
					
					
						commit
						6a7af7bdcb
					
				| @ -4,6 +4,7 @@ | ||||
| // opts.approveDomains(options, certs, cb)
 | ||||
| module.exports.create = function (opts) { | ||||
|   opts = opts || { }; | ||||
|   opts._workers = []; | ||||
|   opts.webrootPath = opts.webrootPath || require('os').tmpdir() + require('path').sep + 'acme-challenge'; | ||||
|   if (!opts.letsencrypt) { opts.letsencrypt = require('letsencrypt').create(opts); } | ||||
|   if ('function' !== typeof opts.approveDomains) { | ||||
| @ -23,6 +24,7 @@ module.exports.create = function (opts) { | ||||
| 
 | ||||
|   opts._le = opts.letsencrypt; | ||||
|   opts.addWorker = function (worker) { | ||||
|     opts._workers.push(worker); | ||||
| 
 | ||||
|     worker.on('online', function () { | ||||
|       log(opts.debug, 'worker is up'); | ||||
| @ -75,7 +77,9 @@ module.exports.create = function (opts) { | ||||
|         promise.then(function (certs) { | ||||
|           log(opts.debug, 'Approval got certs', certs); | ||||
|           // certs = { subject, domains, issuedAt, expiresAt, privkey, cert, chain };
 | ||||
|           worker.send({ type: 'LE_RESPONSE', domain: msg.domain, certs: certs }); | ||||
|           opts._workers.forEach(function (w) { | ||||
|             w.send({ type: 'LE_RESPONSE', domain: msg.domain, certs: certs }); | ||||
|           }); | ||||
|         }, function (err) { | ||||
|           log(opts.debug, 'Approval got ERROR', err.stack || err); | ||||
|           worker.send({ type: 'LE_RESPONSE', domain: msg.domain, error: err }); | ||||
|  | ||||
| @ -15,7 +15,14 @@ function log(debug) { | ||||
| 
 | ||||
| module.exports.create = function (opts) { | ||||
| 
 | ||||
| 
 | ||||
|   // if another worker updates the certs,
 | ||||
|   // receive a copy from master here as well
 | ||||
|   // and update the sni cache manually
 | ||||
|   process.on('message', function (msg) { | ||||
|     if ('LE_RESPONSE' === msg.type && msg.certs) { | ||||
|       opts.sni.cacheCerts(msg.certs); | ||||
|     } | ||||
|   }); | ||||
| 
 | ||||
|   opts.sni = require('le-sni-auto').create({ | ||||
|     notBefore: opts.notBefore || (10 * 24 * 60 * 60 * 1000) | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user