From 8202d4af5f1d6fdb1f188af42b54c2813807f2ff Mon Sep 17 00:00:00 2001 From: notplants Date: Thu, 12 May 2022 12:47:33 +0200 Subject: [PATCH 1/4] Update peach-config to use configured paths --- Cargo.lock | 2 +- peach-config/src/set_permissions.rs | 26 +++++++++++++++----------- peach-lib/src/config_manager.rs | 2 +- peach-lib/src/sbot.rs | 11 ++++------- 4 files changed, 21 insertions(+), 20 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 6585640..02a0593 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -1111,7 +1111,7 @@ dependencies = [ [[package]] name = "golgi" version = "0.1.1" -source = "git+https://git.coopcloud.tech/golgi-ssb/golgi.git#77dd75bcd4649b7487069a61e2a8069b49f60a1d" +source = "git+https://git.coopcloud.tech/golgi-ssb/golgi#77dd75bcd4649b7487069a61e2a8069b49f60a1d" dependencies = [ "async-std", "async-stream 0.3.3", diff --git a/peach-config/src/set_permissions.rs b/peach-config/src/set_permissions.rs index 45a6959..72ea4a0 100644 --- a/peach-config/src/set_permissions.rs +++ b/peach-config/src/set_permissions.rs @@ -1,23 +1,27 @@ +use lazy_static::lazy_static; + +use peach_lib::config_manager::get_config_value; + use crate::error::PeachConfigError; use crate::utils::cmd; -/// All configs are stored in this folder, and should be read/writeable by peach group -/// so they can be read and written by all PeachCloud services. -pub const CONFIGS_DIR: &str = "/var/lib/peachcloud"; -pub const PEACH_WEB_DIR: &str = "/usr/share/peach-web"; -pub const PEACH_HOME_DIR: &str = "/home/peach"; +lazy_static! { + pub static ref CONFIGS_DIR: String = get_config_value("PEACH_CONFIG_DIR").expect("Failed to load config value for PEACH_CONFIG_DIR"); + pub static ref PEACH_WEB_DIR: String = "/usr/share/peach-web".to_string(); + pub static ref PEACH_HOME_DIR: String = "/home/peach".to_string(); +} /// Utility function to set correct file permissions on the PeachCloud device. /// Accidentally changing file permissions is a fairly common thing to happen, /// so this is a useful CLI function for quickly correcting anything that may be out of order. pub fn set_permissions() -> Result<(), PeachConfigError> { println!("[ UPDATING FILE PERMISSIONS ON PEACHCLOUD DEVICE ]"); - cmd(&["chmod", "-R", "u+rwX,g+rwX", CONFIGS_DIR])?; - cmd(&["chown", "-R", "peach", CONFIGS_DIR])?; - cmd(&["chgrp", "-R", "peach", CONFIGS_DIR])?; - cmd(&["chmod", "-R", "u+rwX,g+rwX", PEACH_WEB_DIR])?; - cmd(&["chown", "-R", "peach:peach", PEACH_WEB_DIR])?; - cmd(&["chown", "-R", "peach:peach", PEACH_HOME_DIR])?; + cmd(&["chmod", "-R", "u+rwX,g+rwX", &CONFIGS_DIR])?; + cmd(&["chown", "-R", "peach:peach", &CONFIGS_DIR])?; + cmd(&["chmod", "-R", "u+rwX,g+rwX", &PEACH_WEB_DIR])?; + cmd(&["chown", "-R", "peach:peach", &PEACH_WEB_DIR])?; + cmd(&["chmod", "-R", "u+rwX,g+rwX", &PEACH_HOME_DIR])?; + cmd(&["chown", "-R", "peach:peach", &PEACH_HOME_DIR])?; println!("[ PERMISSIONS SUCCESSFULLY UPDATED ]"); Ok(()) } diff --git a/peach-lib/src/config_manager.rs b/peach-lib/src/config_manager.rs index a3213f6..3852dfc 100644 --- a/peach-lib/src/config_manager.rs +++ b/peach-lib/src/config_manager.rs @@ -59,7 +59,7 @@ pub fn get_peach_config_defaults() -> HashMap { ("SSB_ADMIN_IDS", ""), ("ADMIN_PASSWORD_HASH", "47"), ("TEMPORARY_PASSWORD_HASH", ""), - ("GO_SBOT_DATADIR", ""), + ("GO_SBOT_DATADIR", "/home/peach/.ssb-go"), ("PEACH_CONFIGDIR", "/var/lib/peachcloud"), ]); // convert HashMap<&str, &str> to HashMap and return diff --git a/peach-lib/src/sbot.rs b/peach-lib/src/sbot.rs index ee9434f..c76857d 100644 --- a/peach-lib/src/sbot.rs +++ b/peach-lib/src/sbot.rs @@ -3,6 +3,7 @@ use std::{fs, fs::File, io, io::Write, path::PathBuf, process::Command, str}; use serde::{Deserialize, Serialize}; +use crate::config_manager::get_config_value; use crate::error::PeachError; @@ -126,11 +127,8 @@ impl SbotStatus { } } - // determine path of user's home directory - let mut blobstore_path = dirs::home_dir().ok_or(PeachError::HomeDir)?; - - // append the blobstore path - blobstore_path.push(".ssb-go/blobs/sha256"); + // get path to blobstore + let blobstore_path = format!("{}/blobs/sha256", get_config_value("GO_SBOT_DATADIR")?); // determine the size of the blobstore directory in bytes status.blobstore = dir_size(blobstore_path).ok(); @@ -220,8 +218,7 @@ impl SbotConfig { let config_string = toml::to_string(&config)?; // determine path of user's home directory - let mut config_path = dirs::home_dir().ok_or(PeachError::HomeDir)?; - config_path.push(".ssb-go/config.toml"); + let config_path = format!("{}/config.toml", get_config_value("GO_SBOT_DATADIR")?); // open config file for writing let mut file = File::create(config_path)?; From 908d265de61ebf926da4fc6e7a4655a581755635 Mon Sep 17 00:00:00 2001 From: notplants Date: Thu, 12 May 2022 12:53:06 +0200 Subject: [PATCH 2/4] Bump version numbers --- Cargo.lock | 4 ++-- peach-config/Cargo.toml | 2 +- peach-config/src/set_permissions.rs | 18 +++++++++--------- peach-lib/Cargo.toml | 2 +- peach-lib/src/config_manager.rs | 2 ++ 5 files changed, 15 insertions(+), 13 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 02a0593..9224fae 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2386,7 +2386,7 @@ dependencies = [ [[package]] name = "peach-config" -version = "0.1.24" +version = "0.1.25" dependencies = [ "clap", "env_logger 0.6.2", @@ -2425,7 +2425,7 @@ dependencies = [ [[package]] name = "peach-lib" -version = "1.3.2" +version = "1.3.3" dependencies = [ "async-std", "chrono", diff --git a/peach-config/Cargo.toml b/peach-config/Cargo.toml index d51afdb..e2f226f 100644 --- a/peach-config/Cargo.toml +++ b/peach-config/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "peach-config" -version = "0.1.24" +version = "0.1.25" authors = ["Andrew Reid ", "Max Fowler "] edition = "2018" description = "Command line tool for installing, updating and configuring PeachCloud" diff --git a/peach-config/src/set_permissions.rs b/peach-config/src/set_permissions.rs index 72ea4a0..26d07f8 100644 --- a/peach-config/src/set_permissions.rs +++ b/peach-config/src/set_permissions.rs @@ -6,9 +6,9 @@ use crate::error::PeachConfigError; use crate::utils::cmd; lazy_static! { - pub static ref CONFIGS_DIR: String = get_config_value("PEACH_CONFIG_DIR").expect("Failed to load config value for PEACH_CONFIG_DIR"); - pub static ref PEACH_WEB_DIR: String = "/usr/share/peach-web".to_string(); - pub static ref PEACH_HOME_DIR: String = "/home/peach".to_string(); + pub static ref PEACH_CONFIGDIR: String = get_config_value("PEACH_CONFIGDIR").expect("Failed to load config value for PEACH_CONFIGDIR"); + pub static ref PEACH_WEBDIR: String = get_config_value("PEACH_WEBDIR").expect("Failed to load config value for PEACH_WEBDIR"); + pub static ref PEACH_HOMEDIR: String = get_config_value("PEACH_HOMEDIR").expect("Failed to load config value for PEACH_HOMEDIR"); } /// Utility function to set correct file permissions on the PeachCloud device. @@ -16,12 +16,12 @@ lazy_static! { /// so this is a useful CLI function for quickly correcting anything that may be out of order. pub fn set_permissions() -> Result<(), PeachConfigError> { println!("[ UPDATING FILE PERMISSIONS ON PEACHCLOUD DEVICE ]"); - cmd(&["chmod", "-R", "u+rwX,g+rwX", &CONFIGS_DIR])?; - cmd(&["chown", "-R", "peach:peach", &CONFIGS_DIR])?; - cmd(&["chmod", "-R", "u+rwX,g+rwX", &PEACH_WEB_DIR])?; - cmd(&["chown", "-R", "peach:peach", &PEACH_WEB_DIR])?; - cmd(&["chmod", "-R", "u+rwX,g+rwX", &PEACH_HOME_DIR])?; - cmd(&["chown", "-R", "peach:peach", &PEACH_HOME_DIR])?; + cmd(&["chmod", "-R", "u+rwX,g+rwX", &PEACH_CONFIGDIR])?; + cmd(&["chown", "-R", "peach:peach", &PEACH_CONFIGDIR])?; + cmd(&["chmod", "-R", "u+rwX,g+rwX", &PEACH_WEBDIR])?; + cmd(&["chown", "-R", "peach:peach", &PEACH_WEBDIR])?; + cmd(&["chmod", "-R", "u+rwX,g+rwX", &PEACH_HOMEDIR])?; + cmd(&["chown", "-R", "peach:peach", &PEACH_HOMEDIR])?; println!("[ PERMISSIONS SUCCESSFULLY UPDATED ]"); Ok(()) } diff --git a/peach-lib/Cargo.toml b/peach-lib/Cargo.toml index 370db43..028c61a 100644 --- a/peach-lib/Cargo.toml +++ b/peach-lib/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "peach-lib" -version = "1.3.2" +version = "1.3.3" authors = ["Andrew Reid "] edition = "2018" diff --git a/peach-lib/src/config_manager.rs b/peach-lib/src/config_manager.rs index 3852dfc..11ae424 100644 --- a/peach-lib/src/config_manager.rs +++ b/peach-lib/src/config_manager.rs @@ -61,6 +61,8 @@ pub fn get_peach_config_defaults() -> HashMap { ("TEMPORARY_PASSWORD_HASH", ""), ("GO_SBOT_DATADIR", "/home/peach/.ssb-go"), ("PEACH_CONFIGDIR", "/var/lib/peachcloud"), + ("PEACH_HOMEDIR", "/home/peach"), + ("PEACH_WEBDIR", "/usr/share/peach-web"), ]); // convert HashMap<&str, &str> to HashMap and return let pc_defaults: HashMap = peach_config_defaults From 781af460ae3ddbc2565da4617b3e1ee256fc4e00 Mon Sep 17 00:00:00 2001 From: notplants Date: Thu, 12 May 2022 13:32:40 +0200 Subject: [PATCH 3/4] Fix clippy warning --- peach-config/src/set_permissions.rs | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/peach-config/src/set_permissions.rs b/peach-config/src/set_permissions.rs index 26d07f8..355e24f 100644 --- a/peach-config/src/set_permissions.rs +++ b/peach-config/src/set_permissions.rs @@ -6,9 +6,12 @@ use crate::error::PeachConfigError; use crate::utils::cmd; lazy_static! { - pub static ref PEACH_CONFIGDIR: String = get_config_value("PEACH_CONFIGDIR").expect("Failed to load config value for PEACH_CONFIGDIR"); - pub static ref PEACH_WEBDIR: String = get_config_value("PEACH_WEBDIR").expect("Failed to load config value for PEACH_WEBDIR"); - pub static ref PEACH_HOMEDIR: String = get_config_value("PEACH_HOMEDIR").expect("Failed to load config value for PEACH_HOMEDIR"); + pub static ref PEACH_CONFIGDIR: String = get_config_value("PEACH_CONFIGDIR") + .expect("Failed to load config value for PEACH_CONFIGDIR"); + pub static ref PEACH_WEBDIR: String = + get_config_value("PEACH_WEBDIR").expect("Failed to load config value for PEACH_WEBDIR"); + pub static ref PEACH_HOMEDIR: String = + get_config_value("PEACH_HOMEDIR").expect("Failed to load config value for PEACH_HOMEDIR"); } /// Utility function to set correct file permissions on the PeachCloud device. From 8960df66357a60ebce902934550960ca10fb301e Mon Sep 17 00:00:00 2001 From: notplants Date: Thu, 12 May 2022 21:58:15 +0200 Subject: [PATCH 4/4] Fix cargo fmt --- peach-lib/src/sbot.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/peach-lib/src/sbot.rs b/peach-lib/src/sbot.rs index c76857d..880479d 100644 --- a/peach-lib/src/sbot.rs +++ b/peach-lib/src/sbot.rs @@ -2,8 +2,8 @@ use std::{fs, fs::File, io, io::Write, path::PathBuf, process::Command, str}; -use serde::{Deserialize, Serialize}; use crate::config_manager::get_config_value; +use serde::{Deserialize, Serialize}; use crate::error::PeachError;