Files
EasyTier/easytier-web/Cargo.toml
T
Luna YaoandClaude Code 250c2ad8d6 refactor(config): preserve explicit flags with FlagsPatch and derive CLI arguments from schema (#2585)
This PR refactors EasyTier's configuration flags system across protobuf definitions, TOML/API persistence, runtime reconciliation, and the CLI.

It introduces a synthesized FlagsPatch protobuf message with optionize and pbjson support to track field presence reliably, replaces manual CLI flag boilerplate with dynamic schema-driven clap argument generation, and
establishes Flags::resolve(patch) as the single source of truth for runtime defaults.

Co-authored-by: Claude Code <noreply@anthropic.com>
2026-10-10 22:11:08 +08:00

107 lines
3.2 KiB
TOML

[package]
name = "easytier-web"
version = "2.7.0"
edition.workspace = true
rust-version.workspace = true
description = "Config server for easytier. easytier-core gets config from this and web frontend use it as restful api server."
[dependencies]
optionize.workspace = true
easytier = { workspace = true, default-features = true }
easytier-core = { workspace = true, default-features = true }
tracing.workspace = true
anyhow.workspace = true
thiserror.workspace = true
tokio = { workspace = true, default-features = true, features = ["full"] }
tokio-util = { workspace = true, features = ["rt"] }
dashmap.workspace = true
url.workspace = true
async-trait.workspace = true
futures = { workspace = true, features = ["default"] }
prost.workspace = true
maxminddb = "0.32"
axum = { workspace = true, features = ["macros"] }
axum-login = { version = "0.18" }
password-auth = { version = "1.0.0" }
axum-messages = "0.8.0"
axum-embed = { version = "0.1.0", optional = true }
tower-sessions-sqlx-store = { version = "0.15.0", features = ["sqlite"] }
# Match axum-login 0.18 and the SQLx session store.
tower-sessions = { version = "0.14.0", default-features = false, features = [
"signed",
"axum-core",
] }
tower-http = { workspace = true, features = ["cors", "compression-full"] }
sqlx = { workspace = true, features = ["sqlite"] }
sea-orm = { workspace = true, features = [
"sqlx-sqlite",
"runtime-tokio-rustls",
"macros",
] }
sea-orm-migration.workspace = true
# for captcha
rust-embed = { version = "8.12.0", features = ["debug-embed", "include-exclude"] }
base64.workspace = true
cidr.workspace = true
rand.workspace = true
sha2.workspace = true
x25519-dalek = { workspace = true, features = ["static_secrets"] }
easytier-proto.workspace = true
image = { version = "0.25", default-features = false, features = ["png"] }
ab_glyph = "0.2.32"
imageproc = { version = "0.27.0", default-features = false, features = ["text"] }
rust-i18n.workspace = true
sys-locale.workspace = true
clap = { workspace = true, features = [
"string",
"unicode",
"derive",
"wrap_help",
"env",
] }
serde = { workspace = true, features = ["derive"] }
serde_json.workspace = true
uuid = { workspace = true, features = [
"v4",
"fast-rng",
"macro-diagnostics",
"serde",
] }
chrono = { workspace = true, features = ["serde"] }
# Keep the bundled reqwest 0.12 client disabled; use the official 0.13 adapter.
openidconnect = { version = "4.0", default-features = false, features = ["accept-rfc3339-timestamps"] }
# Pin the adapter until its API stabilizes.
oauth2-reqwest = "=0.1.0-alpha.3"
# Reuse EasyTier's ring provider. reqwest 0.13's rustls feature adds aws-lc,
# making rustls backend selection ambiguous when core/web are built together.
# Initialize the process provider before constructing a reqwest client.
reqwest = { workspace = true, features = ["json", "rustls-no-provider"] }
subtle = "2.6"
mimalloc.workspace = true
[build-dependencies]
thunk-rs = { workspace = true, features = [
"win7",
] }
[features]
default = []
embed = ["dep:axum-embed"]
[package.metadata.cargo-machete]
ignored = [
# Windows-only build.rs setup calls thunk::thunk().
"thunk-rs",
]
[dev-dependencies]
tower = { version = "0.5", features = ["util"] }