| 
									
										
										
										
											2015-12-15 15:21:27 +00:00
										 |  |  | 'use strict'; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | var fs = require('fs'); | 
					
						
							|  |  |  | var PromiseA = require('bluebird'); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | module.exports.fetchFromDisk = function (args, defaults) { | 
					
						
							|  |  |  |   var hostname = args.domains[0]; | 
					
						
							| 
									
										
										
										
											2015-12-16 12:57:53 +00:00
										 |  |  |   var crtpath = (args.fullchainPath || defaults.fullchainPath) | 
					
						
							|  |  |  |     || (defaults.configDir | 
					
						
							|  |  |  |       + (args.fullchainTpl || defaults.fullchainTpl || ':hostname/fullchain.pem').replace(/:hostname/, hostname)); | 
					
						
							|  |  |  |   var privpath = (args.privkeyPath || defaults.privkeyPath) | 
					
						
							|  |  |  |     || (defaults.configDir | 
					
						
							|  |  |  |       + (args.privkeyTpl || defaults.privkeyTpl || ':hostname/privkey.pem').replace(/:hostname/, hostname)); | 
					
						
							| 
									
										
										
										
											2015-12-15 15:21:27 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |   return PromiseA.all([ | 
					
						
							|  |  |  |     fs.readFileAsync(privpath, 'ascii') | 
					
						
							|  |  |  |   , fs.readFileAsync(crtpath, 'ascii') | 
					
						
							|  |  |  |     // stat the file, not the link
 | 
					
						
							|  |  |  |   , fs.statAsync(crtpath) | 
					
						
							|  |  |  |   ]).then(function (arr) { | 
					
						
							|  |  |  |     return { | 
					
						
							|  |  |  |       key: arr[0]  // privkey.pem
 | 
					
						
							|  |  |  |     , cert: arr[1] // fullchain.pem
 | 
					
						
							|  |  |  |       // TODO parse centificate for lifetime / expiresAt
 | 
					
						
							|  |  |  |     , issuedAt: arr[2].mtime.valueOf() | 
					
						
							|  |  |  |     }; | 
					
						
							|  |  |  |   }, function () { | 
					
						
							|  |  |  |     return null; | 
					
						
							|  |  |  |   }); | 
					
						
							|  |  |  | }; |