|
1 | 1 | // server
|
2 | 2 | // /app/routes.js
|
3 |
| -const createDebug = require("debug") |
4 |
| -const debug = createDebug("webssh2:routes") |
5 |
| -const express = require("express") |
| 3 | +const createDebug = require('debug') |
| 4 | +const debug = createDebug('webssh2:routes') |
| 5 | +const express = require('express') |
6 | 6 | const router = express.Router()
|
7 |
| -const handleConnection = require("./connectionHandler") |
8 |
| -const basicAuth = require("basic-auth") |
| 7 | +const handleConnection = require('./connectionHandler') |
| 8 | +const basicAuth = require('basic-auth') |
9 | 9 |
|
10 | 10 | function auth(req, res, next) {
|
11 |
| - debug("Authenticating user with HTTP Basic Auth") |
| 11 | + debug('Authenticating user with HTTP Basic Auth') |
12 | 12 | var credentials = basicAuth(req)
|
13 | 13 | if (!credentials) {
|
14 |
| - res.setHeader("WWW-Authenticate", 'Basic realm="WebSSH2"') |
15 |
| - return res.status(401).send("Authentication required.") |
| 14 | + res.setHeader('WWW-Authenticate', 'Basic realm="WebSSH2"') |
| 15 | + return res.status(401).send('Authentication required.') |
16 | 16 | }
|
17 | 17 | // Store credentials in session
|
18 |
| - req.session.sshCredentials = credentials |
| 18 | + req.session.sshCredentials = { |
| 19 | + username: credentials.name, |
| 20 | + password: credentials.pass |
| 21 | + } |
19 | 22 | next()
|
20 | 23 | }
|
21 | 24 |
|
22 | 25 | // Scenario 1: No auth required, uses websocket authentication instead
|
23 |
| -router.get("/", function (req, res) { |
24 |
| - debug("Accessed /ssh route") |
| 26 | +router.get('/', function (req, res) { |
| 27 | + debug('Accessed / route') |
25 | 28 | handleConnection(req, res)
|
26 | 29 | })
|
27 | 30 |
|
28 | 31 | // Scenario 2: Auth required, uses HTTP Basic Auth
|
29 |
| -router.get("/host/:host", auth, function (req, res) { |
| 32 | +router.get('/host/:host', auth, function (req, res) { |
30 | 33 | debug(`Accessed /ssh/host/${req.params.host} route`)
|
31 | 34 | handleConnection(req, res, { host: req.params.host })
|
32 | 35 | })
|
33 | 36 |
|
| 37 | +// Clear credentials route |
| 38 | +router.post('/clear-credentials', function (req, res) { |
| 39 | + req.session.sshCredentials = null |
| 40 | + res.status(200).send('Credentials cleared.') |
| 41 | +}) |
| 42 | + |
| 43 | +router.post("/force-reconnect", function (req, res) { |
| 44 | + req.session.sshCredentials = null; |
| 45 | + res.status(401).send("Authentication required."); |
| 46 | +}); |
| 47 | + |
34 | 48 | module.exports = router
|
0 commit comments