diff --git a/src/client_backend/.vs/client_backend/v17/.suo b/src/client_backend/.vs/client_backend/v17/.suo index 64e9f3e..939cad4 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/DocumentLayout.json b/src/client_backend/.vs/client_backend/v17/DocumentLayout.json index a31d6a9..bfd25d2 100644 --- a/src/client_backend/.vs/client_backend/v17/DocumentLayout.json +++ b/src/client_backend/.vs/client_backend/v17/DocumentLayout.json @@ -2,14 +2,26 @@ "Version": 1, "WorkspaceRootPath": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\", "Documents": [ - { - "AbsoluteMoniker": "D:0:0:{56E65283-AAC9-43F6-9613-72BE8D648AC4}|client_backend.vcxproj|C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\check_dir.cpp||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}", - "RelativeMoniker": "D:0:0:{56E65283-AAC9-43F6-9613-72BE8D648AC4}|client_backend.vcxproj|solutionrelative:check_dir.cpp||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}" - }, { "AbsoluteMoniker": "D:0:0:{56E65283-AAC9-43F6-9613-72BE8D648AC4}|client_backend.vcxproj|C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\deepscan.cpp||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}", "RelativeMoniker": "D:0:0:{56E65283-AAC9-43F6-9613-72BE8D648AC4}|client_backend.vcxproj|solutionrelative:deepscan.cpp||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}" }, + { + "AbsoluteMoniker": "D:0:0:{56E65283-AAC9-43F6-9613-72BE8D648AC4}|client_backend.vcxproj|C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\app_ctrl.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}", + "RelativeMoniker": "D:0:0:{56E65283-AAC9-43F6-9613-72BE8D648AC4}|client_backend.vcxproj|solutionrelative:app_ctrl.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}" + }, + { + "AbsoluteMoniker": "D:0:0:{56E65283-AAC9-43F6-9613-72BE8D648AC4}|client_backend.vcxproj|C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\app_ctrl.cpp||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}", + "RelativeMoniker": "D:0:0:{56E65283-AAC9-43F6-9613-72BE8D648AC4}|client_backend.vcxproj|solutionrelative:app_ctrl.cpp||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}" + }, + { + "AbsoluteMoniker": "D:0:0:{56E65283-AAC9-43F6-9613-72BE8D648AC4}|client_backend.vcxproj|C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\queue _ctrl.cpp||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}", + "RelativeMoniker": "D:0:0:{56E65283-AAC9-43F6-9613-72BE8D648AC4}|client_backend.vcxproj|solutionrelative:queue _ctrl.cpp||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}" + }, + { + "AbsoluteMoniker": "D:0:0:{56E65283-AAC9-43F6-9613-72BE8D648AC4}|client_backend.vcxproj|C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\check_dir.cpp||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}", + "RelativeMoniker": "D:0:0:{56E65283-AAC9-43F6-9613-72BE8D648AC4}|client_backend.vcxproj|solutionrelative:check_dir.cpp||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}" + }, { "AbsoluteMoniker": "D:0:0:{56E65283-AAC9-43F6-9613-72BE8D648AC4}|client_backend.vcxproj|C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\check_process.cpp||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}", "RelativeMoniker": "D:0:0:{56E65283-AAC9-43F6-9613-72BE8D648AC4}|client_backend.vcxproj|solutionrelative:check_process.cpp||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}" @@ -42,10 +54,6 @@ "AbsoluteMoniker": "D:0:0:{56E65283-AAC9-43F6-9613-72BE8D648AC4}|client_backend.vcxproj|C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\connect.cpp||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}", "RelativeMoniker": "D:0:0:{56E65283-AAC9-43F6-9613-72BE8D648AC4}|client_backend.vcxproj|solutionrelative:connect.cpp||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}" }, - { - "AbsoluteMoniker": "D:0:0:{56E65283-AAC9-43F6-9613-72BE8D648AC4}|client_backend.vcxproj|C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\queue _ctrl.cpp||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}", - "RelativeMoniker": "D:0:0:{56E65283-AAC9-43F6-9613-72BE8D648AC4}|client_backend.vcxproj|solutionrelative:queue _ctrl.cpp||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}" - }, { "AbsoluteMoniker": "D:0:0:{56E65283-AAC9-43F6-9613-72BE8D648AC4}|client_backend.vcxproj|C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\zip.cpp||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}", "RelativeMoniker": "D:0:0:{56E65283-AAC9-43F6-9613-72BE8D648AC4}|client_backend.vcxproj|solutionrelative:zip.cpp||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}" @@ -114,14 +122,6 @@ "AbsoluteMoniker": "D:0:0:{56E65283-AAC9-43F6-9613-72BE8D648AC4}|client_backend.vcxproj|C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\update.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}", "RelativeMoniker": "D:0:0:{56E65283-AAC9-43F6-9613-72BE8D648AC4}|client_backend.vcxproj|solutionrelative:update.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}" }, - { - "AbsoluteMoniker": "D:0:0:{56E65283-AAC9-43F6-9613-72BE8D648AC4}|client_backend.vcxproj|C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\app_ctrl.cpp||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}", - "RelativeMoniker": "D:0:0:{56E65283-AAC9-43F6-9613-72BE8D648AC4}|client_backend.vcxproj|solutionrelative:app_ctrl.cpp||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}" - }, - { - "AbsoluteMoniker": "D:0:0:{56E65283-AAC9-43F6-9613-72BE8D648AC4}|client_backend.vcxproj|C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\app_ctrl.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}", - "RelativeMoniker": "D:0:0:{56E65283-AAC9-43F6-9613-72BE8D648AC4}|client_backend.vcxproj|solutionrelative:app_ctrl.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}" - }, { "AbsoluteMoniker": "D:0:0:{56E65283-AAC9-43F6-9613-72BE8D648AC4}|client_backend.vcxproj|C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\connect.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}", "RelativeMoniker": "D:0:0:{56E65283-AAC9-43F6-9613-72BE8D648AC4}|client_backend.vcxproj|solutionrelative:connect.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}" @@ -138,11 +138,11 @@ "DocumentGroups": [ { "DockedWidth": 200, - "SelectedChildIndex": 26, + "SelectedChildIndex": 7, "Children": [ { "$type": "Document", - "DocumentIndex": 5, + "DocumentIndex": 8, "Title": "settings.cpp", "DocumentMoniker": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\settings.cpp", "RelativeDocumentMoniker": "settings.cpp", @@ -155,7 +155,7 @@ }, { "$type": "Document", - "DocumentIndex": 6, + "DocumentIndex": 9, "Title": "client_backend.cpp", "DocumentMoniker": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\client_backend.cpp", "RelativeDocumentMoniker": "client_backend.cpp", @@ -168,19 +168,7 @@ }, { "$type": "Document", - "DocumentIndex": 7, - "Title": "utils.cpp", - "DocumentMoniker": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\utils.cpp", - "RelativeDocumentMoniker": "utils.cpp", - "ToolTip": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\utils.cpp", - "RelativeToolTip": "utils.cpp", - "ViewState": "AQIAABYAAAAAAAAAAAAvwDAAAAAxAAAA", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000677|", - "WhenOpened": "2024-03-14T15:55:22.469Z" - }, - { - "$type": "Document", - "DocumentIndex": 18, + "DocumentIndex": 20, "Title": "log.h", "DocumentMoniker": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\log.h", "RelativeDocumentMoniker": "log.h", @@ -192,7 +180,7 @@ }, { "$type": "Document", - "DocumentIndex": 17, + "DocumentIndex": 19, "Title": "well_known.h", "DocumentMoniker": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\well_known.h", "RelativeDocumentMoniker": "well_known.h", @@ -204,7 +192,7 @@ }, { "$type": "Document", - "DocumentIndex": 16, + "DocumentIndex": 18, "Title": "thread_ctrl.cpp", "DocumentMoniker": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\thread_ctrl.cpp", "RelativeDocumentMoniker": "thread_ctrl.cpp", @@ -216,7 +204,7 @@ }, { "$type": "Document", - "DocumentIndex": 23, + "DocumentIndex": 25, "Title": "scan.h", "DocumentMoniker": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\scan.h", "RelativeDocumentMoniker": "scan.h", @@ -228,7 +216,7 @@ }, { "$type": "Document", - "DocumentIndex": 15, + "DocumentIndex": 17, "Title": "md5hash.cpp", "DocumentMoniker": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\md5hash.cpp", "RelativeDocumentMoniker": "md5hash.cpp", @@ -240,20 +228,20 @@ }, { "$type": "Document", - "DocumentIndex": 1, + "DocumentIndex": 0, "Title": "deepscan.cpp", "DocumentMoniker": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\deepscan.cpp", "RelativeDocumentMoniker": "deepscan.cpp", "ToolTip": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\deepscan.cpp", "RelativeToolTip": "deepscan.cpp", - "ViewState": "AQIAALoAAAAAAAAAAAAswAwBAAAJAAAA", + "ViewState": "AQIAAE0BAAAAAAAAAAAswHoBAAAFAAAA", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000677|", "WhenOpened": "2024-03-31T08:30:41.528Z", "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 14, + "DocumentIndex": 16, "Title": "virus_ctrl.cpp", "DocumentMoniker": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\virus_ctrl.cpp", "RelativeDocumentMoniker": "virus_ctrl.cpp", @@ -265,7 +253,7 @@ }, { "$type": "Document", - "DocumentIndex": 13, + "DocumentIndex": 15, "Title": "security.cpp", "DocumentMoniker": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\security.cpp", "RelativeDocumentMoniker": "security.cpp", @@ -277,7 +265,7 @@ }, { "$type": "Document", - "DocumentIndex": 12, + "DocumentIndex": 14, "Title": "security.h", "DocumentMoniker": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\security.h", "RelativeDocumentMoniker": "security.h", @@ -289,7 +277,7 @@ }, { "$type": "Document", - "DocumentIndex": 11, + "DocumentIndex": 13, "Title": "zip.cpp", "DocumentMoniker": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\zip.cpp", "RelativeDocumentMoniker": "zip.cpp", @@ -301,19 +289,20 @@ }, { "$type": "Document", - "DocumentIndex": 29, + "DocumentIndex": 1, "Title": "app_ctrl.h", "DocumentMoniker": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\app_ctrl.h", "RelativeDocumentMoniker": "app_ctrl.h", "ToolTip": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\app_ctrl.h", "RelativeToolTip": "app_ctrl.h", - "ViewState": "AQIAAAAAAAAAAAAAAAAAAAoAAAAWAAAA", + "ViewState": "AQIAAAAAAAAAAAAAAAAAAAwAAAAUAAAA", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000680|", - "WhenOpened": "2024-03-28T13:37:13.587Z" + "WhenOpened": "2024-03-28T13:37:13.587Z", + "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 26, + "DocumentIndex": 28, "Title": "local_com.h", "DocumentMoniker": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\local_com.h", "RelativeDocumentMoniker": "local_com.h", @@ -325,7 +314,7 @@ }, { "$type": "Document", - "DocumentIndex": 27, + "DocumentIndex": 29, "Title": "update.h", "DocumentMoniker": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\update.h", "RelativeDocumentMoniker": "update.h", @@ -337,15 +326,16 @@ }, { "$type": "Document", - "DocumentIndex": 10, + "DocumentIndex": 3, "Title": "queue _ctrl.cpp", "DocumentMoniker": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\queue _ctrl.cpp", "RelativeDocumentMoniker": "queue _ctrl.cpp", "ToolTip": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\queue _ctrl.cpp", "RelativeToolTip": "queue _ctrl.cpp", - "ViewState": "AQIAAAkAAAAAAAAAAAAAACUAAAAWAAAA", + "ViewState": "AQIAAAMAAAAAAAAAAAAAACUAAAAWAAAA", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000677|", - "WhenOpened": "2024-01-28T20:40:06.295Z" + "WhenOpened": "2024-01-28T20:40:06.295Z", + "EditorCaption": "" }, { "$type": "Document", @@ -373,7 +363,7 @@ }, { "$type": "Document", - "DocumentIndex": 2, + "DocumentIndex": 5, "Title": "check_process.cpp", "DocumentMoniker": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\check_process.cpp", "RelativeDocumentMoniker": "check_process.cpp", @@ -386,7 +376,7 @@ }, { "$type": "Document", - "DocumentIndex": 4, + "DocumentIndex": 7, "Title": "scan.cpp", "DocumentMoniker": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\scan.cpp", "RelativeDocumentMoniker": "scan.cpp", @@ -399,7 +389,7 @@ }, { "$type": "Document", - "DocumentIndex": 9, + "DocumentIndex": 12, "Title": "connect.cpp", "DocumentMoniker": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\connect.cpp", "RelativeDocumentMoniker": "connect.cpp", @@ -411,7 +401,7 @@ }, { "$type": "Document", - "DocumentIndex": 21, + "DocumentIndex": 23, "Title": "settings.h", "DocumentMoniker": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\settings.h", "RelativeDocumentMoniker": "settings.h", @@ -423,7 +413,7 @@ }, { "$type": "Document", - "DocumentIndex": 20, + "DocumentIndex": 22, "Title": "utils.h", "DocumentMoniker": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\utils.h", "RelativeDocumentMoniker": "utils.h", @@ -435,7 +425,7 @@ }, { "$type": "Document", - "DocumentIndex": 8, + "DocumentIndex": 11, "Title": "permissions.cpp", "DocumentMoniker": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\permissions.cpp", "RelativeDocumentMoniker": "permissions.cpp", @@ -447,7 +437,7 @@ }, { "$type": "Document", - "DocumentIndex": 3, + "DocumentIndex": 6, "Title": "deepscan.h", "DocumentMoniker": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\deepscan.h", "RelativeDocumentMoniker": "deepscan.h", @@ -460,20 +450,45 @@ }, { "$type": "Document", - "DocumentIndex": 0, + "DocumentIndex": 4, "Title": "check_dir.cpp", "DocumentMoniker": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\check_dir.cpp", "RelativeDocumentMoniker": "check_dir.cpp", "ToolTip": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\check_dir.cpp", "RelativeToolTip": "check_dir.cpp", - "ViewState": "AQIAACEAAAAAAAAAAAAAADwAAAAhAAAA", + "ViewState": "AQIAACEAAAAAAAAAAAAAADcAAAAOAAAA", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000677|", "WhenOpened": "2024-03-13T06:48:31.009Z", "EditorCaption": "" }, { "$type": "Document", - "DocumentIndex": 19, + "DocumentIndex": 2, + "Title": "app_ctrl.cpp", + "DocumentMoniker": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\app_ctrl.cpp", + "RelativeDocumentMoniker": "app_ctrl.cpp", + "ToolTip": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\app_ctrl.cpp", + "RelativeToolTip": "app_ctrl.cpp", + "ViewState": "AQIAAAAAAAAAAAAAAAAAACsAAAAXAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000677|", + "WhenOpened": "2024-03-28T13:36:41.939Z", + "EditorCaption": "" + }, + { + "$type": "Document", + "DocumentIndex": 10, + "Title": "utils.cpp", + "DocumentMoniker": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\utils.cpp", + "RelativeDocumentMoniker": "utils.cpp", + "ToolTip": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\utils.cpp", + "RelativeToolTip": "utils.cpp", + "ViewState": "AQIAABYAAAAAAAAAAAAvwDAAAAAxAAAA", + "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000677|", + "WhenOpened": "2024-03-14T15:55:22.469Z" + }, + { + "$type": "Document", + "DocumentIndex": 21, "Title": "update.cpp", "DocumentMoniker": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\update.cpp", "RelativeDocumentMoniker": "update.cpp", @@ -485,7 +500,7 @@ }, { "$type": "Document", - "DocumentIndex": 22, + "DocumentIndex": 24, "Title": "local_schedule.cpp", "DocumentMoniker": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\local_schedule.cpp", "RelativeDocumentMoniker": "local_schedule.cpp", @@ -497,7 +512,7 @@ }, { "$type": "Document", - "DocumentIndex": 24, + "DocumentIndex": 26, "Title": "local_com.cpp", "DocumentMoniker": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\local_com.cpp", "RelativeDocumentMoniker": "local_com.cpp", @@ -509,7 +524,7 @@ }, { "$type": "Document", - "DocumentIndex": 25, + "DocumentIndex": 27, "Title": "zip.h", "DocumentMoniker": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\zip.h", "RelativeDocumentMoniker": "zip.h", @@ -518,18 +533,6 @@ "ViewState": "AQIAAAAAAAAAAAAAAAAAAAIAAAA/AAAA", "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000680|", "WhenOpened": "2024-03-29T07:57:13.208Z" - }, - { - "$type": "Document", - "DocumentIndex": 28, - "Title": "app_ctrl.cpp", - "DocumentMoniker": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\app_ctrl.cpp", - "RelativeDocumentMoniker": "app_ctrl.cpp", - "ToolTip": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\app_ctrl.cpp", - "RelativeToolTip": "app_ctrl.cpp", - "ViewState": "AQIAAAAAAAAAAAAAAAAAACYAAAABAAAA", - "Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000677|", - "WhenOpened": "2024-03-28T13:36:41.939Z" } ] } diff --git a/src/client_backend/app_ctrl.cpp b/src/client_backend/app_ctrl.cpp index f7fc461..ea7aae9 100644 --- a/src/client_backend/app_ctrl.cpp +++ b/src/client_backend/app_ctrl.cpp @@ -5,6 +5,7 @@ bool app_stop_ = false; bool can_run_thread_ = true; bool can_scan_folder_ = true; bool debug_mode_ = false; +bool is_yara_ready_ = false; int app_stop() { return app_stop_; } @@ -37,4 +38,12 @@ int debug_mode_init() { debug_mode_ = true; return debug_mode_; } + +int set_yara_ready() { + is_yara_ready_ = true; + return is_yara_ready_; +} +int is_yara_ready() { + return is_yara_ready_; +} #endif \ No newline at end of file diff --git a/src/client_backend/app_ctrl.h b/src/client_backend/app_ctrl.h index 1488856..cbd689c 100644 --- a/src/client_backend/app_ctrl.h +++ b/src/client_backend/app_ctrl.h @@ -9,4 +9,6 @@ int scan_folder_init(); int scan_folder_shutdown(); int debug_mode(); int debug_mode_init(); +int set_yara_ready(); +int is_yara_ready(); #endif \ No newline at end of file diff --git a/src/client_backend/client_backend/x64/Debug/app_ctrl.h.ifc b/src/client_backend/client_backend/x64/Debug/app_ctrl.h.ifc index b619942..8763c62 100644 Binary files a/src/client_backend/client_backend/x64/Debug/app_ctrl.h.ifc and b/src/client_backend/client_backend/x64/Debug/app_ctrl.h.ifc differ diff --git a/src/client_backend/client_backend/x64/Debug/client_backend.ilk b/src/client_backend/client_backend/x64/Debug/client_backend.ilk index 0c6c932..1da65a3 100644 Binary files a/src/client_backend/client_backend/x64/Debug/client_backend.ilk and b/src/client_backend/client_backend/x64/Debug/client_backend.ilk differ diff --git a/src/client_backend/client_backend/x64/Debug/client_backend.log b/src/client_backend/client_backend/x64/Debug/client_backend.log index 1d9b1d7..b3ebf53 100644 --- a/src/client_backend/client_backend/x64/Debug/client_backend.log +++ b/src/client_backend/client_backend/x64/Debug/client_backend.log @@ -1,4 +1,8 @@  Quellen werden auf Modulabhängigkeiten überprüft... + app_ctrl.h + Kompilieren... + app_ctrl.h + app_ctrl.cpp check_dir.cpp C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.39.33519\include\xutility(4537,18): warning C4244: "=": Konvertierung von "wchar_t" in "char", möglicher Datenverlust (Quelldatei „check_dir.cpp“ wird kompiliert) @@ -33,5 +37,20 @@ C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.39.3351 _SizeTy=unsigned __int64 ] + check_process.cpp + client_backend.cpp +C:\Users\janis\Documents\Projekte_mit_c\ma\ma\src\client_backend\client_backend.cpp(143,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(143,24): warning C4244: with +C:\Users\janis\Documents\Projekte_mit_c\ma\ma\src\client_backend\client_backend.cpp(143,24): warning C4244: [ +C:\Users\janis\Documents\Projekte_mit_c\ma\ma\src\client_backend\client_backend.cpp(143,24): warning C4244: _Rep=__int64 +C:\Users\janis\Documents\Projekte_mit_c\ma\ma\src\client_backend\client_backend.cpp(143,24): warning C4244: ] + deepscan.cpp +C:\Users\janis\Documents\Projekte_mit_c\ma\ma\src\client_backend\deepscan.cpp(140,50): warning C4018: ">=": Konflikt zwischen "signed" und "unsigned" + scan.cpp +C:\Users\janis\Documents\Projekte_mit_c\ma\ma\src\client_backend\scan.cpp(263,46): warning C4018: ">=": Konflikt zwischen "signed" und "unsigned" + thread_ctrl.cpp + update.cpp + Code wird generiert... +C:\Users\janis\Documents\Projekte_mit_c\ma\ma\src\client_backend\deepscan.cpp(328,1): warning C4715: "deepscan_process_t": Nicht alle Codepfade geben einen Wert zurück. client_backend.vcxproj -> C:\Users\janis\Documents\Projekte_mit_c\ma\ma\src\client_backend\x64\Debug\client_backend.exe C:\vcpkg\vcpkg-2023.08.09\scripts\buildsystems\msbuild\vcpkg.targets(228,5): warning : [vcpkg] Failed to gather app local DLL dependencies, program may not run. Set VcpkgApplocalDeps to false in your project file to suppress this warning. PowerShell arguments: -ExecutionPolicy Bypass -noprofile -File "C:\vcpkg\vcpkg-2023.08.09\scripts\buildsystems\msbuild\applocal.ps1" "C:\Users\janis\Documents\Projekte_mit_c\ma\ma\src\client_backend\x64\Debug\client_backend.exe" "C:\vcpkg\vcpkg-2023.08.09\installed\x64-windows\debug\bin" "client_backend\x64\Debug\client_backend.tlog\client_backend.write.1u.tlog" "client_backend\x64\Debug\vcpkg.applocal.log" diff --git a/src/client_backend/client_backend/x64/Debug/client_backend.tlog/CL.command.1.tlog b/src/client_backend/client_backend/x64/Debug/client_backend.tlog/CL.command.1.tlog index 92dc3cd..66cd146 100644 Binary files a/src/client_backend/client_backend/x64/Debug/client_backend.tlog/CL.command.1.tlog and b/src/client_backend/client_backend/x64/Debug/client_backend.tlog/CL.command.1.tlog differ diff --git a/src/client_backend/client_backend/x64/Debug/client_backend.tlog/CL.read.1.tlog b/src/client_backend/client_backend/x64/Debug/client_backend.tlog/CL.read.1.tlog index 8cf7a1d..94ed686 100644 Binary files a/src/client_backend/client_backend/x64/Debug/client_backend.tlog/CL.read.1.tlog and b/src/client_backend/client_backend/x64/Debug/client_backend.tlog/CL.read.1.tlog differ diff --git a/src/client_backend/client_backend/x64/Debug/client_backend.tlog/CL.write.1.tlog b/src/client_backend/client_backend/x64/Debug/client_backend.tlog/CL.write.1.tlog index 6c0d1a5..53c62a0 100644 Binary files a/src/client_backend/client_backend/x64/Debug/client_backend.tlog/CL.write.1.tlog and b/src/client_backend/client_backend/x64/Debug/client_backend.tlog/CL.write.1.tlog differ diff --git a/src/client_backend/client_backend/x64/Debug/client_backend.tlog/link.read.1.tlog b/src/client_backend/client_backend/x64/Debug/client_backend.tlog/link.read.1.tlog index 926494f..873ac9e 100644 Binary files a/src/client_backend/client_backend/x64/Debug/client_backend.tlog/link.read.1.tlog and b/src/client_backend/client_backend/x64/Debug/client_backend.tlog/link.read.1.tlog differ diff --git a/src/client_backend/client_backend/x64/Debug/vc143.idb b/src/client_backend/client_backend/x64/Debug/vc143.idb index ba50012..58b7fad 100644 Binary files a/src/client_backend/client_backend/x64/Debug/vc143.idb and b/src/client_backend/client_backend/x64/Debug/vc143.idb differ diff --git a/src/client_backend/client_backend/x64/Debug/vc143.pdb b/src/client_backend/client_backend/x64/Debug/vc143.pdb index f602b9c..5d7a1e9 100644 Binary files a/src/client_backend/client_backend/x64/Debug/vc143.pdb and b/src/client_backend/client_backend/x64/Debug/vc143.pdb differ diff --git a/src/client_backend/deepscan.cpp b/src/client_backend/deepscan.cpp index 758c28f..04ead7f 100644 --- a/src/client_backend/deepscan.cpp +++ b/src/client_backend/deepscan.cpp @@ -99,6 +99,7 @@ void init_yara_rules(const char* folderPath) { } } } + set_yara_ready(); } @@ -107,82 +108,85 @@ std::stack deep_directories; // Stack to store directories to be sc // Scan all files in a folder recursively using first the normal scanner, then the deep scanner void deepscan_folder(const std::string& directory) { - deep_directories.push(directory); + if (is_yara_ready()) { + deep_directories.push(directory); - while (!deep_directories.empty()) { - std::string current_dir = deep_directories.top(); - deep_directories.pop(); + while (!deep_directories.empty()) { + std::string current_dir = deep_directories.top(); + deep_directories.pop(); - std::string search_path = current_dir + "\\*.*"; - WIN32_FIND_DATA find_file_data; - HANDLE hFind = FindFirstFile(search_path.c_str(), &find_file_data); + std::string search_path = current_dir + "\\*.*"; + WIN32_FIND_DATA find_file_data; + HANDLE hFind = FindFirstFile(search_path.c_str(), &find_file_data); - if (hFind != INVALID_HANDLE_VALUE) { - do { - if (strcmp(find_file_data.cFileName, ".") == 0 || strcmp(find_file_data.cFileName, "..") == 0) { - continue; // Skip the current and parent directories - } - - const std::string full_path = current_dir + "\\" + find_file_data.cFileName; - if (find_file_data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) { - // If it's a directory, add it to the stack - deep_directories.push(full_path); - } - else { - if (debug_mode()) - log(LOGLEVEL::INFO_NOSEND, "[deepscan_folder()]: Scanning file: ", full_path); - - // Do multithreading here - int thread_timeout = 0; - //log(LOGLEVEL::INFO_NOSEND, "[scan_folder()]: Scanning file: ", full_path); - while (get_num_threads() >= std::thread::hardware_concurrency() && thread_safety()) { - Sleep(10); - thread_timeout++; - //printf("Thread timeout: %d\n", thread_timeout); - if (thread_timeout == 100 * 20) { - // If there is no available thread for more than 30 seconds, reset the thread counter - set_num_threads(0); - } + if (hFind != INVALID_HANDLE_VALUE) { + do { + if (strcmp(find_file_data.cFileName, ".") == 0 || strcmp(find_file_data.cFileName, "..") == 0) { + continue; // Skip the current and parent directories } - //log(LOGLEVEL::INFO_NOSEND, "[scan_folder()]: Scanning file: ", full_path); - if (is_valid_path(full_path)) { // Filter out invalid paths and paths with weird characters - std::uintmax_t fileSize = std::filesystem::file_size(full_path); - if (fileSize > 4000000000) { // 4GB - log(LOGLEVEL::INFO_NOSEND, "[deepscan_folder()]: File too large to scan: ", full_path); - } - else { - std::thread scan_thread(deepscan_file_t, full_path); - scan_thread.detach(); - } + + const std::string full_path = current_dir + "\\" + find_file_data.cFileName; + if (find_file_data.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) { + // If it's a directory, add it to the stack + deep_directories.push(full_path); } else { - log(LOGLEVEL::INFO_NOSEND, "[deepscan_folder()]: Invalid path: ", full_path); - } - deep_cnt++; - if (deep_cnt % 100 == 0) { - printf("Processed %d files;\n", deep_cnt); - //printf("Number of threads: %d\n", num_threads); - } - if (deep_cnt % 100 == 0) { - int actual_threads = get_num_running_threads(); - if (get_num_threads() > actual_threads) - set_num_threads(actual_threads);//correct value of threads - printf("Number of threads: %d\n", get_num_threads()); - //send progress to com file - std::ofstream answer_com(ANSWER_COM_PATH, std::ios::app); - if (answer_com.is_open()) { - answer_com << "progress " << (deep_cnt * 100 / (deep_all_files + 1)) << "\n"; - answer_com.close(); + if (debug_mode()) + log(LOGLEVEL::INFO_NOSEND, "[deepscan_folder()]: Scanning file: ", full_path); + + // Do multithreading here + int thread_timeout = 0; + //log(LOGLEVEL::INFO_NOSEND, "[scan_folder()]: Scanning file: ", full_path); + while (get_num_threads() >= std::thread::hardware_concurrency() && thread_safety()) { + Sleep(10); + thread_timeout++; + //printf("Thread timeout: %d\n", thread_timeout); + if (thread_timeout == 100 * 20) { + // If there is no available thread for more than 30 seconds, reset the thread counter + set_num_threads(0); + } + } + //log(LOGLEVEL::INFO_NOSEND, "[scan_folder()]: Scanning file: ", full_path); + if (is_valid_path(full_path)) { // Filter out invalid paths and paths with weird characters + std::uintmax_t fileSize = std::filesystem::file_size(full_path); + if (fileSize > 4000000000) { // 4GB + log(LOGLEVEL::INFO_NOSEND, "[deepscan_folder()]: File too large to scan: ", full_path); + } + else { + std::thread scan_thread(deepscan_file_t, full_path); + scan_thread.detach(); + } + } + else { + log(LOGLEVEL::INFO_NOSEND, "[deepscan_folder()]: Invalid path: ", full_path); + } + deep_cnt++; + if (deep_cnt % 100 == 0) { + printf("Processed %d files;\n", deep_cnt); + //printf("Number of threads: %d\n", num_threads); + } + if (deep_cnt % 100 == 0) { + int actual_threads = get_num_running_threads(); + if (get_num_threads() > actual_threads) + set_num_threads(actual_threads);//correct value of threads + printf("Number of threads: %d\n", get_num_threads()); + //send progress to com file + std::ofstream answer_com(ANSWER_COM_PATH, std::ios::app); + if (answer_com.is_open()) { + answer_com << "progress " << (deep_cnt * 100 / (deep_all_files + 1)) << "\n"; + answer_com.close(); + } } } - } - } while (FindNextFile(hFind, &find_file_data) != 0); - FindClose(hFind); - } - else { - log(LOGLEVEL::ERR_NOSEND, "[deepscan_folder()]: Could not open directory: ", current_dir, " while scanning files inside directory."); + } while (FindNextFile(hFind, &find_file_data) != 0); + FindClose(hFind); + } + else { + log(LOGLEVEL::ERR_NOSEND, "[deepscan_folder()]: Could not open directory: ", current_dir, " while scanning files inside directory."); + } } } + } @@ -246,18 +250,53 @@ int process_callback_for_process(YR_SCAN_CONTEXT* context, int message, void* me // Scan a single file using YARA rules (thread-safe) bool deepscan_file_t(const std::string& file_path) { set_num_threads(get_num_threads() + 1); - // we do not need to make a new instance of yara rules, because they are global and do not get deleted or modified - thread_local std::string file_path_(file_path); - // first we scan the file with the normal scanner, which means md5 - thread_local std::string hash(md5_file_t(file_path)); - thread_local char* db_path = new char[300]; + if (is_yara_ready()) { + // we do not need to make a new instance of yara rules, because they are global and do not get deleted or modified + thread_local std::string file_path_(file_path); + // first we scan the file with the normal scanner, which means md5 + thread_local std::string hash(md5_file_t(file_path)); + thread_local char* db_path = new char[300]; - sprintf_s(db_path, 295, "%s\\%c%c.jdbf", DB_DIR, hash[0], hash[1]); - if (search_hash(db_path, hash, file_path) != 1) { // if we already found a match in the database, we do not need to scan the file with yara - // Load file into memory - std::ifstream file_stream(file_path, std::ios::binary | std::ios::ate); + sprintf_s(db_path, 295, "%s\\%c%c.jdbf", DB_DIR, hash[0], hash[1]); + if (search_hash(db_path, hash, file_path) != 1) { // if we already found a match in the database, we do not need to scan the file with yara + // Load file into memory + std::ifstream file_stream(file_path, std::ios::binary | std::ios::ate); + if (!file_stream.is_open()) { + // handle error if file cannot be opened + set_num_threads(get_num_threads() - 1); + return false; + } + std::streamsize file_size = file_stream.tellg(); + file_stream.seekg(0, std::ios::beg); + std::vector file_content(file_size); + if (!file_stream.read(file_content.data(), file_size)) { + // handle error if file content cannot be read + set_num_threads(get_num_threads() - 1); + return false; + } + file_stream.close(); + + // get globally set yara rules and iterate over them + Callback_data* callback_data = new Callback_data(); + for (YR_RULES* rule : compiled_rules) { + callback_data->filepath = file_path_; + yr_rules_scan_mem(rule, reinterpret_cast(file_content.data()), file_content.size(), 0, process_callback, callback_data, 5000); + } + } + } + + set_num_threads(get_num_threads() - 1); + return true; +} + +bool deepscan_process_t(const std::string& filepath_) { + set_num_threads(get_num_threads() + 1); + if (is_yara_ready()) { + thread_local const std::string filepath(filepath_); + std::ifstream file_stream(filepath, std::ios::binary | std::ios::ate); if (!file_stream.is_open()) { // handle error if file cannot be opened + set_num_threads(get_num_threads() - 1); return false; } std::streamsize file_size = file_stream.tellg(); @@ -265,6 +304,7 @@ bool deepscan_file_t(const std::string& file_path) { std::vector file_content(file_size); if (!file_stream.read(file_content.data(), file_size)) { // handle error if file content cannot be read + set_num_threads(get_num_threads() - 1); return false; } file_stream.close(); @@ -272,57 +312,33 @@ bool deepscan_file_t(const std::string& file_path) { // get globally set yara rules and iterate over them Callback_data* callback_data = new Callback_data(); for (YR_RULES* rule : compiled_rules) { - callback_data->filepath = file_path_; - yr_rules_scan_mem(rule, reinterpret_cast(file_content.data()), file_content.size(), 0, process_callback, callback_data, 5000); + callback_data->filepath = filepath_; + yr_rules_scan_mem(rule, reinterpret_cast(file_content.data()), file_content.size(), 0, process_callback_for_process, callback_data, 5000); } - set_num_threads(get_num_threads() - 1); } - return true; -} -bool deepscan_process_t(const std::string& filepath_) { - set_num_threads(get_num_threads() + 1); - thread_local const std::string filepath(filepath_); - std::ifstream file_stream(filepath, std::ios::binary | std::ios::ate); - if (!file_stream.is_open()) { - // handle error if file cannot be opened - return false; - } - std::streamsize file_size = file_stream.tellg(); - file_stream.seekg(0, std::ios::beg); - std::vector file_content(file_size); - if (!file_stream.read(file_content.data(), file_size)) { - // handle error if file content cannot be read - return false; - } - file_stream.close(); - - // get globally set yara rules and iterate over them - Callback_data* callback_data = new Callback_data(); - for (YR_RULES* rule : compiled_rules) { - callback_data->filepath = filepath_; - yr_rules_scan_mem(rule, reinterpret_cast(file_content.data()), file_content.size(), 0, process_callback_for_process, callback_data, 5000); - } set_num_threads(get_num_threads() - 1); } // Action function for deepscanfolder void action_deepscanfolder(const std::string& folderpath) { thread_init(); - thread_local std::string folderpath_(folderpath); - deep_cnt = 0; - deep_all_files = get_num_files(folderpath_); - //tell the desktop client that the scan has started - std::ofstream answer_com1(ANSWER_COM_PATH, std::ios::app); - if (answer_com1.is_open()) { - answer_com1 << "start " << deep_all_files << "\n"; - answer_com1.close(); - } - deepscan_folder(folderpath_); - std::ofstream answer_com(ANSWER_COM_PATH, std::ios::app); - if (answer_com.is_open()) { - answer_com << "end " << "\"" << "nothing" << "\"" << " " << "nothing" << " " << "nothing" << "\n"; - answer_com.close(); + if (is_yara_ready()) { + thread_local std::string folderpath_(folderpath); + deep_cnt = 0; + deep_all_files = get_num_files(folderpath_); + //tell the desktop client that the scan has started + std::ofstream answer_com1(ANSWER_COM_PATH, std::ios::app); + if (answer_com1.is_open()) { + answer_com1 << "start " << deep_all_files << "\n"; + answer_com1.close(); + } + deepscan_folder(folderpath_); + std::ofstream answer_com(ANSWER_COM_PATH, std::ios::app); + if (answer_com.is_open()) { + answer_com << "end " << "\"" << "nothing" << "\"" << " " << "nothing" << " " << "nothing" << "\n"; + answer_com.close(); + } } thread_shutdown(); } @@ -330,27 +346,29 @@ void action_deepscanfolder(const std::string& folderpath) { //for singlethreaded scans void action_deepscanfile(const std::string& filepath_) { thread_init(); - std::string file_path(filepath_); - char* db_path = new char[300]; - action_deepscan_is_virus = 0; - //printf("start\n"); - if (is_valid_path(file_path)) { //filter out invalid paths and paths with weird characters - //first scan the file with the normal scanner, which means md5 - thread_local char* db_path = new char[300]; - thread_local std::string hash(md5_file_t(file_path)); - sprintf_s(db_path, 295, "%s\\%c%c.jdbf", DB_DIR, hash[0], hash[1]); - if (search_hash(db_path, hash, file_path) != 1) { //if we allready found a match in the database, we do not need to scan the file with yara - deepscan_file_t(file_path); - if (action_deepscan_is_virus == 0) { - std::ofstream answer_com(ANSWER_COM_PATH, std::ios::app); - if (answer_com.is_open()) { - answer_com << "not_found " << "\"" << file_path << "\"" << " " << hash << " " << "no_action_taken" << "\n"; - answer_com.close(); + if (is_yara_ready()) { + std::string file_path(filepath_); + char* db_path = new char[300]; + action_deepscan_is_virus = 0; + //printf("start\n"); + if (is_valid_path(file_path)) { //filter out invalid paths and paths with weird characters + //first scan the file with the normal scanner, which means md5 + thread_local char* db_path = new char[300]; + thread_local std::string hash(md5_file_t(file_path)); + sprintf_s(db_path, 295, "%s\\%c%c.jdbf", DB_DIR, hash[0], hash[1]); + if (search_hash(db_path, hash, file_path) != 1) { //if we allready found a match in the database, we do not need to scan the file with yara + deepscan_file_t(file_path); + if (action_deepscan_is_virus == 0) { + std::ofstream answer_com(ANSWER_COM_PATH, std::ios::app); + if (answer_com.is_open()) { + answer_com << "not_found " << "\"" << file_path << "\"" << " " << hash << " " << "no_action_taken" << "\n"; + answer_com.close(); + } } } } + else + log(LOGLEVEL::INFO_NOSEND, "[action_scanfile()]: Invalid path: ", file_path); } - else - log(LOGLEVEL::INFO_NOSEND, "[action_scanfile()]: Invalid path: ", file_path); thread_shutdown(); } \ No newline at end of file diff --git a/src/client_backend/x64/Debug/client_backend.pdb b/src/client_backend/x64/Debug/client_backend.pdb index b931765..28010c4 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/server/cyberhex-code/system/secure_zone/php/client_settings.php b/src/server/cyberhex-code/system/secure_zone/php/client_settings.php index 6d5f795..331a01a 100644 --- a/src/server/cyberhex-code/system/secure_zone/php/client_settings.php +++ b/src/server/cyberhex-code/system/secure_zone/php/client_settings.php @@ -204,7 +204,7 @@ load_settings(); else echo (""); ?> - +
"); ?> - +

Included folders for RTP folderscanner