fix(genshin): make sure dirs exist bef. sandboxing

This commit is contained in:
fnrir 2023-05-15 18:44:45 +02:00
parent f2efb2c8bf
commit f6a142fd1c

View file

@ -1,5 +1,6 @@
use serde::{Serialize, Deserialize};
use serde_json::Value as JsonValue;
use std::fs::metadata;
mod mounts;
@ -141,15 +142,53 @@ impl Sandbox {
}
if self.isolate_home {
match metadata("/home") {
Ok(meta) => {
if meta.is_dir() {
command.push_str(" --tmpfs /home");
} else {
tracing::info!("/var/home is not a directory.")
}
},
Err(_) => tracing::info!("/home does not exist.")
}
match metadata("/var/home") {
Ok(meta) => {
if meta.is_dir() {
command.push_str(" --tmpfs /var/home");
} else {
tracing::info!("/var/home is not a directory.")
}
},
Err(_) => tracing::info!("/var/home does not exist.")
}
if let Ok(user) = std::env::var("USER") {
command += &format!(" --tmpfs '/var/home/{}'", user.trim());
let dir = format!("/var/home/{}", user.trim());
match metadata(&dir) {
Ok(meta) => {
if meta.is_dir() {
command += &format!(" --tmpfs '{}'", dir);
} else {
tracing::info!("{} is not a directory.", dir)
}
},
Err(_) => tracing::info!("{} does not exist.", dir)
}
}
if let Ok(home) = std::env::var("HOME") {
command += &format!(" --tmpfs '{}'", home.trim());
let dir = home.trim();
match metadata(dir) {
Ok(meta) => {
if meta.is_dir() {
command += &format!(" --tmpfs '{}'", dir);
} else {
tracing::info!("{} is not a directory.", dir)
}
},
Err(_) => tracing::info!("{} does not exist.", dir)
}
}
}