mirror of
				https://github.com/therootcompany/greenlock-express.js.git
				synced 2024-11-16 17:28:59 +00:00 
			
		
		
		
	wip: simpler config and defaults
This commit is contained in:
		
							parent
							
								
									48b892c323
								
							
						
					
					
						commit
						28aad4f29d
					
				
							
								
								
									
										23
									
								
								README.md
									
									
									
									
									
								
							
							
						
						
									
										23
									
								
								README.md
									
									
									
									
									
								
							| @ -29,7 +29,7 @@ npm install --save greenlock-express@v3 | |||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| ```bash | ```bash | ||||||
| npx greenlock init --maintainer-email 'jon@example.com' --manager-config-file ./greenlock.json | npx greenlock init --maintainer-email 'jon@example.com' | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
| <details> | <details> | ||||||
| @ -39,13 +39,11 @@ npx greenlock init --maintainer-email 'jon@example.com' --manager-config-file ./ | |||||||
| "use strict"; | "use strict"; | ||||||
| 
 | 
 | ||||||
| require("greenlock-express") | require("greenlock-express") | ||||||
|     .init(function() { |     .init({ | ||||||
|         return { |         packageRoot: __dirname, | ||||||
|             greenlock: require("./greenlock.js"), |  | ||||||
| 
 | 
 | ||||||
|         // whether or not to run at cloudscale |         // whether or not to run at cloudscale | ||||||
|         cluster: false |         cluster: false | ||||||
|         }; |  | ||||||
|     }) |     }) | ||||||
|     .ready(function(glx) { |     .ready(function(glx) { | ||||||
|         var app = require("./app.js"); |         var app = require("./app.js"); | ||||||
| @ -83,6 +81,8 @@ module.exports = require("@root/greenlock").create({ | |||||||
| <summary>app.js</summary> | <summary>app.js</summary> | ||||||
| 
 | 
 | ||||||
| ```js | ```js | ||||||
|  | "use strict"; | ||||||
|  | 
 | ||||||
| var app = function(req, res) { | var app = function(req, res) { | ||||||
|     res.end("Hello, Encrypted World!"); |     res.end("Hello, Encrypted World!"); | ||||||
| }; | }; | ||||||
| @ -92,14 +92,19 @@ module.exports = app; | |||||||
| 
 | 
 | ||||||
| </details> | </details> | ||||||
| 
 | 
 | ||||||
| ```bash |  | ||||||
| npx greenlock defaults --subscriber-email 'jon@example.com' --agree-to-terms |  | ||||||
| ``` |  | ||||||
| 
 |  | ||||||
| ```bash | ```bash | ||||||
| npx greenlock add --subject example.com --altnames example.com | npx greenlock add --subject example.com --altnames example.com | ||||||
| ``` | ``` | ||||||
| 
 | 
 | ||||||
|  | <details> | ||||||
|  | <summary>greenlock.json</summary> | ||||||
|  | 
 | ||||||
|  | ```json | ||||||
|  | { "sites": [{ "subject": "example.com", "altnames": ["example.com"] }] } | ||||||
|  | ``` | ||||||
|  | 
 | ||||||
|  | </details> | ||||||
|  | 
 | ||||||
| ```bash | ```bash | ||||||
| npm start -- --staging | npm start -- --staging | ||||||
| ``` | ``` | ||||||
|  | |||||||
| @ -1,11 +1,8 @@ | |||||||
| "use strict"; | "use strict"; | ||||||
| 
 | 
 | ||||||
| var path = require("path"); |  | ||||||
| var fs = require("fs"); |  | ||||||
| 
 |  | ||||||
| module.exports.create = function(opts) { | module.exports.create = function(opts) { | ||||||
|     var Greenlock = require("@root/greenlock"); |     var Greenlock = require("@root/greenlock"); | ||||||
|     var Init = require("./init.js"); |     var Init = require("@root/greenlock/init.js"); | ||||||
|     var greenlock = opts.greenlock; |     var greenlock = opts.greenlock; | ||||||
| 
 | 
 | ||||||
|     /* |     /* | ||||||
| @ -24,6 +21,7 @@ module.exports.create = function(opts) { | |||||||
|         opts = Init._init(opts); |         opts = Init._init(opts); | ||||||
|         greenlock = Greenlock.create(opts); |         greenlock = Greenlock.create(opts); | ||||||
|     } |     } | ||||||
|  |     opts.packageAgent = addGreenlockAgent(opts); | ||||||
| 
 | 
 | ||||||
|     try { |     try { | ||||||
|         if (opts.notify) { |         if (opts.notify) { | ||||||
| @ -59,3 +57,14 @@ module.exports.create = function(opts) { | |||||||
| 
 | 
 | ||||||
|     return greenlock; |     return greenlock; | ||||||
| }; | }; | ||||||
|  | 
 | ||||||
|  | function addGreenlockAgent(opts) { | ||||||
|  |     // Add greenlock as part of Agent, unless this is greenlock
 | ||||||
|  |     var packageAgent = opts.packageAgent || ""; | ||||||
|  |     if (!/greenlock(-express|-pro)?/i.test(packageAgent)) { | ||||||
|  |         var pkg = require("./package.json"); | ||||||
|  |         packageAgent += " Greenlock_Express/" + pkg.version; | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|  |     return packageAgent.trim(); | ||||||
|  | } | ||||||
|  | |||||||
							
								
								
									
										131
									
								
								init.js
									
									
									
									
									
								
							
							
						
						
									
										131
									
								
								init.js
									
									
									
									
									
								
							| @ -1,131 +0,0 @@ | |||||||
| "use strict"; |  | ||||||
| 
 |  | ||||||
| var Init = module.exports; |  | ||||||
| 
 |  | ||||||
| var fs = require("fs"); |  | ||||||
| var path = require("path"); |  | ||||||
| 
 |  | ||||||
| Init.init = function(opts) { |  | ||||||
|     //var Rc = require("@root/greenlock/rc");
 |  | ||||||
|     var Rc = require("./rc.js"); |  | ||||||
|     var pkgText; |  | ||||||
|     var pkgErr; |  | ||||||
|     var msgErr; |  | ||||||
|     //var emailErr;
 |  | ||||||
|     var realPkg; |  | ||||||
|     var userPkg; |  | ||||||
|     var myPkg = {}; |  | ||||||
|     // we want to be SUPER transparent that we're reading from package.json
 |  | ||||||
|     // we don't want anything unexpected
 |  | ||||||
|     var implicitConfig = []; |  | ||||||
| 
 |  | ||||||
|     if (opts.packageRoot) { |  | ||||||
|         try { |  | ||||||
|             pkgText = fs.readFileSync(path.resolve(opts.packageRoot, "package.json"), "utf8"); |  | ||||||
|         } catch (e) { |  | ||||||
|             pkgErr = e; |  | ||||||
|             console.warn("`packageRoot` should be the root of the package (probably `__dirname`)"); |  | ||||||
|         } |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     if (pkgText) { |  | ||||||
|         try { |  | ||||||
|             realPkg = JSON.parse(pkgText); |  | ||||||
|         } catch (e) { |  | ||||||
|             pkgErr = e; |  | ||||||
|         } |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     userPkg = opts.package; |  | ||||||
| 
 |  | ||||||
|     if (realPkg || userPkg) { |  | ||||||
|         userPkg = userPkg || {}; |  | ||||||
|         realPkg = realPkg || {}; |  | ||||||
| 
 |  | ||||||
|         // build package agent
 |  | ||||||
|         if (!opts.packageAgent) { |  | ||||||
|             // name
 |  | ||||||
|             myPkg.name = userPkg.name; |  | ||||||
|             if (!myPkg.name) { |  | ||||||
|                 myPkg.name = realPkg.name; |  | ||||||
|                 implicitConfig.push("name"); |  | ||||||
|             } |  | ||||||
| 
 |  | ||||||
|             // version
 |  | ||||||
|             myPkg.version = userPkg.version; |  | ||||||
|             if (!myPkg.version) { |  | ||||||
|                 myPkg.version = realPkg.version; |  | ||||||
|                 implicitConfig.push("version"); |  | ||||||
|             } |  | ||||||
|             if (myPkg.name && myPkg.version) { |  | ||||||
|                 opts.packageAgent = myPkg.name + "/" + myPkg.version; |  | ||||||
|             } |  | ||||||
|         } |  | ||||||
| 
 |  | ||||||
|         // build author
 |  | ||||||
|         myPkg.author = opts.maintainerEmail; |  | ||||||
|         if (!myPkg.author) { |  | ||||||
|             myPkg.author = (userPkg.author && userPkg.author.email) || userPkg.author; |  | ||||||
|         } |  | ||||||
|         if (!myPkg.author) { |  | ||||||
|             implicitConfig.push("author"); |  | ||||||
|             myPkg.author = (realPkg.author && realPkg.author.email) || realPkg.author; |  | ||||||
|         } |  | ||||||
|         opts.maintainerEmail = myPkg.author; |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     if (!opts.packageAgent) { |  | ||||||
|         msgErr = "missing `packageAgent` and also failed to read `name` and/or `version` from `package.json`"; |  | ||||||
|         if (pkgErr) { |  | ||||||
|             msgErr += ": " + pkgErr.message; |  | ||||||
|         } |  | ||||||
|         throw new Error(msgErr); |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     opts.maintainerEmail = parseMaintainer(opts.maintainerEmail); |  | ||||||
|     if (!opts.maintainerEmail) { |  | ||||||
|         msgErr = |  | ||||||
|             "missing or malformed `maintainerEmail` (or `author` from `package.json`), which is used as the contact for support notices"; |  | ||||||
|         throw new Error(msgErr); |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     opts.packageAgent = addGreenlockAgent(opts); |  | ||||||
| 
 |  | ||||||
|     if (opts.packageRoot) { |  | ||||||
|         // Place the rc file in the packageroot
 |  | ||||||
|         opts.configDir = Rc._initSync(opts.packageRoot, opts.configDir); |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     if (!opts.configDir) { |  | ||||||
|         throw new Error("missing `packageRoot` and `configDir`"); |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     // Place the rc file in the configDir itself
 |  | ||||||
|     //Rc._initSync(opts.configDir, opts.configDir);
 |  | ||||||
| }; |  | ||||||
| 
 |  | ||||||
| function addGreenlockAgent(opts) { |  | ||||||
|     // Add greenlock as part of Agent, unless this is greenlock
 |  | ||||||
|     var packageAgent = opts.packageAgent || ""; |  | ||||||
|     if (!/greenlock(-express|-pro)?/i.test(packageAgent)) { |  | ||||||
|         var pkg = require("./package.json"); |  | ||||||
|         packageAgent += " Greenlock_Express/" + pkg.version; |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     return packageAgent.trim(); |  | ||||||
| } |  | ||||||
| 
 |  | ||||||
| // ex: "John Doe <john@example.com> (https://john.doe)"
 |  | ||||||
| // ex: "John Doe <john@example.com>"
 |  | ||||||
| // ex: "<john@example.com>"
 |  | ||||||
| // ex: "john@example.com"
 |  | ||||||
| var looseEmailRe = /(^|[\s<])([^'" <>:;`]+@[^'" <>:;`]+\.[^'" <>:;`]+)/; |  | ||||||
| function parseMaintainer(maintainerEmail) { |  | ||||||
|     try { |  | ||||||
|         maintainerEmail = maintainerEmail.match(looseEmailRe)[2]; |  | ||||||
|     } catch (e) { |  | ||||||
|         maintainerEmail = null; |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     return maintainerEmail; |  | ||||||
| } |  | ||||||
							
								
								
									
										39
									
								
								rc.js
									
									
									
									
									
								
							
							
						
						
									
										39
									
								
								rc.js
									
									
									
									
									
								
							| @ -1,39 +0,0 @@ | |||||||
| "use strict"; |  | ||||||
| 
 |  | ||||||
| var Rc = module.exports; |  | ||||||
| var fs = require("fs"); |  | ||||||
| var path = require("path"); |  | ||||||
| 
 |  | ||||||
| Rc._initSync = function(dirname, configDir) { |  | ||||||
|     // dirname / opts.packageRoot
 |  | ||||||
|     var rcpath = path.resolve(dirname, ".greenlockrc"); |  | ||||||
|     var rc; |  | ||||||
| 
 |  | ||||||
|     try { |  | ||||||
|         rc = JSON.parse(fs.readFileSync(rcpath)); |  | ||||||
|     } catch (e) { |  | ||||||
|         if ("ENOENT" !== e.code) { |  | ||||||
|             throw e; |  | ||||||
|         } |  | ||||||
|         rc = {}; |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     if (!configDir) { |  | ||||||
|         configDir = rc.configDir; |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     if (configDir && configDir !== rc.configDir) { |  | ||||||
|         if (rc.configDir) { |  | ||||||
|             console.info("changing `configDir` from '%s' to '%s'", rc.configDir, configDir); |  | ||||||
|         } |  | ||||||
|         rc.configDir = configDir; |  | ||||||
|         /* if (!rc.manager) { rc.manager = "@greenlock/manager"; } */ |  | ||||||
|         fs.writeFileSync(rcpath, JSON.stringify(rc)); |  | ||||||
|     } else if (!rc.configDir) { |  | ||||||
|         configDir = path.resolve(dirname, "greenlock.d"); |  | ||||||
|         rc.configDir = configDir; |  | ||||||
|         fs.writeFileSync(rcpath, JSON.stringify(rc)); |  | ||||||
|     } |  | ||||||
| 
 |  | ||||||
|     return configDir; |  | ||||||
| }; |  | ||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user