// ============================================
// 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);
}