variable "hcloud_dns_token" {
  sensitive = true
}

provider "hetznerdns" {
  apitoken = var.hcloud_dns_token
}

data "hetznerdns_zone" "main" {
  name = "foodogsquared.one"
}

resource "hetznerdns_record" "personal_site" {
  zone_id = data.hetznerdns_zone.main.id
  name = "@"
  ttl = 3600
  type = "A"
  value = "75.2.60.5"
}

resource "hetznerdns_record" "personal_site_cname" {
  zone_id = data.hetznerdns_zone.main.id
  name = "www"
  ttl = 3600
  type = "CNAME"
  value = "foodogsquared.netlify.app."
}

resource "hetznerdns_record" "personal_wiki" {
  zone_id = data.hetznerdns_zone.main.id
  name = "wiki"
  ttl = 3600
  type = "CNAME"
  value = "foodogsquared-wiki.netlify.app."
}

# Mail resources.
resource "hetznerdns_record" "mail_mx" {
  for_each = toset([ "10 heracles.mxrouting.net.", "20 heracles-relay.mxrouting.net." ])
  zone_id = data.hetznerdns_zone.main.id
  name = "@"
  type = "MX"
  value = each.value
}

resource "hetznerdns_record" "mail_dmarc" {
  zone_id = data.hetznerdns_zone.main.id
  name = "_dmarc"
  ttl = 3600
  type = "TXT"
  value = "v=DMARC1;p=none;rua=mailto:postmaster@foodogsquared.one;ruf=mailto:admin@foodogsquared.one"
}

resource "hetznerdns_record" "mail_dkim" {
  zone_id = data.hetznerdns_zone.main.id
  name = "x._domainkey"
  ttl = 3600
  type = "TXT"
  value = "v=DKIM1; k=rsa; p=MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyLlrgdsO4jLncMoGAowlE14oB9R2ESxNLRBtkzc24LOPJ1CwEIE+5AHZd+ZRMwiD7fdXcyCH7/E1BRXWT+TtLnKnBgf5I0z6EbPqiPPb6nmpDWrbZzA2mdKetAKz0kFJC8oYK7lQF7Bdh57y/HWksoH6yjl1E88m8tEQ/thlyABGjqzV+txgmc1BryFu23KasqI2c4We/KgvsoSSAaUHkjpAMCuJck/P0G9mJWyTHrnZN2gCotyenLBZew0BIbiA2XYp6dQW4sU+MawfZ0E1KA0lem0SRYCB+sGD248uj4xVo9sIiCVyO9EQXy/YCZTeuTQHf1+QeFzI82vIrlv63QIDAQAB"
}

resource "hetznerdns_record" "mail_spf" {
  zone_id = data.hetznerdns_zone.main.id
  name = "@"
  type = "TXT"
  value = "v=spf1 include:mxlogin.com -all"
}

resource "hetznerdns_record" "mail_webmail" {
  for_each = toset([ "mail", "webmail" ])
  zone_id = data.hetznerdns_zone.main.id
  name = each.value
  type = "CNAME"
  value = "heracles.mxrouting.net."
}
