diff --git a/LICENSE b/LICENSE index a7782bc..b9ef4d3 100644 --- a/LICENSE +++ b/LICENSE @@ -1,21 +1,41 @@ +Copyright 2017 AJ ONeal + +This is open source software; you can redistribute it and/or modify it under the +terms of either: + + a) the "MIT License" + b) the "Apache-2.0 License" + MIT License -Copyright (c) 2016 Daplie, Inc + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE. -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE -SOFTWARE. +Apache-2.0 License Summary + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/README.md b/README.md index 0352e81..62bb8c4 100644 --- a/README.md +++ b/README.md @@ -270,7 +270,7 @@ It looks a little more like this: 'use strict'; // returns an instance of greenlock.js with additional helper methods -var lex = require('greenlock-express').create({ +var glx = require('greenlock-express').create({ server: 'https://acme-v02.api.letsencrypt.org/directory' // Note: If at first you don't succeed, stop and switch to staging: // https://acme-staging-v02.api.letsencrypt.org/directory @@ -322,7 +322,7 @@ function approveDomains(opts, certs, cb) { ```javascript // handles acme-challenge and redirects to https -require('http').createServer(lex.middleware(require('redirect-https')())).listen(80, function () { +require('http').createServer(glx.middleware(require('redirect-https')())).listen(80, function () { console.log("Listening for ACME http-01 challenges on", this.address()); }); @@ -334,7 +334,7 @@ app.use('/', function (req, res) { }); // handles your app -require('https').createServer(lex.httpsOptions, app).listen(443, function () { +require('https').createServer(glx.httpsOptions, app).listen(443, function () { console.log("Listening for ACME tls-sni-01 challenges and serve app on", this.address()); }); ``` @@ -357,7 +357,7 @@ The API is actually located at [greenlock.js options](https://git.coolaj86.com/c The only "API" consists of two options, the rest is just a wrapper around `greenlock.js` to take LOC from 15 to 5: * `opts.app` An express app in the format `function (req, res) { ... }` (no `next`). -* `lex.listen(plainPort, tlsPort)` Accepts port numbers (or arrays of port numbers) to listen on. +* `glx.listen(plainPort, tlsPort)` Accepts port numbers (or arrays of port numbers) to listen on. Brief overview of some simple options for `greenlock.js`: diff --git a/lex.js b/glx.js similarity index 81% rename from lex.js rename to glx.js index d3211e9..dc60e7d 100644 --- a/lex.js +++ b/glx.js @@ -2,9 +2,9 @@ // opts.approveDomains(options, certs, cb) module.exports.create = function (opts) { - // accept all defaults for le.challenges, le.store, le.middleware + // accept all defaults for greenlock.challenges, greenlock.store, greenlock.middleware opts._communityPackage = opts._communityPackage || 'greenlock-express.js'; - var le = require('greenlock').create(opts); + var greenlock = require('greenlock').create(opts); opts.app = opts.app || function (req, res) { res.end("Hello, World!\nWith Love,\nGreenlock for Express.js"); @@ -54,7 +54,7 @@ module.exports.create = function (opts) { plainPorts.forEach(function (p) { if (!(parseInt(p, 10) >= 0)) { console.warn("'" + p + "' doesn't seem to be a valid port number for http"); } promises.push(new PromiseA(function (resolve) { - require('http').createServer(le.middleware(require('redirect-https')())).listen(p, function () { + require('http').createServer(greenlock.middleware(require('redirect-https')())).listen(p, function () { console.log("Success! Bound to port '" + p + "' to handle ACME challenges and redirect to https"); resolve(); }).on('error', function (e) { @@ -68,7 +68,14 @@ module.exports.create = function (opts) { ports.forEach(function (p) { if (!(parseInt(p, 10) >= 0)) { console.warn("'" + p + "' doesn't seem to be a valid port number for https"); } promises.push(new PromiseA(function (resolve) { - var server = require('https').createServer(le.tlsOptions, le.middleware(le.app)).listen(p, function () { + var https; + try { + https = require('spdy'); + greenlock.tlsOptions.spdy = { protocols: [ 'h2', 'http/1.1' ], plain: false }; + } catch(e) { + https = require('https'); + } + var server = https.createServer(greenlock.tlsOptions, greenlock.middleware(greenlock.app)).listen(p, function () { console.log("Success! Serving https on port '" + p + "'"); resolve(); }).on('error', function (e) { @@ -88,5 +95,5 @@ module.exports.create = function (opts) { }; - return le; + return greenlock; }; diff --git a/package.json b/package.json index 2a2c55b..7c2f84b 100644 --- a/package.json +++ b/package.json @@ -1,14 +1,13 @@ { "name": "greenlock-express", - "version": "2.1.5", + "version": "2.1.6", "description": "Free SSL and managed or automatic HTTPS for node.js with Express, Koa, Connect, Hapi, and all other middleware systems.", - "main": "lex.js", + "main": "glx.js", "homepage": "https://git.coolaj86.com/coolaj86/greenlock-express.js", "directories": { "example": "examples" }, "dependencies": { - "acme-v2": "^1.0.7", "greenlock": "^2.2.16", "le-challenge-fs": "^2.0.8", "le-sni-auto": "^2.1.4",