# ============================================================
# MyKollectOr® CMP — Configuration Apache (OVH mutualisé)
# ============================================================

# ── Sécurité ──
<IfModule mod_headers.c>
    # Empêcher le sniffing MIME
    Header always set X-Content-Type-Options "nosniff"
    # Protection XSS
    Header always set X-XSS-Protection "1; mode=block"
    # Empêcher l'iframe (sauf pour cmp.js)
    Header always set X-Frame-Options "SAMEORIGIN"
    # Politique de referrer
    Header always set Referrer-Policy "strict-origin-when-cross-origin"
    # CSP basique
    Header always set Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-inline' https://fonts.googleapis.com; style-src 'self' 'unsafe-inline' https://fonts.googleapis.com https://fonts.gstatic.com; font-src 'self' https://fonts.gstatic.com; connect-src 'self';"
</IfModule>

# ── Bloquer l'accès aux fichiers sensibles ──
<FilesMatch "(config\.php|auth_check\.php|\.env|\.git)$">
    <IfModule mod_authz_core.c>
        Require all denied
    </IfModule>
    <IfModule !mod_authz_core.c>
        Order deny,allow
        Deny from all
    </IfModule>
</FilesMatch>

# ── Bloquer l'accès au dossier SQL ──
<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteRule ^sql/ - [F,L]
</IfModule>

# ── Compression GZIP ──
<IfModule mod_deflate.c>
    AddOutputFilterByType DEFLATE text/html text/css text/javascript application/javascript application/json
</IfModule>

# ── Cache pour le script CMP ──
<IfModule mod_expires.c>
    ExpiresActive On
    # cmp.js : cache court (1h) pour permettre les mises à jour rapides
    <FilesMatch "cmp\.js$">
        ExpiresDefault "access plus 1 hour"
        Header set Cache-Control "public, max-age=3600, must-revalidate"
    </FilesMatch>
    # Assets statiques du dashboard : cache moyen
    <FilesMatch "\.(css|png|jpg|gif|svg|woff2?)$">
        ExpiresDefault "access plus 7 days"
    </FilesMatch>
</IfModule>

# ── Types MIME ──
AddType application/javascript .js
AddType text/css .css

# ── Protection répertoire admin ──
# Le dashboard est une SPA, toutes les routes passent par index.html
# Les fichiers PHP API sont appelés directement

# ── Empêcher le listing de répertoires ──
Options -Indexes

# ── PHP settings (OVH mutualisé) ──
<IfModule mod_php.c>
    php_value session.cookie_httponly 1
    php_value session.cookie_secure 1
    php_value session.cookie_samesite Strict
    php_value upload_max_filesize 2M
    php_value post_max_size 2M
    php_value max_execution_time 30
    php_value display_errors 0
    php_value log_errors 1
</IfModule>
