feat: Add 2 and update 6 files
This commit is contained in:
@@ -2,6 +2,7 @@
|
||||
#include <iostream>
|
||||
#include <fstream>
|
||||
#include <set>
|
||||
#include <algorithm>
|
||||
#include "config.hpp"
|
||||
#include "utils/utils.hpp"
|
||||
#include <filesystem>
|
||||
@@ -48,7 +49,8 @@ bool config::load_config() { // load json config file.
|
||||
"template_local_paths",
|
||||
"template_registries",
|
||||
"backups_path",
|
||||
"log_level"
|
||||
"log_level",
|
||||
"disabled_servers"
|
||||
};
|
||||
|
||||
std::set<std::string> deprecated_fields = {
|
||||
@@ -307,4 +309,71 @@ void config::apply_log_level()
|
||||
set_log_level(level);
|
||||
}
|
||||
|
||||
bool config::is_server_disabled(const std::string &server_name) const
|
||||
{
|
||||
if (!mIsConfigSet || !mConfig.contains("disabled_servers"))
|
||||
return false;
|
||||
|
||||
const auto& disabled = mConfig["disabled_servers"];
|
||||
if (!disabled.is_array())
|
||||
return false;
|
||||
|
||||
for (const auto& server : disabled) {
|
||||
if (server.is_string() && server == server_name)
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
void config::set_server_disabled(const std::string &server_name, bool disabled)
|
||||
{
|
||||
if (!mIsConfigSet) {
|
||||
return;
|
||||
}
|
||||
|
||||
// Ensure disabled_servers array exists
|
||||
if (!mConfig.contains("disabled_servers") || !mConfig["disabled_servers"].is_array()) {
|
||||
mConfig["disabled_servers"] = nlohmann::json::array();
|
||||
}
|
||||
|
||||
auto& disabled_servers = mConfig["disabled_servers"];
|
||||
|
||||
// Find if server is already in the list
|
||||
auto it = std::find(disabled_servers.begin(), disabled_servers.end(), server_name);
|
||||
|
||||
if (disabled) {
|
||||
// Add to disabled list if not already there
|
||||
if (it == disabled_servers.end()) {
|
||||
disabled_servers.push_back(server_name);
|
||||
save_config(false); // Save immediately
|
||||
}
|
||||
} else {
|
||||
// Remove from disabled list if present
|
||||
if (it != disabled_servers.end()) {
|
||||
disabled_servers.erase(it);
|
||||
save_config(false); // Save immediately
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
std::vector<std::string> config::get_disabled_servers() const
|
||||
{
|
||||
std::vector<std::string> result;
|
||||
|
||||
if (!mIsConfigSet || !mConfig.contains("disabled_servers"))
|
||||
return result;
|
||||
|
||||
const auto& disabled = mConfig["disabled_servers"];
|
||||
if (!disabled.is_array())
|
||||
return result;
|
||||
|
||||
for (const auto& server : disabled) {
|
||||
if (server.is_string() && !server.empty()) {
|
||||
result.push_back(server);
|
||||
}
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
} // namespace dropshell
|
||||
Reference in New Issue
Block a user