Commit Graph

27 Commits

Author SHA1 Message Date
maikrolf 8e1231a7af refactor: verwijder dode Kubo-takken voor pins en files/upload
- mapToKuboAPI had pin/ls|add|rm- en add?pin=true-takken die onbereikbaar zijn:
  proxyIPFS onderschept pins/pins/<cid>/files/upload eerst en serveert ze uit
  de lokale .data-opslag
- Dode code weggehaald; comment boven mapToKuboAPI en bij de interceptie
  documenteert dat pins/files bewust lokaal blijven, zodat de volgende lezer
  het niet 'fixt'
- files/<subpad> -> /api/v0/ls blijft: alleen bereikbaar voor methoden die
  proxyIPFS niet lokaal afhandelt (GET/DELETE worden wel afgehandeld)
- De 4 assertions die de dode takken vastlegden zijn vervangen door tests die
  de generieke doorval beschrijven, plus een comment dat een teruggezette
  Kubo-tak de test rood maakt
- Nieuwe proxy-ipfs.test.ts test het werkelijke runtime-gedrag: pins en
  files/* raken Kubo nooit (ook niet bij een geldige KUBO_API_URL), terwijl
  explorer/* en peers wél doorvallen
2026-10-01 20:55:09 +02:00
maikrolf fa7de62707 fix: /ipfs/<cid> served alles als application/octet-stream
- detectContentType(cid) ignoreerde zijn input en gaf altijd octet-stream terug,
  terwijl de commentaar claimde dat Kubo het echte type bepaalt
- De response draagt nu het Content-Type dat Kubo cat terugstuurt
- resolveContentType() valt terug op application/octet-stream bij ontbrekend,
  leeg of ongeldig type; het patroon weigert CR/LF en quotes zodat upstream-
  headers niet in de response gespiegeld kunnen worden
- Streaming ongewijzigd (body nog volledig in geheugen), headers idem
- Nieuwe route-tests: content-type-passthrough, fallbackgevallen, Kubo-aanroep,
  body, overige headers en de ongewijzigde foutpaden (400/404/501/502)
2026-10-01 19:36:54 +02:00
maikrolf 0279282f7e fix: GatewayLink wijst naar ipfs.io in plaats van de eigen gateway
- Component hardcodede https://ipfs.io/ipfs/<cid>; de portal heeft zijn eigen
  gateway (NEXT_PUBLIC_GATEWAY_URL, fallback ipfs.maos.dedyn.io)
- Bouwt de link nu via de gedeelde gatewayLink() uit lib/helpers, dus zelfde
  basis-URL en /ipfs/-pad als alle andere share-links
- ?filename= gaat dezelfde route in, encoding ongewijzigd
- Nieuwe render-test (react-dom/server) dekt gateway-keuze, config-override
  en filename-query
2026-10-01 19:21:01 +02:00
maikrolf 4a5b146713 fix: share-links missen het /ipfs/-segment
- gatewayLink() bouwde <gateway>/<cid>; dat pad bestaat niet in deze app
- Nu <gateway>/ipfs/<cid>, wat overeenkomt met de route GET /ipfs/<cid>
- Gateway-basis komt uit gatewayUrl() in lib/config.ts (NEXT_PUBLIC_GATEWAY_URL)
- Optionele filename -> ?filename=, uitgeconsumed door dezelfde route
- downloadViaGateway() hergebruikt de helper i.p.v. eigen gateway-constant
  (valideerde fallback-host was de oude maos.dedyn.io)
- helpers.test.ts legde het foute pad vast; asserties vervangen door de
  werkelijke vorm + een test op de config-override
2026-10-01 19:13:43 +02:00
maikrolf 88f2c7e5aa feat: require a write token or session on mutating portal API routes
- Adds IPFS_WRITE_TOKEN to lib/config.ts
- Default-deny per route (not per method): the public explorer issues reads as POST
- Existing portal session JWT remains valid, so the logged-in UI keeps working
- Public gateway reads (/ipfs/<cid>) are unchanged
2026-09-30 21:10:44 +02:00
maikrolf d0632d4dcc feat: add IPFS gateway route /ipfs/:cid 2026-09-20 03:30:13 +02:00
maikrolf 841f89b1d5 feat: lokale file opslag zonder Kubo
- Bestanden uploaden naar .data/files/
- Auto-pin na upload
- Lijst, download en verwijder bestanden
- CID hash generatie via SHA-256
- 191 tests passing
2026-09-19 19:58:28 +02:00
maikrolf d3004506a4 cleanup: verwijder debug logging uit proxy-ipfs
- Lokale pin opslag stabiel
- Geen console.log meer
- 191 tests passing
2026-09-19 19:48:05 +02:00
maikrolf b7fb7daa4d debug: clone req body voor POST pins + verbose logging 2026-09-19 17:39:06 +02:00
maikrolf 5a454a2ddc debug: voeg console.log toe aan proxyIPFS voor lokale pins 2026-09-19 17:35:28 +02:00
maikrolf 729b052d08 fix: normalize path voor lokale pins - verwijder leading slash 2026-09-19 17:30:04 +02:00
maikrolf bdc6805b89 fix: altijd lokale pins gebruiken, ongeacht Kubo config 2026-09-19 17:20:21 +02:00
maikrolf b67e735e04 fix: local pin POST body lezing - lees als text voordat JSON parse 2026-09-19 17:15:02 +02:00
maikrolf c64ca2b8c2 feat: lokale pin opslag zonder Kubo
- JSON-file opslag in .data/pins.json
- Gebruikt wanneer KUBO_API_URL niet beschikbaar is
- Lokale pins voor development, Kubo voor productie
- 191 tests passing
2026-09-19 17:04:44 +02:00
maikrolf 361f11033d refactor: verwijder MAOSv6 wallet referenties
- Verwijder window.maosv6 provider uit wallet discovery
- Verwijder isMAOS veld uit DetectedWallet type
- Verwijder MAOS badge uit login page
- Update titel naar 'IPFS Portal' (geen MAOS meer)
- Update foutmeldingen naar wallet-agnostisch
- Update tests naar standaard wallet fallback
- 191 tests passing
2026-09-19 14:28:22 +02:00
maikrolf 7c7854e08f feat: SIWE auth, auto-pin, pin search/share, explorer improvements
- SIWE server-side auth (siwe + jose JWT)
- Wallet provider fallback (MAOS -> MetaMask)
- Auto-pin after upload (quick + crypto)
- Pin search/filter in explorer
- Share button (gateway link) per pin
- Copy CID button per pin
- Breadcrumb root navigation fix
- Hydration mismatch fix (mounted state)
- Defensive truncateCid for empty values
- CSP fix (template literal)
- Error boundaries (upload, profile, usage)
- 191 tests passing
2026-09-19 12:25:36 +02:00
maikrolf f72b775379 refactor: codebase opschoning — type safety, error handling, central config, page splits
- categorie A: alle catch(e: any) → catch(e: unknown) met instanceof check
- categorie B: stille .catch() logging toegevoegd (SWRegister, admin, upload, auth)
- categorie C: hardcoded 192.168.1.176 IPs vervangen door env var defaults
- categorie D: page files >250L gesplitst (history, settings, explorer, admin/payment,
  ipns, users, upload, dashboard) in helpers/components
- categorie E: eslint-disable vervangen in SearchInput.tsx
- src/lib/config.ts centrale config module (localhost defaults)
- CSP in next.config.ts dynamisch via env var
- deploy.sh: geen hardcoded IP meer (REQUIRED arg)
- lib/api/ lib/auth/ lib/wallet/ lib/search-index/ lib/storage/ gesplitst in modules
- ongebruikte bestanden verwijderd: api.ts, auth.tsx, wallet.ts, search-index.ts,
  PaymentPanel.tsx, SearchBar.tsx, proxy.ts, serve-static.js
2026-07-19 15:35:18 +02:00
maikrolf 88ce38a49e fix: bw/stats 404, gateway links, history crash
- swr.ts: remove useBandwidth(), drop bw from useDashboard()
- events/route.ts: skip bandwidth SSE (Kubo 0.28.0 unsupported)
- usage/page.tsx: remove getBWStats call + bw references
- helpers.ts: gatewayLink -> ipfs.maos.dedyn.io (subdomain only)
- upload/page.tsx: fix local gatewayLink (subdomain only)
- storage.ts: update default gatewayUrl, add defensive getHistory()
2026-07-05 17:03:18 +02:00
maikrolf 99c113b6f5 fix: bw/stats 404, gateway links, history crash
- swr.ts: remove useBandwidth(), drop bw from useDashboard()
- events/route.ts: skip bandwidth SSE (Kubo 0.28.0 unsupported)
- usage/page.tsx: remove getBWStats call + bw references
- helpers.ts: gatewayLink -> ipfs.maos.dedyn.io (subdomain only)
- upload/page.tsx: fix local gatewayLink (subdomain only)
- storage.ts: update default gatewayUrl, add defensive getHistory()
2026-07-05 16:57:29 +02:00
maikrolf 9b8b382925 fix: PWA icons, SW method guard, start script 2026-07-02 01:00:11 +02:00
maik a13e614371 fix: replace tom1687.no-ip.org with 192.168.1.176, add DateTimeEncoder for API datetime serialization 2026-06-29 16:07:54 +00:00
maikrolf b12b3e35f4 fix: sw.js POST cache error + manifest icon refs 2026-06-29 16:19:16 +02:00
maikrolf a8a9d33f36 fix: replace recursive npm start chain with next start + pm2 bootstrap script 2026-06-28 22:00:00 +02:00
maikrolf a89841a742 fix: remove self-referencing @maos/ipfs-portal dep that breaks npm install 2026-06-28 21:23:15 +02:00
maikrolf de4146c362 fix: add npm install + build to start script for server deploy 2026-06-28 21:19:24 +02:00
maikrolf c9432a16ba SIWE auth, API proxy fixes, dashboard, login, usage pages
- SIWE auth flow: challenge/login/logout/me API routes + JWT middleware
- Fixed [...path] catch-all: Kubo proxy with matchRoute() + mapToKuboAPI()
- Fixed session_id → nonce field mismatch in AuthProvider
- Fixed dashboard pins crash: Kubo returns {Keys: {...}}, not array
- Added middleware route guard (307 redirect to /login)
- Added login, register, profile, usage, upload pages
- Added dashboard components (StorageGauge, FreeTierProgress)
- Added SWR hooks + AuthGuard + Providers + Toast/ErrorBoundary
- Added payment integration (smart contract ABI, tiers, tokens)
- Fixed IPNS key listing: Name/Id → name/id mapping
- Added PWA support (manifest, service worker, icons)
- Added tests for helpers, limits, search-index, wallet
2026-06-28 18:31:05 +02:00
maikrolf 1ddc89479c feat: initial IPFS Portal — Next.js frontend for remote IPFS node management
Multi-file upload with Quick Upload + Crypto Payment tabs.
Dashboard with live IPFS metrics, Explorer, Peers, Pins, History, Settings pages.
Docker deploy (standalone output), full test suite (16 Playwright tests).
Payment integration via IPFSPortalPayment + MockUSDC contracts on zkSync.
2026-06-25 19:47:57 +02:00