"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;
}