diff options
| author | Adam Soltys <[email protected]> | 2026-10-18 23:03:57 -0700 |
|---|---|---|
| committer | Adam Soltys <[email protected]> | 2026-10-18 23:03:57 -0700 |
| commit | 07fb145efbc32cdfe2dc488c65d8708260f6f648 (patch) | |
| tree | e75dffaabdf9012a2c71628c6ba643146392fa9f /names | |
| parent | 7b29bcbf37adb6680531827eeb9442c1960e4e79 (diff) | |
| download | coinosv3-server-07fb145efbc32cdfe2dc488c65d8708260f6f648.tar.gz coinosv3-server-07fb145efbc32cdfe2dc488c65d8708260f6f648.zip | |
live: a name streams a day after it's claimed (the registrar now records when; older records count from their last update), never if banned; GET /live/allowed says which and until when. Viewers can report a stream (POST /live/<id>/report, NIP-98): kept in .reports.jsonl and DM'd to the admins from the welcome key. An admin takes a stream down (POST /live/<id>/remove {ban}): it ends, its playlists and segments answer 410, its files move to .removed/ (kept for reporting, never trimmed), and a ban stops its sender streaming.
Co-Authored-By: Claude Opus 5.5 <[email protected]>
Claude-Session: https://claude.ai/code/session_013ZDf1cyCQLkfjftYhymZAg
Diffstat (limited to 'names')
| -rw-r--r-- | names/server.js | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/names/server.js b/names/server.js index c4ed650..a60ec94 100644 --- a/names/server.js +++ b/names/server.js @@ -1286,7 +1286,7 @@ Bun.serve({ const g = domain === 'coinos.io' && (state.migrations || {})[`${m[1]}@coinos.io`]; const keys = [rec.pubkey, rec.manager].filter(Boolean); const granted = !!g && (keys.includes(g.pubkey) || (!!g.manager && keys.includes(g.manager))); - return json({ name: m[1], domain, taken: true, pubkey: rec.pubkey, manager: rec.manager || null, uri: rec.uri, noffer: rec.noffer?.raw || null, lno: rec.lno || null, granted }); + return json({ name: m[1], domain, taken: true, pubkey: rec.pubkey, manager: rec.manager || null, created: rec.created || rec.updated || null, uri: rec.uri, noffer: rec.noffer?.raw || null, lno: rec.lno || null, granted }); } const invalid = !NEW_NAME_RE.test(m[1]) && !npubPrefixOwner(m[1]); const reserved = RESERVED.has(m[1]) || !NAME_RE.test(m[1]) || invalid || await takenByCoinosUser(domain, m[1]); @@ -1806,6 +1806,9 @@ Bun.serve({ state.names[key] = { ...registrationIdentity({ existing, signer: auth.pubkey, manager: claim.manager, grant, granted }), uri: published, recordId, updated: Date.now(), domain, + // when its holder claimed it (the live server lets a name stream a + // day on); a record from before this was kept takes its last update + created: existing ? (existing.created || existing.updated || Date.now()) : Date.now(), // the wallet's CLINK offer key, so LNURL can ask it for invoices offerPk: (claim.offerPk && /^[0-9a-f]{64}$/.test(claim.offerPk)) ? claim.offerPk : existing?.offerPk, // the owner's own CLINK service / BOLT 12 offer, when they set one |
