* Radius. Header file <mutex>, <jthread.hpp> added. Functions start, stop
declaration changed. Class members m_thread, m_mutex added. Function Run
declaration added.
* Radius. Header files added. Functions Start, Stop, Run definition added.
* Radius. New files server.h, server.cpp added.
* Radius. Definition of functions startReceive, makeResponse, handleSend,
handleReceive added.
* The Run function name fixed. Definition of secret variable sdded.
* The file server.cpp added to add_library command, command
find_package(OpenSSL 1.0.0 Required) added, OpenSSL::Crypto added to
target_link_libraries command in the block if(BUILD_MOD_RADIUS).
* Parameter token added to function Run() declaration.
* Radius. Method Start: variable isRunning=true removed, m_thread
definition changed. Method Stop: variable isRunning=false removed,
m_thread.joinable check added, isRunning check added, request_stop call added.
Method Run: parameter token added, variables secret, port removed,
object lock and isRunning=true added before cycle while,
cycle while added, isRunning=false added after cycle while.
* Radius. Hold the mutex removed,extra conditions
for m_thread.join() removed in the Stop function.
* Radius. Cycle while removed in function Run.
* Radius. The variables isRunning, errorStr replaced by m_running,
m_errorStr in class Radius.
* Radius. The variable isRunning replaced by m_running in function Run.
* Radius. Object name io_service changed to ioService in the function Run.
* Method SetRunning declaration added to the class RADIUS.
* Method SetRunning definition added. Method SetRunning call added to
function Run.
* Radius. Namespace STG added.
* Radius. Declaration using STG::Server added.
* Radius. Header file "stg/logger.h" added. RADIUS class member m_loger added.
* Radius. Header file "stg/common.h" added. Initialization of m_logger
added to constructor RADIUS. Output cerr replaced by logger and
printfd().
* Radius. Variable except added, messages fixed in the function Run.
* Radius. Thread join logic fixed in the function Stop.
* Keyword const added to std::lock_guard in the function SetRunning.
* Radius. Class member m_mutex moved to the top of list.
* Radius. Class member m_logger put after the m_running.
* Radius. Unnecessary variable except removed in the function Run.
* Radius. Extra whitespace removed in the function Stop. Function
IsRunning definition added.
* Radius. Function IsRunning declaration changed.
* Radius. Formatting fixed.
* Radius. Extra symbols '//' removed.
* Radius. Class member m_running initialization added to constructor
RADIUS.
* Radius.Header file "stg/module_settings.h" added. Class members variable
m_settings and method SetSettings added to class RADIUS.
* Radius. The parameters Secret, Dictionaries added, parameter Port
changed, other parameters removed.
* Radius. Header files added. Class RAD_SETTINGS added. Methods
SetSettings, copy constructor RADIUS, assignment operator added. Method
ParseSettings changed. Formatting fixed.
* Radius. Parameter default changed to optional and parameters value
commented out for the parameters dictionaries, port.
* Radius. Description of parameters secret, port, dictionaries changed.
* Radius. Copy constructor RADIUS and assignment operator declaration
changed and moved to public section.
* Radius. Class member m_mutex moved to the top of section private.
* Radius. The m_port variable value initialization changed to 1812,
m_dictionaries variable initialization added to constructor RAD_SETTINGS.
* Radius. Check for missing parameters port and dictionaries removed in function ParseSettings.
* Radius. The dist directory added.
* Radius. The methods declaration stop and start added.
* Radius. The methods stop, start definition added. Method start call
added to Server constructor.
* Radius. The header files "server.h", <boost/asio.hpp>, <memory> added.
The class members m_ioService, m_server added.
* Radius. The header files "server", <boost/asio.hpp>, <string> removed.
The method m_server->stop() call added to method Stop.
* Radius. Header files <stop_token> and <jthread.hpp> added. Parameter
token added to constructor Server. Class member m_token added.
* Radius. Parameter token and m_token class member initialization added to Server
constructor definition. The check m_token.stop_requested() added to
method handleSend before startReceive method call.
* Radius. The m_server class member initialization removed.
* Radius. The m_server->stop() call adnd m_thread.request_stop() call
reodered, the m_server check added before m_server->stop call in the
method Stop. Parameter token added to constructor Server in the function
Run.
* Radius. Header file "stg/logger.h" added. Class member m_logger added to
class Server.
* Radius. Header file "stg/common.h" added, header file <iostream>
removed. Class member m_logger initialization added to constructor
Server. Object std::cout replaced by function printfd and m_logger.
* Radius. Class member m_logger initialization changed in the constructor
Server. Check token moved before checking the error code in the
handleSend method.
* Radius. Check token added to handleReceive method.
* Radius. Header file <stop_token> replaced by <stop_token.hpp>, header
file <jthread.hpp> removed.
* Radius. Parameter m_logger added to constructor Server call in the
method Run.
* Radius. Parameter logger added to constructor Server declaration. Class
member m_logger added to class Server.
* Radius. Parameter logger added to constructor Server definition. Class
member m_logger initialization changed in the constructor Server.
* Radius. Extra whitespace removed ib the method Run.
* Radius. The order of operations changed in the method handleSend.
* Radius. The order of operations changed in the method handleReceive.
* Radius. Operator return removed when checking ec, operator else removed
when checking packet in the handleReceive method.
* Radius. Parameter token replaced by std::move(token) in the constructor Server
in method Run.
* Radius. Class member m_token initialization value changed to
std::move(token) in the constructor Server.
* Radius. The c_str() function added to message when checking error in the
handleSend and handleReceive methods.
* Radius. Header file <cstring> added.
* Radius. Header files "stg/users.h", "stg/user.h", "stg/user_property.h"
added. The using statements added. The findUser, SetUsers functions
declaration added. Class member m_users added.
* Radius. Header files "radproto/attribute_types.h", <cstdint> added.
The m_users class member initialization added to constructor Server. The
findUser function definition added. The findUser function call added to
makeResponse function.
* Radius. Getting the values of login and password fixed in the function
findUser. Extra functions printfd call added.
* Radius. Using statements added. Method SetUsers added, variable class
member m_users added to class RADIUS.
* Radius. The class member variable m_users initialization added to
constructor Radius. Parameter m_users added to constructor Server call
in the method Run.
* Radius. Parameter users added to constructir Server declaration.
Function SetUsers removed fron class Server.
* Radius. Parameter users added to constructor Server definition. Variable
class member m_users initialization added to constructor Server.
* Radius. Function c_str added to login and password in m_logger and
printfd function in the function findUser.
* Radius. Extra functions printfd removed.
* Radius. The using declaration for UserPtr, ConstUserPtr removed.
* Radius. Looking for user moved after check request type in the
makeResponse function.
* Radius. The using declaration for UserPtr, ConstUserPtr removed. Header
files "stg/user.h", "stg/users.h", "stg/user.property.h" removed.
* Radius. Header files "stg/user.h", "stg/users.h" added.
* Radius. Function findUser moved to private.
* Radius. Return type of function findUser changed to bool.
* Radius. Return type of function findUser definition and call changed to bool.
* Radius. Variables attributesEmpty, vendorSpecificEmpty added for packet
ACCESS_REJECT in the function makeResponse.
* Radius. Type STG::Users* replaced by Users* in parameter users in the
constructor Server definition.
* Radius. Condition and code order changed when packet is returned in
makeResponse function.
* Radius. Unnecessary variables attributeEmpty, vendorSpecificEmpty
replaced by {} when ACCESS_REJECT packet is returned in makeResponse
function.
* Radius. Prefix STG of user object removed, user is initialized by
nullptr and moved to the point before call FindByName function in the
findUser function.
* Radius. Extra printfd function call removed in the function findUser.
* Radius. The way of initializing the object user changed in the findUser
function. Error log removed in the makeResponse function.
* Radius. Prefix STG of class member m_users and of parameter u in
SetUsers function removed.
* Radius. Prefix STG of class member m_users and of parameter users
in the constructor Server declaration removed.
* Radius. The messages of m_logger and printfd changed in function
findUser.
* Radius. Search for parameters auth and send added to the ParseSettings function.
* Radius. Extra whitespace removed, unnecessary variables sendValue and
sectionsParams removed in ParseSettings function.
* Radius. The struct AttrValue added.
* Radius. Header files <boost/tokenizer.hpp>, <vector>, <utility> added.
Parsing attributes of field send in section auth of mod_radius.conf
added to the function ParseSettings.
* Radius. Filling vector of pairs attrSend added. Extra printfd function
removed.
* Radius. The Sign enumeration elements names changed in the struct
AttrValue.
* Radius. Using declaration for struct AttrValue added. Function ParseSendAttr definition added
and call in the function ParseSettings added.
* Radius. The enum class Sign renamed to Type, object sign renamed to
type.
* Radius. The enum class Sign renamed to Type, object sign renamed to type
in ParseSendAttr function and ParseSettings function.
* Radius. The enumerator names NOT_VALUE changed to PARAN_NAME, IS_VALUE
changed to VALUE in enum Type.
* Radius. Radius. The enumerator names NOT_VALUE changed to PARAM_NAME, IS_VALUE changed to VALUE in
ParseSendAttr function.
* Radius. The AttrValue struct moved into the RAD_SETTINGS class.
* Radius. The using statement for struct AttrValue removed. The using alias for
struct AttrValue added.
* Radius. The vector parsedSendAttr check added to the function
ParseSendAttr.
* Radius. The ParseSendAttr method added, m_logger variable class member
added to RAD_SETTINGS class.
* Radius. ParseSendAttr function changed to method of RAD_SETTINGS class.
Vector parsedSendAttr check for emptiness and check vector size added to
the ParseSendAttr method. Class member m_logger initialization added to
initialization list to RAD_SETTINGS constructor.
* Radius. Quotes check for the ValueName added to the ParseSendAttr
method.
* Radius. Extra variables attrValue.value and attrValue.type removed in
the ParseSendAttr method.
* Radius. Extra variable attrValue removed in ParseSendAttr method.
* Radius. Send attributes parsing changed in method ParseSendAttr.
* Radius. Argument fieldSendAttr name changed to value and argument type
changed to const std::string& in ParseSendAttr method. Vector
keyValuePairs name changed to res.
* Radius. Argument fieldSendAttr name changed to value and argument type
changed to const std::string& in ParseSendAttr method.
* Radius. Vector name parsedSendAttr changed to keyValue in ParseSendAttr
method.
* Radius. Functions front() and back() are used to get the first and last
characters of string valueName in ParseSendAttr method.
* Radius. Method declaration ParseSendAttr moved to private in class
RAD_SETTINGS.
* Radius. Formatting fixed. Class member m_res and public function
GetRes added to class RAD_SETTINGS.
* Radius. Extra variable res removed. Class member m_res definition added
to ParseSendAttr function and ParseSettings function.
* Radius. Vector res added, variable m_res replaced by res in
ParseSendAttr function.
* Radius. Function name GetRes changed to GetSendPairs, class member
vaiable name m_res changed to m_sendPairs in class RAD_SETTINGS.
* Radius. Class member vaiable name m_res changed to m_sendPairs in the
ParseSettings function.
* Radius. Parameter auth added to mod_radius.conf.
* Radius. The ParseMatchAttr method declaration and m_matchPairs class
member added to RAD_SETTINGS class.
* Radius. The ParseMatchAttr function definition added. Match attributes
parsing added to ParseSetting function.
* Radius. The ParseMatchAttr method removed, the ParseSendAttr method
renamed to ParseAuthAttr in the class RAD_SETTINGS.
* Radius. The ParseSendAttr method definition and call renamed to
ParseAuthAttr. Parameter paramName added to ParseAuthAttr method. The
ParseMatchAttr method definition removed. ParseMatchAttr method call
replaced by ParseAuthAttr.
* Radius. Attribute for parameter auth/match changed.
* Radius. Parameter autz added.
* Radius. ParseAuthAttr function renamed to ParseAuthAutzAttr.
* Radius. ParseAuthAttr function renamed to ParseAuthAutzAttr. The autz
attributes parsing added, m_logger and printfd messages changed in the
ParseAuthAutzAttr function.
* Radius. ParseAuthAutzAttr function renamed to ParseSectionsAttr. The MakeKeyValuePairs function
definition added.
* Radius. ParseAuthAutzAttr function renamed to ParseSectionsAttr. The messages
of m_logger and printfd changed in the ParseSectionsAttr function.
The MakeKeyValuePairs function definition and call added.
* Radius. Attributes of auth/send, autz/send, autz/match changed.
* Radius. ParseSectionsAttr function name changed to ParseRyles.
* Radius. ParseSectionsAttr function name definition and call changed to ParseRyles.
* Radius. Extra printfd function call removed in MakeKeyValuePairs
functions.
* Radius. The ShowRules, GetSendPairsAuth, GetMatchPairsAuth, GetSendPairsAutz, GetMatchPairsAutz
functions declaration added. The m_sendPairs, m_matchPairs class members
removed. The m_sendPairsAuth, m_matchPairsAuth, m_sendPairsAutz, m_matchPairsAutz
class members added.
* Radius. The ShowRules function definition added and its call in
MakeKeyValuePairs function added.
* Radius. The strRules string creating fixed and strRules string renamed to result
in the ShowRules function.
* Radius. Parameter name changed to attributes and & added to parameter in
the ParseRules function.
* Radius. The ShowRules function definition changed. Parameter name changed to attributes and & added to parameter in the ShowRules function.
* Radius. The struct ASection added. The getAuth, getAutz, parseASection
function declaration added. Class member m_auth, m_autz added.
Unnecessary code removed.
* Radius. The using ASection for alias added. The parseASection function
definition and call added, MakeKeyValuePairs function removed,
ParseSettings function changed. Extra printfd function added.
* Radius. The return added to parseASection function. Extra printfd
functions removed.
* Radius. GIT_TAG changed to 1.1.3 in the ExternalProject_Add for
async-radius.
* Radius. The m_ioService class member replaced by m_ioContext in class
Radius.
* Radius. The m_ioService class member replaced by m_ioContext in the
function Run.
* Radius. Parameter io_service replaced by io_context in the constructor Server.
* Radius. Parameter io_service replaced by io_context in the constructor Server definition.
* Radius. Parameters msg, ip commented out in the SendMessage function.
* Radius. Variable 'sep' declared 'const' in ParseRules function.
* Radius. Variables 'tokens', 'sp', 'tok' declared 'const' in ParseRules function.
* Radius. ShowRules function declaration removed from class RAD_SETTINGS.
* Radius. ShowRules function definition is made as a free function.
* Radius. ShowRules function definition is placed in the anonymous namespace.
* Radius. The code for determining the first element of vector changed in the function ShowRules.
* Radius. Function SetUsers declaration is made as override in the class
Radius.
* Radius. Header file <algorithm> added.
# Default: 1812
# Port = 1812
# Default: 1812
# Port = 1812
+ <auth>
+ send = "Framed-IP-Address = currip, Service-Type = \'Framed-User\'"
+ match = "Calling-Station-Id = userdata0"
+ </auth>
+
+ <autz>
+ send = "Framed-IP-Address = currip, Service-Type = \'Login-User\'"
+ match = "User-Name = login, User-Password = password"
+ </autz>
ExternalProject_Add ( async-radius
GIT_REPOSITORY https://github.com/madf/async-radius.git
ExternalProject_Add ( async-radius
GIT_REPOSITORY https://github.com/madf/async-radius.git
GIT_SHALLOW true
INSTALL_COMMAND ""
CMAKE_ARGS -DCMAKE_CXX_FLAGS=-fPIC )
GIT_SHALLOW true
INSTALL_COMMAND ""
CMAKE_ARGS -DCMAKE_CXX_FLAGS=-fPIC )
#include "radius.h"
#include "radproto/error.h"
#include "stg/common.h"
#include "radius.h"
#include "radproto/error.h"
#include "stg/common.h"
+#include <boost/tokenizer.hpp>
+#include <vector>
+#include <utility>
#include <iostream>
using STG::RADIUS;
using STG::RAD_SETTINGS;
#include <iostream>
using STG::RADIUS;
using STG::RAD_SETTINGS;
+using AttrValue = RAD_SETTINGS::AttrValue;
+using ASection = RAD_SETTINGS::ASection;
extern "C" STG::Plugin* GetPlugin()
{
extern "C" STG::Plugin* GetPlugin()
{
+namespace
+{
+ std::string ShowRules(const std::vector<std::pair<std::string, AttrValue>>& attributes)
+ {
+ std::string result;
+ for (const auto& at : attributes)
+ {
+ if (!result.empty())
+ result += ", ";
+
+ if (at.second.type == AttrValue::Type::PARAM_NAME)
+ result.append(at.first + " = " + at.second.value);
+ else
+ result.append(at.first + " = '" + at.second.value + "'");
+ }
+ return result;
+ }
+}
+
+std::vector<std::pair<std::string, AttrValue>> RAD_SETTINGS::ParseRules(const std::string& value, const std::string& paramName)
+{
+ using tokenizer = boost::tokenizer<boost::char_separator<char>>;
+ const boost::char_separator<char> sep(",");
+
+ const tokenizer tokens(value, sep);
+
+ std::vector<std::pair<std::string, AttrValue>> res;
+ for (const auto& token : tokens)
+ {
+ const boost::char_separator<char> sp(" =");
+ const tokenizer tok(token, sp);
+
+ std::vector<std::string> keyValue;
+ for (const auto& t : tok)
+ keyValue.push_back(t);
+
+ if (keyValue.size() != 2)
+ {
+ m_logger("The '%s' attribute specification has an incorrect format: '%s'.", paramName.c_str(), token.c_str());
+ printfd(__FILE__, "The '%s' attribute specification has an incorrect format: '%s'.", paramName.c_str(), token.c_str());
+ return {};
+ }
+
+ auto type = AttrValue::Type::PARAM_NAME;
+ std::string valueName = keyValue[1];
+ if (valueName.front() == '\'' && valueName.back() == '\'')
+ {
+ type = AttrValue::Type::VALUE;
+ valueName.erase(0, 1);
+ valueName.erase(valueName.length() - 1, 1);
+ }
+ else if ((valueName.front() == '\'' && valueName.back() != '\'') || (valueName.front() != '\'' && valueName.back() == '\''))
+ {
+ m_logger("Error ParseRules: '%s' attribute parameter value is invalid.\n", paramName.c_str());
+ printfd(__FILE__, "Error ParseRules: '%s' attribute parameter value is invalid.\n", paramName.c_str());
+ return {};
+ }
+ res.emplace_back(keyValue[0], AttrValue{valueName, type});
+ }
+ return res;
+}
+
+ASection RAD_SETTINGS::parseASection(const std::vector<ParamValue>& conf)
+{
+ ASection res;
+ const auto mit = std::find(conf.begin(), conf.end(), ParamValue("match", {}));
+ if (mit != conf.end())
+ res.match = ParseRules(mit->value[0], mit->param);
+
+ const auto sit = std::find(conf.begin(), conf.end(), ParamValue("send", {}));
+ if (sit != conf.end())
+ res.send = ParseRules(sit->value[0], sit->param);
+
+ return res;
+}
+
RAD_SETTINGS::RAD_SETTINGS()
: m_port(1812),
RAD_SETTINGS::RAD_SETTINGS()
: m_port(1812),
- m_dictionaries("/usr/share/freeradius/dictionary")
+ m_dictionaries("/usr/share/freeradius/dictionary"),
+ m_logger(PluginLogger::get("radius"))
{}
int RAD_SETTINGS::ParseSettings(const ModuleSettings & s)
{}
int RAD_SETTINGS::ParseSettings(const ModuleSettings & s)
m_secret = pvi->value[0];
m_secret = pvi->value[0];
pv.param = "Dictionaries";
pvi = std::find(s.moduleParams.begin(), s.moduleParams.end(), pv);
if (pvi != s.moduleParams.end() && !pvi->value.empty())
m_dictionaries = pvi->value[0];
pv.param = "Dictionaries";
pvi = std::find(s.moduleParams.begin(), s.moduleParams.end(), pv);
if (pvi != s.moduleParams.end() && !pvi->value.empty())
m_dictionaries = pvi->value[0];
+
+ const auto authIt = std::find(s.moduleParams.begin(), s.moduleParams.end(), ParamValue("auth", {}));
+ if (authIt != s.moduleParams.end())
+ m_auth = parseASection(authIt->sections);
+
+ const auto autzIt = std::find(s.moduleParams.begin(), s.moduleParams.end(), ParamValue("autz", {}));
+ if (autzIt != s.moduleParams.end())
+ m_autz = parseASection(autzIt->sections);
+
+ printfd(__FILE__, " auth.match = \"%s\"\n", ShowRules(m_auth.match).c_str());
+ printfd(__FILE__, " auth.send = \"%s\"\n", ShowRules(m_auth.send).c_str());
+ printfd(__FILE__, " autz.match = \"%s\"\n", ShowRules(m_autz.match).c_str());
+ printfd(__FILE__, " autz.send = \"%s\"\n", ShowRules(m_autz.send).c_str());
+
- m_server = std::make_unique<Server>(m_ioService, m_radSettings.GetSecret(), m_radSettings.GetPort(), m_radSettings.GetDictionaries(), std::move(token), m_logger, m_users);
- m_ioService.run();
+ m_server = std::make_unique<Server>(m_ioContext, m_radSettings.GetSecret(), m_radSettings.GetPort(), m_radSettings.GetDictionaries(), std::move(token), m_logger, m_users);
+ m_ioContext.run();
}
catch (const std::exception& e)
{
}
catch (const std::exception& e)
{
public:
RAD_SETTINGS();
virtual ~RAD_SETTINGS() {}
public:
RAD_SETTINGS();
virtual ~RAD_SETTINGS() {}
- const std::string & GetStrError() const { return m_errorStr; }
- int ParseSettings(const ModuleSettings & s);
+
+ struct AttrValue
+ {
+ enum class Type
+ {
+ PARAM_NAME,
+ VALUE
+ };
+ std::string value;
+ Type type;
+ };
+
+ struct ASection
+ {
+ using Pairs = std::vector<std::pair<std::string, AttrValue>>;
+ Pairs match;
+ Pairs send;
+ };
+
+ const std::string& GetStrError() const { return m_errorStr; }
+ int ParseSettings(const ModuleSettings& s);
uint16_t GetPort() const { return m_port; }
uint16_t GetPort() const { return m_port; }
- const std::string & GetDictionaries() const { return m_dictionaries; }
- const std::string & GetSecret() const { return m_secret; }
+ const std::string& GetDictionaries() const { return m_dictionaries; }
+ const std::string& GetSecret() const { return m_secret; }
+ const ASection& getAuth() const { return m_auth; }
+ const ASection& getAutz() const { return m_autz; }
+ std::vector<std::pair<std::string, AttrValue>> ParseRules(const std::string& value, const std::string& paramName);
+ ASection parseASection(const std::vector<ParamValue>& conf);
+
std::string m_errorStr;
uint16_t m_port;
std::string m_dictionaries;
std::string m_secret;
std::string m_errorStr;
uint16_t m_port;
std::string m_dictionaries;
std::string m_secret;
+
+ ASection m_auth;
+ ASection m_autz;
+
+ PluginLogger m_logger;
};
class RADIUS : public Auth
};
class RADIUS : public Auth
RADIUS(const RADIUS&) = delete;
RADIUS& operator=(const RADIUS&) = delete;
RADIUS(const RADIUS&) = delete;
RADIUS& operator=(const RADIUS&) = delete;
- void SetUsers(Users* u) { m_users = u; }
- void SetSettings(const ModuleSettings & s) override { m_settings = s; }
+ void SetUsers(Users* u) override { m_users = u; }
+ void SetSettings(const ModuleSettings& s) override { m_settings = s; }
int ParseSettings() override;
int Start() override;
int Stop() override;
int ParseSettings() override;
int Start() override;
int Stop() override;
- int Reload(const ModuleSettings & /*ms*/) override { return 0; }
+ int Reload(const ModuleSettings& /*ms*/) override { return 0; }
bool IsRunning() override;
void SetRunning(bool val);
bool IsRunning() override;
void SetRunning(bool val);
- const std::string & GetStrError() const override { return m_errorStr; }
+ const std::string& GetStrError() const override { return m_errorStr; }
std::string GetVersion() const override;
uint16_t GetStartPosition() const override { return 0; }
uint16_t GetStopPosition() const override { return 0; }
std::string GetVersion() const override;
uint16_t GetStartPosition() const override { return 0; }
uint16_t GetStopPosition() const override { return 0; }
- int SendMessage(const Message & msg, uint32_t ip) const override { return 0; }
+ int SendMessage(const Message& /*msg*/, uint32_t /*ip*/) const override { return 0; }
private:
std::mutex m_mutex;
private:
std::mutex m_mutex;
- boost::asio::io_service m_ioService;
+ boost::asio::io_context m_ioContext;
int Run(std::stop_token token);
mutable std::string m_errorStr;
int Run(std::stop_token token);
mutable std::string m_errorStr;
using STG::Server;
using boost::system::error_code;
using STG::Server;
using boost::system::error_code;
-Server::Server(boost::asio::io_service& io_service, const std::string& secret, uint16_t port, const std::string& filePath, std::stop_token token, PluginLogger& logger, Users* users)
- : m_radius(io_service, secret, port),
+Server::Server(boost::asio::io_context& io_context, const std::string& secret, uint16_t port, const std::string& filePath, std::stop_token token, PluginLogger& logger, Users* users)
+ : m_radius(io_context, secret, port),
m_dictionaries(filePath),
m_users(users),
m_token(std::move(token)),
m_dictionaries(filePath),
m_users(users),
m_token(std::move(token)),
- Server(boost::asio::io_service& io_service, const std::string& secret, uint16_t port, const std::string& filePath, std::stop_token token, PluginLogger& logger, Users* users);
+ Server(boost::asio::io_context& io_context, const std::string& secret, uint16_t port, const std::string& filePath, std::stop_token token, PluginLogger& logger, Users* users);
void stop();
private:
RadProto::Packet makeResponse(const RadProto::Packet& request);
void stop();
private:
RadProto::Packet makeResponse(const RadProto::Packet& request);