feat : usb port에서 usb disk 차단 재 수정

feat : agent start 로그 시작

feat : RecoverService 시작 위치 변경 → ManagerService 시

feat : RecoverService에서 복원 누락된 파일 추가

feat : 인스톨 설치 시 IP 정보 입력 받을수 있도록 수정
  eCrmHeInstaller.exe
  설치본 설치 시 si.dat 입력받은 정보 기반으로 만들 수 있도록 수정
  설치본 제작시 si.dat 제거
This commit is contained in:
mgkim 2026-03-24 16:17:00 +09:00
parent 095c329b0e
commit def1b99ef7
494 changed files with 93276 additions and 92720 deletions

View File

@ -1041,7 +1041,25 @@ begin
if bBlockIf then if bBlockIf then
begin begin
SetLastError(ERROR_ACCESS_DENIED); if appType_ = catLINKENGKM then
begin
// SetLastError(ERROR_DEV_NOT_EXIST);
if (lpOutBuffer <> nil) and (nOutBufferSize >= 3) then
begin
PByte(NativeUInt(lpOutBuffer) + 2)^ := 0;
end;
if lpBytesReturned <> nil then
begin
lpBytesReturned^ := nOutBufferSize;
end;
SetLastError(ERROR_SUCCESS);
Result := True;
end
else
SetLastError(ERROR_ACCESS_DENIED);
Result:= False; Result:= False;
Exit; Exit;
end; end;

View File

@ -10,7 +10,7 @@ ClassGuid = {b86dff51-a31e-4bac-b3cf-e8cfe75c9fc2} ;This value is determine
;Class = "ActivityMonitor" ;Class = "ActivityMonitor"
;ClassGuid = {AE71EC8D-C1FD-4564-8AA9-D56ADE722321} ;ClassGuid = {AE71EC8D-C1FD-4564-8AA9-D56ADE722321}
Provider = %ManufacturerName% Provider = %ManufacturerName%
DriverVer = 03/13/2026,13.27.3.571 DriverVer = 03/20/2026,17.0.19.906
CatalogFile = bs1flt.cat CatalogFile = bs1flt.cat
PnpLockdown = 1 PnpLockdown = 1

View File

@ -10,7 +10,7 @@ ClassGuid = {b86dff51-a31e-4bac-b3cf-e8cfe75c9fc2} ;This value is determine
;Class = "ActivityMonitor" ;Class = "ActivityMonitor"
;ClassGuid = {AE71EC8D-C1FD-4564-8AA9-D56ADE722321} ;ClassGuid = {AE71EC8D-C1FD-4564-8AA9-D56ADE722321}
Provider = %ManufacturerName% Provider = %ManufacturerName%
DriverVer = 03/13/2026,13.27.3.571 DriverVer = 03/20/2026,17.0.19.906
CatalogFile = bs1flt.cat CatalogFile = bs1flt.cat
PnpLockdown = 1 PnpLockdown = 1

View File

@ -99,7 +99,7 @@ typedef struct _FLT_START_FOR_CUSTOM
////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////
//장치별 타입 //장치별 타입
enum enum_devicetype typedef enum
{ {
BDC_UNKNOWN_DEV = 0, BDC_UNKNOWN_DEV = 0,
BDC_CDROM, BDC_CDROM,
@ -133,15 +133,42 @@ enum enum_devicetype
BDC_WEBCAM, BDC_WEBCAM,
BDC_MTP, BDC_MTP,
BDC_MAX_DEVICE_TYPE BDC_MAX_DEVICE_TYPE
}enum_devicetype;
}; //USB ÀåÄ¡º° ŸÀÔ
typedef enum {
BDC_USB_CLASS_UNSPECIFIED = 0,
BDC_USB_CLASS_AUDIO = 1,
BDC_USB_CLASS_CDC = 2,
BDC_USB_CLASS_HID = 3,
BDC_USB_CLASS_RESERVED_4 = 4,
BDC_USB_CLASS_PHYSICAL = 5,
BDC_USB_CLASS_IMAGE = 6,
BDC_USB_CLASS_PRINTER = 7,
BDC_USB_CLASS_MSC = 8,
BDC_USB_CLASS_HUB = 9,
BDC_USB_CLASS_CDC_DATA = 10,
BDC_USB_CLASS_SMART_CARD = 11,
BDC_USB_CLASS_RESERVED_12 = 12,
BDC_USB_CLASS_VENDOR_SPECIFIC = 0x13
//BDC_USB_CLASS_CONTENT_SECURITY = 13,
//BDC_USB_CLASS_VIDEO = 14,
//BDC_USB_CLASS_PERSONAL_HEALTHCARE = 15,
//BDC_USB_CLASS_AUDIO_VIDEO = 16,
//BDC_USB_CLASS_DIAGNOSTIC = 0xDC,
//BDC_USB_CLASS_WIRELESS_CONTROLLER = 0xE0,
//BDC_USB_CLASS_MISC = 0xEF,
//BDC_USB_CLASS_APPLICATION_SPECIFIC = 0xFE,
//BDC_USB_CLASS_VENDOR_SPECIFIC = 0xFF
} enum_usb_device_type;
typedef enum{
enum enum_devicestate
{
ENABLE = 0, ENABLE = 0,
DISABLE, DISABLE,
READONLY READONLY
}; }enum_devicestate;
enum enum_pb_kernel_comunicationid enum enum_pb_kernel_comunicationid
{ {
@ -188,7 +215,8 @@ enum enum_pb_kernel_comunicationid
START_PROCESS_CREATE, START_PROCESS_CREATE,
SET_PROCESS_CREATE_BLOCK_RULE, //프로세스 차단 규칙 (프로세스명 + 파라미터) SET_PROCESS_CREATE_BLOCK_RULE, //프로세스 차단 규칙 (프로세스명 + 파라미터)
CLEAR_PROCESS_CREATE_BLOCK_RULE CLEAR_PROCESS_CREATE_BLOCK_RULE,
SET_USB_POLICY
}; };
typedef struct _LOG_MSG_DATA typedef struct _LOG_MSG_DATA
@ -352,8 +380,9 @@ typedef struct _BS1FLT_PROCESS_CREATE_BLOCK_RULE
#pragma pack(push, 1) #pragma pack(push, 1)
typedef struct _DEVICE_POLICY typedef struct _DEVICE_POLICY
{ {
enum enum_devicetype device_type; enum_devicetype device_type;
enum enum_devicestate state; enum_usb_device_type usb_device_type;
enum_devicestate state;
ULONG islog; ULONG islog;
}DEVICE_POLICY, * PDEVICE_POLICY; }DEVICE_POLICY, * PDEVICE_POLICY;
#pragma pack(pop) #pragma pack(pop)

View File

@ -394,6 +394,11 @@ Bs1FltMssageProc(
SetPolicy(msg->device_policy_.device_type, msg->device_policy_.state, msg->device_policy_.islog); SetPolicy(msg->device_policy_.device_type, msg->device_policy_.state, msg->device_policy_.islog);
break; break;
} }
case SET_USB_POLICY:
{
KLogEx(DEBUG_TRACE_INFO, "SET_USB_POLICY, usbdevicetype(%d), state(%d)\n", msg->device_policy_.usb_device_type, msg->device_policy_.state);
SetUsbPolicy(msg->device_policy_.usb_device_type, msg->device_policy_.state);
}
case GET_LOG: case GET_LOG:
{ {
ULONG req = 0; ULONG req = 0;

View File

@ -3,11 +3,12 @@
static DEVICE_POLICY s_policy[BDC_MAX_DEVICE_TYPE] = { 0, }; static DEVICE_POLICY s_policy[BDC_MAX_DEVICE_TYPE] = { 0, };
static ULONG s_usb_policy[BDC_USB_CLASS_VENDOR_SPECIFIC] = { 0, };
void Initpolicy() void Initpolicy()
{ {
RtlZeroMemory(s_policy, sizeof(s_policy)); RtlZeroMemory(s_policy, sizeof(s_policy));
RtlZeroMemory(s_usb_policy, sizeof(s_usb_policy));
} }
void SetPolicy(ULONG device_type, ULONG state, ULONG islog) void SetPolicy(ULONG device_type, ULONG state, ULONG islog)
@ -36,6 +37,25 @@ ULONG IsPolicyLog(ULONG device_type)
} }
void SetUsbPolicy(ULONG usb_classtype, ULONG state)
{
s_usb_policy[usb_classtype] = state;
}
BOOLEAN IsUsbPolicyDisable(ULONG usb_classtype)
{
if (usb_classtype >= BDC_USB_CLASS_VENDOR_SPECIFIC )
return FALSE;
if (s_usb_policy[usb_classtype] == DISABLE)
return TRUE;
return FALSE;
}
//ULONG IsNetwork(PFLT_CALLBACK_DATA data, PCFLT_RELATED_OBJECTS fltobject) //ULONG IsNetwork(PFLT_CALLBACK_DATA data, PCFLT_RELATED_OBJECTS fltobject)
//{ //{

View File

@ -6,6 +6,8 @@ ULONG GetPolicyState(ULONG device_type);
BOOLEAN IsPolicyDisable(ULONG device_type); BOOLEAN IsPolicyDisable(ULONG device_type);
ULONG IsPolicyLog(ULONG device_type); ULONG IsPolicyLog(ULONG device_type);
void SetUsbPolicy(ULONG usb_classtype, ULONG state);
BOOLEAN IsUsbPolicyDisable(ULONG usb_classtype);
ULONG GetDeviceType(PFLT_CALLBACK_DATA data, PCFLT_RELATED_OBJECTS fltobject); ULONG GetDeviceType(PFLT_CALLBACK_DATA data, PCFLT_RELATED_OBJECTS fltobject);

View File

@ -8,31 +8,7 @@
#pragma warning( disable : 4996 ) #pragma warning( disable : 4996 )
typedef enum {
TUSB_CLASS_UNSPECIFIED = 0,
TUSB_CLASS_AUDIO = 1,
TUSB_CLASS_CDC = 2,
TUSB_CLASS_HID = 3,
TUSB_CLASS_RESERVED_4 = 4,
TUSB_CLASS_PHYSICAL = 5,
TUSB_CLASS_IMAGE = 6,
TUSB_CLASS_PRINTER = 7,
TUSB_CLASS_MSC = 8,
TUSB_CLASS_HUB = 9,
TUSB_CLASS_CDC_DATA = 10,
TUSB_CLASS_SMART_CARD = 11,
TUSB_CLASS_RESERVED_12 = 12,
TUSB_CLASS_CONTENT_SECURITY = 13,
TUSB_CLASS_VIDEO = 14,
TUSB_CLASS_PERSONAL_HEALTHCARE = 15,
TUSB_CLASS_AUDIO_VIDEO = 16,
TUSB_CLASS_DIAGNOSTIC = 0xDC,
TUSB_CLASS_WIRELESS_CONTROLLER = 0xE0,
TUSB_CLASS_MISC = 0xEF,
TUSB_CLASS_APPLICATION_SPECIFIC = 0xFE,
TUSB_CLASS_VENDOR_SPECIFIC = 0xFF
} usb_device_class_code;
enum enum
{ {
@ -216,15 +192,16 @@ NTSTATUS UDF_CallUSBDI(IN PDEVICE_OBJECT pDevObj, IN PVOID UrbEtc)
} }
*/ */
BOOLEAN IsDefineDeviceClass(usb_device_class_code deviceclass) BOOLEAN IsDefineDeviceClass(enum_usb_device_type deviceclass)
{ {
//BOOLEAN state = FALSE; //BOOLEAN state = FALSE;
if (deviceclass == TUSB_CLASS_HID if (
|| deviceclass == TUSB_CLASS_PRINTER //deviceclass == TUSB_CLASS_HID
|| deviceclass == TUSB_CLASS_HUB //|| deviceclass == TUSB_CLASS_PRINTER
|| deviceclass == TUSB_CLASS_AUDIO deviceclass == BDC_USB_CLASS_HUB
|| deviceclass == TUSB_CLASS_VIDEO //|| deviceclass == TUSB_CLASS_AUDIO
//|| deviceclass == TUSB_CLASS_VIDEO
) )
{ {
return TRUE; return TRUE;
@ -294,12 +271,6 @@ NTSTATUS USBPnpControl(PDRIVER_DISPATCH dispath, PDEVICE_OBJECT DeviceObject, PI
KLogEx(DEBUG_TRACE_INFO, " Serial: %S\n", pUsbInfo->SerialNumberStr); KLogEx(DEBUG_TRACE_INFO, " Serial: %S\n", pUsbInfo->SerialNumberStr);
} }
if (IsUsbPortExceptionList(BDC_USB, pUsbInfo->DeviceDesc.idVendor, pUsbInfo->DeviceDesc.idProduct, pUsbInfo->DeviceDesc.bcdDevice, pUsbInfo->SerialNumberStr))
{
KLogEx(DEBUG_TRACE_INFO, "user usb policy exception\n");
goto $USBCleanup;
}
if (pUsbInfo->ConfigDesc && pUsbInfo->ConfigDescSize > 0) if (pUsbInfo->ConfigDesc && pUsbInfo->ConfigDescSize > 0)
{ {
PUSB_CONFIGURATION_DESCRIPTOR pConfigDesc = pUsbInfo->ConfigDesc; PUSB_CONFIGURATION_DESCRIPTOR pConfigDesc = pUsbInfo->ConfigDesc;
@ -391,9 +362,23 @@ NTSTATUS USBPnpControl(PDRIVER_DISPATCH dispath, PDEVICE_OBJECT DeviceObject, PI
} }
} }
if (state == DISABLE && pUsbInfo)
{
if(!IsUsbPolicyDisable(pUsbInfo->DeviceDesc.bDeviceClass))
{
KLogEx(DEBUG_TRACE_INFO, "usb policy disable\n");
state = ENABLE;
}
else if (IsUsbPortExceptionList(BDC_USB, pUsbInfo->DeviceDesc.idVendor, pUsbInfo->DeviceDesc.idProduct, pUsbInfo->DeviceDesc.bcdDevice, pUsbInfo->SerialNumberStr))
{
KLogEx(DEBUG_TRACE_INFO, "user usb policy exception\n");
state = ENABLE;
//goto $USBCleanup;
}
}
if (policyLog) if (policyLog)
{ {
WCHAR notice[MAX_PATH] = { 0, }; WCHAR notice[MAX_PATH] = { 0, };
WCHAR processName[50] = { 0, }; WCHAR processName[50] = { 0, };
ULONG DeviceClass = 0; ULONG DeviceClass = 0;

View File

@ -38,3 +38,4 @@ Bs1fltSetProcessCreateBlockRule @34 NONAME
Bs1fltClearProcessCreateBlockRule @35 NONAME Bs1fltClearProcessCreateBlockRule @35 NONAME
Bs1fltClearUsbPortException @36 NONAME Bs1fltClearUsbPortException @36 NONAME
Bs1fltOpen @37 NONAME Bs1fltOpen @37 NONAME
Bs1fltSetUsbPolicy @38 NONAME

View File

@ -55,3 +55,4 @@ BS1FLT_API DWORD WINAPI Bs1fltSetProcessCreateBlockRule(LPCWSTR name, LPCWSTR cm
BS1FLT_API DWORD WINAPI Bs1fltClearProcessCreateBlockRule(); BS1FLT_API DWORD WINAPI Bs1fltClearProcessCreateBlockRule();
BS1FLT_API DWORD WINAPI Bs1fltClearUsbPortException(); BS1FLT_API DWORD WINAPI Bs1fltClearUsbPortException();
BS1FLT_API DWORD WINAPI Bs1fltOpen(); BS1FLT_API DWORD WINAPI Bs1fltOpen();
BS1FLT_API DWORD WINAPI Bs1fltSetUsbPolicy(DWORD usb_device_type, DWORD state);

View File

@ -459,7 +459,6 @@ BS1FLT_API DWORD WINAPI Bs1fltClearUsbException()
return interface_->SetUsbDiskException(STATE_CLEAR, NULL, NULL, NULL, NULL) ? BS1FLT_STATUS_SUCCESS : BS1FLT_STATUS_UNSUCCESSFUL; return interface_->SetUsbDiskException(STATE_CLEAR, NULL, NULL, NULL, NULL) ? BS1FLT_STATUS_SUCCESS : BS1FLT_STATUS_UNSUCCESSFUL;
} }
BS1FLT_API DWORD WINAPI Bs1fltSetPolicy(DWORD devcie_type, DWORD state, DWORD islog) BS1FLT_API DWORD WINAPI Bs1fltSetPolicy(DWORD devcie_type, DWORD state, DWORD islog)
{ {
if (!interface_) if (!interface_)
@ -598,4 +597,15 @@ BS1FLT_API DWORD WINAPI Bs1fltClearProcessCreateBlockRule()
return interface_->SetProcessCreateBlockRule(STATE_CLEAR, NULL, NULL, NULL) ? BS1FLT_STATUS_SUCCESS : BS1FLT_STATUS_UNSUCCESSFUL; return interface_->SetProcessCreateBlockRule(STATE_CLEAR, NULL, NULL, NULL) ? BS1FLT_STATUS_SUCCESS : BS1FLT_STATUS_UNSUCCESSFUL;
} }
BS1FLT_API DWORD WINAPI Bs1fltSetUsbPolicy(DWORD usb_device_type, DWORD state)
{
if (!interface_)
return BS1FLT_STATUS_UNSUCCESSFUL;
BSONE_DEBUG(_T("usb_device_type(%x), state(%x)\n"), usb_device_type, state);
return interface_->SetUsbPolicy((enum_usb_device_type)usb_device_type, (enum_devicestate)state) ? BS1FLT_STATUS_SUCCESS : BS1FLT_STATUS_UNSUCCESSFUL;
}
// //

View File

@ -919,6 +919,28 @@ BOOL CInterface::SetPolicy(enum_devicetype devcie_type, enum_devicestate state,
return TRUE; return TRUE;
} }
BOOL CInterface::SetUsbPolicy(enum_usb_device_type usb_device_type, enum_devicestate state)
{
BS1FLT_MESSAGE msg = { 0, };
HRESULT result = 0;
DWORD dwRet = 0;
msg.id_ = (ULONGLONG)SET_USB_POLICY;
msg.device_policy_.usb_device_type = usb_device_type;
msg.device_policy_.state = state;
result = pFilterSendMessage(m_hPort, &msg, sizeof(msg), NULL, 0, &dwRet);
if (IS_ERROR(result))
{
BSONE_DEBUG(L"FilterSendMessage fail (%x)\n", result);
return FALSE;
}
return TRUE;
}
BOOL CInterface::SetProcessProtect(BOOL enable) BOOL CInterface::SetProcessProtect(BOOL enable)
{ {
BS1FLT_MESSAGE msg = { 0, }; BS1FLT_MESSAGE msg = { 0, };

View File

@ -145,7 +145,7 @@ public:
HRESULT GetLog(LPVOID outbuff, SIZE_T outbuffsize, DWORD* pdwReturnSize); HRESULT GetLog(LPVOID outbuff, SIZE_T outbuffsize, DWORD* pdwReturnSize);
BOOL SetDeviceProtect(DWORD enable); BOOL SetDeviceProtect(DWORD enable);
BOOL SetPolicy(enum_devicetype devcie_type, enum_devicestate state, BOOL islog); BOOL SetPolicy(enum_devicetype devcie_type, enum_devicestate state, BOOL islog);
BOOL SetUsbPolicy(enum_usb_device_type usb_device_type, enum_devicestate state);
BOOL SetProcessProtect(BOOL enable); BOOL SetProcessProtect(BOOL enable);
BOOL SetProcessProtectName(DWORD type, LPCWSTR name); BOOL SetProcessProtectName(DWORD type, LPCWSTR name);
BOOL DelProcessProtectName(DWORD type, LPCWSTR name); BOOL DelProcessProtectName(DWORD type, LPCWSTR name);

View File

@ -3,5 +3,5 @@
#include "pch.h" #include "pch.h"
// 미리 컴파일된 헤더를 사용하는 경우 컴파일이 성공하려면 이 소스 파일이 필요합니다. // 미리 컴파일된 헤더를 사용하는 경우 컴파일이 성공하려면 이 소스 파일이 필요합니다.
Log4cppLogger log4_("bslflt"); Log4cppLogger log4_("bs1flt");

View File

@ -27,7 +27,7 @@ DWORD Bs1fltControl::Init(LPCTSTR path, fpCallBack logcb)
return 1; return 1;
} }
PVOID fuc[37] = { NULL, }; PVOID fuc[38] = { NULL, };
fuc[0] = Bs1FltCleanup = (fpCleanup)GetProcAddress(h_, (LPCSTR)MAKELONG(1, 0)); fuc[0] = Bs1FltCleanup = (fpCleanup)GetProcAddress(h_, (LPCSTR)MAKELONG(1, 0));
fuc[1] = Bs1FltInit = (fpInit)GetProcAddress(h_, (LPCSTR)MAKELONG(2, 0)); fuc[1] = Bs1FltInit = (fpInit)GetProcAddress(h_, (LPCSTR)MAKELONG(2, 0));
@ -72,6 +72,7 @@ DWORD Bs1fltControl::Init(LPCTSTR path, fpCallBack logcb)
fuc[34] = Bs1fltClearProcessCreateBlockRule = (fpBs1fltClearProcessCreateBlockRule)GetProcAddress(h_, (LPCSTR)MAKELONG(35, 0)); fuc[34] = Bs1fltClearProcessCreateBlockRule = (fpBs1fltClearProcessCreateBlockRule)GetProcAddress(h_, (LPCSTR)MAKELONG(35, 0));
fuc[35] = Bs1fltClearUsbPortException = (fpBs1fltClearUsbPortException)GetProcAddress(h_, (LPCSTR)MAKELONG(36, 0)); fuc[35] = Bs1fltClearUsbPortException = (fpBs1fltClearUsbPortException)GetProcAddress(h_, (LPCSTR)MAKELONG(36, 0));
fuc[36] = Bs1fltOpen = (fpBs1fltOpen)GetProcAddress(h_, (LPCSTR)MAKELONG(37, 0)); fuc[36] = Bs1fltOpen = (fpBs1fltOpen)GetProcAddress(h_, (LPCSTR)MAKELONG(37, 0));
fuc[37] = Bs1fltSetUsbPolicy = (fpBs1fltSetUsbPolicy)GetProcAddress(h_, (LPCSTR)MAKELONG(38, 0));
for (DWORD i = 0; i < ARRAYSIZE(fuc); ++i) for (DWORD i = 0; i < ARRAYSIZE(fuc); ++i)
{ {

View File

@ -50,6 +50,7 @@ typedef DWORD(WINAPI* fpBs1fltSetProcessCreateBlockRule)(LPCWSTR name, LPCWSTR c
typedef DWORD(WINAPI* fpBs1fltClearProcessCreateBlockRule)(); typedef DWORD(WINAPI* fpBs1fltClearProcessCreateBlockRule)();
typedef DWORD(WINAPI* fpBs1fltClearUsbPortException)(); typedef DWORD(WINAPI* fpBs1fltClearUsbPortException)();
typedef DWORD(WINAPI* fpBs1fltOpen)(); typedef DWORD(WINAPI* fpBs1fltOpen)();
typedef DWORD(WINAPI* fpBs1fltSetUsbPolicy)(DWORD usb_device_type, DWORD state);
class Bs1fltControl { class Bs1fltControl {
public: public:
@ -102,5 +103,6 @@ public:
fpBs1fltClearUsbPortException Bs1fltClearUsbPortException; fpBs1fltClearUsbPortException Bs1fltClearUsbPortException;
fpBs1fltOpen Bs1fltOpen; fpBs1fltOpen Bs1fltOpen;
fpBs1fltSetUsbPolicy Bs1fltSetUsbPolicy;
HMODULE h_; HMODULE h_;
}; };

View File

@ -13,6 +13,7 @@
//#include "BSone_define.h" //#include "BSone_define.h"
#include "../bs1flt/Bs1flt_common.h" #include "../bs1flt/Bs1flt_common.h"
#include "bs1fltctrl_helper.h" #include "bs1fltctrl_helper.h"
#include "devicesetup.h"
#include "CDialogUsbException.h" #include "CDialogUsbException.h"
#include "CDialogProtectProcess.h" #include "CDialogProtectProcess.h"
#include "CDlgProcessCreateRule.h" #include "CDlgProcessCreateRule.h"

View File

@ -205,6 +205,7 @@
<ClInclude Include="CDialogUsbException.h" /> <ClInclude Include="CDialogUsbException.h" />
<ClInclude Include="CDlgProcessCreateRule.h" /> <ClInclude Include="CDlgProcessCreateRule.h" />
<ClInclude Include="CFolderProtectDlg.h" /> <ClInclude Include="CFolderProtectDlg.h" />
<ClInclude Include="devicesetup.h" />
<ClInclude Include="framework.h" /> <ClInclude Include="framework.h" />
<ClInclude Include="pch.h" /> <ClInclude Include="pch.h" />
<ClInclude Include="Resource.h" /> <ClInclude Include="Resource.h" />
@ -219,6 +220,7 @@
<ClCompile Include="CDialogUsbException.cpp" /> <ClCompile Include="CDialogUsbException.cpp" />
<ClCompile Include="CDlgProcessCreateRule.cpp" /> <ClCompile Include="CDlgProcessCreateRule.cpp" />
<ClCompile Include="CFolderProtectDlg.cpp" /> <ClCompile Include="CFolderProtectDlg.cpp" />
<ClCompile Include="devicesetup.cpp" />
<ClCompile Include="pch.cpp"> <ClCompile Include="pch.cpp">
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Create</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Create</PrecompiledHeader>
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader> <PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>

View File

@ -54,6 +54,9 @@
<ClInclude Include="CFolderProtectDlg.h"> <ClInclude Include="CFolderProtectDlg.h">
<Filter>헤더 파일</Filter> <Filter>헤더 파일</Filter>
</ClInclude> </ClInclude>
<ClInclude Include="devicesetup.h">
<Filter>헤더 파일</Filter>
</ClInclude>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ClCompile Include="tool.cpp"> <ClCompile Include="tool.cpp">
@ -83,6 +86,9 @@
<ClCompile Include="CFolderProtectDlg.cpp"> <ClCompile Include="CFolderProtectDlg.cpp">
<Filter>소스 파일</Filter> <Filter>소스 파일</Filter>
</ClCompile> </ClCompile>
<ClCompile Include="devicesetup.cpp">
<Filter>소스 파일</Filter>
</ClCompile>
</ItemGroup> </ItemGroup>
<ItemGroup> <ItemGroup>
<ResourceCompile Include="tool.rc"> <ResourceCompile Include="tool.rc">

View File

@ -631,7 +631,26 @@ void CtoolDlg::OnBnClickedButtonSetPolicy()
debug.Format(L"SetPolicy : Device Type %d State %d Islog %d", policy[i].device_type, policy[i].state, policy[i].islog); debug.Format(L"SetPolicy : Device Type %d State %d Islog %d", policy[i].device_type, policy[i].state, policy[i].islog);
listLog_.AddString(debug); listLog_.AddString(debug);
bs1flt_.Bs1FltSetPolicy((DWORD)policy[i].device_type, policy[i].state, policy[i].islog); bs1flt_.Bs1FltSetPolicy((DWORD)policy[i].device_type, policy[i].state, policy[i].islog);
if ((DWORD)policy[i].device_type == BDC_USB && policy[i].state == DISABLE)
{
bs1flt_.Bs1fltSetUsbPolicy((DWORD)BDC_USB_CLASS_UNSPECIFIED, DISABLE);
bs1flt_.Bs1fltSetUsbPolicy((DWORD)BDC_USB_CLASS_CDC, DISABLE);
bs1flt_.Bs1fltSetUsbPolicy((DWORD)BDC_USB_CLASS_HID, ENABLE);
bs1flt_.Bs1fltSetUsbPolicy((DWORD)BDC_USB_CLASS_AUDIO, DISABLE);
bs1flt_.Bs1fltSetUsbPolicy((DWORD)BDC_USB_CLASS_PHYSICAL, DISABLE);
bs1flt_.Bs1fltSetUsbPolicy((DWORD)BDC_USB_CLASS_IMAGE, DISABLE);
bs1flt_.Bs1fltSetUsbPolicy((DWORD)BDC_USB_CLASS_PRINTER, DISABLE);
bs1flt_.Bs1fltSetUsbPolicy((DWORD)BDC_USB_CLASS_MSC, DISABLE);
bs1flt_.Bs1fltSetUsbPolicy((DWORD)BDC_USB_CLASS_CDC_DATA, DISABLE);
bs1flt_.Bs1fltSetUsbPolicy((DWORD)BDC_USB_CLASS_SMART_CARD, DISABLE);
debug.Format(L"SetPolicy : ReStartUsb");
CloseHandle(CreateThread(NULL, 0, ReStartUsb, NULL, 0, NULL));
}
} }
/*debug.Format(L"SetPolicy : %d %d", state, islog); /*debug.Format(L"SetPolicy : %d %d", state, islog);

View File

@ -1,22 +1,8 @@
C:\Program Files\Microsoft Visual Studio\2022\Professional\MSBuild\Microsoft\VC\v170\Microsoft.CppBuild.targets(524,5): warning MSB8004: Output 디렉터리가 슬래시로 끝나지 않습니다. Output 디렉터리의 적절한 평가를 허용하는 데 필요하므로 이 빌드 인스턴스에서 슬래시를 추가합니다. C:\Program Files\Microsoft Visual Studio\2022\Professional\MSBuild\Microsoft\VC\v170\Microsoft.CppBuild.targets(524,5): warning MSB8004: Output 디렉터리가 슬래시로 끝나지 않습니다. Output 디렉터리의 적절한 평가를 허용하는 데 필요하므로 이 빌드 인스턴스에서 슬래시를 추가합니다.
pch.cpp
CDialogProtectProcess.cpp
CDialogRegProtect.cpp
CDialogUsbException.cpp
C:\mgkim\8.bsone\BSOne.SFC\Tocsg.Module\Bs1Flt\tool\CDialogUsbException.cpp(80,3): warning C4129: 'D': 인식할 수 없는 문자 이스케이프 시퀀스입니다.
(소스 파일 '/CDialogUsbException.cpp'을(를) 컴파일하는 중)
C:\mgkim\8.bsone\BSOne.SFC\Tocsg.Module\Bs1Flt\tool\CDialogUsbException.cpp(80,3): warning C4129: '8': 인식할 수 없는 문자 이스케이프 시퀀스입니다.
(소스 파일 '/CDialogUsbException.cpp'을(를) 컴파일하는 중)
CDlgProcessCreateRule.cpp
CFolderProtectDlg.cpp
bs1fltctrl_helper.cpp
tool.cpp
toolDlg.cpp toolDlg.cpp
코드를 생성하고 있습니다. 코드를 생성하고 있습니다.
5 of 454 functions ( 1.1%) were compiled, the rest were copied from previous compilation. 1 of 459 functions ( 0.2%) were compiled, the rest were copied from previous compilation.
2 functions were new in current compilation 0 functions were new in current compilation
1 functions had inline decision re-evaluated but remain unchanged 1 functions had inline decision re-evaluated but remain unchanged
코드를 생성했습니다. 코드를 생성했습니다.
tool.vcxproj -> C:\mgkim\8.bsone\BSOne.SFC\Tocsg.Module\Bs1Flt\bin\bs1fltputool.exe tool.vcxproj -> C:\mgkim\8.bsone\BSOne.SFC\Tocsg.Module\Bs1Flt\bin\bs1fltputool.exe

View File

@ -4,6 +4,7 @@ C:\mgkim\8.bsone\BSOne.SFC\Tocsg.Module\Bs1Flt\tool\CDialogRegProtect.cpp;C:\mgk
C:\mgkim\8.bsone\BSOne.SFC\Tocsg.Module\Bs1Flt\tool\CDialogUsbException.cpp;C:\mgkim\8.bsone\BSOne.SFC\Tocsg.Module\Bs1Flt\tool\x64\Release\CDialogUsbException.obj C:\mgkim\8.bsone\BSOne.SFC\Tocsg.Module\Bs1Flt\tool\CDialogUsbException.cpp;C:\mgkim\8.bsone\BSOne.SFC\Tocsg.Module\Bs1Flt\tool\x64\Release\CDialogUsbException.obj
C:\mgkim\8.bsone\BSOne.SFC\Tocsg.Module\Bs1Flt\tool\CDlgProcessCreateRule.cpp;C:\mgkim\8.bsone\BSOne.SFC\Tocsg.Module\Bs1Flt\tool\x64\Release\CDlgProcessCreateRule.obj C:\mgkim\8.bsone\BSOne.SFC\Tocsg.Module\Bs1Flt\tool\CDlgProcessCreateRule.cpp;C:\mgkim\8.bsone\BSOne.SFC\Tocsg.Module\Bs1Flt\tool\x64\Release\CDlgProcessCreateRule.obj
C:\mgkim\8.bsone\BSOne.SFC\Tocsg.Module\Bs1Flt\tool\CFolderProtectDlg.cpp;C:\mgkim\8.bsone\BSOne.SFC\Tocsg.Module\Bs1Flt\tool\x64\Release\CFolderProtectDlg.obj C:\mgkim\8.bsone\BSOne.SFC\Tocsg.Module\Bs1Flt\tool\CFolderProtectDlg.cpp;C:\mgkim\8.bsone\BSOne.SFC\Tocsg.Module\Bs1Flt\tool\x64\Release\CFolderProtectDlg.obj
C:\mgkim\8.bsone\BSOne.SFC\Tocsg.Module\Bs1Flt\tool\devicesetup.cpp;C:\mgkim\8.bsone\BSOne.SFC\Tocsg.Module\Bs1Flt\tool\x64\Release\devicesetup.obj
C:\mgkim\8.bsone\BSOne.SFC\Tocsg.Module\Bs1Flt\tool\pch.cpp;C:\mgkim\8.bsone\BSOne.SFC\Tocsg.Module\Bs1Flt\tool\x64\Release\pch.obj C:\mgkim\8.bsone\BSOne.SFC\Tocsg.Module\Bs1Flt\tool\pch.cpp;C:\mgkim\8.bsone\BSOne.SFC\Tocsg.Module\Bs1Flt\tool\x64\Release\pch.obj
C:\mgkim\8.bsone\BSOne.SFC\Tocsg.Module\Bs1Flt\tool\tool.cpp;C:\mgkim\8.bsone\BSOne.SFC\Tocsg.Module\Bs1Flt\tool\x64\Release\tool.obj C:\mgkim\8.bsone\BSOne.SFC\Tocsg.Module\Bs1Flt\tool\tool.cpp;C:\mgkim\8.bsone\BSOne.SFC\Tocsg.Module\Bs1Flt\tool\x64\Release\tool.obj
C:\mgkim\8.bsone\BSOne.SFC\Tocsg.Module\Bs1Flt\tool\toolDlg.cpp;C:\mgkim\8.bsone\BSOne.SFC\Tocsg.Module\Bs1Flt\tool\x64\Release\toolDlg.obj C:\mgkim\8.bsone\BSOne.SFC\Tocsg.Module\Bs1Flt\tool\toolDlg.cpp;C:\mgkim\8.bsone\BSOne.SFC\Tocsg.Module\Bs1Flt\tool\x64\Release\toolDlg.obj

View File

@ -1,3 +1,3 @@
^C:\MGKIM\8.BSONE\BSONE.SFC\TOCSG.MODULE\BS1FLT\TOOL\X64\RELEASE\BS1FLTCTRL_HELPER.OBJ|C:\MGKIM\8.BSONE\BSONE.SFC\TOCSG.MODULE\BS1FLT\TOOL\X64\RELEASE\CDIALOGPROTECTPROCESS.OBJ|C:\MGKIM\8.BSONE\BSONE.SFC\TOCSG.MODULE\BS1FLT\TOOL\X64\RELEASE\CDIALOGREGPROTECT.OBJ|C:\MGKIM\8.BSONE\BSONE.SFC\TOCSG.MODULE\BS1FLT\TOOL\X64\RELEASE\CDIALOGUSBEXCEPTION.OBJ|C:\MGKIM\8.BSONE\BSONE.SFC\TOCSG.MODULE\BS1FLT\TOOL\X64\RELEASE\CDLGPROCESSCREATERULE.OBJ|C:\MGKIM\8.BSONE\BSONE.SFC\TOCSG.MODULE\BS1FLT\TOOL\X64\RELEASE\CFOLDERPROTECTDLG.OBJ|C:\MGKIM\8.BSONE\BSONE.SFC\TOCSG.MODULE\BS1FLT\TOOL\X64\RELEASE\PCH.OBJ|C:\MGKIM\8.BSONE\BSONE.SFC\TOCSG.MODULE\BS1FLT\TOOL\X64\RELEASE\TOOL.OBJ|C:\MGKIM\8.BSONE\BSONE.SFC\TOCSG.MODULE\BS1FLT\TOOL\X64\RELEASE\TOOL.RES|C:\MGKIM\8.BSONE\BSONE.SFC\TOCSG.MODULE\BS1FLT\TOOL\X64\RELEASE\TOOLDLG.OBJ ^C:\MGKIM\8.BSONE\BSONE.SFC\TOCSG.MODULE\BS1FLT\TOOL\X64\RELEASE\BS1FLTCTRL_HELPER.OBJ|C:\MGKIM\8.BSONE\BSONE.SFC\TOCSG.MODULE\BS1FLT\TOOL\X64\RELEASE\CDIALOGPROTECTPROCESS.OBJ|C:\MGKIM\8.BSONE\BSONE.SFC\TOCSG.MODULE\BS1FLT\TOOL\X64\RELEASE\CDIALOGREGPROTECT.OBJ|C:\MGKIM\8.BSONE\BSONE.SFC\TOCSG.MODULE\BS1FLT\TOOL\X64\RELEASE\CDIALOGUSBEXCEPTION.OBJ|C:\MGKIM\8.BSONE\BSONE.SFC\TOCSG.MODULE\BS1FLT\TOOL\X64\RELEASE\CDLGPROCESSCREATERULE.OBJ|C:\MGKIM\8.BSONE\BSONE.SFC\TOCSG.MODULE\BS1FLT\TOOL\X64\RELEASE\CFOLDERPROTECTDLG.OBJ|C:\MGKIM\8.BSONE\BSONE.SFC\TOCSG.MODULE\BS1FLT\TOOL\X64\RELEASE\DEVICESETUP.OBJ|C:\MGKIM\8.BSONE\BSONE.SFC\TOCSG.MODULE\BS1FLT\TOOL\X64\RELEASE\PCH.OBJ|C:\MGKIM\8.BSONE\BSONE.SFC\TOCSG.MODULE\BS1FLT\TOOL\X64\RELEASE\TOOL.OBJ|C:\MGKIM\8.BSONE\BSONE.SFC\TOCSG.MODULE\BS1FLT\TOOL\X64\RELEASE\TOOL.RES|C:\MGKIM\8.BSONE\BSONE.SFC\TOCSG.MODULE\BS1FLT\TOOL\X64\RELEASE\TOOLDLG.OBJ
C:\mgkim\8.bsone\BSOne.SFC\Tocsg.Module\Bs1Flt\tool\x64\Release\bs1fltputool.IPDB C:\mgkim\8.bsone\BSOne.SFC\Tocsg.Module\Bs1Flt\tool\x64\Release\bs1fltputool.IPDB
C:\mgkim\8.bsone\BSOne.SFC\Tocsg.Module\Bs1Flt\tool\x64\Release\bs1fltputool.iobj C:\mgkim\8.bsone\BSOne.SFC\Tocsg.Module\Bs1Flt\tool\x64\Release\bs1fltputool.iobj

View File

@ -3,8 +3,8 @@ object AuthForm: TAuthForm
Top = 0 Top = 0
BorderIcons = [biMinimize, biMaximize] BorderIcons = [biMinimize, biMaximize]
Caption = 'BSOne Login' Caption = 'BSOne Login'
ClientHeight = 171 ClientHeight = 199
ClientWidth = 146 ClientWidth = 228
Color = clBtnFace Color = clBtnFace
Font.Charset = DEFAULT_CHARSET Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText Font.Color = clWindowText
@ -15,30 +15,42 @@ object AuthForm: TAuthForm
TextHeight = 15 TextHeight = 15
object Label1: TLabel object Label1: TLabel
Left = 8 Left = 8
Top = 8 Top = 16
Width = 11 Width = 33
Height = 15 Height = 17
Caption = 'ID' Caption = 'ID'
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -13
Font.Name = 'Segoe UI'
Font.Style = []
ParentFont = False
end end
object Label2: TLabel object Label2: TLabel
Left = 8 Left = 8
Top = 58 Top = 68
Width = 18 Width = 41
Height = 15 Height = 17
Caption = 'PW' Caption = 'PW'
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -13
Font.Name = 'Segoe UI'
Font.Style = []
ParentFont = False
end end
object EditID: TEdit object EditID: TEdit
Left = 8 Left = 8
Top = 29 Top = 39
Width = 129 Width = 212
Height = 23 Height = 23
TabOrder = 0 TabOrder = 0
TextHint = 'ID'#47484' '#51077#47141#54616#49464#50836 TextHint = 'ID'#47484' '#51077#47141#54616#49464#50836
end end
object EditPW: TEdit object EditPW: TEdit
Left = 8 Left = 8
Top = 79 Top = 91
Width = 129 Width = 212
Height = 23 Height = 23
PasswordChar = '*' PasswordChar = '*'
TabOrder = 1 TabOrder = 1
@ -46,9 +58,9 @@ object AuthForm: TAuthForm
end end
object ButtonLogin: TButton object ButtonLogin: TButton
Left = 8 Left = 8
Top = 120 Top = 128
Width = 129 Width = 212
Height = 33 Height = 49
Caption = 'Login' Caption = 'Login'
Default = True Default = True
TabOrder = 2 TabOrder = 2

File diff suppressed because one or more lines are too long

View File

@ -1,20 +1,20 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<BorlandProject> <BorlandProject>
<Transactions> <Transactions>
<Transaction>1899-12-30 00:00:00.000.796,C:\mgkim\8.bsone\BSOne.SFC\Tocsg.Module\Bs1Flt\MTPMon\MTPControl\BsoneDebug.pas=</Transaction>
<Transaction>1899-12-30 00:00:00.000.471,=C:\mgkim\8.bsone\BSOne.SFC\Tocsg.Module\Bs1Flt\MTPMon\MTPControl\BsoneDebug.pas</Transaction>
<Transaction>1899-12-30 00:00:00.000.033,=C:\mgkim\8.bsone\BSOne.SFC\eCrmHE\DLL_eCrmHeHelper\WindowFinderThread.pas</Transaction>
<Transaction>1899-12-30 00:00:00.000.246,=C:\mgkim\8.bsone\BSOne.SFC\Tocsg.Module\Bs1Flt\MTPMon\MTPControl\BsoneDebug.pas</Transaction>
<Transaction>1899-12-30 00:00:00.000.318,=C:\mgkim\8.bsone\BSOne.SFC\Tocsg.Module\Bs1Flt\MTPMon\MTPControl\FileHandleListUnit.pas</Transaction>
<Transaction>1899-12-30 00:00:00.000.894,C:\mgkim\8.bsone\BSOne.SFC\Tocsg.Module\Bs1Flt\MTPMon\MTPControl\FileHandleListUnit.pas=</Transaction>
<Transaction>1899-12-30 00:00:00.000.546,=C:\mgkim\8.bsone\BSOne.SFC\Tocsg.Module\Bs1Flt\MTPMon\MTPControl\FileHandleListUnit.pas</Transaction>
<Transaction>1899-12-30 00:00:00.000.934,C:\mgkim\8.bsone\BSOne.SFC\Tocsg.Module\Bs1Flt\MTPMon\MTPControl\ObexParserUnit.pas=</Transaction>
<Transaction>1899-12-30 00:00:00.000.283,=C:\mgkim\8.bsone\BSOne.SFC\Tocsg.Module\Bs1Flt\MTPMon\MTPControl\BsoneUtil.pas</Transaction>
<Transaction>1899-12-30 00:00:00.000.853,C:\mgkim\8.bsone\BSOne.SFC\Tocsg.Module\Bs1Flt\MTPMon\MTPControl\BsoneUtil.pas=</Transaction>
<Transaction>1899-12-30 00:00:00.000.508,=C:\mgkim\8.bsone\BSOne.SFC\Tocsg.Module\Bs1Flt\MTPMon\MTPControl\BsoneUtil.pas</Transaction>
<Transaction>1899-12-30 00:00:00.000.691,=C:\mgkim\8.bsone\BSOne.SFC\eCrmHE\DLL_eCrmHeHelper\Unit1.pas</Transaction>
<Transaction>1899-12-30 00:00:00.000.581,=C:\mgkim\8.bsone\BSOne.SFC\Tocsg.Module\Bs1Flt\MTPMon\MTPControl\ObexParserUnit.pas</Transaction> <Transaction>1899-12-30 00:00:00.000.581,=C:\mgkim\8.bsone\BSOne.SFC\Tocsg.Module\Bs1Flt\MTPMon\MTPControl\ObexParserUnit.pas</Transaction>
<Transaction>1899-12-30 00:00:00.000.934,C:\mgkim\8.bsone\BSOne.SFC\Tocsg.Module\Bs1Flt\MTPMon\MTPControl\ObexParserUnit.pas=</Transaction>
<Transaction>1899-12-30 00:00:00.000.033,=C:\mgkim\8.bsone\BSOne.SFC\eCrmHE\DLL_eCrmHeHelper\WindowFinderThread.pas</Transaction>
<Transaction>1899-12-30 00:00:00.000.361,=C:\mgkim\8.bsone\BSOne.SFC\Tocsg.Module\Bs1Flt\MTPMon\MTPControl\ObexParserUnit.pas</Transaction> <Transaction>1899-12-30 00:00:00.000.361,=C:\mgkim\8.bsone\BSOne.SFC\Tocsg.Module\Bs1Flt\MTPMon\MTPControl\ObexParserUnit.pas</Transaction>
<Transaction>1899-12-30 00:00:00.000.713,C:\mgkim\8.bsone\BSOne.SFC\Tocsg.Module\Bs1Flt\MTPMon\MTPControl\ApiHookContents.pas=C:\mgkim\8.bsone\BSOne.SFC\eCrmHE\DLL_eCrmHeHelper\Unit1.pas</Transaction> <Transaction>1899-12-30 00:00:00.000.546,=C:\mgkim\8.bsone\BSOne.SFC\Tocsg.Module\Bs1Flt\MTPMon\MTPControl\FileHandleListUnit.pas</Transaction>
<Transaction>1899-12-30 00:00:00.000.894,C:\mgkim\8.bsone\BSOne.SFC\Tocsg.Module\Bs1Flt\MTPMon\MTPControl\FileHandleListUnit.pas=</Transaction>
<Transaction>1899-12-30 00:00:00.000.318,=C:\mgkim\8.bsone\BSOne.SFC\Tocsg.Module\Bs1Flt\MTPMon\MTPControl\FileHandleListUnit.pas</Transaction>
<Transaction>1899-12-30 00:00:00.000.246,=C:\mgkim\8.bsone\BSOne.SFC\Tocsg.Module\Bs1Flt\MTPMon\MTPControl\BsoneDebug.pas</Transaction>
<Transaction>1899-12-30 00:00:00.000.508,=C:\mgkim\8.bsone\BSOne.SFC\Tocsg.Module\Bs1Flt\MTPMon\MTPControl\BsoneUtil.pas</Transaction>
<Transaction>1899-12-30 00:00:00.000.853,C:\mgkim\8.bsone\BSOne.SFC\Tocsg.Module\Bs1Flt\MTPMon\MTPControl\BsoneUtil.pas=</Transaction>
<Transaction>1899-12-30 00:00:00.000.283,=C:\mgkim\8.bsone\BSOne.SFC\Tocsg.Module\Bs1Flt\MTPMon\MTPControl\BsoneUtil.pas</Transaction>
<Transaction>1899-12-30 00:00:00.000.691,=C:\mgkim\8.bsone\BSOne.SFC\eCrmHE\DLL_eCrmHeHelper\Unit1.pas</Transaction>
<Transaction>1899-12-30 00:00:00.000.471,=C:\mgkim\8.bsone\BSOne.SFC\Tocsg.Module\Bs1Flt\MTPMon\MTPControl\BsoneDebug.pas</Transaction>
<Transaction>1899-12-30 00:00:00.000.796,C:\mgkim\8.bsone\BSOne.SFC\Tocsg.Module\Bs1Flt\MTPMon\MTPControl\BsoneDebug.pas=</Transaction>
<Transaction>1899-12-30 00:00:00.000.713,C:\mgkim\8.bsone\BSOne.SFC\eCrmHE\DLL_eCrmHeHelper\Unit1.pas=C:\mgkim\8.bsone\BSOne.SFC\Tocsg.Module\Bs1Flt\MTPMon\MTPControl\ApiHookContents.pas</Transaction>
</Transactions> </Transactions>
</BorlandProject> </BorlandProject>

View File

@ -2185,6 +2185,27 @@ object DlgeCrmHeInstMain: TDlgeCrmHeInstMain
Caption = #51312#54924 Caption = #51312#54924
OnClick = btnInfoClick OnClick = btnInfoClick
end end
object Label20: TLabel
Left = 48
Top = 122
Width = 70
Height = 17
Alignment = taRightJustify
Caption = 'IP '#51221#48372' '#51077#47141
Font.Charset = DEFAULT_CHARSET
Font.Color = clWindowText
Font.Height = -13
Font.Name = 'Segoe UI'
Font.Style = []
ParentFont = False
end
object Label21: TLabel
Left = 321
Top = 124
Width = 33
Height = 15
Caption = #54252#53944' : '
end
object edEmpNo: TEdit object edEmpNo: TEdit
Left = 150 Left = 150
Top = 164 Top = 164
@ -2215,6 +2236,31 @@ object DlgeCrmHeInstMain: TDlgeCrmHeInstMain
State = cbChecked State = cbChecked
TabOrder = 2 TabOrder = 2
end end
object edtIPAddress: TEdit
Left = 150
Top = 120
Width = 155
Height = 23
TabOrder = 3
Text = '192.168.15.197'
end
object edtPort: TEdit
Left = 360
Top = 120
Width = 63
Height = 23
TabOrder = 4
Text = '8443'
end
object chkIPCheck: TCheckBox
Left = 429
Top = 120
Width = 97
Height = 17
Caption = 'IP '#51217#49549' '#52404#53356
TabOrder = 5
OnClick = ClickiPCheck
end
end end
object cdInstall: TCard object cdInstall: TCard
Left = 0 Left = 0

View File

@ -8,7 +8,7 @@ uses
Vcl.Imaging.pngimage, PngImageList, System.ImageList, Vcl.ImgList, Vcl.Imaging.pngimage, PngImageList, System.ImageList, Vcl.ImgList,
Vcl.WinXPanels, Vcl.ComCtrls, VirtualTrees, Vcl.Buttons, Vcl.WinXPanels, Vcl.ComCtrls, VirtualTrees, Vcl.Buttons,
IdHTTP, IdSSLOpenSSL, IdIOHandler, System.Actions, Vcl.ActnList, AbArcTyp, IdHTTP, IdSSLOpenSSL, IdIOHandler, System.Actions, Vcl.ActnList, AbArcTyp,
AbUtils, Tocsg.Obj, superobject; AbUtils, Tocsg.Obj, superobject, System.Net.HttpClient, System.Net.URLClient;
//{$DEFINE _MOTRAS_} //{$DEFINE _MOTRAS_}
//{$DEFINE _SILENT_} //{$DEFINE _SILENT_}
@ -98,6 +98,11 @@ type
acPrev: TAction; acPrev: TAction;
acComplete: TAction; acComplete: TAction;
acReinstall: TAction; acReinstall: TAction;
Label20: TLabel;
edtIPAddress: TEdit;
edtPort: TEdit;
Label21: TLabel;
chkIPCheck: TCheckBox;
procedure FormMouseDown(Sender: TObject; Button: TMouseButton; procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer); Shift: TShiftState; X, Y: Integer);
procedure imgMinClick(Sender: TObject); procedure imgMinClick(Sender: TObject);
@ -137,12 +142,18 @@ type
procedure acCompleteExecute(Sender: TObject); procedure acCompleteExecute(Sender: TObject);
procedure acNextExecute(Sender: TObject); procedure acNextExecute(Sender: TObject);
procedure acPrevExecute(Sender: TObject); procedure acPrevExecute(Sender: TObject);
procedure clickIpCheck(Sender: TObject);
private private
{ Private declarations } { Private declarations }
HTTP_: TIdHTTP; HTTP_: TIdHTTP;
SSL_: TIdSSLIOHandlerSocketOpenSSL; SSL_: TIdSSLIOHandlerSocketOpenSSL;
sEmpNoVerifyOK_: String; sEmpNoVerifyOK_: String;
ip_: string;
port_: string;
serverInfo_: string;
procedure InitHttp; procedure InitHttp;
function btnIpCheckClick: Boolean;
function CheckEmpNo: Boolean; function CheckEmpNo: Boolean;
function LoadEmpNo: Boolean; function LoadEmpNo: Boolean;
procedure SetImgBtn(aImgList: TPngImageList; imgBtn: TImage; nImgIdx: Integer); procedure SetImgBtn(aImgList: TPngImageList; imgBtn: TImage; nImgIdx: Integer);
@ -172,6 +183,13 @@ type
procedure SaveFileInfo(sPath: String); procedure SaveFileInfo(sPath: String);
end; end;
type
TCertValidator = class
public
procedure DoValidateServerCertificate(const Sender: TObject; const ARequest: TURLRequest;
const Certificate: TCertificate; var Accepted: Boolean);
end;
function ProcessInstall(aInstForm: TDlgeCrmHeInstMain; bStartSvc: Boolean = false): Boolean; function ProcessInstall(aInstForm: TDlgeCrmHeInstMain; bStartSvc: Boolean = false): Boolean;
var var
@ -259,20 +277,20 @@ begin
if FileExists(FileList_[i]) then if FileExists(FileList_[i]) then
begin begin
if Pos('si.dat', FileList_[i]) > 0 then // if Pos('si.dat', FileList_[i]) > 0 then
begin // begin
var sidat, encsidat: TStringStream; // var sidat, encsidat: TStringStream;
var siO:ISuperObject; // var siO:ISuperObject;
//
Guard(sidat, TStringStream.Create('', TEncoding.UTF8)); // Guard(sidat, TStringStream.Create('', TEncoding.UTF8));
sidat.LoadFromFile(FileList_[i]); // sidat.LoadFromFile(FileList_[i]);
// siO := SO(sidat.DataString); //// siO := SO(sidat.DataString);
OutputDebugString(PChar(Format('[MGKIM] Encrypt ok : DataString : %s',[sidat.DataString]))); // OutputDebugString(PChar(Format('[MGKIM] Encrypt ok : DataString : %s',[sidat.DataString])));
Guard(encsidat, TStringStream.Create( // Guard(encsidat, TStringStream.Create(
EncStrToBinStr(ekAes256cbc, PASS_MODEL, sidat.DataString), TEncoding.UTF8)); // EncStrToBinStr(ekAes256cbc, PASS_MODEL, sidat.DataString), TEncoding.UTF8));
encsidat.SaveToFile(FileList_[i]); // encsidat.SaveToFile(FileList_[i]);
OutputDebugString(PChar(Format('[MGKIM] Encrypt ok : %s',[PChar(FileList_[i])]))); // OutputDebugString(PChar(Format('[MGKIM] Encrypt ok : %s',[PChar(FileList_[i])])));
end; // end;
sHash := GetFileToSha256(FileList_[i]); sHash := GetFileToSha256(FileList_[i]);
if sHash <> '' then if sHash <> '' then
@ -888,6 +906,18 @@ begin
if Result then if Result then
begin begin
var O: ISuperObject;
var ss: TStringStream;
O := SO;
O.S['SvrDest'] := DlgeCrmHeInstMain.serverInfo_;
Guard(ss, TStringStream.Create(
EncStrToBinStr(ekAes256cbc, PASS_MODEL, O.AsString), TEncoding.UTF8));
ss.SaveToFile(sInstDir + 'si.dat');
OutputDebugString(PChar(Format('[MGKIM] si dat ok : %s, %s',[PChar(sInstDir + 'si.dat'), DlgeCrmHeInstMain.serverInfo_])));
InstFileInfo.FileList_.Add(PChar(sInstDir + 'si.dat'));
InstFileInfo.SaveFileInfo(sBackDir + 'rst.00'); InstFileInfo.SaveFileInfo(sBackDir + 'rst.00');
end; end;
@ -1350,24 +1380,38 @@ begin
InitHttp; InitHttp;
Guard(SvrList, TStringList.Create); // Guard(SvrList, TStringList.Create);
GetDestServerList(SvrList); // GetDestServerList(SvrList);
ASSERT(SvrList.Count > 0); // ASSERT(SvrList.Count > 0);
for i := 0 to SvrList.Count - 1 do var serverInfo: string;
serverInfo := 'https://' + edtIPAddress.Text + ':' + edtPort.Text + '/agentLogRequests.do';
sInfo := GetEmpNoInfo(serverInfo, HTTP_, edEmpNo.Text);
if sInfo <> '' then
begin begin
sInfo := GetEmpNoInfo(SvrList[i], HTTP_, edEmpNo.Text); try
if sInfo <> '' then O := SO(sInfo);
begin except
try // ..
O := SO(sInfo);
break;
except
// ..
end;
end; end;
end; end;
// for i := 0 to SvrList.Count - 1 do
// begin
// sInfo := GetEmpNoInfo(SvrList[i], HTTP_, edEmpNo.Text);
// if sInfo <> '' then
// begin
// try
// O := SO(sInfo);
// break;
// except
// // ..
// end;
// end;
// end;
if (O <> nil) and (O.S['result'] <> 'false') then if (O <> nil) and (O.S['result'] <> 'false') then
begin begin
sEmpNoVerifyOK_ := edEmpNo.Text; sEmpNoVerifyOK_ := edEmpNo.Text;
@ -1390,6 +1434,115 @@ begin
end; end;
end; end;
procedure TCertValidator.DoValidateServerCertificate(const Sender: TObject; const ARequest: TURLRequest;
const Certificate: TCertificate; var Accepted: Boolean);
begin
// 핵심: 인증서가 만료되었거나 IP 주소라서 안 맞거나, 사설 인증서라도 무조건 통과(True) 시킴!
Accepted := True;
end;
function CheckServerConnection(const AUrl: string): Boolean;
var
Client: THTTPClient;
Response: IHTTPResponse;
Validator: TCertValidator; // 더미 클래스 변수 추가
begin
Result := False;
Validator := TCertValidator.Create; // 이벤트 처리용 객체 생성
// HTTP 클라이언트 객체 생성
Client := THTTPClient.Create;
try
// [핵심] 연결 시도 중 UI가 영원히 멈추는 것을 방지하기 위한 타임아웃 설정 (밀리초)
Client.ConnectionTimeout := 3000; // 3초 내에 연결 안 되면 포기
Client.ResponseTimeout := 3000; // 연결 후 3초 내에 응답 없으면 포기
Client.OnValidateServerCertificate := Validator.DoValidateServerCertificate;
try
// GET 방식 요청
Response := Client.Get(AUrl);
// 서버가 정상적으로 응답했는지 상태 코드 확인 (200 = OK)
// *참고: 웹 서버가 켜져있다는 것 자체만 확인하려면 Response가 돌아온 것만으로도 True를 줄 수 있습니다.
if Response.StatusCode = 200 then
Result := True
else
begin
// 404(Not Found)나 500(Server Error) 등이 발생했을 때의 처리
// _Trace(Format('서버 응답 오류: %d', [Response.StatusCode]));
OutputDebugString(PChar(Format('[MGKIM] 서버 응답 오류: %d', [Response.StatusCode])));
Result := False;
end;
except
on E: Exception do
begin
// 타임아웃, 네트워크 단절, 서버 다운 등의 경우 이곳으로 빠집니다.
// _Trace('접속 실패: ' + E.Message);
OutputDebugString(PChar('[MGKIM] 접속 실패: ' + E.Message));
Result := False;
end;
end;
finally
Client.Free;
end;
end;
function TDlgeCrmHeInstMain.btnIpCheckClick: Boolean;
var
ip: string;
port: string;
begin
Result:= False;
// if chkIPCheck.Enabled then
// exit;
ip:= edtIPAddress.Text;
if ip = '' then
begin
ShowMessage('IP 정보를 입력해주세요');
exit;
end;
port:= edtPort.Text;
if port = '' then
begin
ShowMessage('포트 정보를 입력해주세요');
exit;
end;
var serverInfo: string;
serverInfo := 'https://' + edtIPAddress.Text + ':' + edtPort.Text;
OutputDebugString(PChar(Format('[MGKIM] btnIpCheckClick ok .. (%s)(%d)(%s)',[ip, port.ToInteger(), serverInfo])));
// 마우스 커서를 모래시계(로딩) 상태로 변경 (사용자 UX 향상)
Screen.Cursor := crHourGlass;
try
if CheckServerConnection(serverInfo) then
begin
ShowMessage('서버에 성공적으로 접속되었습니다.');
Result:= True;
// TODO: 접속 성공 시 다음 로직 수행
end
else
begin
ShowMessage('서버 접속에 실패했습니다.' + sLineBreak +
'IP 주소와 포트 번호, 서버 상태를 확인해 주세요.');
end;
finally
// 검사가 끝나면 마우스 커서 원상복구
//Screen.Cursor := crDefault;
end;
end;
function TDlgeCrmHeInstMain.CheckEmpNo: Boolean; function TDlgeCrmHeInstMain.CheckEmpNo: Boolean;
var var
SvrList: TStringList; SvrList: TStringList;
@ -1413,16 +1566,70 @@ begin
GetDestServerList(SvrList); GetDestServerList(SvrList);
ASSERT(SvrList.Count > 0); ASSERT(SvrList.Count > 0);
for i := 0 to SvrList.Count - 1 do //https://localhost:8443/agentLogRequests.do
begin var serverInfo: string;
if VerifyEmpNo(SvrList[i], HTTP_, edEmpNo.Text) then serverInfo := 'https://' + edtIPAddress.Text + ':' + edtPort.Text + '/agentLogRequests.do';
begin
sEmpNoVerifyOK_ := edEmpNo.Text;
Result := true; if VerifyEmpNo(serverInfo, HTTP_, edEmpNo.Text) then
exit; begin
end; sEmpNoVerifyOK_ := edEmpNo.Text;
Result := true;
exit;
end; end;
// for i := 0 to SvrList.Count - 1 do
// begin
// if VerifyEmpNo(SvrList[i], HTTP_, edEmpNo.Text) then
// begin
// sEmpNoVerifyOK_ := edEmpNo.Text;
//
// Result := true;
// exit;
// end;
// end;
end;
procedure TDlgeCrmHeInstMain.clickIpCheck(Sender: TObject);
var
state : Boolean;
begin
if not chkIPCheck.Checked then
begin
edtIPAddress.ReadOnly := False;
edtPort.ReadOnly := False;
edtIPAddress.Color := clWindow;
edtPort.Color := clWindow;
Exit;
end;
try
state := btnIpCheckClick;
if state then
begin
edtIPAddress.ReadOnly := True;
edtPort.ReadOnly := True;
edtIPAddress.Color := clBtnFace;
edtPort.Color := clBtnFace;
end
else
begin
chkIPCheck.Checked := False;
edtIPAddress.ReadOnly := False;
edtPort.ReadOnly := False;
edtIPAddress.Color := clWindow;
edtPort.Color := clWindow;
end;
finally
Screen.Cursor := crDefault;
chkIPCheck.Checked := state;
end;
end; end;
procedure TDlgeCrmHeInstMain.SetImgBtn(aImgList: TPngImageList; imgBtn: TImage; nImgIdx: Integer); procedure TDlgeCrmHeInstMain.SetImgBtn(aImgList: TPngImageList; imgBtn: TImage; nImgIdx: Integer);
@ -1779,6 +1986,28 @@ begin
begin begin
edEmpNo.Text := Trim(edEmpNo.Text); edEmpNo.Text := Trim(edEmpNo.Text);
edVpnId.Text := Trim(edVpnId.Text); edVpnId.Text := Trim(edVpnId.Text);
if not chkIPCheck.Checked then
begin
MessageBox(Handle, '서버 접속 확인을 해주세요.', PChar(Caption), MB_ICONWARNING or MB_OK);
end;
if edtIPAddress.Text = '' then
begin
MessageBox(Handle, 'IP 정보를 입력해주세요', PChar(Caption), MB_ICONWARNING or MB_OK);
exit;
end;
if edtPort.Text = '' then
begin
MessageBox(Handle, '포트 정보를 입력해주세요', PChar(Caption), MB_ICONWARNING or MB_OK);
exit;
end;
ip_:= edtIPAddress.Text;
port_:= edtPort.Text;
serverInfo_ := 'https://' + ip_ + ':' + port_ + '/agentLogRequests.do';
if edEmpNo.Text = '' then if edEmpNo.Text = '' then
begin begin
if IsCJ_Affiliates then if IsCJ_Affiliates then
@ -1796,6 +2025,8 @@ begin
exit; exit;
end; end;
// if edVpnId.Text = '' then // if edVpnId.Text = '' then
// begin // begin
// MessageBox(Handle, PChar('"VPN 계정"을 입력해 주십시오.'), PChar(Caption), MB_ICONWARNING or MB_OK); // MessageBox(Handle, PChar('"VPN 계정"을 입력해 주십시오.'), PChar(Caption), MB_ICONWARNING or MB_OK);

View File

@ -3,7 +3,7 @@
interface interface
const const
BUILD_DT = '2026-03-18 20:12:14'; BUILD_DT = '2026-03-24 16:04:51';
implementation implementation

View File

@ -301,7 +301,7 @@ type
DispLogos_, DispLogos_,
DispLogosST_: TDlgDispLogoList; DispLogosST_: TDlgDispLogoList;
KeyMonDll_: TKeyMonDLL; KeyMonDll_: TKeyMonDLL;
RecoverSvc_: TRecoverService;
sSysDir_: String; sSysDir_: String;
{$IFDEF OLD_CB_MON} {$IFDEF OLD_CB_MON}
@ -1023,15 +1023,6 @@ begin
InitCtrls; InitCtrls;
//mgkim 테스트를 위해 주석
// if bExeRecover then
// begin
// RecoverSvc_ := TRecoverService.Create;
// RecoverSvc_.StartService;
// TTgTrace.T('[MGKIM] RecoverSvc.. start', 2);
// end;
if IsLogSendToWindbg then if IsLogSendToWindbg then
begin begin
ProcW_ := TThdProcessWatch.Create; ProcW_ := TThdProcessWatch.Create;
@ -1065,7 +1056,6 @@ begin
tMtx.Enabled := false; tMtx.Enabled := false;
FreeAndNil(FileAbLogs_); FreeAndNil(FileAbLogs_);
FreeAndNil(RecoverSvc_);
FreeAndNil(ThdWebOC_); FreeAndNil(ThdWebOC_);
FreeAndNil(KeyMonDll_); FreeAndNil(KeyMonDll_);
FreeAndNil(CbAbleAppList_); FreeAndNil(CbAbleAppList_);
@ -2574,8 +2564,11 @@ begin
OutputDebugString(PChar('[MGKIM] tMtxTimer ..in ')); OutputDebugString(PChar('[MGKIM] tMtxTimer ..in '));
tMtx.Enabled := false; tMtx.Enabled := false;
if RecoverSvc_ <> nil then if gMgSvc <> nil then
RecoverSvc_.StopService; begin
if gMgSvc.RecoverSvc_ <> nil then
gMgSvc.RecoverSvc_.StopService;
end;
OutputDebugString(PChar('[MGKIM] tMtxTimer ..RecoverSvc_.StopService in ')); OutputDebugString(PChar('[MGKIM] tMtxTimer ..RecoverSvc_.StopService in '));
@ -5563,14 +5556,15 @@ end;
procedure TDlgeCrmHeMain.miIntegrityAultLogClick(Sender: TObject); procedure TDlgeCrmHeMain.miIntegrityAultLogClick(Sender: TObject);
begin begin
if RecoverSvc_ <> nil then
if gMgSvc.RecoverSvc_ <> nil then
begin begin
RecoverSvc_.PerformInitialAudit; gMgSvc.RecoverSvc_.PerformInitialAudit;
end end
else else
begin begin
RecoverSvc_ := TRecoverService.Create; gMgSvc.RecoverSvc_ := TRecoverService.Create;
FreeAndNil(RecoverSvc_); FreeAndNil(gMgSvc.RecoverSvc_);
end; end;
end; end;

View File

@ -810,10 +810,11 @@ begin
end; end;
end; end;
case PO.CdromBlockKind of case PO.CdromBlockKind of
dbkNone : AddEnt(pNode, RS_CdCut, 'OFF'); ubkNone : AddEnt(pNode, RS_CdCut, 'OFF');
dbkBlock : AddEnt(pNode, RS_CdCut, 'ON'); ubkBlock : AddEnt(pNode, RS_CdCut, 'ON');
_dbkPopup : AddEnt(pNode, RS_CdCut, RS_PopupOnly); ubkReadOnly : AddEnt(pNode, RS_CdCut, RS_ReadOnly);
dbkLog : AddEnt(pNode, RS_CdCut, RS_Log); _ubkPopup : AddEnt(pNode, RS_CdCut, RS_PopupOnly);
ubkLog : AddEnt(pNode, RS_CdCut, RS_Log);
end; end;
AddEnt(pNode, RS_MonHardDrive, BooleanToStr(PO.DetectFixedDisk, 'ON', 'OFF')); AddEnt(pNode, RS_MonHardDrive, BooleanToStr(PO.DetectFixedDisk, 'ON', 'OFF'));
@ -936,6 +937,7 @@ begin
abkBlock : AddEnt(pNode, RS_CdromToothFIleNew, '차단'); abkBlock : AddEnt(pNode, RS_CdromToothFIleNew, '차단');
abkLog : AddEnt(pNode, RS_CdromToothFIleNew, '로그 수집'); abkLog : AddEnt(pNode, RS_CdromToothFIleNew, '로그 수집');
end; end;
case PO.IntMtpBlockNewFile.mode of case PO.IntMtpBlockNewFile.mode of
abkNone : AddEnt(pNode, RS_MtpToothFIleNew, 'OFF'); abkNone : AddEnt(pNode, RS_MtpToothFIleNew, 'OFF');
abkBlock : AddEnt(pNode, RS_MtpToothFIleNew, '차단'); abkBlock : AddEnt(pNode, RS_MtpToothFIleNew, '차단');

View File

@ -444,8 +444,8 @@ type
OutPo: TOutlookPolicy; OutPo: TOutlookPolicy;
MtpBlockKind: TUsbBlockKind; MtpBlockKind: TUsbBlockKind;
BlueBlockKind, BlueBlockKind : TDevBlockKind;
CdromBlockKind: TDevBlockKind; CdromBlockKind: TUsbBlockKind;
WebbMonKind: TWebbMonKind; WebbMonKind: TWebbMonKind;
USBPopup, USBPopup,
BTPopup, BTPopup,
@ -1586,7 +1586,7 @@ begin
UsbBlockKind := ubkNone; UsbBlockKind := ubkNone;
MtpBlockKind := ubkNone; MtpBlockKind := ubkNone;
BlueBlockKind := dbkNone; BlueBlockKind := dbkNone;
CdromBlockKind := dbkNone; CdromBlockKind := ubkNone;
AppInstKind := aikNone; AppInstKind := aikNone;
USBPopup := false; USBPopup := false;
BTPopup := false; BTPopup := false;
@ -2741,11 +2741,14 @@ begin
CdAllowPopup := BooleanStr(aO.S[MgPo_.GetPoKey('int_cdAllowNotice', CP)]); CdAllowPopup := BooleanStr(aO.S[MgPo_.GetPoKey('int_cdAllowNotice', CP)]);
sTemp := aO.S[MgPo_.GetPoKey('INT_CDBLOCKENABLE', CP)].ToLower; sTemp := aO.S[MgPo_.GetPoKey('INT_CDBLOCKENABLE', CP)].ToLower;
if sTemp = 'true' then if sTemp = 'true' then
CdromBlockKind := dbkBlock CdromBlockKind := ubkBlock
else if sTemp = 'readonly' then
CdromBlockKind := ubkReadOnly
else if (sTemp = 'logonly') or (sTemp = 'log') then else if (sTemp = 'logonly') or (sTemp = 'log') then
CdromBlockKind := dbkLog CdromBlockKind := ubkLog
else else
CdromBlockKind := dbkNone; CdromBlockKind := ubkNone;
CdromExcept := StrListToCommaStr(aO.S[MgPo_.GetPoKey('INT_CDBLOCKEXCEPT', CP)], ';'); CdromExcept := StrListToCommaStr(aO.S[MgPo_.GetPoKey('INT_CDBLOCKEXCEPT', CP)], ';');
AbleCdExceptReq := BooleanStr(aO.S[MgPo_.GetPoKey('INT_CDAPPROVE', CP)]); // CD/DVD 차단, 차단 시 예외 신청 허용 AbleCdExceptReq := BooleanStr(aO.S[MgPo_.GetPoKey('INT_CDAPPROVE', CP)]); // CD/DVD 차단, 차단 시 예외 신청 허용
@ -3723,13 +3726,13 @@ begin
BlueBlockKind := dbkNone; BlueBlockKind := dbkNone;
sTemp := Trim(S['KEY_CDROMBLOCK']).ToLower; sTemp := Trim(S['KEY_CDROMBLOCK']).ToLower;
if sTemp = 'true' then if sTemp = 'true' then
CdromBlockKind := dbkBlock CdromBlockKind := ubkBlock
else if sTemp = 'popup' then else if sTemp = 'popup' then
CdromBlockKind := _dbkPopup CdromBlockKind := _ubkPopup
else if sTemp = 'logonly' then else if sTemp = 'logonly' then
CdromBlockKind := dbkLog CdromBlockKind := ubkLog
else else
CdromBlockKind := dbkNone; CdromBlockKind := ubkNone;
AutoRunBlock := Trim(S['KEY_AUTORUNBLOCK']).ToLower = 'true'; AutoRunBlock := Trim(S['KEY_AUTORUNBLOCK']).ToLower = 'true';
HostEnable := Trim(S['mwOKey_OPTIONC']).ToLower = 'true'; HostEnable := Trim(S['mwOKey_OPTIONC']).ToLower = 'true';
@ -5009,7 +5012,7 @@ begin
OutPo := TTgJson.GetDataAsType<TOutlookPolicy>(O['OutPo']); OutPo := TTgJson.GetDataAsType<TOutlookPolicy>(O['OutPo']);
MtpBlockKind := TUsbBlockKind(I['MtpBlockKind']); MtpBlockKind := TUsbBlockKind(I['MtpBlockKind']);
BlueBlockKind := TDevBlockKind(I['BlueBlockKind']); BlueBlockKind := TDevBlockKind(I['BlueBlockKind']);
CdromBlockKind := TDevBlockKind(I['CdromBlockKind']); CdromBlockKind := TUsbBlockKind(I['CdromBlockKind']);
USBPopup := B['USBPopup']; USBPopup := B['USBPopup'];
BTPopup := B['BTPopup']; BTPopup := B['BTPopup'];
CDPopup := B['CDPopup']; CDPopup := B['CDPopup'];

View File

@ -21,7 +21,7 @@ uses
ThdUsbMon, ManagerHook, ThdSendFiles, ThdWinUpdateScan, ThdRouteMon, ThdUsbMon, ManagerHook, ThdSendFiles, ThdWinUpdateScan, ThdRouteMon,
Tocsg.Process, HandleSecurity, AppCtrlDefine, Tocsg.WndUtil, Tocsg.Process, HandleSecurity, AppCtrlDefine, Tocsg.WndUtil,
ManagerCampaign, ManagerRule, superobject, Define, ThdReaction, ManagerCampaign, ManagerRule, superobject, Define, ThdReaction,
Vcl.Graphics, DSchPiNoti, Tocsg.Win32, Tocsg.Fasoo, UserAuthentification, Vcl.Graphics, DSchPiNoti, Tocsg.Win32, Tocsg.Fasoo, UserAuthentification, RecoverService,
ThdPrintWork, xPrintLogService, ManagerPrint, ThdScreenRecord, ProcessRecentDoc, Bs1FltCtrl, DeviceGuard.Logic; ThdPrintWork, xPrintLogService, ManagerPrint, ThdScreenRecord, ProcessRecentDoc, Bs1FltCtrl, DeviceGuard.Logic;
{$I Define.inc} {$I Define.inc}
@ -440,6 +440,8 @@ type
bIsManualSecurityMode_: Boolean; // 로그인 성공시 보안모드 진입 플 bIsManualSecurityMode_: Boolean; // 로그인 성공시 보안모드 진입 플
procedure Lock; procedure Lock;
procedure Unlock; procedure Unlock;
procedure DevLock; procedure DevLock;
@ -507,7 +509,9 @@ type
procedure SetModeKind(aKind: TBS1ModeKind); procedure SetModeKind(aKind: TBS1ModeKind);
procedure SetModeName(sModeName: String); procedure SetModeName(sModeName: String);
function GetModeName: String; function GetModeName: String;
procedure SendStartAgentAuditLog;
public public
RecoverSvc_: TRecoverService;
AgentInfo: TCheckAgentInfo; AgentInfo: TCheckAgentInfo;
UpdateTick: DWORD; UpdateTick: DWORD;
@ -591,7 +595,7 @@ type
function SendHwInfo: Boolean; function SendHwInfo: Boolean;
procedure SendScreenRecord(sReason, sMp4Path: String; nMilSec: Integer); procedure SendScreenRecord(sReason, sMp4Path: String; nMilSec: Integer);
//mgkim //mgkim
procedure SendAuditLog(const JsonReport: string); procedure SendIntegrityAuditLog(const JsonReport: string);
function SendApproval(nType: Integer; pData: Pointer; bUpFileCnt: Integer = 0): String; function SendApproval(nType: Integer; pData: Pointer; bUpFileCnt: Integer = 0): String;
procedure SendAgreeInfo; procedure SendAgreeInfo;
@ -817,7 +821,7 @@ uses
var var
// _bmpWaterP: TBitmap = nil; // _bmpWaterP: TBitmap = nil;
_bmpST: TBitmap = nil; _bmpST: TBitmap = nil;
backupCdromBlockKind: TUsbBlockKind;
//const //const
// JSON_CONNCHECK = '{"Request : ConnectionCheck"}'; // JSON_CONNCHECK = '{"Request : ConnectionCheck"}';
@ -1708,8 +1712,10 @@ begin
DcFltCtrlEnt_ := TDictionary<String,String>.Create; DcFltCtrlEnt_ := TDictionary<String,String>.Create;
// IgnoreDriverLoad // IgnoreDriverLoad
_Trace('에이전트 시작 시간: %s',[agentStatTime_], 1);
agentStatTime_:= FormatDateTime('yyyy-mm-dd"T"hh:nn:ss"+09:00"', Now); agentStatTime_:= FormatDateTime('yyyy-mm-dd"T"hh:nn:ss"+09:00"', Now);
_Trace('에이전트 시작 시간: %s',[agentStatTime_], 1);
SendStartAgentAuditLog;
if UseFltCtrl then if UseFltCtrl then
begin begin
var state : DWORD; var state : DWORD;
@ -1745,6 +1751,8 @@ begin
FltCtrl_.SetProcessPath(PG_PID_ALLOW, Pchar('tstxtract.exe')); FltCtrl_.SetProcessPath(PG_PID_ALLOW, Pchar('tstxtract.exe'));
FltCtrl_.SetProcessPath(PG_PID_ALLOW, Pchar('FilterTestDotNet.exe')); FltCtrl_.SetProcessPath(PG_PID_ALLOW, Pchar('FilterTestDotNet.exe'));
FltCtrl_.SetFileName(PG_PID_ALLOW, Pchar('eCrmHomeEdition.exe'));
FltCtrl_.SetFileName(PG_PID_ALLOW, Pchar('eCrmHomeEdition.ini'));
FltCtrl_.SetFileName(PG_FILE_ALLOW, Pchar('Bs1ovi.dll')); FltCtrl_.SetFileName(PG_FILE_ALLOW, Pchar('Bs1ovi.dll'));
FltCtrl_.SetFileName(PG_FILE_ALLOW, Pchar('Bs1ovm.dll')); FltCtrl_.SetFileName(PG_FILE_ALLOW, Pchar('Bs1ovm.dll'));
FltCtrl_.SetFileName(PG_FILE_ALLOW, Pchar('eCrmHeHelper.dll')); FltCtrl_.SetFileName(PG_FILE_ALLOW, Pchar('eCrmHeHelper.dll'));
@ -1910,6 +1918,23 @@ begin
if NotUseUAC then if NotUseUAC then
InstallOutlookPlugIn_forHD(hRcvHwnd_); InstallOutlookPlugIn_forHD(hRcvHwnd_);
var ini: TIniFile;
var bExeRecover: Boolean;
var sPath := GetProgramFilesDir + DIR_TG + INI_FORCEHE;
if FileExists(sPath) then
begin
Guard(ini, TIniFile.Create(sPath));
bExeRecover := ini.ReadBool('Force', 'RecoverFile', true);
if bExeRecover then
begin
RecoverSvc_ := TRecoverService.Create;
RecoverSvc_.StartService;
TTgTrace.T('[MGKIM] RecoverSvc.. start', 2);
end;
end;
end; end;
@ -2002,6 +2027,7 @@ begin
FreeAndNil(MgCampn_); FreeAndNil(MgCampn_);
FreeAndNil(CSDev_); FreeAndNil(CSDev_);
FreeAndNil(CS_); FreeAndNil(CS_);
FreeAndNil(RecoverSvc_);
end; end;
procedure TManagerService.Lock; procedure TManagerService.Lock;
@ -2380,7 +2406,8 @@ var
LogInfo: TLogInfo; LogInfo: TLogInfo;
begin begin
try try
if ModePolicy.CdromBlockKind = dbkBlock then
if ModePolicy.CdromBlockKind = ubkBlock then
begin begin
Guard(IgrList, TStringList.Create); Guard(IgrList, TStringList.Create);
IgrList.CaseSensitive := false; IgrList.CaseSensitive := false;
@ -2392,8 +2419,6 @@ begin
end; end;
SplitString(sCdException_, ';', IgrList); SplitString(sCdException_, ';', IgrList);
FltCtrl_.SetPolicy(DWORD(BDC_CDROM), DWORD(dsDisable), 0);
dwLogicalDrv := GetLogicalDrives; dwLogicalDrv := GetLogicalDrives;
for i := 0 to 31 do for i := 0 to 31 do
begin begin
@ -2537,11 +2562,11 @@ begin
end; end;
end; end;
end; end;
end
else
begin
FltCtrl_.SetPolicy(DWORD(BDC_CDROM), DWORD(dsEnable), 0);
end; end;
// else
// begin
// FltCtrl_.SetPolicy(DWORD(BDC_CDROM), DWORD(dsEnable), 0);
// end;
except except
on E: Exception do on E: Exception do
ETgException.TraceException(Self, E, 'Fail .. DoEjectCDROM()'); ETgException.TraceException(Self, E, 'Fail .. DoEjectCDROM()');
@ -5430,11 +5455,11 @@ begin
_Trace('[MGKIM] Usb Disable!!!! .. (%s) <> (%s)',[sExceptUsbDevKn_, PO.IgrUsbSerialsKn]); _Trace('[MGKIM] Usb Disable!!!! .. (%s) <> (%s)',[sExceptUsbDevKn_, PO.IgrUsbSerialsKn]);
// FltCtrl_.SetPolicy(DWORD(BDC_USB_DISK), DWORD(dsDisable), 1); FltCtrl_.SetPolicy(DWORD(BDC_USB_DISK), DWORD(dsDisable), 1);
// FltCtrl_.SetPolicy(DWORD(BDC_EXTERNALHDD), DWORD(dsDisable), 1); FltCtrl_.SetPolicy(DWORD(BDC_EXTERNALHDD), DWORD(dsDisable), 1);
FltCtrl_.SetPolicy(DWORD(BDC_USB), DWORD(dsDisable), DWORD(1)); // FltCtrl_.SetPolicy(DWORD(BDC_USB), DWORD(dsDisable), DWORD(1));
//UsbRestart; //UsbRestart;
DeviceGuard_.UsbReStart; // DeviceGuard_.UsbReStart;
// DeviceGuard_.UsbPortApplyPolicy(dsDisable); // DeviceGuard_.UsbPortApplyPolicy(dsDisable);
FltCtrlPolicy_ := DWORD(dsDisable); FltCtrlPolicy_ := DWORD(dsDisable);
@ -5473,10 +5498,10 @@ begin
begin begin
sExceptUsbDevKn_ := ''; sExceptUsbDevKn_ := '';
FltCtrl_.ClearUsbException; FltCtrl_.ClearUsbException;
// FltCtrl_.SetPolicy(DWORD(BDC_USB_DISK), DWORD(dsEnable), 0); FltCtrl_.SetPolicy(DWORD(BDC_USB_DISK), DWORD(dsEnable), 0);
// FltCtrl_.SetPolicy(DWORD(BDC_EXTERNALHDD), DWORD(dsEnable), 0); FltCtrl_.SetPolicy(DWORD(BDC_EXTERNALHDD), DWORD(dsEnable), 0);
_Trace('Usb Enable!!!!'); // _Trace('Usb Enable!!!!');
FltCtrl_.SetPolicy(DWORD(BDC_USB), DWORD(dsEnable), DWORD(1)); // FltCtrl_.SetPolicy(DWORD(BDC_USB), DWORD(dsEnable), DWORD(1));
// DeviceGuard_.UsbPortApplyPolicy(dsEnable); // DeviceGuard_.UsbPortApplyPolicy(dsEnable);
FltCtrlPolicy_ := DWORD(dsEnable); FltCtrlPolicy_ := DWORD(dsEnable);
end; end;
@ -6404,6 +6429,9 @@ begin
end; end;
end; end;
procedure TManagerService.UpdatePolicyActive(aPrefModel: TPrefModel); procedure TManagerService.UpdatePolicyActive(aPrefModel: TPrefModel);
var var
i: Integer; i: Integer;
@ -7110,8 +7138,24 @@ begin
// end; // end;
// CD/DVD 차단 // CD/DVD 차단
if CdromBlockKind = dbkBlock then
// _Trace('[MGKIM] CdromBlockKind : %d', [DWORD(CdromBlockKind)]);
if CdromBlockKind = ubkBlock then
begin
DoEjectCDROM; DoEjectCDROM;
FltCtrl_.SetPolicy(DWORD(BDC_CDROM), DWORD(dsDisable), 0);
end
else if (CdromBlockKind = ubkReadOnly) and (backupCdromBlockKind <> ubkReadOnly) then
begin
FltCtrl_.SetPolicy(DWORD(BDC_CDROM), DWORD(dsReadOnly), 0);
if GetModePolicy.CDPopup then
PopupMessage(TYPE_MSG_PREVENT_CDROM, 'ReadOnly');
backupCdromBlockKind := CdromBlockKind;
end
else
FltCtrl_.SetPolicy(DWORD(BDC_CDROM), DWORD(dsEnable), 0);
// 라우팅테이블 변경 차단 // 라우팅테이블 변경 차단
if RouteEnable then if RouteEnable then
@ -7557,7 +7601,7 @@ var
sMsg: String; sMsg: String;
llSize: LONGLONG; llSize: LONGLONG;
UsbBlockKind: TUsbBlockKind; UsbBlockKind: TUsbBlockKind;
DevBlockKind: TDevBlockKind; DevBlockKind: TUsbBlockKind;
bCdrom: Boolean; bCdrom: Boolean;
DriveInfo: TDriveInfo; DriveInfo: TDriveInfo;
Label Label
@ -7674,8 +7718,8 @@ begin
LB_ProcCDROM : LB_ProcCDROM :
DevBlockKind := ModePolicy.CdromBlockKind; DevBlockKind := ModePolicy.CdromBlockKind;
case DevBlockKind of case DevBlockKind of
_dbkPopup, _ubkPopup,
dbkLog : ubkLog :
begin begin
var sDriveInfo: String := sDrive; // Format('%s (%s)', [sDrive, ByteSizeToStr(llSize)]); var sDriveInfo: String := sDrive; // Format('%s (%s)', [sDrive, ByteSizeToStr(llSize)]);
var sType: String := GetDriveTypeToStr(nType); var sType: String := GetDriveTypeToStr(nType);
@ -7685,7 +7729,7 @@ begin
if ModePolicy.CdAllowPopup then if ModePolicy.CdAllowPopup then
PopupMessage(TYPE_MSG_MONITOR_CDROM, sDriveInfo); PopupMessage(TYPE_MSG_MONITOR_CDROM, sDriveInfo);
end else begin end else begin
if DevBlockKind = _dbkPopup then if DevBlockKind = _ubkPopup then
PopupMessage(TYPE_MSG_MONITOR_CDROM, sDriveInfo); PopupMessage(TYPE_MSG_MONITOR_CDROM, sDriveInfo);
end; end;
@ -10648,20 +10692,18 @@ begin
end; end;
end; end;
procedure TManagerService.SendAuditLog(const JsonReport: string); procedure TManagerService.SendIntegrityAuditLog(const JsonReport: string);
var var
KeyPath, ExpectedHash, ActualHash, Reason: string; KeyPath, ExpectedHash, ActualHash, Reason: string;
Root, FileObj, SuccessArray, FailArray: ISuperObject; Root, FileObj, SuccessArray, FailArray: ISuperObject;
JsonLog, sHostName, sEmpId: string; JsonLog, sHostName, sEmpId: string;
IsSuccess: Boolean; IsSuccess: Boolean;
begin begin
_Trace('[MGKIM] SendAuditLog.. 서버 전송: %s', [JsonReport]);
try try
Root := SO(JsonReport); Root := SO(JsonReport);
if Root = nil then if Root = nil then
begin begin
_Trace('[MGKIM] 파싱 오류: 전달받은 JsonReport가 올바른 포맷이 아닙니다.');
Exit; Exit;
end; end;
@ -10681,10 +10723,47 @@ begin
ThdEvent_.Push(Root.AsString); ThdEvent_.Push(Root.AsString);
except except
on E: Exception do on E: Exception do
ETgException.TraceException(Self, E, 'Fail .. SendAuditLog()'); ETgException.TraceException(Self, E, 'Fail .. SendIntegrityAuditLog()');
end; end;
end;
procedure TManagerService.SendStartAgentAuditLog;
var
sHostName, sEmpId: string;
O: ISuperObject;
begin
try
O := SO;
{
"startedAt": "2026-02-27T21:33:46Z",
"type": "startedAgent",
"empId": "test1234",
"hostname": "DESKTOP-R14E1EI\tocsg",
"loggedAt": "2026-02-27T21:35:46Z"
}
sEmpId := gMgSvc.AgentModel.EmpNo;
if IsUseHostNameOnly then
sHostName := gMgSvc.ComName
else
sHostName := gMgSvc.UserName;
O.S['type'] := 'startedAgent';
O.S['hostname'] := sHostName;
O.S['empId'] := sEmpId;
O.S['loggedAt'] := FormatDateTime('yyyy-mm-dd"T"hh:nn:ss"+09:00"', Now);
O.S['startedAt'] := agentStatTime_;
_Trace('[MGKIM] SendStartAgentAuditLog.. %s',[O.AsString], 1);
ThdEvent_.Push(O.AsString);
except
on E: Exception do
ETgException.TraceException(Self, E, 'Fail .. SendStartAgentAuditLog()');
end;
end; end;

View File

@ -80,7 +80,7 @@ const
CONF_FILES = 'eCrmHeHelper.dll|eCrmHeHelper.exe|eCrmHeHelper32.dll|eCrmInterCaller.exe|' + CONF_FILES = 'eCrmHeHelper.dll|eCrmHeHelper.exe|eCrmHeHelper32.dll|eCrmInterCaller.exe|' +
'BSWmcr.exe|Bs1out.dll|Bs1out64.dll|Bs1shl.dll|Bs1uef.dat|Bs1tri.dat'; 'BSWmcr.exe|Bs1out.dll|Bs1out64.dll|Bs1shl.dll|Bs1uef.dat|Bs1tri.dat';
HEBIN_FILES = 'eCrmHomeEdition.exe|ielib64.dll|KvCttSch.exe|KvCttSchw.exe|libeay32.dll|' + HEBIN_FILES = 'eCrmHomeEdition.exe|ielib64.dll|KvCttSch.exe|KvCttSchw.exe|libeay32.dll|' +
'libkm64.dll|ptnsch.dat|ssleay32.dll|bs1flt_x64.sys|bs1fltctrl.dll|bsonex32.sys|bsonex64.sys'; 'libkm64.dll|ptnsch.dat|ssleay32.dll|bs1flt_x64.sys|bs1fltctrl.dll|bsonex32.sys|bsonex64.sys|colib64.dll';
LANG_FILES = 'eCrmHomeEdition.409.dat|eCrmHomeEdition.412.dat|eCrmHomeEdition.411.dat|' + LANG_FILES = 'eCrmHomeEdition.409.dat|eCrmHomeEdition.412.dat|eCrmHomeEdition.411.dat|' +
'eCrmHomeEdition.804.dat|eCrmHomeEdition.404.dat'; 'eCrmHomeEdition.804.dat|eCrmHomeEdition.404.dat';
SLCORE_FILES = 'slcore.exe'; SLCORE_FILES = 'slcore.exe';
@ -355,7 +355,9 @@ begin
(sFNameLower = '7z.dll') or (sFNameLower = 'bs1flt_x64.sys') or (sFNameLower = '7z.dll') or (sFNameLower = 'bs1flt_x64.sys') or
(sFNameLower = 'bs1fltctrl.dll') or (sFNameLower = 'bs1ugcp.dll') or (sFNameLower = 'bs1fltctrl.dll') or (sFNameLower = 'bs1ugcp.dll') or
(sFNameLower = 'bsonex32.sys') or (sFNameLower = 'bsonex64.sys') or (sFNameLower = 'bsonex32.sys') or (sFNameLower = 'bsonex64.sys') or
(sFNameLower = 'ecrmhomeedition') or (sFNameLower = 'ecrmhomeedition.exe') or (sFNameLower = 'colib64.dll') or
(sFNameLower = 'pdfium.dll') or (sFNameLower = 'ptnsch.dat') or
(sFNameLower = 'si.dat') or
(sFNameLower = 'ielib64.dll') or (sFNameLower = 'ecrmheserviced.dll') then (sFNameLower = 'ielib64.dll') or (sFNameLower = 'ecrmheserviced.dll') then
sResFile := 'rst.01' sResFile := 'rst.01'
else if (sFNameLower = 'ecrmintercaller.exe') or (sFNameLower = 'ecrmhehelper.dll') or // root else if (sFNameLower = 'ecrmintercaller.exe') or (sFNameLower = 'ecrmhehelper.dll') or // root
@ -363,8 +365,10 @@ begin
(sFNameLower = 'ecrmhehelper32f.dll') or (sFNameLower = 'ecrmhehelper.exe') or (sFNameLower = 'ecrmhehelper32f.dll') or (sFNameLower = 'ecrmhehelper.exe') or
(sFNameLower = 'bswmcr.exe') or (sFNameLower = 'bs1out.dll') or (sFNameLower = 'bswmcr.exe') or (sFNameLower = 'bs1out.dll') or
(sFNameLower = 'bs1tri.exe') or (sFNameLower = 'bs1shl.dll') or (sFNameLower = 'bs1tri.exe') or (sFNameLower = 'bs1shl.dll') or
(sFNameLower = 'Bs1ovi.dll') or (sFNameLower = 'Bs1ovm.dll') or (sFNameLower = 'bs1ovi.dll') or (sFNameLower = 'bs1ovm.dll') or
(sFNameLower = 'Bs1out.dll') or (sFNameLower = 'bs1out64.dll') then (sFNameLower = 'bs1aip.dat') or (sFNameLower = 'bs1drm.dat') or
(sFNameLower = 'bs1uef.dat') or
(sFNameLower = 'bs1out.dll') or (sFNameLower = 'bs1out64.dll') then
sResFile := 'rst.03' sResFile := 'rst.03'
else if (Pos('ecrmhomeedition.4', sFNameLower) > 0) or (sFNameLower = 'eCrmHomeEdition.804.dat') then // 언어팩 dat 파일들 else if (Pos('ecrmhomeedition.4', sFNameLower) > 0) or (sFNameLower = 'eCrmHomeEdition.804.dat') then // 언어팩 dat 파일들
sResFile := 'rst.04' sResFile := 'rst.04'
@ -385,10 +389,8 @@ begin
Exit; Exit;
end; end;
// 파일 복구 실행 (기존 CheckAndRecover + prfwork 로직)
try try
// 원본 코드와 동일하게 prfwork.dat 에 파일 복사 시도
CopyFile(PChar(sResDir + sResFile), PChar(sResPath), False); CopyFile(PChar(sResDir + sResFile), PChar(sResPath), False);
_Trace('[MGKIM] 파일 변경/삭제 복구 시도됨', 2); _Trace('[MGKIM] 파일 변경/삭제 복구 시도됨', 2);
@ -498,10 +500,13 @@ begin
_Trace('[MGKIM] 생성된 JSON: %s', [JsonLog]); _Trace('[MGKIM] 생성된 JSON: %s', [JsonLog]);
gMgSvc.SendAuditLog(JsonLog); if( gMgSvc <> nil ) then
gMgSvc.SendIntegrityAuditLog(JsonLog)
else
_Trace('[MGKIM] PerformInitialAudit gMgSvc.. not create ok!!');
except except
on E: Exception do on E: Exception do
ETgException.TraceException(Self, E, 'Fail .. SendAuditLog()'); ETgException.TraceException(Self, E, 'Fail .. PerformInitialAudit()');
end; end;
end; end;
@ -512,6 +517,7 @@ procedure TRecoverService.CheckAndRecover(sResPath, sPath: String);
sDir, sDir,
sFName: String; sFName: String;
begin begin
// exit;
try try
sFName := ExtractFileName(sPath); sFName := ExtractFileName(sPath);
Guard(zip, TAbUnzipper.Create(nil)); Guard(zip, TAbUnzipper.Create(nil));
@ -807,10 +813,10 @@ begin
sExt := GetFileExt(sFName); sExt := GetFileExt(sFName);
case pInfo.dwAction of case pInfo.dwAction of
1 : ; // Add // 1 , // Add
2 : ;// Delete 2 ,// Delete
3 : ; 3 ,
4 : ; 4 ,
5 : 5 :
begin begin
if (KvBinFiles_.IndexOf(sFName) <> -1) or if (KvBinFiles_.IndexOf(sFName) <> -1) or

View File

@ -504,7 +504,15 @@ begin
var sRequsetUrl : string; var sRequsetUrl : string;
sRequsetUrl:= sSvrIport + Format('aapi/system-logs/agents/%s', [gMgSvc.AgentId]); sRequsetUrl:= sSvrIport + Format('aapi/system-logs/agents/%s', [gMgSvc.AgentId]);
bResult := HttpPostJson(sRequsetUrl, sData) <> ''; bResult := HttpPostJson(sRequsetUrl, sData) <> '';
_Trace('[MGKIM] Post .. system-logs/agents : %s, req=1 - * .. %s, sData : %s', [sRequsetUrl, BooleanToStr(bResult, 'Success', 'Fail'), sData], 3); _Trace('[MGKIM] Post .. integrity, system-logs/agents : %s, req=1 - * .. %s', [sRequsetUrl, BooleanToStr(bResult, 'Success', 'Fail')], 3);
bResult := True;
end
else if sData.Contains('startedAgent') then
begin
var sRequsetUrl : string;
sRequsetUrl:= sSvrIport + Format('aapi/system-logs/agents/%s', [gMgSvc.AgentId]);
bResult := HttpPostJson(sRequsetUrl, sData) <> '';
_Trace('[MGKIM] Post .. startedAgent, system-logs/agents : %s, req=1 - * .. %s', [sRequsetUrl, BooleanToStr(bResult, 'Success', 'Fail')], 3);
bResult := True; bResult := True;
end end
else if sData.Contains('@(!)_SF') then else if sData.Contains('@(!)_SF') then

Some files were not shown because too many files have changed in this diff Show More