Browse Source

update logger

pull/217/head
butlerx 5 years ago
parent
commit
d2598eed69
No known key found for this signature in database GPG Key ID: B37CA765BAA89170
  1. 6
      Dockerfile
  2. 3
      docker-compose.yml
  3. 2
      package.json
  4. 2
      src/client/copyToClipboard.ts
  5. 2
      src/client/disconnect.ts
  6. 4
      src/client/index.ts
  7. 2
      src/server/cli/parseArgs.ts
  8. 8
      src/server/socketServer/html.ts
  9. 14
      src/server/socketServer/index.ts
  10. 6
      src/server/utils/logger.ts
  11. 6
      src/server/wetty/index.ts
  12. 2
      src/server/wetty/term/spawn.ts
  13. 0
      ssh.Dockerfile
  14. 4
      webpack.config.babel.js
  15. 28
      yarn.lock

6
Dockerfile

@ -10,13 +10,13 @@ FROM node:carbon-alpine
LABEL maintainer="butlerx@notthe.cloud" LABEL maintainer="butlerx@notthe.cloud"
WORKDIR /usr/src/app WORKDIR /usr/src/app
ENV NODE_ENV=production ENV NODE_ENV=production
RUN apk add -U openssh-client sshpass
EXPOSE 3000 EXPOSE 3000
COPY --from=builder /usr/src/app/dist /usr/src/app/dist COPY --from=builder /usr/src/app/dist /usr/src/app/dist
COPY --from=builder /usr/src/app/node_modules /usr/src/app/node_modules COPY --from=builder /usr/src/app/node_modules /usr/src/app/node_modules
COPY package.json /usr/src/app COPY package.json /usr/src/app
COPY index.js /usr/src/app COPY index.js /usr/src/app
RUN mkdir ~/.ssh RUN apk add -U openssh-client sshpass && \
RUN ssh-keyscan -H wetty-ssh >> ~/.ssh/known_hosts mkdir ~/.ssh && \
ssh-keyscan -H wetty-ssh >> ~/.ssh/known_hosts
ENTRYPOINT [ "node", "." ] ENTRYPOINT [ "node", "." ]

3
docker-compose.yml

@ -17,6 +17,7 @@ services:
web: web:
image: nginx image: nginx
container_name: wetty-nginx
volumes: volumes:
- ./bin/nginx.template:/etc/nginx/conf.d/wetty.template - ./bin/nginx.template:/etc/nginx/conf.d/wetty.template
ports: ports:
@ -35,7 +36,7 @@ services:
wetty-ssh: wetty-ssh:
build: build:
context: . context: .
dockerfile: Dockerfile-ssh dockerfile: ssh.Dockerfile
image: butlerx/wetty:ssh image: butlerx/wetty:ssh
container_name: 'wetty-ssh' container_name: 'wetty-ssh'

2
package.json

@ -58,11 +58,11 @@
"@fortawesome/free-solid-svg-icons": "^5.11.2", "@fortawesome/free-solid-svg-icons": "^5.11.2",
"compression": "^1.7.4", "compression": "^1.7.4",
"express": "^4.17.1", "express": "^4.17.1",
"express-winston": "^4.0.1",
"file-type": "^12.3.0", "file-type": "^12.3.0",
"fs-extra": "^8.1.0", "fs-extra": "^8.1.0",
"helmet": "^3.20.1", "helmet": "^3.20.1",
"lodash": "^4.17.15", "lodash": "^4.17.15",
"morgan": "^1.9.1",
"node-pty": "0.9.0-beta28", "node-pty": "0.9.0-beta28",
"serve-favicon": "^2.5.0", "serve-favicon": "^2.5.0",
"socket.io": "^2.2.0", "socket.io": "^2.2.0",

2
src/client/copyToClipboard.ts

@ -17,13 +17,11 @@ export function copySelected(text: string): boolean {
document.execCommand('copy'); document.execCommand('copy');
return true; return true;
} catch (ex) { } catch (ex) {
console.warn('Copy to clipboard failed.', ex);
return false; return false;
} finally { } finally {
document.body.removeChild(textarea); document.body.removeChild(textarea);
} }
} }
console.warn('Copy to clipboard failed.');
return false; return false;
} }

2
src/client/disconnect.ts

@ -1,4 +1,4 @@
import { isUndefined, isNull } from 'lodash'; import { isNull, isUndefined } from 'lodash';
import verifyPrompt from './verify'; import verifyPrompt from './verify';
import { overlay } from './elements'; import { overlay } from './elements';

4
src/client/index.ts

@ -1,11 +1,11 @@
import { Terminal } from 'xterm'; import { Terminal } from 'xterm';
import { isNull } from 'lodash'; import { isNull } from 'lodash';
import { library, dom } from "@fortawesome/fontawesome-svg-core"; import { dom, library } from "@fortawesome/fontawesome-svg-core";
import { faCogs } from "@fortawesome/free-solid-svg-icons/faCogs"; import { faCogs } from "@fortawesome/free-solid-svg-icons/faCogs";
import { socket } from './socket'; import { socket } from './socket';
import { overlay, terminal } from './elements'; import { overlay, terminal } from './elements';
import { fileBuffer, onCompleteFile, FILE_BEGIN, FILE_END } from './download'; import { FILE_BEGIN, FILE_END, fileBuffer, onCompleteFile } from './download';
import verifyPrompt from './verify'; import verifyPrompt from './verify';
import disconnect from './disconnect'; import disconnect from './disconnect';
import mobileKeyboard from './mobile'; import mobileKeyboard from './mobile';

2
src/server/cli/parseArgs.ts

@ -1,6 +1,6 @@
import { isUndefined } from 'lodash'; import { isUndefined } from 'lodash';
import { SSH, SSL, Server } from '../interfaces';
import { Options } from './options'; import { Options } from './options';
import { SSL, SSH, Server } from '../interfaces';
export function unWrapArgs( export function unWrapArgs(
args: Options args: Options

8
src/server/socketServer/html.ts

@ -3,8 +3,12 @@ import * as express from 'express';
export default (base: string, title: string) => ( export default (base: string, title: string) => (
req: express.Request, req: express.Request,
res: express.Response res: express.Response
): express.Response => { ): void => {
const resourcePath = /^\/ssh\//.test(req.url.replace(base, '/')) ? '../' : ''; const resourcePath = /^\/ssh\//.test(req.url.replace(base, '/'))
? '../'
: base;
console.log(req.url, base, resourcePath);
res.send(`<!doctype html> res.send(`<!doctype html>
<html lang="en"> <html lang="en">
<head> <head>

14
src/server/socketServer/index.ts

@ -1,3 +1,4 @@
import { isUndefined } from 'lodash';
import * as compression from 'compression'; import * as compression from 'compression';
import * as express from 'express'; import * as express from 'express';
import * as favicon from 'serve-favicon'; import * as favicon from 'serve-favicon';
@ -6,11 +7,10 @@ import * as http from 'http';
import * as https from 'https'; import * as https from 'https';
import * as path from 'path'; import * as path from 'path';
import * as socket from 'socket.io'; import * as socket from 'socket.io';
import { isUndefined } from 'lodash'; import * as expressWinston from 'express-winston';
import * as morgan from 'morgan';
import logger from '../utils/logger';
import { SSLBuffer, Server } from '../interfaces'; import { SSLBuffer, Server } from '../interfaces';
import html from './html'; import html from './html';
import logger from '../utils/logger';
const distDir = path.join(__dirname, 'client'); const distDir = path.join(__dirname, 'client');
@ -32,12 +32,16 @@ export default function createServer(
const app = express(); const app = express();
app app
.use(morgan('combined', { stream: logger.stream })) .use(expressWinston.logger(logger))
.use(compression()) .use(compression())
.use(favicon(path.join(distDir, 'favicon.ico'))) .use(favicon(path.join(distDir, 'favicon.ico')))
.use(`${basePath}/public`, express.static(distDir)) .use(`${basePath}/public`, express.static(distDir))
.use((req, res, next) => { .use((req, res, next) => {
if (req.url === basePath) res.redirect(301, `${req.url}/`); if (req.path.substr(-1) === '/' && req.path.length > 1)
res.redirect(
301,
req.path.slice(0, -1) + req.url.slice(req.path.length)
);
else next(); else next();
}); });

6
src/server/utils/logger.ts

@ -17,10 +17,4 @@ const logger = createLogger({
], ],
}); });
logger.stream = {
write(message: string): void {
logger.info(message);
},
};
export default logger; export default logger;

6
src/server/wetty/index.ts

@ -4,9 +4,9 @@
*/ */
import server from '../socketServer'; import server from '../socketServer';
import getCommand from '../command'; import getCommand from '../command';
import { spawn, login } from './term'; import { login, spawn } from './term';
import { logger, loadSSL } from '../utils'; import { loadSSL, logger } from '../utils';
import { SSL, SSH, SSLBuffer, Server } from '../interfaces'; import { SSH, SSL, SSLBuffer, Server } from '../interfaces';
/** /**
* Starts WeTTy Server * Starts WeTTy Server

2
src/server/wetty/term/spawn.ts

@ -1,5 +1,5 @@
import { spawn } from 'node-pty';
import { isUndefined } from 'lodash'; import { isUndefined } from 'lodash';
import { spawn } from 'node-pty';
import { logger } from '../../utils'; import { logger } from '../../utils';
import { xterm } from './xterm'; import { xterm } from './xterm';

0
Dockerfile-ssh → ssh.Dockerfile

4
webpack.config.babel.js

@ -1,9 +1,9 @@
/* eslint-disable @typescript-eslint/explicit-function-return-type */ /* eslint-disable @typescript-eslint/explicit-function-return-type */
import path from 'path';
import webpack from 'webpack';
import MiniCssExtractPlugin from 'mini-css-extract-plugin'; import MiniCssExtractPlugin from 'mini-css-extract-plugin';
import nodeExternals from 'webpack-node-externals'; import nodeExternals from 'webpack-node-externals';
import path from 'path';
import webpack from 'webpack';
const template = override => ({ const template = override => ({
mode: process.env.NODE_ENV || 'development', mode: process.env.NODE_ENV || 'development',

28
yarn.lock

@ -1489,13 +1489,6 @@ base@^0.11.1:
mixin-deep "^1.2.0" mixin-deep "^1.2.0"
pascalcase "^0.1.1" pascalcase "^0.1.1"
basic-auth@~2.0.0:
version "2.0.1"
resolved "https://registry.yarnpkg.com/basic-auth/-/basic-auth-2.0.1.tgz#b998279bf47ce38344b4f3cf916d4679bbf51e3a"
integrity sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==
dependencies:
safe-buffer "5.1.2"
bcrypt-pbkdf@^1.0.0: bcrypt-pbkdf@^1.0.0:
version "1.0.2" version "1.0.2"
resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e" resolved "https://registry.yarnpkg.com/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz#a4301d389b6a43f9b67ff3ca11a3f6637e360e9e"
@ -3152,6 +3145,14 @@ expect-ct@0.2.0:
resolved "https://registry.yarnpkg.com/expect-ct/-/expect-ct-0.2.0.tgz#3a54741b6ed34cc7a93305c605f63cd268a54a62" resolved "https://registry.yarnpkg.com/expect-ct/-/expect-ct-0.2.0.tgz#3a54741b6ed34cc7a93305c605f63cd268a54a62"
integrity sha512-6SK3MG/Bbhm8MsgyJAylg+ucIOU71/FzyFalcfu5nY19dH8y/z0tBJU0wrNBXD4B27EoQtqPF/9wqH0iYAd04g== integrity sha512-6SK3MG/Bbhm8MsgyJAylg+ucIOU71/FzyFalcfu5nY19dH8y/z0tBJU0wrNBXD4B27EoQtqPF/9wqH0iYAd04g==
express-winston@^4.0.1:
version "4.0.1"
resolved "https://registry.yarnpkg.com/express-winston/-/express-winston-4.0.1.tgz#98c74d099b9a7fdeedc56eb839c223968bc33990"
integrity sha512-HQZ/d2UPuZIr/PNiLOHX+CF2Q9srfBy1GDK7yIJ+MvX6MU49ggM25XynSNmC5RRPlD2ju3Zic+mCTQtixP1gzQ==
dependencies:
chalk "^2.4.1"
lodash "^4.17.10"
express@^4.17.1: express@^4.17.1:
version "4.17.1" version "4.17.1"
resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134" resolved "https://registry.yarnpkg.com/express/-/express-4.17.1.tgz#4491fc38605cf51f8629d39c2b5d026f98a4c134"
@ -5283,17 +5284,6 @@ mixin-deep@^1.2.0:
dependencies: dependencies:
minimist "0.0.8" minimist "0.0.8"
morgan@^1.9.1:
version "1.9.1"
resolved "https://registry.yarnpkg.com/morgan/-/morgan-1.9.1.tgz#0a8d16734a1d9afbc824b99df87e738e58e2da59"
integrity sha512-HQStPIV4y3afTiCYVxirakhlCfGkI161c76kKFca7Fk1JusM//Qeo1ej2XaMniiNeaZklMVrh3vTtIzpzwbpmA==
dependencies:
basic-auth "~2.0.0"
debug "2.6.9"
depd "~1.1.2"
on-finished "~2.3.0"
on-headers "~1.0.1"
move-concurrently@^1.0.1: move-concurrently@^1.0.1:
version "1.0.1" version "1.0.1"
resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92" resolved "https://registry.yarnpkg.com/move-concurrently/-/move-concurrently-1.0.1.tgz#be2c005fda32e0b29af1f05d7c4b33214c701f92"
@ -5713,7 +5703,7 @@ on-finished@~2.3.0:
dependencies: dependencies:
ee-first "1.1.1" ee-first "1.1.1"
on-headers@~1.0.1, on-headers@~1.0.2: on-headers@~1.0.2:
version "1.0.2" version "1.0.2"
resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f" resolved "https://registry.yarnpkg.com/on-headers/-/on-headers-1.0.2.tgz#772b0ae6aaa525c399e489adfad90c403eb3c28f"
integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA== integrity sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==

Loading…
Cancel
Save