Cargo.toml 55 lignes · 1797 octets
[package]
name = "rustwarden-fediverse-guard"
version = "1.2.0"
edition.workspace = true
rust-version.workspace = true
description = "Real-time abuse detection and ban management for the Rustwarden ActivityPub federation layer (RFC 0028+)"

[features]
default = ["ui"]
# Admin UI module — 5 Askama screens (dashboard / events / bans /
# manual_ban / thresholds) + `dashboard_card()` factory. Mounted under
# `/admin/fediverse-guard/*` so the standard admin_required middleware
# auto-protects them.
ui = [
    "dep:askama",
    "dep:axum",
    "dep:tower-sessions",
]

[dependencies]
rustwarden-core = { path = "../rustwarden-core" }
rustwarden-fediverse = { path = "../rustwarden-fediverse" }
# Async runtime
tokio = { version = "1", features = ["sync", "time", "rt", "macros"] }
async-trait = "0.1"
# ORM + migrations
sea-orm = { version = "2.0.0", features = ["sqlx-postgres", "runtime-tokio-native-tls", "macros"] }
sea-orm-migration = { version = "2.0.0", features = ["sqlx-postgres", "runtime-tokio-native-tls"] }
# Concurrent hot-path
dashmap = "6"
# Serialization
serde = { version = "1.0", features = ["derive"] }
serde_json = "1.0"
# Identifiers / time
uuid = { version = "1.0", features = ["v4", "serde"] }
chrono = { version = "0.4", features = ["serde"] }
# Errors
thiserror = "2.0"
# Telemetry
tracing = "0.1"
# UI dependencies — only pulled in when the `ui` feature is active.
askama = { version = "0.15", optional = true }
axum = { version = "0.8", features = ["macros"], optional = true }
tower-sessions = { version = "0.14", optional = true }

[lints]
workspace = true

[dev-dependencies]
sea-orm = { version = "2.0.0", features = ["mock"] }
tokio = { version = "1", features = ["full", "test-util"] }

[[bin]]
name = "migrate-fediverse-guard"
path = "migration/src/main.rs"