mirror of
				https://github.com/yuezk/GlobalProtect-openconnect.git
				synced 2025-05-20 07:26:58 -04:00 
			
		
		
		
	| @@ -22,8 +22,8 @@ | ||||
|         "all": true, | ||||
|         "request": true, | ||||
|         "scope": [ | ||||
|           "http://**", | ||||
|           "https://**" | ||||
|           "http://*", | ||||
|           "https://*" | ||||
|         ] | ||||
|       } | ||||
|     }, | ||||
|   | ||||
| @@ -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); | ||||
|  | ||||
|   | ||||
							
								
								
									
										11
									
								
								crates/gpapi/src/error.rs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										11
									
								
								crates/gpapi/src/error.rs
									
									
									
									
									
										Normal file
									
								
							| @@ -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), | ||||
| } | ||||
| @@ -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() { | ||||
|   | ||||
| @@ -1,5 +1,6 @@ | ||||
| pub mod auth; | ||||
| pub mod credential; | ||||
| pub mod error; | ||||
| pub mod gateway; | ||||
| pub mod gp_params; | ||||
| pub mod portal; | ||||
|   | ||||
| @@ -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}, | ||||
| }; | ||||
|  | ||||
|   | ||||
| @@ -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), | ||||
| } | ||||
|   | ||||
| @@ -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}, | ||||
| }; | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user