mirror of
https://github.com/rustdesk/rustdesk.git
synced 2026-05-09 15:48:09 +03:00
tcp proxy (#14633)
* tcp proxy * fix per review * fix per review * Suppress secure_tcp info logs for TCP proxy requests Signed-off-by: 21pages <sunboeasy@gmail.com> * copilot review: redact tcp proxy logs, dedupe headers, and avoid body clone Signed-off-by: 21pages <sunboeasy@gmail.com> * format common.rs Signed-off-by: 21pages <sunboeasy@gmail.com> * copilot review: test function name Signed-off-by: 21pages <sunboeasy@gmail.com> * copilot review: format IPv6 tcp proxy log targets correctly Signed-off-by: 21pages <sunboeasy@gmail.com> * copilot review: normalize HTTP method before direct request dispatch Signed-off-by: 21pages <sunboeasy@gmail.com> * review: extract fallback helper, fix Content-Type override, add overall timeout - Extract duplicated TCP proxy fallback logic into generic `with_tcp_proxy_fallback` helper used by both `post_request` and `http_request_sync`, eliminating code drift risk - Allow caller-supplied Content-Type to override the default in `parse_simple_header` instead of silently dropping it - Take body by reference in `post_request_http` to avoid eager clone when no fallback is needed - Wrap entire `tcp_proxy_request` flow (connect + handshake + send + receive) in an overall timeout to prevent indefinite stalls Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com> * review: make is_public case-insensitive and cover mixed-case rustdesk URLs Signed-off-by: 21pages <sunboeasy@gmail.com> * oidc: route auth requests through shared HTTP/tcp-proxy path while keeping TLS warmup Signed-off-by: 21pages <sunboeasy@gmail.com> * refactor: replace unused TryFrom<Response> with HbbHttpResponse::parse method Remove TryFrom<Response> impl that was never called and replace the private parse_hbb_http_response helper in account.rs with a public parse() method on HbbHttpResponse, eliminating code duplication. Signed-off-by: 21pages <sunboeasy@gmail.com> --------- Signed-off-by: 21pages <sunboeasy@gmail.com> Co-authored-by: 21pages <sunboeasy@gmail.com> Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
use reqwest::blocking::Response;
|
||||
use hbb_common::ResultType;
|
||||
use serde::de::DeserializeOwned;
|
||||
use serde_json::{Map, Value};
|
||||
|
||||
@@ -21,11 +21,9 @@ pub enum HbbHttpResponse<T> {
|
||||
Data(T),
|
||||
}
|
||||
|
||||
impl<T: DeserializeOwned> TryFrom<Response> for HbbHttpResponse<T> {
|
||||
type Error = reqwest::Error;
|
||||
|
||||
fn try_from(resp: Response) -> Result<Self, <Self as TryFrom<Response>>::Error> {
|
||||
let map = resp.json::<Map<String, Value>>()?;
|
||||
impl<T: DeserializeOwned> HbbHttpResponse<T> {
|
||||
pub fn parse(body: &str) -> ResultType<Self> {
|
||||
let map = serde_json::from_str::<Map<String, Value>>(body)?;
|
||||
if let Some(error) = map.get("error") {
|
||||
if let Some(err) = error.as_str() {
|
||||
Ok(Self::Error(err.to_owned()))
|
||||
|
||||
Reference in New Issue
Block a user