commit
679d613ec3
8 changed files with 39 additions and 56 deletions
2
.github/workflows/release.yml
vendored
2
.github/workflows/release.yml
vendored
|
|
@ -135,7 +135,7 @@ jobs:
|
||||||
|
|
||||||
- name: release
|
- name: release
|
||||||
if: ${{ steps.regex-match.outputs.match != ''}}
|
if: ${{ steps.regex-match.outputs.match != ''}}
|
||||||
uses: softprops/action-gh-release@v1
|
uses: softprops/action-gh-release@v2
|
||||||
with:
|
with:
|
||||||
files: /tmp/assets/*.tar.gz
|
files: /tmp/assets/*.tar.gz
|
||||||
name: ${{ github.event.client_payload.pull_request.title }}
|
name: ${{ github.event.client_payload.pull_request.title }}
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,10 @@
|
||||||
|
|
||||||
## 0.8.0 (Unreleased)
|
## 0.8.0 (Unreleased)
|
||||||
|
|
||||||
|
## 0.7.1
|
||||||
|
|
||||||
|
- deps and patches
|
||||||
|
|
||||||
## 0.7.0
|
## 0.7.0
|
||||||
|
|
||||||
### Important Changes
|
### Important Changes
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
[workspace.package]
|
[workspace.package]
|
||||||
version = "0.7.0"
|
version = "0.7.1"
|
||||||
authors = ["Jun Kurihara"]
|
authors = ["Jun Kurihara"]
|
||||||
homepage = "https://github.com/junkurihara/rust-rpxy"
|
homepage = "https://github.com/junkurihara/rust-rpxy"
|
||||||
repository = "https://github.com/junkurihara/rust-rpxy"
|
repository = "https://github.com/junkurihara/rust-rpxy"
|
||||||
|
|
|
||||||
|
|
@ -26,24 +26,24 @@ rpxy-lib = { path = "../rpxy-lib/", default-features = false, features = [
|
||||||
"sticky-cookie",
|
"sticky-cookie",
|
||||||
] }
|
] }
|
||||||
|
|
||||||
anyhow = "1.0.79"
|
anyhow = "1.0.81"
|
||||||
rustc-hash = "1.1.0"
|
rustc-hash = "1.1.0"
|
||||||
serde = { version = "1.0.196", default-features = false, features = ["derive"] }
|
serde = { version = "1.0.197", default-features = false, features = ["derive"] }
|
||||||
derive_builder = "0.20.0"
|
derive_builder = "0.20.0"
|
||||||
tokio = { version = "1.36.0", default-features = false, features = [
|
tokio = { version = "1.37.0", default-features = false, features = [
|
||||||
"net",
|
"net",
|
||||||
"rt-multi-thread",
|
"rt-multi-thread",
|
||||||
"time",
|
"time",
|
||||||
"sync",
|
"sync",
|
||||||
"macros",
|
"macros",
|
||||||
] }
|
] }
|
||||||
async-trait = "0.1.77"
|
async-trait = "0.1.79"
|
||||||
rustls-pemfile = "1.0.4"
|
rustls-pemfile = "1.0.4"
|
||||||
mimalloc = { version = "*", default-features = false }
|
mimalloc = { version = "*", default-features = false }
|
||||||
|
|
||||||
# config
|
# config
|
||||||
clap = { version = "4.5.0", features = ["std", "cargo", "wrap_help"] }
|
clap = { version = "4.5.4", features = ["std", "cargo", "wrap_help"] }
|
||||||
toml = { version = "0.8.10", default-features = false, features = ["parse"] }
|
toml = { version = "0.8.12", default-features = false, features = ["parse"] }
|
||||||
hot_reload = "0.1.5"
|
hot_reload = "0.1.5"
|
||||||
|
|
||||||
# logging
|
# logging
|
||||||
|
|
|
||||||
|
|
@ -31,10 +31,10 @@ webpki-roots = ["rustls-backend", "hyper-rustls/webpki-tokio"]
|
||||||
[dependencies]
|
[dependencies]
|
||||||
rand = "0.8.5"
|
rand = "0.8.5"
|
||||||
rustc-hash = "1.1.0"
|
rustc-hash = "1.1.0"
|
||||||
bytes = "1.5.0"
|
bytes = "1.6.0"
|
||||||
derive_builder = "0.20.0"
|
derive_builder = "0.20.0"
|
||||||
futures = { version = "0.3.30", features = ["alloc", "async-await"] }
|
futures = { version = "0.3.30", features = ["alloc", "async-await"] }
|
||||||
tokio = { version = "1.36.0", default-features = false, features = [
|
tokio = { version = "1.37.0", default-features = false, features = [
|
||||||
"net",
|
"net",
|
||||||
"rt-multi-thread",
|
"rt-multi-thread",
|
||||||
"time",
|
"time",
|
||||||
|
|
@ -42,17 +42,17 @@ tokio = { version = "1.36.0", default-features = false, features = [
|
||||||
"macros",
|
"macros",
|
||||||
"fs",
|
"fs",
|
||||||
] }
|
] }
|
||||||
pin-project-lite = "0.2.13"
|
pin-project-lite = "0.2.14"
|
||||||
async-trait = "0.1.77"
|
async-trait = "0.1.79"
|
||||||
|
|
||||||
# Error handling
|
# Error handling
|
||||||
anyhow = "1.0.79"
|
anyhow = "1.0.81"
|
||||||
thiserror = "1.0.57"
|
thiserror = "1.0.58"
|
||||||
|
|
||||||
# http for both server and client
|
# http for both server and client
|
||||||
http = "1.0.0"
|
http = "1.1.0"
|
||||||
http-body-util = "0.1.0"
|
http-body-util = "0.1.1"
|
||||||
hyper = { version = "1.1.0", default-features = false }
|
hyper = { version = "1.2.0", default-features = false }
|
||||||
hyper-util = { version = "0.1.3", features = ["full"] }
|
hyper-util = { version = "0.1.3", features = ["full"] }
|
||||||
futures-util = { version = "0.3.30", default-features = false }
|
futures-util = { version = "0.3.30", default-features = false }
|
||||||
futures-channel = { version = "0.3.30", default-features = false }
|
futures-channel = { version = "0.3.30", default-features = false }
|
||||||
|
|
@ -74,7 +74,7 @@ hot_reload = "0.1.5"
|
||||||
rustls = { version = "0.21.10", default-features = false }
|
rustls = { version = "0.21.10", default-features = false }
|
||||||
tokio-rustls = { version = "0.24.1", features = ["early-data"] }
|
tokio-rustls = { version = "0.24.1", features = ["early-data"] }
|
||||||
webpki = "0.22.4"
|
webpki = "0.22.4"
|
||||||
x509-parser = "0.15.1"
|
x509-parser = "0.16.0"
|
||||||
|
|
||||||
# logging
|
# logging
|
||||||
tracing = { version = "0.1.40" }
|
tracing = { version = "0.1.40" }
|
||||||
|
|
@ -83,28 +83,28 @@ tracing = { version = "0.1.40" }
|
||||||
quinn = { version = "0.10.2", optional = true }
|
quinn = { version = "0.10.2", optional = true }
|
||||||
h3 = { path = "../submodules/h3/h3/", optional = true }
|
h3 = { path = "../submodules/h3/h3/", optional = true }
|
||||||
h3-quinn = { path = "../submodules/h3/h3-quinn/", optional = true }
|
h3-quinn = { path = "../submodules/h3/h3-quinn/", optional = true }
|
||||||
s2n-quic = { version = "1.33.0", default-features = false, features = [
|
s2n-quic = { version = "1.36.0", default-features = false, features = [
|
||||||
"provider-tls-rustls",
|
"provider-tls-rustls",
|
||||||
], optional = true }
|
], optional = true }
|
||||||
s2n-quic-core = { version = "0.33.0", default-features = false, optional = true }
|
s2n-quic-core = { version = "0.36.0", default-features = false, optional = true }
|
||||||
s2n-quic-h3 = { path = "../submodules/s2n-quic-h3/", optional = true }
|
s2n-quic-h3 = { path = "../submodules/s2n-quic-h3/", optional = true }
|
||||||
s2n-quic-rustls = { version = "0.33.0", optional = true }
|
s2n-quic-rustls = { version = "0.36.0", optional = true }
|
||||||
# for UDP socket wit SO_REUSEADDR when h3 with quinn
|
# for UDP socket wit SO_REUSEADDR when h3 with quinn
|
||||||
socket2 = { version = "0.5.5", features = ["all"], optional = true }
|
socket2 = { version = "0.5.6", features = ["all"], optional = true }
|
||||||
|
|
||||||
# cache
|
# cache
|
||||||
http-cache-semantics = { path = "../submodules/rusty-http-cache-semantics/", optional = true }
|
http-cache-semantics = { path = "../submodules/rusty-http-cache-semantics/", optional = true }
|
||||||
lru = { version = "0.12.2", optional = true }
|
lru = { version = "0.12.3", optional = true }
|
||||||
sha2 = { version = "0.10.8", default-features = false, optional = true }
|
sha2 = { version = "0.10.8", default-features = false, optional = true }
|
||||||
|
|
||||||
# cookie handling for sticky cookie
|
# cookie handling for sticky cookie
|
||||||
chrono = { version = "0.4.34", default-features = false, features = [
|
chrono = { version = "0.4.37", default-features = false, features = [
|
||||||
"unstable-locales",
|
"unstable-locales",
|
||||||
"alloc",
|
"alloc",
|
||||||
"clock",
|
"clock",
|
||||||
], optional = true }
|
], optional = true }
|
||||||
base64 = { version = "0.21.7", optional = true }
|
base64 = { version = "0.22.0", optional = true }
|
||||||
|
|
||||||
|
|
||||||
[dev-dependencies]
|
[dev-dependencies]
|
||||||
tokio-test = "0.4.3"
|
tokio-test = "0.4.4"
|
||||||
|
|
|
||||||
|
|
@ -99,11 +99,7 @@ impl ServerCryptoBase {
|
||||||
|
|
||||||
// add server certificate and key
|
// add server certificate and key
|
||||||
if let Err(e) = resolver_local.add(server_name.as_str(), certified_key.to_owned()) {
|
if let Err(e) = resolver_local.add(server_name.as_str(), certified_key.to_owned()) {
|
||||||
error!(
|
error!("{}: Failed to read some certificates and keys {}", server_name.as_str(), e)
|
||||||
"{}: Failed to read some certificates and keys {}",
|
|
||||||
server_name.as_str(),
|
|
||||||
e
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// add client certificate if specified
|
// add client certificate if specified
|
||||||
|
|
@ -114,11 +110,7 @@ impl ServerCryptoBase {
|
||||||
client_ca_roots_local.add_trust_anchors(owned_trust_anchors.into_iter());
|
client_ca_roots_local.add_trust_anchors(owned_trust_anchors.into_iter());
|
||||||
}
|
}
|
||||||
Err(e) => {
|
Err(e) => {
|
||||||
warn!(
|
warn!("Failed to add client CA certificate for {}: {}", server_name.as_str(), e);
|
||||||
"Failed to add client CA certificate for {}: {}",
|
|
||||||
server_name.as_str(),
|
|
||||||
e
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -174,11 +166,7 @@ impl ServerCryptoBase {
|
||||||
if certs_and_keys.client_ca_certs.is_none() {
|
if certs_and_keys.client_ca_certs.is_none() {
|
||||||
// aggregated server config for no client auth server for http3
|
// aggregated server config for no client auth server for http3
|
||||||
if let Err(e) = resolver_global.add(server_name.as_str(), certified_key) {
|
if let Err(e) = resolver_global.add(server_name.as_str(), certified_key) {
|
||||||
error!(
|
error!("{}: Failed to read some certificates and keys {}", server_name.as_str(), e)
|
||||||
"{}: Failed to read some certificates and keys {}",
|
|
||||||
server_name.as_str(),
|
|
||||||
e
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -216,15 +204,11 @@ impl ServerCryptoBase {
|
||||||
if certs_and_keys.client_ca_certs.is_none() {
|
if certs_and_keys.client_ca_certs.is_none() {
|
||||||
// aggregated server config for no client auth server for http3
|
// aggregated server config for no client auth server for http3
|
||||||
if let Err(e) = resolver_global.add(server_name.as_str(), certified_key) {
|
if let Err(e) = resolver_global.add(server_name.as_str(), certified_key) {
|
||||||
error!(
|
error!("{}: Failed to read some certificates and keys {}", server_name.as_str(), e)
|
||||||
"{}: Failed to read some certificates and keys {}",
|
|
||||||
server_name.as_str(),
|
|
||||||
e
|
|
||||||
)
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
let alpn = vec![
|
let alpn = [
|
||||||
b"h3".to_vec(),
|
b"h3".to_vec(),
|
||||||
b"hq-29".to_vec(), // TODO: remove later?
|
b"hq-29".to_vec(), // TODO: remove later?
|
||||||
b"h2".to_vec(),
|
b"h2".to_vec(),
|
||||||
|
|
@ -257,12 +241,7 @@ fn parse_server_certs_and_keys_s2n(
|
||||||
None
|
None
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
.ok_or_else(|| {
|
.ok_or_else(|| std::io::Error::new(std::io::ErrorKind::InvalidInput, "Unable to find a valid certificate and key"))?;
|
||||||
std::io::Error::new(
|
|
||||||
std::io::ErrorKind::InvalidInput,
|
|
||||||
"Unable to find a valid certificate and key",
|
|
||||||
)
|
|
||||||
})?;
|
|
||||||
let certs: Vec<_> = certs_and_keys
|
let certs: Vec<_> = certs_and_keys
|
||||||
.certs
|
.certs
|
||||||
.iter()
|
.iter()
|
||||||
|
|
|
||||||
|
|
@ -1 +1 @@
|
||||||
Subproject commit c11410c76e738a62e62e7766b82f814547621f6f
|
Subproject commit e7c7ab9d634ef73784d6cbc424a270dbaa4f1c99
|
||||||
|
|
@ -13,5 +13,5 @@ publish = false
|
||||||
bytes = { version = "1", default-features = false }
|
bytes = { version = "1", default-features = false }
|
||||||
futures = { version = "0.3", default-features = false }
|
futures = { version = "0.3", default-features = false }
|
||||||
h3 = { path = "../h3/h3/" }
|
h3 = { path = "../h3/h3/" }
|
||||||
s2n-quic = "1.33.0"
|
s2n-quic = "1.36.0"
|
||||||
s2n-quic-core = "0.33.0"
|
s2n-quic-core = "0.36.0"
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue