From 7c0bc4876344c92549b27a5765a99e2ea9079fde Mon Sep 17 00:00:00 2001 From: Bill Church Date: Mon, 17 May 2021 10:00:37 -0400 Subject: [PATCH] Delete index.js --- app/client/built/index.js | 230 -------------------------------------- 1 file changed, 230 deletions(-) delete mode 100644 app/client/built/index.js diff --git a/app/client/built/index.js b/app/client/built/index.js deleted file mode 100644 index adee5e3..0000000 --- a/app/client/built/index.js +++ /dev/null @@ -1,230 +0,0 @@ -/* eslint-disable import/no-extraneous-dependencies */ -import io from 'socket.io-client'; -import { Terminal } from 'xterm'; -import { FitAddon } from 'xterm-addon-fit'; -import { library, dom } from '@fortawesome/fontawesome-svg-core'; -import { faBars, faClipboard, faDownload, faKey, faCog } from '@fortawesome/free-solid-svg-icons'; -library.add(faBars, faClipboard, faDownload, faKey, faCog); -dom.watch(); -const debug = require('debug')('WebSSH2'); -require('xterm/css/xterm.css'); -require('../css/style.css'); -/* global Blob, logBtn, credentialsBtn, reauthBtn, downloadLogBtn */ // eslint-disable-line -let sessionLogEnable = false; -let loggedData = false; -let allowreplay = false; -let allowreauth = false; -let sessionLog; -let sessionFooter; -let logDate; -let currentDate; -let myFile; -let errorExists; -let socket; -const term = new Terminal(); -// DOM properties -const status = document.getElementById('status'); -const header = document.getElementById('header'); -const dropupContent = document.getElementById('dropupContent'); -const footer = document.getElementById('footer'); -const countdown = document.getElementById('countdown'); -const fitAddon = new FitAddon(); -const terminalContainer = document.getElementById('terminal-container'); -term.loadAddon(fitAddon); -term.open(terminalContainer); -term.focus(); -fitAddon.fit(); -// reauthenticate -function reauthSession() { - debug('re-authenticating'); - window.location.href = '/ssh/reauth'; - return false; -} -// cross browser method to "download" an element to the local system -// used for our client-side logging feature -function downloadLog() { - if (loggedData === true) { - myFile = `WebSSH2-${logDate.getFullYear()}${logDate.getMonth() + 1}${logDate.getDate()}_${logDate.getHours()}${logDate.getMinutes()}${logDate.getSeconds()}.log`; - // regex should eliminate escape sequences from being logged. - const blob = new Blob([ - sessionLog.replace( - // eslint-disable-next-line no-control-regex - /[\u001b\u009b][[\]()#;?]*(?:[0-9]{1,4}(?:;[0-9]{0,4})*)?[0-9A-ORZcf-nqry=><;]/g, ''), - ], { - // eslint-disable-line no-control-regex - type: 'text/plain', - }); - if (window.navigator.msSaveOrOpenBlob) { - window.navigator.msSaveBlob(blob, myFile); - } - else { - const elem = window.document.createElement('a'); - elem.href = window.URL.createObjectURL(blob); - elem.download = myFile; - document.body.appendChild(elem); - elem.click(); - document.body.removeChild(elem); - } - } - term.focus(); -} -// Set variable to toggle log data from client/server to a varialble -// for later download -function toggleLog() { - if (sessionLogEnable === true) { - sessionLogEnable = false; - loggedData = true; - logBtn.innerHTML = ' Start Log'; - // console.log(`stopping log, ${sessionLogEnable}`); - currentDate = new Date(); - sessionLog = `${sessionLog}\r\n\r\nLog End for ${sessionFooter}: ${currentDate.getFullYear()}/${currentDate.getMonth() + 1}/${currentDate.getDate()} @ ${currentDate.getHours()}:${currentDate.getMinutes()}:${currentDate.getSeconds()}\r\n`; - logDate = currentDate; - term.focus(); - return false; - } - sessionLogEnable = true; - loggedData = true; - logBtn.innerHTML = ' Stop Log'; - downloadLogBtn.style.color = '#000'; - downloadLogBtn.addEventListener('click', downloadLog); - // console.log(`starting log, ${sessionLogEnable}`); - currentDate = new Date(); - sessionLog = `Log Start for ${sessionFooter}: ${currentDate.getFullYear()}/${currentDate.getMonth() + 1}/${currentDate.getDate()} @ ${currentDate.getHours()}:${currentDate.getMinutes()}:${currentDate.getSeconds()}\r\n\r\n`; - logDate = currentDate; - term.focus(); - return false; -} -// replay password to server, requires -function replayCredentials() { - socket.emit('control', 'replayCredentials'); - // console.log('replaying credentials'); - term.focus(); - return false; -} -// draw/re-draw menu and reattach listeners -// when dom is changed, listeners are abandonded -function drawMenu(data) { - dropupContent.innerHTML = data; - logBtn.addEventListener('click', toggleLog); - if (allowreauth) { - reauthBtn.addEventListener('click', reauthSession); - } - if (allowreplay) { - credentialsBtn.addEventListener('click', replayCredentials); - } - if (loggedData) { - downloadLogBtn.addEventListener('click', downloadLog); - } -} -function resizeScreen() { - fitAddon.fit(); - socket.emit('resize', { cols: term.cols, rows: term.rows }); -} -window.addEventListener('resize', resizeScreen, false); -socket = io.connect({ - path: '/ssh/socket.io', -}); -term.onData((data) => { - socket.emit('data', data); -}); -socket.on('data', (data) => { - term.write(data); - if (sessionLogEnable) { - sessionLog += data; - } -}); -socket.on('connect', () => { - socket.emit('geometry', term.cols, term.rows); -}); -socket.on('setTerminalOpts', (data) => { - term.setOption('cursorBlink', data.cursorBlink); - term.setOption('scrollback', data.scrollback); - term.setOption('tabStopWidth', data.tabStopWidth); - term.setOption('bellStyle', data.bellStyle); -}); -socket.on('title', (data) => { - document.title = data; -}); -socket.on('menu', (data) => { - drawMenu(data); -}); -socket.on('status', (data) => { - status.innerHTML = data; -}); -socket.on('ssherror', (data) => { - status.innerHTML = data; - status.style.backgroundColor = 'red'; - errorExists = true; -}); -socket.on('headerBackground', (data) => { - header.style.backgroundColor = data; -}); -socket.on('header', (data) => { - if (data) { - header.innerHTML = data; - header.style.display = 'block'; - // header is 19px and footer is 19px, recaculate new terminal-container and resize - terminalContainer.style.height = 'calc(100% - 38px)'; - resizeScreen(); - } -}); -socket.on('footer', (data) => { - sessionFooter = data; - footer.innerHTML = data; -}); -socket.on('statusBackground', (data) => { - status.style.backgroundColor = data; -}); -socket.on('allowreplay', (data) => { - if (data === true) { - debug(`allowreplay: ${data}`); - allowreplay = true; - drawMenu(`${dropupContent.innerHTML} Credentials`); - } - else { - allowreplay = false; - debug(`allowreplay: ${data}`); - } -}); -socket.on('allowreauth', (data) => { - if (data === true) { - debug(`allowreauth: ${data}`); - allowreauth = true; - drawMenu(`${dropupContent.innerHTML} Switch User`); - } - else { - allowreauth = false; - debug(`allowreauth: ${data}`); - } -}); -socket.on('disconnect', (err) => { - if (!errorExists) { - status.style.backgroundColor = 'red'; - status.innerHTML = `WEBSOCKET SERVER DISCONNECTED: ${err}`; - } - socket.io.reconnection(false); - countdown.classList.remove('active'); -}); -socket.on('error', (err) => { - if (!errorExists) { - status.style.backgroundColor = 'red'; - status.innerHTML = `ERROR: ${err}`; - } -}); -socket.on('reauth', () => { - if (allowreauth) { - reauthSession(); - } -}); -// safe shutdown -let hasCountdownStarted = false; -socket.on('shutdownCountdownUpdate', (remainingSeconds) => { - if (!hasCountdownStarted) { - countdown.classList.add('active'); - hasCountdownStarted = true; - } - countdown.innerText = `Shutting down in ${remainingSeconds}s`; -}); -term.onTitleChange((title) => { - document.title = title; -});