Merge pull request 'Update peach-config to use configured paths' (#111) from change-paths2 into main

Reviewed-on: #111
This commit is contained in:
notplants 2022-05-12 20:25:13 +00:00
commit e6fd9a48cf
6 changed files with 30 additions and 24 deletions

6
Cargo.lock generated
View File

@ -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",
@ -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",

View File

@ -1,6 +1,6 @@
[package]
name = "peach-config"
version = "0.1.24"
version = "0.1.25"
authors = ["Andrew Reid <gnomad@cryptolab.net>", "Max Fowler <max@mfowler.info>"]
edition = "2018"
description = "Command line tool for installing, updating and configuring PeachCloud"

View File

@ -1,23 +1,30 @@
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 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.
/// 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", &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(())
}

View File

@ -1,6 +1,6 @@
[package]
name = "peach-lib"
version = "1.3.2"
version = "1.3.3"
authors = ["Andrew Reid <glyph@mycelial.technology>"]
edition = "2018"

View File

@ -59,8 +59,10 @@ pub fn get_peach_config_defaults() -> HashMap<String, String> {
("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"),
("PEACH_HOMEDIR", "/home/peach"),
("PEACH_WEBDIR", "/usr/share/peach-web"),
]);
// convert HashMap<&str, &str> to HashMap<String, String> and return
let pc_defaults: HashMap<String, String> = peach_config_defaults

View File

@ -2,6 +2,7 @@
use std::{fs, fs::File, io, io::Write, path::PathBuf, process::Command, str};
use crate::config_manager::get_config_value;
use serde::{Deserialize, Serialize};
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)?;