Rebuilt the nostr registration feature cleanly on top of current ergo
mainline (origin/master), dropping the stale ergo reversions that were
entangled in the original squashed branch.
- New irc/nostr package: NIP-04/NIP-17 DMs, NIP-05 resolution, relay
connect/auth, and identifier helpers.
- Registration/verification via nostr: parseCallback auto-detects nostr
identifiers (NIP-05, npub, hex pubkey) and dispatches a verification DM.
- Nostr-based cloaked hostnames for accounts (opt-in via
ip-cloaking.nostr-hostnames), applied at the account-cloak sites.
- Config: accounts.registration.nostr-verification and the
nostr-hostnames cloak option, with matching default.yaml and help text.
- Adds github.com/nbd-wtf/go-nostr and vendored dependencies.
TestEmptyBuffer added items without an explicit Message.Time, letting
Add() stamp them with time.Now().UTC(), then immediately queried with
end = time.Now() as the (exclusive) upper bound. On platforms where the
wall clock has coarse resolution -- macOS ticks in 1us increments, so
consecutive time.Now() calls usually return identical wall times -- the
item's timestamp equals the query bound, item.Message.Time.Before(before)
is false, and the item is excluded. The test then panics indexing the
empty result slice.
On Apple Silicon this fails nearly deterministically; Linux's
nanosecond-resolution clock is why CI never caught it.
Use explicit fixed timestamps via easyItem, matching every other test
in this file.
If the client sends a long multiline, then pauses on its own
before sending more data, we want to apply deferred fakelag
during the pause, rather than upon receiving the next input line.
sync with distribution changes:
- allow ergo to execute ergo-ldap as a subprocess to allow for LDAP
authentication
- allow ergo to create backup files to allow for autoupgrade
- consolidate and sort some lines for easier maintenance
Signed-off-by: Georg Pfuetzenreuter <mail@georg-pfuetzenreuter.net>
* Fix a race condition in persisting channel memberships for always-on
clients (the asynchronous write of the client's channel memberships
could precede the update to the channel's member list, resulting in
the membership not being observed and written)
* Ensure always-on state is flushed on shutdown (we were already
flushing timestamps, because those writes are heavily debounced, but
we were relying on immediate asynchronous writeback for channel
memberships and similar state).