gdo: the code that opens the iris
Test / test (push) Successful in 4s
Publish release / publish (push) Successful in 18s

A durable consumer on portal's WORMHOLE stream, each message handed to
the host's SMTP as text with an HTML alternative; acked on acceptance,
retried after a minute otherwise, left for a newer gdo when the
contract version is unknown. `gdo probe <to>` sends one through and
waits for the consumer to drain. GDO_TYPST_THEME attaches a Typst PDF.
A systemd unit and an installer for one gdo per host.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01L4jrCgLiKKHAEFuZUJjckH
This commit is contained in:
Bendik Aagaard Lynghaug
2026-09-23 19:47:57 +02:00
co-authored by Claude Fable 5.1
commit 983491295e
10 changed files with 2318 additions and 0 deletions
+22
View File
@@ -0,0 +1,22 @@
[package]
name = "gdo"
version = "0.1.0"
edition = "2021"
description = "Sends the code that opens the iris: delivers portal's outgoing mail from JetStream to the host's SMTP"
license = "MIT"
repository = "https://project.uhhm.no/uhhm/gdo"
[dependencies]
anyhow = "1"
async-nats = "0.38"
futures = "0.3"
lettre = { version = "0.11", default-features = false, features = ["builder", "smtp-transport", "tokio1", "hostname"] }
serde = { version = "1", features = ["derive"] }
serde_json = "1"
tokio = { version = "1", features = ["rt-multi-thread", "macros", "signal", "process", "fs"] }
tracing = "0.1"
tracing-subscriber = { version = "0.3", features = ["env-filter"] }
[profile.release]
strip = true
lto = "thin"