| 
									
										
										
										
											2016-08-05 03:54:57 -04:00
										 |  |  | 'use strict'; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | var fs = require('fs'); | 
					
						
							|  |  |  | var path = require('path'); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-08-05 04:10:33 -04:00
										 |  |  | var defaults = { | 
					
						
							|  |  |  |   webrootPath: '~/letsencrypt/var/lib' | 
					
						
							|  |  |  | , debug: false | 
					
						
							| 
									
										
										
										
											2016-08-05 03:54:57 -04:00
										 |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-08-05 04:10:33 -04:00
										 |  |  | var Challenger = module.exports; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Challenger.create = function (options) { | 
					
						
							|  |  |  |   var results = {}; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   Object.keys(Challenger).forEach(function (key) { | 
					
						
							|  |  |  |     results[key] = Challenger[key]; | 
					
						
							|  |  |  |   }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   results._options = options; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   Object.keys(defaults).forEach(function (key) { | 
					
						
							|  |  |  |     if (!(key in options)) { | 
					
						
							|  |  |  |       options[key] = defaults[key]; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  |   }); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   results.getOptions = function () { | 
					
						
							|  |  |  |     return results._options; | 
					
						
							|  |  |  |   }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   return results; | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | Challenger.setChallenge = function (args, domain, challengePath, keyAuthorization, done) { | 
					
						
							| 
									
										
										
										
											2016-08-05 03:54:57 -04:00
										 |  |  |   var mkdirp = require('mkdirp'); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |   mkdirp(args.webrootPath, function (err) { | 
					
						
							|  |  |  |     if (err) { | 
					
						
							|  |  |  |       done(err); | 
					
						
							|  |  |  |       return; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     fs.writeFile(path.join(args.webrootPath, challengePath), keyAuthorization, 'utf8', function (err) { | 
					
						
							|  |  |  |       done(err); | 
					
						
							|  |  |  |     }); | 
					
						
							|  |  |  |   }); | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-08-05 04:10:33 -04:00
										 |  |  | Challenger.getChallenge = function (args, domain, key, done) { | 
					
						
							| 
									
										
										
										
											2016-08-05 03:54:57 -04:00
										 |  |  |   fs.readFile(path.join(args.webrootPath, key), 'utf8', done); | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2016-08-05 04:10:33 -04:00
										 |  |  | Challenger.removeChallenge = function (args, domain, key, done) { | 
					
						
							| 
									
										
										
										
											2016-08-05 03:54:57 -04:00
										 |  |  |   fs.unlink(path.join(args.webrootPath, key), done); | 
					
						
							|  |  |  | }; |