diff --git a/Cargo.lock b/Cargo.lock index 1f86233..4d17950 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -142,7 +142,7 @@ dependencies = [ "pingora-proxy", "privdrop", "prometheus 0.14.0", - "rand 0.10.0", + "rand 0.10.1", "reqwest", "rustls-pemfile", "serde", @@ -258,9 +258,9 @@ dependencies = [ [[package]] name = "axum" -version = "0.8.8" +version = "0.8.9" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b52af3cb4058c895d37317bb27508dccc8e5f2d39454016b297bf4a400597b8" +checksum = "31b698c5f9a010f6573133b09e0de5408834d0c82f8d7475a89fc1867a71cd90" dependencies = [ "axum-core", "bytes", @@ -470,7 +470,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6565523d8145e63e0cf1b397a5f1bd4e90d5652a7dffb2de8cec460ff23ef6b1" dependencies = [ "backtrace", - "rand 0.10.0", + "rand 0.10.1", "tokio", "trackable", ] @@ -485,7 +485,7 @@ dependencies = [ "hostname", "local-ip-address", "percent-encoding", - "rand 0.10.0", + "rand 0.10.1", "thrift_codec", "tokio", "trackable", @@ -1887,12 +1887,11 @@ checksum = "b6d2cec3eae94f9f509c767b45932f1ada8350c4bdb85af2fcab4a3c14807981" [[package]] name = "libmimalloc-sys" -version = "0.1.44" +version = "0.1.47" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "667f4fec20f29dfc6bc7357c582d91796c169ad7e2fce709468aefeb2c099870" +checksum = "2d1eacfa31c33ec25e873c136ba5669f00f9866d0688bea7be4d3f7e43067df6" dependencies = [ "cc", - "libc", ] [[package]] @@ -1985,9 +1984,9 @@ dependencies = [ [[package]] name = "mimalloc" -version = "0.1.48" +version = "0.1.50" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e1ee66a4b64c74f4ef288bcbb9192ad9c3feaad75193129ac8509af543894fd8" +checksum = "b3627c4272df786b9260cabaa46aec1d59c93ede723d4c3ef646c503816b0640" dependencies = [ "libmimalloc-sys", ] @@ -2130,9 +2129,9 @@ dependencies = [ [[package]] name = "notify" -version = "9.0.0-rc.2" +version = "9.0.0-rc.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8b6510a5042c64929d0278a8d24f5f90aa3a9b5be52e08e4f8bf7403adb01dc" +checksum = "783683ce6e1059e3747190a6c05688db21e07a846bf90babb351365f9133fe3e" dependencies = [ "bitflags 2.11.0", "inotify", @@ -2997,9 +2996,9 @@ dependencies = [ [[package]] name = "rand" -version = "0.10.0" +version = "0.10.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc266eb313df6c5c09c1c7b1fbe2510961e5bcd3add930c1e31f7ed9da0feff8" +checksum = "d2e8e8bcc7961af1fdac401278c6a831614941f6164ee3bf4ce61b7edb162207" dependencies = [ "chacha20", "getrandom 0.4.2", @@ -3833,9 +3832,9 @@ checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" [[package]] name = "tokio" -version = "1.51.1" +version = "1.52.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f66bf9585cda4b724d3e78ab34b73fb2bbaba9011b9bfdf69dc836382ea13b8c" +checksum = "b67dee974fe86fd92cc45b7a95fdd2f99a36a6d7b0d431a231178d3d670bbcc6" dependencies = [ "bytes", "libc", diff --git a/Cargo.toml b/Cargo.toml index d1cf853..71c6a5d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -11,7 +11,7 @@ panic = "abort" strip = true [dependencies] -tokio = { version = "1.51.1", features = ["full"] } +tokio = { version = "1.52.1", features = ["full"] } pingora = { version = "0.8.0", features = ["lb", "openssl"] } # openssl, rustls, boringssl serde = { version = "1.0.228", features = ["derive"] } dashmap = "7.0.0-rc2" @@ -23,11 +23,11 @@ async-trait = "0.1.89" env_logger = "0.11.10" log = "0.4.29" futures = "0.3.32" -notify = "9.0.0-rc.2" -axum = { version = "0.8.8" } +notify = "9.0.0-rc.3" +axum = { version = "0.8.9" } reqwest = { version = "0.13.2", features = ["json", "stream", "blocking"] } serde_yml = "0.0.12" -rand = "0.10.0" +rand = "0.10.1" base64 = "0.22.1" jsonwebtoken = { version = "10.3.0", default-features = false, features = ["use_pem", "rust_crypto"] } tonic = "0.14.5" @@ -35,7 +35,7 @@ sha2 = { version = "0.11.0-rc.5", default-features = false } base16ct = { version = "1.0.0", features = ["alloc"] } urlencoding = "2.1.3" arc-swap = "1.9.1" -mimalloc = { version = "0.1.48", default-features = false } +mimalloc = { version = "0.1.50", default-features = false } prometheus = "0.14.0" x509-parser = "0.18.1" rustls-pemfile = "2.2.0" diff --git a/src/main.rs b/src/main.rs index 42c16d7..043a15e 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,3 +1,4 @@ +mod tls; mod utils; mod web; diff --git a/src/tls.rs b/src/tls.rs new file mode 100644 index 0000000..f5f538c --- /dev/null +++ b/src/tls.rs @@ -0,0 +1 @@ +pub mod load; diff --git a/src/utils/tls.rs b/src/tls/load.rs similarity index 100% rename from src/utils/tls.rs rename to src/tls/load.rs diff --git a/src/utils.rs b/src/utils.rs index a3566fe..64ea747 100644 --- a/src/utils.rs +++ b/src/utils.rs @@ -11,6 +11,5 @@ pub mod metrics; pub mod parceyaml; pub mod state; pub mod structs; -pub mod tls; pub mod tools; // pub mod watchksecret; diff --git a/src/utils/tools.rs b/src/utils/tools.rs index 3e566e0..4a491db 100644 --- a/src/utils/tools.rs +++ b/src/utils/tools.rs @@ -1,6 +1,6 @@ +use crate::tls::load; +use crate::tls::load::CertificateConfig; use crate::utils::structs::{InnerMap, InnerMapForJson, UpstreamSnapshotForJson, UpstreamsDashMap, UpstreamsIdMap}; -use crate::utils::tls; -use crate::utils::tls::CertificateConfig; use dashmap::DashMap; use log::{error, info}; use notify::{event::ModifyKind, Config, EventKind, RecommendedWatcher, RecursiveMode, Watcher}; @@ -207,9 +207,9 @@ pub fn clone_idmap_into(original: &UpstreamsDashMap, cloned: &UpstreamsIdMap) { info!("Upstreams are fully populated. Ready to server requests"); } -pub fn listdir(dir: String) -> Vec { +pub fn listdir(dir: String) -> Vec { let mut f = HashMap::new(); - let mut certificate_configs: Vec = vec![]; + let mut certificate_configs: Vec = vec![]; let paths = fs::read_dir(dir).unwrap(); for path in paths { let path_str = path.unwrap().path().to_str().unwrap().to_owned(); diff --git a/src/web/start.rs b/src/web/start.rs index 833882a..53b23b2 100644 --- a/src/web/start.rs +++ b/src/web/start.rs @@ -1,7 +1,7 @@ // use rustls::crypto::ring::default_provider; +use crate::tls::load; +use crate::tls::load::CertificateConfig; use crate::utils::structs::Extraparams; -use crate::utils::tls; -use crate::utils::tls::CertificateConfig; use crate::utils::tools::*; use crate::web::proxyhttp::LB; use arc_swap::ArcSwap; @@ -68,27 +68,27 @@ pub fn run() { watch_folder(certs_path, tx).unwrap(); }); let certificate_configs = rx.recv().unwrap(); - let first_set = tls::Certificates::new(&certificate_configs, grade.as_str()).unwrap_or_else(|| panic!("Unable to load initial certificate info")); + let first_set = load::Certificates::new(&certificate_configs, grade.as_str()).unwrap_or_else(|| panic!("Unable to load initial certificate info")); let certificates = Arc::new(ArcSwap::from_pointee(first_set)); let certs_for_callback = certificates.clone(); let certs_for_watcher = certificates.clone(); - let new_certs = tls::Certificates::new(&certificate_configs, grade.as_str()); + let new_certs = load::Certificates::new(&certificate_configs, grade.as_str()); certs_for_watcher.store(Arc::new(new_certs.unwrap())); let mut tls_settings = TlsSettings::intermediate(&certs_for_callback.load().default_cert_path, &certs_for_callback.load().default_key_path).expect("unable to load or parse cert/key"); - tls::set_tsl_grade(&mut tls_settings, grade.as_str()); + load::set_tsl_grade(&mut tls_settings, grade.as_str()); tls_settings.set_servername_callback(move |ssl_ref: &mut SslRef, ssl_alert: &mut SslAlert| certs_for_callback.load().server_name_callback(ssl_ref, ssl_alert)); - tls_settings.set_alpn_select_callback(tls::prefer_h2); + tls_settings.set_alpn_select_callback(load::prefer_h2); proxy.add_tls_with_settings(&bind_address_tls, None, tls_settings); let certs_for_watcher = certificates.clone(); thread::spawn(move || { while let Ok(new_configs) = rx.recv() { - let new_certs = tls::Certificates::new(&new_configs, grade.as_str()); + let new_certs = load::Certificates::new(&new_configs, grade.as_str()); match new_certs { Some(new_certs) => { certs_for_watcher.store(Arc::new(new_certs));