some small updates
This commit is contained in:
3
.gitignore
vendored
3
.gitignore
vendored
@@ -30,4 +30,5 @@
|
|||||||
*.exe
|
*.exe
|
||||||
*.out
|
*.out
|
||||||
*.app
|
*.app
|
||||||
*.ipch
|
*.ipch
|
||||||
|
*.IPCH
|
||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -161,10 +161,10 @@ void process_changes(const FILE_NOTIFY_INFORMATION* pInfo) {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
std::thread scan_thread(action_scanfile_t, filename_str);
|
std::thread scan_thread(scan_file_t, filename_str);
|
||||||
scan_thread.detach();
|
scan_thread.detach();
|
||||||
}
|
}
|
||||||
log(LOGLEVEL::INFO, "[process_changes()]: File change: ", filename_str.c_str(), " while monitoring directory for changes");
|
//log(LOGLEVEL::INFO, "[process_changes()]: File change: ", filename_str.c_str(), " while monitoring directory for changes");
|
||||||
}
|
}
|
||||||
/* this was the old algorithm. it was slower and used up more resources, because it used a database to track which files have been modified instead of using the windows internal functions
|
/* this was the old algorithm. it was slower and used up more resources, because it used a database to track which files have been modified instead of using the windows internal functions
|
||||||
void monitor_directory(LPCSTR directory) {
|
void monitor_directory(LPCSTR directory) {
|
||||||
|
|||||||
@@ -150,6 +150,7 @@
|
|||||||
<ClCompile Include="scan.cpp" />
|
<ClCompile Include="scan.cpp" />
|
||||||
<ClCompile Include="settings.cpp" />
|
<ClCompile Include="settings.cpp" />
|
||||||
<ClCompile Include="thread_ctrl.cpp" />
|
<ClCompile Include="thread_ctrl.cpp" />
|
||||||
|
<ClCompile Include="update.cpp" />
|
||||||
<ClCompile Include="virus_ctrl.cpp" />
|
<ClCompile Include="virus_ctrl.cpp" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
@@ -165,6 +166,7 @@
|
|||||||
<ClInclude Include="scan.h" />
|
<ClInclude Include="scan.h" />
|
||||||
<ClInclude Include="settings.h" />
|
<ClInclude Include="settings.h" />
|
||||||
<ClInclude Include="thread_ctrl.h" />
|
<ClInclude Include="thread_ctrl.h" />
|
||||||
|
<ClInclude Include="update.h" />
|
||||||
<ClInclude Include="virus_ctrl.h" />
|
<ClInclude Include="virus_ctrl.h" />
|
||||||
<ClInclude Include="well_known.h" />
|
<ClInclude Include="well_known.h" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|||||||
@@ -60,6 +60,9 @@
|
|||||||
<ClCompile Include="settings.cpp">
|
<ClCompile Include="settings.cpp">
|
||||||
<Filter>Headerdateien</Filter>
|
<Filter>Headerdateien</Filter>
|
||||||
</ClCompile>
|
</ClCompile>
|
||||||
|
<ClCompile Include="update.cpp">
|
||||||
|
<Filter>Headerdateien</Filter>
|
||||||
|
</ClCompile>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ClInclude Include="md5hash.h">
|
<ClInclude Include="md5hash.h">
|
||||||
@@ -104,6 +107,9 @@
|
|||||||
<ClInclude Include="resource.h">
|
<ClInclude Include="resource.h">
|
||||||
<Filter>Headerdateien</Filter>
|
<Filter>Headerdateien</Filter>
|
||||||
</ClInclude>
|
</ClInclude>
|
||||||
|
<ClInclude Include="update.h">
|
||||||
|
<Filter>Headerdateien</Filter>
|
||||||
|
</ClInclude>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<ResourceCompile Include="client_backend.rc">
|
<ResourceCompile Include="client_backend.rc">
|
||||||
|
|||||||
@@ -41,7 +41,7 @@ size_t write_callback(void* contents, size_t size, size_t nmemb, void* userp) {
|
|||||||
return totalSize;
|
return totalSize;
|
||||||
}
|
}
|
||||||
|
|
||||||
int download_file_from_srv(const char* url, const char* outputFileName) {
|
int download_file_from_srv(const char* url, const char* output_file_path) {
|
||||||
//use curl to download a file from a server
|
//use curl to download a file from a server
|
||||||
|
|
||||||
CURL* curl;
|
CURL* curl;
|
||||||
@@ -57,7 +57,7 @@ int download_file_from_srv(const char* url, const char* outputFileName) {
|
|||||||
curl_easy_setopt(curl, CURLOPT_URL, url);
|
curl_easy_setopt(curl, CURLOPT_URL, url);
|
||||||
|
|
||||||
// Create a file to write the downloaded data
|
// Create a file to write the downloaded data
|
||||||
output_file = fopen(outputFileName, "wb");
|
output_file = fopen(output_file_path, "wb");
|
||||||
if (!output_file) {
|
if (!output_file) {
|
||||||
curl_easy_cleanup(curl);
|
curl_easy_cleanup(curl);
|
||||||
return 1;
|
return 1;
|
||||||
|
|||||||
@@ -64,7 +64,7 @@ bool is_task_due(const std::string& task_name, const std::string& cron_expressio
|
|||||||
is_valid_field(fields[3], current_time.tm_mon + 1) &&
|
is_valid_field(fields[3], current_time.tm_mon + 1) &&
|
||||||
is_valid_field(fields[4], current_time.tm_wday + 1)) {
|
is_valid_field(fields[4], current_time.tm_wday + 1)) {
|
||||||
|
|
||||||
// Check if the task has already been executed in this minute
|
// Check if the task has already been executed
|
||||||
if (!task_states[task_name]) {
|
if (!task_states[task_name]) {
|
||||||
// Set the flag to indicate that the task has been executed
|
// Set the flag to indicate that the task has been executed
|
||||||
task_states[task_name] = true;
|
task_states[task_name] = true;
|
||||||
@@ -72,7 +72,7 @@ bool is_task_due(const std::string& task_name, const std::string& cron_expressio
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
// Reset the flag for a new minute
|
// Reset the flag
|
||||||
task_states[task_name] = false;
|
task_states[task_name] = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -19,46 +19,6 @@ std::string get_loglevel(LOGLEVEL level) {
|
|||||||
return "UNKNOWN";
|
return "UNKNOWN";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/*
|
|
||||||
template <typename... Args>
|
|
||||||
void log(LOGLEVEL level, const std::string& message, Args&&... args) {
|
|
||||||
std::string prefix = get_loglevel(level);
|
|
||||||
std::time_t now = std::time(nullptr);
|
|
||||||
std::tm tm = *std::localtime(&now);
|
|
||||||
|
|
||||||
std::ostringstream logStream;
|
|
||||||
logStream << std::put_time(&tm, "%Y-%m-%d %H:%M:%S") << " " << prefix << message;
|
|
||||||
if constexpr (sizeof...(args) > 0) {
|
|
||||||
((logStream << ' ' << std::forward<Args>(args)), ...);
|
|
||||||
}
|
|
||||||
logStream << std::endl;
|
|
||||||
std::string logString = logStream.str();
|
|
||||||
|
|
||||||
// Open the file based on log level
|
|
||||||
std::ofstream logFile;
|
|
||||||
switch (level) {
|
|
||||||
case LOGLEVEL::INFO:
|
|
||||||
logFile.open(INFOFILE, std::ios_base::app);
|
|
||||||
break;
|
|
||||||
case LOGLEVEL::WARNING:
|
|
||||||
logFile.open(WARNFILE, std::ios_base::app);
|
|
||||||
break;
|
|
||||||
case LOGLEVEL::ERROR:
|
|
||||||
logFile.open(ERRORFILE, std::ios_base::app);
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Write the log to the file
|
|
||||||
if (logFile.is_open()) {
|
|
||||||
logFile << logString.c_str();
|
|
||||||
logFile.close();
|
|
||||||
}
|
|
||||||
//write the log to the general file
|
|
||||||
logFile.open(LOGFILE, std::ios_base::app);
|
|
||||||
if (logFile.is_open()) {
|
|
||||||
logFile << logString.c_str();
|
|
||||||
logFile.close();
|
|
||||||
}
|
|
||||||
}*/
|
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
@@ -24,12 +24,17 @@ void log(LOGLEVEL level, const std::string& message, Args&&... args) {
|
|||||||
localtime_s(&tm, &now);
|
localtime_s(&tm, &now);
|
||||||
int error = 0;
|
int error = 0;
|
||||||
std::ostringstream logStream;
|
std::ostringstream logStream;
|
||||||
|
std::ostringstream to_srv;
|
||||||
|
to_srv << std::put_time(&tm, "%Y-%m-%d %H:%M:%S") << ";" << prefix << ";" << message;
|
||||||
logStream << std::put_time(&tm, "%Y-%m-%d %H:%M:%S") << " " << prefix << " " << message;
|
logStream << std::put_time(&tm, "%Y-%m-%d %H:%M:%S") << " " << prefix << " " << message;
|
||||||
if constexpr (sizeof...(args) > 0) {
|
if constexpr (sizeof...(args) > 0) {
|
||||||
((logStream << ' ' << std::forward<Args>(args)), ...);
|
((logStream << ' ' << std::forward<Args>(args)), ...);
|
||||||
|
((to_srv << ' ' << std::forward<Args>(args)), ...);
|
||||||
}
|
}
|
||||||
logStream << std::endl;
|
logStream << std::endl;
|
||||||
|
to_srv << std::endl;
|
||||||
std::string logString = logStream.str();
|
std::string logString = logStream.str();
|
||||||
|
std::string to_srv_string = to_srv.str();
|
||||||
printf("info from logger: %s", logString.c_str());
|
printf("info from logger: %s", logString.c_str());
|
||||||
// Open the file based on log level
|
// Open the file based on log level
|
||||||
FILE* fp;
|
FILE* fp;
|
||||||
@@ -86,6 +91,10 @@ void log(LOGLEVEL level, const std::string& message, Args&&... args) {
|
|||||||
fprintf_s(fp, "%s", logString.c_str());
|
fprintf_s(fp, "%s", logString.c_str());
|
||||||
fclose(fp);
|
fclose(fp);
|
||||||
}
|
}
|
||||||
|
if (fopen_s(&fp, SRV_LOGFILE, "a") == 0) {
|
||||||
|
fprintf_s(fp, "%s", to_srv_string.c_str());
|
||||||
|
fclose(fp);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -12,6 +12,7 @@
|
|||||||
#include "well_known.h"
|
#include "well_known.h"
|
||||||
#include "log.h"
|
#include "log.h"
|
||||||
#include "virus_ctrl.h"
|
#include "virus_ctrl.h"
|
||||||
|
#include "app_ctrl.h"
|
||||||
#ifndef SCAN_CPP
|
#ifndef SCAN_CPP
|
||||||
#define SCAN_CPP
|
#define SCAN_CPP
|
||||||
std::unordered_map<std::string, HANDLE> fileHandles;
|
std::unordered_map<std::string, HANDLE> fileHandles;
|
||||||
@@ -121,7 +122,7 @@ bool file_exists(const std::string& filePath) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
//this is the main function to scan folders. it will then start multuiple threads based on the number of cores / settings
|
//this is the main function to scan folders. it will then start multuiple threads based on the number of cores / settings
|
||||||
void scan_folder_recursive(const std::string& directory) {
|
void scan_folder(const std::string& directory) {
|
||||||
std::string search_path = directory + "\\*.*";
|
std::string search_path = directory + "\\*.*";
|
||||||
WIN32_FIND_DATA find_file_data;
|
WIN32_FIND_DATA find_file_data;
|
||||||
HANDLE hFind = FindFirstFile(search_path.c_str(), &find_file_data);
|
HANDLE hFind = FindFirstFile(search_path.c_str(), &find_file_data);
|
||||||
@@ -140,7 +141,7 @@ void scan_folder_recursive(const std::string& directory) {
|
|||||||
const std::string full_path = directory + "\\" + find_file_data.cFileName;
|
const std::string full_path = directory + "\\" + find_file_data.cFileName;
|
||||||
if (find_file_data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) {
|
if (find_file_data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) {
|
||||||
// If it's a directory, recurse into it
|
// If it's a directory, recurse into it
|
||||||
scan_folder_recursive(full_path);
|
scan_folder(full_path);
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
//action scanfile_t will start the trheads for scanning the hashes
|
//action scanfile_t will start the trheads for scanning the hashes
|
||||||
@@ -151,7 +152,7 @@ void scan_folder_recursive(const std::string& directory) {
|
|||||||
Sleep(10);
|
Sleep(10);
|
||||||
}
|
}
|
||||||
num_threads++;
|
num_threads++;
|
||||||
std::thread scan_thread(action_scanfile_t, full_path);
|
std::thread scan_thread(scan_file_t, full_path);
|
||||||
scan_thread.detach();
|
scan_thread.detach();
|
||||||
|
|
||||||
cnt++;
|
cnt++;
|
||||||
@@ -169,10 +170,12 @@ void scan_folder_recursive(const std::string& directory) {
|
|||||||
|
|
||||||
//for singlethreaded scans
|
//for singlethreaded scans
|
||||||
void action_scanfile(const char*filepath) {
|
void action_scanfile(const char*filepath) {
|
||||||
|
thread_init();
|
||||||
char* db_path = new char[300];
|
char* db_path = new char[300];
|
||||||
|
|
||||||
//log(LOGLEVEL::INFO, "[action_scanfile_t()]: Scanning file: ", filepath);
|
//log(LOGLEVEL::INFO, "[action_scanfile_t()]: Scanning file: ", filepath);
|
||||||
if (strlen(filepath) == 0 or strcmp("", filepath) == 0 or file_exists(filepath) == false) {
|
if (strlen(filepath) == 0 or strcmp("", filepath) == 0 or file_exists(filepath) == false) {
|
||||||
|
thread_shutdown();
|
||||||
return; //no filepath given or file not accessible
|
return; //no filepath given or file not accessible
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
@@ -184,35 +187,15 @@ void action_scanfile(const char*filepath) {
|
|||||||
delete[] hash;
|
delete[] hash;
|
||||||
}
|
}
|
||||||
delete[] db_path;
|
delete[] db_path;
|
||||||
|
thread_shutdown();
|
||||||
|
}
|
||||||
|
void action_scanfolder(const char* folderpath) {
|
||||||
|
thread_init();
|
||||||
|
scan_folder(folderpath);
|
||||||
|
thread_shutdown();
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
void scan_file_t(const std::string& filepath_) {
|
||||||
void action_scanfile_t( const char*filepath) {
|
|
||||||
char* db_path = new char[300];
|
|
||||||
int max_threads = std::thread::hardware_concurrency();
|
|
||||||
//log(LOGLEVEL::INFO, "[action_scanfile_t()]: Scanning file: ", filepath);
|
|
||||||
if (strlen(filepath) == 0 or strcmp("", filepath) == 0 or file_exists(filepath) == false) {
|
|
||||||
return; //no filepath given or file not accessible
|
|
||||||
}
|
|
||||||
else {
|
|
||||||
char* hash = new char[300];
|
|
||||||
hash[0] = '\0';
|
|
||||||
hash = md5_file_t(filepath);
|
|
||||||
sprintf_s(db_path, 295, "%s\\%c%c.jdbf", DB_DIR, hash[0], hash[1]);
|
|
||||||
while (num_threads >= max_threads) {
|
|
||||||
Sleep(10);
|
|
||||||
}
|
|
||||||
num_threads++;
|
|
||||||
std::thread search_thread(search_hash,db_path, hash, filepath);
|
|
||||||
search_thread.detach();
|
|
||||||
|
|
||||||
std::this_thread::sleep_for(std::chrono::microseconds(50));
|
|
||||||
delete[] hash;
|
|
||||||
}
|
|
||||||
delete[] db_path;
|
|
||||||
}*/
|
|
||||||
void action_scanfile_t(const std::string& filepath_) {
|
|
||||||
thread_local const std::string filepath (filepath_);
|
thread_local const std::string filepath (filepath_);
|
||||||
thread_local char* db_path = new char[300];
|
thread_local char* db_path = new char[300];
|
||||||
thread_local char*hash = new char[300];
|
thread_local char*hash = new char[300];
|
||||||
|
|||||||
@@ -10,9 +10,10 @@
|
|||||||
#include <future>
|
#include <future>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
#include <algorithm>
|
#include <algorithm>
|
||||||
void scan_folder_recursive(const std::string& directory);
|
void scan_folder(const std::string& directory);
|
||||||
void action_scanfile(const char* filepath);
|
void action_scanfile(const char* filepath);
|
||||||
|
void action_scanfolder(const char* folderpath);
|
||||||
//void action_scanfile_t(const char* filepath);
|
//void action_scanfile_t(const char* filepath);
|
||||||
void action_scanfile_t(const std::string& filepath_);
|
void scan_file_t(const std::string& filepath_);
|
||||||
void initialize(const std::string& folderPath);
|
void initialize(const std::string& folderPath);
|
||||||
void cleanup();
|
void cleanup();
|
||||||
@@ -4,6 +4,7 @@
|
|||||||
#include "log.h"
|
#include "log.h"
|
||||||
#include "well_known.h"
|
#include "well_known.h"
|
||||||
#include "scan.h"
|
#include "scan.h"
|
||||||
|
#include "app_ctrl.h"
|
||||||
void split(char* input,char*delimiter, char* out1, char* out2) {
|
void split(char* input,char*delimiter, char* out1, char* out2) {
|
||||||
//split a string at the delimiter. the delimiter only occurs once. so the first part is out1 and the second part is out2
|
//split a string at the delimiter. the delimiter only occurs once. so the first part is out1 and the second part is out2
|
||||||
int i = 0;
|
int i = 0;
|
||||||
@@ -28,22 +29,26 @@ void split(char* input,char*delimiter, char* out1, char* out2) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
int start_thread(const char*command) {
|
int start_thread(const char* command) {
|
||||||
char*out2= new char[100]; //for the command
|
if (can_run_thread()) {
|
||||||
char*out1 = new char[300]; //for the arguments
|
char* out2 = new char[100]; //for the command
|
||||||
split((char*)command, (char*)";", (char*)out1, (char*)out2);
|
char* out1 = new char[300]; //for the arguments
|
||||||
|
split((char*)command, (char*)";", (char*)out1, (char*)out2);
|
||||||
|
|
||||||
//printf("out1: %s\n", out1);
|
//printf("out1: %s\n", out1);
|
||||||
//printf("out2: %s\n", out2);
|
//printf("out2: %s\n", out2);
|
||||||
//determine what should be executed
|
//determine what should be executed
|
||||||
if(strcmp(out1,"scanfile")==0){
|
if (strcmp(out1, "scanfile") == 0) {
|
||||||
//start a new thread with the scanfile function
|
//start a new thread with the scanfile function
|
||||||
std::thread t1(action_scanfile, out2);
|
std::thread t1(action_scanfile, out2);
|
||||||
|
}
|
||||||
|
else if (strcmp(out1, "scanfolder") == 0) {
|
||||||
|
//start a new thread with the scanfolder function
|
||||||
|
std::thread t1(action_scanfolder, out2);
|
||||||
|
}
|
||||||
|
delete[] out1;
|
||||||
|
delete[] out2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
delete[] out1;
|
|
||||||
delete[] out2;
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
58
src/client_backend/update.cpp
Normal file
58
src/client_backend/update.cpp
Normal file
@@ -0,0 +1,58 @@
|
|||||||
|
#ifndef UPDATE_CPP
|
||||||
|
#define UPDATE_CPP
|
||||||
|
#include "update.h"
|
||||||
|
#include "log.h"
|
||||||
|
#include "connect.h"
|
||||||
|
#include "settings.h"
|
||||||
|
|
||||||
|
|
||||||
|
int update_db(const std::string& folder_path) {
|
||||||
|
//download the databases from the server
|
||||||
|
for (char firstChar = '0'; firstChar <= 'f'; ++firstChar) {
|
||||||
|
for (char secondChar = '0'; secondChar <= 'f'; ++secondChar) {
|
||||||
|
// Ensure that the characters are valid hexadecimal digits
|
||||||
|
if (!std::isxdigit(firstChar) || !std::isxdigit(secondChar) or std::isupper(firstChar) or std::isupper(secondChar)) {
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create the filename based on the naming convention
|
||||||
|
std::string file_path = folder_path + "\\" + firstChar + secondChar + ".jdbf";
|
||||||
|
std::string file_name = firstChar + secondChar + ".jdbf";
|
||||||
|
//create the strings to download the files
|
||||||
|
char*url=new char[300];
|
||||||
|
char*output_path=new char[300];
|
||||||
|
get_setting("server:server_url", url);
|
||||||
|
strcat_s(url, 295,"/database/");
|
||||||
|
strcat_s(url, 295,file_name.c_str() );
|
||||||
|
strcpy_s(output_path, 295, file_path.c_str());
|
||||||
|
|
||||||
|
int res = download_file_from_srv(url, output_path);
|
||||||
|
if (res != 0) {
|
||||||
|
log(LOGLEVEL::ERR, "[update_db()]: Error downloading database file from server", url);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
delete[] url;
|
||||||
|
delete[] output_path;
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
int update_settings(const std::string& folder_path) {
|
||||||
|
//create the strings to download the files
|
||||||
|
char* url = new char[300];
|
||||||
|
get_setting("server:server_url", url);
|
||||||
|
strcat_s(url, 295, "/database/");
|
||||||
|
strcat_s(url, 295, "settings_db.txt");
|
||||||
|
int res = download_file_from_srv(url, SETTINGS_DB);
|
||||||
|
if (res != 0) {
|
||||||
|
log(LOGLEVEL::ERR, "[update_db()]: Error downloading settings database file from server", url);
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
delete[] url;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
7
src/client_backend/update.h
Normal file
7
src/client_backend/update.h
Normal file
@@ -0,0 +1,7 @@
|
|||||||
|
#pragma once
|
||||||
|
#ifndef UPDATE_H
|
||||||
|
#define UPDATE_H
|
||||||
|
#include <curl/curl.h>
|
||||||
|
int update_db(const std::string& folder_path);
|
||||||
|
int update_settings(const std::string& folder_path);
|
||||||
|
#endif
|
||||||
@@ -16,6 +16,7 @@
|
|||||||
#define ERRORFILE "C:\\Program Files\\cyberhex\\secure\\log\\error.txt"
|
#define ERRORFILE "C:\\Program Files\\cyberhex\\secure\\log\\error.txt"
|
||||||
#define VIRUSFILE "C:\\Program Files\\cyberhex\\secure\\log\\virus.txt"
|
#define VIRUSFILE "C:\\Program Files\\cyberhex\\secure\\log\\virus.txt"
|
||||||
#define RISKFILE "C:\\Program Files\\cyberhex\\secure\\log\\risk.txt"
|
#define RISKFILE "C:\\Program Files\\cyberhex\\secure\\log\\risk.txt"
|
||||||
|
#define SRV_LOGFILE "C:\\Program Files\\cyberhex\\secure\\log\\srv_log.txt"
|
||||||
|
|
||||||
|
|
||||||
#define FOLDER_DATABASE_DIR "C:\\Program Files\\cyberhex\\secure\\database\\folder"
|
#define FOLDER_DATABASE_DIR "C:\\Program Files\\cyberhex\\secure\\database\\folder"
|
||||||
|
|||||||
Binary file not shown.
@@ -1,8 +1,3 @@
|
|||||||
Quellen werden auf Modulabhängigkeiten überprüft...
|
Quellen werden auf Modulabhängigkeiten überprüft...
|
||||||
client_backend.cpp
|
update.cpp
|
||||||
C:\Users\janis\Documents\Projekte_mit_c\ma\ma\src\client_backend\client_backend.cpp(70,24): warning C4244: "Argument": Konvertierung von "_Rep" in "DWORD", möglicher Datenverlust
|
|
||||||
C:\Users\janis\Documents\Projekte_mit_c\ma\ma\src\client_backend\client_backend.cpp(70,24): warning C4244: with
|
|
||||||
C:\Users\janis\Documents\Projekte_mit_c\ma\ma\src\client_backend\client_backend.cpp(70,24): warning C4244: [
|
|
||||||
C:\Users\janis\Documents\Projekte_mit_c\ma\ma\src\client_backend\client_backend.cpp(70,24): warning C4244: _Rep=__int64
|
|
||||||
C:\Users\janis\Documents\Projekte_mit_c\ma\ma\src\client_backend\client_backend.cpp(70,24): warning C4244: ]
|
|
||||||
client_backend.vcxproj -> C:\Users\janis\Documents\Projekte_mit_c\ma\ma\src\client_backend\x64\Debug\client_backend.exe
|
client_backend.vcxproj -> C:\Users\janis\Documents\Projekte_mit_c\ma\ma\src\client_backend\x64\Debug\client_backend.exe
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -12,4 +12,5 @@ C:\Users\janis\Documents\Projekte_mit_c\ma\ma\src\client_backend\queue _ctrl.cpp
|
|||||||
C:\Users\janis\Documents\Projekte_mit_c\ma\ma\src\client_backend\scan.cpp;C:\Users\janis\Documents\Projekte_mit_c\ma\ma\src\client_backend\x64\Debug\scan.obj
|
C:\Users\janis\Documents\Projekte_mit_c\ma\ma\src\client_backend\scan.cpp;C:\Users\janis\Documents\Projekte_mit_c\ma\ma\src\client_backend\x64\Debug\scan.obj
|
||||||
C:\Users\janis\Documents\Projekte_mit_c\ma\ma\src\client_backend\settings.cpp;C:\Users\janis\Documents\Projekte_mit_c\ma\ma\src\client_backend\x64\Debug\settings.obj
|
C:\Users\janis\Documents\Projekte_mit_c\ma\ma\src\client_backend\settings.cpp;C:\Users\janis\Documents\Projekte_mit_c\ma\ma\src\client_backend\x64\Debug\settings.obj
|
||||||
C:\Users\janis\Documents\Projekte_mit_c\ma\ma\src\client_backend\thread_ctrl.cpp;C:\Users\janis\Documents\Projekte_mit_c\ma\ma\src\client_backend\x64\Debug\thread_ctrl.obj
|
C:\Users\janis\Documents\Projekte_mit_c\ma\ma\src\client_backend\thread_ctrl.cpp;C:\Users\janis\Documents\Projekte_mit_c\ma\ma\src\client_backend\x64\Debug\thread_ctrl.obj
|
||||||
|
C:\Users\janis\Documents\Projekte_mit_c\ma\ma\src\client_backend\update.cpp;C:\Users\janis\Documents\Projekte_mit_c\ma\ma\src\client_backend\x64\Debug\update.obj
|
||||||
C:\Users\janis\Documents\Projekte_mit_c\ma\ma\src\client_backend\virus_ctrl.cpp;C:\Users\janis\Documents\Projekte_mit_c\ma\ma\src\client_backend\x64\Debug\virus_ctrl.obj
|
C:\Users\janis\Documents\Projekte_mit_c\ma\ma\src\client_backend\virus_ctrl.cpp;C:\Users\janis\Documents\Projekte_mit_c\ma\ma\src\client_backend\x64\Debug\virus_ctrl.obj
|
||||||
|
|||||||
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Reference in New Issue
Block a user