mirror of
				https://github.com/dani-garcia/vaultwarden.git
				synced 2025-10-26 07:50:02 +02:00 
			
		
		
		
	Next attempt for issue #709 fix
Now creates icon cache directory at startup. And it also creates the directory if it went missing during runtime. Also modified the icon_save/mark_negcache to be one.
This commit is contained in:
		| @@ -104,9 +104,6 @@ fn get_icon(domain: &str) -> Vec<u8> { | ||||
|         return FALLBACK_ICON.to_vec(); | ||||
|     } | ||||
|  | ||||
|     // Create icon_cache_folder before fetching | ||||
|     create_dir_all(&CONFIG.icon_cache_folder()).expect("Error creating icon cache"); | ||||
|  | ||||
|     // Get the icon, or fallback in case of error | ||||
|     match download_icon(&domain) { | ||||
|         Ok(icon) => { | ||||
| @@ -115,7 +112,9 @@ fn get_icon(domain: &str) -> Vec<u8> { | ||||
|         } | ||||
|         Err(e) => { | ||||
|             error!("Error downloading icon: {:?}", e); | ||||
|             mark_negcache(&path); | ||||
|             let miss_indicator = path.to_owned() + ".miss"; | ||||
|             let empty_icon = Vec::new(); | ||||
|             save_icon(&miss_indicator, &empty_icon); | ||||
|             FALLBACK_ICON.to_vec() | ||||
|         } | ||||
|     } | ||||
| @@ -171,11 +170,6 @@ fn icon_is_negcached(path: &str) -> bool { | ||||
|     } | ||||
| } | ||||
|  | ||||
| fn mark_negcache(path: &str) { | ||||
|     let miss_indicator = path.to_owned() + ".miss"; | ||||
|     File::create(&miss_indicator).expect("Error creating negative cache marker"); | ||||
| } | ||||
|  | ||||
| fn icon_is_expired(path: &str) -> bool { | ||||
|     let expired = file_is_expired(path, CONFIG.icon_cache_ttl()); | ||||
|     expired.unwrap_or(true) | ||||
| @@ -398,9 +392,17 @@ fn download_icon(domain: &str) -> Result<Vec<u8>, Error> { | ||||
| } | ||||
|  | ||||
| fn save_icon(path: &str, icon: &[u8]) { | ||||
|     if let Ok(mut f) = File::create(path) { | ||||
|         f.write_all(icon).expect("Error writing icon file"); | ||||
|     }; | ||||
|     match File::create(path) { | ||||
|         Ok(mut f) => { | ||||
|             f.write_all(icon).expect("Error writing icon file"); | ||||
|         } | ||||
|         Err(ref e) if e.kind() == std::io::ErrorKind::NotFound => { | ||||
|             create_dir_all(&CONFIG.icon_cache_folder()).expect("Error creating icon cache"); | ||||
|         } | ||||
|         Err(e) => { | ||||
|             info!("Icon save error: {:?}", e); | ||||
|         } | ||||
|     } | ||||
| } | ||||
|  | ||||
| fn _header_map() -> HeaderMap { | ||||
|   | ||||
							
								
								
									
										11
									
								
								src/main.rs
									
									
									
									
									
								
							
							
						
						
									
										11
									
								
								src/main.rs
									
									
									
									
									
								
							| @@ -25,6 +25,7 @@ extern crate num_derive; | ||||
| use std::{ | ||||
|     path::Path, | ||||
|     process::{exit, Command}, | ||||
|     fs::create_dir_all, | ||||
| }; | ||||
|  | ||||
| #[macro_use] | ||||
| @@ -52,6 +53,8 @@ fn main() { | ||||
|     check_web_vault(); | ||||
|     migrations::run_migrations(); | ||||
|  | ||||
|     create_icon_cache_folder(); | ||||
|  | ||||
|     launch_rocket(); | ||||
| } | ||||
|  | ||||
| @@ -129,8 +132,7 @@ fn check_db() { | ||||
|         let path = Path::new(&url); | ||||
|  | ||||
|         if let Some(parent) = path.parent() { | ||||
|             use std::fs; | ||||
|             if fs::create_dir_all(parent).is_err() { | ||||
|             if create_dir_all(parent).is_err() { | ||||
|                 error!("Error creating database directory"); | ||||
|                 exit(1); | ||||
|             } | ||||
| @@ -148,6 +150,11 @@ fn check_db() { | ||||
|     db::get_connection().expect("Can't connect to DB"); | ||||
| } | ||||
|  | ||||
| fn create_icon_cache_folder() { | ||||
|     // Try to create the icon cache folder, and generate an error if it could not. | ||||
|     create_dir_all(&CONFIG.icon_cache_folder()).expect("Error creating icon cache directory"); | ||||
| } | ||||
|  | ||||
| fn check_rsa_keys() { | ||||
|     // If the RSA keys don't exist, try to create them | ||||
|     if !util::file_exists(&CONFIG.private_rsa_key()) || !util::file_exists(&CONFIG.public_rsa_key()) { | ||||
|   | ||||
		Reference in New Issue
	
	Block a user