Add TLS reports capabilities
This commit is contained in:
@@ -52,6 +52,7 @@ class MailMessage(Base):
|
||||
created_at: Mapped[datetime] = mapped_column(DateTime(timezone=True), default=utcnow)
|
||||
|
||||
reports: Mapped[list["Report"]] = relationship(back_populates="mail_message")
|
||||
tls_reports: Mapped[list["TLSReport"]] = relationship(back_populates="mail_message")
|
||||
|
||||
|
||||
class Report(Base):
|
||||
@@ -124,6 +125,60 @@ class AuthResult(Base):
|
||||
record: Mapped[Record] = relationship(back_populates="auth_results")
|
||||
|
||||
|
||||
class TLSReport(Base):
|
||||
__tablename__ = "tls_reports"
|
||||
|
||||
id: Mapped[int] = mapped_column(primary_key=True)
|
||||
inbox_id: Mapped[str] = mapped_column(String(120), index=True)
|
||||
mail_message_id: Mapped[int | None] = mapped_column(ForeignKey("mail_messages.id"))
|
||||
raw_json_sha256: Mapped[str] = mapped_column(String(64), unique=True, index=True)
|
||||
report_id: Mapped[str | None] = mapped_column(String(500), index=True)
|
||||
org_name: Mapped[str | None] = mapped_column(String(255), index=True)
|
||||
contact_info: Mapped[str | None] = mapped_column(Text)
|
||||
domain: Mapped[str] = mapped_column(String(255), index=True)
|
||||
date_begin: Mapped[datetime | None] = mapped_column(DateTime(timezone=True), index=True)
|
||||
date_end: Mapped[datetime | None] = mapped_column(DateTime(timezone=True), index=True)
|
||||
created_at: Mapped[datetime] = mapped_column(DateTime(timezone=True), default=utcnow)
|
||||
|
||||
mail_message: Mapped[MailMessage | None] = relationship(back_populates="tls_reports")
|
||||
policies: Mapped[list["TLSPolicy"]] = relationship(back_populates="tls_report", cascade="all, delete-orphan")
|
||||
|
||||
|
||||
class TLSPolicy(Base):
|
||||
__tablename__ = "tls_policies"
|
||||
|
||||
id: Mapped[int] = mapped_column(primary_key=True)
|
||||
tls_report_id: Mapped[int] = mapped_column(ForeignKey("tls_reports.id"), index=True)
|
||||
policy_type: Mapped[str | None] = mapped_column(String(80), index=True)
|
||||
policy_domain: Mapped[str] = mapped_column(String(255), index=True)
|
||||
policy_strings_json: Mapped[str] = mapped_column(Text, default="[]")
|
||||
mx_hosts_json: Mapped[str] = mapped_column(Text, default="[]")
|
||||
total_successful_session_count: Mapped[int] = mapped_column(Integer, default=0)
|
||||
total_failure_session_count: Mapped[int] = mapped_column(Integer, default=0)
|
||||
created_at: Mapped[datetime] = mapped_column(DateTime(timezone=True), default=utcnow)
|
||||
|
||||
tls_report: Mapped[TLSReport] = relationship(back_populates="policies")
|
||||
failures: Mapped[list["TLSFailure"]] = relationship(back_populates="policy", cascade="all, delete-orphan")
|
||||
|
||||
|
||||
class TLSFailure(Base):
|
||||
__tablename__ = "tls_failures"
|
||||
|
||||
id: Mapped[int] = mapped_column(primary_key=True)
|
||||
tls_policy_id: Mapped[int] = mapped_column(ForeignKey("tls_policies.id"), index=True)
|
||||
result_type: Mapped[str | None] = mapped_column(String(120), index=True)
|
||||
sending_mta_ip: Mapped[str | None] = mapped_column(String(80), index=True)
|
||||
receiving_mx_hostname: Mapped[str | None] = mapped_column(String(255), index=True)
|
||||
receiving_mx_helo: Mapped[str | None] = mapped_column(String(255))
|
||||
receiving_ip: Mapped[str | None] = mapped_column(String(80))
|
||||
failed_session_count: Mapped[int] = mapped_column(Integer, default=0)
|
||||
additional_information: Mapped[str | None] = mapped_column(Text)
|
||||
failure_reason_code: Mapped[str | None] = mapped_column(String(120))
|
||||
created_at: Mapped[datetime] = mapped_column(DateTime(timezone=True), default=utcnow)
|
||||
|
||||
policy: Mapped[TLSPolicy] = relationship(back_populates="failures")
|
||||
|
||||
|
||||
class SkippedReportPayload(Base):
|
||||
__tablename__ = "skipped_report_payloads"
|
||||
__table_args__ = (
|
||||
|
||||
Reference in New Issue
Block a user