This commit is contained in:
parent
9063edb45f
commit
270d6ef792
@ -102,7 +102,7 @@ namespace dropshell
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Create backups directory locally if it doesn't exist
|
// Create backups directory locally if it doesn't exist
|
||||||
std::string local_backups_dir = gConfig().get_local_backup_path();
|
std::string local_backups_dir = localpath::backups();
|
||||||
if (local_backups_dir.empty())
|
if (local_backups_dir.empty())
|
||||||
{
|
{
|
||||||
error << "Error: Local backups directory not found" << std::endl;
|
error << "Error: Local backups directory not found" << std::endl;
|
||||||
|
@ -238,20 +238,7 @@ namespace dropshell
|
|||||||
{
|
{
|
||||||
maketitle("Installing dropshell agent on this computer...");
|
maketitle("Installing dropshell agent on this computer...");
|
||||||
|
|
||||||
std::vector<std::filesystem::path> paths = {
|
localpath::create_directories();
|
||||||
gConfig().get_local_template_cache_path(),
|
|
||||||
gConfig().get_local_backup_path(),
|
|
||||||
gConfig().get_local_tempfiles_path(),
|
|
||||||
localpath::agent()};
|
|
||||||
for (auto &p : gConfig().get_local_server_definition_paths())
|
|
||||||
paths.push_back(p);
|
|
||||||
|
|
||||||
for (auto &p : paths)
|
|
||||||
if (!std::filesystem::exists(p))
|
|
||||||
{
|
|
||||||
info << "Creating directory: " << p << std::endl;
|
|
||||||
std::filesystem::create_directories(p);
|
|
||||||
}
|
|
||||||
|
|
||||||
// create the agent-local directory.
|
// create the agent-local directory.
|
||||||
recreate_agent_local::recreate_tree(localpath::agent());
|
recreate_agent_local::recreate_tree(localpath::agent());
|
||||||
|
@ -57,7 +57,7 @@ namespace dropshell
|
|||||||
|
|
||||||
std::vector<shared_commands::cBackupFileName> get_backup_files(const std::string &server, const std::string &match_service = "", const std::string &match_template_name = "")
|
std::vector<shared_commands::cBackupFileName> get_backup_files(const std::string &server, const std::string &match_service = "", const std::string &match_template_name = "")
|
||||||
{
|
{
|
||||||
std::string local_backups_dir = gConfig().get_local_backup_path();
|
std::string local_backups_dir = localpath::backups();
|
||||||
if (local_backups_dir.empty() || !std::filesystem::exists(local_backups_dir))
|
if (local_backups_dir.empty() || !std::filesystem::exists(local_backups_dir))
|
||||||
{
|
{
|
||||||
error << "Error: Local backups directory not found: " << local_backups_dir << std::endl;
|
error << "Error: Local backups directory not found: " << local_backups_dir << std::endl;
|
||||||
@ -137,7 +137,7 @@ namespace dropshell
|
|||||||
debug << " Server: " << server << std::endl;
|
debug << " Server: " << server << std::endl;
|
||||||
debug << " Service: " << service << std::endl;
|
debug << " Service: " << service << std::endl;
|
||||||
|
|
||||||
std::string local_backups_dir = gConfig().get_local_backup_path();
|
std::string local_backups_dir = localpath::backups();
|
||||||
if (local_backups_dir.empty() || !std::filesystem::exists(local_backups_dir))
|
if (local_backups_dir.empty() || !std::filesystem::exists(local_backups_dir))
|
||||||
{
|
{
|
||||||
error << "Error: Local backups directory not found: " << local_backups_dir << std::endl;
|
error << "Error: Local backups directory not found: " << local_backups_dir << std::endl;
|
||||||
|
@ -46,6 +46,15 @@ bool config::load_config() { // load json config file.
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void _append(std::vector<std::string> & a, const std::vector<std::string> & b) {
|
||||||
|
if (b.empty())
|
||||||
|
return;
|
||||||
|
if (a.empty())
|
||||||
|
a = b;
|
||||||
|
else
|
||||||
|
a.insert(std::end(a), std::begin(b), std::end(b));
|
||||||
|
}
|
||||||
|
|
||||||
bool config::save_config(bool create_aux_directories)
|
bool config::save_config(bool create_aux_directories)
|
||||||
{
|
{
|
||||||
std::string config_path = localfile::dropshell_json();
|
std::string config_path = localfile::dropshell_json();
|
||||||
@ -61,37 +70,27 @@ bool config::save_config(bool create_aux_directories)
|
|||||||
if (!mIsConfigSet)
|
if (!mIsConfigSet)
|
||||||
{
|
{
|
||||||
std::string homedir = localpath::current_user_home();
|
std::string homedir = localpath::current_user_home();
|
||||||
std::string dropshell_base = homedir + "/.dropshell";
|
std::string dropshell_base = homedir + "/.local/dropshell_files";
|
||||||
mConfig["tempfiles"] = dropshell_base + "/tmp";
|
|
||||||
mConfig["backups"] = dropshell_base + "/backups";
|
|
||||||
|
|
||||||
mConfig["template_cache"] = dropshell_base + "/template_cache";
|
|
||||||
mConfig["template_registry_URLs"] = {
|
|
||||||
"https://templates.dropshell.app"
|
|
||||||
};
|
|
||||||
mConfig["template_local_paths"] = {
|
|
||||||
dropshell_base + "/local_templates"
|
|
||||||
};
|
|
||||||
|
|
||||||
mConfig["server_definition_paths"] = {
|
mConfig["server_definition_paths"] = {
|
||||||
dropshell_base + "/servers"
|
dropshell_base + "/servers"
|
||||||
};
|
};
|
||||||
mConfig["template_upload_registry_url"] = "https://templates.dropshell.app";
|
mConfig["template_local_paths"] = {
|
||||||
mConfig["template_upload_registry_token"] = "SECRETTOKEN";
|
dropshell_base + "/local_templates"
|
||||||
|
};
|
||||||
|
mConfig["template_registry_URLs"] = {
|
||||||
|
"https://templates.dropshell.app"
|
||||||
|
};
|
||||||
|
mConfig["template_upload_token"] = "SECRETTOKEN";
|
||||||
}
|
}
|
||||||
|
|
||||||
config_file << mConfig.dump(4);
|
config_file << mConfig.dump(4);
|
||||||
config_file.close();
|
config_file.close();
|
||||||
|
|
||||||
if (create_aux_directories) {
|
if (create_aux_directories) {
|
||||||
std::vector<std::filesystem::path> paths = {
|
std::vector<std::string> paths;
|
||||||
get_local_template_cache_path(),
|
_append(paths, get_local_template_paths());
|
||||||
get_local_backup_path(),
|
_append(paths, get_local_server_definition_paths());
|
||||||
get_local_tempfiles_path()
|
|
||||||
};
|
|
||||||
for (auto & p : get_local_server_definition_paths())
|
|
||||||
paths.push_back(p);
|
|
||||||
|
|
||||||
for (auto & p : paths)
|
for (auto & p : paths)
|
||||||
if (!std::filesystem::exists(p))
|
if (!std::filesystem::exists(p))
|
||||||
{
|
{
|
||||||
@ -100,6 +99,11 @@ bool config::save_config(bool create_aux_directories)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
debug << "Config paths: " << std::endl;
|
||||||
|
for (auto [key,value] : mConfig.items()) {
|
||||||
|
debug << " " << key << ": " << value << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -113,28 +117,17 @@ bool config::is_agent_installed()
|
|||||||
return std::filesystem::exists(localpath::agent() + "/bb64");
|
return std::filesystem::exists(localpath::agent() + "/bb64");
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string config::get_local_tempfiles_path() {
|
|
||||||
return mConfig["tempfiles"];
|
|
||||||
}
|
|
||||||
|
|
||||||
std::string config::get_local_backup_path() {
|
|
||||||
return mConfig["backups"];
|
|
||||||
}
|
|
||||||
|
|
||||||
std::string config::get_local_template_cache_path() {
|
|
||||||
return mConfig["template_cache"];
|
|
||||||
}
|
|
||||||
|
|
||||||
std::vector<std::string> config::get_template_registry_urls() {
|
std::vector<std::string> config::get_template_registry_urls() {
|
||||||
nlohmann::json template_registry_urls = mConfig["template_registry_URLs"];
|
nlohmann::json template_registry_urls = mConfig["template_registry_URLs"];
|
||||||
std::vector<std::string> urls;
|
std::vector<std::string> urls;
|
||||||
for (auto &url : template_registry_urls) {
|
for (auto &url : template_registry_urls) {
|
||||||
|
if (url.is_string() && !url.empty())
|
||||||
urls.push_back(url);
|
urls.push_back(url);
|
||||||
}
|
}
|
||||||
return urls;
|
return urls;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::vector<std::string> config::get_template_local_paths()
|
std::vector<std::string> config::get_local_template_paths()
|
||||||
{
|
{
|
||||||
nlohmann::json template_local_paths = mConfig["template_local_paths"];
|
nlohmann::json template_local_paths = mConfig["template_local_paths"];
|
||||||
std::vector<std::string> paths;
|
std::vector<std::string> paths;
|
||||||
@ -147,23 +140,40 @@ std::vector<std::string> config::get_template_local_paths()
|
|||||||
|
|
||||||
std::vector<std::string> config::get_local_server_definition_paths() {
|
std::vector<std::string> config::get_local_server_definition_paths() {
|
||||||
nlohmann::json server_definition_paths = mConfig["server_definition_paths"];
|
nlohmann::json server_definition_paths = mConfig["server_definition_paths"];
|
||||||
|
|
||||||
std::vector<std::string> paths;
|
std::vector<std::string> paths;
|
||||||
for (auto &path : server_definition_paths) {
|
for (auto &path : server_definition_paths) {
|
||||||
if (path.is_string() && !path.empty())
|
if (path.is_string() && !path.empty())
|
||||||
paths.push_back(path);
|
paths.push_back(path);
|
||||||
else
|
|
||||||
warning << "Invalid server definition path: " << path << std::endl;
|
|
||||||
}
|
}
|
||||||
return paths;
|
return paths;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string config::get_template_upload_registry_url() {
|
std::string config::get_server_create_path()
|
||||||
return mConfig["template_upload_registry_url"];
|
{
|
||||||
|
std::vector<std::string> paths = get_local_server_definition_paths();
|
||||||
|
if (paths.empty())
|
||||||
|
return "";
|
||||||
|
return paths[0];
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string config::get_template_upload_registry_token() {
|
std::string config::get_template_create_path()
|
||||||
return mConfig["template_upload_registry_token"];
|
{
|
||||||
|
std::vector<std::string> paths = get_local_template_paths();
|
||||||
|
if (paths.empty())
|
||||||
|
return "";
|
||||||
|
return paths[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string config::get_template_upload_url()
|
||||||
|
{
|
||||||
|
std::vector<std::string> urls = get_template_registry_urls();
|
||||||
|
if (urls.empty())
|
||||||
|
return "";
|
||||||
|
return urls[0];
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string config::get_template_upload_token() {
|
||||||
|
return mConfig["template_upload_token"];
|
||||||
}
|
}
|
||||||
|
|
||||||
} // namespace dropshell
|
} // namespace dropshell
|
@ -17,15 +17,14 @@ class config {
|
|||||||
bool is_config_set() const;
|
bool is_config_set() const;
|
||||||
static bool is_agent_installed();
|
static bool is_agent_installed();
|
||||||
|
|
||||||
std::string get_local_tempfiles_path();
|
|
||||||
std::string get_local_backup_path();
|
|
||||||
std::string get_local_template_cache_path();
|
|
||||||
std::vector<std::string> get_template_registry_urls();
|
std::vector<std::string> get_template_registry_urls();
|
||||||
std::vector<std::string> get_template_local_paths();
|
std::vector<std::string> get_local_template_paths();
|
||||||
std::vector<std::string> get_local_server_definition_paths();
|
std::vector<std::string> get_local_server_definition_paths();
|
||||||
|
|
||||||
std::string get_template_upload_registry_url();
|
std::string get_server_create_path();
|
||||||
std::string get_template_upload_registry_token();
|
std::string get_template_create_path();
|
||||||
|
std::string get_template_upload_url();
|
||||||
|
std::string get_template_upload_token();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
nlohmann::json mConfig;
|
nlohmann::json mConfig;
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -137,7 +137,7 @@ std::set<std::string> list_backups(const std::string &server_name, const std::st
|
|||||||
return backups;
|
return backups;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::string backups_dir = gConfig().get_local_backup_path();
|
std::string backups_dir = localpath::backups();
|
||||||
if (backups_dir.empty())
|
if (backups_dir.empty())
|
||||||
return backups;
|
return backups;
|
||||||
|
|
||||||
|
@ -185,7 +185,7 @@
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
auto local_template_paths = gConfig().get_template_local_paths();
|
auto local_template_paths = gConfig().get_local_template_paths();
|
||||||
if (local_template_paths.empty()) {
|
if (local_template_paths.empty()) {
|
||||||
std::cerr << "Error: No local template paths found" << std::endl;
|
std::cerr << "Error: No local template paths found" << std::endl;
|
||||||
std::cerr << "Run 'dropshell edit' to add one to the DropShell config" << std::endl;
|
std::cerr << "Run 'dropshell edit' to add one to the DropShell config" << std::endl;
|
||||||
@ -252,7 +252,7 @@
|
|||||||
ASSERT(mSources.empty(), "Template manager already loaded (sources are not empty).");
|
ASSERT(mSources.empty(), "Template manager already loaded (sources are not empty).");
|
||||||
ASSERT(gConfig().is_config_set(), "Config not set.");
|
ASSERT(gConfig().is_config_set(), "Config not set.");
|
||||||
ASSERT(!mLoaded, "Template manager already loaded.");
|
ASSERT(!mLoaded, "Template manager already loaded.");
|
||||||
auto local_template_paths = gConfig().get_template_local_paths();
|
auto local_template_paths = gConfig().get_local_template_paths();
|
||||||
if (local_template_paths.empty())
|
if (local_template_paths.empty())
|
||||||
return;
|
return;
|
||||||
for (const auto& path : local_template_paths)
|
for (const auto& path : local_template_paths)
|
||||||
|
@ -62,7 +62,7 @@ namespace localpath {
|
|||||||
|
|
||||||
std::string remote_versions(const std::string &server_name, const std::string &service_name)
|
std::string remote_versions(const std::string &server_name, const std::string &service_name)
|
||||||
{
|
{
|
||||||
std::string template_cache_path = gConfig().get_local_template_cache_path();
|
std::string template_cache_path = localpath::template_cache();
|
||||||
return ((template_cache_path.empty() || service_name.empty()) ? "" :
|
return ((template_cache_path.empty() || service_name.empty()) ? "" :
|
||||||
(template_cache_path+"/remote_versions/"+service_name+".json"));
|
(template_cache_path+"/remote_versions/"+service_name+".json"));
|
||||||
}
|
}
|
||||||
@ -84,6 +84,48 @@ namespace localpath {
|
|||||||
warning << "Couldn't determine user directory" << std::endl;
|
warning << "Couldn't determine user directory" << std::endl;
|
||||||
return std::string();
|
return std::string();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
std::string dropshell_files()
|
||||||
|
{
|
||||||
|
return current_user_home() + "/.local/dropshell_files";
|
||||||
|
return std::string();
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string backups()
|
||||||
|
{
|
||||||
|
return dropshell_files() + "/backups";
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string temp_files()
|
||||||
|
{
|
||||||
|
return dropshell_files() + "/temp_files";
|
||||||
|
}
|
||||||
|
|
||||||
|
std::string template_cache()
|
||||||
|
{
|
||||||
|
return dropshell_files() + "template_cache";
|
||||||
|
}
|
||||||
|
|
||||||
|
bool create_directories()
|
||||||
|
{
|
||||||
|
std::vector<std::filesystem::path> paths = {
|
||||||
|
dropshell_files(),
|
||||||
|
template_cache(),
|
||||||
|
backups(),
|
||||||
|
temp_files(),
|
||||||
|
agent()};
|
||||||
|
for (auto &p : gConfig().get_local_server_definition_paths())
|
||||||
|
paths.push_back(p);
|
||||||
|
|
||||||
|
for (auto &p : paths)
|
||||||
|
if (!std::filesystem::exists(p))
|
||||||
|
{
|
||||||
|
info << "Creating directory: " << p << std::endl;
|
||||||
|
std::filesystem::create_directories(p);
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace localpath
|
} // namespace localpath
|
||||||
|
|
||||||
//------------------------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------------------------
|
||||||
|
@ -18,21 +18,11 @@ namespace dropshell {
|
|||||||
// |-- files_for_remote_agent
|
// |-- files_for_remote_agent
|
||||||
// |-- (other agent files, including _allservicesstatus.sh)
|
// |-- (other agent files, including _allservicesstatus.sh)
|
||||||
|
|
||||||
// server_definition_path
|
// ~/.local/dropshell_files
|
||||||
// |-- <server_name>
|
// |-- backups
|
||||||
// |-- server.json
|
|
||||||
// |-- services
|
|
||||||
// |-- <service_name>
|
|
||||||
// |-- service.env
|
|
||||||
// |-- .template_info.env
|
|
||||||
// |-- (...other config files for specific server&service...)
|
|
||||||
|
|
||||||
// backup path
|
|
||||||
// |-- katie-_-squashkiwi-_-squashkiwi-test-_-2025-04-28_21-23-59.tgz
|
// |-- katie-_-squashkiwi-_-squashkiwi-test-_-2025-04-28_21-23-59.tgz
|
||||||
|
// |-- temp_files
|
||||||
// temp files path
|
// |-- template_cache
|
||||||
|
|
||||||
// template cache path
|
|
||||||
// |-- templates
|
// |-- templates
|
||||||
// | |-- <template_name>.json
|
// | |-- <template_name>.json
|
||||||
// | |-- <template_name>
|
// | |-- <template_name>
|
||||||
@ -45,6 +35,17 @@ namespace dropshell {
|
|||||||
// |-- remote_versions
|
// |-- remote_versions
|
||||||
// | |-- server_name-service_name.json
|
// | |-- server_name-service_name.json
|
||||||
|
|
||||||
|
// server_definition_path
|
||||||
|
// |-- <server_name>
|
||||||
|
// |-- server.json
|
||||||
|
// |-- services
|
||||||
|
// |-- <service_name>
|
||||||
|
// |-- service.env
|
||||||
|
// |-- .template_info.env
|
||||||
|
// |-- (...other config files for specific server&service...)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
namespace localfile {
|
namespace localfile {
|
||||||
// ~/.config/dropshell/dropshell.json
|
// ~/.config/dropshell/dropshell.json
|
||||||
std::string dropshell_json();
|
std::string dropshell_json();
|
||||||
@ -62,6 +63,14 @@ namespace dropshell {
|
|||||||
std::string agent();
|
std::string agent();
|
||||||
std::string files_for_remote_agent();
|
std::string files_for_remote_agent();
|
||||||
std::string current_user_home();
|
std::string current_user_home();
|
||||||
|
|
||||||
|
std::string dropshell_files();
|
||||||
|
std::string backups();
|
||||||
|
std::string temp_files();
|
||||||
|
std::string template_cache();
|
||||||
|
|
||||||
|
|
||||||
|
bool create_directories();
|
||||||
} // namespace local
|
} // namespace local
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user