Configuration file and CI #4

Merged
bartfaik04 merged 29 commits from configuration into main 2025-06-07 15:33:06 +02:00
5 changed files with 54 additions and 26 deletions
Showing only changes of commit 31ec926793 - Show all commits

View File

@@ -6,19 +6,22 @@
#include <vector>
#include <fstream>
#include <iostream>
#include "usermanager.h"
#include "definitions.h"
class configFileManager{
class configfilemanager{
private:
std::map<std::string, std::string> configs;
public:
configFileManager(std::string filepath = "./ncsambawatcher.config")
configfilemanager(std::string filepath = "./ncsambawatcher.config")
{
std::ifstream is(filepath);
std::string tmp;
while(std::getline(is, tmp))
{
if (tmp.at(0) == '#') // ignore comments
continue;
std::vector<std::string> splited = splitString(tmp, '=');
if (splited.size() != 2)
{
@@ -30,11 +33,16 @@ public:
}
}
std::string at(std::string &config)
std::string at(const std::string &config)
{
return configs.at(config);
}
std::string at(const char* config)
{
return at(std::string(config));
}
};
#endif // _CONFIGFILEMANAGER_H

View File

@@ -5,7 +5,9 @@
#define USER_LOG_LOCATION 3
#define SCAN_CMD_USR "docker exec --user www-data nextcloud /var/www/html/occ files:scan --path="
#define SCAN_CMD_GRP "docker exec --user www-data nextcloud /var/www/html/occ groupfolder:scan "
#define SCAN_CMD_USR "docker exec --user www-data %1% /var/www/html/occ files:scan --path="
#define SCAN_CMD_GRP "docker exec --user www-data %1% /var/www/html/occ groupfolder:scan "
std::vector<std::string> splitString(const std::string& input, char delimiter);
#endif // _LOCATIONS_H

View File

@@ -10,11 +10,27 @@
#include <mutex>
#include <condition_variable>
#include <cstdio>
#include "definitions.h"
#include "usermanager.h"
#include "configfilemanager.h"
userManager manager;
std::condition_variable cv;
std::mutex mtx;
configfilemanager cfm;
std::vector<std::string> splitString(const std::string& str, char delimiter = '|')
{
std::vector<std::string> ret;
std::stringstream ss(str);
std::string token;
while (std::getline(ss, token, delimiter)) {
ret.push_back(token);
}
return ret;
}
void readingThreadFunc()
{
@@ -68,7 +84,7 @@ void scannerThreadFunc()
}
else if (child == 0) // child
{
std::string cmd = userManager::getScanCommandFromUser(user);
std::string cmd = userManager::getScanCommandFromUser(user, cfm);
execl("/bin/sh", "sh", "-c", cmd.c_str(), static_cast<char *>(nullptr));
std::cerr << "Scan failed" << std::endl;
_exit(EXIT_FAILURE);

View File

@@ -1,24 +1,27 @@
#include "usermanager.h"
std::vector<std::string> splitString(const std::string& str, char delimiter = '|')
std::string userManager::getScanCommandFromUser(const std::string &user, configfilemanager &cfm)
{
std::vector<std::string> ret;
std::stringstream ss(str);
std::string token;
std::string contname = cfm.at("NEXTCLOUD_CONTAINER_NAME");
std::string baseCommand;
std::string userCommand;
while (std::getline(ss, token, delimiter)) {
ret.push_back(token);
}
return ret;
}
std::string userManager::getScanCommandFromUser(const std::string &user)
{
if (user.find("__groupfolder") != std::string::npos)
{
return std::string(SCAN_CMD_GRP) + splitString(user, '/').back();
baseCommand = SCAN_CMD_GRP;
userCommand = splitString(user, '/').back();
}
else
{
baseCommand = SCAN_CMD_USR;
userCommand = user;
}
return std::string(SCAN_CMD_USR) + user;
size_t pos = 0;
while ((pos = baseCommand.find("%1%", pos)) != std::string::npos) {
baseCommand.replace(pos, contname.length(), contname);
pos += contname.length(); // Move past the replacement
}
return baseCommand + userCommand;
}

View File

@@ -8,8 +8,7 @@
#include <sstream>
#include <mutex>
#include "definitions.h"
std::vector<std::string> splitString(const std::string& input, char delimiter);
#include "configfilemanager.h"
class userManager
{
@@ -19,7 +18,7 @@ private:
public:
static std::string getScanCommandFromUser(const std::string&);
static std::string getScanCommandFromUser(const std::string&, configfilemanager& cfm);
void addUserFromLogLine(std::string &line)
{