updating call_srv
This commit is contained in:
Binary file not shown.
Binary file not shown.
@@ -3,20 +3,32 @@
|
|||||||
"WorkspaceRootPath": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\",
|
"WorkspaceRootPath": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\",
|
||||||
"Documents": [
|
"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\\scan.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:scan.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\\client_backend.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\\client_backend.cpp||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}",
|
||||||
"RelativeMoniker": "D:0:0:{56E65283-AAC9-43F6-9613-72BE8D648AC4}|client_backend.vcxproj|solutionrelative:client_backend.cpp||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}"
|
"RelativeMoniker": "D:0:0:{56E65283-AAC9-43F6-9613-72BE8D648AC4}|client_backend.vcxproj|solutionrelative:client_backend.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\\local_schedule.cpp||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}",
|
||||||
|
"RelativeMoniker": "D:0:0:{56E65283-AAC9-43F6-9613-72BE8D648AC4}|client_backend.vcxproj|solutionrelative:local_schedule.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\\virus_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\\virus_ctrl.cpp||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}",
|
||||||
"RelativeMoniker": "D:0:0:{56E65283-AAC9-43F6-9613-72BE8D648AC4}|client_backend.vcxproj|solutionrelative:virus_ctrl.cpp||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}"
|
"RelativeMoniker": "D:0:0:{56E65283-AAC9-43F6-9613-72BE8D648AC4}|client_backend.vcxproj|solutionrelative:virus_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\\well_known.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.cpp||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}",
|
||||||
"RelativeMoniker": "D:0:0:{56E65283-AAC9-43F6-9613-72BE8D648AC4}|client_backend.vcxproj|solutionrelative:well_known.h||{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\\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}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"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.cpp||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}",
|
||||||
|
"RelativeMoniker": "D:0:0:{56E65283-AAC9-43F6-9613-72BE8D648AC4}|client_backend.vcxproj|solutionrelative:update.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\\log.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\\log.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}",
|
||||||
@@ -26,18 +38,22 @@
|
|||||||
"AbsoluteMoniker": "D:0:0:{56E65283-AAC9-43F6-9613-72BE8D648AC4}|client_backend.vcxproj|C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\log.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\\log.cpp||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}",
|
||||||
"RelativeMoniker": "D:0:0:{56E65283-AAC9-43F6-9613-72BE8D648AC4}|client_backend.vcxproj|solutionrelative:log.cpp||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}"
|
"RelativeMoniker": "D:0:0:{56E65283-AAC9-43F6-9613-72BE8D648AC4}|client_backend.vcxproj|solutionrelative:log.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\\md5hash.cpp||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}",
|
||||||
|
"RelativeMoniker": "D:0:0:{56E65283-AAC9-43F6-9613-72BE8D648AC4}|client_backend.vcxproj|solutionrelative:md5hash.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\\scan.cpp||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}",
|
||||||
|
"RelativeMoniker": "D:0:0:{56E65283-AAC9-43F6-9613-72BE8D648AC4}|client_backend.vcxproj|solutionrelative:scan.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\\well_known.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}",
|
||||||
|
"RelativeMoniker": "D:0:0:{56E65283-AAC9-43F6-9613-72BE8D648AC4}|client_backend.vcxproj|solutionrelative:well_known.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\\settings.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\\settings.cpp||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}",
|
||||||
"RelativeMoniker": "D:0:0:{56E65283-AAC9-43F6-9613-72BE8D648AC4}|client_backend.vcxproj|solutionrelative:settings.cpp||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}"
|
"RelativeMoniker": "D:0:0:{56E65283-AAC9-43F6-9613-72BE8D648AC4}|client_backend.vcxproj|solutionrelative:settings.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\\update.cpp||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}",
|
|
||||||
"RelativeMoniker": "D:0:0:{56E65283-AAC9-43F6-9613-72BE8D648AC4}|client_backend.vcxproj|solutionrelative:update.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\\local_schedule.cpp||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}",
|
|
||||||
"RelativeMoniker": "D:0:0:{56E65283-AAC9-43F6-9613-72BE8D648AC4}|client_backend.vcxproj|solutionrelative:local_schedule.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\\security.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\\security.cpp||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}",
|
||||||
"RelativeMoniker": "D:0:0:{56E65283-AAC9-43F6-9613-72BE8D648AC4}|client_backend.vcxproj|solutionrelative:security.cpp||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}"
|
"RelativeMoniker": "D:0:0:{56E65283-AAC9-43F6-9613-72BE8D648AC4}|client_backend.vcxproj|solutionrelative:security.cpp||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}"
|
||||||
@@ -54,14 +70,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\\local_com.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\\local_com.cpp||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}",
|
||||||
"RelativeMoniker": "D:0:0:{56E65283-AAC9-43F6-9613-72BE8D648AC4}|client_backend.vcxproj|solutionrelative:local_com.cpp||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}"
|
"RelativeMoniker": "D:0:0:{56E65283-AAC9-43F6-9613-72BE8D648AC4}|client_backend.vcxproj|solutionrelative:local_com.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\\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\\security.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\\security.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}",
|
||||||
"RelativeMoniker": "D:0:0:{56E65283-AAC9-43F6-9613-72BE8D648AC4}|client_backend.vcxproj|solutionrelative:security.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}"
|
"RelativeMoniker": "D:0:0:{56E65283-AAC9-43F6-9613-72BE8D648AC4}|client_backend.vcxproj|solutionrelative:security.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}"
|
||||||
@@ -74,10 +82,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\\check_dir.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\\check_dir.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}",
|
||||||
"RelativeMoniker": "D:0:0:{56E65283-AAC9-43F6-9613-72BE8D648AC4}|client_backend.vcxproj|solutionrelative:check_dir.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}"
|
"RelativeMoniker": "D:0:0:{56E65283-AAC9-43F6-9613-72BE8D648AC4}|client_backend.vcxproj|solutionrelative:check_dir.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\\md5hash.cpp||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}",
|
|
||||||
"RelativeMoniker": "D:0:0:{56E65283-AAC9-43F6-9613-72BE8D648AC4}|client_backend.vcxproj|solutionrelative:md5hash.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\\thread_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\\thread_ctrl.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}",
|
||||||
"RelativeMoniker": "D:0:0:{56E65283-AAC9-43F6-9613-72BE8D648AC4}|client_backend.vcxproj|solutionrelative:thread_ctrl.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}"
|
"RelativeMoniker": "D:0:0:{56E65283-AAC9-43F6-9613-72BE8D648AC4}|client_backend.vcxproj|solutionrelative:thread_ctrl.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}"
|
||||||
@@ -126,48 +130,24 @@
|
|||||||
"DocumentGroups": [
|
"DocumentGroups": [
|
||||||
{
|
{
|
||||||
"DockedWidth": 200,
|
"DockedWidth": 200,
|
||||||
"SelectedChildIndex": 11,
|
"SelectedChildIndex": 6,
|
||||||
"Children": [
|
"Children": [
|
||||||
{
|
{
|
||||||
"$type": "Document",
|
"$type": "Document",
|
||||||
"DocumentIndex": 2,
|
"DocumentIndex": 5,
|
||||||
"Title": "virus_ctrl.cpp",
|
"Title": "connect.h",
|
||||||
"DocumentMoniker": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\virus_ctrl.cpp",
|
"DocumentMoniker": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\connect.h",
|
||||||
"RelativeDocumentMoniker": "virus_ctrl.cpp",
|
"RelativeDocumentMoniker": "connect.h",
|
||||||
"ToolTip": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\virus_ctrl.cpp",
|
"ToolTip": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\connect.h",
|
||||||
"RelativeToolTip": "virus_ctrl.cpp",
|
"RelativeToolTip": "connect.h",
|
||||||
"ViewState": "AQIAAAcAAAAAAAAAAAAAAAcAAAAAAAAA",
|
"ViewState": "AQIAAAAAAAAAAAAAAAAAAAcAAAASAAAA",
|
||||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000677|",
|
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000680|",
|
||||||
"WhenOpened": "2024-02-18T12:49:41.861Z",
|
"WhenOpened": "2024-02-22T13:21:36.025Z",
|
||||||
"EditorCaption": ""
|
"EditorCaption": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"$type": "Document",
|
"$type": "Document",
|
||||||
"DocumentIndex": 15,
|
"DocumentIndex": 18,
|
||||||
"Title": "security.h",
|
|
||||||
"DocumentMoniker": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\security.h",
|
|
||||||
"RelativeDocumentMoniker": "security.h",
|
|
||||||
"ToolTip": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\security.h",
|
|
||||||
"RelativeToolTip": "security.h",
|
|
||||||
"ViewState": "AQIAAAAAAAAAAAAAAAAAAAgAAAAFAAAA",
|
|
||||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000680|",
|
|
||||||
"WhenOpened": "2024-02-17T09:05:01.412Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"$type": "Document",
|
|
||||||
"DocumentIndex": 9,
|
|
||||||
"Title": "security.cpp",
|
|
||||||
"DocumentMoniker": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\security.cpp",
|
|
||||||
"RelativeDocumentMoniker": "security.cpp",
|
|
||||||
"ToolTip": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\security.cpp",
|
|
||||||
"RelativeToolTip": "security.cpp",
|
|
||||||
"ViewState": "AQIAAAAAAAAAAAAAAAAAAEIAAAAMAAAA",
|
|
||||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000677|",
|
|
||||||
"WhenOpened": "2024-02-17T09:04:52.66Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"$type": "Document",
|
|
||||||
"DocumentIndex": 16,
|
|
||||||
"Title": "settings.h",
|
"Title": "settings.h",
|
||||||
"DocumentMoniker": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\settings.h",
|
"DocumentMoniker": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\settings.h",
|
||||||
"RelativeDocumentMoniker": "settings.h",
|
"RelativeDocumentMoniker": "settings.h",
|
||||||
@@ -175,23 +155,25 @@
|
|||||||
"RelativeToolTip": "settings.h",
|
"RelativeToolTip": "settings.h",
|
||||||
"ViewState": "AQIAAAAAAAAAAAAAAAAAAAkAAAAXAAAA",
|
"ViewState": "AQIAAAAAAAAAAAAAAAAAAAkAAAAXAAAA",
|
||||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000680|",
|
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000680|",
|
||||||
"WhenOpened": "2024-01-28T20:40:06.248Z"
|
"WhenOpened": "2024-01-28T20:40:06.248Z",
|
||||||
|
"EditorCaption": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"$type": "Document",
|
"$type": "Document",
|
||||||
"DocumentIndex": 6,
|
"DocumentIndex": 12,
|
||||||
"Title": "settings.cpp",
|
"Title": "settings.cpp",
|
||||||
"DocumentMoniker": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\settings.cpp",
|
"DocumentMoniker": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\settings.cpp",
|
||||||
"RelativeDocumentMoniker": "settings.cpp",
|
"RelativeDocumentMoniker": "settings.cpp",
|
||||||
"ToolTip": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\settings.cpp",
|
"ToolTip": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\settings.cpp",
|
||||||
"RelativeToolTip": "settings.cpp",
|
"RelativeToolTip": "settings.cpp",
|
||||||
"ViewState": "AQIAAA8AAAAAAAAAAAAAAFMAAAA1AAAA",
|
"ViewState": "AQIAAA0AAAAAAAAAAABBwFMAAAA1AAAA",
|
||||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000677|",
|
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000677|",
|
||||||
"WhenOpened": "2024-01-28T20:40:06.264Z"
|
"WhenOpened": "2024-01-28T20:40:06.264Z",
|
||||||
|
"EditorCaption": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"$type": "Document",
|
"$type": "Document",
|
||||||
"DocumentIndex": 19,
|
"DocumentIndex": 20,
|
||||||
"Title": "thread_ctrl.h",
|
"Title": "thread_ctrl.h",
|
||||||
"DocumentMoniker": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\thread_ctrl.h",
|
"DocumentMoniker": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\thread_ctrl.h",
|
||||||
"RelativeDocumentMoniker": "thread_ctrl.h",
|
"RelativeDocumentMoniker": "thread_ctrl.h",
|
||||||
@@ -199,23 +181,25 @@
|
|||||||
"RelativeToolTip": "thread_ctrl.h",
|
"RelativeToolTip": "thread_ctrl.h",
|
||||||
"ViewState": "AQIAAAAAAAAAAAAAAAAAAAkAAAAlAAAA",
|
"ViewState": "AQIAAAAAAAAAAAAAAAAAAAkAAAAlAAAA",
|
||||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000680|",
|
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000680|",
|
||||||
"WhenOpened": "2024-01-28T20:40:06.264Z"
|
"WhenOpened": "2024-01-28T20:40:06.264Z",
|
||||||
|
"EditorCaption": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"$type": "Document",
|
"$type": "Document",
|
||||||
"DocumentIndex": 11,
|
"DocumentIndex": 15,
|
||||||
"Title": "thread_ctrl.cpp",
|
"Title": "thread_ctrl.cpp",
|
||||||
"DocumentMoniker": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\thread_ctrl.cpp",
|
"DocumentMoniker": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\thread_ctrl.cpp",
|
||||||
"RelativeDocumentMoniker": "thread_ctrl.cpp",
|
"RelativeDocumentMoniker": "thread_ctrl.cpp",
|
||||||
"ToolTip": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\thread_ctrl.cpp",
|
"ToolTip": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\thread_ctrl.cpp",
|
||||||
"RelativeToolTip": "thread_ctrl.cpp",
|
"RelativeToolTip": "thread_ctrl.cpp",
|
||||||
"ViewState": "AQIAABUAAAAAAAAAAAAAACAAAAAnAAAA",
|
"ViewState": "AQIAABMAAAAAAAAAAABBwCAAAAAnAAAA",
|
||||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000677|",
|
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000677|",
|
||||||
"WhenOpened": "2024-01-28T20:40:06.264Z"
|
"WhenOpened": "2024-01-28T20:40:06.264Z",
|
||||||
|
"EditorCaption": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"$type": "Document",
|
"$type": "Document",
|
||||||
"DocumentIndex": 17,
|
"DocumentIndex": 19,
|
||||||
"Title": "check_dir.h",
|
"Title": "check_dir.h",
|
||||||
"DocumentMoniker": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\check_dir.h",
|
"DocumentMoniker": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\check_dir.h",
|
||||||
"RelativeDocumentMoniker": "check_dir.h",
|
"RelativeDocumentMoniker": "check_dir.h",
|
||||||
@@ -223,19 +207,21 @@
|
|||||||
"RelativeToolTip": "check_dir.h",
|
"RelativeToolTip": "check_dir.h",
|
||||||
"ViewState": "AQIAAAAAAAAAAAAAAAAAAAcAAAAqAAAA",
|
"ViewState": "AQIAAAAAAAAAAAAAAAAAAAcAAAAqAAAA",
|
||||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000680|",
|
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000680|",
|
||||||
"WhenOpened": "2024-01-28T20:40:06.264Z"
|
"WhenOpened": "2024-01-28T20:40:06.264Z",
|
||||||
|
"EditorCaption": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"$type": "Document",
|
"$type": "Document",
|
||||||
"DocumentIndex": 13,
|
"DocumentIndex": 0,
|
||||||
"Title": "check_dir.cpp",
|
"Title": "check_dir.cpp",
|
||||||
"DocumentMoniker": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\check_dir.cpp",
|
"DocumentMoniker": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\check_dir.cpp",
|
||||||
"RelativeDocumentMoniker": "check_dir.cpp",
|
"RelativeDocumentMoniker": "check_dir.cpp",
|
||||||
"ToolTip": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\check_dir.cpp",
|
"ToolTip": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\check_dir.cpp",
|
||||||
"RelativeToolTip": "check_dir.cpp",
|
"RelativeToolTip": "check_dir.cpp",
|
||||||
"ViewState": "AQIAAH4AAAAAAAAAAAAAAI0AAAAAAAAA",
|
"ViewState": "AQIAAAIBAAAAAAAAAAAkwCYBAABeAAAA",
|
||||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000677|",
|
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000677|",
|
||||||
"WhenOpened": "2024-01-28T20:40:06.279Z"
|
"WhenOpened": "2024-01-28T20:40:06.279Z",
|
||||||
|
"EditorCaption": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"$type": "Document",
|
"$type": "Document",
|
||||||
@@ -245,14 +231,14 @@
|
|||||||
"RelativeDocumentMoniker": "client_backend.cpp",
|
"RelativeDocumentMoniker": "client_backend.cpp",
|
||||||
"ToolTip": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\client_backend.cpp",
|
"ToolTip": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\client_backend.cpp",
|
||||||
"RelativeToolTip": "client_backend.cpp",
|
"RelativeToolTip": "client_backend.cpp",
|
||||||
"ViewState": "AQIAABUAAAAAAAAAAAAAACwAAAAAAAAA",
|
"ViewState": "AQIAAAIAAAAAAAAAAAAAADAAAAA5AAAA",
|
||||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000677|",
|
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000677|",
|
||||||
"WhenOpened": "2024-01-28T20:40:06.279Z",
|
"WhenOpened": "2024-01-28T20:40:06.279Z",
|
||||||
"EditorCaption": ""
|
"EditorCaption": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"$type": "Document",
|
"$type": "Document",
|
||||||
"DocumentIndex": 3,
|
"DocumentIndex": 11,
|
||||||
"Title": "well_known.h",
|
"Title": "well_known.h",
|
||||||
"DocumentMoniker": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\well_known.h",
|
"DocumentMoniker": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\well_known.h",
|
||||||
"RelativeDocumentMoniker": "well_known.h",
|
"RelativeDocumentMoniker": "well_known.h",
|
||||||
@@ -260,36 +246,38 @@
|
|||||||
"RelativeToolTip": "well_known.h",
|
"RelativeToolTip": "well_known.h",
|
||||||
"ViewState": "AQIAAAAAAAAAAAAAAAAAAAoAAAAAAAAA",
|
"ViewState": "AQIAAAAAAAAAAAAAAAAAAAoAAAAAAAAA",
|
||||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000680|",
|
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000680|",
|
||||||
"WhenOpened": "2024-01-28T20:40:06.295Z"
|
"WhenOpened": "2024-01-28T20:40:06.295Z",
|
||||||
|
"EditorCaption": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"$type": "Document",
|
"$type": "Document",
|
||||||
"DocumentIndex": 0,
|
"DocumentIndex": 10,
|
||||||
"Title": "scan.cpp",
|
"Title": "scan.cpp",
|
||||||
"DocumentMoniker": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\scan.cpp",
|
"DocumentMoniker": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\scan.cpp",
|
||||||
"RelativeDocumentMoniker": "scan.cpp",
|
"RelativeDocumentMoniker": "scan.cpp",
|
||||||
"ToolTip": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\scan.cpp",
|
"ToolTip": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\scan.cpp",
|
||||||
"RelativeToolTip": "scan.cpp",
|
"RelativeToolTip": "scan.cpp",
|
||||||
"ViewState": "AQIAAEwAAAAAAAAAAAAIwFcAAAAqAAAA",
|
"ViewState": "AQIAAK0AAAAAAAAAAAAkwM0AAAAhAAAA",
|
||||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000677|",
|
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000677|",
|
||||||
"WhenOpened": "2024-01-28T20:40:06.248Z",
|
"WhenOpened": "2024-01-28T20:40:06.248Z",
|
||||||
"EditorCaption": ""
|
"EditorCaption": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"$type": "Document",
|
"$type": "Document",
|
||||||
"DocumentIndex": 7,
|
"DocumentIndex": 6,
|
||||||
"Title": "update.cpp",
|
"Title": "update.cpp",
|
||||||
"DocumentMoniker": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\update.cpp",
|
"DocumentMoniker": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\update.cpp",
|
||||||
"RelativeDocumentMoniker": "update.cpp",
|
"RelativeDocumentMoniker": "update.cpp",
|
||||||
"ToolTip": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\update.cpp",
|
"ToolTip": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\update.cpp",
|
||||||
"RelativeToolTip": "update.cpp",
|
"RelativeToolTip": "update.cpp",
|
||||||
"ViewState": "AQIAAAAAAAAAAAAAAAAAABgAAABPAAAA",
|
"ViewState": "AQIAAAAAAAAAAAAAAAAAAAYAAAAAAAAA",
|
||||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000677|",
|
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000677|",
|
||||||
"WhenOpened": "2024-01-28T20:40:06.248Z"
|
"WhenOpened": "2024-01-28T20:40:06.248Z",
|
||||||
|
"EditorCaption": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"$type": "Document",
|
"$type": "Document",
|
||||||
"DocumentIndex": 8,
|
"DocumentIndex": 2,
|
||||||
"Title": "local_schedule.cpp",
|
"Title": "local_schedule.cpp",
|
||||||
"DocumentMoniker": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\local_schedule.cpp",
|
"DocumentMoniker": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\local_schedule.cpp",
|
||||||
"RelativeDocumentMoniker": "local_schedule.cpp",
|
"RelativeDocumentMoniker": "local_schedule.cpp",
|
||||||
@@ -297,11 +285,12 @@
|
|||||||
"RelativeToolTip": "local_schedule.cpp",
|
"RelativeToolTip": "local_schedule.cpp",
|
||||||
"ViewState": "AQIAAHIAAAAAAAAAAAAjwJcAAABKAAAA",
|
"ViewState": "AQIAAHIAAAAAAAAAAAAjwJcAAABKAAAA",
|
||||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000677|",
|
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000677|",
|
||||||
"WhenOpened": "2024-01-28T20:40:06.279Z"
|
"WhenOpened": "2024-01-28T20:40:06.279Z",
|
||||||
|
"EditorCaption": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"$type": "Document",
|
"$type": "Document",
|
||||||
"DocumentIndex": 10,
|
"DocumentIndex": 14,
|
||||||
"Title": "update.h",
|
"Title": "update.h",
|
||||||
"DocumentMoniker": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\update.h",
|
"DocumentMoniker": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\update.h",
|
||||||
"RelativeDocumentMoniker": "update.h",
|
"RelativeDocumentMoniker": "update.h",
|
||||||
@@ -309,35 +298,38 @@
|
|||||||
"RelativeToolTip": "update.h",
|
"RelativeToolTip": "update.h",
|
||||||
"ViewState": "AQIAAAAAAAAAAAAAAAAAAAUAAAAlAAAA",
|
"ViewState": "AQIAAAAAAAAAAAAAAAAAAAUAAAAlAAAA",
|
||||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000680|",
|
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000680|",
|
||||||
"WhenOpened": "2024-01-28T20:40:06.279Z"
|
"WhenOpened": "2024-01-28T20:40:06.279Z",
|
||||||
|
"EditorCaption": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"$type": "Document",
|
"$type": "Document",
|
||||||
"DocumentIndex": 4,
|
"DocumentIndex": 7,
|
||||||
"Title": "log.h",
|
"Title": "log.h",
|
||||||
"DocumentMoniker": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\log.h",
|
"DocumentMoniker": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\log.h",
|
||||||
"RelativeDocumentMoniker": "log.h",
|
"RelativeDocumentMoniker": "log.h",
|
||||||
"ToolTip": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\log.h",
|
"ToolTip": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\log.h",
|
||||||
"RelativeToolTip": "log.h",
|
"RelativeToolTip": "log.h",
|
||||||
"ViewState": "AQIAAAAAAAAAAAAAAAAAAFYAAAASAAAA",
|
"ViewState": "AQIAAAAAAAAAAAAAAAAAADoAAAAtAAAA",
|
||||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000680|",
|
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000680|",
|
||||||
"WhenOpened": "2024-01-28T20:40:06.279Z"
|
"WhenOpened": "2024-01-28T20:40:06.279Z",
|
||||||
|
"EditorCaption": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"$type": "Document",
|
"$type": "Document",
|
||||||
"DocumentIndex": 5,
|
"DocumentIndex": 8,
|
||||||
"Title": "log.cpp",
|
"Title": "log.cpp",
|
||||||
"DocumentMoniker": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\log.cpp",
|
"DocumentMoniker": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\log.cpp",
|
||||||
"RelativeDocumentMoniker": "log.cpp",
|
"RelativeDocumentMoniker": "log.cpp",
|
||||||
"ToolTip": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\log.cpp",
|
"ToolTip": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\log.cpp",
|
||||||
"RelativeToolTip": "log.cpp",
|
"RelativeToolTip": "log.cpp",
|
||||||
"ViewState": "AQIAAAAAAAAAAAAAAAAAAA4AAAAYAAAA",
|
"ViewState": "AQIAAAAAAAAAAAAAAAAAABkAAAAGAAAA",
|
||||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000677|",
|
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000677|",
|
||||||
"WhenOpened": "2024-01-28T20:40:06.295Z"
|
"WhenOpened": "2024-01-28T20:40:06.295Z",
|
||||||
|
"EditorCaption": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"$type": "Document",
|
"$type": "Document",
|
||||||
"DocumentIndex": 20,
|
"DocumentIndex": 21,
|
||||||
"Title": "local_schedule.h",
|
"Title": "local_schedule.h",
|
||||||
"DocumentMoniker": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\local_schedule.h",
|
"DocumentMoniker": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\local_schedule.h",
|
||||||
"RelativeDocumentMoniker": "local_schedule.h",
|
"RelativeDocumentMoniker": "local_schedule.h",
|
||||||
@@ -345,11 +337,12 @@
|
|||||||
"RelativeToolTip": "local_schedule.h",
|
"RelativeToolTip": "local_schedule.h",
|
||||||
"ViewState": "AQIAAAAAAAAAAAAAAAAAAAoAAAAvAAAA",
|
"ViewState": "AQIAAAAAAAAAAAAAAAAAAAoAAAAvAAAA",
|
||||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000680|",
|
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000680|",
|
||||||
"WhenOpened": "2024-01-28T20:40:06.295Z"
|
"WhenOpened": "2024-01-28T20:40:06.295Z",
|
||||||
|
"EditorCaption": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"$type": "Document",
|
"$type": "Document",
|
||||||
"DocumentIndex": 21,
|
"DocumentIndex": 22,
|
||||||
"Title": "scan.h",
|
"Title": "scan.h",
|
||||||
"DocumentMoniker": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\scan.h",
|
"DocumentMoniker": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\scan.h",
|
||||||
"RelativeDocumentMoniker": "scan.h",
|
"RelativeDocumentMoniker": "scan.h",
|
||||||
@@ -357,11 +350,12 @@
|
|||||||
"RelativeToolTip": "scan.h",
|
"RelativeToolTip": "scan.h",
|
||||||
"ViewState": "AQIAAAAAAAAAAAAAAAAAAA4AAAAdAAAA",
|
"ViewState": "AQIAAAAAAAAAAAAAAAAAAA4AAAAdAAAA",
|
||||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000680|",
|
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000680|",
|
||||||
"WhenOpened": "2024-01-28T20:40:06.295Z"
|
"WhenOpened": "2024-01-28T20:40:06.295Z",
|
||||||
|
"EditorCaption": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"$type": "Document",
|
"$type": "Document",
|
||||||
"DocumentIndex": 22,
|
"DocumentIndex": 23,
|
||||||
"Title": "queue_ctrl.h",
|
"Title": "queue_ctrl.h",
|
||||||
"DocumentMoniker": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\queue_ctrl.h",
|
"DocumentMoniker": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\queue_ctrl.h",
|
||||||
"RelativeDocumentMoniker": "queue_ctrl.h",
|
"RelativeDocumentMoniker": "queue_ctrl.h",
|
||||||
@@ -369,11 +363,12 @@
|
|||||||
"RelativeToolTip": "queue_ctrl.h",
|
"RelativeToolTip": "queue_ctrl.h",
|
||||||
"ViewState": "AQIAAAAAAAAAAAAAAAAAAAgAAAAXAAAA",
|
"ViewState": "AQIAAAAAAAAAAAAAAAAAAAgAAAAXAAAA",
|
||||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000680|",
|
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000680|",
|
||||||
"WhenOpened": "2024-01-28T20:40:06.295Z"
|
"WhenOpened": "2024-01-28T20:40:06.295Z",
|
||||||
|
"EditorCaption": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"$type": "Document",
|
"$type": "Document",
|
||||||
"DocumentIndex": 23,
|
"DocumentIndex": 24,
|
||||||
"Title": "queue _ctrl.cpp",
|
"Title": "queue _ctrl.cpp",
|
||||||
"DocumentMoniker": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\queue _ctrl.cpp",
|
"DocumentMoniker": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\queue _ctrl.cpp",
|
||||||
"RelativeDocumentMoniker": "queue _ctrl.cpp",
|
"RelativeDocumentMoniker": "queue _ctrl.cpp",
|
||||||
@@ -381,11 +376,12 @@
|
|||||||
"RelativeToolTip": "queue _ctrl.cpp",
|
"RelativeToolTip": "queue _ctrl.cpp",
|
||||||
"ViewState": "AQIAAAAAAAAAAAAAAAAAAAUAAAAaAAAA",
|
"ViewState": "AQIAAAAAAAAAAAAAAAAAAAUAAAAaAAAA",
|
||||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000677|",
|
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000677|",
|
||||||
"WhenOpened": "2024-01-28T20:40:06.295Z"
|
"WhenOpened": "2024-01-28T20:40:06.295Z",
|
||||||
|
"EditorCaption": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"$type": "Document",
|
"$type": "Document",
|
||||||
"DocumentIndex": 24,
|
"DocumentIndex": 25,
|
||||||
"Title": "app_ctrl.h",
|
"Title": "app_ctrl.h",
|
||||||
"DocumentMoniker": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\app_ctrl.h",
|
"DocumentMoniker": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\app_ctrl.h",
|
||||||
"RelativeDocumentMoniker": "app_ctrl.h",
|
"RelativeDocumentMoniker": "app_ctrl.h",
|
||||||
@@ -393,11 +389,12 @@
|
|||||||
"RelativeToolTip": "app_ctrl.h",
|
"RelativeToolTip": "app_ctrl.h",
|
||||||
"ViewState": "AQIAAAAAAAAAAAAAAAAAAAgAAAAbAAAA",
|
"ViewState": "AQIAAAAAAAAAAAAAAAAAAAgAAAAbAAAA",
|
||||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000680|",
|
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000680|",
|
||||||
"WhenOpened": "2024-01-28T20:40:06.31Z"
|
"WhenOpened": "2024-01-28T20:40:06.31Z",
|
||||||
|
"EditorCaption": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"$type": "Document",
|
"$type": "Document",
|
||||||
"DocumentIndex": 25,
|
"DocumentIndex": 26,
|
||||||
"Title": "app_ctrl.cpp",
|
"Title": "app_ctrl.cpp",
|
||||||
"DocumentMoniker": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\app_ctrl.cpp",
|
"DocumentMoniker": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\app_ctrl.cpp",
|
||||||
"RelativeDocumentMoniker": "app_ctrl.cpp",
|
"RelativeDocumentMoniker": "app_ctrl.cpp",
|
||||||
@@ -405,11 +402,12 @@
|
|||||||
"RelativeToolTip": "app_ctrl.cpp",
|
"RelativeToolTip": "app_ctrl.cpp",
|
||||||
"ViewState": "AQIAAAAAAAAAAAAAAAAAAAwAAAAPAAAA",
|
"ViewState": "AQIAAAAAAAAAAAAAAAAAAAwAAAAPAAAA",
|
||||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000677|",
|
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000677|",
|
||||||
"WhenOpened": "2024-01-28T20:40:06.31Z"
|
"WhenOpened": "2024-01-28T20:40:06.31Z",
|
||||||
|
"EditorCaption": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"$type": "Document",
|
"$type": "Document",
|
||||||
"DocumentIndex": 26,
|
"DocumentIndex": 27,
|
||||||
"Title": "md5hash.h",
|
"Title": "md5hash.h",
|
||||||
"DocumentMoniker": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\md5hash.h",
|
"DocumentMoniker": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\md5hash.h",
|
||||||
"RelativeDocumentMoniker": "md5hash.h",
|
"RelativeDocumentMoniker": "md5hash.h",
|
||||||
@@ -417,11 +415,12 @@
|
|||||||
"RelativeToolTip": "md5hash.h",
|
"RelativeToolTip": "md5hash.h",
|
||||||
"ViewState": "AQIAAAAAAAAAAAAAAAAAAAgAAAAxAAAA",
|
"ViewState": "AQIAAAAAAAAAAAAAAAAAAAgAAAAxAAAA",
|
||||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000680|",
|
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000680|",
|
||||||
"WhenOpened": "2024-01-28T20:40:06.315Z"
|
"WhenOpened": "2024-01-28T20:40:06.315Z",
|
||||||
|
"EditorCaption": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"$type": "Document",
|
"$type": "Document",
|
||||||
"DocumentIndex": 27,
|
"DocumentIndex": 28,
|
||||||
"Title": "permissions.cpp",
|
"Title": "permissions.cpp",
|
||||||
"DocumentMoniker": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\permissions.cpp",
|
"DocumentMoniker": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\permissions.cpp",
|
||||||
"RelativeDocumentMoniker": "permissions.cpp",
|
"RelativeDocumentMoniker": "permissions.cpp",
|
||||||
@@ -429,23 +428,77 @@
|
|||||||
"RelativeToolTip": "permissions.cpp",
|
"RelativeToolTip": "permissions.cpp",
|
||||||
"ViewState": "AQIAAAAAAAAAAAAAAAAAABYAAAABAAAA",
|
"ViewState": "AQIAAAAAAAAAAAAAAAAAABYAAAABAAAA",
|
||||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000677|",
|
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000677|",
|
||||||
"WhenOpened": "2024-01-28T20:40:06.315Z"
|
"WhenOpened": "2024-01-28T20:40:06.315Z",
|
||||||
|
"EditorCaption": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"$type": "Document",
|
"$type": "Document",
|
||||||
"DocumentIndex": 14,
|
"DocumentIndex": 4,
|
||||||
"Title": "connect.cpp",
|
"Title": "connect.cpp",
|
||||||
"DocumentMoniker": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\connect.cpp",
|
"DocumentMoniker": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\connect.cpp",
|
||||||
"RelativeDocumentMoniker": "connect.cpp",
|
"RelativeDocumentMoniker": "connect.cpp",
|
||||||
"ToolTip": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\connect.cpp",
|
"ToolTip": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\connect.cpp",
|
||||||
"RelativeToolTip": "connect.cpp",
|
"RelativeToolTip": "connect.cpp",
|
||||||
"ViewState": "AQIAACoAAAAAAAAAAAAAADkAAAARAAAA",
|
"ViewState": "AQIAAAAAAAAAAAAAAAAAAB0AAAAUAAAA",
|
||||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000677|",
|
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000677|",
|
||||||
"WhenOpened": "2024-01-28T20:40:06.315Z"
|
"WhenOpened": "2024-01-28T20:40:06.315Z",
|
||||||
|
"EditorCaption": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"$type": "Document",
|
"$type": "Document",
|
||||||
"DocumentIndex": 12,
|
"DocumentIndex": 9,
|
||||||
|
"Title": "md5hash.cpp",
|
||||||
|
"DocumentMoniker": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\md5hash.cpp",
|
||||||
|
"RelativeDocumentMoniker": "md5hash.cpp",
|
||||||
|
"ToolTip": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\md5hash.cpp",
|
||||||
|
"RelativeToolTip": "md5hash.cpp",
|
||||||
|
"ViewState": "AQIAAEAAAAAAAAAAAAAkwFQAAAAOAAAA",
|
||||||
|
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000677|",
|
||||||
|
"WhenOpened": "2024-01-28T20:40:06.248Z",
|
||||||
|
"EditorCaption": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"$type": "Document",
|
||||||
|
"DocumentIndex": 3,
|
||||||
|
"Title": "virus_ctrl.cpp",
|
||||||
|
"DocumentMoniker": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\virus_ctrl.cpp",
|
||||||
|
"RelativeDocumentMoniker": "virus_ctrl.cpp",
|
||||||
|
"ToolTip": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\virus_ctrl.cpp",
|
||||||
|
"RelativeToolTip": "virus_ctrl.cpp",
|
||||||
|
"ViewState": "AQIAADkAAAAAAAAAAAAAAGEAAAAvAAAA",
|
||||||
|
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000677|",
|
||||||
|
"WhenOpened": "2024-02-18T12:49:41.861Z",
|
||||||
|
"EditorCaption": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"$type": "Document",
|
||||||
|
"DocumentIndex": 13,
|
||||||
|
"Title": "security.cpp",
|
||||||
|
"DocumentMoniker": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\security.cpp",
|
||||||
|
"RelativeDocumentMoniker": "security.cpp",
|
||||||
|
"ToolTip": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\security.cpp",
|
||||||
|
"RelativeToolTip": "security.cpp",
|
||||||
|
"ViewState": "AQIAAAAAAAAAAAAAAAAAAEIAAAAMAAAA",
|
||||||
|
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000677|",
|
||||||
|
"WhenOpened": "2024-02-17T09:04:52.66Z",
|
||||||
|
"EditorCaption": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"$type": "Document",
|
||||||
|
"DocumentIndex": 17,
|
||||||
|
"Title": "security.h",
|
||||||
|
"DocumentMoniker": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\security.h",
|
||||||
|
"RelativeDocumentMoniker": "security.h",
|
||||||
|
"ToolTip": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\security.h",
|
||||||
|
"RelativeToolTip": "security.h",
|
||||||
|
"ViewState": "AQIAAAAAAAAAAAAAAAAAAAgAAAAFAAAA",
|
||||||
|
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000680|",
|
||||||
|
"WhenOpened": "2024-02-17T09:05:01.412Z",
|
||||||
|
"EditorCaption": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"$type": "Document",
|
||||||
|
"DocumentIndex": 16,
|
||||||
"Title": "local_com.cpp",
|
"Title": "local_com.cpp",
|
||||||
"DocumentMoniker": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\local_com.cpp",
|
"DocumentMoniker": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\local_com.cpp",
|
||||||
"RelativeDocumentMoniker": "local_com.cpp",
|
"RelativeDocumentMoniker": "local_com.cpp",
|
||||||
@@ -453,23 +506,12 @@
|
|||||||
"RelativeToolTip": "local_com.cpp",
|
"RelativeToolTip": "local_com.cpp",
|
||||||
"ViewState": "AQIAAAAAAAAAAAAAAAAAAAQAAAAXAAAA",
|
"ViewState": "AQIAAAAAAAAAAAAAAAAAAAQAAAAXAAAA",
|
||||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000677|",
|
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000677|",
|
||||||
"WhenOpened": "2024-01-28T20:40:06.217Z"
|
"WhenOpened": "2024-01-28T20:40:06.217Z",
|
||||||
|
"EditorCaption": ""
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"$type": "Document",
|
"$type": "Document",
|
||||||
"DocumentIndex": 18,
|
"DocumentIndex": 29,
|
||||||
"Title": "md5hash.cpp",
|
|
||||||
"DocumentMoniker": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\md5hash.cpp",
|
|
||||||
"RelativeDocumentMoniker": "md5hash.cpp",
|
|
||||||
"ToolTip": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\md5hash.cpp",
|
|
||||||
"RelativeToolTip": "md5hash.cpp",
|
|
||||||
"ViewState": "AQIAAEYAAAAAAAAAAABBwFYAAABdAAAA",
|
|
||||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000677|",
|
|
||||||
"WhenOpened": "2024-01-28T20:40:06.248Z"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"$type": "Document",
|
|
||||||
"DocumentIndex": 28,
|
|
||||||
"Title": "permissions.h",
|
"Title": "permissions.h",
|
||||||
"DocumentMoniker": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\permissions.h",
|
"DocumentMoniker": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\permissions.h",
|
||||||
"RelativeDocumentMoniker": "permissions.h",
|
"RelativeDocumentMoniker": "permissions.h",
|
||||||
@@ -477,7 +519,8 @@
|
|||||||
"RelativeToolTip": "permissions.h",
|
"RelativeToolTip": "permissions.h",
|
||||||
"ViewState": "AQIAAAAAAAAAAAAAAAAAAA4AAAASAAAA",
|
"ViewState": "AQIAAAAAAAAAAAAAAAAAAA4AAAASAAAA",
|
||||||
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000680|",
|
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000680|",
|
||||||
"WhenOpened": "2024-01-28T20:40:06.315Z"
|
"WhenOpened": "2024-01-28T20:40:06.315Z",
|
||||||
|
"EditorCaption": ""
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,530 @@
|
|||||||
|
{
|
||||||
|
"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\\virus_ctrl.cpp||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}",
|
||||||
|
"RelativeMoniker": "D:0:0:{56E65283-AAC9-43F6-9613-72BE8D648AC4}|client_backend.vcxproj|solutionrelative:virus_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\\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\\client_backend.cpp||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}",
|
||||||
|
"RelativeMoniker": "D:0:0:{56E65283-AAC9-43F6-9613-72BE8D648AC4}|client_backend.vcxproj|solutionrelative:client_backend.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\\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}"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"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.cpp||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}",
|
||||||
|
"RelativeMoniker": "D:0:0:{56E65283-AAC9-43F6-9613-72BE8D648AC4}|client_backend.vcxproj|solutionrelative:update.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\\log.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}",
|
||||||
|
"RelativeMoniker": "D:0:0:{56E65283-AAC9-43F6-9613-72BE8D648AC4}|client_backend.vcxproj|solutionrelative:log.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\\log.cpp||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}",
|
||||||
|
"RelativeMoniker": "D:0:0:{56E65283-AAC9-43F6-9613-72BE8D648AC4}|client_backend.vcxproj|solutionrelative:log.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\\md5hash.cpp||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}",
|
||||||
|
"RelativeMoniker": "D:0:0:{56E65283-AAC9-43F6-9613-72BE8D648AC4}|client_backend.vcxproj|solutionrelative:md5hash.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\\scan.cpp||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}",
|
||||||
|
"RelativeMoniker": "D:0:0:{56E65283-AAC9-43F6-9613-72BE8D648AC4}|client_backend.vcxproj|solutionrelative:scan.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\\well_known.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}",
|
||||||
|
"RelativeMoniker": "D:0:0:{56E65283-AAC9-43F6-9613-72BE8D648AC4}|client_backend.vcxproj|solutionrelative:well_known.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\\settings.cpp||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}",
|
||||||
|
"RelativeMoniker": "D:0:0:{56E65283-AAC9-43F6-9613-72BE8D648AC4}|client_backend.vcxproj|solutionrelative:settings.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\\local_schedule.cpp||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}",
|
||||||
|
"RelativeMoniker": "D:0:0:{56E65283-AAC9-43F6-9613-72BE8D648AC4}|client_backend.vcxproj|solutionrelative:local_schedule.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\\security.cpp||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}",
|
||||||
|
"RelativeMoniker": "D:0:0:{56E65283-AAC9-43F6-9613-72BE8D648AC4}|client_backend.vcxproj|solutionrelative:security.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\\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\\thread_ctrl.cpp||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}",
|
||||||
|
"RelativeMoniker": "D:0:0:{56E65283-AAC9-43F6-9613-72BE8D648AC4}|client_backend.vcxproj|solutionrelative:thread_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\\local_com.cpp||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}",
|
||||||
|
"RelativeMoniker": "D:0:0:{56E65283-AAC9-43F6-9613-72BE8D648AC4}|client_backend.vcxproj|solutionrelative:local_com.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\\security.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}",
|
||||||
|
"RelativeMoniker": "D:0:0:{56E65283-AAC9-43F6-9613-72BE8D648AC4}|client_backend.vcxproj|solutionrelative:security.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\\settings.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}",
|
||||||
|
"RelativeMoniker": "D:0:0:{56E65283-AAC9-43F6-9613-72BE8D648AC4}|client_backend.vcxproj|solutionrelative:settings.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\\check_dir.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}",
|
||||||
|
"RelativeMoniker": "D:0:0:{56E65283-AAC9-43F6-9613-72BE8D648AC4}|client_backend.vcxproj|solutionrelative:check_dir.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\\thread_ctrl.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}",
|
||||||
|
"RelativeMoniker": "D:0:0:{56E65283-AAC9-43F6-9613-72BE8D648AC4}|client_backend.vcxproj|solutionrelative:thread_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\\local_schedule.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}",
|
||||||
|
"RelativeMoniker": "D:0:0:{56E65283-AAC9-43F6-9613-72BE8D648AC4}|client_backend.vcxproj|solutionrelative:local_schedule.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\\scan.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}",
|
||||||
|
"RelativeMoniker": "D:0:0:{56E65283-AAC9-43F6-9613-72BE8D648AC4}|client_backend.vcxproj|solutionrelative:scan.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\\queue_ctrl.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}",
|
||||||
|
"RelativeMoniker": "D:0:0:{56E65283-AAC9-43F6-9613-72BE8D648AC4}|client_backend.vcxproj|solutionrelative:queue_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\\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\\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\\md5hash.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}",
|
||||||
|
"RelativeMoniker": "D:0:0:{56E65283-AAC9-43F6-9613-72BE8D648AC4}|client_backend.vcxproj|solutionrelative:md5hash.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\\permissions.cpp||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}",
|
||||||
|
"RelativeMoniker": "D:0:0:{56E65283-AAC9-43F6-9613-72BE8D648AC4}|client_backend.vcxproj|solutionrelative:permissions.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\\permissions.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}",
|
||||||
|
"RelativeMoniker": "D:0:0:{56E65283-AAC9-43F6-9613-72BE8D648AC4}|client_backend.vcxproj|solutionrelative:permissions.h||{D0E1A5C6-B359-4E41-9B60-3365922C2A22}"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"DocumentGroupContainers": [
|
||||||
|
{
|
||||||
|
"Orientation": 0,
|
||||||
|
"VerticalTabListWidth": 256,
|
||||||
|
"DocumentGroups": [
|
||||||
|
{
|
||||||
|
"DockedWidth": 200,
|
||||||
|
"SelectedChildIndex": 25,
|
||||||
|
"Children": [
|
||||||
|
{
|
||||||
|
"$type": "Document",
|
||||||
|
"DocumentIndex": 3,
|
||||||
|
"Title": "connect.h",
|
||||||
|
"DocumentMoniker": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\connect.h",
|
||||||
|
"RelativeDocumentMoniker": "connect.h",
|
||||||
|
"ToolTip": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\connect.h",
|
||||||
|
"RelativeToolTip": "connect.h",
|
||||||
|
"ViewState": "AQIAAAAAAAAAAAAAAAAAAAcAAAASAAAA",
|
||||||
|
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000680|",
|
||||||
|
"WhenOpened": "2024-02-22T13:21:36.025Z",
|
||||||
|
"EditorCaption": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"$type": "Document",
|
||||||
|
"DocumentIndex": 18,
|
||||||
|
"Title": "settings.h",
|
||||||
|
"DocumentMoniker": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\settings.h",
|
||||||
|
"RelativeDocumentMoniker": "settings.h",
|
||||||
|
"ToolTip": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\settings.h",
|
||||||
|
"RelativeToolTip": "settings.h",
|
||||||
|
"ViewState": "AQIAAAAAAAAAAAAAAAAAAAkAAAAXAAAA",
|
||||||
|
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000680|",
|
||||||
|
"WhenOpened": "2024-01-28T20:40:06.248Z",
|
||||||
|
"EditorCaption": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"$type": "Document",
|
||||||
|
"DocumentIndex": 10,
|
||||||
|
"Title": "settings.cpp",
|
||||||
|
"DocumentMoniker": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\settings.cpp",
|
||||||
|
"RelativeDocumentMoniker": "settings.cpp",
|
||||||
|
"ToolTip": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\settings.cpp",
|
||||||
|
"RelativeToolTip": "settings.cpp",
|
||||||
|
"ViewState": "AQIAAA0AAAAAAAAAAABBwFMAAAA1AAAA",
|
||||||
|
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000677|",
|
||||||
|
"WhenOpened": "2024-01-28T20:40:06.264Z",
|
||||||
|
"EditorCaption": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"$type": "Document",
|
||||||
|
"DocumentIndex": 20,
|
||||||
|
"Title": "thread_ctrl.h",
|
||||||
|
"DocumentMoniker": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\thread_ctrl.h",
|
||||||
|
"RelativeDocumentMoniker": "thread_ctrl.h",
|
||||||
|
"ToolTip": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\thread_ctrl.h",
|
||||||
|
"RelativeToolTip": "thread_ctrl.h",
|
||||||
|
"ViewState": "AQIAAAAAAAAAAAAAAAAAAAkAAAAlAAAA",
|
||||||
|
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000680|",
|
||||||
|
"WhenOpened": "2024-01-28T20:40:06.264Z",
|
||||||
|
"EditorCaption": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"$type": "Document",
|
||||||
|
"DocumentIndex": 14,
|
||||||
|
"Title": "thread_ctrl.cpp",
|
||||||
|
"DocumentMoniker": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\thread_ctrl.cpp",
|
||||||
|
"RelativeDocumentMoniker": "thread_ctrl.cpp",
|
||||||
|
"ToolTip": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\thread_ctrl.cpp",
|
||||||
|
"RelativeToolTip": "thread_ctrl.cpp",
|
||||||
|
"ViewState": "AQIAABMAAAAAAAAAAABBwCAAAAAnAAAA",
|
||||||
|
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000677|",
|
||||||
|
"WhenOpened": "2024-01-28T20:40:06.264Z",
|
||||||
|
"EditorCaption": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"$type": "Document",
|
||||||
|
"DocumentIndex": 19,
|
||||||
|
"Title": "check_dir.h",
|
||||||
|
"DocumentMoniker": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\check_dir.h",
|
||||||
|
"RelativeDocumentMoniker": "check_dir.h",
|
||||||
|
"ToolTip": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\check_dir.h",
|
||||||
|
"RelativeToolTip": "check_dir.h",
|
||||||
|
"ViewState": "AQIAAAAAAAAAAAAAAAAAAAcAAAAqAAAA",
|
||||||
|
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000680|",
|
||||||
|
"WhenOpened": "2024-01-28T20:40:06.264Z",
|
||||||
|
"EditorCaption": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"$type": "Document",
|
||||||
|
"DocumentIndex": 16,
|
||||||
|
"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": "AQIAAHwAAAAAAAAAAABBwI0AAAAAAAAA",
|
||||||
|
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000677|",
|
||||||
|
"WhenOpened": "2024-01-28T20:40:06.279Z",
|
||||||
|
"EditorCaption": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"$type": "Document",
|
||||||
|
"DocumentIndex": 2,
|
||||||
|
"Title": "client_backend.cpp",
|
||||||
|
"DocumentMoniker": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\client_backend.cpp",
|
||||||
|
"RelativeDocumentMoniker": "client_backend.cpp",
|
||||||
|
"ToolTip": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\client_backend.cpp",
|
||||||
|
"RelativeToolTip": "client_backend.cpp",
|
||||||
|
"ViewState": "AQIAAGIAAAAAAAAAAAAAAGIAAAAoAAAA",
|
||||||
|
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000677|",
|
||||||
|
"WhenOpened": "2024-01-28T20:40:06.279Z",
|
||||||
|
"EditorCaption": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"$type": "Document",
|
||||||
|
"DocumentIndex": 9,
|
||||||
|
"Title": "well_known.h",
|
||||||
|
"DocumentMoniker": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\well_known.h",
|
||||||
|
"RelativeDocumentMoniker": "well_known.h",
|
||||||
|
"ToolTip": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\well_known.h",
|
||||||
|
"RelativeToolTip": "well_known.h",
|
||||||
|
"ViewState": "AQIAAAAAAAAAAAAAAAAAAAoAAAAAAAAA",
|
||||||
|
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000680|",
|
||||||
|
"WhenOpened": "2024-01-28T20:40:06.295Z",
|
||||||
|
"EditorCaption": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"$type": "Document",
|
||||||
|
"DocumentIndex": 8,
|
||||||
|
"Title": "scan.cpp",
|
||||||
|
"DocumentMoniker": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\scan.cpp",
|
||||||
|
"RelativeDocumentMoniker": "scan.cpp",
|
||||||
|
"ToolTip": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\scan.cpp",
|
||||||
|
"RelativeToolTip": "scan.cpp",
|
||||||
|
"ViewState": "AQIAAK0AAAAAAAAAAAAkwM0AAAAhAAAA",
|
||||||
|
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000677|",
|
||||||
|
"WhenOpened": "2024-01-28T20:40:06.248Z",
|
||||||
|
"EditorCaption": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"$type": "Document",
|
||||||
|
"DocumentIndex": 4,
|
||||||
|
"Title": "update.cpp",
|
||||||
|
"DocumentMoniker": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\update.cpp",
|
||||||
|
"RelativeDocumentMoniker": "update.cpp",
|
||||||
|
"ToolTip": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\update.cpp",
|
||||||
|
"RelativeToolTip": "update.cpp",
|
||||||
|
"ViewState": "AQIAAAAAAAAAAAAAAAAAAAYAAAAAAAAA",
|
||||||
|
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000677|",
|
||||||
|
"WhenOpened": "2024-01-28T20:40:06.248Z",
|
||||||
|
"EditorCaption": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"$type": "Document",
|
||||||
|
"DocumentIndex": 11,
|
||||||
|
"Title": "local_schedule.cpp",
|
||||||
|
"DocumentMoniker": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\local_schedule.cpp",
|
||||||
|
"RelativeDocumentMoniker": "local_schedule.cpp",
|
||||||
|
"ToolTip": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\local_schedule.cpp",
|
||||||
|
"RelativeToolTip": "local_schedule.cpp",
|
||||||
|
"ViewState": "AQIAAHIAAAAAAAAAAAAjwJcAAABKAAAA",
|
||||||
|
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000677|",
|
||||||
|
"WhenOpened": "2024-01-28T20:40:06.279Z",
|
||||||
|
"EditorCaption": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"$type": "Document",
|
||||||
|
"DocumentIndex": 13,
|
||||||
|
"Title": "update.h",
|
||||||
|
"DocumentMoniker": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\update.h",
|
||||||
|
"RelativeDocumentMoniker": "update.h",
|
||||||
|
"ToolTip": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\update.h",
|
||||||
|
"RelativeToolTip": "update.h",
|
||||||
|
"ViewState": "AQIAAAAAAAAAAAAAAAAAAAUAAAAlAAAA",
|
||||||
|
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000680|",
|
||||||
|
"WhenOpened": "2024-01-28T20:40:06.279Z",
|
||||||
|
"EditorCaption": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"$type": "Document",
|
||||||
|
"DocumentIndex": 5,
|
||||||
|
"Title": "log.h",
|
||||||
|
"DocumentMoniker": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\log.h",
|
||||||
|
"RelativeDocumentMoniker": "log.h",
|
||||||
|
"ToolTip": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\log.h",
|
||||||
|
"RelativeToolTip": "log.h",
|
||||||
|
"ViewState": "AQIAAAAAAAAAAAAAAAAAADoAAAAtAAAA",
|
||||||
|
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000680|",
|
||||||
|
"WhenOpened": "2024-01-28T20:40:06.279Z",
|
||||||
|
"EditorCaption": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"$type": "Document",
|
||||||
|
"DocumentIndex": 6,
|
||||||
|
"Title": "log.cpp",
|
||||||
|
"DocumentMoniker": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\log.cpp",
|
||||||
|
"RelativeDocumentMoniker": "log.cpp",
|
||||||
|
"ToolTip": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\log.cpp",
|
||||||
|
"RelativeToolTip": "log.cpp",
|
||||||
|
"ViewState": "AQIAAAAAAAAAAAAAAAAAABkAAAAGAAAA",
|
||||||
|
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000677|",
|
||||||
|
"WhenOpened": "2024-01-28T20:40:06.295Z",
|
||||||
|
"EditorCaption": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"$type": "Document",
|
||||||
|
"DocumentIndex": 21,
|
||||||
|
"Title": "local_schedule.h",
|
||||||
|
"DocumentMoniker": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\local_schedule.h",
|
||||||
|
"RelativeDocumentMoniker": "local_schedule.h",
|
||||||
|
"ToolTip": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\local_schedule.h",
|
||||||
|
"RelativeToolTip": "local_schedule.h",
|
||||||
|
"ViewState": "AQIAAAAAAAAAAAAAAAAAAAoAAAAvAAAA",
|
||||||
|
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000680|",
|
||||||
|
"WhenOpened": "2024-01-28T20:40:06.295Z",
|
||||||
|
"EditorCaption": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"$type": "Document",
|
||||||
|
"DocumentIndex": 22,
|
||||||
|
"Title": "scan.h",
|
||||||
|
"DocumentMoniker": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\scan.h",
|
||||||
|
"RelativeDocumentMoniker": "scan.h",
|
||||||
|
"ToolTip": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\scan.h",
|
||||||
|
"RelativeToolTip": "scan.h",
|
||||||
|
"ViewState": "AQIAAAAAAAAAAAAAAAAAAA4AAAAdAAAA",
|
||||||
|
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000680|",
|
||||||
|
"WhenOpened": "2024-01-28T20:40:06.295Z",
|
||||||
|
"EditorCaption": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"$type": "Document",
|
||||||
|
"DocumentIndex": 23,
|
||||||
|
"Title": "queue_ctrl.h",
|
||||||
|
"DocumentMoniker": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\queue_ctrl.h",
|
||||||
|
"RelativeDocumentMoniker": "queue_ctrl.h",
|
||||||
|
"ToolTip": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\queue_ctrl.h",
|
||||||
|
"RelativeToolTip": "queue_ctrl.h",
|
||||||
|
"ViewState": "AQIAAAAAAAAAAAAAAAAAAAgAAAAXAAAA",
|
||||||
|
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000680|",
|
||||||
|
"WhenOpened": "2024-01-28T20:40:06.295Z",
|
||||||
|
"EditorCaption": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"$type": "Document",
|
||||||
|
"DocumentIndex": 24,
|
||||||
|
"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": "AQIAAAAAAAAAAAAAAAAAAAUAAAAaAAAA",
|
||||||
|
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000677|",
|
||||||
|
"WhenOpened": "2024-01-28T20:40:06.295Z",
|
||||||
|
"EditorCaption": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"$type": "Document",
|
||||||
|
"DocumentIndex": 25,
|
||||||
|
"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": "AQIAAAAAAAAAAAAAAAAAAAgAAAAbAAAA",
|
||||||
|
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000680|",
|
||||||
|
"WhenOpened": "2024-01-28T20:40:06.31Z",
|
||||||
|
"EditorCaption": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"$type": "Document",
|
||||||
|
"DocumentIndex": 26,
|
||||||
|
"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": "AQIAAAAAAAAAAAAAAAAAAAwAAAAPAAAA",
|
||||||
|
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000677|",
|
||||||
|
"WhenOpened": "2024-01-28T20:40:06.31Z",
|
||||||
|
"EditorCaption": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"$type": "Document",
|
||||||
|
"DocumentIndex": 27,
|
||||||
|
"Title": "md5hash.h",
|
||||||
|
"DocumentMoniker": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\md5hash.h",
|
||||||
|
"RelativeDocumentMoniker": "md5hash.h",
|
||||||
|
"ToolTip": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\md5hash.h",
|
||||||
|
"RelativeToolTip": "md5hash.h",
|
||||||
|
"ViewState": "AQIAAAAAAAAAAAAAAAAAAAgAAAAxAAAA",
|
||||||
|
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000680|",
|
||||||
|
"WhenOpened": "2024-01-28T20:40:06.315Z",
|
||||||
|
"EditorCaption": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"$type": "Document",
|
||||||
|
"DocumentIndex": 28,
|
||||||
|
"Title": "permissions.cpp",
|
||||||
|
"DocumentMoniker": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\permissions.cpp",
|
||||||
|
"RelativeDocumentMoniker": "permissions.cpp",
|
||||||
|
"ToolTip": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\permissions.cpp",
|
||||||
|
"RelativeToolTip": "permissions.cpp",
|
||||||
|
"ViewState": "AQIAAAAAAAAAAAAAAAAAABYAAAABAAAA",
|
||||||
|
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000677|",
|
||||||
|
"WhenOpened": "2024-01-28T20:40:06.315Z",
|
||||||
|
"EditorCaption": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"$type": "Document",
|
||||||
|
"DocumentIndex": 1,
|
||||||
|
"Title": "connect.cpp",
|
||||||
|
"DocumentMoniker": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\connect.cpp",
|
||||||
|
"RelativeDocumentMoniker": "connect.cpp",
|
||||||
|
"ToolTip": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\connect.cpp",
|
||||||
|
"RelativeToolTip": "connect.cpp",
|
||||||
|
"ViewState": "AQIAAAAAAAAAAAAAAAAAAB0AAAAUAAAA",
|
||||||
|
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000677|",
|
||||||
|
"WhenOpened": "2024-01-28T20:40:06.315Z",
|
||||||
|
"EditorCaption": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"$type": "Document",
|
||||||
|
"DocumentIndex": 7,
|
||||||
|
"Title": "md5hash.cpp",
|
||||||
|
"DocumentMoniker": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\md5hash.cpp",
|
||||||
|
"RelativeDocumentMoniker": "md5hash.cpp",
|
||||||
|
"ToolTip": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\md5hash.cpp",
|
||||||
|
"RelativeToolTip": "md5hash.cpp",
|
||||||
|
"ViewState": "AQIAAEAAAAAAAAAAAAAkwFQAAAAOAAAA",
|
||||||
|
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000677|",
|
||||||
|
"WhenOpened": "2024-01-28T20:40:06.248Z",
|
||||||
|
"EditorCaption": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"$type": "Document",
|
||||||
|
"DocumentIndex": 0,
|
||||||
|
"Title": "virus_ctrl.cpp",
|
||||||
|
"DocumentMoniker": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\virus_ctrl.cpp",
|
||||||
|
"RelativeDocumentMoniker": "virus_ctrl.cpp",
|
||||||
|
"ToolTip": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\virus_ctrl.cpp",
|
||||||
|
"RelativeToolTip": "virus_ctrl.cpp",
|
||||||
|
"ViewState": "AQIAADkAAAAAAAAAAAAAAGEAAAAvAAAA",
|
||||||
|
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000677|",
|
||||||
|
"WhenOpened": "2024-02-18T12:49:41.861Z",
|
||||||
|
"EditorCaption": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"$type": "Document",
|
||||||
|
"DocumentIndex": 12,
|
||||||
|
"Title": "security.cpp",
|
||||||
|
"DocumentMoniker": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\security.cpp",
|
||||||
|
"RelativeDocumentMoniker": "security.cpp",
|
||||||
|
"ToolTip": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\security.cpp",
|
||||||
|
"RelativeToolTip": "security.cpp",
|
||||||
|
"ViewState": "AQIAAAAAAAAAAAAAAAAAAEIAAAAMAAAA",
|
||||||
|
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000677|",
|
||||||
|
"WhenOpened": "2024-02-17T09:04:52.66Z",
|
||||||
|
"EditorCaption": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"$type": "Document",
|
||||||
|
"DocumentIndex": 17,
|
||||||
|
"Title": "security.h",
|
||||||
|
"DocumentMoniker": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\security.h",
|
||||||
|
"RelativeDocumentMoniker": "security.h",
|
||||||
|
"ToolTip": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\security.h",
|
||||||
|
"RelativeToolTip": "security.h",
|
||||||
|
"ViewState": "AQIAAAAAAAAAAAAAAAAAAAgAAAAFAAAA",
|
||||||
|
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000680|",
|
||||||
|
"WhenOpened": "2024-02-17T09:05:01.412Z",
|
||||||
|
"EditorCaption": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"$type": "Document",
|
||||||
|
"DocumentIndex": 15,
|
||||||
|
"Title": "local_com.cpp",
|
||||||
|
"DocumentMoniker": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\local_com.cpp",
|
||||||
|
"RelativeDocumentMoniker": "local_com.cpp",
|
||||||
|
"ToolTip": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\local_com.cpp",
|
||||||
|
"RelativeToolTip": "local_com.cpp",
|
||||||
|
"ViewState": "AQIAAAAAAAAAAAAAAAAAAAQAAAAXAAAA",
|
||||||
|
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000677|",
|
||||||
|
"WhenOpened": "2024-01-28T20:40:06.217Z",
|
||||||
|
"EditorCaption": ""
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"$type": "Document",
|
||||||
|
"DocumentIndex": 29,
|
||||||
|
"Title": "permissions.h",
|
||||||
|
"DocumentMoniker": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\permissions.h",
|
||||||
|
"RelativeDocumentMoniker": "permissions.h",
|
||||||
|
"ToolTip": "C:\\Users\\janis\\Documents\\Projekte_mit_c\\ma\\ma\\src\\client_backend\\permissions.h",
|
||||||
|
"RelativeToolTip": "permissions.h",
|
||||||
|
"ViewState": "AQIAAAAAAAAAAAAAAAAAAA4AAAASAAAA",
|
||||||
|
"Icon": "ae27a6b0-e345-4288-96df-5eaf394ee369.000680|",
|
||||||
|
"WhenOpened": "2024-01-28T20:40:06.315Z",
|
||||||
|
"EditorCaption": ""
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
@@ -292,7 +292,7 @@ void monitor_directory(LPCSTR directory) {
|
|||||||
buffer,
|
buffer,
|
||||||
bufferSize,
|
bufferSize,
|
||||||
TRUE,
|
TRUE,
|
||||||
FILE_NOTIFY_CHANGE_FILE_NAME | FILE_NOTIFY_CHANGE_LAST_WRITE,
|
FILE_NOTIFY_CHANGE_FILE_NAME | FILE_NOTIFY_CHANGE_LAST_WRITE | FILE_NOTIFY_CHANGE_SIZE,
|
||||||
NULL,
|
NULL,
|
||||||
&overlapped,
|
&overlapped,
|
||||||
NULL) == 0) {
|
NULL) == 0) {
|
||||||
|
|||||||
373
src/client_backend/check_dir.cpp~RF18b756d.TMP
Normal file
373
src/client_backend/check_dir.cpp~RF18b756d.TMP
Normal file
@@ -0,0 +1,373 @@
|
|||||||
|
#ifndef CHECK_DIR_CPP
|
||||||
|
#define CHECK_DIR_CPP
|
||||||
|
#include "check_dir.h"
|
||||||
|
#include "well_known.h"
|
||||||
|
#include "log.h"
|
||||||
|
#include "md5hash.h"
|
||||||
|
#include "scan.h"
|
||||||
|
#include "app_ctrl.h"
|
||||||
|
#include "virus_ctrl.h"
|
||||||
|
#include "scan.h"
|
||||||
|
#include "settings.h"
|
||||||
|
/* old implementation. used up a lot of resource and did not work properly.
|
||||||
|
void add_to_temp_db(const char*hash) {
|
||||||
|
//PERIODIC_FOLDER_SCAN_TEMP_DB
|
||||||
|
FILE*fp;
|
||||||
|
if (fopen_s(&fp, PERIODIC_FOLDER_SCAN_TEMP_DB, "a") != 0) {
|
||||||
|
log(LOGLEVEL::ERR, "[add_to_temp_db()]: Error opening temp db: ", PERIODIC_FOLDER_SCAN_TEMP_DB);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
//log(LOGLEVEL::INFO, "[add_to_temp_db()]: Adding hash: ", hash, " to temp db: ", PERIODIC_FOLDER_SCAN_TEMP_DB);
|
||||||
|
fprintf_s(fp, "%s\n", hash);
|
||||||
|
fclose(fp);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
void scan_folder_recursive(const std::string& directory, int thread_id,const std::string&db_file) {
|
||||||
|
std::string search_path = directory + "\\*.*";
|
||||||
|
WIN32_FIND_DATA find_file_data;
|
||||||
|
HANDLE hFind = FindFirstFile(search_path.c_str(), &find_file_data);
|
||||||
|
|
||||||
|
if (hFind == INVALID_HANDLE_VALUE) {
|
||||||
|
//std::cerr << "Error opening directory: " << directory << std::endl;
|
||||||
|
log(LOGLEVEL::ERR, "[scan_folder_recursive()]: Error opening directory: ", directory ," while scanning folder for new files");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
do {
|
||||||
|
if (strcmp(find_file_data.cFileName, ".") == 0 || strcmp(find_file_data.cFileName, "..") == 0) {
|
||||||
|
continue; // Skip the current and parent directories
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
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, thread_id,db_file);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// If it's a file, check if it is in db, else scan it and add it to db
|
||||||
|
char*hash = new char[300];
|
||||||
|
md5_file(full_path.c_str(), hash);
|
||||||
|
//now find hash in db
|
||||||
|
if (scan_hash(db_file.c_str(), hash)==1) {
|
||||||
|
//file is allready in db, skipping
|
||||||
|
//in order to not keep hashes that are not present anymore in the db, we have to write this hash into a temp dir, which is at the end copied into the main db
|
||||||
|
add_to_temp_db(hash);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
//scan the file and add it to db
|
||||||
|
//scan for virus
|
||||||
|
|
||||||
|
switch (scan_hash(hash)) {
|
||||||
|
case 1:
|
||||||
|
//virus found
|
||||||
|
//log it
|
||||||
|
log(LOGLEVEL::VIRUS, "[scan_folder_recursive()]: Virus found in file: ", full_path, " while scanning ", directory, " for new files");
|
||||||
|
//virus_ctrl_store(full_path.c_str(), hash, "fs");
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
//error
|
||||||
|
log(LOGLEVEL::ERR, "[scan_folder_recursive()]: Error while scanning file: ", full_path, " while scanning ", directory, " for new files");
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
//not a virus
|
||||||
|
add_to_temp_db(hash);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
} while (FindNextFile(hFind, &find_file_data) != 0);
|
||||||
|
|
||||||
|
FindClose(hFind);
|
||||||
|
}
|
||||||
|
int check_scan_dir(char*dirpath,char*dirname) {
|
||||||
|
if (can_scan_folder()) {
|
||||||
|
scan_folder_init();
|
||||||
|
//FOLDER_DATABASE_DIR <= the folder where the database for folder checking is stored
|
||||||
|
//the database is stored in the following format:
|
||||||
|
/* a file per folder (and its subfolders)
|
||||||
|
in this db file the hashes of all the files in the folder (and its subfolders) are stored
|
||||||
|
If a file is detected, which hash is not known, it gets scanned and added to the db. if a hash is inside the db, which is not present in the folder, the hash is rempved from the db
|
||||||
|
|
||||||
|
*/
|
||||||
|
/*
|
||||||
|
FILE* fp;
|
||||||
|
char* path = new char[300];
|
||||||
|
path[0] = '\0';
|
||||||
|
//build up the path for the db file.
|
||||||
|
strcpy_s(path, 295, FOLDER_DATABASE_DIR);
|
||||||
|
strcat_s(path, 295, "\\");
|
||||||
|
strcat_s(path, 295, dirname);
|
||||||
|
strcat_s(path, 295, ".jdbf");
|
||||||
|
|
||||||
|
//check if the file exists. else we cannot scan the folder
|
||||||
|
if ((fopen_s(&fp, path, "r")) != 0) {
|
||||||
|
log(LOGLEVEL::ERR, "[check_scan_dir()]: Error opening database: ", path, " while scanning folder for new files; aborting");
|
||||||
|
//try to create the file
|
||||||
|
if (fopen_s(&fp, path, "w") != 0) {
|
||||||
|
log(LOGLEVEL::ERR, "[check_scan_dir()]: Error creating new database: ", path, " while scanning folder for new files; aborting");
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
fprintf_s(fp, "%s\n", "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA");//write A 32 times A into the file. So the algorithm ha ssomething to map into memory. else it might throw an error
|
||||||
|
fclose(fp);
|
||||||
|
}
|
||||||
|
scan_folder_shutdown();
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
fclose(fp);
|
||||||
|
//process the files of the folder.
|
||||||
|
//first: calculate hash of file
|
||||||
|
//second: check if hash is in db
|
||||||
|
//if not, scan file and add it to db (only add it if it is not detected as a virus)
|
||||||
|
scan_folder_recursive(dirpath, 0,path);
|
||||||
|
//process the found viruses
|
||||||
|
virus_ctrl_process("fs");
|
||||||
|
}
|
||||||
|
delete[] path;
|
||||||
|
scan_folder_shutdown();
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
|
||||||
|
//there is already a folder scan happening
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
*/
|
||||||
|
bool is_directory(const std::string& path) {
|
||||||
|
DWORD attributes = GetFileAttributes(path.c_str());
|
||||||
|
|
||||||
|
if (attributes == INVALID_FILE_ATTRIBUTES) {
|
||||||
|
// Handle the error, e.g., by printing an error message
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return (attributes & FILE_ATTRIBUTE_DIRECTORY) != 0;
|
||||||
|
}
|
||||||
|
void process_changes(const FILE_NOTIFY_INFORMATION* pInfo) {
|
||||||
|
// Allocate a buffer for the file name and copy the content
|
||||||
|
std::wstring fileName(pInfo->FileName, pInfo->FileNameLength / sizeof(wchar_t));
|
||||||
|
|
||||||
|
//convert wstring to string
|
||||||
|
std::string filename_str(fileName.begin(), fileName.end());
|
||||||
|
filename_str = "c:\\" + filename_str;
|
||||||
|
//scan the file and send it to virus_ctrl if it is a virus and then process it
|
||||||
|
std::transform(filename_str.begin(), filename_str.end(), filename_str.begin(), ::tolower);
|
||||||
|
if (!is_folder_included(filename_str.c_str()) or is_directory(filename_str.c_str()) or is_folder_excluded(filename_str.c_str())) {
|
||||||
|
//dont scan excluded files or folders
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
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");
|
||||||
|
}
|
||||||
|
/* 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) {
|
||||||
|
// Open the directory for monitoring
|
||||||
|
HANDLE hDir = CreateFile(
|
||||||
|
directory,
|
||||||
|
FILE_LIST_DIRECTORY,
|
||||||
|
FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE,
|
||||||
|
NULL,
|
||||||
|
OPEN_EXISTING,
|
||||||
|
FILE_FLAG_BACKUP_SEMANTICS | FILE_FLAG_OVERLAPPED,
|
||||||
|
NULL
|
||||||
|
);
|
||||||
|
|
||||||
|
if (hDir == INVALID_HANDLE_VALUE) {
|
||||||
|
log(LOGLEVEL::ERR, "[monitor_directory()]: Error opening directory: ", directory, " while monitoring directory for changes");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create a buffer for file change notifications
|
||||||
|
constexpr DWORD bufferSize = 4096;
|
||||||
|
BYTE buffer[bufferSize];
|
||||||
|
|
||||||
|
// Monitor the directory for changes
|
||||||
|
OVERLAPPED overlapped;
|
||||||
|
memset(&overlapped, 0, sizeof(overlapped));
|
||||||
|
overlapped.hEvent = CreateEvent(NULL, TRUE, FALSE, NULL);
|
||||||
|
|
||||||
|
if (ReadDirectoryChangesW(
|
||||||
|
hDir,
|
||||||
|
buffer,
|
||||||
|
bufferSize,
|
||||||
|
TRUE,
|
||||||
|
FILE_NOTIFY_CHANGE_FILE_NAME | FILE_NOTIFY_CHANGE_DIR_NAME | FILE_NOTIFY_CHANGE_SIZE,
|
||||||
|
NULL,
|
||||||
|
&overlapped,
|
||||||
|
NULL) == 0) {
|
||||||
|
log(LOGLEVEL::ERR, "[monitor_directory()]: Error reading directory changes: ", GetLastError(), " while monitoring directory for changes");
|
||||||
|
CloseHandle(hDir);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
log(LOGLEVEL::INFO, "[monitor_directory()]: Monitoring directory: ", directory, " for changes");
|
||||||
|
//print_exclusions();
|
||||||
|
|
||||||
|
// Wait for changes
|
||||||
|
while (true) {
|
||||||
|
DWORD bytesReturned;
|
||||||
|
if (GetOverlappedResult(hDir, &overlapped, &bytesReturned, TRUE)) {
|
||||||
|
// Process the changes in the buffer
|
||||||
|
FILE_NOTIFY_INFORMATION* pInfo = reinterpret_cast<FILE_NOTIFY_INFORMATION*>(buffer);
|
||||||
|
|
||||||
|
do {
|
||||||
|
process_changes(pInfo);
|
||||||
|
|
||||||
|
pInfo = reinterpret_cast<FILE_NOTIFY_INFORMATION*>(
|
||||||
|
reinterpret_cast<BYTE*>(pInfo) + pInfo->NextEntryOffset);
|
||||||
|
|
||||||
|
} while (pInfo->NextEntryOffset != 0);
|
||||||
|
|
||||||
|
// Reset the event for the next wait
|
||||||
|
ResetEvent(overlapped.hEvent);
|
||||||
|
|
||||||
|
// Continue monitoring
|
||||||
|
if (ReadDirectoryChangesW(
|
||||||
|
hDir,
|
||||||
|
buffer,
|
||||||
|
bufferSize,
|
||||||
|
TRUE,
|
||||||
|
FILE_NOTIFY_CHANGE_FILE_NAME | FILE_NOTIFY_CHANGE_DIR_NAME | FILE_NOTIFY_CHANGE_SIZE,
|
||||||
|
NULL,
|
||||||
|
&overlapped,
|
||||||
|
NULL) == 0) {
|
||||||
|
log(LOGLEVEL::ERR, "[monitor_directory()]: Error reading directory changes: ", GetLastError(), " while monitoring directory for changes");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
DWORD error = GetLastError();
|
||||||
|
if (error != ERROR_IO_PENDING) {
|
||||||
|
log(LOGLEVEL::ERR, "[monitor_directory()]: Error reading directory changes: ", error, " while monitoring directory for changes");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Wait for the event to be signaled (infinite timeout)
|
||||||
|
WaitForSingleObject(overlapped.hEvent, INFINITE);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Cleanup
|
||||||
|
CloseHandle(overlapped.hEvent);
|
||||||
|
CloseHandle(hDir);
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
void monitor_directory(LPCSTR directory) {
|
||||||
|
// Open the directory for monitoring
|
||||||
|
HANDLE hDir = CreateFile(
|
||||||
|
directory,
|
||||||
|
FILE_LIST_DIRECTORY,
|
||||||
|
FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE,
|
||||||
|
NULL,
|
||||||
|
OPEN_EXISTING,
|
||||||
|
FILE_FLAG_BACKUP_SEMANTICS | FILE_FLAG_OVERLAPPED,
|
||||||
|
NULL
|
||||||
|
);
|
||||||
|
|
||||||
|
if (hDir == INVALID_HANDLE_VALUE) {
|
||||||
|
log(LOGLEVEL::ERR, "[monitor_directory()]: Error opening directory: ", directory, " while monitoring directory for changes");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create a buffer for file change notifications
|
||||||
|
constexpr DWORD bufferSize = 4096;
|
||||||
|
BYTE buffer[bufferSize];
|
||||||
|
|
||||||
|
// Monitor the directory for changes
|
||||||
|
OVERLAPPED overlapped;
|
||||||
|
memset(&overlapped, 0, sizeof(overlapped));
|
||||||
|
memset(buffer, 0, bufferSize);
|
||||||
|
overlapped.hEvent = CreateEvent(NULL, TRUE, FALSE, NULL);
|
||||||
|
|
||||||
|
if (ReadDirectoryChangesW(
|
||||||
|
hDir,
|
||||||
|
buffer,
|
||||||
|
bufferSize,
|
||||||
|
TRUE,
|
||||||
|
FILE_NOTIFY_CHANGE_FILE_NAME | FILE_NOTIFY_CHANGE_LAST_WRITE,
|
||||||
|
NULL,
|
||||||
|
&overlapped,
|
||||||
|
NULL) == 0) {
|
||||||
|
log(LOGLEVEL::ERR, "[monitor_directory()]: Error reading directory changes: ", GetLastError(), " while monitoring directory for changes");
|
||||||
|
CloseHandle(hDir);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
log(LOGLEVEL::INFO, "[monitor_directory()]: Monitoring directory: ", directory, " for changes");
|
||||||
|
|
||||||
|
// Wait for changes
|
||||||
|
while (!app_stop()) {
|
||||||
|
DWORD bytesReturned;
|
||||||
|
DWORD waitStatus = WaitForSingleObject(overlapped.hEvent, INFINITE);
|
||||||
|
|
||||||
|
if (waitStatus == WAIT_OBJECT_0) {
|
||||||
|
if (GetOverlappedResult(hDir, &overlapped, &bytesReturned, FALSE)) {
|
||||||
|
// Process the changes in the buffer
|
||||||
|
FILE_NOTIFY_INFORMATION* pInfo = reinterpret_cast<FILE_NOTIFY_INFORMATION*>(buffer);
|
||||||
|
|
||||||
|
do {
|
||||||
|
process_changes(pInfo);
|
||||||
|
|
||||||
|
pInfo = reinterpret_cast<FILE_NOTIFY_INFORMATION*>(
|
||||||
|
reinterpret_cast<BYTE*>(pInfo) + pInfo->NextEntryOffset);
|
||||||
|
|
||||||
|
} while (pInfo->NextEntryOffset != 0);
|
||||||
|
|
||||||
|
// Reset the event for the next wait
|
||||||
|
ResetEvent(overlapped.hEvent);
|
||||||
|
memset(buffer, 0, bufferSize);
|
||||||
|
|
||||||
|
// Continue monitoring
|
||||||
|
if (ReadDirectoryChangesW(
|
||||||
|
hDir,
|
||||||
|
buffer,
|
||||||
|
bufferSize,
|
||||||
|
TRUE,
|
||||||
|
FILE_NOTIFY_CHANGE_FILE_NAME | FILE_NOTIFY_CHANGE_LAST_WRITE,
|
||||||
|
NULL,
|
||||||
|
&overlapped,
|
||||||
|
NULL) == 0) {
|
||||||
|
log(LOGLEVEL::ERR, "[monitor_directory()]: Error reading directory changes: ", GetLastError(), " while monitoring directory for changes");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
log(LOGLEVEL::ERR, "[monitor_directory()]: GetOverlappedResult failed: ", GetLastError());
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
log(LOGLEVEL::ERR, "[monitor_directory()]: WaitForSingleObject failed: ", GetLastError());
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Cleanup
|
||||||
|
CloseHandle(overlapped.hEvent);
|
||||||
|
CloseHandle(hDir);
|
||||||
|
}
|
||||||
|
|
||||||
|
void folder_scanner() {
|
||||||
|
|
||||||
|
//we are in a completely seperate thread then the main thread; unlimited resources wuhuii
|
||||||
|
FILE*fp;
|
||||||
|
char* path = new char[300];
|
||||||
|
char* foldername = new char[300];
|
||||||
|
|
||||||
|
//start the watch dir function used to monitor the dir for new files
|
||||||
|
monitor_directory("C:\\");
|
||||||
|
|
||||||
|
|
||||||
|
delete[] path;
|
||||||
|
delete[] foldername;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif // !CHECK_DIR_CPP
|
||||||
373
src/client_backend/check_dir.cpp~RF18b83f4.TMP
Normal file
373
src/client_backend/check_dir.cpp~RF18b83f4.TMP
Normal file
@@ -0,0 +1,373 @@
|
|||||||
|
#ifndef CHECK_DIR_CPP
|
||||||
|
#define CHECK_DIR_CPP
|
||||||
|
#include "check_dir.h"
|
||||||
|
#include "well_known.h"
|
||||||
|
#include "log.h"
|
||||||
|
#include "md5hash.h"
|
||||||
|
#include "scan.h"
|
||||||
|
#include "app_ctrl.h"
|
||||||
|
#include "virus_ctrl.h"
|
||||||
|
#include "scan.h"
|
||||||
|
#include "settings.h"
|
||||||
|
/* old implementation. used up a lot of resource and did not work properly.
|
||||||
|
void add_to_temp_db(const char*hash) {
|
||||||
|
//PERIODIC_FOLDER_SCAN_TEMP_DB
|
||||||
|
FILE*fp;
|
||||||
|
if (fopen_s(&fp, PERIODIC_FOLDER_SCAN_TEMP_DB, "a") != 0) {
|
||||||
|
log(LOGLEVEL::ERR, "[add_to_temp_db()]: Error opening temp db: ", PERIODIC_FOLDER_SCAN_TEMP_DB);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
//log(LOGLEVEL::INFO, "[add_to_temp_db()]: Adding hash: ", hash, " to temp db: ", PERIODIC_FOLDER_SCAN_TEMP_DB);
|
||||||
|
fprintf_s(fp, "%s\n", hash);
|
||||||
|
fclose(fp);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
void scan_folder_recursive(const std::string& directory, int thread_id,const std::string&db_file) {
|
||||||
|
std::string search_path = directory + "\\*.*";
|
||||||
|
WIN32_FIND_DATA find_file_data;
|
||||||
|
HANDLE hFind = FindFirstFile(search_path.c_str(), &find_file_data);
|
||||||
|
|
||||||
|
if (hFind == INVALID_HANDLE_VALUE) {
|
||||||
|
//std::cerr << "Error opening directory: " << directory << std::endl;
|
||||||
|
log(LOGLEVEL::ERR, "[scan_folder_recursive()]: Error opening directory: ", directory ," while scanning folder for new files");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
do {
|
||||||
|
if (strcmp(find_file_data.cFileName, ".") == 0 || strcmp(find_file_data.cFileName, "..") == 0) {
|
||||||
|
continue; // Skip the current and parent directories
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
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, thread_id,db_file);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
// If it's a file, check if it is in db, else scan it and add it to db
|
||||||
|
char*hash = new char[300];
|
||||||
|
md5_file(full_path.c_str(), hash);
|
||||||
|
//now find hash in db
|
||||||
|
if (scan_hash(db_file.c_str(), hash)==1) {
|
||||||
|
//file is allready in db, skipping
|
||||||
|
//in order to not keep hashes that are not present anymore in the db, we have to write this hash into a temp dir, which is at the end copied into the main db
|
||||||
|
add_to_temp_db(hash);
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
//scan the file and add it to db
|
||||||
|
//scan for virus
|
||||||
|
|
||||||
|
switch (scan_hash(hash)) {
|
||||||
|
case 1:
|
||||||
|
//virus found
|
||||||
|
//log it
|
||||||
|
log(LOGLEVEL::VIRUS, "[scan_folder_recursive()]: Virus found in file: ", full_path, " while scanning ", directory, " for new files");
|
||||||
|
//virus_ctrl_store(full_path.c_str(), hash, "fs");
|
||||||
|
break;
|
||||||
|
case 2:
|
||||||
|
//error
|
||||||
|
log(LOGLEVEL::ERR, "[scan_folder_recursive()]: Error while scanning file: ", full_path, " while scanning ", directory, " for new files");
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
//not a virus
|
||||||
|
add_to_temp_db(hash);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
} while (FindNextFile(hFind, &find_file_data) != 0);
|
||||||
|
|
||||||
|
FindClose(hFind);
|
||||||
|
}
|
||||||
|
int check_scan_dir(char*dirpath,char*dirname) {
|
||||||
|
if (can_scan_folder()) {
|
||||||
|
scan_folder_init();
|
||||||
|
//FOLDER_DATABASE_DIR <= the folder where the database for folder checking is stored
|
||||||
|
//the database is stored in the following format:
|
||||||
|
/* a file per folder (and its subfolders)
|
||||||
|
in this db file the hashes of all the files in the folder (and its subfolders) are stored
|
||||||
|
If a file is detected, which hash is not known, it gets scanned and added to the db. if a hash is inside the db, which is not present in the folder, the hash is rempved from the db
|
||||||
|
|
||||||
|
*/
|
||||||
|
/*
|
||||||
|
FILE* fp;
|
||||||
|
char* path = new char[300];
|
||||||
|
path[0] = '\0';
|
||||||
|
//build up the path for the db file.
|
||||||
|
strcpy_s(path, 295, FOLDER_DATABASE_DIR);
|
||||||
|
strcat_s(path, 295, "\\");
|
||||||
|
strcat_s(path, 295, dirname);
|
||||||
|
strcat_s(path, 295, ".jdbf");
|
||||||
|
|
||||||
|
//check if the file exists. else we cannot scan the folder
|
||||||
|
if ((fopen_s(&fp, path, "r")) != 0) {
|
||||||
|
log(LOGLEVEL::ERR, "[check_scan_dir()]: Error opening database: ", path, " while scanning folder for new files; aborting");
|
||||||
|
//try to create the file
|
||||||
|
if (fopen_s(&fp, path, "w") != 0) {
|
||||||
|
log(LOGLEVEL::ERR, "[check_scan_dir()]: Error creating new database: ", path, " while scanning folder for new files; aborting");
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
fprintf_s(fp, "%s\n", "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA");//write A 32 times A into the file. So the algorithm ha ssomething to map into memory. else it might throw an error
|
||||||
|
fclose(fp);
|
||||||
|
}
|
||||||
|
scan_folder_shutdown();
|
||||||
|
return 1;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
fclose(fp);
|
||||||
|
//process the files of the folder.
|
||||||
|
//first: calculate hash of file
|
||||||
|
//second: check if hash is in db
|
||||||
|
//if not, scan file and add it to db (only add it if it is not detected as a virus)
|
||||||
|
scan_folder_recursive(dirpath, 0,path);
|
||||||
|
//process the found viruses
|
||||||
|
virus_ctrl_process("fs");
|
||||||
|
}
|
||||||
|
delete[] path;
|
||||||
|
scan_folder_shutdown();
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
|
||||||
|
//there is already a folder scan happening
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
*/
|
||||||
|
bool is_directory(const std::string& path) {
|
||||||
|
DWORD attributes = GetFileAttributes(path.c_str());
|
||||||
|
|
||||||
|
if (attributes == INVALID_FILE_ATTRIBUTES) {
|
||||||
|
// Handle the error, e.g., by printing an error message
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return (attributes & FILE_ATTRIBUTE_DIRECTORY) != 0;
|
||||||
|
}
|
||||||
|
void process_changes(const FILE_NOTIFY_INFORMATION* pInfo) {
|
||||||
|
// Allocate a buffer for the file name and copy the content
|
||||||
|
std::wstring fileName(pInfo->FileName, pInfo->FileNameLength / sizeof(wchar_t));
|
||||||
|
|
||||||
|
//convert wstring to string
|
||||||
|
std::string filename_str(fileName.begin(), fileName.end());
|
||||||
|
filename_str = "c:\\" + filename_str;
|
||||||
|
//scan the file and send it to virus_ctrl if it is a virus and then process it
|
||||||
|
std::transform(filename_str.begin(), filename_str.end(), filename_str.begin(), ::tolower);
|
||||||
|
if (!is_folder_included(filename_str.c_str()) or is_directory(filename_str.c_str()) or is_folder_excluded(filename_str.c_str())) {
|
||||||
|
//dont scan excluded files or folders
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
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");
|
||||||
|
}
|
||||||
|
/* 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) {
|
||||||
|
// Open the directory for monitoring
|
||||||
|
HANDLE hDir = CreateFile(
|
||||||
|
directory,
|
||||||
|
FILE_LIST_DIRECTORY,
|
||||||
|
FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE,
|
||||||
|
NULL,
|
||||||
|
OPEN_EXISTING,
|
||||||
|
FILE_FLAG_BACKUP_SEMANTICS | FILE_FLAG_OVERLAPPED,
|
||||||
|
NULL
|
||||||
|
);
|
||||||
|
|
||||||
|
if (hDir == INVALID_HANDLE_VALUE) {
|
||||||
|
log(LOGLEVEL::ERR, "[monitor_directory()]: Error opening directory: ", directory, " while monitoring directory for changes");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create a buffer for file change notifications
|
||||||
|
constexpr DWORD bufferSize = 4096;
|
||||||
|
BYTE buffer[bufferSize];
|
||||||
|
|
||||||
|
// Monitor the directory for changes
|
||||||
|
OVERLAPPED overlapped;
|
||||||
|
memset(&overlapped, 0, sizeof(overlapped));
|
||||||
|
overlapped.hEvent = CreateEvent(NULL, TRUE, FALSE, NULL);
|
||||||
|
|
||||||
|
if (ReadDirectoryChangesW(
|
||||||
|
hDir,
|
||||||
|
buffer,
|
||||||
|
bufferSize,
|
||||||
|
TRUE,
|
||||||
|
FILE_NOTIFY_CHANGE_FILE_NAME | FILE_NOTIFY_CHANGE_DIR_NAME | FILE_NOTIFY_CHANGE_SIZE,
|
||||||
|
NULL,
|
||||||
|
&overlapped,
|
||||||
|
NULL) == 0) {
|
||||||
|
log(LOGLEVEL::ERR, "[monitor_directory()]: Error reading directory changes: ", GetLastError(), " while monitoring directory for changes");
|
||||||
|
CloseHandle(hDir);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
log(LOGLEVEL::INFO, "[monitor_directory()]: Monitoring directory: ", directory, " for changes");
|
||||||
|
//print_exclusions();
|
||||||
|
|
||||||
|
// Wait for changes
|
||||||
|
while (true) {
|
||||||
|
DWORD bytesReturned;
|
||||||
|
if (GetOverlappedResult(hDir, &overlapped, &bytesReturned, TRUE)) {
|
||||||
|
// Process the changes in the buffer
|
||||||
|
FILE_NOTIFY_INFORMATION* pInfo = reinterpret_cast<FILE_NOTIFY_INFORMATION*>(buffer);
|
||||||
|
|
||||||
|
do {
|
||||||
|
process_changes(pInfo);
|
||||||
|
|
||||||
|
pInfo = reinterpret_cast<FILE_NOTIFY_INFORMATION*>(
|
||||||
|
reinterpret_cast<BYTE*>(pInfo) + pInfo->NextEntryOffset);
|
||||||
|
|
||||||
|
} while (pInfo->NextEntryOffset != 0);
|
||||||
|
|
||||||
|
// Reset the event for the next wait
|
||||||
|
ResetEvent(overlapped.hEvent);
|
||||||
|
|
||||||
|
// Continue monitoring
|
||||||
|
if (ReadDirectoryChangesW(
|
||||||
|
hDir,
|
||||||
|
buffer,
|
||||||
|
bufferSize,
|
||||||
|
TRUE,
|
||||||
|
FILE_NOTIFY_CHANGE_FILE_NAME | FILE_NOTIFY_CHANGE_DIR_NAME | FILE_NOTIFY_CHANGE_SIZE,
|
||||||
|
NULL,
|
||||||
|
&overlapped,
|
||||||
|
NULL) == 0) {
|
||||||
|
log(LOGLEVEL::ERR, "[monitor_directory()]: Error reading directory changes: ", GetLastError(), " while monitoring directory for changes");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
DWORD error = GetLastError();
|
||||||
|
if (error != ERROR_IO_PENDING) {
|
||||||
|
log(LOGLEVEL::ERR, "[monitor_directory()]: Error reading directory changes: ", error, " while monitoring directory for changes");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Wait for the event to be signaled (infinite timeout)
|
||||||
|
WaitForSingleObject(overlapped.hEvent, INFINITE);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Cleanup
|
||||||
|
CloseHandle(overlapped.hEvent);
|
||||||
|
CloseHandle(hDir);
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
|
||||||
|
void monitor_directory(LPCSTR directory) {
|
||||||
|
// Open the directory for monitoring
|
||||||
|
HANDLE hDir = CreateFile(
|
||||||
|
directory,
|
||||||
|
FILE_LIST_DIRECTORY,
|
||||||
|
FILE_SHARE_READ | FILE_SHARE_WRITE
|
||||||
|
NULL,
|
||||||
|
OPEN_EXISTING,
|
||||||
|
FILE_FLAG_BACKUP_SEMANTICS | FILE_FLAG_OVERLAPPED,
|
||||||
|
NULL
|
||||||
|
);
|
||||||
|
|
||||||
|
if (hDir == INVALID_HANDLE_VALUE) {
|
||||||
|
log(LOGLEVEL::ERR, "[monitor_directory()]: Error opening directory: ", directory, " while monitoring directory for changes");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Create a buffer for file change notifications
|
||||||
|
constexpr DWORD bufferSize = 4096;
|
||||||
|
BYTE buffer[bufferSize];
|
||||||
|
|
||||||
|
// Monitor the directory for changes
|
||||||
|
OVERLAPPED overlapped;
|
||||||
|
memset(&overlapped, 0, sizeof(overlapped));
|
||||||
|
memset(buffer, 0, bufferSize);
|
||||||
|
overlapped.hEvent = CreateEvent(NULL, TRUE, FALSE, NULL);
|
||||||
|
|
||||||
|
if (ReadDirectoryChangesW(
|
||||||
|
hDir,
|
||||||
|
buffer,
|
||||||
|
bufferSize,
|
||||||
|
TRUE,
|
||||||
|
FILE_NOTIFY_CHANGE_FILE_NAME | FILE_NOTIFY_CHANGE_LAST_WRITE,
|
||||||
|
NULL,
|
||||||
|
&overlapped,
|
||||||
|
NULL) == 0) {
|
||||||
|
log(LOGLEVEL::ERR, "[monitor_directory()]: Error reading directory changes: ", GetLastError(), " while monitoring directory for changes");
|
||||||
|
CloseHandle(hDir);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
log(LOGLEVEL::INFO, "[monitor_directory()]: Monitoring directory: ", directory, " for changes");
|
||||||
|
|
||||||
|
// Wait for changes
|
||||||
|
while (!app_stop()) {
|
||||||
|
DWORD bytesReturned;
|
||||||
|
DWORD waitStatus = WaitForSingleObject(overlapped.hEvent, INFINITE);
|
||||||
|
|
||||||
|
if (waitStatus == WAIT_OBJECT_0) {
|
||||||
|
if (GetOverlappedResult(hDir, &overlapped, &bytesReturned, FALSE)) {
|
||||||
|
// Process the changes in the buffer
|
||||||
|
FILE_NOTIFY_INFORMATION* pInfo = reinterpret_cast<FILE_NOTIFY_INFORMATION*>(buffer);
|
||||||
|
|
||||||
|
do {
|
||||||
|
process_changes(pInfo);
|
||||||
|
|
||||||
|
pInfo = reinterpret_cast<FILE_NOTIFY_INFORMATION*>(
|
||||||
|
reinterpret_cast<BYTE*>(pInfo) + pInfo->NextEntryOffset);
|
||||||
|
|
||||||
|
} while (pInfo->NextEntryOffset != 0);
|
||||||
|
|
||||||
|
// Reset the event for the next wait
|
||||||
|
ResetEvent(overlapped.hEvent);
|
||||||
|
memset(buffer, 0, bufferSize);
|
||||||
|
|
||||||
|
// Continue monitoring
|
||||||
|
if (ReadDirectoryChangesW(
|
||||||
|
hDir,
|
||||||
|
buffer,
|
||||||
|
bufferSize,
|
||||||
|
TRUE,
|
||||||
|
FILE_NOTIFY_CHANGE_FILE_NAME | FILE_NOTIFY_CHANGE_LAST_WRITE,
|
||||||
|
NULL,
|
||||||
|
&overlapped,
|
||||||
|
NULL) == 0) {
|
||||||
|
log(LOGLEVEL::ERR, "[monitor_directory()]: Error reading directory changes: ", GetLastError(), " while monitoring directory for changes");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
log(LOGLEVEL::ERR, "[monitor_directory()]: GetOverlappedResult failed: ", GetLastError());
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
log(LOGLEVEL::ERR, "[monitor_directory()]: WaitForSingleObject failed: ", GetLastError());
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Cleanup
|
||||||
|
CloseHandle(overlapped.hEvent);
|
||||||
|
CloseHandle(hDir);
|
||||||
|
}
|
||||||
|
|
||||||
|
void folder_scanner() {
|
||||||
|
|
||||||
|
//we are in a completely seperate thread then the main thread; unlimited resources wuhuii
|
||||||
|
FILE*fp;
|
||||||
|
char* path = new char[300];
|
||||||
|
char* foldername = new char[300];
|
||||||
|
|
||||||
|
//start the watch dir function used to monitor the dir for new files
|
||||||
|
monitor_directory("C:\\");
|
||||||
|
|
||||||
|
|
||||||
|
delete[] path;
|
||||||
|
delete[] foldername;
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif // !CHECK_DIR_CPP
|
||||||
@@ -22,16 +22,16 @@ int main() {
|
|||||||
log(LOGLEVEL::INFO, "[main()]:Starting main thread.");
|
log(LOGLEVEL::INFO, "[main()]:Starting main thread.");
|
||||||
printf("welcome to the jakach security tool main thread\n");
|
printf("welcome to the jakach security tool main thread\n");
|
||||||
if (load_settings() == 0) {//load the settings from the settings file
|
if (load_settings() == 0) {//load the settings from the settings file
|
||||||
if (update_settings("settings")) { //update the settings from the server
|
if (update_settings("settings")!=0) { //update the settings from the server
|
||||||
log(LOGLEVEL::ERR, "[main()]:Could not update settings from server.");
|
log(LOGLEVEL::ERR, "[main()]:Could not update settings from server.");
|
||||||
}
|
}
|
||||||
if (update_settings("rtp_included")) { //update the settings from the server
|
if (update_settings("rtp_included")!=0) { //update the settings from the server
|
||||||
log(LOGLEVEL::ERR, "[main()]:Could not update settings from server.");
|
log(LOGLEVEL::ERR, "[main()]:Could not update settings from server.");
|
||||||
}
|
}
|
||||||
if (update_settings("rtp_excluded")) { //update the settings from the server
|
if (update_settings("rtp_excluded")!=0) { //update the settings from the server
|
||||||
log(LOGLEVEL::ERR, "[main()]:Could not update settings from server.");
|
log(LOGLEVEL::ERR, "[main()]:Could not update settings from server.");
|
||||||
}
|
}
|
||||||
if (update_settings("sched")) { //update the settings from the server
|
if (update_settings("sched")!=0) { //update the settings from the server
|
||||||
log(LOGLEVEL::ERR, "[main()]:Could not update settings from server.");
|
log(LOGLEVEL::ERR, "[main()]:Could not update settings from server.");
|
||||||
}
|
}
|
||||||
load_settings(); //load the updated settings from the settings file
|
load_settings(); //load the updated settings from the settings file
|
||||||
|
|||||||
Binary file not shown.
@@ -34,24 +34,4 @@ C:\Program Files\Microsoft Visual Studio\2022\Community\VC\Tools\MSVC\14.39.3351
|
|||||||
_SizeTy=unsigned __int64
|
_SizeTy=unsigned __int64
|
||||||
]
|
]
|
||||||
|
|
||||||
client_backend.cpp
|
|
||||||
C:\Users\janis\Documents\Projekte_mit_c\ma\ma\src\client_backend\client_backend.cpp(88,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(88,24): warning C4244: with
|
|
||||||
C:\Users\janis\Documents\Projekte_mit_c\ma\ma\src\client_backend\client_backend.cpp(88,24): warning C4244: [
|
|
||||||
C:\Users\janis\Documents\Projekte_mit_c\ma\ma\src\client_backend\client_backend.cpp(88,24): warning C4244: _Rep=__int64
|
|
||||||
C:\Users\janis\Documents\Projekte_mit_c\ma\ma\src\client_backend\client_backend.cpp(88,24): warning C4244: ]
|
|
||||||
connect.cpp
|
|
||||||
C:\Users\janis\Documents\Projekte_mit_c\ma\ma\src\client_backend\connect.cpp(118,65): warning C4267: "Argument": Konvertierung von "size_t" nach "int", Datenverlust möglich
|
|
||||||
local_com.cpp
|
|
||||||
local_schedule.cpp
|
|
||||||
log.cpp
|
|
||||||
md5hash.cpp
|
|
||||||
scan.cpp
|
|
||||||
C:\Users\janis\Documents\Projekte_mit_c\ma\ma\src\client_backend\scan.cpp(153,32): warning C4018: ">=": Konflikt zwischen "signed" und "unsigned"
|
|
||||||
settings.cpp
|
|
||||||
thread_ctrl.cpp
|
|
||||||
update.cpp
|
|
||||||
virus_ctrl.cpp
|
|
||||||
Code wird generiert...
|
|
||||||
C:\Users\janis\Documents\Projekte_mit_c\ma\ma\src\client_backend\md5hash.cpp(36,1): warning C4715: "md5_file": 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
|
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.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@@ -27,7 +27,7 @@ int connect_to_srv(const char*url,char*out,int max_len, bool ignore_insecure) {
|
|||||||
curl_easy_cleanup(curl);
|
curl_easy_cleanup(curl);
|
||||||
if (max_len > (int)strlen(readBuffer.c_str())) {
|
if (max_len > (int)strlen(readBuffer.c_str())) {
|
||||||
strcpy(out, readBuffer.c_str());
|
strcpy(out, readBuffer.c_str());
|
||||||
return res;
|
return 0;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
return 1;
|
return 1;
|
||||||
@@ -43,7 +43,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* output_file_path) {
|
int download_file_from_srv(const char* url, const char* output_file_path, bool ignore_insecure) {
|
||||||
//use curl to download a file from a server
|
//use curl to download a file from a server
|
||||||
char*temp_path = new char[515];
|
char*temp_path = new char[515];
|
||||||
char* buf = new char[505];
|
char* buf = new char[505];
|
||||||
@@ -71,6 +71,8 @@ int download_file_from_srv(const char* url, const char* output_file_path) {
|
|||||||
// Set the write callback function
|
// Set the write callback function
|
||||||
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_callback);
|
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, write_callback);
|
||||||
curl_easy_setopt(curl, CURLOPT_WRITEDATA, output_file);
|
curl_easy_setopt(curl, CURLOPT_WRITEDATA, output_file);
|
||||||
|
if (ignore_insecure == true)
|
||||||
|
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, 0L);
|
||||||
|
|
||||||
// Perform the download
|
// Perform the download
|
||||||
res = curl_easy_perform(curl);
|
res = curl_easy_perform(curl);
|
||||||
@@ -104,29 +106,4 @@ int download_file_from_srv(const char* url, const char* output_file_path) {
|
|||||||
delete[] temp_path;
|
delete[] temp_path;
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
int call_srv(const char*server_url,const char*get_request,const char*additional) {
|
|
||||||
CURL* curl;
|
|
||||||
CURLcode res;
|
|
||||||
std::string readBuffer;
|
|
||||||
char*url=new char[1000];
|
|
||||||
url[0] = '\0';
|
|
||||||
|
|
||||||
curl = curl_easy_init();
|
|
||||||
if (curl) {
|
|
||||||
char* output = curl_easy_escape(curl, additional, strlen(additional));
|
|
||||||
sprintf_s(url, 995, "%s%s%s", server_url, get_request,output);
|
|
||||||
curl_easy_setopt(curl, CURLOPT_URL, url);
|
|
||||||
curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, WriteCallback);
|
|
||||||
curl_easy_setopt(curl, CURLOPT_WRITEDATA, &readBuffer);
|
|
||||||
res = curl_easy_perform(curl);
|
|
||||||
curl_free(output);
|
|
||||||
curl_easy_cleanup(curl);
|
|
||||||
delete[] url;
|
|
||||||
return res;
|
|
||||||
}
|
|
||||||
delete[] url;
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
#endif
|
#endif
|
||||||
@@ -6,5 +6,4 @@
|
|||||||
#include <string>
|
#include <string>
|
||||||
#include <curl/curl.h>
|
#include <curl/curl.h>
|
||||||
int connect_to_srv(const char* url, char* out, int max_len, bool ignore_insecure);
|
int connect_to_srv(const char* url, char* out, int max_len, bool ignore_insecure);
|
||||||
int download_file_from_srv(const char* url, const char* outputFileName);
|
int download_file_from_srv(const char* url, const char* outputFileName,bool ignore_insecure);
|
||||||
int call_srv(const char*, const char*,const char*);
|
|
||||||
@@ -83,7 +83,7 @@ std::string md5_file_t(const std::string& path_) {
|
|||||||
thread_local std::string path (path_);
|
thread_local std::string path (path_);
|
||||||
thread_local FILE* fp = fopen(path.c_str(), "rb");
|
thread_local FILE* fp = fopen(path.c_str(), "rb");
|
||||||
if (!fp) {
|
if (!fp) {
|
||||||
log(LOGLEVEL::ERR, "[md5_file_t()]: Could not open file for scanning ", path.c_str());
|
log(LOGLEVEL::WARN, "[md5_file_t()]: Could not open file for scanning ", path.c_str());
|
||||||
return path; //we return the path because else it moight crash ()if we sen da nullptr
|
return path; //we return the path because else it moight crash ()if we sen da nullptr
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -130,7 +130,7 @@ void scan_folder(const std::string& directory) {
|
|||||||
HANDLE hFind = FindFirstFile(search_path.c_str(), &find_file_data);
|
HANDLE hFind = FindFirstFile(search_path.c_str(), &find_file_data);
|
||||||
|
|
||||||
if (hFind == INVALID_HANDLE_VALUE) {
|
if (hFind == INVALID_HANDLE_VALUE) {
|
||||||
log(LOGLEVEL::ERR, "[scan_folder()]: Error opening directory: ", search_path.c_str() , " while scanning files inside folder.");
|
log(LOGLEVEL::WARN, "[scan_folder()]: Could not open directory: ", search_path.c_str() , " while scanning files inside directory.");
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -29,7 +29,7 @@ int update_db(const char* folder_path) {
|
|||||||
strcat_s(output_path, 295, "\\");
|
strcat_s(output_path, 295, "\\");
|
||||||
strcat_s(output_path, 295, file_name);
|
strcat_s(output_path, 295, file_name);
|
||||||
printf("%s\n", url);
|
printf("%s\n", url);
|
||||||
int res = download_file_from_srv(url, output_path);
|
int res = download_file_from_srv(url, output_path,0);
|
||||||
if (res != 0) {
|
if (res != 0) {
|
||||||
return 10;
|
return 10;
|
||||||
}
|
}
|
||||||
@@ -57,13 +57,13 @@ int update_settings(const char*settings_type) {
|
|||||||
strcat_s(url, 1000, get_apikey(SECRETS));
|
strcat_s(url, 1000, get_apikey(SECRETS));
|
||||||
int res = 1;
|
int res = 1;
|
||||||
if (strcmp(settings_type, "settings") == 0)
|
if (strcmp(settings_type, "settings") == 0)
|
||||||
res = download_file_from_srv(url, SETTINGS_DB);
|
res = download_file_from_srv(url, SETTINGS_DB,0);
|
||||||
else if (strcmp(settings_type, "rtp_included") == 0)
|
else if (strcmp(settings_type, "rtp_included") == 0)
|
||||||
res = download_file_from_srv(url, INCLUDED_FOLDERS);
|
res = download_file_from_srv(url, INCLUDED_FOLDERS,0);
|
||||||
else if (strcmp(settings_type, "rtp_excluded") == 0)
|
else if (strcmp(settings_type, "rtp_excluded") == 0)
|
||||||
res = download_file_from_srv(url, EXCLUDED_FOLDERS);
|
res = download_file_from_srv(url, EXCLUDED_FOLDERS,0);
|
||||||
else if (strcmp(settings_type, "sched") == 0)
|
else if (strcmp(settings_type, "sched") == 0)
|
||||||
res = download_file_from_srv(url, SCHED_PATH);
|
res = download_file_from_srv(url, SCHED_PATH,0);
|
||||||
//int res = 0;
|
//int res = 0;
|
||||||
if (res != 0) {
|
if (res != 0) {
|
||||||
log(LOGLEVEL::ERR, "[update_settings()]: Error downloading settings database file from server", url, " ERROR:", res);
|
log(LOGLEVEL::ERR, "[update_settings()]: Error downloading settings database file from server", url, " ERROR:", res);
|
||||||
|
|||||||
@@ -5,6 +5,7 @@
|
|||||||
#include "log.h"
|
#include "log.h"
|
||||||
#include "settings.h"
|
#include "settings.h"
|
||||||
#include "connect.h"
|
#include "connect.h"
|
||||||
|
#include "security.h"
|
||||||
|
|
||||||
int virus_ctrl_store( const char*path, const char*hash, const char*id) {
|
int virus_ctrl_store( const char*path, const char*hash, const char*id) {
|
||||||
FILE* fp;
|
FILE* fp;
|
||||||
@@ -17,7 +18,7 @@ int virus_ctrl_store( const char*path, const char*hash, const char*id) {
|
|||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
fprintf(fp, "\"%s\" \"%s\"\n", path, hash);
|
fprintf(fp, "\"%s\" %s\n", path, hash);
|
||||||
fclose(fp);
|
fclose(fp);
|
||||||
delete[] db_path;
|
delete[] db_path;
|
||||||
return 0;
|
return 0;
|
||||||
@@ -40,7 +41,7 @@ int virus_ctrl_process( const char* id) {
|
|||||||
while (!feof(fp)) {
|
while (!feof(fp)) {
|
||||||
//get a fulll path (enclosed with "")
|
//get a fulll path (enclosed with "")
|
||||||
char* path = new char[300];
|
char* path = new char[300];
|
||||||
char*hash = new char[300];
|
char* hash = new char[300];
|
||||||
path[0] = '\0';
|
path[0] = '\0';
|
||||||
//search for starting ", then loop until ending "
|
//search for starting ", then loop until ending "
|
||||||
int cnt = 0;
|
int cnt = 0;
|
||||||
@@ -57,9 +58,8 @@ int virus_ctrl_process( const char* id) {
|
|||||||
}
|
}
|
||||||
fscanf_s(fp, "%s", hash, 295); // get the hash of the file
|
fscanf_s(fp, "%s", hash, 295); // get the hash of the file
|
||||||
char* quarantine_path = new char[300];
|
char* quarantine_path = new char[300];
|
||||||
char* url = new char[300];
|
char* url = new char[1005];
|
||||||
char* url_path = new char[300];
|
char* server_response = new char[100];
|
||||||
char* additional = new char[600];
|
|
||||||
switch (get_setting("virus_ctrl:virus_found:action")) {
|
switch (get_setting("virus_ctrl:virus_found:action")) {
|
||||||
case 1://remove
|
case 1://remove
|
||||||
if(remove(path)!=0)
|
if(remove(path)!=0)
|
||||||
@@ -83,24 +83,30 @@ int virus_ctrl_process( const char* id) {
|
|||||||
//call the server and say him that we have found a virus.
|
//call the server and say him that we have found a virus.
|
||||||
//we shoulkd also log it
|
//we shoulkd also log it
|
||||||
log(LOGLEVEL::VIRUS, "[virus_ctrl_process()]:Virus found in file: ", path, " ", hash, " but only notified due to settings");
|
log(LOGLEVEL::VIRUS, "[virus_ctrl_process()]:Virus found in file: ", path, " ", hash, " but only notified due to settings");
|
||||||
url_path[0] = '\0';
|
|
||||||
url[0] = '\0';
|
url[0] = '\0';
|
||||||
strcpy_s(url_path, 295, "/api/add_log.php?entry=");
|
if (get_setting("server:server_url", url) == 0 or strcmp(url, "nan") == 0) {
|
||||||
strcpy_s(additional, 600, "Virus found in file: ");
|
strcat_s(url, 1000, "/api/php/virus/notify_virus.php?");
|
||||||
strcat_s(additional, 600, path);
|
strcat_s(url, 1000, "file=");
|
||||||
strcat_s(additional, 600, " ");
|
strcat_s(url, 1000, path);
|
||||||
strcat_s(additional, 600, hash);
|
strcat_s(url, 1000, "&hash=");
|
||||||
get_setting("server:server_url", url);
|
strcat_s(url, 1000, hash);
|
||||||
if(call_srv(url,url_path,additional)!=0)
|
strcat_s(url, 1000, "&action=");
|
||||||
log(LOGLEVEL::ERR, "[virus_ctrl_process()]:Error while notifying server about virus: ", path," ",hash);
|
strcat_s(url, 1000, "notify");
|
||||||
|
strcat_s(url, 1000, "&machine_id=");
|
||||||
|
strcat_s(url, 1000, get_machineid(SECRETS));
|
||||||
|
strcat_s(url, 1000, "&apikey=");
|
||||||
|
strcat_s(url, 1000, get_apikey(SECRETS));
|
||||||
|
if (connect_to_srv(url, server_response, 100, 0) != 0 or strcmp("wrt_ok", server_response) != 0 )
|
||||||
|
log(LOGLEVEL::ERR, "[virus_ctrl_process()]:Error while notifying server about virus: ", path, " ", hash);
|
||||||
|
}else {
|
||||||
|
log(LOGLEVEL::ERR, "[virus_ctrl_process()]:Error while notifying server about virus: ", path, " ", hash);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
|
|
||||||
}
|
}
|
||||||
delete[] quarantine_path;
|
delete[] quarantine_path;
|
||||||
delete[] url;
|
delete[] url;
|
||||||
delete[] url_path;
|
delete[] server_response;
|
||||||
delete[] additional;
|
|
||||||
}
|
}
|
||||||
//else { creates to many log entrys => entrys are not needed
|
//else { creates to many log entrys => entrys are not needed
|
||||||
// log(LOGLEVEL::ERR, "[virus_ctrl_process()]:Error while processing virus control database. Expected \" but got ", chr);
|
// log(LOGLEVEL::ERR, "[virus_ctrl_process()]:Error while processing virus control database. Expected \" but got ", chr);
|
||||||
|
|||||||
Binary file not shown.
35
src/server/cyberhex-code/api/php/virus/notify_virus.php
Normal file
35
src/server/cyberhex-code/api/php/virus/notify_virus.php
Normal file
@@ -0,0 +1,35 @@
|
|||||||
|
<?php
|
||||||
|
//we need to auth the user => apikey
|
||||||
|
//put auth code here afterwards
|
||||||
|
include "../accessctrl/check_apikey.php";
|
||||||
|
if(check_apikey()!==true){
|
||||||
|
die("no_auth");
|
||||||
|
}
|
||||||
|
|
||||||
|
//add the entry to the log db
|
||||||
|
//this page has no gui, it may return ok or error
|
||||||
|
if(!isset($_GET["machine_id"]) or !isset($_GET["hash"]) or !isset($_GET["path"]) or !isset($_GET["action"]))
|
||||||
|
echo("syn_err");
|
||||||
|
else{
|
||||||
|
$hash=htmlspecialchars($_GET["hash"]);
|
||||||
|
$path=htmlspecialchars($_GET["path"]);
|
||||||
|
$machine_id=htmlspecialchars($_GET["machine_id"]);
|
||||||
|
$action=htmlspecialchars($_GET["action"]);
|
||||||
|
//include db pw
|
||||||
|
include "../../../config.php";
|
||||||
|
$conn = new mysqli($DB_SERVERNAME, $DB_USERNAME, $DB_PASSWORD, $DB_DATABASE);
|
||||||
|
if ($conn->connect_error) {
|
||||||
|
die("conn_err");
|
||||||
|
}
|
||||||
|
$sql = "INSERT INTO vir_notify (hash,machine_id,path,action) VALUES (?,?,?,?);";
|
||||||
|
$stmt = $conn->prepare($sql);
|
||||||
|
$stmt->bind_param("ssss", $hash,$machine_id,$path,$action);
|
||||||
|
// Execute the statement
|
||||||
|
if(!$stmt->execute())
|
||||||
|
echo("wrt_err");
|
||||||
|
else
|
||||||
|
echo("wrt_ok");
|
||||||
|
$stmt->close();
|
||||||
|
$conn->close();
|
||||||
|
}
|
||||||
|
?>
|
||||||
@@ -234,6 +234,26 @@
|
|||||||
</div>';
|
</div>';
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Create vir_notify messages table
|
||||||
|
$sql = "CREATE TABLE IF NOT EXISTS vir_notify (
|
||||||
|
id INT AUTO_INCREMENT PRIMARY KEY,
|
||||||
|
machine_id VARCHAR(255) NOT NULL,
|
||||||
|
path VARCHAR(255) NOT NULL,
|
||||||
|
hash VARCHAR(255) NOT NULL,
|
||||||
|
action VARCHAR(255) NOT NULL
|
||||||
|
)";
|
||||||
|
|
||||||
|
if ($conn->query($sql) === TRUE) {
|
||||||
|
echo '<br><div class="alert alert-success" role="alert">
|
||||||
|
Table machines created successfully!
|
||||||
|
</div>';
|
||||||
|
} else {
|
||||||
|
$success=0;
|
||||||
|
echo '<br><div class="alert alert-danger" role="alert">
|
||||||
|
Error creating table machines: ' . $conn->error .'
|
||||||
|
</div>';
|
||||||
|
}
|
||||||
|
|
||||||
// Attempt to create the directory where export files will be stored later on
|
// Attempt to create the directory where export files will be stored later on
|
||||||
if (mkdir("/var/www/html/export", 0777, true)) {
|
if (mkdir("/var/www/html/export", 0777, true)) {
|
||||||
echo '<br><div class="alert alert-success" role="alert">
|
echo '<br><div class="alert alert-success" role="alert">
|
||||||
|
|||||||
Reference in New Issue
Block a user