provider "aws" {
  region = var.aws_region
}

# Terraform backends cannot contain interpolations
terraform {
  backend "s3" {
    bucket  = "dev-orcd-terraform-state"
    key     = "dev/orcd-cdn/terraform.tfstate"
    region  = "us-east-1"
    encrypt = "true"
  }
}

data "aws_caller_identity" "current" {}

# Add WAF for all Prod orcd cloudfront distributions
module "orcd_cloudfront_shared_waf" {
  source            = "git@github.com:theorchard/terraform-aws-waf.git//?ref=1.4.0"
  environment       = var.environment
  service_name      = "${var.service_name}-cloudfront"
  aws_region        = var.aws_region
  acl_scope         = "CLOUDFRONT"
  count_waf_enabled = false
  block_waf_enabled = true
  excluded_rules = [
    "NoUserAgent_HEADER",
  ]
}

resource "aws_wafv2_web_acl_logging_configuration" "waf_block_web_acl_logging_configuration" {
  log_destination_configs = ["arn:aws:firehose:${var.aws_region}:${data.aws_caller_identity.current.account_id}:deliverystream/aws-waf-logs-tf-orcd-devaccount-stream"]
  resource_arn            = module.orcd_cloudfront_shared_waf.waf_blocking_arn_output

  redacted_fields {
    single_header {
      name = "authorization"
    }
  }

  redacted_fields {
    single_header {
      name = "session"
    }
  }
}
