diff --git a/apps/gpauth/tauri.conf.json b/apps/gpauth/tauri.conf.json index 7569835..5eab86d 100644 --- a/apps/gpauth/tauri.conf.json +++ b/apps/gpauth/tauri.conf.json @@ -22,8 +22,8 @@ "all": true, "request": true, "scope": [ - "http://**", - "https://**" + "http://*", + "https://*" ] } }, diff --git a/apps/gpclient/src/connect.rs b/apps/gpclient/src/connect.rs index b72e620..cab99df 100644 --- a/apps/gpclient/src/connect.rs +++ b/apps/gpclient/src/connect.rs @@ -5,9 +5,10 @@ use common::vpn_utils::find_csd_wrapper; use gpapi::{ clap::args::Os, credential::{Credential, PasswordCredential}, + error::PortalError, gateway::gateway_login, gp_params::{ClientOs, GpParams}, - portal::{prelogin, retrieve_config, PortalError, Prelogin}, + portal::{prelogin, retrieve_config, Prelogin}, process::{ auth_launcher::SamlAuthLauncher, users::{get_non_root_user, get_user_by_name}, @@ -152,6 +153,8 @@ impl<'a> ConnectHandler<'a> { } async fn connect_gateway_with_prelogin(&self, gateway: &str) -> anyhow::Result<()> { + info!("Treat the portal as the gateway, connecting..."); + let mut gp_params = self.build_gp_params(); gp_params.set_is_gateway(true); diff --git a/crates/gpapi/src/error.rs b/crates/gpapi/src/error.rs new file mode 100644 index 0000000..972374e --- /dev/null +++ b/crates/gpapi/src/error.rs @@ -0,0 +1,11 @@ +use thiserror::Error; + +#[derive(Error, Debug)] +pub enum PortalError { + #[error("Portal prelogin error: {0}")] + PreloginError(String), + #[error("Portal config error: {0}")] + ConfigError(String), + #[error("Gateway error: {0}")] + GatewayError(String), +} diff --git a/crates/gpapi/src/gateway/login.rs b/crates/gpapi/src/gateway/login.rs index 844613b..a315fde 100644 --- a/crates/gpapi/src/gateway/login.rs +++ b/crates/gpapi/src/gateway/login.rs @@ -6,6 +6,7 @@ use urlencoding::encode; use crate::{ credential::Credential, + error::PortalError, gp_params::GpParams, utils::{normalize_server, parse_gp_error, remove_url_scheme}, }; @@ -28,7 +29,13 @@ pub async fn gateway_login(gateway: &str, cred: &Credential, gp_params: &GpParam info!("Gateway login, user_agent: {}", gp_params.user_agent()); - let res = client.post(&login_url).form(¶ms).send().await?; + let res = client + .post(&login_url) + .form(¶ms) + .send() + .await + .map_err(|e| anyhow::anyhow!(PortalError::GatewayError(e.to_string())))?; + let status = res.status(); if status.is_client_error() || status.is_server_error() { diff --git a/crates/gpapi/src/lib.rs b/crates/gpapi/src/lib.rs index 83aaf0b..dc82fc7 100644 --- a/crates/gpapi/src/lib.rs +++ b/crates/gpapi/src/lib.rs @@ -1,5 +1,6 @@ pub mod auth; pub mod credential; +pub mod error; pub mod gateway; pub mod gp_params; pub mod portal; diff --git a/crates/gpapi/src/portal/config.rs b/crates/gpapi/src/portal/config.rs index c5c7f3d..b68b597 100644 --- a/crates/gpapi/src/portal/config.rs +++ b/crates/gpapi/src/portal/config.rs @@ -7,9 +7,9 @@ use specta::Type; use crate::{ credential::{AuthCookieCredential, Credential}, + error::PortalError, gateway::{parse_gateways, Gateway}, gp_params::GpParams, - portal::PortalError, utils::{normalize_server, parse_gp_error, remove_url_scheme, xml}, }; diff --git a/crates/gpapi/src/portal/mod.rs b/crates/gpapi/src/portal/mod.rs index a4194d3..8c111db 100644 --- a/crates/gpapi/src/portal/mod.rs +++ b/crates/gpapi/src/portal/mod.rs @@ -3,13 +3,3 @@ mod prelogin; pub use config::*; pub use prelogin::*; - -use thiserror::Error; - -#[derive(Error, Debug)] -pub enum PortalError { - #[error("Portal prelogin error: {0}")] - PreloginError(String), - #[error("Portal config error: {0}")] - ConfigError(String), -} diff --git a/crates/gpapi/src/portal/prelogin.rs b/crates/gpapi/src/portal/prelogin.rs index 12c801e..c8444ba 100644 --- a/crates/gpapi/src/portal/prelogin.rs +++ b/crates/gpapi/src/portal/prelogin.rs @@ -6,8 +6,8 @@ use serde::Serialize; use specta::Type; use crate::{ + error::PortalError, gp_params::GpParams, - portal::PortalError, utils::{base64, normalize_server, parse_gp_error, xml}, };