This commit is contained in:
badaix 2025-02-11 22:45:04 +01:00 committed by Johannes Pohl
parent 81f849bea9
commit c5ea25a5ea
5 changed files with 17 additions and 16 deletions

View file

@ -55,6 +55,7 @@ public:
/// Return value /// Return value
std::string result; std::string result;
/// @return description as json
Json toJson() Json toJson()
{ {
Json jres; Json jres;

View file

@ -76,9 +76,11 @@ struct ServerSettings
/// c'tor /// c'tor
Authorization() = default; Authorization() = default;
/// c'tor void init(const std::vector<std::string>& conf_roles, const std::vector<std::string>& conf_users)
Authorization(const std::vector<std::string>& conf_roles, const std::vector<std::string>& conf_users)
{ {
roles.clear();
users.clear();
for (const auto& role : conf_roles) for (const auto& role : conf_roles)
roles.emplace_back(std::make_shared<ServerSettings::Authorization::Role>(role)); roles.emplace_back(std::make_shared<ServerSettings::Authorization::Role>(role));

View file

@ -331,7 +331,7 @@ int main(int argc, char* argv[])
for (size_t n = 0; n < users_value->count(); ++n) for (size_t n = 0; n < users_value->count(); ++n)
users.push_back(users_value->value(n)); users.push_back(users_value->value(n));
settings.auth = ServerSettings::Authorization(roles, users); settings.auth.init(roles, users);
for (const auto& role : settings.auth.roles) for (const auto& role : settings.auth.roles)

View file

@ -64,14 +64,14 @@ std::string ProcessStream::findExe(const std::string& filename) const
return which; return which;
/// check in the same path as this binary /// check in the same path as this binary
char buff[PATH_MAX]; std::array<char, PATH_MAX> buff;
char szTmp[32]; std::array<char, 32> szTmp;
sprintf(szTmp, "/proc/%d/exe", getpid()); sprintf(szTmp.data(), "/proc/%d/exe", getpid());
ssize_t len = readlink(szTmp, buff, sizeof(buff) - 1); ssize_t len = readlink(szTmp.data(), buff.data(), buff.size() - 1);
if (len != -1) if (len != -1)
{ {
buff[len] = '\0'; buff[len] = '\0';
return string(buff) + "/" + exe; return string(buff.data()) + "/" + exe;
} }
return ""; return "";

View file

@ -724,9 +724,10 @@ TEST_CASE("WildcardMatch")
TEST_CASE("Auth") TEST_CASE("Auth")
{ {
{ ServerSettings::Authorization auth_settings;
ServerSettings::Authorization auth_settings({"admin:*"}, {"badaix:secret:admin"});
auth_settings.enabled = true; auth_settings.enabled = true;
{
auth_settings.init({"admin:*"}, {"badaix:secret:admin"});
REQUIRE(auth_settings.users.size() == 1); REQUIRE(auth_settings.users.size() == 1);
REQUIRE(auth_settings.roles.size() == 1); REQUIRE(auth_settings.roles.size() == 1);
REQUIRE(auth_settings.users.front().role->role == "admin"); REQUIRE(auth_settings.users.front().role->role == "admin");
@ -741,8 +742,7 @@ TEST_CASE("Auth")
} }
{ {
ServerSettings::Authorization auth_settings({"admin:"}, {"badaix:secret:admin"}); auth_settings.init({"admin:"}, {"badaix:secret:admin"});
auth_settings.enabled = true;
REQUIRE(auth_settings.users.size() == 1); REQUIRE(auth_settings.users.size() == 1);
REQUIRE(auth_settings.roles.size() == 1); REQUIRE(auth_settings.roles.size() == 1);
REQUIRE(auth_settings.users.front().role->role == "admin"); REQUIRE(auth_settings.users.front().role->role == "admin");
@ -756,8 +756,7 @@ TEST_CASE("Auth")
} }
{ {
ServerSettings::Authorization auth_settings({}, {"badaix:secret:"}); auth_settings.init({}, {"badaix:secret:"});
auth_settings.enabled = true;
REQUIRE(auth_settings.users.size() == 1); REQUIRE(auth_settings.users.size() == 1);
REQUIRE(auth_settings.roles.empty()); REQUIRE(auth_settings.roles.empty());
REQUIRE(auth_settings.users.front().role->permissions.empty()); REQUIRE(auth_settings.users.front().role->permissions.empty());
@ -770,8 +769,7 @@ TEST_CASE("Auth")
} }
{ {
ServerSettings::Authorization auth_settings({"admin:xxx,stream"}, {"badaix:secret:admin"}); auth_settings.init({"admin:xxx,stream"}, {"badaix:secret:admin"});
auth_settings.enabled = true;
REQUIRE(auth_settings.users.size() == 1); REQUIRE(auth_settings.users.size() == 1);
REQUIRE(auth_settings.roles.size() == 1); REQUIRE(auth_settings.roles.size() == 1);
REQUIRE(auth_settings.users.front().role->permissions.size() == 2); REQUIRE(auth_settings.users.front().role->permissions.size() == 2);