* Fixed some logging of client IP addresses/etc.

* Some updates to FSE work for position and edit mode display
* Use cursor save/restore for some things vs internal tracking
This commit is contained in:
Bryan Ashby 2015-07-05 23:16:22 -06:00
parent 3d5d21bcb5
commit 7c0446bf79
5 changed files with 51 additions and 22 deletions

View File

@ -159,8 +159,6 @@ function startListening() {
addNewClient(client); addNewClient(client);
//logger.log.info({ clientId : client.runtime.id, from : client.address(), server : module.moduleInfo.name }, 'Client connected');
client.on('ready', function onClientReady() { client.on('ready', function onClientReady() {
// Go to module -- use default error handler // Go to module -- use default error handler
prepareClient(client, function onPrepared() { prepareClient(client, function onPrepared() {
@ -198,20 +196,14 @@ function addNewClient(client) {
// Create a client specific logger // Create a client specific logger
client.log = logger.log.child( { clientId : id } ); client.log = logger.log.child( { clientId : id } );
// :TODO: if client.log concept is kept, clean this up to use it: var connInfo = { ip : client.input.remoteAddress };
var connInfo = { if(client.log.debug()) {
connectionCount : clientConnections.length, connInfo.port = client.input.localPort;
clientId : client.runtime.id, connInfo.family = client.input.localFamily;
};
if(logger.log.debug()) {
connInfo.address = client.address();
} else {
connInfo.ip = client.address().address;
} }
logger.log.info(connInfo, 'Client connected'); client.log.info(connInfo, 'Client connected');
return id; return id;
} }

View File

@ -780,8 +780,7 @@ function MultiLineEditTextView(options) {
}; };
this.keyPressInsert = function() { this.keyPressInsert = function() {
// :TODO: emit event self.toggleTextEditMode();
self.overtypeMode = !self.overtypeMode;
}; };
this.keyPressTab = function() { this.keyPressTab = function() {
@ -1006,11 +1005,13 @@ function MultiLineEditTextView(options) {
}; };
this.emitPosition = function() { this.emitPosition = function() {
self.emit( self.emit('cursor position', self.getEditPosition());
'cursor position',
{ row : self.getTextLinesIndex(self.cursorPos.row), col : self.cursorPos.col });
}; };
this.toggleTextEditMode = function() {
self.overtypeMode = !self.overtypeMode;
self.emit('text edit mode', self.getTextEditMode());
};
} }
require('util').inherits(MultiLineEditTextView, View); require('util').inherits(MultiLineEditTextView, View);
@ -1091,3 +1092,12 @@ MultiLineEditTextView.prototype.onKeyPress = function(ch, key) {
MultiLineEditTextView.super_.prototype.onKeyPress.call(this, ch, key); MultiLineEditTextView.super_.prototype.onKeyPress.call(this, ch, key);
} }
}; };
MultiLineEditTextView.prototype.getTextEditMode = function() {
return this.overtypeMode ? 'overtype' : 'insert';
};
MultiLineEditTextView.prototype.getEditPosition = function() {
return { row : this.getTextLinesIndex(this.cursorPos.row), col : this.cursorPos.col }
};

View File

@ -432,8 +432,15 @@ function TelnetClient(input, output) {
var i; var i;
while((i = bufs.indexOf(IAC_BUF)) >= 0) { while((i = bufs.indexOf(IAC_BUF)) >= 0) {
/*
if(bufs.length < (i + 1)) {
i = MORE_DATA_REQUIRED;
break;
}
*/
// :TODO: Android client Irssi ConnectBot asserts here: // :TODO: Android client Irssi ConnectBot asserts here:
assert(bufs.length > (i + 1), 'bufs.length=' + bufs.length + ' i=' + i + ' bufs=' + bufs); assert(bufs.length > (i + 1),
'bufs.length=' + bufs.length + ' i=' + i + ' bufs=' + require('../string_util.js').debugEscapedString(bufs.toBuffer()))
if(i > 0) { if(i > 0) {
self.emit('data', bufs.splice(0, i).toBuffer()); self.emit('data', bufs.splice(0, i).toBuffer());

View File

@ -133,6 +133,10 @@ function FullScreenEditorModule(options) {
} }
], ],
function complete(err) { function complete(err) {
var bodyView = self.getBodyView();
self.updateTextEditMode(bodyView.getTextEditMode());
self.updateEditModePosition(bodyView.getEditPosition());
self.viewControllers.body.removeFocus(); // :TODO: Change vc to allow *not* setting focus @ create self.viewControllers.body.removeFocus(); // :TODO: Change vc to allow *not* setting focus @ create
self.viewControllers.header.switchFocus(1); self.viewControllers.header.switchFocus(1);
} }
@ -147,8 +151,20 @@ function FullScreenEditorModule(options) {
if('edit' === this.editorMode) { if('edit' === this.editorMode) {
var posView = self.viewControllers[self.getFooterName(false)].getView(1); var posView = self.viewControllers[self.getFooterName(false)].getView(1);
if(posView) { if(posView) {
posView.setText(pos.row + ',' + pos.col); self.client.term.rawWrite(ansi.savePos());
self.getBodyView().setFocus(true); posView.setText(_.padLeft(String(pos.row + 1), 2, '0') + ',' + _.padLeft(String(pos.col + 1), 2, '0'));
self.client.term.rawWrite(ansi.restorePos());
}
}
};
this.updateTextEditMode = function(mode) {
if('edit' === this.editorMode) {
var modeView = self.viewControllers[self.getFooterName(false)].getView(2);
if(modeView) {
self.client.term.rawWrite(ansi.savePos());
modeView.setText('insert' === mode ? 'INS' : 'OVR');
self.client.term.rawWrite(ansi.restorePos());
} }
} }
}; };
@ -163,6 +179,10 @@ function FullScreenEditorModule(options) {
self.getBodyView().on('cursor position', function cursorPosUpdate(pos) { self.getBodyView().on('cursor position', function cursorPosUpdate(pos) {
self.updateEditModePosition(pos); self.updateEditModePosition(pos);
}); });
self.getBodyView().on('text edit mode', function textEditMode(mode) {
self.updateTextEditMode(mode);
});
}, },
editorEscPressed : function(formData, extraArgs) { editorEscPressed : function(formData, extraArgs) {