Skip to content
This repository was archived by the owner on Jan 25, 2025. It is now read-only.

Commit c23634b

Browse files
committed
Added support for domain names as upstream
1 parent ddeeaaf commit c23634b

File tree

5 files changed

+11
-11
lines changed

5 files changed

+11
-11
lines changed

zia-server/src/cfg.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ use serde::Deserialize;
77
#[derive(Deserialize)]
88
pub(crate) struct ClientCfg {
99
pub(crate) listen_addr: SocketAddr,
10-
pub(crate) upstream: SocketAddr,
10+
pub(crate) upstream: String,
1111
pub(crate) mode: Mode,
1212
}
1313

zia-server/src/listener/mod.rs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,3 @@
1-
use std::net::SocketAddr;
2-
31
pub(crate) use self::tcp::*;
42
pub(crate) use self::ws::*;
53

@@ -8,5 +6,5 @@ mod ws;
86

97
#[async_trait::async_trait]
108
pub(crate) trait Listener {
11-
async fn listen(&self, upstream: SocketAddr) -> anyhow::Result<()>;
9+
async fn listen(&self, upstream: &str) -> anyhow::Result<()>;
1210
}

zia-server/src/listener/tcp.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,11 +15,12 @@ pub(crate) struct TcpListener {
1515

1616
#[async_trait::async_trait]
1717
impl Listener for TcpListener {
18-
async fn listen(&self, upstream: SocketAddr) -> anyhow::Result<()> {
18+
async fn listen(&self, upstream: &str) -> anyhow::Result<()> {
1919
let listener = tokio::net::TcpListener::bind(self.addr).await?;
2020

2121
loop {
2222
let (sock, _) = listener.accept().await?;
23+
let upstream = upstream.to_string();
2324

2425
tokio::spawn(async move {
2526
if let Err(err) = Self::handle(sock, upstream).await {
@@ -31,7 +32,7 @@ impl Listener for TcpListener {
3132
}
3233

3334
impl TcpListener {
34-
async fn handle(downstream: TcpStream, upstream_addr: SocketAddr) -> anyhow::Result<()> {
35+
async fn handle(downstream: TcpStream, upstream_addr: String) -> anyhow::Result<()> {
3536
downstream.set_nodelay(true)?;
3637
let downstream_addr = downstream.peer_addr()?;
3738
info!("New downstream connection: {}", downstream_addr);

zia-server/src/listener/ws.rs

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ use std::time::Duration;
33

44
use tokio::net::{TcpListener, TcpStream, UdpSocket};
55
use tracing::{error, info};
6-
use zia_common::process_udp_over_ws;
6+
use zia_common::{process_udp_over_ws, Stream};
77
use zia_common::Stream::Plain;
88

99
use crate::listener::Listener;
@@ -14,12 +14,13 @@ pub(crate) struct WsListener {
1414

1515
#[async_trait::async_trait]
1616
impl Listener for WsListener {
17-
async fn listen(&self, upstream: SocketAddr) -> anyhow::Result<()> {
17+
async fn listen(&self, upstream: &str) -> anyhow::Result<()> {
1818
let listener = TcpListener::bind(self.addr).await?;
1919
info!("Listening on ws://{}...", listener.local_addr()?);
2020

2121
loop {
2222
let (sock, _) = listener.accept().await?;
23+
let upstream = upstream.to_string();
2324

2425
tokio::spawn(async move {
2526
if let Err(err) = Self::handle(sock, upstream).await {
@@ -31,7 +32,7 @@ impl Listener for WsListener {
3132
}
3233

3334
impl WsListener {
34-
async fn handle(downstream: TcpStream, upstream_addr: SocketAddr) -> anyhow::Result<()> {
35+
async fn handle(downstream: TcpStream, upstream_addr: String) -> anyhow::Result<()> {
3536
downstream.set_nodelay(true)?;
3637
let downstream_addr = downstream.peer_addr()?;
3738
info!("New downstream connection: {}", downstream_addr);

zia-server/src/main.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#[cfg(not(target_env = "msvc"))]
22
use tikv_jemallocator::Jemalloc;
3-
use tokio::signal::ctrl_c;
43
use tokio::select;
4+
use tokio::signal::ctrl_c;
55
use tracing::info;
66

77
use crate::cfg::{ClientCfg, Mode};
@@ -32,7 +32,7 @@ async fn main() -> anyhow::Result<()> {
3232
info!("Listening in {}://{}...", config.mode, config.listen_addr);
3333

3434
select! {
35-
result = listener.listen(config.upstream) => {
35+
result = listener.listen(&config.upstream) => {
3636
result?;
3737
info!("Socket closed, quitting...");
3838
},

0 commit comments

Comments
 (0)