Split alknet-core configuration into StaticConfig (immutable after startup) and DynamicConfig (hot-reloadable at runtime via ArcSwap). - Add StaticConfig struct in config/static_config.rs with all fields per ADR-030 - Add DynamicConfig struct with AuthPolicy, ForwardingPolicy, RateLimitConfig - Add ForwardingPolicy with allow_all()/deny_all() defaults (ADR-031) - Add ConfigReloadHandle with reload() method for runtime config updates - Replace Arc<ServerAuthConfig> with Arc<ArcSwap<DynamicConfig>> in ServerHandler - Add config_reload_handle() to Server for obtaining reload handles - Add AuthPolicy with authenticate_publickey/authenticate_certificate methods - All existing tests pass with the new config structure - Default DynamicConfig produces identical behavior to current code
45 lines
1.3 KiB
TOML
45 lines
1.3 KiB
TOML
[package]
|
|
name = "alknet-core"
|
|
version.workspace = true
|
|
edition.workspace = true
|
|
license.workspace = true
|
|
description = "Core library for Alknet: pluggable SSH tunnel transport, SOCKS5 proxy, port forwarding, and authentication"
|
|
repository.workspace = true
|
|
|
|
[lib]
|
|
name = "alknet_core"
|
|
|
|
[features]
|
|
default = []
|
|
tls = ["dep:tokio-rustls", "dep:rustls", "dep:rustls-pki-types", "dep:webpki-roots"]
|
|
iroh = ["dep:iroh", "dep:url"]
|
|
acme = ["dep:rustls-acme", "dep:futures", "tls"]
|
|
testutil = []
|
|
transport-traits = []
|
|
|
|
[dependencies]
|
|
russh = "0.49"
|
|
tokio = { version = "1", features = ["full"] }
|
|
tracing = "0.1"
|
|
anyhow = "1"
|
|
thiserror = "2"
|
|
tokio-util = { version = "0.7", features = ["compat"] }
|
|
tokio-rustls = { version = "0.26", optional = true }
|
|
rustls = { version = "0.23", optional = true, features = ["aws_lc_rs"] }
|
|
rustls-pki-types = { version = "1", optional = true }
|
|
rustls-acme = { version = "0.12", optional = true }
|
|
futures = { version = "0.3", optional = true }
|
|
webpki-roots = { version = "0.26", optional = true }
|
|
iroh = { version = "0.34", optional = true }
|
|
url = { version = "2", optional = true }
|
|
async-trait = "0.1"
|
|
ipnetwork = "0.21.1"
|
|
arc-swap = "1"
|
|
|
|
[dev-dependencies]
|
|
alknet-core = { path = ".", features = ["testutil", "tls", "iroh"] }
|
|
tempfile = "3"
|
|
rcgen = "0.14"
|
|
rand_core = "0.6"
|
|
ssh-key = { version = "0.6", features = ["ed25519", "alloc"] }
|
|
rand = "0.10.1" |