source: Klonkt/src/services/ActivityPubService.js@ 4766720

main
Last change on this file since 4766720 was 4766720, checked in by Robin <roboburr@…>, 4 weeks ago

Een verhuisd account gaat op slot aan de uitgaande kant

Robins vraag: "nu kan je er nog alles mee". Klopt. moved_to deed maar twee dingen,
de actor-wegwijzer en een banner op de homepage. Posten, volgen, liken, boosten en
reageren kon gewoon door, en dat federeerde de wereld in.

Drie dingen gingen daar mis. Nieuwe posts kregen een object-URI op een adres dat je
hebt opgezegd, en die URI's overleven het domein niet. Je volgers waren al verhuisd,
dus je postte in het niets terwijl het lijkt of je post. En een server die je
movedTo ziet én tegelijk verse activiteit van dat adres krijgt, krijgt
tegenstrijdige signalen over de verhuizing.

DE POORT STAAT IN DE SERVICE, NIET OP DE KNOPPEN. Een C2S-client (Shaer) praat
rechtstreeks met deze functies en zou langs een verborgen knop lopen. De UI volgt
de poort.

Dicht: posten, reageren, volgen, liken, boosten, stemmen, en een tweede verhuizing.
Open: de actor met movedTo, webfinger, bestaande posts, de outbox, alles inkomend
(reacties op oude posts blijven binnenkomen en leesbaar), je eigen beheer (archief
en volglijst exporteren), ontvolgen, en rapporteren. Dat laatste is een
veiligheidsklep, geen inhoud maken.

Omkeerbaar: moved_to leegmaken heft het slot op. Een verhuizing kan mislukken.

setReaction is APART gepoort, want die schrijft alleen de lokale vlag; het
versturen gebeurt elders. Zonder die tweede poort zag je een like staan die nooit
de deur uit was: dezelfde halve toestand die vandaag al twee keer opdook.

Changed files:
src/services/ActivityPubService.js

  • movedLock() en movedRefusal(), met de scheidslijn in het commentaar
  • poorten in deliverCreate, deliverReply, followActor, sendInteraction, voteOnRemotePoll, setReaction en moveAccount

src/routes/posts.js

  • 'moved' krijgt een eigen melding: het is een weigering met een reden, niet een mislukking, en "Volgen mislukt" laat je zoeken naar een storing die er niet is
  • connect krijgt movedTo mee

src/views/pages/connect.ejs

  • banner in plaats van het volgformulier; het volglijst-blok BLIJFT, want je archief meenemen moet je juist kunnen op een verhuisd account

src/services/i18n.js

  • drie teksten in nl, en en de

New file:
test/moved-lockdown.test.js

  • 11 tests die per soort vastleggen wat dicht gaat en wat open blijft
  • inclusief: een half ingevuld moved_to zet niets op slot, ontvolgen mag nog, en de wegwijzer plus de inbox blijven staan

remarks: tegenproef gedaan. Zonder de poort vallen 8 van de 11 om en blijven de
drie "blijft open"-tests groen. Suite 949 in UTC en Europe/Amsterdam. De pagina in
beide standen gerenderd: formulier weg, banner er, exportblok blijft, geen
onvertaalde sleutels.

Doorsturen van reacties op oude posts is bewust NIET gebouwd. Zo'n reply wijst naar
een object-URI met de oude base, en findThreadTarget matcht alleen op onze eigen
base: hij zou als wees binnenkomen. Om het te laten werken zou de nieuwe instance
objecten moeten claimen op een domein dat hij niet beheert, en dat is precies waar
de sleutelbinding van vanmiddag tegen beschermt. Antwoorden doe je vanaf het nieuwe
account via de bestaande bladwijzerroute; dan blijft elke URI bij wie hem hoort.

-robo
Co-Authored-By: Claude Opus 4.8 <noreply@…>

  • Property mode set to 100644
File size: 375.3 KB

HTML preview not available, since the file size exceeds 256.0 KB.Try downloading the file instead.

Note: See TracBrowser for help on using the repository browser.