Commit Graph
141 Commits
Author SHA1 Message Date
travandClaude Opus 5 996e45379a Fork ssb-viewer as custo-viewer
Rebrand package.json (name, homepage, repository) so render.js's page footer,
which is built from pkg.homepage + git HEAD, points at this repo rather than
upstream's ssb:// URL.

Track package-lock.json instead of ignoring it. It was gitignored upstream, but
this is a deployed application on a 469MB box running node 18 — a reproducible
dependency tree is the difference between RESTORE.md working and not.

Upstream's README is kept verbatim as UPSTREAM-README.md; the new one documents
the custo data model, including the two things that will otherwise cost someone
an afternoon: custodisco is the string "true", and no message ever sets
content.channel.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_0192zBTNZKZn5svyJ5HTnYds
2026-08-22 19:30:42 -04:00
ops f7f1c30eae serveBlob: only serve blobs referenced by feeds we replicate
serveBlob handed any held blob to anyone who knew its hash, on a public
port with require_opt_in:false. Combined with ssb-blobs sympathy that
meant publicly serving 4.6GB of strangers content we never reviewed.

Maintains a set of blob ids referenced by the local log (small, ~360KB,
rescanned every 5 min) and 404s anything outside it. Fails open until the
first scan completes so a read error cannot 404 the whole site.

Verified: a blob present on disk but referenced by no message returns
blobs.has=true over RPC while the viewer 404s it.
2026-08-14 20:13:02 +00:00
ops a39af4fad3 Add blob-wanter: standing wants for our own feeds blobs
Nothing in ssb-server fetches blobs mentioned in replicated messages;
that was happening via ssb-blobs sympathy, which is the same mechanism
that let strangers fill the disk. This replaces it with explicit wants
scoped to feeds we actually replicate.

want() has no expiry and the want map is broadcast to every peer on
connect, so a standing want fires whenever a long-offline peer returns.
sbot keeps that map in memory, so this process ties its lifetime to the
connection and re-arms the backfill on every restart.

Verified: removing a referenced blob makes it report
already_have=266 newly_wanted=1 and issue the want.
2026-08-14 17:40:09 +00:00
ops d380db741b bin.js: exit on dead sbot connection instead of wedging
ssb-viewer holds one muxrpc handle captured in a closure and has no
reconnect path. When sbot is OOM-killed and restarted by run-server.sh,
the viewer kept port 8807 open while holding a dead connection and never
answered again -- the silent wedge.

Listen for muxrpc closed and exit(1) so the while-loop in
run-ssb-viewer.sh restarts with a fresh connection. Also poll whoami to
catch half-open connections where closed never fires.

Verified: killing sbot now self-heals in ~4s instead of hanging.
2026-08-14 17:35:10 +00:00
ops e2df7da3fe Baseline: local ssb-acme-validator tarball, run script, startup notes
Snapshot of the working tree as found, before ops hardening work.
Restore point for rollback.
2026-08-14 17:24:58 +00:00
Daan Wynen f21b1202b9 Document my confusion with upgrading.
This may not be the most elegant way of going about it,
but it worked for me. In any case, *some* sort of upgrade guide
should be present IMO.
2020-10-14 22:34:11 +02:00
cel 38c61a5069 Support audio and video elements 2020-09-10 02:31:58 +00:00
cel aa1697181e Add footer with copyright and source link 2020-06-11 14:20:06 -04:00
cel 514c401ff1 Avoid deprecated Buffer constructor 2020-06-11 13:39:00 -04:00
cel df2a2ada6e Set cache-control immutable 2019-10-03 08:50:20 -04:00
cel ca9ab26ec6 Show content warnings 2019-08-29 13:10:59 -07:00
cel 332c09b046 Whitespace and code style consistency 2019-08-29 12:49:22 -07:00
cel ad80496c9a Decrypt private blobs 2019-01-25 12:59:04 -10:00
cel 7291151076 Make nicer host output 2018-09-02 22:20:24 -07:00
cel 13d54825ca Render npm packages more 2018-08-31 18:55:40 -07:00
cel 1a47f5f10e Render git update more semantically 2018-08-31 18:55:40 -07:00
cel 45a18976ee Improve type checking
- Make sure value is string before passing it to hyperscript,
  otherwise it could be an object with property "innerHTML" which would
  get included without escaping.
- Make sure value is truthy (or != null) before dereferencing it.
- Make sure value is array before calling array methods on it.
2018-08-31 18:52:01 -07:00
cel d55a613b25 Escape content from messages put into innerHTML 2018-08-31 13:24:09 -07:00
cel 2e582bd1dc Don't linkify bad refs 2018-08-23 17:41:18 -07:00
cel 9357a5e729 URL-encode in href: msg ids, not feed or blob ids 2018-08-23 14:28:13 -07:00
cel afabd2eacb Handle channels/hashtags in form 2018-08-22 14:38:52 -07:00
cel e3821bb878 Show message ids 2018-08-22 13:07:40 -07:00
cel 4d2dd658de Add id query form on home page 2018-08-22 12:59:03 -07:00
cel 36c63bc182 Consolidate serve functions 2018-08-22 12:58:51 -07:00
cel c8c744f585 Default to disallow robots 2018-08-22 11:52:43 -07:00
cel f908ea40e6 Document disallowRobots config 2018-08-22 11:52:43 -07:00
cel 2c1e35be2b Fix requireOptIn option 2018-08-18 14:02:48 -07:00
cel 7123fbcab1 Default to require opt-in for publicWebHosting 2018-08-17 15:32:42 -07:00
cel ba6d7cd3ab Don't show name of publicWebHosting:false feed
All their other info is hidden, so hide the name in the title too.
2018-08-17 15:32:02 -07:00
cel 0b8dc29802 Allow a feed to set publicWebHosting to null
This should be equivalent to having not set publicWebHosting at all.
2018-08-17 15:30:16 -07:00
Anders Rune JensenandGitHub 78e7e8a008 Merge pull request #7 from Powersource/render-gatherings
Render gatherings
2018-07-07 20:45:07 +02:00
Jacob Karlsson b74745f556 Clean code 2018-07-07 13:04:43 +02:00
Jacob Karlsson d210926c8b Render gathering time 2018-07-07 12:51:00 +02:00
Jacob Karlsson 3c608e0159 Add gathering title 2018-07-07 12:41:38 +02:00
Jacob Karlsson d09eab73ae Count attendees 2018-07-06 23:50:18 +02:00
Jacob Karlsson d15a09749d Render gathering images and markdown the descs 2018-07-02 20:26:16 +02:00
Jacob Karlsson cecdc93fd3 Render gathering descriptions 2018-07-02 19:52:17 +02:00
Anders Rune Jensen 857dc63ce5 Merge branch 'master' of ssb://%MeCTQrz9uszf9EZoTnKCeFeIedhnKWuB3JHW2l1g9NA=.sha256 2018-04-30 15:00:11 +02:00
Anders Rune Jensen d58d389db2 Fix crash on wierd non-string names 2018-04-30 15:00:00 +02:00
cel 69a32cc343 Add config for Disallow: / in robots.txt 2018-04-26 19:12:22 -10:00
Anders Rune Jensen 8680189006 Make userfeed less noisy 2018-04-25 17:44:18 +02:00
Anders Rune Jensen c201e35b8d Better error handling for malformed vote messages 2018-04-25 15:58:23 +02:00
Anders Rune Jensen e525414d1f Render blog posts 2018-04-25 15:57:30 +02:00
Anders Rune Jensen 1eb1be440d Fix includeRoot. Thanks @dominic 2018-04-23 20:52:30 +02:00
Stephen Whitmore c71fb2a089 feat: serve ssb websites under /web 2018-04-16 13:59:50 -07:00
Anders Rune Jensen f41ee2c2c8 Merge branch 'master' of ssb://%MeCTQrz9uszf9EZoTnKCeFeIedhnKWuB3JHW2l1g9NA=.sha256 2018-04-16 09:52:22 +02:00
cel 728dd36ef6 whitespace 2018-04-15 20:41:44 -10:00
Dominic Tarr 08321fdd28 respect privacy better. hides who is in a private thread, does not show private messages in user feed, also does not show like/vote as thread replies 2018-04-15 13:15:08 -07:00
Anders Rune Jensen f09e7259ef Tidy 2018-01-12 00:12:03 +01:00
Anders Rune Jensen 2c29133777 Don't about in user-feed 2018-01-11 16:24:30 +01:00