All Downloads are FREE. Search and download functionalities are using the official Maven repository.

io.termd.core.http.web-console.js Maven / Gradle / Ivy

Go to download

An open source terminal daemon library providing terminal handling in Java, back ported to Alibaba by core engine team to support running on JDK 6+.

There is a newer version: 1.1.7.14
Show newest version
var ws;
var xterm;

$(function () {
    var url = window.location.href;
    var ip = getUrlParam('ip');
    var port = getUrlParam('port');

    if (ip != '' && ip != null) {
        $('#ip').val(ip);
    }
    if (port != '' && port != null) {
        $('#port').val(port);
    }

    startConnect(true);
});

/** get params in url **/
function getUrlParam (name, url) {
    if (!url) url = window.location.href;
    name = name.replace(/[\[\]]/g, '\\$&');
    var regex = new RegExp('[?&]' + name + '(=([^&#]*)|&|#|$)'),
        results = regex.exec(url);
    if (!results) return null;
    if (!results[2]) return '';
    return decodeURIComponent(results[2].replace(/\+/g, ' '));
}

function getCharSize () {
    var tempDiv = $('
').attr({'role': 'listitem'}); var tempSpan = $('
').html('qwertyuiopasdfghjklzxcvbnm'); tempDiv.append(tempSpan); $("html body").append(tempDiv); var size = { width: tempSpan.outerWidth() / 26, height: tempSpan.outerHeight(), left: tempDiv.outerWidth() - tempSpan.outerWidth(), top: tempDiv.outerHeight() - tempSpan.outerHeight(), }; tempDiv.remove(); return size; } function getWindowSize () { var e = window; var a = 'inner'; if (!('innerWidth' in window )) { a = 'client'; e = document.documentElement || document.body; } var terminalDiv = document.getElementById("terminal-card"); var terminalDivRect = terminalDiv.getBoundingClientRect(); return { width: terminalDivRect.width, height: e[a + 'Height'] - terminalDivRect.top }; } function getTerminalSize () { var charSize = getCharSize(); var windowSize = getWindowSize(); console.log('charsize'); console.log(charSize); console.log('windowSize'); console.log(windowSize); return { cols: Math.floor((windowSize.width - charSize.left) / 10), rows: Math.floor((windowSize.height - charSize.top) / 17) }; } /** init websocket **/ function initWs (ip, port) { var path = 'ws://' + ip + ':' + port + '/ws'; ws = new WebSocket(path); } /** init xterm **/ function initXterm (cols, rows) { xterm = new Terminal({ cols: cols, rows: rows, screenReaderMode: true, rendererType: 'canvas', convertEol: true }); } /** begin connect **/ function startConnect (silent) { var ip = $('#ip').val(); var port = $('#port').val(); if (ip == '' || port == '') { alert('Ip or port can not be empty'); return; } if (ws != null) { alert('Already connected'); return; } // init webSocket initWs(ip, port); ws.onerror = function () { ws = null; !silent && alert('Connect error'); }; ws.onopen = function () { console.log('open'); $('#fullSc').show(); var terminalSize = getTerminalSize() console.log('terminalSize') console.log(terminalSize) // init xterm initXterm(terminalSize.cols, terminalSize.rows) ws.onmessage = function (event) { if (event.type === 'message') { var data = event.data; xterm.write(data); } }; xterm.open(document.getElementById('terminal')); xterm.on('data', function (data) { ws.send(JSON.stringify({action: 'read', data: data})) }); ws.send(JSON.stringify({action: 'resize', cols: terminalSize.cols, rows: terminalSize.rows})); window.setInterval(function () { if (ws != null) { ws.send(JSON.stringify({action: 'read', data: ""})); } }, 30000); } } function disconnect () { try { ws.onmessage = null; ws.onclose = null; ws = null; xterm.destroy(); $('#fullSc').hide(); alert('Connection was closed successfully!'); } catch (e) { alert('No connection, please start connect first.'); } } /** full screen show **/ function xtermFullScreen () { var ele = document.getElementById('terminal-card'); requestFullScreen(ele); } function requestFullScreen (element) { var requestMethod = element.requestFullScreen || element.webkitRequestFullScreen || element.mozRequestFullScreen || element.msRequestFullScreen; if (requestMethod) { requestMethod.call(element); } else if (typeof window.ActiveXObject !== "undefined") { var wscript = new ActiveXObject("WScript.Shell"); if (wscript !== null) { wscript.SendKeys("{F11}"); } } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy