mesofact_core/proxy/
config.rs1use clap::Parser;
4use std::path::PathBuf;
5
6#[derive(Debug, Parser)]
7#[command(name = "mesofact-proxy", about = "mesofact tri-mode web proxy (axum)")]
8pub struct Config {
9 #[arg(long, env = "MESOFACT_MANIFEST")]
11 pub manifest: PathBuf,
12
13 #[arg(long, default_value = "0.0.0.0:3000", env = "MESOFACT_BIND")]
15 pub bind: String,
16
17 #[arg(long, env = "MESOFACT_WORKERS")]
19 pub workers: Option<usize>,
20
21 #[arg(long, env = "MESOFACT_CDN_BASE_URL")]
24 pub cdn_base_url: Option<String>,
25
26 #[arg(long, env = "MESOFACT_FALLBACK_DIR")]
28 pub fallback_dir: Option<PathBuf>,
29
30 #[arg(
32 long,
33 env = "MESOFACT_WORKER_ENTRY",
34 default_value = "packages/mesofact-worker/src/worker.ts"
35 )]
36 pub worker_entry: PathBuf,
37
38 #[arg(long, env = "MESOFACT_SOURCES_CONFIG")]
41 pub sources_config: Option<PathBuf>,
42
43 #[arg(long, env = "MESOFACT_SESSION_SECRET_ENV")]
47 pub session_secret_env: Option<String>,
48
49 #[arg(long, env = "MESOFACT_SESSION_COOKIE", default_value = "mesofact_session")]
51 pub session_cookie: String,
52
53 #[arg(long, env = "MESOFACT_LOGIN_URL")]
56 pub login_url: Option<String>,
57
58 #[arg(long, env = "MESOFACT_CACHE_CAPACITY", default_value_t = 4096)]
60 pub cache_capacity: usize,
61}
62
63impl Config {
64 pub fn worker_count(&self) -> usize {
65 self.workers
66 .unwrap_or_else(|| (num_cpus::get() / 2).max(1))
67 }
68}