Compare commits

..

1 commit

Author SHA1 Message Date
Bill Church
e103cbdf10 chore(main): release webssh2 0.4.7-pre-5 2023-08-22 14:59:00 -04:00
19 changed files with 8735 additions and 2147 deletions

20
.devcontainer/Dockerfile Normal file
View file

@ -0,0 +1,20 @@
# [Choice] Node.js version (use -bullseye variants on local arm64/Apple Silicon): 18, 16, 14, 18-bullseye, 16-bullseye, 14-bullseye, 18-buster, 16-buster, 14-buster
ARG VARIANT=16-bullseye
FROM mcr.microsoft.com/vscode/devcontainers/typescript-node:${VARIANT}
# [Optional] Uncomment this section to install additional OS packages.
# RUN apt-get update && export DEBIAN_FRONTEND=noninteractive \
# && apt-get -y install --no-install-recommends <your-package-list-here>
RUN apt-get update && apt-get install gnupg2 -y
RUN npm i --location=global release-please
RUN useradd -ms /bin/bash vscode
# [Optional] Uncomment if you want to install an additional version of node using nvm
# ARG EXTRA_NODE_VERSION=10
# RUN su node -c "source /usr/local/share/nvm/nvm.sh && nvm install ${EXTRA_NODE_VERSION}"
# [Optional] Uncomment if you want to install more global node packages
# RUN su node -c "npm install -g <your-package-list -here>"

View file

@ -1,27 +1,22 @@
{ {
"name": "Node.js & TypeScript", "name": "Node.js & TypeScript",
"image": "mcr.microsoft.com/devcontainers/base:jammy", "build": {
"dockerfile": "Dockerfile",
"mounts": [ // Update 'VARIANT' to pick a Node version: 18, 16, 14.
"source=${localEnv:HOME}${localEnv:USERPROFILE}/.ssh/personal_id_rsa.pub,target=/home/vscode/.hostssh/id_rsa.pub,readonly,type=bind,consistency=cached" // Append -bullseye or -buster to pin to an OS version.
], // Use -bullseye variants on local on arm64/Apple Silicon.
"features": { "args": {
"ghcr.io/devcontainers-contrib/features/node-asdf:0": {}, "VARIANT": "16-bullseye"
}
}, },
// Configure tool-specific properties. // Configure tool-specific properties.
"customizations": { "customizations": {
// Configure properties specific to VS Code. // Configure properties specific to VS Code.
"vscode": { "vscode": {
// Add the IDs of extensions you want installed when the container is created. // Add the IDs of extensions you want installed when the container is created.
"extensions": [ "extensions": [
"ms-vscode-remote.remote-containers", "dbaeumer.vscode-eslint"
"dbaeumer.vscode-eslint",
"GitHub.copilot",
"GitHub.copilot-chat",
"esbenp.prettier-vscode",
"rvest.vs-code-prettier-eslint",
"bierner.markdown-mermaid",
"stylelint.vscode-stylelint"
] ]
} }
}, },
@ -30,7 +25,7 @@
// "forwardPorts": [], // "forwardPorts": [],
// Use 'postCreateCommand' to run commands after the container is created. // Use 'postCreateCommand' to run commands after the container is created.
"postCreateCommand": "/bin/bash ./.devcontainer/scripts/tools.sh >> ~/post-create-tools.log", // "postCreateCommand": "yarn install",
// Comment out to connect as root instead. More info: https://aka.ms/vscode-remote/containers/non-root. // Comment out to connect as root instead. More info: https://aka.ms/vscode-remote/containers/non-root.
"remoteUser": "vscode" "remoteUser": "vscode"

View file

@ -1,12 +0,0 @@
#!/bin/bash
mkdir -p ~/.ssh && \
touch ~/.ssh/known_hosts && \
sudo tee ~/.ssh/config > /dev/null << EOF
Host github.com
HostName github.com
PreferredAuthentications publickey
IdentityFile ~/.hostssh/id_rsa.pub
EOF
sudo chown -R vscode:vscode ~/.ssh

View file

@ -62,4 +62,4 @@ jobs:
file: ./Dockerfile file: ./Dockerfile
platforms: linux/amd64,linux/arm64,linux/ppc64le platforms: linux/amd64,linux/arm64,linux/ppc64le
push: true push: true
tags: ${{ steps.prep.outputs.tags }} tags: ${{ steps.prep.outputs.tags }}

View file

@ -1,69 +0,0 @@
---
name: 'Build Docker On Tag'
on:
push:
branches:
- bigip-server
tags:
- 'v[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}'
workflow_dispatch: # Allows manual triggering from the GitHub UI
jobs:
docker:
runs-on: ubuntu-latest
steps:
- name: 'Checkout'
uses: actions/checkout@v3
- name: Prepare
id: prep
run: |
DOCKER_IMAGE=${{ secrets.DOCKER_USERNAME }}/${GITHUB_REPOSITORY#*/}
# If this is a git tag, use the tag name as a docker tag
if [[ $GITHUB_REF == refs/tags/* ]]; then
VERSION=${GITHUB_REF#refs/tags/v}
TAGS="${DOCKER_IMAGE}:${VERSION}"
fi
# If this is a git branch, use the branch name as a docker tag
if [[ $GITHUB_REF == refs/heads/* ]]; then
VERSION=${GITHUB_REF#refs/heads/}
TAGS="${DOCKER_IMAGE}:${VERSION}"
fi
# If the VERSION looks like a version number, also tag as 'latest'
if [[ $VERSION =~ ^[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}$ ]]; then
TAGS="$TAGS,${DOCKER_IMAGE}:latest"
fi
# Set output parameters
echo ::set-output name=tags::${TAGS}
echo ::set-output name=docker_image::${DOCKER_IMAGE}
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
with:
platforms: all
- name: Set up Docker Buildx
id: buildx
uses: docker/setup-buildx-action@v3
- name: Login to DockerHub
if: github.event_name != 'pull_request'
uses: docker/login-action@v2
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
- name: Build
uses: docker/build-push-action@v4
with:
builder: ${{ steps.buildx.outputs.name }}
context: .
file: ./Dockerfile
platforms: linux/amd64,linux/arm64,linux/ppc64le
push: true
tags: ${{ steps.prep.outputs.tags }}

View file

@ -23,7 +23,6 @@ jobs:
package-name: webssh2 package-name: webssh2
path: app path: app
default-branch: main default-branch: main
release-type: node
publish: publish:
runs-on: ubuntu-20.04 runs-on: ubuntu-20.04
needs: release needs: release

View file

@ -1,3 +1,3 @@
{ {
"app": "0.5.0-pre-4" "app": "0.4.7-pre-5"
} }

View file

@ -2,6 +2,61 @@
All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines. All notable changes to this project will be documented in this file. See [standard-version](https://github.com/conventional-changelog/standard-version) for commit guidelines.
## [0.4.7-pre-5](https://github.com/billchurch/webssh2/compare/webssh2-v0.5.0-pre-4...webssh2-v0.4.7-pre-5) (2023-08-22)
### ⚠ BREAKING CHANGES
* validate referer to /reauth is valid
* bump xterm to 4.18.0
* consistent logging messages see #286
* config system changes #284 ([#285](https://github.com/billchurch/webssh2/issues/285))
### package
* bump xterm to 4.18.0 ([84c09ec](https://github.com/billchurch/webssh2/commit/84c09ec8a1909e4bbd0051debdbb905276a4245e))
### Features
* add additional params for POST requests [#290](https://github.com/billchurch/webssh2/issues/290) ([46c1560](https://github.com/billchurch/webssh2/commit/46c1560e3c126376e18124e14e5c7fb8c029a0a1))
* add additional vars to POST requests [#290](https://github.com/billchurch/webssh2/issues/290) ([0a4e419](https://github.com/billchurch/webssh2/commit/0a4e419fb371ae95340fa890497022a2aa9d063a))
* add fontFamily, letterSpacing, lineHeight ([97f3088](https://github.com/billchurch/webssh2/commit/97f3088780744e13a6724a4967a4896aac3f20d8))
* add fontSize option [#292](https://github.com/billchurch/webssh2/issues/292) ([5e78812](https://github.com/billchurch/webssh2/commit/5e788129744d326e78ec91bda86ed5cecfd70d3f))
* add SIGTERM to safe shutdown feature ([675b4f5](https://github.com/billchurch/webssh2/commit/675b4f5a3a92b187b620684eb1ce1b7afa0e2e08))
* **auth:** ssh private key auth implemented via config.json ([#161](https://github.com/billchurch/webssh2/issues/161)) ([342df8e](https://github.com/billchurch/webssh2/commit/342df8eb9cafba52eb63b50a60e11e1431d6fbd4))
* config system changes [#284](https://github.com/billchurch/webssh2/issues/284) ([#285](https://github.com/billchurch/webssh2/issues/285)) ([9c99b09](https://github.com/billchurch/webssh2/commit/9c99b0940ec726193deae3c4999d25a297874d67))
* **config:** specify local source address and port for client connections fixes [#152](https://github.com/billchurch/webssh2/issues/152) ([#158](https://github.com/billchurch/webssh2/issues/158)) ([65d6ec6](https://github.com/billchurch/webssh2/commit/65d6ec68452b80c42fd62534355e456ce1f16a32))
* consistent logging messages see [#286](https://github.com/billchurch/webssh2/issues/286) ([50cfcb9](https://github.com/billchurch/webssh2/commit/50cfcb97788cbd3409b4605adceef3d47e370e38))
* CORS support ([b324f33](https://github.com/billchurch/webssh2/commit/b324f338adeb3518322941639fb83ba9370814cc))
* credentials over http post for [#290](https://github.com/billchurch/webssh2/issues/290) ([5b8f88c](https://github.com/billchurch/webssh2/commit/5b8f88cfef1745c88748277217204e6c38c7ff7e))
* reorder viewport setup at ssh handshake [#292](https://github.com/billchurch/webssh2/issues/292) ([140e1e2](https://github.com/billchurch/webssh2/commit/140e1e24b14d6b74848e9d250c2b44f806ad627d))
* test change for release ([476b566](https://github.com/billchurch/webssh2/commit/476b566c08a84bd35aaccf847253875b2c3afb10))
* validate referer to /reauth is valid ([0dcaa6e](https://github.com/billchurch/webssh2/commit/0dcaa6e15062cdc3252ce52abd9057caf4c00a30))
### Bug Fixes
* cols and rows were not properly assigned for terminal ([#337](https://github.com/billchurch/webssh2/issues/337)) ([3246df7](https://github.com/billchurch/webssh2/commit/3246df75b6516309479beffb0948fd3233caa57b))
* deprecated term.setOption ([d903da8](https://github.com/billchurch/webssh2/commit/d903da87c41882a3736683c7de497cb8bd37f885))
* Fix the parameter passing problem of setDefaultCredentials to make it perform data initialization normally ([#288](https://github.com/billchurch/webssh2/issues/288)) ([40cbb35](https://github.com/billchurch/webssh2/commit/40cbb35616fa17c1c36520690f40ebce0b488153))
* fixes default for allowreauth ([#239](https://github.com/billchurch/webssh2/issues/239)) ([dcfd81b](https://github.com/billchurch/webssh2/commit/dcfd81b454b9fe66edec489266dc35a765464c6b)), closes [#238](https://github.com/billchurch/webssh2/issues/238)
* invalid css in style.css ([ffab534](https://github.com/billchurch/webssh2/commit/ffab5345dcb568fa2bb50a96f403174ad3728286))
* obey host ssh.host in config fixes [#190](https://github.com/billchurch/webssh2/issues/190) ([7b7e8e7](https://github.com/billchurch/webssh2/commit/7b7e8e753358ed48f52eb9aa2fc359bf758f304b))
* subnet unauthorized now emits "ssherror" which persists across websocket termination ([e796f9f](https://github.com/billchurch/webssh2/commit/e796f9fb5874d6557433f25e8976b7aa58fa8144))
* update config.json.sample ([#177](https://github.com/billchurch/webssh2/issues/177)) ([42f973b](https://github.com/billchurch/webssh2/commit/42f973b4796f7f50237dc8ce613e477aa89352ca))
* update read-config-ng to 3.0.5, fixes [#277](https://github.com/billchurch/webssh2/issues/277) ([3e82c0d](https://github.com/billchurch/webssh2/commit/3e82c0dc4d31d1c97a7cf98139ef8e6dc0213b22))
* update xterm.js fixes [#261](https://github.com/billchurch/webssh2/issues/261) ([c801ef9](https://github.com/billchurch/webssh2/commit/c801ef9e5826e13a403a6462241cf8a4ff456d45))
### Miscellaneous Chores
* release 0.4.7-pre-3 ([0c78c1f](https://github.com/billchurch/webssh2/commit/0c78c1f31cc6380b7f0706822fc418cfede11413))
* release 0.4.7-pre-3 ([b29242d](https://github.com/billchurch/webssh2/commit/b29242dfd4e1498a6ac862e85eabd349e11dea73))
* release 0.4.7-pre-3 ([6c7d242](https://github.com/billchurch/webssh2/commit/6c7d242679d55b2b28a2497d69b43a7e8439c4ca))
* release 0.4.7-pre-4 ([7d4ba87](https://github.com/billchurch/webssh2/commit/7d4ba87bc1c198600ea33ee220553ef46ea2a103))
* release 0.4.7-pre-5 ([8b56826](https://github.com/billchurch/webssh2/commit/8b56826363565610eda9fe8733107280b4c8a4bd))
## [0.5.0-pre-4](https://github.com/billchurch/webssh2/compare/webssh2-v0.4.7-pre-4...webssh2-v0.5.0-pre-4) (2022-08-07) ## [0.5.0-pre-4](https://github.com/billchurch/webssh2/compare/webssh2-v0.4.7-pre-4...webssh2-v0.5.0-pre-4) (2022-08-07)

Binary file not shown.

File diff suppressed because one or more lines are too long

View file

@ -0,0 +1,5 @@
/*!
* Font Awesome Free 6.1.2 by @fontawesome - https://fontawesome.com
* License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
* Copyright 2022 Fonticons, Inc.
*/

View file

@ -140,7 +140,7 @@
cursor: crosshair; cursor: crosshair;
} }
.xterm .xterm-accessibility:not(.debug), .xterm .xterm-accessibility,
.xterm .xterm-message { .xterm .xterm-message {
position: absolute; position: absolute;
left: 0; left: 0;
@ -149,16 +149,6 @@
right: 0; right: 0;
z-index: 10; z-index: 10;
color: transparent; color: transparent;
pointer-events: none;
}
.xterm .xterm-accessibility-tree:not(.debug) *::selection {
color: transparent;
}
.xterm .xterm-accessibility-tree {
user-select: text;
white-space: pre;
} }
.xterm .live-region { .xterm .live-region {
@ -170,27 +160,13 @@
} }
.xterm-dim { .xterm-dim {
/* Dim should not apply to background, so the opacity of the foreground color is applied opacity: 0.5;
* explicitly in the generated class and reset to 1 here */
opacity: 1 !important;
} }
.xterm-underline-1 { text-decoration: underline; } .xterm-underline {
.xterm-underline-2 { text-decoration: double underline; } text-decoration: underline;
.xterm-underline-3 { text-decoration: wavy underline; }
.xterm-underline-4 { text-decoration: dotted underline; }
.xterm-underline-5 { text-decoration: dashed underline; }
.xterm-overline {
text-decoration: overline;
} }
.xterm-overline.xterm-underline-1 { text-decoration: overline underline; }
.xterm-overline.xterm-underline-2 { text-decoration: overline double underline; }
.xterm-overline.xterm-underline-3 { text-decoration: overline wavy underline; }
.xterm-overline.xterm-underline-4 { text-decoration: overline dotted underline; }
.xterm-overline.xterm-underline-5 { text-decoration: overline dashed underline; }
.xterm-strikethrough { .xterm-strikethrough {
text-decoration: line-through; text-decoration: line-through;
} }
@ -200,12 +176,8 @@
position: absolute; position: absolute;
} }
.xterm-screen .xterm-decoration-container .xterm-decoration.xterm-decoration-top-layer {
z-index: 7;
}
.xterm-decoration-overview-ruler { .xterm-decoration-overview-ruler {
z-index: 8; z-index: 7;
position: absolute; position: absolute;
top: 0; top: 0;
right: 0; right: 0;

View file

@ -1,7 +1,7 @@
/* eslint-disable import/no-extraneous-dependencies */ /* eslint-disable import/no-extraneous-dependencies */
import { io } from 'socket.io-client'; import { io } from 'socket.io-client';
import { Terminal } from '@xterm/xterm'; import { Terminal } from 'xterm';
import { FitAddon } from '@xterm/addon-fit'; import { FitAddon } from 'xterm-addon-fit';
import { library, dom } from '@fortawesome/fontawesome-svg-core'; import { library, dom } from '@fortawesome/fontawesome-svg-core';
import { faBars, faClipboard, faDownload, faKey, faCog } from '@fortawesome/free-solid-svg-icons'; import { faBars, faClipboard, faDownload, faKey, faCog } from '@fortawesome/free-solid-svg-icons';
@ -9,7 +9,7 @@ library.add(faBars, faClipboard, faDownload, faKey, faCog);
dom.watch(); dom.watch();
const debug = require('debug')('WebSSH2'); const debug = require('debug')('WebSSH2');
require('@xterm/xterm/css/xterm.css'); require('xterm/css/xterm.css');
require('../css/style.css'); require('../css/style.css');
/* global Blob, logBtn, credentialsBtn, reauthBtn, downloadLogBtn */ // eslint-disable-line /* global Blob, logBtn, credentialsBtn, reauthBtn, downloadLogBtn */ // eslint-disable-line

10567
app/package-lock.json generated

File diff suppressed because it is too large Load diff

View file

@ -1,6 +1,6 @@
{ {
"name": "webssh2", "name": "webssh2",
"version": "0.6.0-pre-1", "version": "0.4.7-pre-5",
"ignore": [ "ignore": [
".gitignore" ".gitignore"
], ],
@ -35,15 +35,14 @@
"basic-auth": "~2.0.1", "basic-auth": "~2.0.1",
"cidr-matcher": "^2.1.1", "cidr-matcher": "^2.1.1",
"debug": "^4.3.4", "debug": "^4.3.4",
"express": "^4.19.2", "express": "^4.18.1",
"express-session": "^1.18.0", "express-session": "^1.17.3",
"morgan": "~1.10.0", "morgan": "~1.10.0",
"read-config-ng": "^3.0.7", "read-config-ng": "^3.0.5",
"serve-favicon": "^2.5.0", "serve-favicon": "^2.5.0",
"socket.io": "^4.7.5", "socket.io": "^4.5.1",
"ssh2": "^1.15.0", "ssh2": "^1.11.0",
"validator": "^13.11.0", "validator": "^13.7.0"
"winston": "^3.13.0"
}, },
"scripts": { "scripts": {
"start": "node index.js", "start": "node index.js",
@ -56,34 +55,34 @@
"release": "standard-version" "release": "standard-version"
}, },
"devDependencies": { "devDependencies": {
"@fortawesome/fontawesome-svg-core": "^6.5.2", "@fortawesome/fontawesome-svg-core": "^6.1.2",
"@fortawesome/free-solid-svg-icons": "^6.5.2", "@fortawesome/free-solid-svg-icons": "^6.1.2",
"@typescript-eslint/eslint-plugin": "^7.7.1", "@typescript-eslint/eslint-plugin": "^5.32.0",
"@typescript-eslint/parser": "^7.7.1", "@typescript-eslint/parser": "^5.32.0",
"@xterm/addon-fit": "^0.10.0",
"@xterm/xterm": "^5.5.0",
"clean-webpack-plugin": "^4.0.0", "clean-webpack-plugin": "^4.0.0",
"copy-webpack-plugin": "^12.0.2", "copy-webpack-plugin": "^11.0.0",
"css-loader": "^7.1.1", "css-loader": "^6.7.1",
"eslint": "^8.56.0", "eslint": "^8.21.0",
"eslint-config-airbnb-base": "^15.0.0", "eslint-config-airbnb-base": "^15.0.0",
"eslint-config-prettier": "^9.1.0", "eslint-config-prettier": "^8.5.0",
"eslint-plugin-import": "^2.29.1", "eslint-plugin-import": "^2.26.0",
"eslint-plugin-prettier": "^5.1.3", "eslint-plugin-prettier": "^4.2.1",
"mini-css-extract-plugin": "^2.9.0", "mini-css-extract-plugin": "^2.6.1",
"nodaemon": "0.0.5", "nodaemon": "0.0.5",
"npm-check-updates": "^16.14.20", "npm-check-updates": "^16.13.0",
"prettier": "^3.2.5", "prettier": "^2.7.1",
"snazzy": "^9.0.0", "snazzy": "^9.0.0",
"snyk": "^1.1290.0", "snyk": "^1.982.0",
"socket.io-client": "^4.7.5", "socket.io-client": "^4.5.1",
"source-map-loader": "^5.0.0", "source-map-loader": "^4.0.0",
"standard-version": "^9.5.0", "standard-version": "^9.5.0",
"terser-webpack-plugin": "^5.3.10", "terser-webpack-plugin": "^5.3.3",
"ts-loader": "^9.5.1", "ts-loader": "^9.3.1",
"typescript": "^5.4.5", "typescript": "^4.7.4",
"webpack": "^5.91.0", "webpack": "^5.74.0",
"webpack-cli": "^5.1.4", "webpack-cli": "^4.10.0",
"webpack-merge": "^5.10.0" "webpack-merge": "^5.8.0",
"xterm": "^4.19.0",
"xterm-addon-fit": "^0.5.0"
} }
} }

View file

@ -13,7 +13,7 @@ const express = require('express');
const logger = require('morgan'); const logger = require('morgan');
const app = express(); const app = express();
const server = require('http').createServer(app); const server = require('http').Server(app);
const favicon = require('serve-favicon'); const favicon = require('serve-favicon');
const io = require('socket.io')(server, config.socketio); const io = require('socket.io')(server, config.socketio);
const session = require('express-session')(config.express); const session = require('express-session')(config.express);

View file

@ -105,7 +105,7 @@ module.exports = function appSocket(socket) {
socket.emit('data', data.replace(/\r?\n/g, '\r\n').toString('utf-8')); socket.emit('data', data.replace(/\r?\n/g, '\r\n').toString('utf-8'));
}); });
conn.on('handshake', () => { conn.on('handshake', (data => {
socket.emit('setTerminalOpts', socket.request.session.ssh.terminal); socket.emit('setTerminalOpts', socket.request.session.ssh.terminal);
socket.emit('menu'); socket.emit('menu');
socket.emit('allowreauth', socket.request.session.ssh.allowreauth); socket.emit('allowreauth', socket.request.session.ssh.allowreauth);
@ -118,7 +118,7 @@ module.exports = function appSocket(socket) {
'footer', 'footer',
`ssh://${socket.request.session.username}@${socket.request.session.ssh.host}:${socket.request.session.ssh.port}` `ssh://${socket.request.session.username}@${socket.request.session.ssh.host}:${socket.request.session.ssh.port}`
); );
}); }));
conn.on('ready', () => { conn.on('ready', () => {
webssh2debug( webssh2debug(

BIN
bun.lockb

Binary file not shown.

View file

@ -1,6 +0,0 @@
{
"dependencies": {},
"devDependencies": {
"bun-types": "^1.0.1"
}
}