096e70fe54
- extract the headless search out of `easy` into an engine that measures the baseline, resolves the target, and drives the producer/consumer loop, so the CLI and web share one search - make `State` fully observable — structured discovery feed, run phase, baseline/target, and final outcome — and render the same snapshots two ways: the in-place terminal panel and an SSE stream - serve a small embedded page (HTML/JS/Pico baked in via include_str!) on a hand-rolled hyper service: POST /api/run runs one search at a time, GET /api/events streams live snapshots as JSON until it settles - open the UI on a bare invocation (double-clicked binary); `web` with --host/--port/--no-open controls it explicitly - bump to 0.2.0
36 lines
1.0 KiB
TOML
36 lines
1.0 KiB
TOML
[package]
|
|
name = "fast-xray"
|
|
version = "0.2.0"
|
|
edition = "2024"
|
|
rust-version = "1.85"
|
|
description = "Fast Cloudflare IP optimizer for CDN-fronted Xray/VLESS nodes."
|
|
|
|
[dependencies]
|
|
anyhow = "1"
|
|
bytes = "1"
|
|
clap = { version = "4", features = ["derive"] }
|
|
console = "0.15"
|
|
futures = "0.3"
|
|
http-body-util = "0.1"
|
|
hyper = { version = "1", features = ["http1", "server"] }
|
|
hyper-util = { version = "0.1", features = ["tokio"] }
|
|
indicatif = "0.17"
|
|
ipnet = "2"
|
|
rand = "0.8"
|
|
reqwest = { version = "0.12", default-features = false, features = ["rustls-tls"] }
|
|
rustls = { version = "0.23", default-features = false, features = ["ring", "std", "tls12", "logging"] }
|
|
serde = { version = "1", features = ["derive"] }
|
|
serde_json = "1"
|
|
tokio = { version = "1", features = ["io-util", "macros", "net", "rt-multi-thread", "time"] }
|
|
tokio-rustls = { version = "0.26", default-features = false, features = ["ring", "tls12", "logging"] }
|
|
tokio-tungstenite = "0.24"
|
|
url = "2"
|
|
uuid = "1"
|
|
webpki-roots = "0.26"
|
|
|
|
[profile.release]
|
|
opt-level = 3
|
|
lto = "thin"
|
|
codegen-units = 1
|
|
strip = true
|