Merge branch 'master' of ssh://numinibsd/git/base/enigma-bbs
This commit is contained in:
commit
49d3bdf08c
|
@ -159,7 +159,7 @@ ClientTerminal.prototype.rawWrite = function(s) {
|
||||||
};
|
};
|
||||||
|
|
||||||
ClientTerminal.prototype.pipeWrite = function(s, spec) {
|
ClientTerminal.prototype.pipeWrite = function(s, spec) {
|
||||||
spec = spec || 'enigma';
|
spec = spec || 'renegade';
|
||||||
|
|
||||||
var conv = {
|
var conv = {
|
||||||
enigma : enigmaToAnsi,
|
enigma : enigmaToAnsi,
|
||||||
|
|
|
@ -7,10 +7,10 @@ var getPredefinedMCIValue = require('./predefined_mci.js').getPredefinedMCIValue
|
||||||
var assert = require('assert');
|
var assert = require('assert');
|
||||||
var _ = require('lodash');
|
var _ = require('lodash');
|
||||||
|
|
||||||
exports.pipeToAnsi = exports.enigmaToAnsi = enigmaToAnsi;
|
exports.enigmaToAnsi = enigmaToAnsi;
|
||||||
exports.stripPipeCodes = exports.stripEnigmaCodes = stripEnigmaCodes;
|
exports.stripPipeCodes = exports.stripEnigmaCodes = stripEnigmaCodes;
|
||||||
exports.pipeStrLen = exports.enigmaStrLen = enigmaStrLen;
|
exports.pipeStrLen = exports.enigmaStrLen = enigmaStrLen;
|
||||||
exports.renegadeToAnsi = renegadeToAnsi;
|
exports.pipeToAnsi = exports.renegadeToAnsi = renegadeToAnsi;
|
||||||
|
|
||||||
// :TODO: Not really happy with the module name of "color_codes". Would like something better
|
// :TODO: Not really happy with the module name of "color_codes". Would like something better
|
||||||
|
|
||||||
|
@ -83,13 +83,13 @@ function enigmaStrLen(s) {
|
||||||
return stripEnigmaCodes(s).length;
|
return stripEnigmaCodes(s).length;
|
||||||
}
|
}
|
||||||
|
|
||||||
function renegadeToAnsi(s) {
|
function renegadeToAnsi(s, client) {
|
||||||
if(-1 == s.indexOf('|')) {
|
if(-1 == s.indexOf('|')) {
|
||||||
return s; // no pipe codes present
|
return s; // no pipe codes present
|
||||||
}
|
}
|
||||||
|
|
||||||
var result = '';
|
var result = '';
|
||||||
var re = /\|(\d{2}|\|)/g;
|
var re = /\|([A-Z\d]{2}|\|)/g;
|
||||||
var m;
|
var m;
|
||||||
var lastIndex = 0;
|
var lastIndex = 0;
|
||||||
while((m = re.exec(s))) {
|
while((m = re.exec(s))) {
|
||||||
|
@ -103,40 +103,44 @@ if(-1 == s.indexOf('|')) {
|
||||||
// convert to number
|
// convert to number
|
||||||
val = parseInt(val, 10);
|
val = parseInt(val, 10);
|
||||||
if(isNaN(val)) {
|
if(isNaN(val)) {
|
||||||
val = 0;
|
val = getPredefinedMCIValue(client, m[1]) || ('|' + m[1]); // value itself or literal
|
||||||
}
|
}
|
||||||
assert(val >= 0 && val <= 23);
|
|
||||||
|
|
||||||
var attr = ansi.sgr({
|
if(_.isString(val)) {
|
||||||
0 : [ 'reset', 'black' ],
|
result += s.substr(lastIndex, m.index - lastIndex) + val;
|
||||||
1 : [ 'reset', 'blue' ],
|
} else {
|
||||||
2 : [ 'reset', 'green' ],
|
var attr = ansi.sgr({
|
||||||
3 : [ 'reset', 'cyan' ],
|
0 : [ 'reset', 'black' ],
|
||||||
4 : [ 'reset', 'red' ],
|
1 : [ 'reset', 'blue' ],
|
||||||
5 : [ 'reset', 'magenta' ],
|
2 : [ 'reset', 'green' ],
|
||||||
6 : [ 'reset', 'yellow' ],
|
3 : [ 'reset', 'cyan' ],
|
||||||
7 : [ 'reset', 'white' ],
|
4 : [ 'reset', 'red' ],
|
||||||
|
5 : [ 'reset', 'magenta' ],
|
||||||
|
6 : [ 'reset', 'yellow' ],
|
||||||
|
7 : [ 'reset', 'white' ],
|
||||||
|
|
||||||
8 : [ 'bold', 'black' ],
|
8 : [ 'bold', 'black' ],
|
||||||
9 : [ 'bold', 'blue' ],
|
9 : [ 'bold', 'blue' ],
|
||||||
10 : [ 'bold', 'green' ],
|
10 : [ 'bold', 'green' ],
|
||||||
11 : [ 'bold', 'cyan' ],
|
11 : [ 'bold', 'cyan' ],
|
||||||
12 : [ 'bold', 'red' ],
|
12 : [ 'bold', 'red' ],
|
||||||
13 : [ 'bold', 'magenta' ],
|
13 : [ 'bold', 'magenta' ],
|
||||||
14 : [ 'bold', 'yellow' ],
|
14 : [ 'bold', 'yellow' ],
|
||||||
15 : [ 'bold', 'white' ],
|
15 : [ 'bold', 'white' ],
|
||||||
|
|
||||||
16 : [ 'blackBG' ],
|
16 : [ 'blackBG' ],
|
||||||
17 : [ 'blueBG' ],
|
17 : [ 'blueBG' ],
|
||||||
18 : [ 'greenBG' ],
|
18 : [ 'greenBG' ],
|
||||||
19 : [ 'cyanBG' ],
|
19 : [ 'cyanBG' ],
|
||||||
20 : [ 'redBG' ],
|
20 : [ 'redBG' ],
|
||||||
21 : [ 'magentaBG' ],
|
21 : [ 'magentaBG' ],
|
||||||
22 : [ 'yellowBG' ],
|
22 : [ 'yellowBG' ],
|
||||||
23 : [ 'whiteBG' ],
|
23 : [ 'whiteBG' ],
|
||||||
}[val] || 'normal');
|
}[val] || 'normal');
|
||||||
|
|
||||||
|
result += s.substr(lastIndex, m.index - lastIndex) + attr;
|
||||||
|
}
|
||||||
|
|
||||||
result += s.substr(lastIndex, m.index - lastIndex) + attr;
|
|
||||||
lastIndex = re.lastIndex;
|
lastIndex = re.lastIndex;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -78,9 +78,9 @@ function prepareTerminal(term) {
|
||||||
|
|
||||||
function displayBanner(term) {
|
function displayBanner(term) {
|
||||||
term.pipeWrite(
|
term.pipeWrite(
|
||||||
'|33Conected to |32EN|33|01i|00|32|22GMA|32|01½|00 |33BBS version|31|01 |VN\n' +
|
'|06Conected to |02EN|10i|02GMA|10½ |06BBS version |12|VN\n' +
|
||||||
'|00|33Copyright (c) 2014-2015 Bryan Ashby |33|01- |31|01http://l33t.codes/\n' +
|
'|06Copyright (c) 2014-2015 Bryan Ashby |14- |12http://l33t.codes/\n' +
|
||||||
'|00|33Updates & source |01- |31|01https://github.com/NuSkooler/enigma-bbs/\n' +
|
'|06Updates & source |14- |12https://github.com/NuSkooler/enigma-bbs/\n' +
|
||||||
'|00');
|
'|00');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -90,7 +90,7 @@ function VerticalMenuView(options) {
|
||||||
// :TODO: shoudl we detect if pipe codes are used?
|
// :TODO: shoudl we detect if pipe codes are used?
|
||||||
self.client.term.write(
|
self.client.term.write(
|
||||||
ansi.goto(item.row, self.position.col) +
|
ansi.goto(item.row, self.position.col) +
|
||||||
colorCodes.enigmaToAnsi(text)
|
colorCodes.pipeToAnsi(text, self.client)
|
||||||
);
|
);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -1,119 +0,0 @@
|
||||||
{
|
|
||||||
info: {
|
|
||||||
name: Nu Mayan
|
|
||||||
author: NuSkooler
|
|
||||||
}
|
|
||||||
|
|
||||||
customization: {
|
|
||||||
|
|
||||||
defaults: {
|
|
||||||
general: {
|
|
||||||
passwordChar: φ
|
|
||||||
}
|
|
||||||
|
|
||||||
dateFormat: {
|
|
||||||
short: YYYY-MMM-DD
|
|
||||||
}
|
|
||||||
|
|
||||||
timeFormat: {
|
|
||||||
short: h:mm:ss a
|
|
||||||
}
|
|
||||||
|
|
||||||
mci: {
|
|
||||||
TM: {
|
|
||||||
styleSGR1: |00|30|01
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
menus: {
|
|
||||||
matrix: {
|
|
||||||
VM1: {
|
|
||||||
itemSpacing: 1
|
|
||||||
justify: center
|
|
||||||
width: 12
|
|
||||||
focusTextStyle: l33t
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
apply: {
|
|
||||||
ET1: { width: 21 }
|
|
||||||
|
|
||||||
ET2: { width: 21 }
|
|
||||||
|
|
||||||
ME3: {
|
|
||||||
styleSGR1: |00|30|01
|
|
||||||
styleSGR2: |00|37
|
|
||||||
fillChar: "#"
|
|
||||||
}
|
|
||||||
|
|
||||||
ET4: { width: 1 }
|
|
||||||
ET5: { width: 21 }
|
|
||||||
ET6: { width: 21 }
|
|
||||||
ET7: { width: 21 }
|
|
||||||
ET8: { width: 21 }
|
|
||||||
ET9: { width: 21 }
|
|
||||||
ET10: { width: 21 }
|
|
||||||
}
|
|
||||||
|
|
||||||
newUserApplication: {
|
|
||||||
ET1: { width: 38 }
|
|
||||||
|
|
||||||
ET2: { width: 38 }
|
|
||||||
|
|
||||||
/*ME3: {
|
|
||||||
styleSGR1: |00|30|01
|
|
||||||
styleSGR2: |00|37
|
|
||||||
fillChar: "#"
|
|
||||||
}*/
|
|
||||||
|
|
||||||
//ET4: { width: 1 }
|
|
||||||
ET5: { width: 38 }
|
|
||||||
ET6: { width: 38 }
|
|
||||||
ET7: { width: 38 }
|
|
||||||
ET8: { width: 38 }
|
|
||||||
ET9: { width: 38 }
|
|
||||||
ET10: { width: 38 }
|
|
||||||
TM12: {
|
|
||||||
focusTextStyle: first lower
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
lastCallers: {
|
|
||||||
TL1: {
|
|
||||||
resizable: false
|
|
||||||
width: 16
|
|
||||||
textOverflow: ...
|
|
||||||
}
|
|
||||||
|
|
||||||
TL2: {
|
|
||||||
resizable: false
|
|
||||||
width: 19
|
|
||||||
textOverflow: ...
|
|
||||||
}
|
|
||||||
|
|
||||||
TL3: {
|
|
||||||
resizable: false
|
|
||||||
width: 17
|
|
||||||
textOverflow: ...
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
messageAreaViewPost: {
|
|
||||||
0: {
|
|
||||||
TL3: {
|
|
||||||
width: 27
|
|
||||||
textOverflow: ...
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
prompts: {
|
|
||||||
userCredentials: {
|
|
||||||
ET1: { width: 21 }
|
|
||||||
ET2: { width: 21 }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
|
@ -114,7 +114,7 @@
|
||||||
|
|
||||||
mainMenuLastCallers: {
|
mainMenuLastCallers: {
|
||||||
config: {
|
config: {
|
||||||
listFormat: "|00|01|36{userName:<17.17}{location:<20.20}{affils:<17.17}{ts:<15}"
|
listFormat: "|00|11{userName:<17.17}|03{location:<20.20}|11{affils:<17.17}|03{ts:<15}"
|
||||||
dateTimeFormat: MMM Do h:mma
|
dateTimeFormat: MMM Do h:mma
|
||||||
}
|
}
|
||||||
mci: {
|
mci: {
|
||||||
|
@ -124,8 +124,8 @@
|
||||||
|
|
||||||
mainMenuUserList: {
|
mainMenuUserList: {
|
||||||
config: {
|
config: {
|
||||||
listFormat: "|00|01|36{userName:<17.17}{affils:<21.21}{note:<19.19}{lastLoginTs}"
|
listFormat: "|00|11{userName:<17.17}|03{affils:<21.21}|11{note:<19.19}|03{lastLoginTs}"
|
||||||
focusListFormat: "|00|42|30{userName:<17.17}{affils:<21.21}{note:<19.19}{lastLoginTs}"
|
focusListFormat: "|00|19|15{userName:<17.17}{affils:<21.21}{note:<19.19}{lastLoginTs}"
|
||||||
dateTimeFormat: MMM Do h:mma
|
dateTimeFormat: MMM Do h:mma
|
||||||
}
|
}
|
||||||
mci: {
|
mci: {
|
||||||
|
@ -135,7 +135,7 @@
|
||||||
|
|
||||||
mainMenuWhosOnline: {
|
mainMenuWhosOnline: {
|
||||||
config: {
|
config: {
|
||||||
listFormat: "|00|01|36{node:<6.6}{userName:<17.17}{affils:<19.19}{action:<20.20}{timeOn:<8}"
|
listFormat: "|00|03{node:<6.6}|11{userName:<17.17}|03{affils:<19.19}|11{action:<20.20}|03{timeOn:<8}"
|
||||||
}
|
}
|
||||||
mci: {
|
mci: {
|
||||||
VM1: { height: 10 }
|
VM1: { height: 10 }
|
||||||
|
@ -144,8 +144,8 @@
|
||||||
|
|
||||||
messageAreaMessageList: {
|
messageAreaMessageList: {
|
||||||
config: {
|
config: {
|
||||||
listFormat: "|00|01|37{msgNum:>4} |00|37- |36{subj:<29.29} {from:<20.20} {ts} |01|31{newIndicator}"
|
listFormat: "|00|15{msgNum:>4} |03{subj:<29.29} |11{from:<20.20} |03{ts} |01|31{newIndicator}"
|
||||||
focusListFormat: "|00|42|30{msgNum:>4} - {subj:<29.29} {from:<20.20} {ts} {newIndicator}"
|
focusListFormat: "|00|19|15{msgNum:>4} {subj:<29.29} {from:<20.20} {ts} {newIndicator}"
|
||||||
dateTimeFormat: ddd MMM Do
|
dateTimeFormat: ddd MMM Do
|
||||||
}
|
}
|
||||||
mci: {
|
mci: {
|
||||||
|
@ -157,8 +157,8 @@
|
||||||
|
|
||||||
messageAreaChangeCurrentArea: {
|
messageAreaChangeCurrentArea: {
|
||||||
config: {
|
config: {
|
||||||
listFormat: "|00|01|37{index} |00|37- |36{desc}"
|
listFormat: "|00|15{index} |07- |03{desc}"
|
||||||
focusListFormat: "|00|42|30{index} - {desc}"
|
focusListFormat: "|00|19|15{index} - {desc}"
|
||||||
}
|
}
|
||||||
mci: {
|
mci: {
|
||||||
VM1: {
|
VM1: {
|
||||||
|
@ -240,7 +240,7 @@
|
||||||
|
|
||||||
fullLoginSequenceLastCallers: {
|
fullLoginSequenceLastCallers: {
|
||||||
config: {
|
config: {
|
||||||
listFormat: "|00|01|36{userName:<17.17}{location:<20.20}{affils:<17.17}{ts:<15}"
|
listFormat: "|00|11{userName:<17.17}|03{location:<20.20}|11{affils:<17.17}|03{ts:<15}"
|
||||||
dateTimeFormat: MMM Do h:mma
|
dateTimeFormat: MMM Do h:mma
|
||||||
}
|
}
|
||||||
mci: {
|
mci: {
|
||||||
|
@ -250,7 +250,7 @@
|
||||||
|
|
||||||
fullLoginSequenceWhosOnline: {
|
fullLoginSequenceWhosOnline: {
|
||||||
config: {
|
config: {
|
||||||
listFormat: "|00|01|36{node:<6.6}{userName:<17.17}{affils:<19.19}{action:<20.20}{timeOn:<8}"
|
listFormat: "|00|03{node:<6.6}|11{userName:<17.17}|03{affils:<19.19}|11{action:<20.20}|03{timeOn:<8}"
|
||||||
}
|
}
|
||||||
mci: {
|
mci: {
|
||||||
VM1: { height: 10 }
|
VM1: { height: 10 }
|
||||||
|
|
|
@ -84,10 +84,11 @@ UserListModule.prototype.mciReady = function(mciData, cb) {
|
||||||
userId : ue.userId,
|
userId : ue.userId,
|
||||||
userName : ue.userName,
|
userName : ue.userName,
|
||||||
affils : ue.affiliation,
|
affils : ue.affiliation,
|
||||||
|
location : ue.location,
|
||||||
// :TODO: the rest!
|
// :TODO: the rest!
|
||||||
note : ue.note || '',
|
note : ue.note || '',
|
||||||
lastLoginTs : moment(ue.last_login_timestamp).format(dateTimeFormat),
|
lastLoginTs : moment(ue.last_login_timestamp).format(dateTimeFormat),
|
||||||
}
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
userListView.setItems(_.map(userList, function formatUserEntry(ue) {
|
userListView.setItems(_.map(userList, function formatUserEntry(ue) {
|
||||||
|
|
Loading…
Reference in New Issue