// server // /app/routes.js const createDebug = require("debug") const debug = createDebug("webssh2:routes") const express = require("express") const router = express.Router() const handleConnection = require("./connectionHandler") const basicAuth = require("basic-auth") function auth(req, res, next) { debug("Authenticating user with HTTP Basic Auth") var credentials = basicAuth(req) if (!credentials) { res.setHeader("WWW-Authenticate", 'Basic realm="WebSSH2"') return res.status(401).send("Authentication required.") } // Store credentials in session req.session.sshCredentials = credentials next() } // Scenario 1: No auth required, uses websocket authentication instead router.get("/", function (req, res) { debug("Accessed /ssh route") handleConnection(req, res) }) // Scenario 2: Auth required, uses HTTP Basic Auth router.get("/host/:host", auth, function (req, res) { debug(`Accessed /ssh/host/${req.params.host} route`) handleConnection(req, res, { host: req.params.host }) }) module.exports = router