diff --git a/run_server.py b/run_server.py index 41f70fe25..4a4047c62 100755 --- a/run_server.py +++ b/run_server.py @@ -362,6 +362,7 @@ class WebTerminalHandler(tornado.websocket.WebSocketHandler): return if 'resize' in jsondata.get('data'): + self.termlog.write(jsondata) self.channel.resize_pty( jsondata.get('data').get('resize').get('cols', 80), jsondata.get('data').get('resize').get('rows', 24) diff --git a/static/js/record.js b/static/js/record.js index 910ebbc22..ddcb15755 100644 --- a/static/js/record.js +++ b/static/js/record.js @@ -56,7 +56,12 @@ NgApp.controller('TerminalRecordCtrl', function ($scope, $http) { document.getElementById("beforeScrubberText").innerHTML = buildTimeString(time); for (; pos < timelist.length; pos++) { if (timelist[pos] * 1000 <= time) { - term.write(data[timelist[pos]]); + try{ + var findResize = JSON.parse(data[timelist[pos]])['reszie']; + term.resize(findResize['cols'], findResize['rows']) + } catch (err) { + term.write(data[timelist[pos]]); + } } else { break; } diff --git a/static/js/webterminal.js b/static/js/webterminal.js index 50e21276f..4205e04b2 100644 --- a/static/js/webterminal.js +++ b/static/js/webterminal.js @@ -36,7 +36,7 @@ WSSHClient.prototype.connect = function (options) { }; this._connection.onmessage = function (evt) { - try{ + try { options.onData(evt.data); } catch (e) { var data = JSON.parse(evt.data.toString()); @@ -55,6 +55,15 @@ WSSHClient.prototype.send = function (data) { function openTerminal(options) { var client = new WSSHClient(); + var rowHeight, colWidth; + try { + rowHeight = localStorage.getItem('term-row'); + colWidth = localStorage.getItem('term-col'); + } catch (err) { + rowHeight = 24; + colWidth = 80 + } + var term = new Terminal({ rows: rowHeight, cols: colWidth, @@ -66,7 +75,7 @@ function openTerminal(options) { client.send(data) }); $('.terminal').detach().appendTo('#term'); - term.resize(80, 24); + //term.resize(colWidth, rowHeight); term.write('Connecting...'); client.connect($.extend(options, { onError: function (error) { @@ -74,6 +83,7 @@ function openTerminal(options) { }, onConnect: function () { // Erase our connecting message + client.send({'resize': {'rows': rowHeight, 'cols': colWidth}}); term.write('\r'); }, onClose: function () { @@ -83,20 +93,20 @@ function openTerminal(options) { term.write(data); } })); - rowHeight = 0.0 + 1.00 * $('.terminal').height() / 24; - colWidth = 0.0 + 1.00 * $('.terminal').width() / 80; + //rowHeight = 0.0 + 1.00 * $('.terminal').height() / 24; + //colWidth = 0.0 + 1.00 * $('.terminal').width() / 80; return {'term': term, 'client': client}; } -function resize() { - $('.terminal').css('width', window.innerWidth - 25); - console.log(window.innerWidth); - console.log(window.innerWidth - 10); - var rows = Math.floor(window.innerHeight / rowHeight) - 2; - var cols = Math.floor(window.innerWidth / colWidth) - 1; - - return {rows: rows, cols: cols}; -} +//function resize() { +// $('.terminal').css('width', window.innerWidth - 25); +// console.log(window.innerWidth); +// console.log(window.innerWidth - 10); +// var rows = Math.floor(window.innerHeight / rowHeight) - 2; +// var cols = Math.floor(window.innerWidth / colWidth) - 1; +// +// return {rows: rows, cols: cols}; +//} $(document).ready(function () { var options = {}; @@ -112,5 +122,21 @@ $(document).ready(function () { // term_client.client.send({'resize': {'rows': geom.rows, 'cols': geom.cols}}); // $('#ssh').show(); //} + try { + $('#term-row')[0].value = localStorage.getItem('term-row'); + $('#term-col')[0].value = localStorage.getItem('term-col'); + } catch (err) { + $('#term-row')[0].value = 24; + $('#term-col')[0].value = 80; + } + $('#col-row').click(function () { + var col = $('#term-col').val(); + var row = $('#term-row').val(); + localStorage.setItem('term-col', col); + localStorage.setItem('term-row', row); + term_client.term.resize(col, row); + term_client.client.send({'resize': {'rows': row, 'cols': col}}); + $('#ssh').show(); + }) }); \ No newline at end of file diff --git a/templates/jlog/log_online.html b/templates/jlog/log_online.html index 4f2e60213..e40098685 100644 --- a/templates/jlog/log_online.html +++ b/templates/jlog/log_online.html @@ -173,8 +173,14 @@ $('.terminal').detach().appendTo('#term'); $('.terminal').show(); socket.onmessage = function(evt){ - term.write(evt.data); - }}, 1000); + try { + var findResize = JSON.parse(evt.data)['resize']; + term.resize(findResize['cols'], findResize['rows']) + } catch (err) { + term.write(evt.data); + } + } + }, 1000); return tag[0]; } , diff --git a/templates/jlog/web_terminal.html b/templates/jlog/web_terminal.html index b5aae590d..af27e1127 100644 --- a/templates/jlog/web_terminal.html +++ b/templates/jlog/web_terminal.html @@ -1,43 +1,57 @@ - - - Jumpserver Web Terminal: {{ hostname }} + + + Jumpserver Web Terminal: {{ hostname }} - - + .reverse-video { + color: #000; + background: #f0f0f0; + } - -
-
-
-
+ .clock { + line-height: 1; + margin: 0 auto; + border: 1px solid #ffffff; + color: #fff; + background-color: #ffffff; + position: fixed; + right: 0; + top: 0; + } + + - - - - + +
+
+
+
+
+ + + +
+ + + +