feat: authorize Plausible script

This commit is contained in:
2025-07-24 08:36:46 +04:00
parent a08576cea4
commit 0a3604daad
2 changed files with 15 additions and 15 deletions
+2 -2
View File
@@ -218,7 +218,7 @@ function setSecurityHeaders() {
$csp = "default-src 'self'; "; $csp = "default-src 'self'; ";
$csp .= "style-src 'self' 'unsafe-inline' https://cdnjs.cloudflare.com; "; $csp .= "style-src 'self' 'unsafe-inline' https://cdnjs.cloudflare.com; ";
$csp .= "script-src 'self' 'unsafe-inline' https://cdnjs.cloudflare.com; "; $csp .= "script-src 'self' 'unsafe-inline' https://cdnjs.cloudflare.com https://plausible.io; "; // PLAUSIBLE UPDATED
// Images : autoriser les domaines externes plus HTTPS général en dev // Images : autoriser les domaines externes plus HTTPS général en dev
$imgSrc = "'self' data: " . ($mastodonDomain ? $mastodonDomain : '') . " " . ($peertubeDomain ? $peertubeDomain : ''); $imgSrc = "'self' data: " . ($mastodonDomain ? $mastodonDomain : '') . " " . ($peertubeDomain ? $peertubeDomain : '');
@@ -241,7 +241,7 @@ function setSecurityHeaders() {
$csp .= "frame-src " . $frameSrc . "; "; $csp .= "frame-src " . $frameSrc . "; ";
// Connexions : autoriser Mastodon et PeerTube // Connexions : autoriser Mastodon et PeerTube
$connectSrc = "'self' " . ($mastodonDomain ? $mastodonDomain : '') . " " . ($peertubeDomain ? $peertubeDomain : ''); $connectSrc = "'self' https://plausible.io " . ($mastodonDomain ? $mastodonDomain : '') . " " . ($peertubeDomain ? $peertubeDomain : '');
if ($isLocalDev) { if ($isLocalDev) {
$connectSrc .= " ws: wss:"; // WebSockets pour le dev $connectSrc .= " ws: wss:"; // WebSockets pour le dev
} }
+13 -13
View File
@@ -24,7 +24,7 @@ setSecurityHeaders();
<link rel="manifest" href="site.webmanifest"> <link rel="manifest" href="site.webmanifest">
<link rel="icon" type="image/x-icon" href="img/favicon.ico"> <link rel="icon" type="image/x-icon" href="img/favicon.ico">
<meta name="theme-color" content="#FF0000"> <meta name="theme-color" content="#FF0000">
<!-- PWA Meta Tags --> <!-- PWA Meta Tags -->
<meta name="mobile-web-app-capable" content="yes"> <meta name="mobile-web-app-capable" content="yes">
<meta name="apple-mobile-web-app-capable" content="yes"> <meta name="apple-mobile-web-app-capable" content="yes">
@@ -33,7 +33,7 @@ setSecurityHeaders();
<meta name="application-name" content="kaubuntu.re"> <meta name="application-name" content="kaubuntu.re">
<meta name="msapplication-TileColor" content="#FF0000"> <meta name="msapplication-TileColor" content="#FF0000">
<meta name="msapplication-config" content="browserconfig.xml"> <meta name="msapplication-config" content="browserconfig.xml">
<!-- Open Graph Meta Tags --> <!-- Open Graph Meta Tags -->
<meta property="og:title" content="kaubuntu.re - Plateforme Multimédia"> <meta property="og:title" content="kaubuntu.re - Plateforme Multimédia">
<meta property="og:description" content="Découvrez notre plateforme multimédia avec des vidéos, des shorts et des directs. Tendances, catégories et contenus exclusifs vous attendent."> <meta property="og:description" content="Découvrez notre plateforme multimédia avec des vidéos, des shorts et des directs. Tendances, catégories et contenus exclusifs vous attendent.">
@@ -42,18 +42,18 @@ setSecurityHeaders();
<meta property="og:type" content="website"> <meta property="og:type" content="website">
<meta property="og:site_name" content="kaubuntu.re"> <meta property="og:site_name" content="kaubuntu.re">
<meta property="og:locale" content="fr_FR"> <meta property="og:locale" content="fr_FR">
<!-- Twitter Card Meta Tags --> <!-- Twitter Card Meta Tags -->
<meta name="twitter:card" content="summary_large_image"> <meta name="twitter:card" content="summary_large_image">
<meta name="twitter:title" content="kaubuntu.re - Plateforme Multimédia"> <meta name="twitter:title" content="kaubuntu.re - Plateforme Multimédia">
<meta name="twitter:description" content="Découvrez notre plateforme multimédia avec des vidéos, des shorts et des directs. Tendances, catégories et contenus exclusifs vous attendent."> <meta name="twitter:description" content="Découvrez notre plateforme multimédia avec des vidéos, des shorts et des directs. Tendances, catégories et contenus exclusifs vous attendent.">
<meta name="twitter:image" content="<?php echo 'https://' . $_SERVER['HTTP_HOST'] . '/img/logo.png'; ?>"> <meta name="twitter:image" content="<?php echo 'https://' . $_SERVER['HTTP_HOST'] . '/img/logo.png'; ?>">
<!-- Données structurées JSON-LD pour le site web --> <!-- Données structurées JSON-LD pour le site web -->
<?php <?php
$websiteJsonLd = generateWebSiteJsonLd(); $websiteJsonLd = generateWebSiteJsonLd();
outputJsonLd($websiteJsonLd); outputJsonLd($websiteJsonLd);
// Générer les fils d'Ariane pour la page d'accueil // Générer les fils d'Ariane pour la page d'accueil
$breadcrumbs = [ $breadcrumbs = [
['name' => 'Accueil', 'url' => getBaseUrl()] ['name' => 'Accueil', 'url' => getBaseUrl()]
@@ -61,14 +61,14 @@ setSecurityHeaders();
$breadcrumbJsonLd = generateBreadcrumbJsonLd($breadcrumbs); $breadcrumbJsonLd = generateBreadcrumbJsonLd($breadcrumbs);
outputJsonLd($breadcrumbJsonLd); outputJsonLd($breadcrumbJsonLd);
?> ?>
<!-- Script pour éviter le flash en mode sombre --> <!-- Script pour éviter le flash en mode sombre -->
<script> <script>
(function() { (function() {
const savedTheme = localStorage.getItem('theme'); const savedTheme = localStorage.getItem('theme');
const systemPrefersDark = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches; const systemPrefersDark = window.matchMedia && window.matchMedia('(prefers-color-scheme: dark)').matches;
const shouldUseDark = savedTheme === 'dark' || (!savedTheme && systemPrefersDark); const shouldUseDark = savedTheme === 'dark' || (!savedTheme && systemPrefersDark);
if (shouldUseDark) { if (shouldUseDark) {
document.documentElement.setAttribute('data-theme', 'dark'); document.documentElement.setAttribute('data-theme', 'dark');
} }
@@ -443,7 +443,7 @@ setSecurityHeaders();
<script src="js/main.js"></script> <script src="js/main.js"></script>
<script src="js/mastodon-timeline.umd.js"></script> <script src="js/mastodon-timeline.umd.js"></script>
<script src="js/mastodon-config.php"></script> <script src="js/mastodon-config.php"></script>
<!-- PWA Service Worker --> <!-- PWA Service Worker -->
<script> <script>
if ('serviceWorker' in navigator) { if ('serviceWorker' in navigator) {
@@ -451,7 +451,7 @@ setSecurityHeaders();
navigator.serviceWorker.register('/sw.js') navigator.serviceWorker.register('/sw.js')
.then(function(registration) { .then(function(registration) {
console.log('Service Worker enregistré avec succès:', registration.scope); console.log('Service Worker enregistré avec succès:', registration.scope);
// Écouter les mises à jour // Écouter les mises à jour
registration.addEventListener('updatefound', function() { registration.addEventListener('updatefound', function() {
const newWorker = registration.installing; const newWorker = registration.installing;
@@ -471,15 +471,15 @@ setSecurityHeaders();
}); });
}); });
} }
// Gestion de l'installation PWA // Gestion de l'installation PWA
let deferredPrompt; let deferredPrompt;
const installButton = document.getElementById('install-pwa'); const installButton = document.getElementById('install-pwa');
window.addEventListener('beforeinstallprompt', function(e) { window.addEventListener('beforeinstallprompt', function(e) {
e.preventDefault(); e.preventDefault();
deferredPrompt = e; deferredPrompt = e;
// Afficher le bouton d'installation s'il existe // Afficher le bouton d'installation s'il existe
if (installButton) { if (installButton) {
installButton.style.display = 'block'; installButton.style.display = 'block';
@@ -495,7 +495,7 @@ setSecurityHeaders();
}); });
} }
}); });
// Masquer le bouton après installation // Masquer le bouton après installation
window.addEventListener('appinstalled', function() { window.addEventListener('appinstalled', function() {
console.log('PWA installée avec succès'); console.log('PWA installée avec succès');