fix reauth option, move files into /app, update dockerfile, update packages

- `config.reauth` was not respected if initial auth presented was incorrect, regardless of `reauth` setting in `config.json` reauth would always be attempted. fixes #117
- **BREAKING** moved app files to /app, this may be a breaking change
- Updated dockerfile for new app path
- Updated app dependancies
  - xterm v3.8.0
    - https://github.com/xtermjs/xterm.js/releases/tag/3.8.0
  - basic-auth v2.0.1
    - https://github.com/jshttp/basic-auth/releases/tag/v2.0.1
  - express v4.16.4
    - https://github.com/expressjs/express/releases/tag/4.16.4
  - validator v10.9.0
    - https://github.com/chriso/validator.js/releases/tag/10.9.0
- Updated dev dependancies
  - snazzy v8.0.0
  - standard v12.0.1
  - uglifyjs-webpack-plugin v2.0.1
  - ajv v6.5.5
  - copy-webpack-plugin v4.6.0
  - css-loader v1.0.1
  - nodemon v1.18.6
  - postcss-discard-comments v4.0.1
  - snyk v1.108.2
  - url-loader v1.1.2
  - webpack v4.25.1
  - webpack-cli v3.1.2
This commit is contained in:
Bill Church 2018-11-11 10:07:37 -05:00
parent 1d09fa22ef
commit 395904d5a2
31 changed files with 144 additions and 69 deletions

View file

@ -1,8 +1,44 @@
# Change Log # Change Log
## [0.2.5] 20180911 ## [0.2.7] 2018-11-11
### Changes
- `config.reauth` was not respected if initial auth presented was incorrect, regardless of `reauth` setting in `config.json` reauth would always be attempted. fixes [#117](../../issues/117)
- **BREAKING** moved app files to /app, this may be a breaking change
- Updated dockerfile for new app path
- Updated app dependancies
- xterm v3.8.0
- https://github.com/xtermjs/xterm.js/releases/tag/3.8.0
- basic-auth v2.0.1
- https://github.com/jshttp/basic-auth/releases/tag/v2.0.1
- express v4.16.4
- https://github.com/expressjs/express/releases/tag/4.16.4
- validator v10.9.0
- https://github.com/chriso/validator.js/releases/tag/10.9.0
- Updated dev dependancies
- snazzy v8.0.0
- standard v12.0.1
- uglifyjs-webpack-plugin v2.0.1
- ajv v6.5.5
- copy-webpack-plugin v4.6.0
- css-loader v1.0.1
- nodemon v1.18.6
- postcss-discard-comments v4.0.1
- snyk v1.108.2
- url-loader v1.1.2
- webpack v4.25.1
- webpack-cli v3.1.2
## [0.2.6] 2018-11-09
### Changes
- Reauth didn't work if intial auth presented was incorrect, (see issue #112) fixed thanks @vvalchev
- Update node version supported to >=6 (PR #115) thanks @perlun
- Update packages
- developer dependencies
## [0.2.5] 2018-09-11
### Added ### Added
- Reauth function thanks to @vbeskrovny and @vvalchev (9bbc116) - Reauth function thanks to @vbeskrovny and @vvalchev (9bbc116)
- Controlled by `config.json` option `options.allowreauth` true presents reauth dialog and false hides dialog - Controlled by `config.json` option `options.allowreauth` true presents reauth dialog and false hides dialog
### Changed ### Changed
- `options.challengeButton` enabled - `options.challengeButton` enabled
- previously this configuration option did nothing, this now enables the Credentials button site-wide regardless of the `allowreplay` header value - previously this configuration option did nothing, this now enables the Credentials button site-wide regardless of the `allowreplay` header value

View file

@ -1,7 +1,7 @@
FROM node:8.6 FROM node:8.6
WORKDIR /usr/src WORKDIR /usr/src
COPY . /usr/src COPY app/ /usr/src/
RUN npm install --production RUN npm install --production
EXPOSE 2222 EXPOSE 2222
CMD npm start CMD npm run start

View file

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

File diff suppressed because one or more lines are too long

View file

Before

Width:  |  Height:  |  Size: 15 KiB

After

Width:  |  Height:  |  Size: 15 KiB

View file

@ -156,7 +156,9 @@ socket.on('error', function (err) {
} }
}) })
socket.on('reauth',reauthSession) socket.on('reauth', function () {
(allowreauth) && reauthSession()
})
term.on('title', function (title) { term.on('title', function (title) {
document.title = title document.title = title

View file

@ -1,6 +1,6 @@
{ {
"name": "webssh2", "name": "webssh2",
"version": "0.2.6", "version": "0.2.7",
"ignore": [ "ignore": [
".gitignore" ".gitignore"
], ],
@ -27,17 +27,17 @@
"url": "https://github.com/billchurch/WebSSH2/issues" "url": "https://github.com/billchurch/WebSSH2/issues"
}, },
"dependencies": { "dependencies": {
"basic-auth": "^2.0.0", "basic-auth": "^2.0.1",
"colors": "^1.3.1", "colors": "^1.3.2",
"compression": "^1.7.3", "compression": "^1.7.3",
"debug": "^4.0.0", "debug": "^4.1.0",
"express": "^4.16.3", "express": "^4.16.4",
"express-session": "^1.15.6", "express-session": "^1.15.6",
"morgan": "^1.9.0", "morgan": "^1.9.1",
"read-config": "^2.0.0", "read-config": "^2.0.0",
"socket.io": "^2.1.1", "socket.io": "^2.1.1",
"ssh2": "^0.6.1", "ssh2": "^0.6.1",
"validator": "^10.5.0" "validator": "^10.9.0"
}, },
"scripts": { "scripts": {
"start": "node index.js", "start": "node index.js",
@ -52,26 +52,26 @@
"devDependencies": { "devDependencies": {
"@fortawesome/fontawesome": "^1.1.8", "@fortawesome/fontawesome": "^1.1.8",
"@fortawesome/fontawesome-free-solid": "^5.0.13", "@fortawesome/fontawesome-free-solid": "^5.0.13",
"ajv": "^6.5.2", "ajv": "^6.5.5",
"bithound": "^1.7.0", "bithound": "^1.7.0",
"clean-webpack-plugin": "^0.1.19", "clean-webpack-plugin": "^0.1.19",
"copy-webpack-plugin": "^4.5.2", "copy-webpack-plugin": "^4.6.0",
"css-loader": "^1.0.0", "css-loader": "^1.0.1",
"extract-text-webpack-plugin": "^4.0.0-beta.0", "extract-text-webpack-plugin": "^4.0.0-beta.0",
"file-loader": "^2.0.0", "file-loader": "^2.0.0",
"nodemon": "^1.18.3", "nodemon": "^1.18.6",
"postcss-discard-comments": "^4.0.0", "postcss-discard-comments": "^4.0.1",
"snazzy": "^7.1.1", "snazzy": "^8.0.0",
"snyk": "^1.108.0", "snyk": "^1.108.2",
"standard": "^11.0.1", "standard": "^12.0.1",
"style-loader": "^0.23.1", "style-loader": "^0.23.1",
"uglifyjs-webpack-plugin": "^1.2.7", "uglifyjs-webpack-plugin": "^2.0.1",
"url-loader": "^1.0.1", "url-loader": "^1.1.2",
"webpack": "^4.16.5", "webpack": "^4.25.1",
"webpack-cli": "^3.1.0", "webpack-cli": "^3.1.2",
"webpack-merge": "^4.1.4", "webpack-merge": "^4.1.4",
"webpack-stream": "^5.1.0", "webpack-stream": "^5.1.1",
"xterm": "^3.5.1" "xterm": "^3.8.0"
}, },
"standard": { "standard": {
"ignore": [ "ignore": [

View file

@ -34,8 +34,9 @@ module.exports = function socket (socket) {
conn.on('ready', function connOnReady () { conn.on('ready', function connOnReady () {
console.log('WebSSH2 Login: user=' + socket.request.session.username + ' from=' + socket.handshake.address + ' host=' + socket.request.session.ssh.host + ' port=' + socket.request.session.ssh.port + ' sessionID=' + socket.request.sessionID + '/' + socket.id + ' mrhsession=' + socket.request.session.ssh.mrhsession + ' allowreplay=' + socket.request.session.ssh.allowreplay + ' term=' + socket.request.session.ssh.term) console.log('WebSSH2 Login: user=' + socket.request.session.username + ' from=' + socket.handshake.address + ' host=' + socket.request.session.ssh.host + ' port=' + socket.request.session.ssh.port + ' sessionID=' + socket.request.sessionID + '/' + socket.id + ' mrhsession=' + socket.request.session.ssh.mrhsession + ' allowreplay=' + socket.request.session.ssh.allowreplay + ' term=' + socket.request.session.ssh.term)
socket.emit('setTerminalOpts', socket.request.session.ssh.terminal)
socket.emit('menu', menuData) socket.emit('menu', menuData)
socket.emit('allowreauth', socket.request.session.ssh.allowreauth)
socket.emit('setTerminalOpts', socket.request.session.ssh.terminal)
socket.emit('title', 'ssh://' + socket.request.session.ssh.host) socket.emit('title', 'ssh://' + socket.request.session.ssh.host)
if (socket.request.session.ssh.header.background) socket.emit('headerBackground', socket.request.session.ssh.header.background) if (socket.request.session.ssh.header.background) socket.emit('headerBackground', socket.request.session.ssh.header.background)
if (socket.request.session.ssh.header.name) socket.emit('header', socket.request.session.ssh.header.name) if (socket.request.session.ssh.header.name) socket.emit('header', socket.request.session.ssh.header.name)
@ -43,7 +44,6 @@ module.exports = function socket (socket) {
socket.emit('status', 'SSH CONNECTION ESTABLISHED') socket.emit('status', 'SSH CONNECTION ESTABLISHED')
socket.emit('statusBackground', 'green') socket.emit('statusBackground', 'green')
socket.emit('allowreplay', socket.request.session.ssh.allowreplay) socket.emit('allowreplay', socket.request.session.ssh.allowreplay)
socket.emit('allowreauth', socket.request.session.ssh.allowreauth)
conn.shell({ conn.shell({
term: socket.request.session.ssh.term, term: socket.request.session.ssh.term,
cols: termCols, cols: termCols,
@ -152,7 +152,7 @@ module.exports = function socket (socket) {
console.log('WebSSH2 ' + 'error: Authentication failure'.red.bold + console.log('WebSSH2 ' + 'error: Authentication failure'.red.bold +
' user=' + socket.request.session.username.yellow.bold.underline + ' user=' + socket.request.session.username.yellow.bold.underline +
' from=' + socket.handshake.address.yellow.bold.underline) ' from=' + socket.handshake.address.yellow.bold.underline)
socket.emit('allowreauth', socket.request.session.ssh.allowreauth)
socket.emit('reauth') socket.emit('reauth')
} else { } else {
console.log('WebSSH2 Logout: user=' + socket.request.session.username + ' from=' + socket.handshake.address + ' host=' + socket.request.session.ssh.host + ' port=' + socket.request.session.ssh.port + ' sessionID=' + socket.request.sessionID + '/' + socket.id + ' allowreplay=' + socket.request.session.ssh.allowreplay + ' term=' + socket.request.session.ssh.term) console.log('WebSSH2 Logout: user=' + socket.request.session.username + ' from=' + socket.handshake.address + ' host=' + socket.request.session.ssh.host + ' port=' + socket.request.session.ssh.port + ' sessionID=' + socket.request.sessionID + '/' + socket.id + ' allowreplay=' + socket.request.session.ssh.allowreplay + ' term=' + socket.request.session.ssh.term)

View file

@ -1,10 +1,7 @@
#!/bin/bash #!/bin/bash
## Syncs from BIG-IP and builds a release based on version in extensions/ephemeral_auth/package.json ## Syncs from BIG-IP and builds a release based on version in extensions/ephemeral_auth/package.json
ilxhost=root@192.168.30.216 source env.sh
workspace_name=webssh2
package_name=BIG-IP-13.1.0.8-ILX-WebSSH2
pua_location=/Users/bill/Documents/GitHub/f5-pua/bin
which jq which jq
if [[ $? -ne 0 ]]; then if [[ $? -ne 0 ]]; then

File diff suppressed because one or more lines are too long

6
env.sh Executable file
View file

@ -0,0 +1,6 @@
#!/bin/sh
ilxhost=root@192.168.30.209
workspace_name=webssh2
package_name=BIG-IP-13.1.0.8-ILX-WebSSH2
pua_location=../f5-pua/bin

View file

@ -1,9 +1,7 @@
#!/bin/bash #!/bin/bash
ilxhost=root@192.168.30.216
workspace_name=webssh2 source env.sh
package_name=BIG-IP-13.1.0.8-ILX-WebSSH2
pua_location=/Users/bill/Documents/GitHub/f5-pua/bin
echo 'hello'
rsync -e 'ssh -ax' -av --delete --exclude='.DS_Store' --exclude extensions/$workspace_name/node_modules workspace/. $ilxhost:/var/ilx/workspaces/Common/$workspace_name/. rsync -e 'ssh -ax' -av --delete --exclude='.DS_Store' --exclude extensions/$workspace_name/node_modules workspace/. $ilxhost:/var/ilx/workspaces/Common/$workspace_name/.
ssh $ilxhost chown -R root.sdm /var/ilx/workspaces/Common/$workspace_name/ ssh $ilxhost chown -R root.sdm /var/ilx/workspaces/Common/$workspace_name/

View file

@ -1,7 +1,5 @@
#!/bin/bash #!/bin/bash
ilxhost=root@192.168.30.216
workspace_name=webssh2 source env.sh
package_name=BIG-IP-13.1.0.8-ILX-WebSSH2
pua_location=/Users/bill/Documents/GitHub/f5-pua/bin
rsync -e 'ssh -ax' -av --exclude extensions/$workspace_name/node_modules $ilxhost:/var/ilx/workspaces/Common/$workspace_name/. workspace/. rsync -e 'ssh -ax' -av --exclude extensions/$workspace_name/node_modules $ilxhost:/var/ilx/workspaces/Common/$workspace_name/. workspace/.

View file

@ -1,8 +1,44 @@
# Change Log # Change Log
## [0.2.5] 20180911 ## [0.2.7] 2018-11-11
### Changes
- `config.reauth` was not respected if initial auth presented was incorrect, regardless of `reauth` setting in `config.json` reauth would always be attempted. fixes [#117](../../issues/117)
- **BREAKING** moved app files to /app, this may be a breaking change
- Updated dockerfile for new app path
- Updated app dependancies
- xterm v3.8.0
- https://github.com/xtermjs/xterm.js/releases/tag/3.8.0
- basic-auth v2.0.1
- https://github.com/jshttp/basic-auth/releases/tag/v2.0.1
- express v4.16.4
- https://github.com/expressjs/express/releases/tag/4.16.4
- validator v10.9.0
- https://github.com/chriso/validator.js/releases/tag/10.9.0
- Updated dev dependancies
- snazzy v8.0.0
- standard v12.0.1
- uglifyjs-webpack-plugin v2.0.1
- ajv v6.5.5
- copy-webpack-plugin v4.6.0
- css-loader v1.0.1
- nodemon v1.18.6
- postcss-discard-comments v4.0.1
- snyk v1.108.2
- url-loader v1.1.2
- webpack v4.25.1
- webpack-cli v3.1.2
## [0.2.6] 2018-11-09
### Changes
- Reauth didn't work if intial auth presented was incorrect, (see issue #112) fixed thanks @vvalchev
- Update node version supported to >=6 (PR #115) thanks @perlun
- Update packages
- developer dependencies
## [0.2.5] 2018-09-11
### Added ### Added
- Reauth function thanks to @vbeskrovny and @vvalchev (9bbc116) - Reauth function thanks to @vbeskrovny and @vvalchev (9bbc116)
- Controlled by `config.json` option `options.allowreauth` true presents reauth dialog and false hides dialog - Controlled by `config.json` option `options.allowreauth` true presents reauth dialog and false hides dialog
### Changed ### Changed
- `options.challengeButton` enabled - `options.challengeButton` enabled
- previously this configuration option did nothing, this now enables the Credentials button site-wide regardless of the `allowreplay` header value - previously this configuration option did nothing, this now enables the Credentials button site-wide regardless of the `allowreplay` header value

File diff suppressed because one or more lines are too long

View file

@ -156,7 +156,9 @@ socket.on('error', function (err) {
} }
}) })
socket.on('reauth',reauthSession) socket.on('reauth', function () {
(allowreauth) && reauthSession()
})
term.on('title', function (title) { term.on('title', function (title) {
document.title = title document.title = title

View file

@ -1,6 +1,6 @@
{ {
"name": "webssh2", "name": "webssh2",
"version": "0.2.6", "version": "0.2.7",
"ignore": [ "ignore": [
".gitignore" ".gitignore"
], ],
@ -27,17 +27,17 @@
"url": "https://github.com/billchurch/WebSSH2/issues" "url": "https://github.com/billchurch/WebSSH2/issues"
}, },
"dependencies": { "dependencies": {
"basic-auth": "^2.0.0", "basic-auth": "^2.0.1",
"colors": "^1.3.1", "colors": "^1.3.2",
"compression": "^1.7.3", "compression": "^1.7.3",
"debug": "^4.0.0", "debug": "^4.1.0",
"express": "^4.16.3", "express": "^4.16.4",
"express-session": "^1.15.6", "express-session": "^1.15.6",
"morgan": "^1.9.0", "morgan": "^1.9.1",
"read-config": "^2.0.0", "read-config": "^2.0.0",
"socket.io": "^2.1.1", "socket.io": "^2.1.1",
"ssh2": "^0.6.1", "ssh2": "^0.6.1",
"validator": "^10.5.0" "validator": "^10.9.0"
}, },
"scripts": { "scripts": {
"start": "node index.js", "start": "node index.js",
@ -52,26 +52,26 @@
"devDependencies": { "devDependencies": {
"@fortawesome/fontawesome": "^1.1.8", "@fortawesome/fontawesome": "^1.1.8",
"@fortawesome/fontawesome-free-solid": "^5.0.13", "@fortawesome/fontawesome-free-solid": "^5.0.13",
"ajv": "^6.5.2", "ajv": "^6.5.5",
"bithound": "^1.7.0", "bithound": "^1.7.0",
"clean-webpack-plugin": "^0.1.19", "clean-webpack-plugin": "^0.1.19",
"copy-webpack-plugin": "^4.5.2", "copy-webpack-plugin": "^4.6.0",
"css-loader": "^1.0.0", "css-loader": "^1.0.1",
"extract-text-webpack-plugin": "^4.0.0-beta.0", "extract-text-webpack-plugin": "^4.0.0-beta.0",
"file-loader": "^2.0.0", "file-loader": "^2.0.0",
"nodemon": "^1.18.3", "nodemon": "^1.18.6",
"postcss-discard-comments": "^4.0.0", "postcss-discard-comments": "^4.0.1",
"snazzy": "^7.1.1", "snazzy": "^8.0.0",
"snyk": "^1.108.0", "snyk": "^1.108.2",
"standard": "^11.0.1", "standard": "^12.0.1",
"style-loader": "^0.23.1", "style-loader": "^0.23.1",
"uglifyjs-webpack-plugin": "^1.2.7", "uglifyjs-webpack-plugin": "^2.0.1",
"url-loader": "^1.0.1", "url-loader": "^1.1.2",
"webpack": "^4.16.5", "webpack": "^4.25.1",
"webpack-cli": "^3.1.0", "webpack-cli": "^3.1.2",
"webpack-merge": "^4.1.4", "webpack-merge": "^4.1.4",
"webpack-stream": "^5.1.0", "webpack-stream": "^5.1.1",
"xterm": "^3.5.1" "xterm": "^3.8.0"
}, },
"standard": { "standard": {
"ignore": [ "ignore": [

View file

@ -34,8 +34,9 @@ module.exports = function socket (socket) {
conn.on('ready', function connOnReady () { conn.on('ready', function connOnReady () {
console.log('WebSSH2 Login: user=' + socket.request.session.username + ' from=' + socket.handshake.address + ' host=' + socket.request.session.ssh.host + ' port=' + socket.request.session.ssh.port + ' sessionID=' + socket.request.sessionID + '/' + socket.id + ' mrhsession=' + socket.request.session.ssh.mrhsession + ' allowreplay=' + socket.request.session.ssh.allowreplay + ' term=' + socket.request.session.ssh.term) console.log('WebSSH2 Login: user=' + socket.request.session.username + ' from=' + socket.handshake.address + ' host=' + socket.request.session.ssh.host + ' port=' + socket.request.session.ssh.port + ' sessionID=' + socket.request.sessionID + '/' + socket.id + ' mrhsession=' + socket.request.session.ssh.mrhsession + ' allowreplay=' + socket.request.session.ssh.allowreplay + ' term=' + socket.request.session.ssh.term)
socket.emit('setTerminalOpts', socket.request.session.ssh.terminal)
socket.emit('menu', menuData) socket.emit('menu', menuData)
socket.emit('allowreauth', socket.request.session.ssh.allowreauth)
socket.emit('setTerminalOpts', socket.request.session.ssh.terminal)
socket.emit('title', 'ssh://' + socket.request.session.ssh.host) socket.emit('title', 'ssh://' + socket.request.session.ssh.host)
if (socket.request.session.ssh.header.background) socket.emit('headerBackground', socket.request.session.ssh.header.background) if (socket.request.session.ssh.header.background) socket.emit('headerBackground', socket.request.session.ssh.header.background)
if (socket.request.session.ssh.header.name) socket.emit('header', socket.request.session.ssh.header.name) if (socket.request.session.ssh.header.name) socket.emit('header', socket.request.session.ssh.header.name)
@ -43,7 +44,6 @@ module.exports = function socket (socket) {
socket.emit('status', 'SSH CONNECTION ESTABLISHED') socket.emit('status', 'SSH CONNECTION ESTABLISHED')
socket.emit('statusBackground', 'green') socket.emit('statusBackground', 'green')
socket.emit('allowreplay', socket.request.session.ssh.allowreplay) socket.emit('allowreplay', socket.request.session.ssh.allowreplay)
socket.emit('allowreauth', socket.request.session.ssh.allowreauth)
conn.shell({ conn.shell({
term: socket.request.session.ssh.term, term: socket.request.session.ssh.term,
cols: termCols, cols: termCols,
@ -152,7 +152,7 @@ module.exports = function socket (socket) {
console.log('WebSSH2 ' + 'error: Authentication failure'.red.bold + console.log('WebSSH2 ' + 'error: Authentication failure'.red.bold +
' user=' + socket.request.session.username.yellow.bold.underline + ' user=' + socket.request.session.username.yellow.bold.underline +
' from=' + socket.handshake.address.yellow.bold.underline) ' from=' + socket.handshake.address.yellow.bold.underline)
socket.emit('allowreauth', socket.request.session.ssh.allowreauth)
socket.emit('reauth') socket.emit('reauth')
} else { } else {
console.log('WebSSH2 Logout: user=' + socket.request.session.username + ' from=' + socket.handshake.address + ' host=' + socket.request.session.ssh.host + ' port=' + socket.request.session.ssh.port + ' sessionID=' + socket.request.sessionID + '/' + socket.id + ' allowreplay=' + socket.request.session.ssh.allowreplay + ' term=' + socket.request.session.ssh.term) console.log('WebSSH2 Logout: user=' + socket.request.session.username + ' from=' + socket.handshake.address + ' host=' + socket.request.session.ssh.host + ' port=' + socket.request.session.ssh.port + ' sessionID=' + socket.request.sessionID + '/' + socket.id + ' allowreplay=' + socket.request.session.ssh.allowreplay + ' term=' + socket.request.session.ssh.term)