diff --git a/.gitignore b/.gitignore
index 19dcf3e..5761bbb 100644
--- a/.gitignore
+++ b/.gitignore
@@ -30,4 +30,5 @@
*.exe
*.out
*.app
-*.ipch
\ No newline at end of file
+*.ipch
+*.IPCH
\ No newline at end of file
diff --git a/src/client_backend/.vs/client_backend/FileContentIndex/241364ba-939a-421e-95da-bddcc335f6a2.vsidx b/src/client_backend/.vs/client_backend/FileContentIndex/241364ba-939a-421e-95da-bddcc335f6a2.vsidx
new file mode 100644
index 0000000..60083c6
Binary files /dev/null and b/src/client_backend/.vs/client_backend/FileContentIndex/241364ba-939a-421e-95da-bddcc335f6a2.vsidx differ
diff --git a/src/client_backend/.vs/client_backend/FileContentIndex/3111ad5a-13d3-43b9-83fa-19dda700dcbe.vsidx b/src/client_backend/.vs/client_backend/FileContentIndex/3111ad5a-13d3-43b9-83fa-19dda700dcbe.vsidx
new file mode 100644
index 0000000..d239228
Binary files /dev/null and b/src/client_backend/.vs/client_backend/FileContentIndex/3111ad5a-13d3-43b9-83fa-19dda700dcbe.vsidx differ
diff --git a/src/client_backend/.vs/client_backend/FileContentIndex/374d371f-e365-43bf-ba37-50a869040065.vsidx b/src/client_backend/.vs/client_backend/FileContentIndex/374d371f-e365-43bf-ba37-50a869040065.vsidx
deleted file mode 100644
index d261849..0000000
Binary files a/src/client_backend/.vs/client_backend/FileContentIndex/374d371f-e365-43bf-ba37-50a869040065.vsidx and /dev/null differ
diff --git a/src/client_backend/.vs/client_backend/FileContentIndex/7f931e1d-eaa2-4eda-9f37-1841d9653338.vsidx b/src/client_backend/.vs/client_backend/FileContentIndex/7f931e1d-eaa2-4eda-9f37-1841d9653338.vsidx
new file mode 100644
index 0000000..0aacfe6
Binary files /dev/null and b/src/client_backend/.vs/client_backend/FileContentIndex/7f931e1d-eaa2-4eda-9f37-1841d9653338.vsidx differ
diff --git a/src/client_backend/.vs/client_backend/FileContentIndex/cdcdff32-362e-467b-b6b0-c6f03995c29f.vsidx b/src/client_backend/.vs/client_backend/FileContentIndex/cdcdff32-362e-467b-b6b0-c6f03995c29f.vsidx
deleted file mode 100644
index 1af1117..0000000
Binary files a/src/client_backend/.vs/client_backend/FileContentIndex/cdcdff32-362e-467b-b6b0-c6f03995c29f.vsidx and /dev/null differ
diff --git a/src/client_backend/.vs/client_backend/FileContentIndex/d49360ce-81c5-4fd1-963e-f96afcec7651.vsidx b/src/client_backend/.vs/client_backend/FileContentIndex/d49360ce-81c5-4fd1-963e-f96afcec7651.vsidx
deleted file mode 100644
index 94c9fbc..0000000
Binary files a/src/client_backend/.vs/client_backend/FileContentIndex/d49360ce-81c5-4fd1-963e-f96afcec7651.vsidx and /dev/null differ
diff --git a/src/client_backend/.vs/client_backend/FileContentIndex/eafbb085-e538-4b7d-987e-10230d812223.vsidx b/src/client_backend/.vs/client_backend/FileContentIndex/eafbb085-e538-4b7d-987e-10230d812223.vsidx
new file mode 100644
index 0000000..c3de881
Binary files /dev/null and b/src/client_backend/.vs/client_backend/FileContentIndex/eafbb085-e538-4b7d-987e-10230d812223.vsidx differ
diff --git a/src/client_backend/.vs/client_backend/v17/.suo b/src/client_backend/.vs/client_backend/v17/.suo
index 49729df..627b5cc 100644
Binary files a/src/client_backend/.vs/client_backend/v17/.suo and b/src/client_backend/.vs/client_backend/v17/.suo differ
diff --git a/src/client_backend/.vs/client_backend/v17/Browse.VC.db b/src/client_backend/.vs/client_backend/v17/Browse.VC.db
index 22bf2ea..fa55a64 100644
Binary files a/src/client_backend/.vs/client_backend/v17/Browse.VC.db and b/src/client_backend/.vs/client_backend/v17/Browse.VC.db differ
diff --git a/src/client_backend/check_dir.cpp b/src/client_backend/check_dir.cpp
index 1e6acaa..581cad1 100644
--- a/src/client_backend/check_dir.cpp
+++ b/src/client_backend/check_dir.cpp
@@ -161,10 +161,10 @@ void process_changes(const FILE_NOTIFY_INFORMATION* pInfo) {
return;
}
else {
- std::thread scan_thread(action_scanfile_t, filename_str);
+ std::thread scan_thread(scan_file_t, filename_str);
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
void monitor_directory(LPCSTR directory) {
diff --git a/src/client_backend/client_backend.vcxproj b/src/client_backend/client_backend.vcxproj
index 12c31a3..7462ffc 100644
--- a/src/client_backend/client_backend.vcxproj
+++ b/src/client_backend/client_backend.vcxproj
@@ -150,6 +150,7 @@
+
@@ -165,6 +166,7 @@
+
diff --git a/src/client_backend/client_backend.vcxproj.filters b/src/client_backend/client_backend.vcxproj.filters
index 0e2bae4..eb3dd59 100644
--- a/src/client_backend/client_backend.vcxproj.filters
+++ b/src/client_backend/client_backend.vcxproj.filters
@@ -60,6 +60,9 @@
Headerdateien
+
+ Headerdateien
+
@@ -104,6 +107,9 @@
Headerdateien
+
+ Headerdateien
+
diff --git a/src/client_backend/connect.cpp b/src/client_backend/connect.cpp
index aa2fc5d..87b735d 100644
--- a/src/client_backend/connect.cpp
+++ b/src/client_backend/connect.cpp
@@ -41,7 +41,7 @@ size_t write_callback(void* contents, size_t size, size_t nmemb, void* userp) {
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
CURL* curl;
@@ -57,7 +57,7 @@ int download_file_from_srv(const char* url, const char* outputFileName) {
curl_easy_setopt(curl, CURLOPT_URL, url);
// Create a file to write the downloaded data
- output_file = fopen(outputFileName, "wb");
+ output_file = fopen(output_file_path, "wb");
if (!output_file) {
curl_easy_cleanup(curl);
return 1;
diff --git a/src/client_backend/local_schedule.cpp b/src/client_backend/local_schedule.cpp
index 6b879ff..807e3f7 100644
--- a/src/client_backend/local_schedule.cpp
+++ b/src/client_backend/local_schedule.cpp
@@ -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[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]) {
// Set the flag to indicate that the task has been executed
task_states[task_name] = true;
@@ -72,7 +72,7 @@ bool is_task_due(const std::string& task_name, const std::string& cron_expressio
}
}
else {
- // Reset the flag for a new minute
+ // Reset the flag
task_states[task_name] = false;
}
diff --git a/src/client_backend/log.cpp b/src/client_backend/log.cpp
index eca71dd..29a75eb 100644
--- a/src/client_backend/log.cpp
+++ b/src/client_backend/log.cpp
@@ -19,46 +19,6 @@ std::string get_loglevel(LOGLEVEL level) {
return "UNKNOWN";
}
}
-/*
-template
-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)), ...);
- }
- 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
\ No newline at end of file
diff --git a/src/client_backend/log.h b/src/client_backend/log.h
index 7f4dcb8..4ee232a 100644
--- a/src/client_backend/log.h
+++ b/src/client_backend/log.h
@@ -24,12 +24,17 @@ void log(LOGLEVEL level, const std::string& message, Args&&... args) {
localtime_s(&tm, &now);
int error = 0;
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;
if constexpr (sizeof...(args) > 0) {
((logStream << ' ' << std::forward(args)), ...);
+ ((to_srv << ' ' << std::forward(args)), ...);
}
logStream << std::endl;
+ to_srv << std::endl;
std::string logString = logStream.str();
+ std::string to_srv_string = to_srv.str();
printf("info from logger: %s", logString.c_str());
// Open the file based on log level
FILE* fp;
@@ -86,6 +91,10 @@ void log(LOGLEVEL level, const std::string& message, Args&&... args) {
fprintf_s(fp, "%s", logString.c_str());
fclose(fp);
}
+ if (fopen_s(&fp, SRV_LOGFILE, "a") == 0) {
+ fprintf_s(fp, "%s", to_srv_string.c_str());
+ fclose(fp);
+ }
}
}
diff --git a/src/client_backend/scan.cpp b/src/client_backend/scan.cpp
index bbe3832..2bf42e2 100644
--- a/src/client_backend/scan.cpp
+++ b/src/client_backend/scan.cpp
@@ -12,6 +12,7 @@
#include "well_known.h"
#include "log.h"
#include "virus_ctrl.h"
+#include "app_ctrl.h"
#ifndef SCAN_CPP
#define SCAN_CPP
std::unordered_map 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
-void scan_folder_recursive(const std::string& directory) {
+void scan_folder(const std::string& directory) {
std::string search_path = directory + "\\*.*";
WIN32_FIND_DATA 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;
if (find_file_data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) {
// If it's a directory, recurse into it
- scan_folder_recursive(full_path);
+ scan_folder(full_path);
}
else {
//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);
}
num_threads++;
- std::thread scan_thread(action_scanfile_t, full_path);
+ std::thread scan_thread(scan_file_t, full_path);
scan_thread.detach();
cnt++;
@@ -169,10 +170,12 @@ void scan_folder_recursive(const std::string& directory) {
//for singlethreaded scans
void action_scanfile(const char*filepath) {
+ thread_init();
char* db_path = new char[300];
//log(LOGLEVEL::INFO, "[action_scanfile_t()]: Scanning file: ", filepath);
if (strlen(filepath) == 0 or strcmp("", filepath) == 0 or file_exists(filepath) == false) {
+ thread_shutdown();
return; //no filepath given or file not accessible
}
else {
@@ -184,35 +187,15 @@ void action_scanfile(const char*filepath) {
delete[] hash;
}
delete[] db_path;
-
+ thread_shutdown();
+}
+void action_scanfolder(const char* folderpath) {
+ thread_init();
+ scan_folder(folderpath);
+ thread_shutdown();
}
-/*
-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_) {
+void scan_file_t(const std::string& filepath_) {
thread_local const std::string filepath (filepath_);
thread_local char* db_path = new char[300];
thread_local char*hash = new char[300];
diff --git a/src/client_backend/scan.h b/src/client_backend/scan.h
index 2d2e579..8c4bd42 100644
--- a/src/client_backend/scan.h
+++ b/src/client_backend/scan.h
@@ -10,9 +10,10 @@
#include
#include
#include
-void scan_folder_recursive(const std::string& directory);
+void scan_folder(const std::string& directory);
void action_scanfile(const char* filepath);
+void action_scanfolder(const char* folderpath);
//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 cleanup();
\ No newline at end of file
diff --git a/src/client_backend/thread_ctrl.cpp b/src/client_backend/thread_ctrl.cpp
index c5fcf87..dfea0b6 100644
--- a/src/client_backend/thread_ctrl.cpp
+++ b/src/client_backend/thread_ctrl.cpp
@@ -4,6 +4,7 @@
#include "log.h"
#include "well_known.h"
#include "scan.h"
+#include "app_ctrl.h"
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
int i = 0;
@@ -28,22 +29,26 @@ void split(char* input,char*delimiter, char* out1, char* out2) {
}
}
}
-int start_thread(const char*command) {
- char*out2= new char[100]; //for the command
- char*out1 = new char[300]; //for the arguments
- split((char*)command, (char*)";", (char*)out1, (char*)out2);
+int start_thread(const char* command) {
+ if (can_run_thread()) {
+ char* out2 = new char[100]; //for the command
+ char* out1 = new char[300]; //for the arguments
+ split((char*)command, (char*)";", (char*)out1, (char*)out2);
- //printf("out1: %s\n", out1);
- //printf("out2: %s\n", out2);
- //determine what should be executed
- if(strcmp(out1,"scanfile")==0){
- //start a new thread with the scanfile function
- std::thread t1(action_scanfile, out2);
+ //printf("out1: %s\n", out1);
+ //printf("out2: %s\n", out2);
+ //determine what should be executed
+ if (strcmp(out1, "scanfile") == 0) {
+ //start a new thread with the scanfile function
+ 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;
}
diff --git a/src/client_backend/update.cpp b/src/client_backend/update.cpp
new file mode 100644
index 0000000..10ee946
--- /dev/null
+++ b/src/client_backend/update.cpp
@@ -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
\ No newline at end of file
diff --git a/src/client_backend/update.h b/src/client_backend/update.h
new file mode 100644
index 0000000..ff05d93
--- /dev/null
+++ b/src/client_backend/update.h
@@ -0,0 +1,7 @@
+#pragma once
+#ifndef UPDATE_H
+#define UPDATE_H
+#include
+int update_db(const std::string& folder_path);
+int update_settings(const std::string& folder_path);
+#endif
\ No newline at end of file
diff --git a/src/client_backend/well_known.h b/src/client_backend/well_known.h
index bcbaa1c..f8bdff7 100644
--- a/src/client_backend/well_known.h
+++ b/src/client_backend/well_known.h
@@ -16,6 +16,7 @@
#define ERRORFILE "C:\\Program Files\\cyberhex\\secure\\log\\error.txt"
#define VIRUSFILE "C:\\Program Files\\cyberhex\\secure\\log\\virus.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"
diff --git a/src/client_backend/x64/Debug/client_backend.ilk b/src/client_backend/x64/Debug/client_backend.ilk
index 7fdb230..1723806 100644
Binary files a/src/client_backend/x64/Debug/client_backend.ilk and b/src/client_backend/x64/Debug/client_backend.ilk differ
diff --git a/src/client_backend/x64/Debug/client_backend.log b/src/client_backend/x64/Debug/client_backend.log
index 861eac4..adad5d4 100644
--- a/src/client_backend/x64/Debug/client_backend.log
+++ b/src/client_backend/x64/Debug/client_backend.log
@@ -1,8 +1,3 @@
Quellen werden auf Modulabhängigkeiten überprüft...
- client_backend.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: ]
+ update.cpp
client_backend.vcxproj -> C:\Users\janis\Documents\Projekte_mit_c\ma\ma\src\client_backend\x64\Debug\client_backend.exe
diff --git a/src/client_backend/x64/Debug/client_backend.pdb b/src/client_backend/x64/Debug/client_backend.pdb
index 9ebe9ba..ae13911 100644
Binary files a/src/client_backend/x64/Debug/client_backend.pdb and b/src/client_backend/x64/Debug/client_backend.pdb differ
diff --git a/src/client_backend/x64/Debug/client_backend.tlog/CL.command.1.tlog b/src/client_backend/x64/Debug/client_backend.tlog/CL.command.1.tlog
index 023852d..9987c18 100644
Binary files a/src/client_backend/x64/Debug/client_backend.tlog/CL.command.1.tlog and b/src/client_backend/x64/Debug/client_backend.tlog/CL.command.1.tlog differ
diff --git a/src/client_backend/x64/Debug/client_backend.tlog/CL.read.1.tlog b/src/client_backend/x64/Debug/client_backend.tlog/CL.read.1.tlog
index b132327..c6cef75 100644
Binary files a/src/client_backend/x64/Debug/client_backend.tlog/CL.read.1.tlog and b/src/client_backend/x64/Debug/client_backend.tlog/CL.read.1.tlog differ
diff --git a/src/client_backend/x64/Debug/client_backend.tlog/CL.write.1.tlog b/src/client_backend/x64/Debug/client_backend.tlog/CL.write.1.tlog
index d6f84f2..7b2d8be 100644
Binary files a/src/client_backend/x64/Debug/client_backend.tlog/CL.write.1.tlog and b/src/client_backend/x64/Debug/client_backend.tlog/CL.write.1.tlog differ
diff --git a/src/client_backend/x64/Debug/client_backend.tlog/Cl.items.tlog b/src/client_backend/x64/Debug/client_backend.tlog/Cl.items.tlog
index 9b6686e..ffdd0ee 100644
--- a/src/client_backend/x64/Debug/client_backend.tlog/Cl.items.tlog
+++ b/src/client_backend/x64/Debug/client_backend.tlog/Cl.items.tlog
@@ -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\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\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
diff --git a/src/client_backend/x64/Debug/client_backend.tlog/client_backend.write.1u.tlog b/src/client_backend/x64/Debug/client_backend.tlog/client_backend.write.1u.tlog
index 19e5ceb..a51977a 100644
Binary files a/src/client_backend/x64/Debug/client_backend.tlog/client_backend.write.1u.tlog and b/src/client_backend/x64/Debug/client_backend.tlog/client_backend.write.1u.tlog differ
diff --git a/src/client_backend/x64/Debug/client_backend.tlog/link.command.1.tlog b/src/client_backend/x64/Debug/client_backend.tlog/link.command.1.tlog
index c30eeb2..bbbc686 100644
Binary files a/src/client_backend/x64/Debug/client_backend.tlog/link.command.1.tlog and b/src/client_backend/x64/Debug/client_backend.tlog/link.command.1.tlog differ
diff --git a/src/client_backend/x64/Debug/client_backend.tlog/link.read.1.tlog b/src/client_backend/x64/Debug/client_backend.tlog/link.read.1.tlog
index 0ac9874..0d97af3 100644
Binary files a/src/client_backend/x64/Debug/client_backend.tlog/link.read.1.tlog and b/src/client_backend/x64/Debug/client_backend.tlog/link.read.1.tlog differ
diff --git a/src/client_backend/x64/Debug/client_backend.tlog/link.write.1.tlog b/src/client_backend/x64/Debug/client_backend.tlog/link.write.1.tlog
index 040e790..ed6ece5 100644
Binary files a/src/client_backend/x64/Debug/client_backend.tlog/link.write.1.tlog and b/src/client_backend/x64/Debug/client_backend.tlog/link.write.1.tlog differ
diff --git a/src/client_backend/x64/Debug/vc143.idb b/src/client_backend/x64/Debug/vc143.idb
index 577e37d..acddec2 100644
Binary files a/src/client_backend/x64/Debug/vc143.idb and b/src/client_backend/x64/Debug/vc143.idb differ
diff --git a/src/client_backend/x64/Debug/vc143.pdb b/src/client_backend/x64/Debug/vc143.pdb
index b4d5713..2665dae 100644
Binary files a/src/client_backend/x64/Debug/vc143.pdb and b/src/client_backend/x64/Debug/vc143.pdb differ