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