* 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:
parent
3d5d21bcb5
commit
7c0446bf79
20
core/bbs.js
20
core/bbs.js
|
@ -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;
|
||||||
}
|
}
|
||||||
|
|
|
@ -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 }
|
||||||
|
};
|
||||||
|
|
||||||
|
|
|
@ -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());
|
||||||
|
|
Binary file not shown.
24
mods/fse.js
24
mods/fse.js
|
@ -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) {
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue