{"id":"c1243","filename":"c1243_zakon41_cdn_uklanjanje_genesis_login.dok.json","weise3_id":"","tip":"fix","naziv":"ZAKON 41 — Uklanjanje vanjskih CDN-ova iz Genesis Login ekosustava","kreator":"genesis","datum":"","snippet":"","status":"","prev_weise3":"","bunker_l":"#00d4ff","full":{"tip":"fix","naziv":"ZAKON 41 — Uklanjanje vanjskih CDN-ova iz Genesis Login ekosustava","sto_treba":"genesis.limit-connect.com / genesislogin.online ne smiju pozivati tuđe CDN-ove","faze":{"1_analiza":"DONE — pronađeno 5 vanjskih točaka: TweetNaCl (jsdelivr), qrcode-generator (jsdelivr), Alpine.js x2 (jsdelivr+unpkg), qrcodejs (cloudflare CDN)","2_biblioteke":"DONE — preuzeto lokalno: qrcode.min.js (21KB), qrcodejs.min.js (20KB), alpinejs.min.js (45KB) → /var/www/genesis/static/","3_qr_login_tweetnacl":"DONE — qr-login.html: TweetNaCl eliminiran, zamijenjeno WebCrypto native Ed25519 (PKCS8 seed + crypto.subtle.sign)","4_login_index_qrcode":"DONE — login/index.html: _drawQR() više ne zove CDN, učitava /static/qrcode.min.js","5_kanal_alpine":"DONE — kanal/index.html: alpinejs jsdelivr → /static/alpinejs.min.js (v3.14.9, pinned)","6_landlord_alpine_qr":"DONE — landlord/index.html: Alpine (unpkg) + qrcodejs (cloudflare) → lokalni fajlovi","7_nginx_csp":"DONE — genesis-web CSP: cdn.jsdelivr.net uklonjen s /checkin/scan, /checkin/, /kanal/ (3 linije). genesislogin.online CSP već bio čist.","8_verifikacija":"DONE — curl test: /static/*.min.js sva 3 vraćaju 200 OK. login/index.html grep = 0 CDN referenci"},"zakon":"ZAKON 41 — Nema tuđih alata","bilješka":"Bonus nalaz: TweetNaCl je bio blokiran genesislogin.online CSP-om (script-src 'self') — qr-login.html bio broken, WebCrypto fix rješava i to. FLF modul ostaje sa CDN (zasebna sesija).","quantum":{"stun_cloudflare":"quantum/genesis-mesh.js koristi stun.cloudflare.com:3478 — WebRTC STUN je mrežni protokol, ne executable code. Zasebna odluka: self-host coturn ili prihvatiti kao infrastrukturu."}}}