diff --git a/repertory/repertory/include/ui/mgmt_app_config.hpp b/repertory/repertory/include/ui/mgmt_app_config.hpp index 3e7b4114..cfdd9a88 100644 --- a/repertory/repertory/include/ui/mgmt_app_config.hpp +++ b/repertory/repertory/include/ui/mgmt_app_config.hpp @@ -36,10 +36,11 @@ private: private: std::atomic animations_{true}; - utils::atomic api_password_{REPERTORY}; + utils::atomic api_password_{std::string{REPERTORY}}; std::atomic api_port_{default_ui_mgmt_port}; - utils::atomic api_user_{REPERTORY}; + utils::atomic api_user_{std::string{REPERTORY}}; std::atomic auto_start_{true}; + std::atomic event_level_{event_level::info}; std::unordered_map> locations_; @@ -71,6 +72,10 @@ public: [[nodiscard]] auto get_auto_start_list() const -> std::unordered_map>; + [[nodiscard]] auto get_event_level() const -> event_level { + return event_level_; + } + [[nodiscard]] auto get_hidden() const -> bool { return hidden_; } [[nodiscard]] auto get_launch_only() const -> bool { return launch_only_; } @@ -92,6 +97,8 @@ public: void set_auto_start(provider_type prov, std::string_view name, bool auto_start); + void set_event_level(event_level level); + void set_hidden(bool hidden); void set_launch_only(bool launch_only); diff --git a/repertory/repertory/main.cpp b/repertory/repertory/main.cpp index 5648ba94..c113065c 100644 --- a/repertory/repertory/main.cpp +++ b/repertory/repertory/main.cpp @@ -29,6 +29,7 @@ #include "ui/mgmt_app_config.hpp" #include "ui/ui_server.hpp" #include "utils/cli_utils.hpp" +#include "utils/error_utils.hpp" #include "utils/polling.hpp" using namespace repertory; @@ -83,7 +84,7 @@ auto main(int argc, char **argv) -> int { const auto run_ui = [](auto *server) { REPERTORY_USES_FUNCTION_NAME(); - static std::atomic active_server{server}; + static std::atomic active_server{server}; static const auto quit_handler = [](int /* sig */) { REPERTORY_USES_FUNCTION_NAME(); @@ -106,13 +107,13 @@ auto main(int argc, char **argv) -> int { std::signal(SIGTERM, quit_handler); try { - ptr->start(); + server->start(); } catch (const std::exception &ex) { utils::error::raise_error(function_name, ex, "failed to start ui"); } try { - ptr->stop(); + server->stop(); } catch (const std::exception &ex) { utils::error::raise_error(function_name, ex, "failed to stop ui"); } @@ -136,7 +137,7 @@ auto main(int argc, char **argv) -> int { return -1; } - ui::server server(&config); + ui::ui_server server(&config); run_ui(&server); return 0; }); diff --git a/repertory/repertory/src/ui/mgmt_app_config.cpp b/repertory/repertory/src/ui/mgmt_app_config.cpp index 1cf3a300..a1facdac 100644 --- a/repertory/repertory/src/ui/mgmt_app_config.cpp +++ b/repertory/repertory/src/ui/mgmt_app_config.cpp @@ -112,6 +112,13 @@ mgmt_app_config::mgmt_app_config(bool hidden, bool launch_only) should_save = true; } + if (data.contains(JSON_EVENT_LEVEL)) { + event_level_ = event_level_from_string( + data.at(JSON_EVENT_LEVEL).get()); + } else { + should_save = true; + } + if (data.contains(JSON_MOUNT_LOCATIONS)) { locations_ = from_json(data.at(JSON_MOUNT_LOCATIONS)); } else { @@ -253,7 +260,8 @@ void mgmt_app_config::set_auto_start(bool auto_start) { cfg.comment = "Mount utility for AWS S3 and Sia"; cfg.exec_args = {"-ui", "-lo"}; cfg.exec_path = utils::path::combine(".", {REPERTORY}); - cfg.icon_path = utils::path::combine(".", {REPERTORY ".png"}); + cfg.icon_path = + utils::path::combine(".", {std::string{REPERTORY} + ".png"}); cfg.terminal = true; if (utils::create_autostart_entry(cfg, false)) { @@ -365,6 +373,10 @@ void mgmt_app_config::set_auto_start(provider_type prov, std::string_view name, save(); } +void mgmt_app_config::set_event_level(event_level level) { + event_level_ = level; +} + void mgmt_app_config::set_hidden(bool hidden) { hidden_ = hidden; } void mgmt_app_config::set_launch_only(bool launch_only) { @@ -395,6 +407,7 @@ auto mgmt_app_config::to_json() const -> nlohmann::json { data[JSON_API_PORT] = api_port_; data[JSON_API_USER] = api_user_; data[JSON_AUTO_START] = auto_start_; + data[JSON_EVENT_LEVEL] = event_level_to_string(event_level_); data[JSON_MOUNT_AUTO_START] = map_to_json(mount_auto_start_); data[JSON_MOUNT_LOCATIONS] = map_to_json(locations_); return data; diff --git a/repertory/repertory/src/ui/ui_server.cpp b/repertory/repertory/src/ui/ui_server.cpp index 11e871ea..1ca6cf7f 100644 --- a/repertory/repertory/src/ui/ui_server.cpp +++ b/repertory/repertory/src/ui/ui_server.cpp @@ -111,14 +111,6 @@ namespace { return errno; #endif // defined(_WIN32) } - -[[nodiscard]] auto is_addr_in_use(int err) -> bool { -#if defined(_WIN32) - return err == WSAEADDRINUSE; -#else // !defined(_WIN32) - return err == EADDRINUSE; -#endif // defined(_WIN32) -} } // namespace namespace repertory::ui {