mirror of
https://github.com/yuezk/GlobalProtect-openconnect.git
synced 2025-04-02 18:31:50 -04:00
parent
08bd4efefa
commit
2d1aa3ba8c
@ -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},
|
||||
};
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user