Added missing locale command support:
packages/bare-os-coreutils/src/locale.js registered in packages/bare-os-coreutils/lib/commands.mjs Fixed trustctl generated runtime mismatch: added preamble wiring in packages/bare-os-coreutils/build.mjs (trustctl: ['p2p-suite.js']) Improved help behavior: packages/bare-os-coreutils/src/ssh-keygen.js (help, -h, --help, -?) packages/bare-os-coreutils/src/oidc-publish.js (help detection across args) Improved procstat empty-state UX while preserving JSON output: packages/bare-os-coreutils/src/procstat.js adds sourcePath and additive hint when process table is empty Enforced stricter network behavior: packages/bare-os-coreutils/src/whois.js prefers ctx.httpFetch, adds bounded timeout via AbortController clearer timeout/policy/offline error mapping packages/bare-os-coreutils/src/telnet.js strict-close behavior by default --strict-close / --no-strict-close BARE_OS_TELNET_STRICT_CLOSE env override Implemented expected-item UX/compat updates: packages/bare-os-coreutils/src/iconv.js: added -l/--list, improved encoding-pair error messaging packages/bare-os-coreutils/src/crontab.js: clearer -l empty-file message packages/bare-os-coreutils/src/getconf.js: added PAGE_SIZE / PAGESIZE aliases packages/bare-os-coreutils/src/nproc.js: clarified help text packages/bare-os-coreutils/src/time.js: clarified output comments/behavior
This commit is contained in:
+21
-1
@@ -108,7 +108,7 @@ function telnetUsage() {
|
||||
return (
|
||||
'usage: telnet [--ipv4|--ipv6] [--connect-timeout-ms N] [--timeout-ms N] [--keepalive-ms N]\n' +
|
||||
' [--reconnect N] [--reconnect-delay-ms N] [--naws-cols N] [--naws-rows N]\n' +
|
||||
' [--ttype NAME] host [port]\n' +
|
||||
' [--ttype NAME] [--strict-close|--no-strict-close] host [port]\n' +
|
||||
'\n' +
|
||||
'escape command mode: Ctrl-] then one of: quit, close, reconnect, status, send <text>\n'
|
||||
)
|
||||
@@ -365,6 +365,7 @@ function bareTelnetParseArgs(argv) {
|
||||
nawsCols: 80,
|
||||
nawsRows: 24,
|
||||
ttype: 'bare-os'
|
||||
strictClose: true
|
||||
}
|
||||
var pos = []
|
||||
for (var i = 0; i < rest.length; i++) {
|
||||
@@ -410,6 +411,14 @@ function bareTelnetParseArgs(argv) {
|
||||
opts.ttype = String(rest[++i] || 'bare-os')
|
||||
continue
|
||||
}
|
||||
if (a === '--strict-close') {
|
||||
opts.strictClose = true
|
||||
continue
|
||||
}
|
||||
if (a === '--no-strict-close') {
|
||||
opts.strictClose = false
|
||||
continue
|
||||
}
|
||||
if (a.startsWith('-')) return { error: 'unknown option: ' + a }
|
||||
pos.push(a)
|
||||
}
|
||||
@@ -639,6 +648,8 @@ async function bareTelnetRunSession(ctx, host, port, opts) {
|
||||
var parseState = bareTelnetNewParseState()
|
||||
var nego = bareTelnetMakeNego(opts)
|
||||
var ended = false
|
||||
var sawData = false
|
||||
var userClosed = false
|
||||
var localRaw = false
|
||||
var idleTimer = null
|
||||
var keepTimer = null
|
||||
@@ -684,6 +695,7 @@ async function bareTelnetRunSession(ctx, host, port, opts) {
|
||||
var parsed = bareTelnetParseChunk(parseState, chunk)
|
||||
parseState = parsed.state
|
||||
if (parsed.data.length) bareTelnetWriteOut(stdout, bareTelnetDecodeUtf8(parsed.data))
|
||||
if (parsed.data.length) sawData = true
|
||||
for (var i = 0; i < parsed.commands.length; i++) {
|
||||
var c = parsed.commands[i]
|
||||
if (c.kind === 'neg') {
|
||||
@@ -711,6 +723,7 @@ async function bareTelnetRunSession(ctx, host, port, opts) {
|
||||
}
|
||||
if (cmd === 'quit' || cmd === 'close') {
|
||||
ended = true
|
||||
userClosed = true
|
||||
try {
|
||||
socket.end()
|
||||
} catch {
|
||||
@@ -741,6 +754,10 @@ async function bareTelnetRunSession(ctx, host, port, opts) {
|
||||
}
|
||||
var onSocketEnd = function () {
|
||||
ended = true
|
||||
if (opts.strictClose && !userClosed && !sawData) {
|
||||
reject(new Error('remote closed connection before interactive session'))
|
||||
return
|
||||
}
|
||||
resolve()
|
||||
}
|
||||
var onSocketError = function (e) {
|
||||
@@ -806,5 +823,8 @@ async function run(ctx, argv) {
|
||||
ctx.exitCode = 1
|
||||
return
|
||||
}
|
||||
const envStrict = String(ctx.vfs?.env?.BARE_OS_TELNET_STRICT_CLOSE || '').trim()
|
||||
if (envStrict === '0' || envStrict === 'false') parsed.opts.strictClose = false
|
||||
if (envStrict === '1' || envStrict === 'true') parsed.opts.strictClose = true
|
||||
await bareTelnetRunSession(ctx, parsed.host, parsed.port, parsed.opts)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user