https://gitlab.synchro.net/main/sbbs/-/commit/f62d4d9a84b005c27b280566
Added Files:
exec/ircd_conf2ini.js
Modified Files:
docs/v322_new.md exec/load/ircd/config.js
Log Message:
ircd: add ircd.conf to ircd.ini converter, fix .ini read/write defects
New exec/ircd_conf2ini.js converts a legacy Bahamut-style ircd.conf to
the ircd.ini format added in d41c2447a (2023-11-09). It reuses the
reader and writer in ircd/config.js, re-reads the file it just wrote and compares it entry-by-entry against the .conf, and renames the original
to .bak only if nothing was lost. Class descriptions, which the .conf
format can carry only as a comment above each Y:Line, are moved into the [Class] Comment key.
Defects that round-trip exposed, all in ircd/config.js:
- [Ban] sections were written with a Hostmask key but read back from
Mask, so every ban was dropped on the next read.
- OLine_Flags_String() emitted the RESTART and DIE flags only in the
branch that spells out individual flags, so an operator covered by the
"o"/"O" shorthand silently lost /RESTART and /DIE.
- [Server] sections paired C:Lines to N:Lines by array index; they are
now matched by server name, and an N:Line with no matching C:Line is
written as an inbound-only link with Port=0.
- Hubs with no server link of their own were not written at all, and now
get [Hub] sections.
- [Allow] Password was documented but never read, and never written.
- Z:Lines had no representation and were discarded; they are now written
as [Ban] sections matching *@<address>.
- [Class] Maximum=0 means unlimited, as Unregistered_Commands() tests
before enforcing it, but the reader clamped it to a minimum of 1 and
substituted 100.
- Entries duplicated between the compiled-in defaults and the config
file were written twice.
A [Hub] section with no Servername key is now ignored with a warning
instead of throwing.
Co-Authored-By: Claude Opus 5 (1M context) <
noreply@anthropic.com>
---
þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net