feat: authorize Plausible script
This commit is contained in:
@@ -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
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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');
|
||||||
|
|||||||
Reference in New Issue
Block a user