Changeset fc41e04 in Klonkt for src/services/ActivityPubService.js
- Timestamp:
- 08/11/2026 05:41:49 PM (4 weeks ago)
- Branches:
- main
- Children:
- cb3001e
- Parents:
- 26b1848
- File:
-
- 1 edited
-
src/services/ActivityPubService.js (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
src/services/ActivityPubService.js
r26b1848 rfc41e04 2181 2181 // handshake (a ward and a co-guardian may both live here). Gather candidate 2182 2182 // local slugs from the inbox owner, the `to` list, and the ward. 2183 // MET localSlugOf en niet met slugFromActorUrl. Dat laatste knipt alleen de 2184 // staart van een pad af, zonder naar de HOST te kijken -- en deze uri's 2185 // komen uit `to` en uit de relatie, dus van de afzender. Een Offer gericht 2186 // aan https://elders.example/ap/users/dev leverde zo de slug "dev" op, en 2187 // die bestaat hier. Dan draait onze dev de afhandeling van een activiteit 2188 // die nooit aan hem geadresseerd was. localSlugOf eist dat de uri met onze 2189 // eigen basis begint en dat de site echt bestaat. 2183 2190 const cand = new Set(); 2184 2191 if (slugParam) cand.add(slugParam); 2185 2192 for (const t of (Array.isArray(act.to) ? act.to : (act.to ? [act.to] : []))) { 2186 if (typeof t === 'string') { const s = slugFromActorUrl(t); if (s) cand.add(s); }2193 if (typeof t === 'string') { const s = localSlugOf(t); if (s) cand.add(s); } 2187 2194 } 2188 2195 if (type === 'Offer' || type === 'Undo') { 2189 2196 const rel = type === 'Undo' ? Guardianship.parseUndoRelationship(act) : Guardianship.parseRelationship(act.object); 2190 if (rel) { const s = slugFromActorUrl(rel.ward); if (s) cand.add(s); }2197 if (rel) { const s = localSlugOf(rel.ward); if (s) cand.add(s); } 2191 2198 } 2192 2199 let consumed = false; … … 2206 2213 const noteIds = []; 2207 2214 for (const u of objectUris) { 2208 const s = slugFromActorUrl(u); // one of our actors?2215 const s = localSlugOf(u); // one of OURS -- host meegewogen 2209 2216 if (s) { targetSlug = targetSlug || s; continue; } 2210 2217 const pid = postIdFromNoteUrl(u, base); // one of our notes? … … 2234 2241 if (type === 'Follow') { 2235 2242 const who = typeof act.actor === 'string' ? act.actor : (act.actor && act.actor.id); 2236 const slug = slugParam || slugFromActorUrl(typeof act.object === 'string' ? act.object : (act.object && act.object.id)); 2243 // slugParam is de eigenaar van een per-actor inbox; op de GEDEELDE inbox is 2244 // die er niet en werd de slug uit act.object geraden. Zonder hostcontrole 2245 // kon een Follow op andermans actor met dezelfde padstaart hier een volger 2246 // opleveren. 2247 const slug = slugParam || localSlugOf(typeof act.object === 'string' ? act.object : (act.object && act.object.id)); 2237 2248 if (!who || !slug) return 400; 2238 2249 const remote = await fetchActor(who); … … 6364 6375 // Which local site (if any) hosts this actor URI — used by the handshake to 6365 6376 // apply the local side of a commit and to derive a ward's existing guardians. 6366 function localSlugOf(actorUri) {6377 export function localSlugOf(actorUri) { 6367 6378 const base = (process.env.PUBLIC_BASE_URL || '').replace(/\/+$/, ''); 6368 6379 if (!actorUri || !actorUri.startsWith(`${base}/ap/users/`)) return null;
Note:
See TracChangeset
for help on using the changeset viewer.
![(please configure the [header_logo] section in trac.ini)](/chrome/site/your_project_logo.png)