45 lines
2.0 KiB
Terraform
45 lines
2.0 KiB
Terraform
# =============================================================================
|
|
# CLOUDFLARE : Workers : Deny Page (page de refus d'accès personnalisée)
|
|
# =============================================================================
|
|
# BRIQUE DENY PAGE : toutes les applications Access du repo pointent leur
|
|
# custom_deny_url vers https://denied.tips-of-mine.org/ — mais ce hostname
|
|
# n'existait pas jusqu'ici (idée reprise du projet macharpe). Cette brique
|
|
# comble le trou avec un Worker Cloudflare qui sert une vraie page de refus
|
|
# (HTML dans workers/deny-page.js), sans aucun serveur à héberger.
|
|
#
|
|
# Chaîne : DNS denied.<zone> (proxifié, IP factice) -> route Workers -> Worker
|
|
# =============================================================================
|
|
|
|
#======================================================
|
|
# Le script Worker
|
|
#======================================================
|
|
resource "cloudflare_workers_script" "deny_page" {
|
|
account_id = local.cloudflare_account_id
|
|
script_name = "deny-page"
|
|
content = file("${path.module}/workers/deny-page.js")
|
|
}
|
|
|
|
#======================================================
|
|
# DNS : denied.<zone> — enregistrement proxifié vers une adresse réservée
|
|
# (100:: = IPv6 discard) : le trafic n'atteint jamais cette IP, le Worker
|
|
# intercepte la requête sur l'edge Cloudflare.
|
|
#======================================================
|
|
resource "cloudflare_dns_record" "deny_page" {
|
|
zone_id = local.cloudflare_zone_id
|
|
name = "denied"
|
|
type = "AAAA"
|
|
content = "100::"
|
|
ttl = 1
|
|
proxied = true
|
|
comment = "Managed by Terraform - page de refus Access (Worker deny-page)"
|
|
}
|
|
|
|
#======================================================
|
|
# La route qui lie le hostname au Worker
|
|
#======================================================
|
|
resource "cloudflare_workers_route" "deny_page" {
|
|
zone_id = local.cloudflare_zone_id
|
|
pattern = "denied.${var.cloudflare_zone}/*"
|
|
script = cloudflare_workers_script.deny_page.script_name
|
|
}
|