mirror of
				https://github.com/therootcompany/greenlock-express.js.git
				synced 2024-11-16 17:28:59 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			48 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
			
		
		
	
	
			48 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			JavaScript
		
	
	
	
	
	
| "use strict";
 | |
| 
 | |
| var pkg = require("./package.json");
 | |
| 
 | |
| module.exports.create = function(opts) {
 | |
| 	var Greenlock = require("@root/greenlock");
 | |
| 	var packageAgent = pkg.name + "/" + pkg.version;
 | |
| 	if ("string" === typeof opts.packageAgent) {
 | |
| 		opts.packageAgent += " ";
 | |
| 	} else {
 | |
| 		opts.packageAgent = "";
 | |
| 	}
 | |
| 	opts.packageAgent += packageAgent;
 | |
| 
 | |
| 	var greenlock = Greenlock.create(opts);
 | |
| 	greenlock.getAcmeHttp01ChallengeResponse = function(opts) {
 | |
| 		return greenlock.find({ servername: opts.servername }).then(function(sites) {
 | |
| 			if (!sites.length) {
 | |
| 				return null;
 | |
| 			}
 | |
| 			var site = sites[0];
 | |
| 			if (!site.challenges || !site.challenges["http-01"]) {
 | |
| 				return null;
 | |
| 			}
 | |
| 
 | |
| 			var plugin;
 | |
| 			try {
 | |
| 				plugin = require(site.challenges["http-01"].module);
 | |
| 				plugin = plugin.create(site.challenges["http-01"]);
 | |
| 			} catch (e) {
 | |
| 				console.error("error getting acme http-01 plugin");
 | |
| 				console.error(e);
 | |
| 				return null;
 | |
| 			}
 | |
| 
 | |
| 			return plugin.get(opts).then(function(result) {
 | |
| 				// TODO is this the right way?
 | |
| 				var ch = (result && result.challenge) || result || {};
 | |
| 				return {
 | |
| 					keyAuthorization: ch.keyAuthorization
 | |
| 				};
 | |
| 			});
 | |
| 		});
 | |
| 	};
 | |
| 
 | |
| 	return greenlock;
 | |
| };
 |