"use strict"; // // WARNING: Not for noobs // Try the simple example first // // // This demo is used with tunnel-server.js and tunnel-client.js // var email = "john.doe@gmail.com"; var domains = ["example.com"]; var agreeLeTos = true; //var secret = "My Little Brony"; var secret = require("crypto") .randomBytes(16) .toString("hex"); require("../") .create({ version: "draft-11", 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 email: email, agreeTos: agreeLeTos, approveDomains: domains, configDir: "~/.config/acme/", app: remoteAccess(secret), // Get notified of important updates and help me make greenlock better communityMember: true //, debug: true }) .listen(3000, 8443); function remoteAccess(secret) { var express = require("express"); var basicAuth = require("express-basic-auth"); var serveIndex = require("serve-index"); var rootIndex = serveIndex("/", { hidden: true, icons: true, view: "details" }); var rootFs = express.static("/", { dotfiles: "allow", redirect: true, index: false }); var userIndex = serveIndex(require("os").homedir(), { hidden: true, icons: true, view: "details" }); var userFs = express.static(require("os").homedir(), { dotfiles: "allow", redirect: true, index: false }); var app = express(); var realm = "Login Required"; var myAuth = basicAuth({ users: { root: secret, user: secret }, challenge: true, realm: realm, unauthorizedResponse: function(/*req*/) { return 'Unauthorized Home'; } }); app.get("/", function(req, res) { res.setHeader("Content-Type", "text/html; charset=utf-8"); res.end('View Files' + "  |  " + 'Logout'); }); app.use("/logout", function(req, res) { res.setHeader("Content-Type", "text/html; charset=utf-8"); res.setHeader("WWW-Authenticate", 'Basic realm="' + realm + '"'); res.statusCode = 401; //res.setHeader('Location', '/'); res.end('Logged out   |   Home'); }); app.use("/browse", myAuth); app.use("/browse", function(req, res, next) { if ("root" === req.auth.user) { rootFs(req, res, function() { rootIndex(req, res, next); }); return; } if ("user" === req.auth.user) { userFs(req, res, function() { userIndex(req, res, next); }); return; } res.end("Sad Panda"); }); console.log(""); console.log(""); console.log("Usernames are\n"); console.log("\troot"); console.log("\tuser"); console.log(""); console.log("Password (for both) is\n"); console.log("\t" + secret); console.log(""); console.log("Shhhh... It's a secret to everybody!"); console.log(""); console.log(""); return app; }