Ignore:
Timestamp:
08/08/2026 09:03:48 PM (4 weeks ago)
Author:
roboburr <roboburr@…>
Branches:
main
Children:
a4b903a
Parents:
29eb745
git-author:
Robin <roboburr@…> (08/08/2026 09:03:46 PM)
git-committer:
roboburr <roboburr@…> (08/08/2026 09:03:48 PM)
Message:

Alleen claimen wat je herkent (regressie uit shaer-8ru)

Barts honderd aanbiedingen liepen meteen stuk op "400 unsupported_offer", en dat
was mijn fout van een uur eerder.

Ik zette het gate-voorstel als case 'Offer' in de outbox-switch. Die case
claimde ELKE Offer: wat geen shaer:GatedSetting was kreeg 400 -- dus ook de
adoptie-handshake, en straks elke Offer-vorm die we nog toevoegen. De
guardianship-afhandeling stond ervoor en ving het meestal op, maar zodra die iets
niet herkende viel het in mijn 400 in plaats van door te lopen.

Nu voor de switch, naast de andere Offer-afhandeling, en alleen als
parseGatedSetting iets teruggeeft. De toets die 'unsupported_offer' verwachtte is
vervangen: die legde mijn verkeerde aanname vast. Er staat nu een toets op dat een
adoptie-Offer NIET door de gate-tak wordt afgevangen.

Twee kleinere dingen die dezelfde ronde boven kwamen:

  • Het aanbod-script gebruikte een verzonnen relatie-URI en werd daarom stil geweigerd. isGuardianRelationship accepteert precies twee waarden.
  • De SSRF-toets hing af van wat er toevallig draaide: hij ging ervan uit dat er niets op [::1]:3060 luisterde, en viel om zodra de testkudde daar stond. Nu een poort waar met opzet niets luistert. Een toets die afhangt van wat er draait bewijst niets.

Suite 756/756.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • src/services/ActivityPubService.js

    r29eb745 rdc0da72  
    33813381    if (g) return g;
    33823382  }
     3383  // Een gate-voorstel uit de app (5.6, shaer-8ru): een Offer van een
     3384  // shaer:GatedSetting, de vorm die 5.6 al beschrijft.
     3385  //
     3386  // HIER, EN GEEN `case` IN DE SWITCH. Dat was hij eerst, en die claimde ELKE
     3387  // Offer: wat geen gate-voorstel was kreeg 400 unsupported_offer -- ook de
     3388  // adoptie-handshake, en straks elke Offer-vorm die we nog toevoegen. Barts
     3389  // honderd aanbiedingen liepen er meteen op stuk. Alleen claimen wat je
     3390  // herkent, en de rest laten doorlopen.
     3391  if (type === 'Offer') {
     3392    const gs = Guardianship.gated.parseGatedSetting(activity.object);
     3393    if (gs) {
     3394      const uit = proposeGate(site, gs.ward, gs.feature, gs.value);
     3395      return uit.status === 200 ? { ...uit, status: 201, id: uit.offerId } : uit;
     3396    }
     3397  }
    33833398
    33843399  try {
    33853400    switch (type) {
    3386       // Een gate-voorstel uit de app (5.6, shaer-8ru). De PWA deed dit al over
    3387       // een eigen route; hier komt het binnen als wat het in AP IS -- een Offer
    3388       // van een shaer:GatedSetting. Dezelfde functie erachter, want twee wegen
    3389       // naar hetzelfde besluit is precies wat we vandaag hebben rechtgezet.
    3390       case 'Offer': {
    3391         const gs = Guardianship.gated.parseGatedSetting(object);
    3392         if (!gs) return { status: 400, error: 'unsupported_offer' };
    3393         const uit = proposeGate(site, gs.ward, gs.feature, gs.value);
    3394         if (uit.status !== 200) return uit;
    3395         return { ...uit, status: 201, id: uit.offerId };
    3396       }
    33973401      case 'Create': {
    33983402        if (!object || typeof object !== 'object') return { status: 400, error: 'missing_object' };
Note: See TracChangeset for help on using the changeset viewer.