• exec/tests/ircd/webirc.jsexec/ircd.js exec/load/ircd/core.js unregiste

    From Rob Swindell (on Debian Linux)@VERT to Git commit to main/sbbs/master on Friday, October 23, 2026 20:52:46
    https://gitlab.synchro.net/main/sbbs/-/commit/8ed7eed5afd1b3503e45bb2e
    Added Files:
    exec/tests/ircd/webirc.js
    Modified Files:
    exec/ircd.js exec/load/ircd/core.js unregistered.js exec/tests/ircd/lib.sjs
    Log Message:
    ircd: apply bans and RBLs to the client IP passed by WEBIRC for 2.7

    Z:Lines and RBLs were checked only when a connection was accepted, against
    the gateway's IP, and K:Lines (including services AKILLs) were matched only against user@hostname. A client behind a WEBIRC gateway whose IP resolved
    to a hostname therefore escaped IP bans and RBL listings entirely.

    After an accepted WEBIRC, check the client's IP against Z:Lines and the configured RBLs, and match K:Lines against user@ip as well as
    user@hostname, both at registration and when a new ban is scanned against connected users. The RBL loop moves into RBL_Blocked() for the shared use.

    A WEBIRC that is malformed or not accepted (wrong password or untrusted gateway) now closes the connection with ERROR instead of letting the
    client register under the gateway's IP.

    Fix check_dnsbl() building a malformed query for IPv6 addresses, with the
    RBL name repeated after every group, so no IPv6 client was ever found
    listed.

    Add exec/tests/ircd/webirc.js covering the accepted, rejected and
    malformed WEBIRC cases, a K:Line and an RBL listing of the client IP, and
    the gateway's own clients still registering. The RBL case uses nip.io as
    a stand-in blocklist and is skipped if it does not resolve.

    Bump the IRCd version to 2.7.

    Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>

    ---
    þ Synchronet þ Vertrauen þ Home of Synchronet þ [vert/cvs/bbs].synchro.net