mirror of https://github.com/telemt/telemt.git
ME Connectivity: socks-url
Co-Authored-By: brekotis <93345790+brekotis@users.noreply.github.com>
This commit is contained in:
parent
8b39a4ef6d
commit
6c12af2b94
|
|
@ -101,16 +101,26 @@ fn route_from_egress(egress: Option<UpstreamEgressInfo>) -> Option<String> {
|
||||||
parts.push(format!("src={ip}"));
|
parts.push(format!("src={ip}"));
|
||||||
Some(format!("direct {}", parts.join(" ")))
|
Some(format!("direct {}", parts.join(" ")))
|
||||||
}
|
}
|
||||||
UpstreamRouteKind::Socks4 => Some(
|
UpstreamRouteKind::Socks4 => {
|
||||||
info.socks_bound_addr
|
let route = info
|
||||||
.map(|addr| format!("socks4 bnd={addr}"))
|
.socks_proxy_addr
|
||||||
.unwrap_or_else(|| "socks4".to_string()),
|
.map(|addr| format!("socks4://{addr}"))
|
||||||
),
|
.unwrap_or_else(|| "socks4://unknown".to_string());
|
||||||
UpstreamRouteKind::Socks5 => Some(
|
Some(match info.socks_bound_addr {
|
||||||
info.socks_bound_addr
|
Some(bound) => format!("{route} bnd={bound}"),
|
||||||
.map(|addr| format!("socks5 bnd={addr}"))
|
None => route,
|
||||||
.unwrap_or_else(|| "socks5".to_string()),
|
})
|
||||||
),
|
}
|
||||||
|
UpstreamRouteKind::Socks5 => {
|
||||||
|
let route = info
|
||||||
|
.socks_proxy_addr
|
||||||
|
.map(|addr| format!("socks5://{addr}"))
|
||||||
|
.unwrap_or_else(|| "socks5://unknown".to_string());
|
||||||
|
Some(match info.socks_bound_addr {
|
||||||
|
Some(bound) => format!("{route} bnd={bound}"),
|
||||||
|
None => route,
|
||||||
|
})
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -164,6 +164,7 @@ pub struct UpstreamEgressInfo {
|
||||||
pub local_addr: Option<SocketAddr>,
|
pub local_addr: Option<SocketAddr>,
|
||||||
pub direct_bind_ip: Option<IpAddr>,
|
pub direct_bind_ip: Option<IpAddr>,
|
||||||
pub socks_bound_addr: Option<SocketAddr>,
|
pub socks_bound_addr: Option<SocketAddr>,
|
||||||
|
pub socks_proxy_addr: Option<SocketAddr>,
|
||||||
}
|
}
|
||||||
|
|
||||||
// ============= Upstream Manager =============
|
// ============= Upstream Manager =============
|
||||||
|
|
@ -523,6 +524,7 @@ impl UpstreamManager {
|
||||||
local_addr,
|
local_addr,
|
||||||
direct_bind_ip: bind_ip,
|
direct_bind_ip: bind_ip,
|
||||||
socks_bound_addr: None,
|
socks_bound_addr: None,
|
||||||
|
socks_proxy_addr: None,
|
||||||
},
|
},
|
||||||
))
|
))
|
||||||
},
|
},
|
||||||
|
|
@ -593,6 +595,7 @@ impl UpstreamManager {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
let local_addr = stream.local_addr().ok();
|
let local_addr = stream.local_addr().ok();
|
||||||
|
let socks_proxy_addr = stream.peer_addr().ok();
|
||||||
Ok((
|
Ok((
|
||||||
stream,
|
stream,
|
||||||
UpstreamEgressInfo {
|
UpstreamEgressInfo {
|
||||||
|
|
@ -600,6 +603,7 @@ impl UpstreamManager {
|
||||||
local_addr,
|
local_addr,
|
||||||
direct_bind_ip: None,
|
direct_bind_ip: None,
|
||||||
socks_bound_addr: Some(bound.addr),
|
socks_bound_addr: Some(bound.addr),
|
||||||
|
socks_proxy_addr,
|
||||||
},
|
},
|
||||||
))
|
))
|
||||||
},
|
},
|
||||||
|
|
@ -672,6 +676,7 @@ impl UpstreamManager {
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
let local_addr = stream.local_addr().ok();
|
let local_addr = stream.local_addr().ok();
|
||||||
|
let socks_proxy_addr = stream.peer_addr().ok();
|
||||||
Ok((
|
Ok((
|
||||||
stream,
|
stream,
|
||||||
UpstreamEgressInfo {
|
UpstreamEgressInfo {
|
||||||
|
|
@ -679,6 +684,7 @@ impl UpstreamManager {
|
||||||
local_addr,
|
local_addr,
|
||||||
direct_bind_ip: None,
|
direct_bind_ip: None,
|
||||||
socks_bound_addr: Some(bound.addr),
|
socks_bound_addr: Some(bound.addr),
|
||||||
|
socks_proxy_addr,
|
||||||
},
|
},
|
||||||
))
|
))
|
||||||
},
|
},
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue