config
This commit is contained in:
parent
9236a26d92
commit
150bbe05f7
@ -10,7 +10,7 @@ target_include_directories(solanaceae_clamav PUBLIC .)
|
||||
target_compile_features(solanaceae_clamav PUBLIC cxx_std_17)
|
||||
target_link_libraries(solanaceae_clamav PUBLIC
|
||||
EXT_SOL::libclamav
|
||||
#solanaceae_util
|
||||
solanaceae_util
|
||||
)
|
||||
|
||||
add_executable(solanaceae_clamav_test
|
||||
|
@ -1,5 +1,7 @@
|
||||
#include "./clamav_module.hpp"
|
||||
|
||||
#include <solanaceae/util/config_model.hpp>
|
||||
|
||||
#include <clamav.h>
|
||||
|
||||
#include <iostream>
|
||||
@ -9,7 +11,7 @@ extern "C" {
|
||||
void sol_cl_msg_cb(enum cl_msg severity, const char *fullmsg, const char *msg, void *context);
|
||||
};
|
||||
|
||||
ClamAVModule::ClamAVModule(void) {
|
||||
ClamAVModule::ClamAVModule(ConfigModelI& conf) : _conf(conf) {
|
||||
if (cl_init(CL_INIT_DEFAULT) != CL_SUCCESS) {
|
||||
throw std::domain_error("clamav cl_init() failed");
|
||||
}
|
||||
@ -35,8 +37,12 @@ bool ClamAVModule::startEngine(void) {
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
std::string db_dir;
|
||||
// TODO: load from config
|
||||
if (_conf.has_string("ClamAVModule", "database_dir")) {
|
||||
db_dir = _conf.get_string("ClamAVModule", "database_dir").value();
|
||||
}
|
||||
|
||||
unsigned int signo = 0;
|
||||
|
||||
@ -65,6 +71,9 @@ bool ClamAVModule::startEngine(void) {
|
||||
}
|
||||
}
|
||||
|
||||
// TODO: dont reset if not changed
|
||||
_conf.set("ClamAVModule", "database_dir", db_dir);
|
||||
|
||||
std::cout << "signatures loaded: " << signo << "\n";
|
||||
|
||||
if (cl_engine_compile(_clamav_engine) != CL_SUCCESS) {
|
||||
|
@ -5,15 +5,17 @@
|
||||
extern "C" {
|
||||
struct cl_engine;
|
||||
}
|
||||
struct ConfigModelI;
|
||||
|
||||
// blocking
|
||||
class ClamAVModule : public ClamAVModuleInterface {
|
||||
ConfigModelI& _conf;
|
||||
cl_engine* _clamav_engine {nullptr};
|
||||
|
||||
bool startEngine(void);
|
||||
|
||||
public:
|
||||
ClamAVModule(void);
|
||||
ClamAVModule(ConfigModelI& conf);
|
||||
~ClamAVModule(void);
|
||||
|
||||
ScanResult scanFilePath(std::string_view path);
|
||||
|
@ -1,10 +1,13 @@
|
||||
#include "./clamav_module.hpp"
|
||||
|
||||
#include <solanaceae/util/simple_config_model.hpp>
|
||||
|
||||
#include <iostream>
|
||||
|
||||
int main(void) {
|
||||
SimpleConfigModel scm;
|
||||
|
||||
ClamAVModule clamav;
|
||||
ClamAVModule clamav{scm};
|
||||
|
||||
auto [is_virus, virus_string] = clamav.scanFilePath("/home/green/Downloads/mal/f8c08d00ff6e8c6adb1a93cd133b19302d0b651afd73ccb54e3b6ac6c60d99c6");
|
||||
if (is_virus) {
|
||||
@ -13,6 +16,8 @@ int main(void) {
|
||||
std::cout << "not virus: " << virus_string << "\n";
|
||||
}
|
||||
|
||||
scm.dump();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
@ -1 +0,0 @@
|
||||
#include <clamav.h>
|
Loading…
Reference in New Issue
Block a user