97 lines
5.4 KiB
Python
97 lines
5.4 KiB
Python
"""add tls aggregate reports
|
|
|
|
Revision ID: 20260623_0001
|
|
Revises: 20260520_0002
|
|
Create Date: 2026-06-23 00:00:00.000000+00:00
|
|
"""
|
|
from __future__ import annotations
|
|
|
|
from alembic import op
|
|
import sqlalchemy as sa
|
|
|
|
revision = "20260623_0001"
|
|
down_revision = "20260520_0002"
|
|
branch_labels = None
|
|
depends_on = None
|
|
|
|
|
|
def upgrade() -> None:
|
|
op.create_table(
|
|
"tls_reports",
|
|
sa.Column("id", sa.Integer(), primary_key=True),
|
|
sa.Column("inbox_id", sa.String(length=120), nullable=False),
|
|
sa.Column("mail_message_id", sa.Integer(), sa.ForeignKey("mail_messages.id"), nullable=True),
|
|
sa.Column("raw_json_sha256", sa.String(length=64), nullable=False),
|
|
sa.Column("report_id", sa.String(length=500), nullable=True),
|
|
sa.Column("org_name", sa.String(length=255), nullable=True),
|
|
sa.Column("contact_info", sa.Text(), nullable=True),
|
|
sa.Column("domain", sa.String(length=255), nullable=False),
|
|
sa.Column("date_begin", sa.DateTime(timezone=True), nullable=True),
|
|
sa.Column("date_end", sa.DateTime(timezone=True), nullable=True),
|
|
sa.Column("created_at", sa.DateTime(timezone=True), nullable=False),
|
|
)
|
|
op.create_index(op.f("ix_tls_reports_date_begin"), "tls_reports", ["date_begin"], unique=False)
|
|
op.create_index(op.f("ix_tls_reports_date_end"), "tls_reports", ["date_end"], unique=False)
|
|
op.create_index(op.f("ix_tls_reports_domain"), "tls_reports", ["domain"], unique=False)
|
|
op.create_index(op.f("ix_tls_reports_inbox_id"), "tls_reports", ["inbox_id"], unique=False)
|
|
op.create_index(op.f("ix_tls_reports_org_name"), "tls_reports", ["org_name"], unique=False)
|
|
op.create_index(op.f("ix_tls_reports_raw_json_sha256"), "tls_reports", ["raw_json_sha256"], unique=True)
|
|
op.create_index(op.f("ix_tls_reports_report_id"), "tls_reports", ["report_id"], unique=False)
|
|
|
|
op.create_table(
|
|
"tls_policies",
|
|
sa.Column("id", sa.Integer(), primary_key=True),
|
|
sa.Column("tls_report_id", sa.Integer(), sa.ForeignKey("tls_reports.id"), nullable=False),
|
|
sa.Column("policy_type", sa.String(length=80), nullable=True),
|
|
sa.Column("policy_domain", sa.String(length=255), nullable=False),
|
|
sa.Column("policy_strings_json", sa.Text(), nullable=False),
|
|
sa.Column("mx_hosts_json", sa.Text(), nullable=False),
|
|
sa.Column("total_successful_session_count", sa.Integer(), nullable=False),
|
|
sa.Column("total_failure_session_count", sa.Integer(), nullable=False),
|
|
sa.Column("created_at", sa.DateTime(timezone=True), nullable=False),
|
|
)
|
|
op.create_index(op.f("ix_tls_policies_policy_domain"), "tls_policies", ["policy_domain"], unique=False)
|
|
op.create_index(op.f("ix_tls_policies_policy_type"), "tls_policies", ["policy_type"], unique=False)
|
|
op.create_index(op.f("ix_tls_policies_tls_report_id"), "tls_policies", ["tls_report_id"], unique=False)
|
|
|
|
op.create_table(
|
|
"tls_failures",
|
|
sa.Column("id", sa.Integer(), primary_key=True),
|
|
sa.Column("tls_policy_id", sa.Integer(), sa.ForeignKey("tls_policies.id"), nullable=False),
|
|
sa.Column("result_type", sa.String(length=120), nullable=True),
|
|
sa.Column("sending_mta_ip", sa.String(length=80), nullable=True),
|
|
sa.Column("receiving_mx_hostname", sa.String(length=255), nullable=True),
|
|
sa.Column("receiving_mx_helo", sa.String(length=255), nullable=True),
|
|
sa.Column("receiving_ip", sa.String(length=80), nullable=True),
|
|
sa.Column("failed_session_count", sa.Integer(), nullable=False),
|
|
sa.Column("additional_information", sa.Text(), nullable=True),
|
|
sa.Column("failure_reason_code", sa.String(length=120), nullable=True),
|
|
sa.Column("created_at", sa.DateTime(timezone=True), nullable=False),
|
|
)
|
|
op.create_index(op.f("ix_tls_failures_receiving_mx_hostname"), "tls_failures", ["receiving_mx_hostname"], unique=False)
|
|
op.create_index(op.f("ix_tls_failures_result_type"), "tls_failures", ["result_type"], unique=False)
|
|
op.create_index(op.f("ix_tls_failures_sending_mta_ip"), "tls_failures", ["sending_mta_ip"], unique=False)
|
|
op.create_index(op.f("ix_tls_failures_tls_policy_id"), "tls_failures", ["tls_policy_id"], unique=False)
|
|
|
|
|
|
def downgrade() -> None:
|
|
op.drop_index(op.f("ix_tls_failures_tls_policy_id"), table_name="tls_failures")
|
|
op.drop_index(op.f("ix_tls_failures_sending_mta_ip"), table_name="tls_failures")
|
|
op.drop_index(op.f("ix_tls_failures_result_type"), table_name="tls_failures")
|
|
op.drop_index(op.f("ix_tls_failures_receiving_mx_hostname"), table_name="tls_failures")
|
|
op.drop_table("tls_failures")
|
|
|
|
op.drop_index(op.f("ix_tls_policies_tls_report_id"), table_name="tls_policies")
|
|
op.drop_index(op.f("ix_tls_policies_policy_type"), table_name="tls_policies")
|
|
op.drop_index(op.f("ix_tls_policies_policy_domain"), table_name="tls_policies")
|
|
op.drop_table("tls_policies")
|
|
|
|
op.drop_index(op.f("ix_tls_reports_report_id"), table_name="tls_reports")
|
|
op.drop_index(op.f("ix_tls_reports_raw_json_sha256"), table_name="tls_reports")
|
|
op.drop_index(op.f("ix_tls_reports_org_name"), table_name="tls_reports")
|
|
op.drop_index(op.f("ix_tls_reports_inbox_id"), table_name="tls_reports")
|
|
op.drop_index(op.f("ix_tls_reports_domain"), table_name="tls_reports")
|
|
op.drop_index(op.f("ix_tls_reports_date_end"), table_name="tls_reports")
|
|
op.drop_index(op.f("ix_tls_reports_date_begin"), table_name="tls_reports")
|
|
op.drop_table("tls_reports")
|