frontal : page 404 du locataire pour les noms qu il ne publie pas
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
parent
f818143b49
commit
5f23201075
4 changed files with 66 additions and 0 deletions
19
CHANGELOG.md
19
CHANGELOG.md
|
|
@ -1,5 +1,24 @@
|
|||
# CHANGELOG — Set-OPS
|
||||
|
||||
## 2026-09-29 (44) — La page du PSPBT devient la page 404 du frontal de Chezlepro
|
||||
|
||||
Précision de l'exploitant sur (43) : c'est le **frontal** qui doit servir cette page, comme
|
||||
**page 404 par défaut** — pas le dorsal comme page d'un site.
|
||||
|
||||
- **Le rôle `serveur_web_frontal`** accepte une page 404 du locataire
|
||||
(`serveur_web_frontal_page_404`, un chemin dans le dépôt du locataire) : le serveur par
|
||||
défaut la sert, statut 404, à tout nom qu'il ne publie pas ; sans page déclarée, il ferme
|
||||
toujours sans réponse (444). La page est `internal` (pas de lecture directe de
|
||||
`/404.html` : 404 aussi), avec sa propre CSP (styles et scripts en ligne, rien d'extérieur).
|
||||
Le nom inconnu n'obtient toujours aucun service.
|
||||
- **Chezlepro** : `contenus/frontal-404.html` (le fichier `site web.html` de l'exploitant) ;
|
||||
Technolibre garde le 444.
|
||||
- **`essai.chezlepro.ca` revient à sa page de test**, CSP par défaut (la CSP propre au site,
|
||||
posée en (43), est retirée).
|
||||
|
||||
Éprouvé depuis l'Internet : `http://69.70.26.61/`, un chemin quelconque, `/404.html` et un nom
|
||||
inconnu → 404 avec la page du PSPBT ; `essai.chezlepro.ca` → 200, la page de test.
|
||||
|
||||
## 2026-09-29 (43) — `essai.chezlepro.ca` sert la page du « Parti de la Sainte-Paix et du Bon Temps »
|
||||
|
||||
À la demande de l'exploitant : le fichier `site web.html` (le seul du dossier `parti politique
|
||||
|
|
|
|||
|
|
@ -38,3 +38,16 @@ serveur_web_frontal_taille_max_corps: "16m"
|
|||
|
||||
# Un amont declare sur un de ces ports se parle en TLS (comme a l'edge).
|
||||
serveur_web_frontal_ports_tls: [443, 8443]
|
||||
|
||||
# --- LA PAGE 404 DU FRONTAL (2026-09-29) ----------------------------------------------------
|
||||
#
|
||||
# Ce que recoit une requete pour un nom que le frontal ne publie pas : une visite de l'adresse
|
||||
# publique sans nom, un nom inconnu. Vide = la connexion est fermee sans reponse (444). Un
|
||||
# chemin (sur le controleur, dans le depot du locataire) = cette page, avec le statut 404.
|
||||
# C'est un CONTENU du locataire : il vit dans son depot, pas dans ce role.
|
||||
serveur_web_frontal_page_404: ""
|
||||
serveur_web_frontal_racine_404: "/var/www/setops-frontal"
|
||||
# La page peut porter ses styles et scripts en ligne ; rien d'exterieur n'est autorise.
|
||||
serveur_web_frontal_page_404_csp: >-
|
||||
default-src 'self'; img-src 'self' data:; style-src 'self' 'unsafe-inline';
|
||||
script-src 'self' 'unsafe-inline'; object-src 'none'; base-uri 'self'; frame-ancestors 'self'
|
||||
|
|
|
|||
|
|
@ -69,6 +69,24 @@
|
|||
| expositions_des_applications({'domaines_publics': domaines_publics | default({})}, serveur_web_frontal_groupe) }}
|
||||
when: serveur_web_frontal_publier_expositions | bool
|
||||
|
||||
- name: Creer la racine de la page 404
|
||||
ansible.builtin.file:
|
||||
path: "{{ serveur_web_frontal_racine_404 }}"
|
||||
state: directory
|
||||
owner: root
|
||||
group: root
|
||||
mode: "0755"
|
||||
when: serveur_web_frontal_page_404 | length > 0
|
||||
|
||||
- name: Deposer la page 404 du locataire
|
||||
ansible.builtin.copy:
|
||||
src: "{{ serveur_web_frontal_page_404 }}"
|
||||
dest: "{{ serveur_web_frontal_racine_404 }}/404.html"
|
||||
owner: root
|
||||
group: root
|
||||
mode: "0644"
|
||||
when: serveur_web_frontal_page_404 | length > 0
|
||||
|
||||
- name: Deployer les vhosts du frontal (derives des expositions publiques)
|
||||
ansible.builtin.template:
|
||||
src: frontal.conf.j2
|
||||
|
|
|
|||
|
|
@ -3,11 +3,27 @@
|
|||
# LE SERVEUR PAR DEFAUT REFUSE TOUT NOM INCONNU (meme regle que l'edge) : sans lui, nginx
|
||||
# confie un nom inconnu au premier vhost, et un balayage de l'adresse publique recevrait un
|
||||
# service qu'il n'a pas nomme.
|
||||
#
|
||||
# LA PAGE 404 DU LOCATAIRE, s'il en declare une (`serveur_web_frontal_page_404`) : le nom
|
||||
# inconnu recoit cette page, statut 404 — il n'obtient toujours aucun service. Sinon, 444.
|
||||
server {
|
||||
listen 80 default_server;
|
||||
listen [::]:80 default_server;
|
||||
server_name _;
|
||||
{% if serveur_web_frontal_page_404 | length > 0 %}
|
||||
root {{ serveur_web_frontal_racine_404 }};
|
||||
error_page 404 /404.html;
|
||||
location = /404.html {
|
||||
internal;
|
||||
add_header Content-Security-Policy "{{ serveur_web_frontal_page_404_csp | trim }}" always;
|
||||
add_header X-Content-Type-Options "nosniff" always;
|
||||
}
|
||||
location / {
|
||||
return 404;
|
||||
}
|
||||
{% else %}
|
||||
return 444;
|
||||
{% endif %}
|
||||
}
|
||||
{% for expo in serveur_web_frontal_expositions | default([]) %}
|
||||
{% if expo.hote in hostvars and hostvars[expo.hote].ansible_host is defined and expo.port %}
|
||||
|
|
|
|||
Loading…
Reference in a new issue