mirror of
https://github.com/warp-tech/warpgate.git
synced 2025-09-27 17:06:18 +08:00
feat(http): support for insecured websocket connections if TLS Verify
flag is disabled (#1385)
This commit is contained in:
parent
4e973dfdc1
commit
2ef355313c
1 changed files with 10 additions and 3 deletions
|
@ -1,6 +1,7 @@
|
||||||
use std::borrow::Cow;
|
use std::borrow::Cow;
|
||||||
use std::collections::HashSet;
|
use std::collections::HashSet;
|
||||||
use std::str::FromStr;
|
use std::str::FromStr;
|
||||||
|
use std::sync::Arc;
|
||||||
|
|
||||||
use anyhow::{Context, Result};
|
use anyhow::{Context, Result};
|
||||||
use cookie::Cookie;
|
use cookie::Cookie;
|
||||||
|
@ -13,10 +14,10 @@ use once_cell::sync::Lazy;
|
||||||
use poem::session::Session;
|
use poem::session::Session;
|
||||||
use poem::web::websocket::{Message, WebSocket};
|
use poem::web::websocket::{Message, WebSocket};
|
||||||
use poem::{Body, FromRequest, IntoResponse, Request, Response};
|
use poem::{Body, FromRequest, IntoResponse, Request, Response};
|
||||||
use tokio_tungstenite::{connect_async_with_config, tungstenite};
|
use tokio_tungstenite::{connect_async_tls_with_config, tungstenite, Connector};
|
||||||
use tracing::*;
|
use tracing::*;
|
||||||
use url::Url;
|
use url::Url;
|
||||||
use warpgate_common::{try_block, TargetHTTPOptions, TlsMode, WarpgateError};
|
use warpgate_common::{configure_tls_connector, try_block, TargetHTTPOptions, TlsMode, WarpgateError};
|
||||||
use warpgate_web::lookup_built_file;
|
use warpgate_web::lookup_built_file;
|
||||||
|
|
||||||
use crate::common::{SessionAuthorization, SessionExt};
|
use crate::common::{SessionAuthorization, SessionExt};
|
||||||
|
@ -433,12 +434,18 @@ async fn proxy_ws_inner(
|
||||||
client_request = inject_own_headers(req, client_request).await?;
|
client_request = inject_own_headers(req, client_request).await?;
|
||||||
client_request = rewrite_request(client_request, options)?;
|
client_request = rewrite_request(client_request, options)?;
|
||||||
|
|
||||||
let (client, client_response) = connect_async_with_config(
|
let tls_config = configure_tls_connector(!options.tls.verify, false, None)
|
||||||
|
.await
|
||||||
|
.map_err(poem::error::InternalServerError)?;
|
||||||
|
let connector = Connector::Rustls(Arc::new(tls_config));
|
||||||
|
|
||||||
|
let (client, client_response) = connect_async_tls_with_config(
|
||||||
client_request
|
client_request
|
||||||
.body(())
|
.body(())
|
||||||
.map_err(poem::error::InternalServerError)?,
|
.map_err(poem::error::InternalServerError)?,
|
||||||
None,
|
None,
|
||||||
true,
|
true,
|
||||||
|
Some(connector),
|
||||||
)
|
)
|
||||||
.await
|
.await
|
||||||
.map_err(poem::error::BadGateway)?;
|
.map_err(poem::error::BadGateway)?;
|
||||||
|
|
Loading…
Add table
Reference in a new issue