X-Git-Url: https://git.stg.codes/stg.git/blobdiff_plain/37324ea9b8c06d96b9383be993da02a01f103253..4fe07d7c76c7c9006780389a5babb524560b3ff0:/projects/stargazer/plugins/other/radius/radius.cpp diff --git a/projects/stargazer/plugins/other/radius/radius.cpp b/projects/stargazer/plugins/other/radius/radius.cpp index 78c80b4d..11fbcf7b 100644 --- a/projects/stargazer/plugins/other/radius/radius.cpp +++ b/projects/stargazer/plugins/other/radius/radius.cpp @@ -1,13 +1,9 @@ #include "radius.h" -#include "server.h" #include "radproto/error.h" - #include "stg/common.h" +#include -#include -#include -#include -#include //uint8_t, uint32_t +#include using STG::RADIUS; @@ -17,15 +13,25 @@ extern "C" STG::Plugin* GetPlugin() return &plugin; } -std::string RADIUS::GetVersion() const +RADIUS::RADIUS() + : m_running(false), + m_users(nullptr), + m_logger(PluginLogger::get("radius")) { - return "Radius v.1.0"; } -RADIUS::RADIUS() - : m_logger(PluginLogger::get("radius")), - m_running(false) +int RADIUS::ParseSettings() +{ + auto ret = m_config.ParseSettings(m_settings); + if (ret != 0) + m_errorStr = m_config.GetStrError(); + + return ret; +} + +std::string RADIUS::GetVersion() const { + return "Radius v.1.0"; } int RADIUS::Start() @@ -41,20 +47,23 @@ int RADIUS::Stop() m_thread.request_stop(); + if (m_server) + m_server->stop(); + m_thread.join(); return 0; } -void RADIUS::SetRunning(bool val) +bool RADIUS::IsRunning() { const std::lock_guard lock(m_mutex); - m_running = val; + return m_running; } -bool RADIUS::IsRunning() +void RADIUS::SetRunning(bool val) { const std::lock_guard lock(m_mutex); - return m_running; + m_running = val; } int RADIUS::Run(std::stop_token token) @@ -63,9 +72,9 @@ int RADIUS::Run(std::stop_token token) try { - boost::asio::io_service ioService; - Server server(ioService, "secret", 1812, "/usr/share/freeradius/dictionary"); - ioService.run(); + if (!m_server) + m_server = std::make_unique(m_ioContext, m_config.GetSecret(), m_config.GetPort(), m_config.GetDictionaries(), std::move(token), m_logger, m_users, m_config); + m_ioContext.run(); } catch (const std::exception& e) {