diff --git a/.vscode/settings.json b/.vscode/settings.json index 7b0ead5..402f7e5 100644 --- a/.vscode/settings.json +++ b/.vscode/settings.json @@ -3,8 +3,10 @@ "authcookie", "bindgen", "clickaway", + "clientgpversion", "clientos", "gpcommon", + "gpservice", "Immer", "jnlp", "oneshot", diff --git a/Cargo.lock b/Cargo.lock index 927e444..c013539 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1106,16 +1106,6 @@ dependencies = [ "system-deps 6.0.3", ] -[[package]] -name = "gpauth" -version = "0.1.0" -dependencies = [ - "regex", - "tokio", - "webkit2gtk", - "wry", -] - [[package]] name = "gpclient" version = "0.1.0" @@ -1828,6 +1818,16 @@ version = "1.17.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6f61fba1741ea2b3d6a1e3178721804bb716a68a6aeba1149b5d52e3d464ea66" +[[package]] +name = "open" +version = "3.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2078c0039e6a54a0c42c28faa984e115fb4c2d5bf2208f77d1961002df8576f8" +dependencies = [ + "pathdiff", + "windows-sys 0.42.0", +] + [[package]] name = "openssl" version = "0.10.45" @@ -1927,6 +1927,12 @@ dependencies = [ "windows-sys 0.45.0", ] +[[package]] +name = "pathdiff" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8835116a5c179084a830efb3adc117ab007512b535bc1a21c991d3b32a6b44dd" + [[package]] name = "percent-encoding" version = "2.2.0" @@ -2878,9 +2884,11 @@ dependencies = [ "ignore", "objc", "once_cell", + "open", "percent-encoding", "rand 0.8.5", "raw-window-handle", + "regex", "semver 1.0.16", "serde", "serde_json", @@ -2934,6 +2942,7 @@ dependencies = [ "png", "proc-macro2", "quote", + "regex", "semver 1.0.16", "serde", "serde_json", diff --git a/Cargo.toml b/Cargo.toml index b98cf98..d988db9 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -4,7 +4,6 @@ members = [ "gpcommon", "gpclient", "gpservice", - "gpauth", "gpgui/src-tauri" ] diff --git a/gpauth/Cargo.toml b/gpauth/Cargo.toml deleted file mode 100644 index 500fcf7..0000000 --- a/gpauth/Cargo.toml +++ /dev/null @@ -1,12 +0,0 @@ -[package] -name = "gpauth" -version = "0.1.0" -edition = "2021" - -# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html - -[dependencies] -wry = "0.24.3" -webkit2gtk = "0.18.2" -tokio = { version = "1.14", features = ["full"] } -regex="1" \ No newline at end of file diff --git a/gpauth/src/auth_service.rs b/gpauth/src/auth_service.rs deleted file mode 100644 index cac4c11..0000000 --- a/gpauth/src/auth_service.rs +++ /dev/null @@ -1,54 +0,0 @@ -use crate::{ - duplex::duplex, - saml::{SamlAuth, SamlBinding, SamlOptions}, - DuplexStreamHandle, -}; -use std::sync::Arc; -use tokio::sync::Mutex; - -#[derive(Debug)] -pub struct AuthService { - server: DuplexStreamHandle, - client: Arc>, - saml_auth: Arc, -} - -impl Default for AuthService { - fn default() -> Self { - let (client, server) = duplex(4096); - Self { - client: Arc::new(Mutex::new(client)), - server, - saml_auth: Default::default(), - } - } -} - -impl AuthService { - pub async fn run(&mut self) { - loop { - println!("Server waiting for data"); - match self.server.read().await { - Ok(data) => { - println!("Server received: {}", data); - let target = String::from("https://login.microsoftonline.com/901c038b-4638-4259-b115-c1753c7735aa/saml2?SAMLRequest=lVLBbsIwDP2VKveSNGlaiGilDg5DYlpFux12mdIQIFKbdEmKtr8fhaGxC9Lkk%2BXnZ79nzx3v2p4Vgz%2FojfwYpPPBZ9dqx86FDAxWM8OdckzzTjrmBauKpzXDE8R6a7wRpgVB4Zy0Xhm9MNoNnbSVtEcl5MtmnYGD971jEB57PemUsMZ5y73cf02E6VgcEzgyYgSrEhaLCgTL0xZK85Hvt7s1e3XtNztvdKu0HBngDEUCkWkTxgmZhjGms7CJIhqKKKVEpCmhnMNRDgbBapmBdzpL5BZFEu0oalKMpglttukpaBLHuEEnmHODXGnnufYZwAiTENEQ0xoljBJGyBsIyh%2F1D0pvld7ft6q5gBx7rOsyLJ%2BrGgSv0rqzxBMA5PNxQ3YebG9OcJ%2BWX30H%2BT9cnsObWfkl%2B%2FsD%2BTc%3D&RelayState=HEgCAOLrNmRmZTBkM2FlNDE2MDQyMDhjZTVmMTZlMTdiZTdiMTliNg%3D%3D"); - let ua = String::from("PAN GlobalProtect"); - - let saml_options = SamlOptions::new(SamlBinding::Redirect, target, ua); - let saml_auth = self.saml_auth.clone(); - tokio::spawn(async move { - saml_auth.process(saml_options).await; - }); - // self.server.write(&data).await.expect("write failed"); - } - Err(err) => { - println!("Server error: {:?}", err); - } - } - } - } - - pub fn client(&self) -> Arc> { - self.client.clone() - } -} diff --git a/gpauth/src/duplex.rs b/gpauth/src/duplex.rs deleted file mode 100644 index d7525a4..0000000 --- a/gpauth/src/duplex.rs +++ /dev/null @@ -1,35 +0,0 @@ -use tokio::io::{AsyncReadExt, AsyncWriteExt, DuplexStream}; - -#[derive(Debug)] -pub struct DuplexStreamHandle { - stream: DuplexStream, - buf_size: usize, -} - -impl DuplexStreamHandle { - fn new(stream: DuplexStream, buf_size: usize) -> Self { - Self { stream, buf_size } - } - - pub async fn write(&mut self, data: &str) -> Result<(), Box> { - self.stream.write_all(data.as_bytes()).await?; - Ok(()) - } - - pub async fn read(&mut self) -> Result> { - let mut buffer = vec![0; self.buf_size]; - match self.stream.read(&mut buffer).await { - Ok(0) => Err("EOF".into()), - Ok(n) => Ok(String::from_utf8_lossy(&buffer[..n]).to_string()), - Err(err) => Err(err.to_string().into()), - } - } -} - -pub(crate) fn duplex(max_buf_size: usize) -> (DuplexStreamHandle, DuplexStreamHandle) { - let (a, b) = tokio::io::duplex(max_buf_size); - ( - DuplexStreamHandle::new(a, max_buf_size), - DuplexStreamHandle::new(b, max_buf_size), - ) -} \ No newline at end of file diff --git a/gpauth/src/lib.rs b/gpauth/src/lib.rs deleted file mode 100644 index 63aec16..0000000 --- a/gpauth/src/lib.rs +++ /dev/null @@ -1,8 +0,0 @@ -mod auth_service; -mod saml; -mod duplex; - -pub use auth_service::AuthService; -pub use duplex::DuplexStreamHandle; -pub use saml::saml_login; -pub use saml::SamlBinding; \ No newline at end of file diff --git a/gpauth/src/main.rs b/gpauth/src/main.rs deleted file mode 100644 index 001a847..0000000 --- a/gpauth/src/main.rs +++ /dev/null @@ -1,55 +0,0 @@ -use gpauth::{AuthService, saml_login, SamlBinding}; - -#[tokio::main] -async fn main() { - let url = String::from("https://globalprotect.kochind.com/global-protect/prelogin.esp?tmp=tmp&kerberos-support=yes&ipv6-support=yes&clientVer=4100&clientos=Linux"); - let _html = String::from( - r#" - -
- - -
-