Tul xxx Tul
User / IP
:
216.73.217.33
Host / Server
:
45.84.207.204 / aircan.me
System
:
Linux lt-bnk-web1726.main-hosting.eu 5.14.0-611.36.1.el9_7.x86_64 #1 SMP PREEMPT_DYNAMIC Tue Mar 3 11:23:52 EST 2026 x86_64
Command
|
Upload
|
Create
Mass Deface
|
Jumping
|
Symlink
|
Reverse Shell
Ping
|
Port Scan
|
DNS Lookup
|
Whois
|
Header
|
cURL
:
/
home
/
u931257429
/
domains
/
aircan.me
/
public_html
/
panaderia
/
Viewing: sw.js
/* Punto de Pan - Service Worker (PWA) Estrategias: - Navegaciones: Network-first con fallback a offline.html - Estáticos (CSS/JS/IMG/WEBMANIFEST): Stale-while-revalidate */ const CACHE_VERSION = 'pp-v1.0.0'; const RUNTIME_CACHE = `pp-runtime-${CACHE_VERSION}`; const STATIC_CACHE = `pp-static-${CACHE_VERSION}`; // Archivos base a precachear (shell mínimo) const CORE_ASSETS = [ 'offline.html', 'manifest.webmanifest', 'styles/styles.css', 'css/style.css', 'js/script.js', 'assets/js/main.js', 'img/cuerno.png', 'img/logo.png', 'images/background1.png' ]; self.addEventListener('install', (event) => { event.waitUntil( caches.open(STATIC_CACHE).then((cache) => cache.addAll(CORE_ASSETS)).then(() => self.skipWaiting()) ); }); self.addEventListener('activate', (event) => { event.waitUntil( caches.keys().then((keys) => Promise.all(keys.filter((k) => ![STATIC_CACHE, RUNTIME_CACHE].includes(k)).map((k) => caches.delete(k)))).then(() => self.clients.claim()) ); }); // Utilidades const isHtmlNavigation = (request) => request.mode === 'navigate' || (request.method === 'GET' && request.headers.get('accept')?.includes('text/html')); const isStaticAsset = (request) => { const url = new URL(request.url); // Sólo mismo origen if (url.origin !== location.origin) return false; return /\.(?:css|js|mjs|png|jpg|jpeg|svg|gif|webp|ico|avif|ttf|woff2?|mp3|mp4|webm|json)$/i.test(url.pathname) || url.pathname.endsWith('manifest.webmanifest'); }; self.addEventListener('fetch', (event) => { const { request } = event; // Navegaciones: network-first -> offline if (isHtmlNavigation(request)) { event.respondWith( (async () => { try { const fresh = await fetch(request); return fresh; } catch (err) { const cache = await caches.open(STATIC_CACHE); const offline = await cache.match('offline.html'); return offline || new Response('Estás offline.', { headers: { 'Content-Type': 'text/plain; charset=utf-8' } }); } })() ); return; } // Estáticos: stale-while-revalidate if (isStaticAsset(request)) { event.respondWith( (async () => { const cache = await caches.open(STATIC_CACHE); const cached = await cache.match(request); const networkFetch = fetch(request) .then((resp) => { if (resp && resp.ok) cache.put(request, resp.clone()); return resp; }) .catch(() => undefined); return cached || networkFetch || new Response('', { status: 504 }); })() ); return; } // Otros: pasar directo return; });
Coded With 💗 by
0x6ick