IRC Commands
Release rolling / release (push) Canceled after 8m43s

This commit is contained in:
Raven Scott
2026-08-13 00:33:57 -04:00
parent 15afc148d7
commit 8bb8254c42
22 changed files with 3799 additions and 1228 deletions
+59 -8
View File
@@ -1,5 +1,29 @@
/** Libera defaults + ~/.irc config/secrets. */
function bareIrcRandomSuffix(n) {
var alphabet = 'abcdefghijkmnpqrstuvwxyz23456789'
var out = ''
var i
var len = n > 0 ? n : 4
for (i = 0; i < len; i++) {
out += alphabet.charAt(Math.floor(Math.random() * alphabet.length))
}
return out
}
function bareIrcRandomNick() {
return ('os' + bareIrcRandomSuffix(5)).slice(0, 16)
}
function bareIrcNickLooksMachine(nick) {
var s = String(nick || '')
if (!s) return true
if (/^[0-9a-f]{8,16}$/i.test(s)) return true
if (/^[0-9a-f]{12}$/i.test(s)) return true
if (/^[a-z0-9]{10,}-[a-z0-9]{4,}$/i.test(s)) return true
return false
}
function bareIrcHostLooksLibera(host) {
var h = String(host || '')
.trim()
@@ -127,13 +151,16 @@ function bareIrcResolveConnect(ctx, flags, loaded) {
if (host === 'libera') host = BARE_IRC_LIBERA.host
var port = flags.port != null ? flags.port : srv.port || BARE_IRC_LIBERA.port
var tls = flags.tls != null ? flags.tls : srv.tls !== false
var nick =
flags.nick ||
cfg.nick ||
env.BARE_IRC_NICK ||
env.USER ||
env.LOGNAME ||
'bareos'
var nick = flags.nick || cfg.nick || env.BARE_IRC_NICK || ''
var generatedNick = false
if (!nick) {
var candidate = env.USER || env.LOGNAME || ''
if (candidate && !bareIrcNickLooksMachine(candidate)) nick = candidate
}
if (!nick) {
nick = bareIrcRandomNick()
generatedNick = true
}
var saslUser = flags.saslUser || cfg.saslUser || sec.saslUser || ''
var saslPass = flags.saslPass != null ? flags.saslPass : sec.saslPass || ''
var autojoin = Array.isArray(flags.autojoin)
@@ -146,7 +173,8 @@ function bareIrcResolveConnect(ctx, flags, loaded) {
port: port,
tls: tls,
insecurePlain: !!flags.insecurePlain,
nick: String(nick).slice(0, 32),
nick: String(nick).slice(0, 16),
generatedNick: generatedNick,
username: flags.username || cfg.username || 'bareos',
realname: flags.realname || cfg.realname || 'Bare OS irc',
pass: flags.pass || sec.serverPass || '',
@@ -202,3 +230,26 @@ function bareIrcParseFlags(argv) {
}
return flags
}
async function bareIrcRememberNick(ctx, nick) {
var n = String(nick || '').trim()
if (!n) return false
if (!ctx || !ctx.vfs || typeof ctx.vfs.writeFile !== 'function') return false
var paths = bareIrcConfigPaths(ctx)
var loaded = await bareIrcLoadConfig(ctx)
var cfg = loaded.config || {}
if (cfg.nick) return false
cfg.nick = n
try {
if (typeof ctx.vfs.mkdir === 'function') {
var mk = ctx.vfs.mkdir(paths.dir, { recursive: true })
if (mk && typeof mk.then === 'function') await mk
}
var body = JSON.stringify(cfg, null, 2)
var w = ctx.vfs.writeFile(paths.config, body)
if (w && typeof w.then === 'function') await w
return true
} catch (e) {
return false
}
}