Skip to content

Commit cbc86e9

Browse files
zh-jq-bzh-jq
authored andcommitted
g3tiles: add s2n-tls proxy server
1 parent 23841a1 commit cbc86e9

File tree

22 files changed

+1738
-35
lines changed

22 files changed

+1738
-35
lines changed

.github/workflows/linux.yml

+35-33
Original file line numberDiff line numberDiff line change
@@ -29,45 +29,45 @@ jobs:
2929
strategy:
3030
matrix:
3131
rust:
32-
- stable
33-
- beta
34-
- nightly
32+
- stable
33+
- beta
34+
- nightly
3535
steps:
36-
- name: Checkout sources
37-
uses: actions/checkout@v4
38-
with:
39-
submodules: true
40-
- name: Install ${{ matrix.rust }} toolchain
41-
uses: dtolnay/rust-toolchain@master
42-
with:
43-
toolchain: ${{ matrix.rust }}
44-
- name: Install dependencies
45-
run: |
46-
sudo apt-get update
47-
sudo apt-get install capnproto libc-ares-dev libssl-dev liblua5.4-dev
48-
- name: Cargo build
49-
run: cargo build
50-
- name: Cargo test
51-
run: cargo test --workspace --lib --examples
36+
- name: Checkout sources
37+
uses: actions/checkout@v4
38+
with:
39+
submodules: true
40+
- name: Install ${{ matrix.rust }} toolchain
41+
uses: dtolnay/rust-toolchain@master
42+
with:
43+
toolchain: ${{ matrix.rust }}
44+
- name: Install dependencies
45+
run: |
46+
sudo apt-get update
47+
sudo apt-get install capnproto libc-ares-dev libssl-dev liblua5.4-dev
48+
- name: Cargo build
49+
run: cargo build
50+
- name: Cargo test
51+
run: cargo test --workspace --lib --examples
5252

5353
clippy:
5454
name: Clippy
5555
runs-on: ubuntu-latest
5656
steps:
57-
- name: Checkout sources
58-
uses: actions/checkout@v4
59-
with:
60-
submodules: true
61-
- name: Install stable toolchain
62-
uses: dtolnay/rust-toolchain@stable
63-
with:
64-
components: clippy
65-
- name: Install dependencies
66-
run: |
67-
sudo apt-get update
68-
sudo apt-get install capnproto libc-ares-dev libssl-dev liblua5.4-dev
69-
- name: Cargo clippy
70-
run: cargo clippy --tests -- --deny warnings
57+
- name: Checkout sources
58+
uses: actions/checkout@v4
59+
with:
60+
submodules: true
61+
- name: Install stable toolchain
62+
uses: dtolnay/rust-toolchain@stable
63+
with:
64+
components: clippy
65+
- name: Install dependencies
66+
run: |
67+
sudo apt-get update
68+
sudo apt-get install capnproto libc-ares-dev libssl-dev liblua5.4-dev
69+
- name: Cargo clippy
70+
run: cargo clippy --tests -- --deny warnings
7171

7272
build-vendored:
7373
name: Build vendored
@@ -89,6 +89,8 @@ jobs:
8989
include:
9090
- feature: vendored-c-ares
9191
component: g3proxy
92+
- feature: s2n-tls
93+
component: g3tiles
9294
steps:
9395
- name: Checkout sources
9496
uses: actions/checkout@v4

Cargo.lock

+48-2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

+3
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,9 @@ openssl = { package = "variant-ssl", version = "0.14.8" }
156156
openssl-sys = { package = "variant-ssl-sys", version = "0.13.8" }
157157
openssl-probe = "0.1"
158158
#
159+
s2n-tls = "0.3"
160+
s2n-tls-tokio = "0.3"
161+
#
159162
flume = { version = "0.11", default-features = false }
160163
#
161164
c-ares = { version = "11.0", default-features = false }

g3tiles/Cargo.toml

+4
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@ openssl.workspace = true
3232
openssl-probe = { workspace = true, optional = true }
3333
rustls.workspace = true
3434
rustls-pki-types.workspace = true
35+
s2n-tls = { workspace = true, optional = true }
36+
s2n-tls-tokio = { workspace = true, optional = true }
3537
quinn = { workspace = true, optional = true, features = ["rustls"] }
3638
tokio-rustls.workspace = true
3739
governor = { workspace = true, features = ["std", "jitter"] }
@@ -57,8 +59,10 @@ g3-build-env.workspace = true
5759
[features]
5860
default = ["quic"]
5961
quic = ["g3-daemon/quic", "g3-types/quinn", "dep:quinn"]
62+
s2n-tls = ["dep:s2n-tls", "dep:s2n-tls-tokio", "vendored-aws-lc"]
6063
rustls-aws-lc = ["rustls/aws-lc-rs"]
6164
vendored-openssl = ["openssl/vendored", "openssl-probe"]
6265
vendored-tongsuo = ["openssl/tongsuo", "openssl-probe", "g3-yaml/tongsuo", "g3-types/tongsuo"]
6366
vendored-aws-lc = ["rustls-aws-lc", "openssl/aws-lc", "openssl-probe", "g3-types/aws-lc", "g3-openssl/aws-lc"]
6467
vendored-boringssl = ["openssl/boringssl", "openssl-probe", "g3-types/boringssl", "g3-openssl/boringssl"]
68+
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
---
2+
3+
name: s2n-tls
4+
type: S2nTlsProxy
5+
listen:
6+
address: "[::]:9097"
7+
listen_in_worker: true
8+
9+
virtual_hosts:
10+
name: bench
11+
exact_match: bench.example.net
12+
use_session_ticket: true
13+
cert_pairs:
14+
certificate: bench.example.net-ec256.crt
15+
private_key: bench.example.net-ec256.key
16+
backends:
17+
- http

g3tiles/src/config/server/mod.rs

+14
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,8 @@ pub(crate) mod plain_tcp_port;
3636
pub(crate) mod keyless_proxy;
3737
pub(crate) mod openssl_proxy;
3838
pub(crate) mod rustls_proxy;
39+
#[cfg(feature = "s2n-tls")]
40+
pub(crate) mod s2n_tls_proxy;
3941

4042
mod registry;
4143

@@ -86,6 +88,8 @@ pub(crate) enum AnyServerConfig {
8688
PlainQuicPort(plain_quic_port::PlainQuicPortConfig),
8789
OpensslProxy(openssl_proxy::OpensslProxyServerConfig),
8890
RustlsProxy(rustls_proxy::RustlsProxyServerConfig),
91+
#[cfg(feature = "s2n-tls")]
92+
S2nTlsProxy(s2n_tls_proxy::S2nTlsProxyServerConfig),
8993
KeylessProxy(keyless_proxy::KeylessProxyServerConfig),
9094
}
9195

@@ -99,6 +103,8 @@ macro_rules! impl_transparent0 {
99103
AnyServerConfig::PlainQuicPort(s) => s.$f(),
100104
AnyServerConfig::OpensslProxy(s) => s.$f(),
101105
AnyServerConfig::RustlsProxy(s) => s.$f(),
106+
#[cfg(feature = "s2n-tls")]
107+
AnyServerConfig::S2nTlsProxy(s) => s.$f(),
102108
AnyServerConfig::KeylessProxy(s) => s.$f(),
103109
}
104110
}
@@ -115,6 +121,8 @@ macro_rules! impl_transparent1 {
115121
AnyServerConfig::PlainQuicPort(s) => s.$f(p),
116122
AnyServerConfig::OpensslProxy(s) => s.$f(p),
117123
AnyServerConfig::RustlsProxy(s) => s.$f(p),
124+
#[cfg(feature = "s2n-tls")]
125+
AnyServerConfig::S2nTlsProxy(s) => s.$f(p),
118126
AnyServerConfig::KeylessProxy(s) => s.$f(p),
119127
}
120128
}
@@ -184,6 +192,12 @@ fn load_server(
184192
.context("failed to load this RustlsProxy server")?;
185193
Ok(AnyServerConfig::RustlsProxy(server))
186194
}
195+
#[cfg(feature = "s2n-tls")]
196+
"s2n_tls_proxy" | "s2ntlsproxy" => {
197+
let server = s2n_tls_proxy::S2nTlsProxyServerConfig::parse(map, position)
198+
.context("failed to load this S2nTlsProxy server")?;
199+
Ok(AnyServerConfig::S2nTlsProxy(server))
200+
}
187201
"keyless_proxy" | "keylessproxy" => {
188202
let server = keyless_proxy::KeylessProxyServerConfig::parse(map, position)
189203
.context("failed to load this KeylessProxy server")?;

0 commit comments

Comments
 (0)