updates, should all work
This commit is contained in:
		
							parent
							
								
									f81ab3bd45
								
							
						
					
					
						commit
						b83b665a1e
					
				| @ -81,11 +81,11 @@ cli.main(function(_, options) { | ||||
|     var handlers; | ||||
|      | ||||
|     if (args.standalone) { | ||||
|       handlers = require('../lib/standalone'); | ||||
|       handlers = require('../lib/standalone').create(); | ||||
|       handlers.startServers(args.http01Ports || [80], args.tlsSni01Port || [443, 5001]); | ||||
|     } | ||||
|     else if (args.webrootPath) { | ||||
|       handlers = require('../lib/webroot'); | ||||
|       handlers = require('../lib/webroot').create(args); | ||||
|     } | ||||
| 
 | ||||
|     LE.create({}, handlers).register(args, function (err, results) { | ||||
|  | ||||
| @ -1,62 +1,69 @@ | ||||
| 'use strict'; | ||||
| 
 | ||||
| var handlers = module.exports = { | ||||
|   //
 | ||||
|   // set,get,remove challenges
 | ||||
|   //
 | ||||
|   _challenges: {} | ||||
| , setChallenge: function (args, key, value, cb) { | ||||
|     handlers._challenges[key] = value; | ||||
|     cb(null); | ||||
|   } | ||||
| , getChallenge: function (args, key, cb) { | ||||
|     cb(null, handlers._challenges[key]); | ||||
|   } | ||||
| , removeChallenge: function (args, key, cb) { | ||||
|     delete handlers._challenges[key]; | ||||
|     cb(null); | ||||
|   } | ||||
| 
 | ||||
| , _servers: [] | ||||
| , httpResponder: function (req, res) { | ||||
|     var acmeChallengePrefix = '/.well-known/acme-challenge/'; | ||||
| 
 | ||||
|     if (0 !== req.url.indexOf(acmeChallengePrefix)) { | ||||
|       res.end('Hello World!'); | ||||
|       return; | ||||
| var handlers = module.exports.create = function () { | ||||
|   return { | ||||
|     //
 | ||||
|     // set,get,remove challenges
 | ||||
|     //
 | ||||
|     // Note: this is fine for a one-off CLI tool
 | ||||
|     // but a webserver using node-cluster or multiple
 | ||||
|     // servers should use a database of some sort
 | ||||
|     _challenges: {} | ||||
|   , setChallenge: function (args, key, value, cb) { | ||||
|       handlers._challenges[key] = value; | ||||
|       cb(null); | ||||
|     } | ||||
|   , getChallenge: function (args, key, cb) { | ||||
|       // TODO keep in mind that, generally get args are just args.domains
 | ||||
|       // and it is disconnected from the flow of setChallenge and removeChallenge
 | ||||
|       cb(null, handlers._challenges[key]); | ||||
|     } | ||||
|   , removeChallenge: function (args, key, cb) { | ||||
|       delete handlers._challenges[key]; | ||||
|       cb(null); | ||||
|     } | ||||
| 
 | ||||
|     var key = req.url.slice(acmeChallengePrefix.length); | ||||
|   , _servers: [] | ||||
|   , httpResponder: function (req, res) { | ||||
|       var acmeChallengePrefix = '/.well-known/acme-challenge/'; | ||||
| 
 | ||||
|     handlers.getChallenge(req.headers.host, key, function (err, val) { | ||||
|       res.end(val || '_'); | ||||
|     }); | ||||
|   } | ||||
| , startServers: function (plainPorts, tlsPorts) { | ||||
|     var httpsOptions = require('localhost.daplie.com-certificates'); | ||||
|     var https = require('https'); | ||||
|     var http = require('http'); | ||||
|       if (0 !== req.url.indexOf(acmeChallengePrefix)) { | ||||
|         res.end('Hello World!'); | ||||
|         return; | ||||
|       } | ||||
| 
 | ||||
|     // tls-sni-01-port
 | ||||
|     if (handlers._servers.length) { | ||||
|       return; | ||||
|       var key = req.url.slice(acmeChallengePrefix.length); | ||||
| 
 | ||||
|       handlers.getChallenge(req.headers.host, key, function (err, val) { | ||||
|         res.end(val || '_'); | ||||
|       }); | ||||
|     } | ||||
|   , startServers: function (plainPorts, tlsPorts) { | ||||
|       var httpsOptions = require('localhost.daplie.com-certificates'); | ||||
|       var https = require('https'); | ||||
|       var http = require('http'); | ||||
| 
 | ||||
|     plainPorts.forEach(function (port) { | ||||
|       http.createServer(handlers.httpResponder).listen(port, function () { | ||||
|         console.info('Listening http on', this.address()); | ||||
|       // tls-sni-01-port
 | ||||
|       if (handlers._servers.length) { | ||||
|         return; | ||||
|       } | ||||
| 
 | ||||
|       plainPorts.forEach(function (port) { | ||||
|         http.createServer(handlers.httpResponder).listen(port, function () { | ||||
|           console.info('Listening http on', this.address()); | ||||
|         }); | ||||
|       }); | ||||
|     }); | ||||
|     tlsPorts.forEach(function (port) { | ||||
|       https.createServer(httpsOptions, handlers.httpResponder).listen(port, function () { | ||||
|         console.info('Listening https on', this.address()); | ||||
|       tlsPorts.forEach(function (port) { | ||||
|         https.createServer(httpsOptions, handlers.httpResponder).listen(port, function () { | ||||
|           console.info('Listening https on', this.address()); | ||||
|         }); | ||||
|       }); | ||||
|     }); | ||||
|   } | ||||
| , closeServers: function () { | ||||
|     handlers._servers.forEach(function (server) { | ||||
|       server.close(); | ||||
|     }); | ||||
|     handlers._servers = []; | ||||
|   } | ||||
|     } | ||||
|   , closeServers: function () { | ||||
|       handlers._servers.forEach(function (server) { | ||||
|         server.close(); | ||||
|       }); | ||||
|       handlers._servers = []; | ||||
|     } | ||||
|   }; | ||||
| }; | ||||
|  | ||||
| @ -0,0 +1,51 @@ | ||||
| 'use strict'; | ||||
| 
 | ||||
| var handlers = module.exports.create = function (defaults) { | ||||
|   var fs = require('fs'); | ||||
|   var path = require('path'); | ||||
|   var mkdirp = require('mkdirp'); | ||||
| 
 | ||||
|   return { | ||||
|     //
 | ||||
|     // set,get,remove challenges
 | ||||
|     //
 | ||||
|     _challenges: {} | ||||
|   , setChallenge: function (args, key, value, cb) { | ||||
|       mkdirp(defaults.webrootPath, function (err) { | ||||
|         if (err) { | ||||
|           console.error("Could not create --webroot-path '" + defaults.webrootPath + "':", err.code); | ||||
|           console.error("Try checking the permissions, maybe?"); | ||||
|           cb(err); | ||||
|           return; | ||||
|         } | ||||
| 
 | ||||
|         var keyfile = path.join(defaults.webrootPath, key); | ||||
| 
 | ||||
|         fs.writeFile(keyfile, value, 'utf8', function (err) { | ||||
|           if (err) { | ||||
|             console.error("Could not write '" + keyfile + "':", err.code); | ||||
|             cb(err); | ||||
|             return; | ||||
|           } | ||||
| 
 | ||||
|           cb(null); | ||||
|         }); | ||||
|       }); | ||||
|     } | ||||
|   // handled as file read by web server
 | ||||
|   // , getChallenge: function (args, key, cb) {}
 | ||||
|   , removeChallenge: function (args, key, cb) { | ||||
|       var keyfile = path.join(defaults.webrootPath, key); | ||||
| 
 | ||||
|       fs.unlink(keyfile, function (err) { | ||||
|         if (err) { | ||||
|           console.error("Could not unlink '" + keyfile + "':", err.code); | ||||
|           cb(err); | ||||
|           return; | ||||
|         } | ||||
| 
 | ||||
|         cb(null); | ||||
|       }); | ||||
|     } | ||||
|   }; | ||||
| }; | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user