From 7073ce49391a761c8a2768ea19f23b5ebba46f9a Mon Sep 17 00:00:00 2001 From: markus Date: Fri, 8 Jan 2016 15:35:49 +0000 Subject: [PATCH] Added example on how to use with koa. --- README.md | 50 +++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 45 insertions(+), 5 deletions(-) diff --git a/README.md b/README.md index 922feb1..d1d31cc 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # LetsEncrypt Express -Free SSL and managed or automatic HTTPS for node.js with Express, Connect, and other middleware systems. +Free SSL and managed or automatic HTTPS for node.js with Express, Koa, Connect, and other middleware systems. ## Install @@ -105,20 +105,20 @@ app.use('/', function (req, res) { lex.create({ configDir: './letsencrypt.config' // ~/letsencrypt, /etc/letsencrypt, whatever you want - + , onRequest: app // your express app (or plain node http app) , letsencrypt: null // you can provide you own instance of letsencrypt // if you need to configure it (with an agreeToTerms // callback, for example) - + , approveRegistration: function (hostname, cb) { // PRODUCTION MODE needs this function, but only if you want // automatic registration (usually not necessary) // renewals for registered domains will still be automatic cb(null, { domains: [hostname] , email: 'user@example.com' - , agreeTos: true // you + , agreeTos: true // you }); } }).listen([80], [443, 5001], function () { @@ -126,6 +126,46 @@ lex.create({ }); ``` +### Using with Koa + +```javascript +'use strict'; + +// Note: using staging server url, remove .testing() for production +var lex = require('letsencrypt-express').testing(); +var koa = require('koa'); +var app = koa(); + + +app.use(function *(){ + this.body = 'Hello World'; +}); + +lex.create({ + configDir: './letsencrypt.config' // ~/letsencrypt, /etc/letsencrypt, whatever you want + +, onRequest: app.callback() // your koa app callback + +, letsencrypt: null // you can provide you own instance of letsencrypt + // if you need to configure it (with an agreeToTerms + // callback, for example) + +, approveRegistration: function (hostname, cb) { // PRODUCTION MODE needs this function, but only if you want + // automatic registration (usually not necessary) + // renewals for registered domains will still be automatic + cb(null, { + domains: [hostname] + , email: 'user@example.com' + , agreeTos: true // you + }); + } +}).listen([], [4443], function () { + var server = this; + var protocol = ('requestCert' in server) ? 'https': 'http'; + console.log("Listening at " + protocol + '://localhost:' + this.address().port); +}); +``` + ### More Options Exposed ```javascript @@ -180,7 +220,7 @@ function onConnection(ws) { var location = url.parse(ws.upgradeReq.url, true); // you might use location.query.access_token to authenticate or share sessions // or ws.upgradeReq.headers.cookie (see http://stackoverflow.com/a/16395220/151312) - + ws.on('message', function incoming(message) { console.log('received: %s', message); });