mirror of
				https://github.com/yuezk/GlobalProtect-openconnect.git
				synced 2025-05-20 07:26:58 -04:00 
			
		
		
		
	Compare commits
	
		
			1 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|  | 54d4f2ec57 | 
| @@ -1,4 +1,4 @@ | |||||||
| use std::{collections::HashMap, fs, path::PathBuf}; | use std::{collections::HashMap, env::temp_dir, fs, path::PathBuf}; | ||||||
|  |  | ||||||
| use clap::Args; | use clap::Args; | ||||||
| use directories::ProjectDirs; | use directories::ProjectDirs; | ||||||
| @@ -82,6 +82,11 @@ impl<'a> LaunchGuiHandler<'a> { | |||||||
|  |  | ||||||
| async fn feed_auth_data(auth_data: &str) -> anyhow::Result<()> { | async fn feed_auth_data(auth_data: &str) -> anyhow::Result<()> { | ||||||
|   let _ = tokio::join!(feed_auth_data_gui(auth_data), feed_auth_data_cli(auth_data)); |   let _ = tokio::join!(feed_auth_data_gui(auth_data), feed_auth_data_cli(auth_data)); | ||||||
|  |  | ||||||
|  |   // Cleanup the temporary file | ||||||
|  |   let html_file = temp_dir().join("gpauth.html"); | ||||||
|  |   let _ = std::fs::remove_file(html_file); | ||||||
|  |  | ||||||
|   Ok(()) |   Ok(()) | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -70,6 +70,7 @@ impl SamlAuthData { | |||||||
|  |  | ||||||
|       let auth_data: SamlAuthData = serde_urlencoded::from_str(auth_data).map_err(|e| { |       let auth_data: SamlAuthData = serde_urlencoded::from_str(auth_data).map_err(|e| { | ||||||
|         warn!("Failed to parse token auth data: {}", e); |         warn!("Failed to parse token auth data: {}", e); | ||||||
|  |         warn!("Auth data: {}", auth_data); | ||||||
|         AuthDataParseError::Invalid |         AuthDataParseError::Invalid | ||||||
|       })?; |       })?; | ||||||
|  |  | ||||||
|   | |||||||
| @@ -1,4 +1,7 @@ | |||||||
| use std::{env::temp_dir, io::Write}; | use std::{env::temp_dir, fs, io::Write, os::unix::fs::PermissionsExt}; | ||||||
|  |  | ||||||
|  | use anyhow::bail; | ||||||
|  | use log::warn; | ||||||
|  |  | ||||||
| pub struct BrowserAuthenticator<'a> { | pub struct BrowserAuthenticator<'a> { | ||||||
|   auth_request: &'a str, |   auth_request: &'a str, | ||||||
| @@ -14,8 +17,18 @@ impl BrowserAuthenticator<'_> { | |||||||
|       open::that_detached(self.auth_request)?; |       open::that_detached(self.auth_request)?; | ||||||
|     } else { |     } else { | ||||||
|       let html_file = temp_dir().join("gpauth.html"); |       let html_file = temp_dir().join("gpauth.html"); | ||||||
|       let mut file = std::fs::File::create(&html_file)?; |  | ||||||
|  |  | ||||||
|  |       // Remove the file and error if permission denied | ||||||
|  |       if let Err(err) = fs::remove_file(&html_file) { | ||||||
|  |         if err.kind() != std::io::ErrorKind::NotFound { | ||||||
|  |           warn!("Failed to remove the temporary file: {}", err); | ||||||
|  |           bail!("Please remove the file manually: {:?}", html_file); | ||||||
|  |         } | ||||||
|  |       } | ||||||
|  |  | ||||||
|  |       let mut file = fs::File::create(&html_file)?; | ||||||
|  |  | ||||||
|  |       file.set_permissions(fs::Permissions::from_mode(0o600))?; | ||||||
|       file.write_all(self.auth_request.as_bytes())?; |       file.write_all(self.auth_request.as_bytes())?; | ||||||
|  |  | ||||||
|       open::that_detached(html_file)?; |       open::that_detached(html_file)?; | ||||||
| @@ -24,11 +37,3 @@ impl BrowserAuthenticator<'_> { | |||||||
|     Ok(()) |     Ok(()) | ||||||
|   } |   } | ||||||
| } | } | ||||||
|  |  | ||||||
| impl Drop for BrowserAuthenticator<'_> { |  | ||||||
|   fn drop(&mut self) { |  | ||||||
|     // Cleanup the temporary file |  | ||||||
|     let html_file = temp_dir().join("gpauth.html"); |  | ||||||
|     let _ = std::fs::remove_file(html_file); |  | ||||||
|   } |  | ||||||
| } |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user