mirror of
https://github.com/warp-tech/warpgate.git
synced 2024-09-20 06:46:17 +08:00
fixed infinite redirect (#257)
This commit is contained in:
parent
d292cca03e
commit
52edf524ae
22
Cargo.lock
generated
22
Cargo.lock
generated
|
@ -4573,7 +4573,7 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "warpgate"
|
||||
version = "0.4.0"
|
||||
version = "0.5.0"
|
||||
dependencies = [
|
||||
"ansi_term",
|
||||
"anyhow",
|
||||
|
@ -4607,7 +4607,7 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "warpgate-admin"
|
||||
version = "0.4.0"
|
||||
version = "0.5.0"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"async-trait",
|
||||
|
@ -4635,7 +4635,7 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "warpgate-common"
|
||||
version = "0.4.0"
|
||||
version = "0.5.0"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"argon2",
|
||||
|
@ -4675,7 +4675,7 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "warpgate-database-protocols"
|
||||
version = "0.4.0"
|
||||
version = "0.5.0"
|
||||
dependencies = [
|
||||
"bitflags",
|
||||
"bytes 1.2.1",
|
||||
|
@ -4688,7 +4688,7 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "warpgate-db-entities"
|
||||
version = "0.4.0"
|
||||
version = "0.5.0"
|
||||
dependencies = [
|
||||
"chrono",
|
||||
"poem-openapi",
|
||||
|
@ -4700,7 +4700,7 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "warpgate-db-migrations"
|
||||
version = "0.4.0"
|
||||
version = "0.5.0"
|
||||
dependencies = [
|
||||
"async-std",
|
||||
"chrono",
|
||||
|
@ -4711,7 +4711,7 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "warpgate-protocol-http"
|
||||
version = "0.4.0"
|
||||
version = "0.5.0"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"async-trait",
|
||||
|
@ -4742,7 +4742,7 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "warpgate-protocol-mysql"
|
||||
version = "0.4.0"
|
||||
version = "0.5.0"
|
||||
dependencies = [
|
||||
"anyhow",
|
||||
"async-trait",
|
||||
|
@ -4768,7 +4768,7 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "warpgate-protocol-ssh"
|
||||
version = "0.4.0"
|
||||
version = "0.5.0"
|
||||
dependencies = [
|
||||
"ansi_term",
|
||||
"anyhow",
|
||||
|
@ -4792,7 +4792,7 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "warpgate-sso"
|
||||
version = "0.4.0"
|
||||
version = "0.5.0"
|
||||
dependencies = [
|
||||
"async-trait",
|
||||
"bytes 1.2.1",
|
||||
|
@ -4808,7 +4808,7 @@ dependencies = [
|
|||
|
||||
[[package]]
|
||||
name = "warpgate-web"
|
||||
version = "0.4.0"
|
||||
version = "0.5.0"
|
||||
dependencies = [
|
||||
"rust-embed",
|
||||
"serde",
|
||||
|
|
|
@ -2,14 +2,14 @@ use std::sync::Arc;
|
|||
|
||||
use poem::session::Session;
|
||||
use poem::web::websocket::WebSocket;
|
||||
use poem::web::{Data, FromRequest};
|
||||
use poem::web::{Data, FromRequest, Redirect};
|
||||
use poem::{handler, Body, IntoResponse, Request, Response};
|
||||
use serde::Deserialize;
|
||||
use tokio::sync::Mutex;
|
||||
use tracing::*;
|
||||
use warpgate_common::{Services, Target, TargetHTTPOptions, TargetOptions, WarpgateServerHandle};
|
||||
|
||||
use crate::common::{gateway_redirect, SessionAuthorization, SessionExt};
|
||||
use crate::common::{SessionAuthorization, SessionExt};
|
||||
use crate::proxy::{proxy_normal_request, proxy_websocket_request};
|
||||
|
||||
#[derive(Deserialize)]
|
||||
|
@ -18,6 +18,10 @@ struct QueryParams {
|
|||
warpgate_target: Option<String>,
|
||||
}
|
||||
|
||||
pub fn target_select_redirect() -> Response {
|
||||
Redirect::temporary("/@warpgate").into_response()
|
||||
}
|
||||
|
||||
#[handler]
|
||||
pub async fn catchall_endpoint(
|
||||
req: &Request,
|
||||
|
@ -28,7 +32,7 @@ pub async fn catchall_endpoint(
|
|||
server_handle: Option<Data<&Arc<Mutex<WarpgateServerHandle>>>>,
|
||||
) -> poem::Result<Response> {
|
||||
let Some((target, options)) = get_target_for_request(req, services.0).await? else {
|
||||
return Ok(gateway_redirect(req).into_response());
|
||||
return Ok(target_select_redirect());
|
||||
};
|
||||
|
||||
session.set_target_name(target.name.clone());
|
||||
|
|
Loading…
Reference in a new issue