Skip to content

Commit e540451

Browse files
committed
expose server name via cli
1 parent 4177940 commit e540451

File tree

5 files changed

+20
-5
lines changed

5 files changed

+20
-5
lines changed

src/client/main.rs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -85,13 +85,19 @@ async fn new_tunneler(
8585
)
8686
.await?,
8787
)),
88-
TunnelerType::Tls { ca_cert, cert, key } => Ok(Box::new(
88+
TunnelerType::Tls {
89+
ca_cert,
90+
cert,
91+
key,
92+
server_hostname,
93+
} => Ok(Box::new(
8994
TlsTunneler::new(
9095
address,
9196
port,
9297
ca_cert.to_path_buf(),
9398
cert.to_path_buf(),
9499
key.to_path_buf(),
100+
server_hostname.clone(),
95101
)
96102
.await?,
97103
)),

src/client/tls.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@ impl TlsTunneler {
2626
ca_cert: PathBuf,
2727
client_cert: PathBuf,
2828
client_key: PathBuf,
29+
server_hostname: String,
2930
) -> Result<Self, Box<dyn Error>> {
3031
let mut config = ClientConfig::new();
3132
config.root_store.add(&load_certificate(ca_cert).await?)?;
@@ -37,7 +38,7 @@ impl TlsTunneler {
3738
log::debug!("connecting to {}", to_address);
3839
let tcp_stream = TcpStream::connect(to_address).await?;
3940

40-
let domain = DNSNameRef::try_from_ascii_str("server.tunneler")?;
41+
let domain = DNSNameRef::try_from_ascii_str(&server_hostname)?;
4142
let stream = connector.connect(domain, tcp_stream).await?;
4243
let (reader, writer) = split(stream);
4344
Ok(Self {

src/common/cli.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ pub enum TunnelerType {
2424
cert: PathBuf,
2525
#[structopt(env)]
2626
key: PathBuf,
27+
#[structopt(env)]
28+
server_hostname: String,
2729
},
2830
}
2931

src/server/main.rs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -72,8 +72,13 @@ async fn new_untunneler(
7272
)
7373
.await?,
7474
)),
75-
TunnelerType::Tls { ca_cert, cert, key } => Ok(Box::new(
76-
TlsUntunneler::new(address, port, ca_cert, cert, key).await?,
75+
TunnelerType::Tls {
76+
ca_cert,
77+
cert,
78+
key,
79+
server_hostname,
80+
} => Ok(Box::new(
81+
TlsUntunneler::new(address, port, ca_cert, cert, key, server_hostname).await?,
7782
)),
7883
}
7984
}

src/server/tls.rs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ impl TlsUntunneler {
3030
ca_cert: PathBuf,
3131
server_cert: PathBuf,
3232
server_key: PathBuf,
33+
server_hostname: String,
3334
) -> Result<Self, Box<dyn Error>> {
3435
let mut store = RootCertStore::empty();
3536
store.add(&load_certificate(ca_cert).await?)?;
@@ -40,7 +41,7 @@ impl TlsUntunneler {
4041
let mut resolver = ResolvesServerCertUsingSNI::new();
4142
let signing_key = load_signing_key(server_key).await?;
4243
resolver.add(
43-
"server.tunneler",
44+
&server_hostname,
4445
CertifiedKey::new(chain, Arc::new(signing_key)),
4546
)?;
4647
config.cert_resolver = Arc::new(resolver);

0 commit comments

Comments
 (0)