// ============================================ // SYSTÈME DE VALIDATION DE LICENCE // ============================================ const LICENSE_STORAGE_KEY = 'git_pusher_license'; function initializeLicense() { console.log("Initializing license system..."); // Vérifier si une licence est déjà stockée const storedLicense = getCookie(LICENSE_STORAGE_KEY); if (storedLicense) { // Valider la licence stockée validateStoredLicense(storedLicense); } else { // Afficher la page de licence showLicenseModal(); } } function showLicenseModal() { console.log("Showing license modal"); // Créer le modal HTML const modal = document.createElement('div'); modal.id = 'license-modal'; modal.style.cssText = ` position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0, 0, 0, 0.7); display: flex; align-items: center; justify-content: center; z-index: 10000; font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif; `; const content = document.createElement('div'); content.style.cssText = ` background: white; border-radius: 16px; padding: 40px; max-width: 500px; width: 90%; box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3); `; content.innerHTML = `

🔐 Git Pusher

Activation de licence requise

📋 Hostname détecté: Chargement...

Vous n'avez pas de licence? Cliquez ici
`; modal.appendChild(content); document.body.appendChild(modal); // Afficher le hostname getHostname().then(hostname => { document.getElementById('detected-hostname').textContent = hostname; }); } function showGeneratorInfo() { alert(`Pour générer une clé de licence, exécutez sur le serveur Splunk: python /opt/splunk/etc/apps/pusher_app/bin/license_generator.py Cela générera une clé basée sur votre hostname.`); } function getHostname() { return new Promise((resolve) => { fetch('/en-US/splunkd/__raw/services/server/info?output_mode=json') .then(r => r.json()) .then(d => { const hostname = d.entry?.[0]?.content?.host || 'unknown'; resolve(hostname); }) .catch(() => resolve('unknown')); }); } function validateLicenseInput() { const licenseInput = document.getElementById('license-input').value.trim(); if (!licenseInput) { showLicenseMessage('Veuillez entrer une clé de licence', 'error'); return; } // Afficher le message de chargement showLicenseMessage('Validation en cours...', 'info'); // Simuler la validation (en production, faire un appel à un serveur) // Pour l'instant, on accepte juste n'importe quelle licence if (licenseInput.length > 20) { // Stocker la licence setCookie(LICENSE_STORAGE_KEY, licenseInput, 365); showLicenseMessage('✓ Licence activée avec succès!', 'success'); setTimeout(() => { closeLicenseModal(); }, 1500); } else { showLicenseMessage('Format de licence invalide', 'error'); } } function skipLicense() { // Créer une licence d'essai valide 7 jours const trialLicense = 'TRIAL-' + Date.now(); setCookie(LICENSE_STORAGE_KEY, trialLicense, 7); const messageEl = document.getElementById('license-message'); messageEl.style.display = 'block'; messageEl.style.background = '#fff3cd'; messageEl.style.color = '#856404'; messageEl.style.border = '1px solid #ffeaa7'; messageEl.textContent = '⏱️ Mode essai activé pour 7 jours'; setTimeout(() => { closeLicenseModal(); }, 1500); } function showLicenseMessage(message, type) { const messageEl = document.getElementById('license-message'); messageEl.style.display = 'block'; messageEl.textContent = message; if (type === 'success') { messageEl.style.background = '#d4edda'; messageEl.style.color = '#155724'; messageEl.style.border = '1px solid #c3e6cb'; } else if (type === 'error') { messageEl.style.background = '#f8d7da'; messageEl.style.color = '#721c24'; messageEl.style.border = '1px solid #f5c6cb'; } else if (type === 'info') { messageEl.style.background = '#d1ecf1'; messageEl.style.color = '#0c5460'; messageEl.style.border = '1px solid #bee5eb'; } } function validateStoredLicense(license) { console.log("Validating stored license..."); // Pour l'instant, accepter simplement la licence stockée // En production, faire une validation serveur if (license && license.length > 5) { console.log("License is valid"); return true; } // Si invalide, afficher le modal à nouveau showLicenseModal(); return false; } function closeLicenseModal() { const modal = document.getElementById('license-modal'); if (modal) { modal.remove(); } } function checkLicenseBeforePush() { const license = getCookie(LICENSE_STORAGE_KEY); if (!license) { alert('Veuillez d\'abord activer une licence'); showLicenseModal(); return false; } // Vérifier si c'est une licence d'essai expirée if (license.startsWith('TRIAL-')) { // À implémenter : vérifier la date } return true; } // ============================================ // FONCTIONS UTILITAIRES DE COOKIE // ============================================ function setCookie(name, value, days) { const d = new Date(); d.setTime(d.getTime() + (days * 24 * 60 * 60 * 1000)); const expires = "expires=" + d.toUTCString(); document.cookie = name + "=" + encodeURIComponent(value) + ";" + expires + ";path=/"; console.log("Cookie set: " + name); } function getCookie(name) { const nameEQ = name + "="; const ca = document.cookie.split(';'); for (let i = 0; i < ca.length; i++) { let c = ca[i].trim(); if (c.indexOf(nameEQ) === 0) { return decodeURIComponent(c.substring(nameEQ.length)); } } return ""; } function deleteCookie(name) { setCookie(name, "", -1); console.log("Cookie deleted: " + name); }