51 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
		
		
			
		
	
	
			51 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
|  | 'use strict'; | ||
|  | 
 | ||
|  | var PromiseA = require('bluebird'); | ||
|  | var pyconf = PromiseA.promisifyAll(require('pyconf')); | ||
|  | var mkdirpAsync = PromiseA.promisify(require('mkdirp')); | ||
|  | var path = require('path'); | ||
|  | 
 | ||
|  | pyconf.readFileAsync(path.join(__dirname, 'lib', 'renewal.conf.tpl')).then(function (obj) { | ||
|  |   var domains = ['example.com', 'www.example.com']; | ||
|  |   var webrootPath = '/tmp/www/example.com'; | ||
|  | 
 | ||
|  |   console.log(obj); | ||
|  | 
 | ||
|  |   var keys = obj.__keys; | ||
|  |   var lines = obj.__lines; | ||
|  | 
 | ||
|  |   obj.__keys = null; | ||
|  |   obj.__lines = null; | ||
|  | 
 | ||
|  |   var updates = { | ||
|  |     account: 'ACCOUNT_ID' | ||
|  | 
 | ||
|  |   , cert: 'CERT_PATH' | ||
|  |   , privkey: 'PRIVATEKEY_PATH' | ||
|  |   , configDir: 'CONFIG_DIR' | ||
|  |   , tos: true | ||
|  |   , http01Port: 80 | ||
|  |   , domains: domains | ||
|  |   }; | ||
|  | 
 | ||
|  |   // final section is completely dynamic
 | ||
|  |   // :hostname = :webroot_path
 | ||
|  |   domains.forEach(function (hostname) { | ||
|  |     updates[hostname] = webrootPath; | ||
|  |   }); | ||
|  | 
 | ||
|  |   // must write back to the original object or
 | ||
|  |   // annotations will be lost
 | ||
|  |   Object.keys(updates).forEach(function (key) { | ||
|  |     obj[key] = updates[key]; | ||
|  |   }); | ||
|  | 
 | ||
|  |   var renewalPath = '/tmp/letsencrypt/renewal/example.com.conf'; | ||
|  |   return mkdirpAsync(path.dirname(renewalPath)).then(function () { | ||
|  |     console.log(obj); | ||
|  |     obj.__keys = keys; | ||
|  |     obj.__lines = lines; | ||
|  |     return pyconf.writeFileAsync(renewalPath, obj); | ||
|  |   }); | ||
|  | }); |