
* feat: upgrade to socket.io 4.1.1 #242 * chore: lint ./app/client/src/js/index.js #242 * chore: eslint disable global Blob warning #242 * chore: lint ./app/index.js #242 * chore: lint ./app/server/app.js #242 * chore: setup eslint and airbnb rules disable standard #242 * Delete package-lock-old.json * chore: lint ./app/index.js #242 * feat: implement alpine docker image from #213 * chore: lint ./app/server/app.js still TODO for stop function #242 * chore: lint ./app/server/util.js #242 * chore: lint ./app/server/app.js reorg socket and safe shutdown * chore: grammar / spelling * chore: fix some misplaced next returns in some Express routes #242 * chore: lint ./app/server/socket.js #242 * chore: bump version in ./app/package.json #242 * docs: update docs for 0.4.0 #242 * chore: update package-lock.json * chore: install Prettier code linter #242 * chore: linting for Prettier #242 * chore: lint ./app/client/src/js/index.js #242 * chore: client linting #242 * Update package-lock.json * chore: repackage wbssh2 bundle for testing #242 * chore: convert ./app/client/src/js/index.js to typescript #242 * chore: remove html rendering from node * Update tsconfig.json * Update tsconfig.json * Delete index.js * Update ChangeLog.md * chore: config for development container #242 * Update BUILDING.md * feat: pull in #234 staged for 0.4.0 #242 * docs: update changelog * update package.json * chore: split config from app/server/app.js #242 * chore: version bump * chore: consistency * feat: overridebasic fixes #243 included for #242 * chore: remove serverlog code * docs: update changelog
54 lines
1.8 KiB
JavaScript
54 lines
1.8 KiB
JavaScript
/* jshint esversion: 6, asi: true, node: true */
|
|
// util.js
|
|
|
|
// private
|
|
require('colors'); // allow for color property extensions in log messages
|
|
const debug = require('debug')('WebSSH2');
|
|
const Auth = require('basic-auth');
|
|
|
|
const defaultCredentials = { username: null, password: null, privatekey: null };
|
|
|
|
exports.setDefaultCredentials = function setDefaultCredentials(
|
|
username,
|
|
password,
|
|
privatekey,
|
|
overridebasic
|
|
) {
|
|
defaultCredentials.username = username;
|
|
defaultCredentials.password = password;
|
|
defaultCredentials.privatekey = privatekey;
|
|
defaultCredentials.overridebasic = overridebasic;
|
|
};
|
|
|
|
exports.basicAuth = function basicAuth(req, res, next) {
|
|
const myAuth = Auth(req);
|
|
// If Authorize: Basic header exists and the password isn't blank
|
|
// AND config.user.overridebasic is false, extract basic credentials
|
|
// from client
|
|
if (myAuth && myAuth.pass !== '' && !defaultCredentials.overridebasic) {
|
|
req.session.username = myAuth.name;
|
|
req.session.userpassword = myAuth.pass;
|
|
debug(
|
|
`myAuth.name: ${myAuth.name.yellow.bold.underline} and password ${
|
|
myAuth.pass ? 'exists'.yellow.bold.underline : 'is blank'.underline.red.bold
|
|
}`
|
|
);
|
|
} else {
|
|
req.session.username = defaultCredentials.username;
|
|
req.session.userpassword = defaultCredentials.password;
|
|
req.session.privatekey = defaultCredentials.privatekey;
|
|
}
|
|
if (!req.session.userpassword && !req.session.privatekey) {
|
|
res.statusCode = 401;
|
|
debug('basicAuth credential request (401)');
|
|
res.setHeader('WWW-Authenticate', 'Basic realm="WebSSH"');
|
|
res.end('Username and password required for web SSH service.');
|
|
return;
|
|
}
|
|
next();
|
|
};
|
|
|
|
// takes a string, makes it boolean (true if the string is true, false otherwise)
|
|
exports.parseBool = function parseBool(str) {
|
|
return str.toLowerCase() === 'true';
|
|
};
|