mirror of
https://github.com/NuSkooler/enigma-bbs.git
synced 2025-06-10 14:44:40 +02:00
Pardon the noise. More tab to space conversion!
This commit is contained in:
parent
c3635bb26b
commit
1d8be6b014
128 changed files with 8017 additions and 8017 deletions
|
@ -1,21 +1,21 @@
|
|||
/* jslint node: true */
|
||||
'use strict';
|
||||
|
||||
// ENiGMA½
|
||||
const ansi = require('./ansi_term.js');
|
||||
// ENiGMA½
|
||||
const ansi = require('./ansi_term.js');
|
||||
const Events = require('./events.js');
|
||||
|
||||
// deps
|
||||
const async = require('async');
|
||||
// deps
|
||||
const async = require('async');
|
||||
|
||||
exports.connectEntry = connectEntry;
|
||||
exports.connectEntry = connectEntry;
|
||||
|
||||
function ansiDiscoverHomePosition(client, cb) {
|
||||
//
|
||||
// We want to find the home position. ANSI-BBS and most terminals
|
||||
// utilize 1,1 as home. However, some terminals such as ConnectBot
|
||||
// think of home as 0,0. If this is the case, we need to offset
|
||||
// our positioning to accomodate for such.
|
||||
// We want to find the home position. ANSI-BBS and most terminals
|
||||
// utilize 1,1 as home. However, some terminals such as ConnectBot
|
||||
// think of home as 0,0. If this is the case, we need to offset
|
||||
// our positioning to accomodate for such.
|
||||
//
|
||||
const done = function(err) {
|
||||
client.removeListener('cursor position report', cprListener);
|
||||
|
@ -28,7 +28,7 @@ function ansiDiscoverHomePosition(client, cb) {
|
|||
const w = pos[1];
|
||||
|
||||
//
|
||||
// We expect either 0,0, or 1,1. Anything else will be filed as bad data
|
||||
// We expect either 0,0, or 1,1. Anything else will be filed as bad data
|
||||
//
|
||||
if(h > 1 || w > 1) {
|
||||
client.log.warn( { height : h, width : w }, 'Ignoring ANSI home position CPR due to unexpected values');
|
||||
|
@ -37,7 +37,7 @@ function ansiDiscoverHomePosition(client, cb) {
|
|||
|
||||
if(0 === h & 0 === w) {
|
||||
//
|
||||
// Store a CPR offset in the client. All CPR's from this point on will offset by this amount
|
||||
// Store a CPR offset in the client. All CPR's from this point on will offset by this amount
|
||||
//
|
||||
client.log.info('Setting CPR offset to 1');
|
||||
client.cprOffset = 1;
|
||||
|
@ -50,9 +50,9 @@ function ansiDiscoverHomePosition(client, cb) {
|
|||
|
||||
const giveUpTimer = setTimeout( () => {
|
||||
return done(new Error('Giving up on home position CPR'));
|
||||
}, 3000); // 3s
|
||||
}, 3000); // 3s
|
||||
|
||||
client.term.write(`${ansi.goHome()}${ansi.queryPos()}`); // go home, query pos
|
||||
client.term.write(`${ansi.goHome()}${ansi.queryPos()}`); // go home, query pos
|
||||
}
|
||||
|
||||
function ansiQueryTermSizeIfNeeded(client, cb) {
|
||||
|
@ -68,7 +68,7 @@ function ansiQueryTermSizeIfNeeded(client, cb) {
|
|||
|
||||
const cprListener = function(pos) {
|
||||
//
|
||||
// If we've already found out, disregard
|
||||
// If we've already found out, disregard
|
||||
//
|
||||
if(client.term.termHeight > 0 || client.term.termWidth > 0) {
|
||||
return done(null);
|
||||
|
@ -78,8 +78,8 @@ function ansiQueryTermSizeIfNeeded(client, cb) {
|
|||
const w = pos[1];
|
||||
|
||||
//
|
||||
// Netrunner for example gives us 1x1 here. Not really useful. Ignore
|
||||
// values that seem obviously bad.
|
||||
// Netrunner for example gives us 1x1 here. Not really useful. Ignore
|
||||
// values that seem obviously bad.
|
||||
//
|
||||
if(h < 10 || w < 10) {
|
||||
client.log.warn(
|
||||
|
@ -88,14 +88,14 @@ function ansiQueryTermSizeIfNeeded(client, cb) {
|
|||
return done(new Error('Term size <= 10 considered invalid'));
|
||||
}
|
||||
|
||||
client.term.termHeight = h;
|
||||
client.term.termWidth = w;
|
||||
client.term.termHeight = h;
|
||||
client.term.termWidth = w;
|
||||
|
||||
client.log.debug(
|
||||
{
|
||||
termWidth : client.term.termWidth,
|
||||
termHeight : client.term.termHeight,
|
||||
source : 'ANSI CPR'
|
||||
termWidth : client.term.termWidth,
|
||||
termHeight : client.term.termHeight,
|
||||
source : 'ANSI CPR'
|
||||
},
|
||||
'Window size updated'
|
||||
);
|
||||
|
@ -105,23 +105,23 @@ function ansiQueryTermSizeIfNeeded(client, cb) {
|
|||
|
||||
client.once('cursor position report', cprListener);
|
||||
|
||||
// give up after 2s
|
||||
// give up after 2s
|
||||
const giveUpTimer = setTimeout( () => {
|
||||
return done(new Error('No term size established by CPR within timeout'));
|
||||
}, 2000);
|
||||
|
||||
// Start the process: Query for CPR
|
||||
// Start the process: Query for CPR
|
||||
client.term.rawWrite(ansi.queryScreenSize());
|
||||
}
|
||||
|
||||
function prepareTerminal(term) {
|
||||
term.rawWrite(ansi.normal());
|
||||
//term.rawWrite(ansi.disableVT100LineWrapping());
|
||||
// :TODO: set xterm stuff -- see x84/others
|
||||
// :TODO: set xterm stuff -- see x84/others
|
||||
}
|
||||
|
||||
function displayBanner(term) {
|
||||
// note: intentional formatting:
|
||||
// note: intentional formatting:
|
||||
term.pipeWrite(`
|
||||
|06Connected to |02EN|10i|02GMA|10½ |06BBS version |12|VN
|
||||
|06Copyright (c) 2014-2018 Bryan Ashby |14- |12http://l33t.codes/
|
||||
|
@ -141,26 +141,26 @@ function connectEntry(client, nextMenu) {
|
|||
},
|
||||
function discoverHomePosition(callback) {
|
||||
ansiDiscoverHomePosition(client, () => {
|
||||
// :TODO: If CPR for home fully fails, we should bail out on the connection with an error, e.g. ANSI support required
|
||||
return callback(null); // we try to continue anyway
|
||||
// :TODO: If CPR for home fully fails, we should bail out on the connection with an error, e.g. ANSI support required
|
||||
return callback(null); // we try to continue anyway
|
||||
});
|
||||
},
|
||||
function queryTermSizeByNonStandardAnsi(callback) {
|
||||
ansiQueryTermSizeIfNeeded(client, err => {
|
||||
if(err) {
|
||||
//
|
||||
// Check again; We may have got via NAWS/similar before CPR completed.
|
||||
// Check again; We may have got via NAWS/similar before CPR completed.
|
||||
//
|
||||
if(0 === term.termHeight || 0 === term.termWidth) {
|
||||
//
|
||||
// We still don't have something good for term height/width.
|
||||
// Default to DOS size 80x25.
|
||||
// We still don't have something good for term height/width.
|
||||
// Default to DOS size 80x25.
|
||||
//
|
||||
// :TODO: Netrunner is currenting hitting this and it feels wrong. Why is NAWS/ENV/CPR all failing???
|
||||
// :TODO: Netrunner is currenting hitting this and it feels wrong. Why is NAWS/ENV/CPR all failing???
|
||||
client.log.warn( { reason : err.message }, 'Failed to negotiate term size; Defaulting to 80x25!');
|
||||
|
||||
term.termHeight = 25;
|
||||
term.termWidth = 80;
|
||||
term.termHeight = 25;
|
||||
term.termWidth = 80;
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -172,7 +172,7 @@ function connectEntry(client, nextMenu) {
|
|||
prepareTerminal(term);
|
||||
|
||||
//
|
||||
// Always show an ENiGMA½ banner
|
||||
// Always show an ENiGMA½ banner
|
||||
//
|
||||
displayBanner(term);
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue