handle app state file and detee dir
This commit is contained in:
		
							parent
							
								
									2f84ee60d4
								
							
						
					
					
						commit
						414eacad2b
					
				
							
								
								
									
										10
									
								
								Cargo.lock
									
									
									
										generated
									
									
									
								
							
							
								
								
								
								
								
									
									
								
							
						
						
									
										10
									
								
								Cargo.lock
									
									
									
										generated
									
									
									
								
							| @ -273,6 +273,7 @@ dependencies = [ | |||||||
|  "detee-shared", |  "detee-shared", | ||||||
|  "env_logger", |  "env_logger", | ||||||
|  "flate2", |  "flate2", | ||||||
|  |  "home", | ||||||
|  "log", |  "log", | ||||||
|  "prost", |  "prost", | ||||||
|  "prost-types", |  "prost-types", | ||||||
| @ -534,6 +535,15 @@ version = "0.5.0" | |||||||
| source = "registry+https://github.com/rust-lang/crates.io-index" | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
| checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" | checksum = "2304e00983f87ffb38b55b444b5e3b60a884b5d30c0fca7d82fe33449bbe55ea" | ||||||
| 
 | 
 | ||||||
|  | [[package]] | ||||||
|  | name = "home" | ||||||
|  | version = "0.5.11" | ||||||
|  | source = "registry+https://github.com/rust-lang/crates.io-index" | ||||||
|  | checksum = "589533453244b0995c858700322199b2becb13b627df2851f64a2775d024abcf" | ||||||
|  | dependencies = [ | ||||||
|  |  "windows-sys 0.59.0", | ||||||
|  | ] | ||||||
|  | 
 | ||||||
| [[package]] | [[package]] | ||||||
| name = "http" | name = "http" | ||||||
| version = "1.2.0" | version = "1.2.0" | ||||||
|  | |||||||
| @ -22,6 +22,7 @@ log = "0.4.25" | |||||||
| serde = "1.0.217" | serde = "1.0.217" | ||||||
| serde_json = "1.0.138" | serde_json = "1.0.138" | ||||||
| serde_yml = "0.0.12" | serde_yml = "0.0.12" | ||||||
|  | home = "0.5.11" | ||||||
| 
 | 
 | ||||||
| [build-dependencies] | [build-dependencies] | ||||||
| tonic-build = "0.12.3" | tonic-build = "0.12.3" | ||||||
|  | |||||||
| @ -9,7 +9,7 @@ use serde::{Deserialize, Serialize}; | |||||||
| 
 | 
 | ||||||
| use crate::container::delete_enclave; | use crate::container::delete_enclave; | ||||||
| use crate::container::deploy_enclave; | use crate::container::deploy_enclave; | ||||||
| use crate::global::APP_CONFIG_DIR; | use crate::global::app_config_dir; | ||||||
| use crate::global::APP_NAME_PREFIX; | use crate::global::APP_NAME_PREFIX; | ||||||
| use crate::utils::handle_package; | use crate::utils::handle_package; | ||||||
| use crate::utils::prepare_port_map; | use crate::utils::prepare_port_map; | ||||||
| @ -100,7 +100,10 @@ impl App { | |||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     fn write_config(&self) -> Result<()> { |     fn write_config(&self) -> Result<()> { | ||||||
|         let mut file = File::create(APP_CONFIG_DIR.to_string() + &self.uuid + ".yaml")?; |         let app_config_dir = app_config_dir(); | ||||||
|  |         std::fs::create_dir_all(&app_config_dir)?; | ||||||
|  | 
 | ||||||
|  |         let mut file = File::create(app_config_dir + &self.uuid + ".yaml")?; | ||||||
|         file.write_all(serde_yml::to_string(self)?.as_bytes())?; |         file.write_all(serde_yml::to_string(self)?.as_bytes())?; | ||||||
|         Ok(()) |         Ok(()) | ||||||
|     } |     } | ||||||
|  | |||||||
| @ -6,5 +6,11 @@ pub const PACKAGE_ARCHIVE_DIR_PATH: &str = "./enclave_archives"; | |||||||
| pub const PACKAGE_DIR_PATH: &str = "./enclaves"; | pub const PACKAGE_DIR_PATH: &str = "./enclaves"; | ||||||
| 
 | 
 | ||||||
| pub const APP_NAME_PREFIX: &str = "dtpm"; | pub const APP_NAME_PREFIX: &str = "dtpm"; | ||||||
| // TODO: handle this home directory properly
 | 
 | ||||||
| pub const APP_CONFIG_DIR: &str = "~/.dtpm/app_daemon/"; | const DETEE_DIR_ENV_NAME: &str = "DETEE_DIR"; | ||||||
|  | 
 | ||||||
|  | // TODO: try lazy static later
 | ||||||
|  | pub fn app_config_dir() -> String { | ||||||
|  |     let home = home::home_dir().unwrap().to_string_lossy().into_owned(); | ||||||
|  |     std::env::var(DETEE_DIR_ENV_NAME).unwrap_or(format!("{home}/.detee/app_daemon/")) | ||||||
|  | } | ||||||
|  | |||||||
| @ -14,7 +14,7 @@ use detee_shared::pb::brain::DaemonMessageApp; | |||||||
| use detee_shared::pb::brain::MappedPort; | use detee_shared::pb::brain::MappedPort; | ||||||
| use detee_shared::pb::brain::NewAppRes; | use detee_shared::pb::brain::NewAppRes; | ||||||
| use detee_shared::types::brain::AppDeployConfig; | use detee_shared::types::brain::AppDeployConfig; | ||||||
| use global::APP_CONFIG_DIR; | use global::app_config_dir; | ||||||
| use log::info; | use log::info; | ||||||
| use std::time::Duration; | use std::time::Duration; | ||||||
| use tokio::sync::mpsc::Receiver; | use tokio::sync::mpsc::Receiver; | ||||||
| @ -106,10 +106,13 @@ impl AppHandler { | |||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|     async fn handle_del_app_req(&mut self, uuid: String) -> Result<()> { |     async fn handle_del_app_req(&mut self, uuid: String) -> Result<()> { | ||||||
|         let content = std::fs::read_to_string(APP_CONFIG_DIR.to_string() + &uuid + ".yaml")?; |         let app_config_dir = app_config_dir(); | ||||||
|  |         let app_handle_file_name = format!("{app_config_dir}{}.yaml", &uuid); | ||||||
|  |         let content = std::fs::read_to_string(&app_handle_file_name)?; | ||||||
|         let app_instance: App = serde_yml::from_str(&content)?; |         let app_instance: App = serde_yml::from_str(&content)?; | ||||||
| 
 | 
 | ||||||
|         app_instance.delete_app(&mut self.host_resource).await?; |         app_instance.delete_app(&mut self.host_resource).await?; | ||||||
|  |         std::fs::remove_file(&app_handle_file_name)?; | ||||||
| 
 | 
 | ||||||
|         if let Err(er) = cleanup_enclave_disk_and_package(uuid).await { |         if let Err(er) = cleanup_enclave_disk_and_package(uuid).await { | ||||||
|             log::error!("Failed to cleanup disk:\n{er}"); |             log::error!("Failed to cleanup disk:\n{er}"); | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user