BSOne.SFC/eCrmHE/EXE_eCrmHomeEdition/Messages/DNotice.pas

3050 lines
103 KiB
Plaintext

unit DNotice;
interface
uses
{$IFDEF _HE_}
DReqDevExcept, ManagerModel,
{$ENDIF}
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls, Vcl.Imaging.pngimage,
Vcl.StdCtrls, System.ImageList, Vcl.ImgList, PngImageList, Tocsg.Win32,
Define, Vcl.WinXPanels, superobject;
const
PARAM_GO_SETPASS = '/c explorer ms-settings:signinoptions'; // '/c control userpasswords';
PARAM_GO_ANTIVIRUS = '/c explorer windowsdefender:';
PARAM_GO_FIREWALL = '/c control firewall.cpl';
PARAM_GO_FIREWALL2 = '/c explorer windowsdefender://network/';
PARAM_GO_WINUPDATE = '/c explorer ms-settings:windowsupdate';
PARAM_GO_SETSAVER = '/c rundll32.exe shell32.dll,Control_RunDLL desk.cpl,,1';
PARAM_GO_SYSTEMINFO = '/c control /name Microsoft.System';
PARAM_GO_UNINSTALL = '/c appwiz.cpl';
type
{$IFNDEF _HE_}
TNotifyKind = (nfkNone, nfkAll, nfkVul, nfkPol);
TNotifyType = (nftNormal, nftMin, nftACenter);
PLogInfo = ^TLogInfo;
TLogInfo = record
sCode,
sBody,
sOcrBody,
sDevName,
sDevSerial,
sDevClassId,
sResInfo,
sSummary,
sAppName,
sAppPath,
sThumbIds,
sSender,
sRecipient,
sSubject,
sPath,
sFileCompId,
sDestIpUrl,
sDestPort,
sComment: String;
OVio: ISuperObject;
end;
{$ENDIF}
TDlgNotice = class(TForm)
imgTop: TImage;
lbTitle: TLabel;
imgBtnList: TPngImageList;
tInit: TTimer;
btnClose: TButton;
imgTitles: TPngImageCollection;
cpMain: TCardPanel;
cdDef: TCard;
imgOk: TImage;
imgSet: TImage;
lbOk: TLabel;
mmMsg: TMemo;
lbSet: TLabel;
cdPI: TCard;
Label2: TLabel;
lbGrade: TLabel;
Label5: TLabel;
lbPiCnt: TLabel;
lbMsgEx: TLabel;
tClose: TTimer;
pnTop: TPanel;
lbMode: TLabel;
procedure imgOkMouseEnter(Sender: TObject);
procedure imgOkMouseLeave(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure imgOkClick(Sender: TObject);
procedure imgSetClick(Sender: TObject);
procedure FormShow(Sender: TObject);
procedure FormKeyPress(Sender: TObject; var Key: Char);
procedure imgTopMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
procedure tInitTimer(Sender: TObject);
procedure btnCloseClick(Sender: TObject);
procedure lbPiCntMouseEnter(Sender: TObject);
procedure lbPiCntMouseLeave(Sender: TObject);
procedure lbPiCntClick(Sender: TObject);
procedure tCloseTimer(Sender: TObject);
private
{ Private declarations }
sCmdParam_,
sNotiCenterMsg_: String;
Mutex_: TTgMutex;
{$IFDEF _HE_}
ReqDevExceptInfo_: TReqDevExceptInfo;
{$ENDIF}
procedure SetNotiForm(aNotiType: TNotifyType);
procedure SetImgBtn(imgBtn: TImage; nImgIdx: Integer);
procedure SetOneButtion;
procedure SetPiResult4HEC(nRstCnt: Integer);
public
{ Public declarations }
Constructor Create(aOwner: TComponent); override;
procedure CreateParams(var Params: TCreateParams); override; // 작업표시줄에 표시
Destructor Destroy; override;
function CM_RS_TitlePreventSimple: String;
function CM_RS_DevExcept: String;
function CM_RS_BlockMsg(sDef: String): String;
function CM_RS_MonMsg(sDef: String): String;
procedure PopupMessage(sJsonData: String);
property NotiCenterMsg: String read sNotiCenterMsg_;
end;
var
DlgNotice: TDlgNotice;
resourcestring
RS_SecuViol = '보안 정책 위반';
RS_Vul = '취약점 발생';
RS_Noti = '공지 사항';
RS_Info = '정보 알림';
RS_SetVul = '조치';
RS_DevExcept = '예외';
implementation
uses
{$IFDEF _HE_}
ManagerService, License, DeCrmHeMain, DViewCttSchResult,
DefineHelper, GlobalOutAddInDefine, KDL.Localizer, ManagerPrint, DDecryptDrm,
{$ENDIF}
Tocsg.Exception, Tocsg.Safe, Tocsg.Shell, GlobalDefine,
Tocsg.Strings, Vcl.Clipbrd, Condition, Tocsg.Path, Tocsg.Trace,
Tocsg.WTS, Tocsg.Process, Tocsg.Json, Tocsg.Hash, Tocsg.Convert, Winapi.MultiMon, ManagerCampaign, Tocsg.Url;
resourcestring
RS_TitleVul = '보안 취약점이 발견되었습니다.';
RS_TitlePrevent = '보안 정책 관련 활동이 탐지되었습니다'; // '보안정책 위반 행위가 탐지되었습니다.';
RS_TitlePreventSimple = '보안정책 위반 행위 탐지'; // 텍스트 변경 시 CM_RS_TitlePreventSimple() 확인 필요
RS_SafeCompleted = '보안 취약점이 조치되었습니다.'; // '취약점 점검 대상 항목 조치가 완료되었습니다.';
RS_SafeCompletedSimple = '보안 취약점 조치 완료';
RS_InitRemoteConn = '보안 취약점이 모두 조치 되어서' + #13#10 + '보안모드를 사용할 수 있습니다.'; // '이제 원격접속을 시작할 수 있습니다.';
RS_UnsafeOS = '사용하시는 OS는 안전하지 않습니다.';
RS_EOSVersion = '(End-of-Service 버전)';
RS_NoAllVulCheck = '특정 취약점검은 동작하지 않을 수 있습니다.';
RS_NoUpToDateOS = '윈도우 보안 패치가 최신이 아닙니다.';
RS_OSPatchAction1 = ' 조치 버튼 클릭 후 "업데이트 확인"을 통해 패치를';
RS_OSPatchAction2 = ' 진행하세요.';
RS_OSPatchAction3 = ' 보안 패치에 따라 PC재부팅이 필요합니다.';
RS_VulPW1 = '사용자 계정 암호가 설정되어 있지 않습니다.';
RS_VulPW2 = ' 조치 버튼 클릭 후 "PC설정에서 내 계정 변경"';
RS_VulPW3 = ' -> "로그인옵션"';
RS_VulPW4 = ' -> "비밀번호"에서 암호를 설정하세요.';
RS_LastChangePw = '마지막으로 암호 설정한 날짜 :';
RS_VulPwDate1 = '사용자 계정 암호가 오래되었습니다.';
RS_VulPwDate2 = ' 조치 버튼 클릭 후 "다른 계정 관리"';
RS_VulPwDate3 = ' -> "계정 클릭"';
RS_VulPwDate4 = ' -> "암호 변경"에서 새암호를 설정하세요.';
RS_VulAV1 = '백신 프로그램이 설정되어 있지 않습니다.';
RS_VulAV2 = ' 조치 버튼 클릭 후 "Windows 보안센터"';
RS_VulAV3 = ' -> "바이러스 및 위협 방지"에서';
RS_VulAV4 = ' 백신을 활성화 하세요.';
RS_VulFW1 = '방화벽 설정이 되어있지 않습니다.';
RS_VulFW2 = ' 조치 버튼 클릭 후 "권장 설정 사용"을';
RS_VulFW3 = ' 눌러 방화벽을 활성화하세요.';
RS_VulScreen1 = '화면 보호기가 설정되어 있지 않습니다.';
RS_VulScreen2 = ' 조치 버튼 클릭 후 "다시 시작할 때 로그온 화면 표시';
RS_VulScreen3 = ' 체크박스"를 활성화 하세요.';
RS_VulEmpNo1 = '서버에서 검증되지 않은 사번입니다.';
RS_VulEmpNo2 = '조치 버튼 클릭 후 검증된 사번을 입력하거나';
RS_VulEmpNo3 = '관리자에게 검증을 요청 해주십시오.';
RS_InvalidEmpNo = ' 미검증 사번 : ';
RS_VulAllow1 = '접속 승인이 되지 않았습니다.';
RS_VulAllow2 = '접속 승인 여부를 확인 후 재시도하세요.';
RS_NoAccessMAC = '현재 PC의 MAC이 접속허용되지 않았습니다.';
RS_RequestManager = '관리자에게 문의하세요.';
RS_ExpireConnDate = '접속 승인 기간이 만료되었습니다.';
RS_PersonalInfoOver = '개인정보 임계치가 초과 되었습니다.';
RS_PersonalInfoOver1 = '검출출된 개인정보 결과를 확인 / 조치 후';
RS_PersonalInfoOver2 = '개인정보 검사를 수행해 주십시오.';
RS_UpdateCompleted = '업데이트 완료';
RS_MsgUpdateCompleted = '프로그램이 업데이트 되었습니다.';
RS_FMT_Version = ' - 버전 : %s';
RS_WriteReport = '사용 보고서 작성';
RS_MsgWriteReport1 = '다시 보안 모드에 진입하기 전에';
RS_MsgWriteReport2 = '사용 보고서를 작성 해주십시오.';
RS_ClipCut = '클립보드 (복사, 캡쳐) 사용이 차단 되었습니다.';
RS_FMT_ClipCutApp = '사용 프로그램 : %s';
RS_USBCut = '외부 저장소 연결이 해제 되었습니다.';
RS_USB_RO = '외부 저장소의 쓰기가 금지됩니다.';
RS_CDROMCut = 'CD/DVD 저장소 연결이 해제 되었습니다.';
RS_RouteCut = '라우팅 테이블 변경이 차단 되었습니다.';
RS_FWater = '워터마크가 적용되었습니다.';
RS_FWatch = '로컬 파일 변경이 탐지되었습니다.';
RS_FDelAfter = '만약 사용 중이면, 사용 후 삭제됩니다.';
RS_HecBlockMsg = '보안 정책에 의해 차단되었습니다.';
RS_HecMonMsg = '보안 정책 관련 활동이 탐지되었습니다.';
RS_HecHelp = '문의지원(보안지원센터) : 02-2134-0112' + #13#10 + '기술지원(보안지원센터) : 윤동용 책임';
RS_FCut = '파일 생성이 차단 되었습니다.';
RS_TempConnect = '임시 접속이 허용되었습니다. (Unsafe Mode)';
RS_TempConnectExit = '본 연결은 %d분 뒤 강제 종료됩니다.';
RS_TerminateApp = '앱이 종료되었습니다.';
RS_MonitorApp = '앱 실행이 감지되었습니다.';
RS_ExeWhiteApp1 = '다음 필수 앱이 실행되고 있지 않습니다.';
RS_ExeWhiteApp2 = '연결이 초기화됩니다.';
RS_FMask = '파일이 마스킹 되었습니다.';
RS_URLCut = 'URL 연결이 차단 되었습니다.';
RS_URLMon = 'URL 연결이 감지 되었습니다.';
RS_FMT_URLCut = ' - URL : %s';
RS_FMT_URLInfo = ' - URL 평판 : %s';
RS_DetectAppInstSankyo = '비인가 소프트웨어 설치 행위가 탐지되었습니다.';
RS_DetectAppInstSankyo2 = '비인가 프로그램 설치가 감지되었습니다.';
RS_DetectAppInst = '프로그램 설치가 감지되었습니다.';
RS_DetectAppInst1 = '아래 ''조치'' 버튼을 눌러 제어판에서 해당 프로그램을';
RS_DetectAppInst2 = '삭제 해주시기 바랍니다.';
RS_DetectWIFI = '무선 네트워크 접속(WIFI)이 감지되었습니다.';
RS_AfterCut = '네트워크가 차단되었습니다.';//'잠시 후 차단됩니다.';
RS_DetectBlue = '블루투스 연결이 감지되었습니다.';
RS_BlueCut = '블루투스 연결을 차단합니다.';
RS_DetectMTP = 'MTP 연결이 감지되었습니다.';
RS_MTPCut = 'MTP 연결을 차단합니다.';
RS_DetectPrinter = '프린터 사용이 감지되었습니다.';
RS_NotSupportWT = '워터마크를 지원하지 않는 프로그램입니다.';
RS_NotSupportPTR = '승인되지 않은 프린터 입니다.';
RS_NotSupportPTR_IP = '승인되지 않은 프린터 IP 입니다.';
RS_SharePcPrintBlock = '공유PC를 통한 출력 차단';
RS_WsdPrintBlock = 'WSD Port로 연결된 프린터 차단';
RS_NoTcpIpPrintBlock = 'TCP/IP로 설정이 안된 프린터 차단';
RS_PwSavingPrintBlock = '절전모드 상태 프린터 차단';
RS_NotSupportAPP = '승인되지 않은 APP : ';
RS_NotSupportURL = '승인되지 않은 URL : ';
RS_FoundCtt = '개인정보 검출됨 : ';
RS_PrinterCut = '프린터 사용을 차단합니다.';
RS_MsgCopyClipboard = '메시지가 클립보드에 복사 되었습니다.';
RS_PerInfoCheck = '사용자 등록 확인';
RS_NotFoundPerInfo = '사용자 정보를 찾을 수 없습니다.';
RS_RegPerInfo = '사용자 정보를 등록해주세요.';
RS_CTTSCH = '개인정보 검사';
RS_CTTSCH_START = '개인정보 검사가 시작되었습니다.';
RS_CTTSCH_COMPLETE = '개인정보 검사를 완료했습니다.';
RS_CTTSCH_TILE = '검사 시간';
RS_CTTSCH_RESULT_COUNT = '검출된 파일 수';
RS_CttSchVulModeMsg1 = '많은 수의 개인정보가 추출 되었습니다.';
RS_CttSchVulModeMsg2 = '개인정보 검사 결과를 확인하고 조치 후';
RS_CttSchVulModeMsg3 = '개인정보 검사를 다시 수행해 주십시오.';
RS_DetectCopyCapture = '- 복사, 캡쳐가 감지 되었습니다.';
RS_DetectCB = '클립보드 (복사, 캡쳐) 사용이 감지 되었습니다.';
RS_DetectRemoveableDev = '외부 저장소 연결이 감지 되었습니다.';
RS_UsbBLockNoti1 = '%d년 %d월 %d일부터 USB 사용이 차단됩니다.';
RS_UsbBLockNoti2 = '일시적 사용 : 직책자 결재 필요';
RS_UsbBLockNoti3 = '장기적 사용 : 정보보안 담당자에게 USB 정책 예외 요청';
RS_DetectCdrom = 'CD/DVD 연결이 감지 되었습니다.';
RS_DetectDevice = '장치 연결이 감지 되었습니다.';
RS_DeleteInstApp = '설치된 프로그램을 삭제합니다.';
RS_DeleteInstAppMsg1 = '아래 ''조치'' 버튼을 눌러 삭제를 확인하고,';
RS_DeleteInstAppMsg2 = '삭제가 되지 않았다면 삭제해주십시오.';
RS_PrintWater1 = '프린트 워터마크 적용';
RS_PrintWater2 = '프린트 워터마크가 적용 되었습니다.';
RS_DetectFileUse = '파일 첨부, 사용이 감지 되었습니다.';
RS_DetectFileBlock = '파일 첨부, 사용이 차단 되었습니다.';
RS_Program = '프로그램 : ';
RS_FileName = '파일 이름 : ';
RS_FilePath = '파일 경로 : ';
RS_FileTag = '파일 태그 : ';
RS_OpenDrm1 = 'DRM 문서 열람';
RS_OpenDrm2 = 'DRM 문서를 확인합니다.';
RS_OpenDrm3 = 'DRM 문서를 수정할 수 없습니다..';
RS_BlockDrm1 = 'DRM 문서를 열람할 수 없습니다.';
RS_BlockDrm2 = '관리자에게 열람 권한을 문의해 주십시오.';
RS_BlockDrm3 = '다른 환경에서 만들어진 DRM 문서입니다.';
RS_EncDrm1 = 'DRM 문서 암호화';
RS_EncDrm2 = 'DRM 문서 암호화가 적용됩니다.';
RS_DocName = '문서이름 : ';
RS_DetectFRename = '파일 이름변경이 감지 되었습니다.';
RS_BlockFRename = '파일 이름변경이 차단 되었습니다.';
RS_OrgName = '원본 이름 : ';
RS_ChgName = '변경 이름 : ';
RS_BlockShareFolder = '공유 폴더 설정이 차단 되었습니다.';
RS_DetectShareFolder = '공유 폴더 설정이 감지 되었습니다.';
RS_BlockCappApp = '캡쳐 APP이 차단 되었습니다.';
RS_DetectCappApp = '캡쳐 APP이 감지 되었습니다.';
RS_DetectCappAppHec = '허용된 캡쳐 App 이 아닙니다';
RS_MsgVul1_ABL = '%s 설정이 되어 있지 않습니다.';
RS_MsgVul2_ABL = '[취약상태]로 되어 있는 버튼을 클릭하여 설정을 변경하세요.';
RS_ScrSv_ABL = '[화면 보호기]';
RS_AV_ABL = '[Anti-Virus]';
RS_UserPw_ABL = '[계정 비밀번호]';
RS_FW_ABL = '[방화벽]';
RS_OsVer_ABL = '[OS 버전]';
RS_OsPatch_ABL = '[OS 패치]';
RS_TITLE = '제목 : ';
RS_CC = '참조 : ';
RS_TO = '수신자 : ';
RS_OutlookMonMsg = '아웃룩 메일 전송이 감지 되었습니다.';
RS_OutlookMaskMsg = '아웃룩 전송 메일이 마스킹 되었습니다.';
RS_OutlookBlockMsg = '아웃룩 메일 전송이 차단 되었습니다.';
RS_OutlookBlockApp = '아웃룩이 보안 정책으로 차단 되었습니다.';
// RS_OutlookBlockAppMsg1 = '아래 "조치" 버튼을 눌러서';
// RS_OutlookBlockAppMsg2 = '아웃룩 보안 모듈을 적용 후 다시 실행 해주십시오.';
RS_OutlookBlockAppMsg1 = 'BSOne이 아웃룩 메일을 안전하게 관리할 수 있도록 추가 기능을 설치해야 합니다.';
RS_OutlookBlockAppMsg2 = '"조치" 버튼을 클릭하여 기능을 설치해 주세요.';
RS_OutlookSecu = '아웃룩 보안 적용';
RS_OutlookSecuMsg = '아웃룩 보안이 적용되었습니다.';
RS_BLOCK_MTP_WRITE = 'MTP 장치에서 파일쓰기가 차단 되었습니다.';
RS_RELEASE_QUARANTINE = '검역소에 격리된 파일이 해제 되었습니다.';
RS_RELEASE_FILE_QUARANTINE = '파일 격리 해제';
RS_ChangeMode = '모드 변경';
RS_BlockTethering = '네트워크가 차단 되었습니다.';
RS_MsgAppScrRcd = 'APP 사용이 감지되어 화면 녹화를 시작합니다.';
RS_DetectApp = '사용 감지 APP : ';
RS_MsgModeSleep = '[수면 모드 입니다]';
RS_MsgModeSecu = '[보안 모드 입니다]';
RS_MsgModeVul = '[취약 모드 입니다. 취약점을 조치해주세요]';
RS_RS_MsgModeNoId = '[미인증 모드 입니다. ID 인증이 필요합니다]';
RS_MsgModeOff = '[오프라인 모드 입니다]';
RS_MsgModeExpt = '[예외 모드 입니다]';
RS_ReqApproval = '결재 승인 요청';
RS_Confirm = '승인';
RS_MsgConfirm = '확인하시고 승인 바랍니다.';
RS_MsgConfirm_SH = '검토해주시기 바랍니다.';
RS_PrtApproval = '출력 요청';
RS_MsgPrtApproval = '출력이 요청 되었습니다.';
RS_MsgPrtApproval_SH = '개인(신용)정보가 포함된 출력 요청이 있습니다.';
RS_UsbExcept = 'USB 매체 예외';
RS_MsgUsbExcept = 'USB 매체 예외가 요청 되었습니다.';
RS_UrlExcept = '브라우저 접근 예외';
RS_MsgUrlExcept = '브라우저 접근 예외가 요청 되었습니다.';
RS_DecExcept = 'DRM 해제 요청';
RS_MsgDecExcept = 'DRM 해제가 요청 되었습니다.';
RS_FileExpExcept = '파일 반출 요청';
RS_MsgFileExpExcept = '파일 반출이 요청 되었습니다.';
RS_MtpExcept = 'MTP 매체 예외';
RS_MtpUrlExcept = 'MTP 매체 예외 요청 되었습니다.';
RS_BtExcept = 'Bluetooth 매체 예외';
RS_BtUrlExcept = 'Bluetooth 매체 예외 요청 되었습니다.';
RS_CdExcept = 'CD/DVD 매체 예외';
RS_CdUrlExcept = 'CD/DVD 매체 예외 요청 되었습니다.';
RS_PrtWaterExcept = '프린트 워터마크 예외';
RS_MsgPrtWaterExcept = '프린트 워터마크가 예외 요청 되었습니다.';
RS_CapAppExcept = '캡처 APP 차단 예외';
RS_MsgCapAppExcept = '캡처 APP 차단이 예외 요청 되었습니다.';
RS_ApprovalResult = '결재 확인';
RS_NotFoundPrintInfo = '출력 정보를 찾을 수 없습니다. (%s)';
RS_PrintPass = '출력 요청이 승인 되었습니다.';
RS_PrintReqReject = '출력 요청이 반려 되었습니다.';
RS_MsgError = '오류가 발생했습니다';
RS_UsbReqPass = 'USB 매체 예외가 승인 되었습니다.';
RS_UsbReqReject = 'USB 매체 예외 요청이 반려 되었습니다.';
RS_UrlReqPass = '브라우저 접근 예외가 승인 되었습니다.';
RS_DrmReqPass = 'DRM 해제 요청이 승인 되었습니다.';
RS_DrmReqReject = 'DRM 해제 요청이 반려 되었습니다.';
RS_FileExpReqPass = '파일 반출 요청이 승인 되었습니다.';
RS_FileExpReqReject = '파일 반출 요청이 반려 되었습니다.';
RS_UrlReqReject = '브라우저 접근 예외 요청이 반려 되었습니다.';
RS_MtpReqPass = 'MTP 매체 예외가 승인 되었습니다.';
RS_MtpReqReject = 'MTP 매체 예외 요청이 반려 되었습니다.';
RS_BtReqPass = 'Bluetooth 매체 예외가 승인 되었습니다.';
RS_BtReqReject = 'Bluetooth 매체 예외 요청이 반려 되었습니다.';
RS_CdReqPass = 'CD/DVD 매체 예외가 승인 되었습니다.';
RS_PrtWaterReqPass = '프린트 워터마크 예외가 승인 되었습니다.';
RS_CapAppReqPass = '캡처 APP 차단 예외가 승인 되었습니다.';
RS_CdReqReject = 'CD/DVD 매체 예외 요청이 반려 되었습니다.';
RS_PrtWaterReject = '프린트 워터마크 예외 요청이 반려 되었습니다.';
RS_CapAppReject = '캡처 APP 차단 예외 요청이 반려 되었습니다.';
RS_ApprovalReason = '결재 처리 사유';
RS_NoApprovalInfo = '결재자 정보를 가져올 수 없습니다.';
RS_UpdateReboot = '업데이트 기능 적용을 위해 PC를 재부팅해야 합니다.';
RS_NoRegPerInfoUrl = '사용자 정보 등록 URL을 가져올 수 없습니다.';
RS_Hold = '보류';
RS_FileCreateMon = '파일 생성이 감지 되었습니다.';
RS_FileCopyMon = '파일 복사가 감지 되었습니다.';
RS_FileMoveMon = '파일 이동이 감지 되었습니다.';
RS_FileDeleteMon = '파일 삭제가 감지 되었습니다.';
RS_FileRenameMon = '파일 이름변경이 감지 되었습니다.';
RS_FileCreateBlk = '파일 생성이 차단 되었습니다.';
RS_FileCopyBlk = '파일 복사가 차단 되었습니다.';
RS_FileMoveBlk = '파일 이동이 차단 되었습니다.';
RS_FileDeleteBlk = '파일 삭제가 차단 되었습니다.';
RS_FileRenameBlk = '파일 이름변경이 차단 되었습니다.';
RS_ShFolder = '[공유폴더]';
RS_AllowDateTime = '사용 허용 기간 : ';
{$R *.dfm}
var
_nNotiCnt: Integer = 0;
function GetSystemPrimaryMonitorRect: TRect;
var
i: Integer;
begin
// 기본값으로 Screen.Monitors[]에서 Primary인 모니터 찾기
for i := 0 to Screen.MonitorCount - 1 do
begin
if Screen.Monitors[i].Primary then
begin
// Result := Screen.Monitors[i].WorkareaRect; // or BoundsRect
Result := Screen.Monitors[i].BoundsRect;
exit;
end;
end;
// fallback: 그냥 전체 화면
Result := Rect(0, 0, Screen.Width, Screen.Height);
end;
//var
// hMon: HMONITOR;
// mi: TMonitorInfo;
//begin
// hMon := MonitorFromPoint(Point(0, 0), MONITOR_DEFAULTTOPRIMARY);
// mi.cbSize := SizeOf(TMonitorInfo);
// if GetMonitorInfo(hMon, @mi) then
// Result := mi.rcWork
// else
// Result := Rect(0, 0, Screen.Width, Screen.Height);
//end;
Constructor TDlgNotice.Create(aOwner: TComponent);
var
hTarkBar: HWND;
r, rPM: TRect;
nVCnt, nHPos: Integer;
begin
Inherited Create(aOwner);
Caption := APP_TITLE;
{$IFDEF _HE_}
if (CUSTOMER_TYPE = CUSTOMER_DEV) or IsCJ_Affiliates then
begin
case gMgSvc.HeModeKind of
hmkSleep :
begin
lbMode.Caption := RS_MsgModeSleep;
// lbMode.Font.Color := clGray;
end;
hmkSecurity :
begin
lbMode.Caption := RS_MsgModeSecu;
lbMode.Font.Color := clBlue;
end;
hmkVulnerability :
begin
lbMode.Caption := RS_MsgModeVul;
lbMode.Font.Color := clRed;
end;
hmkOffline :
begin
if IsCJ_Affiliates then
begin
lbMode.Caption := RS_RS_MsgModeNoId;
lbMode.Font.Color := clRed;
end else begin
lbMode.Caption := RS_MsgModeOff;
lbMode.Font.Color := clGray;
end;
end;
hmkException :
begin
lbMode.Caption := RS_MsgModeExpt;
lbMode.Font.Color := clGray;
end;
end;
pnTop.Visible := true;
end;
{$ENDIF}
case CUSTOMER_TYPE of
CUSTOMER_TMAP,
CUSTOMER_SOSLAB : _nNotiCnt := 1; // 팝업 위치 고정
else Inc(_nNotiCnt);
end;
sCmdParam_ := '';
sNotiCenterMsg_ := '';
Mutex_ := nil;
{$IFDEF _HE_}
ZeroMemory(@ReqDevExceptInfo_, SizeOf(ReqDevExceptInfo_));
{$ENDIF}
rPM := GetSystemPrimaryMonitorRect;
hTarkBar := FindWindow('Shell_TrayWnd', '');
if hTarkBar <> 0 then
begin
{$IFDEF _HE_}
SetNotiForm(gMgSvc.ModePolicy.NotifyType);
{$ELSE}
SetNotiForm(nftNormal);
{$ENDIF}
GetWindowRect(hTarkBar, r);
// Top가 0이면 위, 왼쪽 아님 오른쪽
if (r.Left <= 0) and (r.Right < rPM.Width) then
begin
// 왼쪽
Top := rPM.Height;
Left := rPM.Width;
end else
if (r.Left <= 0) and (r.Top = 0) and
(r.Bottom < rPM.Height) then
begin
// 위쪽
Top := rPM.Height;
Left := rPM.Width;
end else
if (r.Left <= 0) and (r.Top > 0) then
begin
// 아래쪽
Top := rPM.Height - (r.Bottom - r.Top);
Left := rPM.Width;// - Width;
end else begin
// 오른쪽
Top := rPM.Height;
Left := rPM.Width - (r.Right - r.Left);// - Width - (r.Right - r.Left);
end;
// if CUSTOMER_TYPE = CUSTOMER_TMAP then
// begin
// nVCnt := 1; // 티맵은 위치 고정
// nHPos := 0;
// end else begin
//
// end;
nVCnt := rPM.Height div Height;
nHPos := _nNotiCnt mod nVCnt;
if nHPos = 0 then
begin
Left := Left - (_nNotiCnt div nVCnt) * Width;
nHPos := nVCnt;
end else
Left := Left - ((_nNotiCnt div nVCnt) + 1) * Width;
Top := Top - (nHPos * Height);
end;
tInit.Enabled := true;
{$IFDEF _HE_}
nHPos := gMgSvc.ModePolicy.NotiCloseSec;
if nHPos > 0 then
begin
tClose.Interval := nHPos * 1000;;
tClose.Enabled := true;
end else
if IsHD then
begin
tClose.Interval := 5000;
tClose.Enabled := true;
end;
{$ENDIF}
end;
procedure TDlgNotice.CreateParams(var Params: TCreateParams);
begin
Inherited CreateParams(Params);
Params.ExStyle := WS_EX_APPWINDOW;
end;
Destructor TDlgNotice.Destroy;
begin
if Mutex_ <> nil then
FreeAndNil(Mutex_);
Inherited;
end;
// 고객사별 커스텀 메시지... 아 하기싫다 25_0423 13:45:13 kku
function TDlgNotice.CM_RS_TitlePreventSimple: String;
begin
Result := RS_TitlePreventSimple;
case CUSTOMER_TYPE of
CUSTOMER_LOTTEMART :
begin
if RS_TitlePreventSimple = '보안정책 위반 행위 탐지' then
Result := '관리자 승인 필요 활동 탐지'; // 언어가 한국어 일때만
end;
end;
end;
function TDlgNotice.CM_RS_DevExcept: String;
begin
Result := RS_DevExcept;
case CUSTOMER_TYPE of
CUSTOMER_LOTTEMART :
begin
if RS_DevExcept = '예외' then
Result := '승인 요청'; // 언어가 한국어 일때만
end;
end;
end;
function TDlgNotice.CM_RS_BlockMsg(sDef: String): String;
begin
// case CUSTOMER_TYPE of
// CUSTOMER_HDENG : Result := RS_HecBlockMsg;
// else Result := sDef;
// end;
// 위에꺼가 아니라고 해서.... 일단 아래처럼 땜빵...
// 나중에 정리하자.... 25_1013 16:42:12 kku
Result := sDef;
if CUSTOMER_TYPE = CUSTOMER_HDENG then
lbTitle.Caption := RS_HecBlockMsg;
end;
function TDlgNotice.CM_RS_MonMsg(sDef: String): String;
begin
// case CUSTOMER_TYPE of
// CUSTOMER_HDENG : Result := RS_HecMonMsg;
// else Result := sDef;
// end;
// 위에꺼가 아니라고 해서.... 일단 아래처럼 땜빵...
// 나중에 정리하자.... 25_1013 16:42:12 kku
Result := sDef;
if CUSTOMER_TYPE = CUSTOMER_HDENG then
lbTitle.Caption := RS_HecMonMsg;
end;
procedure TDlgNotice.SetNotiForm(aNotiType: TNotifyType);
begin
cpMain.ActiveCard := cdDef;
if aNotiType = nftNormal then
begin
lbTitle.Caption := RS_TitleVul;
imgTop.Picture.Assign(imgTitles.Items[0].PngImage);
Width := 454;
Height := 461;
lbTitle.Top := 193;
lbTitle.Left := 31;
mmMsg.Top := 44;
mmMsg.Left := 31;
mmMsg.Height := 100;
lbMode.Left := 31;
lbOk.Top := 187;
lbOk.Left := 31;
imgOk.Top := 187;
imgOk.Left := 31;
lbSet.Top := 187;
lbSet.Left := 243;
imgSet.Top := 187;
imgSet.Left := 243;
lbMsgEx.Top := 163;
if pnTop.Visible then
begin
Height := Height + pnTop.Height;
lbTitle.Top := lbTitle.Top + pnTop.Height;
mmMsg.Top := mmMsg.Top + pnTop.Height;
// lbOk.Top := lbOk.Top + pnTop.Height;
// imgOk.Top := imgOk.Top + pnTop.Height;
// lbSet.Top := lbSet.Top + pnTop.Height;
// imgSet.Top := imgSet.Top + pnTop.Height;
lbMsgEx.Top := lbMsgEx.Top + pnTop.Height;
end;
end else begin
if not pnTop.Visible then
Height := Height - pnTop.Height;
end;
end;
procedure TDlgNotice.PopupMessage(sJsonData: String);
var
O: ISuperObject;
MsgList: TStringList;
sTemp: String;
NotiKind: TNotifyKind;
NotiType: TNotifyType;
StrList: TStringList;
LogInfo: TLogInfo;
procedure SetOneNomal(bShowTitle: Boolean = false);
begin
SetOneButtion;
lbTitle.Visible := bShowTitle;
mmMsg.Font.Color := $635653;
mmMsg.Font.Style := mmMsg.Font.Style + [fsBold];
// if not bShowTitle and (NotiType <> nftMin) then
// mmMsg.Top := lbTitle.Top;
end;
procedure SetPrevent(bOneButton: Boolean = true; bReqDevExcept: Boolean = false);
begin
if bOneButton then
begin
SetOneButtion;
end else
if bReqDevExcept then
begin
imgSet.Tag := 4;
SetImgBtn(imgSet, imgSet.Tag);
sCmdParam_ := 'RegDevExcept';
end;
if NotiType = nftMin then
lbTitle.Caption := CM_RS_TitlePreventSimple
else
lbTitle.Caption := RS_TitlePrevent;
mmMsg.Font.Color := $635653;
mmMsg.Font.Style := mmMsg.Font.Style + [fsBold];
// MsgList.Add(APP_TITLE);
// MsgList.Add('보안정책 위반행위가 탐지되었습니다.');
// MsgList.Add('');
end;
var
nType: Integer;
{$IFDEF _HE_}
PO: TPrefModel;
{$ENDIF}
begin
try
{$IFDEF _HE_}
PO := gMgSvc.ModePolicy;
NotiKind := PO.NotifyKind;
NotiType := PO.NotifyType;
{$ELSE}
NotiKind := nfkAll;
NotiType := nftNormal;
{$ENDIF}
// 중복 팝업 방지 25_0923 14:42:19 kku
case nType of
// 취약 팝업
TYPE_MSG_VUL_OS,
TYPE_MSG_VUL_PW,
TYPE_MSG_VUL_PW_LAST_CHANGE,
TYPE_MSG_VUL_SCAN,
TYPE_MSG_VUL_AV,
TYPE_MSG_VUL_FW,
TYPE_MSG_VUL_SCREEN,
TYPE_MSG_VUL_ALLOWACCESS,
TYPE_MSG_OLD_WINDOWS :
begin
Mutex_ := TTgMutex.Create('Global\POP_' + IntToStr(nType));
if Mutex_.MutexState <> msCreateOk then
begin
Close;
exit;
end;
end;
end;
ZeroMemory(@LogInfo, SizeOf(LogInfo));
Guard(StrList, TStringList.Create);
O := SO(sJsonData);
nType := O.I['T'];
Guard(MsgList, TStringList.Create);
// TTgTrace.T('PopupMessage() .. Type=%d', [O.I['T']]);
case nType of
TYPE_MSG_SAFEAPPLIED :
begin
if NotiType = nftMin then
lbTitle.Caption := RS_SafeCompletedSimple
else
lbTitle.Caption := RS_SafeCompleted;
MsgList.Add(RS_InitRemoteConn);
SetOneNomal(true);
end;
TYPE_MSG_OLD_WINDOWS :
begin
if (NotiType = nftACenter) and (CUSTOMER_TYPE = CUSTOMER_ABL) then
begin
MsgList.Add(Format(RS_MsgVul1_ABL, [RS_OsVer_ABL]));
MsgList.Add(RS_MsgVul2_ABL);
end else begin
MsgList.Add(RS_UnsafeOS);
if NotiType <> nftMin then
begin
MsgList.Add(RS_EOSVersion);
MsgList.Add('');
MsgList.Add(RS_NoAllVulCheck);
end;
SetOneButtion;
end;
end;
TYPE_MSG_VUL_OS :
begin
if (NotiType = nftACenter) and (CUSTOMER_TYPE = CUSTOMER_ABL) then
begin
MsgList.Add(Format(RS_MsgVul1_ABL, [RS_OsPatch_ABL]));
MsgList.Add(RS_MsgVul2_ABL);
end else begin
MsgList.Add(RS_NoUpToDateOS);
if NotiType <> nftMin then
begin
if NotiType <> nftACenter then
begin
MsgList.Add(RS_OSPatchAction1);
MsgList.Add(RS_OSPatchAction2);
MsgList.Add(RS_OSPatchAction3);
end;
end;
sCmdParam_ := PARAM_GO_WINUPDATE;
end;
end;
TYPE_MSG_VUL_PW :
begin
if (NotiType = nftACenter) and (CUSTOMER_TYPE = CUSTOMER_ABL) then
begin
MsgList.Add(Format(RS_MsgVul1_ABL, [RS_UserPw_ABL]));
MsgList.Add(RS_MsgVul2_ABL);
end else begin
MsgList.Add(RS_VulPW1);
if NotiType <> nftMin then
begin
if NotiType <> nftACenter then
begin
MsgList.Add(RS_VulPW2);
MsgList.Add(RS_VulPW3);
MsgList.Add(RS_VulPW4);
end;
end;
sCmdParam_ := PARAM_GO_SETPASS;
end;
end;
TYPE_MSG_VUL_PW_LAST_CHANGE :
begin
MsgList.Add(RS_VulPwDate1);
MsgList.Add('');
MsgList.Add(RS_LastChangePw);
{$IFDEF _HE_}
MsgList.Add(DateTimeToStr(GetLastChangePasswordDT(gMgSvc.ComName, ExtractFileName(gMgSvc.Domain))));
{$ENDIF}
if (NotiType <> nftMin) and (NotiType <> nftACenter) then
begin
MsgList.Add('');
MsgList.Add(RS_VulPwDate2);
MsgList.Add(RS_VulPwDate3);
MsgList.Add(RS_VulPwDate4);
end;
sCmdParam_ := PARAM_GO_SETPASS;
end;
TYPE_MSG_VUL_AV :
begin
if (NotiType = nftACenter) and (CUSTOMER_TYPE = CUSTOMER_ABL) then
begin
MsgList.Add(Format(RS_MsgVul1_ABL, [RS_AV_ABL]));
MsgList.Add(RS_MsgVul2_ABL);
end else begin
MsgList.Add(RS_VulAV1);
if NotiType <> nftMin then
begin
if NotiType <> nftACenter then
begin
MsgList.Add(RS_VulAV2);
MsgList.Add(RS_VulAV3);
MsgList.Add(RS_VulAV4);
end;
end;
sCmdParam_ := PARAM_GO_ANTIVIRUS;
end;
end;
TYPE_MSG_VUL_FW :
begin
if (NotiType = nftACenter) and (CUSTOMER_TYPE = CUSTOMER_ABL) then
begin
MsgList.Add(Format(RS_MsgVul1_ABL, [RS_FW_ABL]));
MsgList.Add(RS_MsgVul2_ABL);
end else begin
MsgList.Add(RS_VulFW1);
if NotiType <> nftMin then
begin
if NotiType <> nftACenter then
begin
MsgList.Add(RS_VulFW2);
MsgList.Add(RS_VulFW3);
end;
end;
{$IFDEF _HE_}
if StrToIntDef(gMgSvc.HandleConfig.OsVersion, 7) >= 10 then
sCmdParam_ := PARAM_GO_FIREWALL2
else
sCmdParam_ := PARAM_GO_FIREWALL;
{$ENDIF}
end;
end;
TYPE_MSG_VUL_SCREEN :
begin
if (NotiType = nftACenter) and (CUSTOMER_TYPE = CUSTOMER_ABL) then
begin
MsgList.Add(Format(RS_MsgVul1_ABL, [RS_ScrSv_ABL]));
MsgList.Add(RS_MsgVul2_ABL);
end else begin
MsgList.Add(RS_VulScreen1);
if NotiType <> nftMin then
begin
if NotiType <> nftACenter then
begin
MsgList.Add(RS_VulScreen2);
MsgList.Add(RS_VulScreen3);
end;
end;
sCmdParam_ := PARAM_GO_SETSAVER;
end;
end;
TYPE_MSG_VUL_EMPNO :
begin
MsgList.Add(RS_VulEmpNo1);
if NotiType <> nftMin then
begin
MsgList.Add(RS_VulEmpNo2);
MsgList.Add(RS_VulEmpNo3);
end;
{$IFDEF _HE_}
MsgList.Add(RS_InvalidEmpNo + gMgSvc.EmpNo);
{$ENDIF}
sCmdParam_ := 'ChangeEmpNo';
end;
TYPE_MSG_VUL_ALLOWACCESS :
begin
MsgList.Add(RS_VulAllow1);
if NotiType <> nftMin then
begin
MsgList.Add(RS_VulAllow2);
{$IFDEF _HE_}
if gMgSvc.IsRestricMac then
begin
MsgList.Add('');
MsgList.Add(RS_NoAccessMAC);
MsgList.Add(RS_RequestManager);
end else
if gMgSvc.IsRestricDate then
begin
MsgList.Add('');
MsgList.Add(RS_ExpireConnDate);
end;
{$ENDIF}
MsgList.Add('');
end;
SetOneNomal;
end;
TYPE_MSG_VUL_SCAN :
begin
MsgList.Add(RS_PersonalInfoOver);
MsgList.Add('');
MsgList.Add(RS_PersonalInfoOver1);
MsgList.Add(RS_PersonalInfoOver2);
sCmdParam_ := 'CttSch';
end;
TYPE_MSG_NOTIFICATION :
begin
SetOneButtion;
lbTitle.Caption := RS_Noti;
MsgList.Text := StringReplace(O.S['D'], 'ㅄ', #13#10, [rfReplaceAll]);
end;
TYPE_MSG_UPDATE :
begin
// tClose.Enabled := false;
SetOneButtion;
lbTitle.Caption := RS_UpdateCompleted;
MsgList.Add(RS_MsgUpdateCompleted);
{$IFDEF _HE_}
MsgList.Add(Format(RS_FMT_Version, [SdkVersion]));
{$ENDIF}
// MsgList.Add('');
// MsgList.Add(RS_UpdateReboot);
end;
TYPE_MSG_AFTERREPORT :
begin
SetOneButtion;
lbTitle.Caption := RS_WriteReport;
MsgList.Add(RS_MsgWriteReport1);
MsgList.Add(RS_MsgWriteReport2);
end;
TYPE_MSG_CTTSCH_START :
begin
SetOneButtion;
lbTitle.Caption := RS_CTTSCH;
MsgList.Text := RS_CTTSCH_START;
end;
TYPE_MSG_CTTSCH_COMPLETE :
begin
SetOneButtion;
lbTitle.Caption := RS_CTTSCH;
MsgList.Add(RS_CTTSCH_COMPLETE);
MsgList.Add('');
SplitString(O.S['D'], '|', StrList, true);
if StrList.Count > 1 then
begin
MsgList.Add(RS_CTTSCH_TILE + ' : ' + StrList[0]);
MsgList.Add(RS_CTTSCH_RESULT_COUNT + ' : ' + StrList[1]);
if IsHD then
begin
var nCnt: Integer := StrToIntDef(StrList[1], 0);
if nCnt > 0 then
SetPiResult4HEC(nCnt);
end;
end;
end;
TYPE_EMPTY_PERSONAL_INFO :
begin
Mutex_ := TTgMutex.Create('Global\EPI_250412');
if Mutex_.MutexState <> msCreateOk then
begin
Close;
exit;
end;
sCmdParam_ := 'PersonalInfo';
SetPrevent(false);
lbTitle.Caption := RS_PerInfoCheck;
MsgList.Add(RS_NotFoundPerInfo);
MsgList.Add('');
MsgList.Add(RS_RegPerInfo);
end;
TYPE_MSG_CTTSCH_VULMODE :
begin
sCmdParam_ := 'CttSch';
SetPrevent(false);
lbTitle.Caption := RS_CTTSCH;
MsgList.Add(RS_CttSchVulModeMsg1);
MsgList.Add(RS_CttSchVulModeMsg2);
MsgList.Add(RS_CttSchVulModeMsg3);
end;
TYPE_MSG_PREVENT_CLIPBOARD :
begin
SetPrevent;
SplitString(O.S['D'], '|', StrList, true);
// Req
// 여기서부터 IDE가 이상해진다. SplitString() 이후 25_0219 15:54:59 kku
if (StrList.Count > 1) and (StrList[1] = 'M') then
MsgList.Add(CM_RS_MonMsg(RS_DetectCB))
else
MsgList.Add(CM_RS_BlockMsg(RS_ClipCut));
if StrList.Count > 0 then
begin
MsgList.Add('');
case StrList.Count of
2 : if (StrList[1] <> 'M') and (StrList[1] <> '') then MsgList.Add(RS_FoundCtt + StrList[1]);
3 : if StrList[2] <> '' then MsgList.Add(RS_FoundCtt + StrList[2]);
end;
MsgList.Add(Format(RS_FMT_ClipCutApp, [StrList[0]]));
end;
end;
TYPE_MSG_MONITOR_USB :
begin
SetOneButtion;
SplitString(O.S['D'], '|', StrList, true);
MsgList.Add(CM_RS_MonMsg(RS_DetectRemoveableDev));
if CUSTOMER_TYPE = CUSTOMER_LOTTEMART then
begin
// todo : 2025년 12월 이후에 삭제 필요 25_0911 14:38:57 kku
var wYear, wMonth, wDay: WORD;
DecodeDate(Now, wYear, wMonth, wDay);
if (wYear < 2026) and (wMonth < 12) then
begin
var CompModel: TCompanyModel;
Guard(CompModel, TCompanyModel.Create);
CompModel.Load;
if CompModel.SvrDestList.Count > 0 then
begin
if Pos('https://10.167.1.168:8443', CompModel.SvrDestList[0]) = 1 then
begin
MsgList.Add('');
MsgList.Add(Format(RS_UsbBLockNoti1, [2025, 12, 1]));
MsgList.Add(RS_UsbBLockNoti2);
MsgList.Add(RS_UsbBLockNoti3);
end;
end;
end;
end;
if StrList.Count > 1 then
begin
MsgList.Add('');
MsgList.Add('Drive : ' + StrList[0]);
MsgList.Add('Type : ' + StrList[1]);
end;
end;
TYPE_MSG_PREVENT_USBDISCONN :
begin
// 중복 팝업 차단 23_1023 15:29:39 kku
sTemp := StringReplace(O.S['D'], ':', '_', [rfReplaceAll]);
sTemp := StringReplace(sTemp, '\', '_', [rfReplaceAll]);
sTemp := 'Global\PV_' + sTemp;
Mutex_ := TTgMutex.Create(sTemp);
if Mutex_.MutexState <> msCreateOk then
begin
Close;
exit;
end;
{$IFDEF _HE_}
if IsApproveSupport and gMgSvc.UseApproval then
SetPrevent(gMgSvc.IsNewApi and (not PO.AbleUsbExceptReq and not PO.UsbApproval), true)
else
SetPrevent(gMgSvc.IsNewApi and not PO.AbleUsbExceptReq, true);
{$ELSE}
SetOneButtion;
{$ENDIF}
SplitString(O.S['D'], '|', StrList, true);
if StrList.Count > 4 then
begin
{$IFDEF _HE_}
ReqDevExceptInfo_.sDevName := Format('%s, Drive=%s (%s), Type=%s',
[StrList[2], StrList[0], StrList[1], StrList[3]]);
// ReqDevExceptInfo_.sSerial := StrList[4];
ReqDevExceptInfo_.sSerial := ExtractFileName(StrList[4]); // MAC 호화을 위해 VID, PID 등 제외 25_0324 09:54:27 kku
ReqDevExceptInfo_.ReqDevType := rdtUsbDrive;
{$ENDIF}
end;
{$IFDEF _HE_}
case PO.UsbBlockKind of
ubkNone : ;
ubkBlock :
begin
MsgList.Add(CM_RS_BlockMsg(RS_USBCut));
MsgList.Add('');
MsgList.Add('Serial : ' + ReqDevExceptInfo_.sSerial);
end;
ubkReadOnly : MsgList.Add(RS_USB_RO);
end;
{$ENDIF}
if NotiType <> nftMin then
begin
MsgList.Add('');
if StrList.Count > 4 then
begin
MsgList.Add('Name : ' + StrList[2]);
if not IsHD then
MsgList.Add('Type : ' + StrList[3]);
MsgList.Add(Format('Drive : %s (%s)', [StrList[0], StrList[1]]));
end;
end;
end;
TYPE_MSG_PREVENT_ROUTERCHANGE :
begin
SetPrevent;
MsgList.Add(CM_RS_BlockMsg(RS_RouteCut));
if NotiType <> nftMin then
begin
SplitString(O.S['D'], '|', StrList);
if StrList.Count > 2 then
begin
MsgList.Add('');
MsgList.Add('- DestIP : ' + StrList[0]);
MsgList.Add(Format('- IP Info : %s (%s)', [StrList[1], StrList[2]]));
end;
end;
end;
TYPE_MSG_PREVENT_WARTERMARK :
begin
SetPrevent;
MsgList.Add(RS_FWater);
MsgList.Add(Format(' - File : %s', [ExtractFileName(O.S['D'])]));
if NotiType <> nftMin then
MsgList.Add(Format(' - Path : %s', [ExtractFilePath(O.S['D'])]));
end;
TYPE_MSG_PREVENT_FILECHANGE :
begin
sTemp := StringReplace(O.S['D'], ':', '_', [rfReplaceAll]);
sTemp := StringReplace(sTemp, '\', '_', [rfReplaceAll]);
sTemp := 'Global\PV_' + sTemp;
Mutex_ := TTgMutex.Create(sTemp);
if Mutex_.MutexState <> msCreateOk then
begin
Close;
exit;
end;
SetPrevent;
MsgList.Add(RS_FWatch);
MsgList.Add('');
SplitString(O.S['D'], '|', StrList);
if (StrList.Count > 2) and (StrList[1] <> '') then
begin
MsgList.Add(RS_FoundCtt + StrList[1]);
// 전체 검출 수 ?? StrList[2]
end;
if StrList.Count > 0 then
begin
if Pos('[', StrList[0]) > 0 then
begin
// 새로운 형식 추가
sTemp := Trim(ExtrLastDelimiterStr(StrList[0], ']'));
MsgList.Add(Format(' File : %s', [ExtrLastDelimiterStr(sTemp, '\')]));
if NotiType <> nftMin then
MsgList.Add(Format(' Path : %s', [ExtractFilePath(sTemp)]));
MsgList.Add(Format(' Event : %s', [GetCapsuleStr('[', ']', StrList[0])]));
end else begin
MsgList.Add(Format(' File : %s', [ExtractFileName(StrList[0])]));
if NotiType <> nftMin then
MsgList.Add(Format(' Path : %s', [ExtractFilePath(StrList[0])]));
end;
end;
end;
TYPE_MSG_PREVENT_FILEWRITE :
begin
sTemp := StringReplace(O.S['D'], ':', '_', [rfReplaceAll]);
sTemp := StringReplace(sTemp, '\', '_', [rfReplaceAll]);
sTemp := 'Global\PV_' + sTemp;
Mutex_ := TTgMutex.Create(sTemp);
if Mutex_.MutexState <> msCreateOk then
begin
Close;
exit;
end;
SetPrevent;
MsgList.Add(CM_RS_BlockMsg(RS_FCut));
MsgList.Add('');
SplitString(O.S['D'], '|', StrList);
if (StrList.Count > 2) and (StrList[1] <> '') then
begin
MsgList.Add(RS_FoundCtt + StrList[1]);
// 전체 검출 수 ?? StrList[2]
end;
if StrList.Count > 0 then
begin
MsgList.Add(Format(' File : %s', [ExtractFileName(StrList[0])]));
if NotiType <> nftMin then
begin
MsgList.Add(Format(' Path : %s', [ExtractFilePath(StrList[0])]));
MsgList.Add(RS_FDelAfter);
end;
end;
end;
TYPE_MSG_PREVENT_TEMPCONN :
begin
SetPrevent;
MsgList.Add(RS_TempConnect);
if NotiType <> nftMin then
MsgList.Add('');
{$IFDEF _HE_}
MsgList.Add(Format(RS_TempConnectExit, [gMgSvc.PrefModel.TemporaryConnMin]));
{$ENDIF}
end;
TYPE_MSG_PREVENT_BLACKAPP :
begin
SetPrevent;
SplitString(O.S['D'], '|', StrList);
if StrList.Count > 0 then
begin
MsgList.Add(Format('%s', [StrList[0]]));
if NotiType <> nftMin then
MsgList.Add('');
if StrList.Count > 1 then
MsgList.Add(CM_RS_BlockMsg(RS_TerminateApp))
else
MsgList.Add(CM_RS_MonMsg(RS_MonitorApp));
end;
end;
TYPE_MSG_PREVENT_WHITEAPP :
begin
SetPrevent;
MsgList.Add(RS_ExeWhiteApp1);
if NotiType <> nftMin then
begin
MsgList.Add(RS_ExeWhiteApp2);
MsgList.Add('');
end;
MsgList.Add(Format('%s', [O.S['D']]));
end;
TYPE_MSG_PREVENT_FILEMASK :
begin
SetPrevent;
MsgList.Add(RS_FMask);
MsgList.Add(Format(' - Path : %s', [O.S['D']]));
if NotiType <> nftMin then
MsgList.Add(RS_FDelAfter);
end;
TYPE_MSG_PREVENT_URL :
begin
SplitString(O.S['D'], '|', StrList);
if StrList.Count > 1 then
begin
MsgList.Add(CM_RS_BlockMsg(RS_URLCut));
if CompareText(StrList[0], EMPTY_URL_MSG) = 0 then
SetOneButtion
else begin
{$IFDEF _HE_}
if IsApproveSupport and gMgSvc.UseApproval then
SetPrevent(gMgSvc.IsNewApi and not PO.WebUrlApproval, true)
else
{$ENDIF}
SetOneButtion;
end;
sCmdParam_ := 'RegUrlExcept';
ReqDevExceptInfo_.sSerial := StrList[0];
end else begin
MsgList.Add(CM_RS_MonMsg(RS_URLMon));
SetPrevent;
end;
if StrList.Count > 0 then
begin
var sMtx: String := StringReplace(StrList[0], ':', '', [rfReplaceAll]);
sMtx := StringReplace(sMtx, '/', '', [rfReplaceAll]);
Mutex_ := TTgMutex.Create(sMtx);
MsgList.Add(Format(RS_FMT_URLCut, [StrList[0]]));
end;
end;
TYPE_MSG_PREVENT_INSTALL :
begin
SetPrevent(false);
SplitString(O.S['D'], '|', StrList);
if CUSTOMER_TYPE = CUSTOMER_SANKYO then
begin
lbTitle.Caption := RS_DetectAppInstSankyo;
MsgList.Add(RS_DetectAppInstSankyo2);
end else
MsgList.Add(RS_DetectAppInst);
if StrList.Count > 1 then
MsgList.Add(RS_DeleteInstApp);
if NotiType <> nftMin then
begin
if StrList.Count > 1 then
begin
MsgList.Add('');
MsgList.Add(RS_DeleteInstAppMsg1);
MsgList.Add(RS_DeleteInstAppMsg2);
end else begin
MsgList.Add('');
MsgList.Add(RS_DetectAppInst1);
MsgList.Add(RS_DetectAppInst2);
end;
end;
if StrList.Count > 0 then
MsgList.Add(Format(' - Name : %s', [StrList[0]]));
sCmdParam_ := PARAM_GO_UNINSTALL;
end;
TYPE_MSG_PREVENT_WIFI :
begin
SetPrevent;
MsgList.Add(CM_RS_MonMsg(RS_DetectWIFI));
SplitString(O.S['D'], '|', StrList);
MsgList.Add(Format(' - Name : %s', [StrList[0]]));
MsgList.Add(Format(' - IP : %s', [StrList[1]]));
MsgList.Add(Format(' - MAC : %s', [StrList[2]]));
{$IFDEF _HE_}
if StrList.Count > 3 then
begin
if NotiType <> nftMin then
MsgList.Add('');
MsgList.Add(CM_RS_BlockMsg(RS_AfterCut));
end;
{$ENDIF}
end;
TYPE_MSG_PREVENT_BLUETOOTH :
begin
{$IFDEF _HE_}
if IsApproveSupport and gMgSvc.UseApproval then
SetPrevent((gMgSvc.IsNewApi and not PO.AbleBtExceptReq and not PO.BtApproval) or
(CUSTOMER_TYPE = CUSTOMER_HDENG) or (CUSTOMER_TYPE = CUSTOMER_GEC), true)
else
SetPrevent((gMgSvc.IsNewApi and not PO.AbleBtExceptReq) or
(CUSTOMER_TYPE = CUSTOMER_HDENG) or (CUSTOMER_TYPE = CUSTOMER_GEC), true);
{$ELSE}
SetPrevent(true, true);
{$ENDIF}
MsgList.Add(CM_RS_MonMsg(RS_DetectBlue));
SplitString2(O.S['D'], '|', StrList, true);
{$IFDEF _HE_}
ReqDevExceptInfo_.ReqDevType := rdtBluetooth;
// ReqDevExceptInfo_.sDevName := Format('Ts (%s)', [StrList[0], StrList[1]]); // 이거 왜 이렇게 했는지 기억이 안남... 25_0218 08:50:41 kku
ReqDevExceptInfo_.sDevName := Format('%s, %s', [StrList[0], StrList[1]]);
try
ReqDevExceptInfo_.sSerial := StrList[2];
except
ReqDevExceptInfo_.sSerial := 'Unknown';
end;
{$ENDIF}
MsgList.Add(Format(' - Name : %s', [StrList[0]]));
MsgList.Add(Format(' - Type : %s', [StrList[1]]));
// if StrList.Count > 2 then
// MsgList.Add(Format(' - Adress : %s', [StrList[2]]));
if StrList.Count > 3 then
MsgList.Add(CM_RS_BlockMsg(RS_BlueCut));
end;
TYPE_MSG_PREVENT_MTP :
begin
{$IFDEF _HE_}
if IsApproveSupport and gMgSvc.UseApproval then
SetPrevent((gMgSvc.IsNewApi and not PO.AbleMtpExceptReq and not PO.MtpApproval) or
(CUSTOMER_TYPE = CUSTOMER_HDENG) or (CUSTOMER_TYPE = CUSTOMER_GEC), true)
else
SetPrevent((gMgSvc.IsNewApi and not PO.AbleMtpExceptReq) or
(CUSTOMER_TYPE = CUSTOMER_HDENG) or (CUSTOMER_TYPE = CUSTOMER_GEC), true);
{$ELSE}
SetPrevent(true, true);
{$ENDIF}
SplitString2(O.S['D'], '|', StrList, true);
{$IFDEF _HE_}
ReqDevExceptInfo_.ReqDevType := rdtMtp;
ReqDevExceptInfo_.sDevName := Format('%s (%s)', [StrList[0], StrList[1]]);
ReqDevExceptInfo_.sSerial := StrList[2];
if PO.MtpBlockKind = ubkReadOnly then
MsgList.Add(CM_RS_MonMsg(RS_DetectMTP + ' (ReadOnly)'))
else
{$ENDIF}
MsgList.Add(CM_RS_MonMsg(RS_DetectMTP));
SplitString(O.S['D'], '|', StrList, true);
MsgList.Add(Format(' - Name : %s', [StrList[0]]));
MsgList.Add(Format(' - Desc : %s', [StrList[1]]));
if StrList.Count > 2 then
MsgList.Add(Format(' - Serial : %s', [StrList[2]]));
if StrList.Count > 3 then
MsgList.Add(CM_RS_BlockMsg(RS_MTPCut));
end;
TYPE_MSG_PREVENT_PRINTER :
begin
SetPrevent;
SplitString(O.S['D'], '|', StrList, true);
if StrList.Count > 3 then
begin
if StrList[3] = 'WT' then
MsgList.Add(RS_NotSupportWT)
else if StrList[3] = 'PTR' then
MsgList.Add(RS_NotSupportPTR)
else if StrList[3] = 'PTR_IP' then
MsgList.Add(RS_NotSupportPTR_IP)
else if StrList[3] = 'SHARE' then
begin
MsgList.Add(RS_SharePcPrintBlock);
var sMtx: String := 'Global\' + StrsReplace(StrList[0], ['\', ' ', ':'], '');
Mutex_ := TTgMutex.Create(sMtx);
if Mutex_.MutexState <> msCreateOk then
begin
Close;
exit;
end;
end
else if StrList[3] = 'WSD' then
MsgList.Add(RS_WsdPrintBlock)
else if StrList[3] = 'NoTCPIP' then
MsgList.Add(RS_NoTcpIpPrintBlock)
else if StrList[3] = 'PSAVING' then
MsgList.Add(RS_PwSavingPrintBlock)
else if (StrList[3] = 'APP') and (StrList.Count > 4) then
MsgList.Add(RS_NotSupportAPP + StrList[4])
else if (StrList[3] = 'URL') and (StrList.Count > 4) then
MsgList.Add(RS_NotSupportURL + StrList[4])
else if (StrList[3] = 'CTT') and (StrList.Count > 4) and (StrList[4] <> '') then
MsgList.Add(RS_FoundCtt + StrList[4]);
end else
MsgList.Add(CM_RS_MonMsg(RS_DetectPrinter));
MsgList.Add(Format(' - Printer : %s', [StrList[0]]));
MsgList.Add(Format(' - Document : %s', [StrList[1]]));
if StrList.Count > 2 then
begin
MsgList.Add('');
MsgList.Add(CM_RS_BlockMsg(RS_PrinterCut));
end;
end;
TYPE_MSG_EVENT_PRINTWATER :
begin
SetOneButtion;
Mutex_ := TTgMutex.Create('Global\' + StringReplace(O.S['D'], '\', '', [rfReplaceAll]));
SplitString(O.S['D'], '|', StrList, true);
lbTitle.Caption := RS_PrintWater1;
MsgList.Add(RS_PrintWater2);
if StrList.Count > 1 then
begin
MsgList.Add('');
MsgList.Add(Format(' - Printer : %s', [StrList[0]]));
MsgList.Add(Format(' - Document : %s', [StrList[1]]));
{$IFDEF _HE_}
if not gMgSvc.IsNewApi then
gMgSvc.SendEventLog(URI_USER_ACTION, PREVENT_PRINTER_WATERMARK,
Format('Printer : %s, Document : %s', [StrList[0], StrList[1]]));
{$ENDIF}
// MsgList.Add('프로그램 : ' + StrList[0]);
// MsgList.Add('문서이름 : ' + ExtractFileName(StrList[1]));
// gMgSvc.SendEventLog(URI_USER_ACTION, PREVENT_PRINTER_WARTERMARK, Format('Process : %s, DocName : %s', [StrList[0], StrList[1]]))
end;
end;
// TYPE_MSG_EVENT_ATTACHFILE : // 지금은 모니터링만 씀 22_1028 14:08:59 kku
// begin
// SetOneButtion;
// Mutex_ := TTgMutex.Create('Global\' + StringReplace(O.S['D'], '\', '', [rfReplaceAll]));
// SplitString(O.S['D'], '|', StrList, true);
//
// MsgList.Add('파일 첨부, 사용이 감지 되었습니다.');
// if StrList.Count > 1 then
// begin
// MsgList.Add('');
// MsgList.Add('프로그램 : ' + StrList[0]);
// MsgList.Add('파일이름 : ' + ExtractFileName(StrList[1]));
// end;
// end;
TYPE_MSG_PREVENT_ATTACHFILE :
begin
// SplitString(O.S['D'], '|', StrList, true);
var OInfo: ISuperObject := SO(O.S['D']);
var sPath: String := '';
sPath := OInfo.S['Path'];
if IsApproveSupport and gMgSvc.UseApproval and not OInfo.B['M'] then
SetPrevent((gMgSvc.IsNewApi and not PO.ExFApproval) or
(CUSTOMER_TYPE = CUSTOMER_HDENG) or (CUSTOMER_TYPE = CUSTOMER_GEC), true)
else
SetOneButtion;
ReqDevExceptInfo_.ReqDevType := rdtExpFile;
var REnt: TRecentFnd;
var OA: ISuperObject := TSuperObject.Create(stArray);
var OFile := SO;
OFile.S['filePath'] := sPath;
OFile.S['hash'] := OInfo.S['Hash'];
if OFile.S['hash'] = '' then
OFile.S['hash'] := GetFileToSha1Str(sPath);
if gMgSvc.GetRecentFnd(sPath, REnt) then
OFile.S['ruleViolated'] := REnt.sFounds;
if OInfo.S['OutDir'] <> '' then
OFile.S['OD'] := OInfo.S['OutDir'];
OA.AsArray.Add(OFile);
ReqDevExceptInfo_.sSerial:= OA.AsJson;
if OInfo.S['URL'] <> '' then
ReqDevExceptInfo_.sDevName := OInfo.S['URL']
else
ReqDevExceptInfo_.sDevName := OInfo.S['PName'];
Mutex_ := TTgMutex.Create('Global\' + StringReplace(OInfo.S['PName'] + '|' + OInfo.S['Path'], '\', '', [rfReplaceAll]));
if OInfo.B['M'] then
begin
// 음.. 지금 기분이 뇌를 쓰고 싶지 않음..22_1121 14:26:23 kku
MsgList.Add(CM_RS_MonMsg(RS_DetectFileUse));
end else
MsgList.Add(CM_RS_BlockMsg(RS_DetectFileBlock));
{$IFDEF _HE_}
if gMgSvc.GetRecentFnd(sPath, REnt) then
begin
if (REnt.sFounds <> 'File size exceeded.') and
(REnt.sFounds <> 'Blocked by file extension.') then
begin
MsgList.Add(RS_FoundCtt + REnt.sFounds);
end else begin
MsgList.Add('');
MsgList.Add(REnt.sFounds);
end;
end;
{$ENDIF}
MsgList.Add('');
MsgList.Add(RS_Program + OInfo.S['PName']);
MsgList.Add(RS_FileName + ExtractFileName(OInfo.S['Path']));
var sDir: String := ExtractFilePath(OInfo.S['Path']);
if sDir <> '' then
MsgList.Add(RS_FilePath + sDir);
end;
TYPE_MSG_EVENT_DRM_OPEN,
TYPE_MSG_EVENT_DRM_OPEN_NO_MODIFY :
begin
SetOneButtion;
Mutex_ := TTgMutex.Create('Global\' + StringReplace(O.S['D'], '\', '', [rfReplaceAll]));
SplitString(O.S['D'], '|', StrList, true);
lbTitle.Caption := RS_OpenDrm1;
MsgList.Add(RS_OpenDrm2);
if nType = TYPE_MSG_EVENT_DRM_OPEN_NO_MODIFY then
MsgList.Add(RS_OpenDrm3);
if StrList.Count > 1 then
begin
MsgList.Add('');
MsgList.Add(RS_Program + StrList[0]);
MsgList.Add(RS_FileName + ExtractFileName(StrList[1]));
if NotiType = nftNormal then
MsgList.Add(RS_FilePath + ExtractFilePath(StrList[1]));
// {$IFDEF _HE_}
// gMgSvc.SendEventLog(URI_USER_ACTION, MONITOR_DRM_OPEN, Format('Process : %s, DocName : %s', [StrList[0], StrList[1]]), false)
// {$ENDIF}
end;
end;
TYPE_MSG_EVENT_DRM_BLOCK :
begin
SetOneButtion;
Mutex_ := TTgMutex.Create('Global\' + StringReplace(O.S['D'], '\', '', [rfReplaceAll]));
SplitString(O.S['D'], '|', StrList, true);
lbTitle.Caption := RS_OpenDrm1;
MsgList.Add(RS_BlockDrm1);
MsgList.Add(RS_BlockDrm2);
if StrList.Count > 1 then
begin
MsgList.Add('');
MsgList.Add(RS_Program + StrList[0]);
MsgList.Add(RS_FileName + ExtractFileName(StrList[1]));
if NotiType = nftNormal then
MsgList.Add(RS_FilePath + ExtractFilePath(StrList[1]));
{$IFDEF _HE_}
gMgSvc.SendEventLog(URI_USER_ACTION, PREVENT_DRM_OPEN, Format('Process : %s, DocName : %s', [StrList[0], StrList[1]]))
{$ENDIF}
end;
end;
TYPE_MSG_EVENT_DRM_BLOCK_CT :
begin
SetOneButtion;
Mutex_ := TTgMutex.Create('Global\' + StringReplace(O.S['D'], '\', '', [rfReplaceAll]));
SplitString(O.S['D'], '|', StrList, true);
lbTitle.Caption := RS_OpenDrm1;
MsgList.Add(RS_BlockDrm1);
MsgList.Add(RS_BlockDrm3);
if StrList.Count > 1 then
begin
MsgList.Add('');
MsgList.Add(RS_Program + StrList[0]);
MsgList.Add(RS_FileName + ExtractFileName(StrList[1]));
if NotiType = nftNormal then
MsgList.Add(RS_FilePath + ExtractFilePath(StrList[1]));
{$IFDEF _HE_}
gMgSvc.SendEventLog(URI_USER_ACTION, PREVENT_DRM_OPEN, Format('Process : %s, DocName : %s', [StrList[0], StrList[1]]))
{$ENDIF}
end;
end;
TYPE_MSG_PREVENT_FILEDRMENC :
begin
SetOneButtion;
lbTitle.Caption := RS_EncDrm1;
MsgList.Add(RS_EncDrm2);
MsgList.Add('');
SplitString(O.S['D'], '|', StrList);
if (StrList.Count > 2) and (StrList[1] <> '') then
begin
MsgList.Add(RS_FoundCtt + StrList[1]);
// 전체 검출 수 ?? StrList[2]
end;
if StrList.Count > 0 then
begin
MsgList.Add(Format(' %s : %s', [RS_DocName, ExtractFileName(StrList[0])]));
if NotiType <> nftMin then
MsgList.Add(Format(' Path : %s', [ExtractFilePath(StrList[0])]));
end;
end;
TYPE_MSG_PREVENT_FILERENAME :
begin
SetOneButtion;
SplitString(O.S['D'], '|', StrList, true);
if StrList.Count > 3 then
MsgList.Add(CM_RS_MonMsg(RS_DetectFRename))
else
MsgList.Add(CM_RS_BlockMsg(RS_BlockFRename));
MsgList.Add('');
if StrList.Count > 2 then
begin
MsgList.Add(RS_OrgName + StrList[0]);
MsgList.Add(RS_ChgName + StrList[1]);
MsgList.Add(RS_FilePath + StrList[2]);
end;
end;
TYPE_MSG_PREVENT_SHAREDFOLDER :
begin
SetOneButtion;
SplitString(O.S['D'], '|', StrList, true);
if StrList.Count > 1 then
MsgList.Add(CM_RS_BlockMsg(RS_BlockShareFolder))
else
MsgList.Add(CM_RS_MonMsg(RS_DetectShareFolder));
MsgList.Add('');
if StrList.Count > 0 then
MsgList.Add(StrList[0]);
end;
TYPE_MSG_PREVENT_CAPAPP :
begin
SplitString(O.S['D'], '|', StrList, true);
if IsApproveSupport and gMgSvc.UseApproval and (StrList.Count > 1) then
SetPrevent((gMgSvc.IsNewApi and not PO.CapApproval) or IsHD, true)
else
SetOneButtion;
if IsHD then
begin
mmMsg.Font.Size := 11;
mmMsg.Font.Style := mmMsg.Font.Style + [fsBold];
mmMsg.Height := 55;
// lbMsgEx.Top := 84;
lbTitle.Caption := ''; //'허용된 캡쳐 App 이 아닙니다';
MsgList.Add('');
MsgList.Add(RS_DetectCappAppHec);
lbMsgEx.Visible := true;
end else begin
if StrList.Count > 1 then
MsgList.Add(RS_BlockCappApp)
else
MsgList.Add(RS_DetectCappApp);
MsgList.Add('');
if StrList.Count > 0 then
MsgList.Add(StrList[0]);
sCmdParam_ := 'CapAppExcept';
ReqDevExceptInfo_.sSerial := StrList[0];
end;
end;
TYPE_MSG_MONITOR_CDROM :
begin
SetOneButtion;
MsgList.Add(CM_RS_MonMsg(RS_DetectCdrom));
MsgList.Add('');
MsgList.Add('Type : CD/DVD');
MsgList.Add('Drive : ' + O.S['D']);
end;
TYPE_MSG_MONITOR_HARDDISK :
begin
SetOneButtion;
MsgList.Add(RS_DetectDevice);
MsgList.Add('');
MsgList.Add('Type : Fixed Disk');
MsgList.Add('Name : ' + O.S['D']);
end;
TYPE_MSG_PREVENT_CDROM :
begin
{$IFDEF _HE_}
if IsApproveSupport and gMgSvc.UseApproval then
SetPrevent((gMgSvc.IsNewApi and not PO.AbleCdExceptReq and not PO.CdApproval) or
(CUSTOMER_TYPE = CUSTOMER_HDENG) or (CUSTOMER_TYPE = CUSTOMER_GEC), true)
else
SetPrevent((gMgSvc.IsNewApi and not PO.AbleCdExceptReq) or
(CUSTOMER_TYPE = CUSTOMER_HDENG) or (CUSTOMER_TYPE = CUSTOMER_GEC), true);
{$ELSE}
SetPrevent(true, true);
{$ENDIF}
SplitString(O.S['D'], '|', StrList, true);
if StrList.Count > 2 then
begin
{$IFDEF _HE_}
ReqDevExceptInfo_.sDevName := Format('%s, Drive=%s', [StrList[1], StrList[0]]);
ReqDevExceptInfo_.sSerial := StrList[2];
ReqDevExceptInfo_.ReqDevType := rdtCdrom;
{$ENDIF}
end;
MsgList.Add(CM_RS_BlockMsg(RS_CDROMCut));
if NotiType <> nftMin then
begin
MsgList.Add('');
if StrList.Count > 1 then
begin
MsgList.Add('Name : ' + StrList[1]);
MsgList.Add('Type : CD/DVD');
MsgList.Add(Format('Drive : %s', [StrList[0]]));
end;
end;
end;
TYPE_MSG_OUTLOOK_CATCH :
begin
SetOneButtion;
SplitString(O.S['D'], '|', StrList, true);
if StrList.Count < 5 then
begin
MsgList.Add(CM_RS_MonMsg(RS_OutlookMonMsg));
end else begin
if StrList[0] = PREVENT_OUTLOOK_BODY then
MsgList.Add(CM_RS_BlockMsg(RS_OutlookBlockMsg))
else if StrList[0] = PREVENT_OUTLOOK_MASKING then
MsgList.Add(CM_RS_MonMsg(RS_OutlookMaskMsg))
else if StrList[0] = MONITOR_OUTLOOK_BODY then
MsgList.Add(CM_RS_MonMsg(RS_OutlookMonMsg));
MsgList.Add('');
if StrList[1] <> '' then
MsgList.Add(RS_FoundCtt + StrList[1]);
MsgList.Add(RS_TO + StrList[2]);
if StrList[3] <> '' then
MsgList.Add(RS_CC + StrList[3]);
MsgList.Add(RS_TITLE + StrList[4]);
end;
end;
TYPE_MSG_OUTLOOK_BLOCK :
begin
Mutex_ := TTgMutex.Create('Global\OutlookBlk');
if Mutex_.MutexState <> msCreateOk then
begin
Close;
exit;
end;
sCmdParam_ := 'OutlookAddin';
lbTitle.Caption := RS_OutlookSecu;
// MsgList.Add(RS_OutlookBlockApp);
// MsgList.Add('');
MsgList.Add(CM_RS_MonMsg(RS_OutlookBlockAppMsg1));
MsgList.Add(RS_OutlookBlockAppMsg2);
end;
TYPE_MSG_OUTLOOK_ADDIN_OK :
begin
SetOneButtion;
lbTitle.Caption := RS_OutlookSecu;
MsgList.Add(CM_RS_MonMsg(RS_OutlookSecuMsg));
end;
TYPE_MSG_RELEASE_QUARANTINE_FILE :
begin
SetOneButtion;
lbTitle.Caption := RS_RELEASE_FILE_QUARANTINE;
MsgList.Add(RS_RELEASE_QUARANTINE);
MsgList.Add('');
MsgList.Add(O.S['D']);
end;
TYPE_MSG_MTP_WRITE_BLOCK :
begin
SetOneButtion;
SplitString(O.S['D'], '|', StrList, true);
if StrList.Count > 1 then
begin
MsgList.Add(RS_BLOCK_MTP_WRITE);
// MsgList.Add('');
// MsgList.Add('Path : ' + StrList[1]);
end;
end;
TYPE_CHANGE_MODE :
begin
SetOneButtion;
lbTitle.Caption := RS_ChangeMode;
MsgList.Add('');
MsgList.Add(O.S['D']);
end;
TYPE_MSG_MONITOR_FILEOPER :
begin
SetOneButtion;
O := SO(O.S['D']);
var sMsg: String;
// TEvtType = (etCreate, etCopy, etMove, etDelete, etRename);
case O.I['E'] of
0 : sMsg := RS_FileCreateMon;
1 : sMsg := RS_FileCopyMon;
2 : sMsg := RS_FileMoveMon;
3 : sMsg := RS_FileDeleteMon;
// 4 : sMsg := '파일 이름변경이 감지 되었습니다.';
else sMsg := RS_FileRenameMon;
end;
if O.B['N'] then
sMsg := RS_ShFolder + ' ' + sMsg;
MsgList.Add(sMsg);
MsgList.Add('');
MsgList.Add(' - File : ' + ExtractFileName(O.S['D']));
MsgList.Add(' - Path : ' + ExtractFilePath(O.S['D']));
end;
TYPE_MSG_PREVENT_FILEOPER :
begin
SetOneButtion;
O := SO(O.S['D']);
var sMsg: String;
// TEvtType = (etCreate, etCopy, etMove, etDelete, etRename);
case O.I['E'] of
0 : sMsg := RS_FileCreateBlk;
1 : sMsg := RS_FileCopyBlk;
2 : sMsg := RS_FileMoveBlk;
3 : sMsg := RS_FileDeleteBlk;
// 4 : sMsg := '파일 이름변경이 차단 되었습니다.';
else sMsg := RS_FileRenameBlk;
end;
if O.B['N'] then
sMsg := RS_ShFolder + ' ' + sMsg;
MsgList.Add(sMsg);
MsgList.Add('');
MsgList.Add(' - File : ' + ExtractFileName(O.S['D']));
MsgList.Add(' - Path : ' + ExtractFilePath(O.S['D']));
end;
TYPE_MSG_PREVENT_TETHERING :
begin
SetOneButtion;
MsgList.Add(CM_RS_BlockMsg(RS_BlockTethering));
MsgList.Add('');
SplitString(O.S['D'], '|', StrList, true);
if StrList.Count > 1 then
begin
MsgList.Add('Name : ' + StrList[0]);
MsgList.Add('IP : ' + StrList[1]);
end;
end;
TYPE_MSG_APP_SCREEN_RECORD :
begin
SetOneButtion;
MsgList.Add(RS_MsgAppScrRcd);
MsgList.Add('');
MsgList.Add(RS_DetectApp + O.S['D']);
end;
TYPE_REQ_APPROVAL :
begin
SetPrevent(false);
lbTitle.Caption := RS_ReqApproval;
case CUSTOMER_TYPE of
CUSTOMER_SHSC,
CUSTOMER_SHCI : lbOk.Caption := RS_Hold;
end;
SplitString(O.S['D'], '|', StrList, true);
if StrList.Count > 1 then
begin
sCmdParam_ := gMgSvc.DestIPort + StrList[1];
lbSet.Caption := RS_Confirm;
case StrToIntDef(StrList[0], -1) of
1, 12 : // 출력
begin
case CUSTOMER_TYPE of
CUSTOMER_SHSC,
CUSTOMER_SHCI :
begin
MsgList.Add(RS_MsgPrtApproval_SH);
MsgList.Add('');
end;
else begin
MsgList.Add(RS_PrtApproval);
MsgList.Add('');
MsgList.Add(RS_MsgPrtApproval);
end;
end;
end;
2 :
begin
MsgList.Add(RS_UsbExcept);
MsgList.Add('');
MsgList.Add(RS_MsgUsbExcept);
end;
3 :
begin
MsgList.Add(RS_UrlExcept);
MsgList.Add('');
MsgList.Add(RS_MsgUrlExcept);
end;
4 : // DRM 복호화
begin
MsgList.Add(RS_DecExcept);
MsgList.Add('');
MsgList.Add(RS_MsgDecExcept);
end;
5, 11 : // 파일 반출
begin
MsgList.Add(RS_FileExpExcept);
MsgList.Add('');
MsgList.Add(RS_MsgFileExpExcept);
end;
6 : // MTP
begin
MsgList.Add(RS_MtpExcept);
MsgList.Add('');
MsgList.Add(RS_MtpUrlExcept);
end;
7 : // Bluetooth
begin
MsgList.Add(RS_BtExcept);
MsgList.Add('');
MsgList.Add(RS_BtUrlExcept);
end;
8 : // CD/DVD
begin
MsgList.Add(RS_CdExcept);
MsgList.Add('');
MsgList.Add(RS_CdUrlExcept);
end;
9 : // 워터마크 1회 예외
begin
MsgList.Add(RS_PrtWaterExcept);
MsgList.Add('');
MsgList.Add(RS_MsgPrtWaterExcept);
end;
10 : // 캡처 APP
begin
MsgList.Add(RS_CapAppExcept);
MsgList.Add('');
MsgList.Add(RS_MsgCapAppExcept);
end;
end;
end;
case CUSTOMER_TYPE of
CUSTOMER_SHSC,
CUSTOMER_SHCI : MsgList.Add(RS_MsgConfirm_SH);
else MsgList.Add(RS_MsgConfirm);
end;
end;
TYPE_RES_APPROVAL :
begin
SetOneButtion;
lbTitle.Caption := RS_ApprovalResult;
SplitString(O.S['D'], '|', StrList, true);
if StrList.Count > 1 then
begin
var OInfo: ISuperObject := nil;
try
OInfo := SO(StrList[1]);
except
// error
end;
if OInfo = nil then
begin
Close;
exit;
end;
ZeroMemory(@LogInfo, SizeOf(LogInfo));
LogInfo.sCode := RESPONSE_APPROVAL;
LogInfo.sDevName := OInfo.S['deviceName'];
LogInfo.sDevSerial := OInfo.S['serial'];
LogInfo.sSummary := Format('Approval Response : [%s] ', [BooleanToStr(OInfo.S['result'] = 'true', 'Approved', 'Rejected')]);
var nRes: Integer := StrToIntDef(StrList[0], -1);
case nRes of
1, 12, 13 : // 1, 12 : 출력, 13 : 출력, 사후 결재 : 출력 요청 완료
begin
var pEnt: PPrtEnt := nil;
if (OInfo.S['result'] = 'true') or (nRes = 13) then
begin
// O.S['watermark']
pEnt := gMgSvc.MgPrt.GetPrintInfo(OInfo.S['taskId']);
if pEnt = nil then
begin
Close;
exit;
end;
LogInfo.sActionId := pEnt.WInfo.sPrtDocId;
LogInfo.sDevName := pEnt.WInfo.sPtrName;
LogInfo.sPath := pEnt.WInfo.sDocName;
pEnt.WInfo.bUseWM := OInfo.S['watermark'] = 'true';
if pEnt.dtAprv = 0 then
begin
pEnt.dtAprv := Now;
gMgSvc.MgPrt.Save;
end;
// todo : 재출력 확인 후 메시지 변경?
// OInfo.S['printCnt'] > 1
gMgSvc.DoPrint(pEnt);
if nRes = 13 then
begin
lbTitle.Caption := RS_PrtApproval;
MsgList.Add(RS_MsgPrtApproval);
end else
MsgList.Add(RS_PrintPass);
end else begin
pEnt := gMgSvc.MgPrt.GetPrintInfo(OInfo.S['taskId']);
if pEnt <> nil then
begin
LogInfo.sDevName := pEnt.WInfo.sPtrName;
LogInfo.sPath := pEnt.WInfo.sDocName;
gMgSvc.MgPrt.DelPrintInfo(pEnt.sId, true);
end;
MsgList.Add(RS_PrintReqReject);
end;
SumString(LogInfo.sSummary, 'Print');
end;
2 : // USB
begin
// MsgList.Add(RS_UsbExcept);
// MsgList.Add('');
if OInfo.S['result'] = 'true' then
begin
MsgList.Add(RS_UsbReqPass);
MsgList.Add('');
MsgList.Add(OInfo.S['deviceName']);
sTemp := OInfo.S['serial'];
if sTemp <> '' then // 승인받은 날이 예외 시작일이 아니면 빈값으로 온다 25_0226 13:27:50 kku
begin
gMgSvc.PrefModel.IgrUsbSerials := gMgSvc.PrefModel.IgrUsbSerials + ';' + sTemp;
gMgSvc.PrefModel.IgrUsbSerialList.Add(sTemp);
gMgSvc.SleepPolicy.IgrUsbSerials := gMgSvc.SleepPolicy.IgrUsbSerials + ';' + sTemp;
gMgSvc.SleepPolicy.IgrUsbSerialList.Add(sTemp);
if gMgSvc.VulPolicy.Loaded then
begin
gMgSvc.VulPolicy.IgrUsbSerials := gMgSvc.VulPolicy.IgrUsbSerials + ';' + sTemp;
gMgSvc.VulPolicy.IgrUsbSerialList.Add(sTemp);
end;
if gMgSvc.OffPolicy.Loaded then
begin
gMgSvc.OffPolicy.IgrUsbSerials := gMgSvc.OffPolicy.IgrUsbSerials + ';' + sTemp;
gMgSvc.OffPolicy.IgrUsbSerialList.Add(sTemp);
end;
if gMgSvc.ExpPolicy.Loaded then
begin
gMgSvc.ExpPolicy.IgrUsbSerials := gMgSvc.ExpPolicy.IgrUsbSerials + ';' + sTemp;
gMgSvc.ExpPolicy.IgrUsbSerialList.Add(sTemp);
end;
end;
end else begin
MsgList.Add(RS_UsbReqReject);
MsgList.Add('');
MsgList.Add(OInfo.S['deviceName']);
end;
SumString(LogInfo.sSummary, 'USB');
end;
3 : // 브라우저 접근 차단
begin
// MsgList.Add(RS_UrlExcept);
// MsgList.Add('');
if OInfo.S['result'] = 'true' then
begin
MsgList.Add(RS_UrlReqPass);
MsgList.Add('');
MsgList.Add(OInfo.S['domain']);
sTemp := OInfo.S['domain'];
if sTemp <> '' then // 승인받은 날이 예외 시작일이 아니면 빈값으로 온다 25_0226 13:27:50 kku
begin
gMgSvc.PrefModel.UrlBlockExcpList := gMgSvc.PrefModel.UrlBlockExcpList + '|' + sTemp;
gMgSvc.SleepPolicy.UrlBlockExcpList := gMgSvc.SleepPolicy.UrlBlockExcpList + '|' + sTemp;
if gMgSvc.VulPolicy.Loaded then
gMgSvc.VulPolicy.UrlBlockExcpList := gMgSvc.VulPolicy.UrlBlockExcpList + '|' + sTemp;
if gMgSvc.OffPolicy.Loaded then
gMgSvc.OffPolicy.UrlBlockExcpList := gMgSvc.OffPolicy.UrlBlockExcpList + '|' + sTemp;
if gMgSvc.ExpPolicy.Loaded then
gMgSvc.ExpPolicy.UrlBlockExcpList := gMgSvc.ExpPolicy.UrlBlockExcpList + '|' + sTemp;
end;
end else begin
MsgList.Add(RS_UrlReqReject);
MsgList.Add('');
MsgList.Add(OInfo.S['domain']);
end;
LogInfo.sDevSerial := '';
LogInfo.sDestIpUrl := OInfo.S['domain'];
SumString(LogInfo.sSummary, 'URL');
end;
4 : // DRM 복호화
begin
var OFiles: ISuperObject := OInfo.O['fileInfo'];
var i: Integer;
var sPath: String;
if OInfo.S['result'] = 'true' then
begin
MsgList.Add(RS_DrmReqPass);
MsgList.Add('');
if (OFiles.DataType = stArray) and (OFiles.AsArray.Length > 0) then
begin
if CUSTOMER_TYPE = CUSTOMER_BLUECORNER then
begin
for i := 0 to OFiles.AsArray.Length - 1 do
begin
sPath := OFiles.AsArray.O[i].S['filePath'];
if FileExists(sPath) and (OFiles.AsArray.O[i].S['hash'] = GetFileToSha1Str(sPath)) then
begin
if gMgSvc.ThdReact <> nil then
gMgSvc.ThdReact.AddEncIgr(sPath);
end;
end;
var sHlpExe: String := GetRunExePathDir + DIR_CONF + EXE_HLP;
if FileExists(sHlpExe) then
begin
var OA: ISuperObject := O.O['Files'];
O := SO;
O.I['Cmd'] := HPCMD_REQ_DECRYPT;
O.S['WinCap'] := APP_TITLE;
O.I['RcvWnd'] := Handle;
O.I['CT'] := CUSTOMER_TYPE;
O.S['UName'] := gMgSvc.UName;
O.S['Dept'] := gMgSvc.DeptName;
O.B['AVAL'] := IsApproveSupport and gMgSvc.UseApproval and gMgSvc.ModePolicy.DrmApproval;
if O.S['Dept'] = '' then
O.S['Dept'] := PO.DeptName;
O.S['EN'] := gMgSvc.EmpNo;
O.S['PON'] := PO.PolicyName;
O.O['DecFiles'] := OFiles;
SaveJsonObjToFile(O, GetRunExePathDir + DIR_CONF + DAT_PARAM);
{$IFDEF DEBUG}
ExecutePath(sHlpExe);
{$ELSE}
ExecuteAppAsUser('explorer.exe', sHlpExe, '', SW_SHOWNORMAL);
{$ENDIF}
// DeleteFile(sParam);
end;
end else begin
var DecList: TStringList;
Guard(DecList, TStringList.Create);
for i := 0 to OFiles.AsArray.Length - 1 do
begin
sPath := OFiles.AsArray.O[i].S['filePath'];
if FileExists(sPath) and (OFiles.AsArray.O[i].S['hash'] = GetFileToSha1Str(sPath)) then
begin
if gMgSvc.ThdReact <> nil then
gMgSvc.ThdReact.AddEncIgr(sPath);
DecList.Add(sPath);
MsgList.Add(ExtractFileName(sPath));
end;
end;
if DecList.Count > 0 then
begin
var dlg: TDlgDecryptDrm := TDlgDecryptDrm.Create(nil);
var n1, n2, n3: Integer;
dlg.AddFiles(DecList);
dlg.DoDecFiles(n1, n2, n3);
dlg.SetReadOnly;
dlg.Show;
end;
end;
end;
end else begin
MsgList.Add(RS_DrmReqReject);
MsgList.Add('');
if (OFiles.DataType = stArray) and (OFiles.AsArray.Length > 0) then
begin
for i := 0 to OFiles.AsArray.Length - 1 do
MsgList.Add(ExtractFileName(OFiles.AsArray.O[i].S['filePath']));
end;
end;
if OFiles.AsArray.Length > 0 then
begin
SumString(LogInfo.sSummary, Format('File Decrypt (%d)', [OFiles.AsArray.Length]));
if OFiles.AsArray.Length = 1 then
LogInfo.sPath := OFiles.AsArray.O[0].S['filePath'];
end else
SumString(LogInfo.sSummary, 'File Decrypt');
end;
5, 11 : // 파일 반출
begin
var OFiles: ISuperObject := OInfo.O['fileInfo'];
var i: Integer;
var sPath: String;
if OInfo.S['result'] = 'true' then
begin
MsgList.Add(RS_FileExpReqPass);
MsgList.Add('');
if (OFiles.DataType = stArray) and (OFiles.AsArray.Length > 0) then
begin
for i := 0 to OFiles.AsArray.Length - 1 do
begin
sPath := OFiles.AsArray.O[i].S['filePath'];
if FileExists(sPath) or (ExtractFilePath(sPath) = '') then // 아웃룩은 파일 이름만 있다. 25_1112 14:49:42 kku
begin
gMgSvc.AddFileExpEnt(sPath, OFiles.AsArray.O[i].S['hash']);
MsgList.Add(ExtractFileName(sPath));
end;
end;
end;
end else begin
MsgList.Add(RS_FileExpReqReject);
MsgList.Add('');
if (OFiles.DataType = stArray) and (OFiles.AsArray.Length > 0) then
begin
for i := 0 to OFiles.AsArray.Length - 1 do
MsgList.Add(ExtractFileName(OFiles.AsArray.O[i].S['filePath']));
end;
end;
if OFiles.AsArray.Length > 0 then
begin
SumString(LogInfo.sSummary, Format('File Export (%d)', [OFiles.AsArray.Length]));
if OFiles.AsArray.Length = 1 then
LogInfo.sPath := OFiles.AsArray.O[0].S['filePath'];
end else
SumString(LogInfo.sSummary, 'File Export');
end;
6 : // MTP
begin
// MsgList.Add(RS_MtpExcept);
// MsgList.Add('');
if OInfo.S['result'] = 'true' then
begin
MsgList.Add(RS_MtpReqPass);
MsgList.Add('');
MsgList.Add(OInfo.S['deviceName']);
sTemp := OInfo.S['serial'];
if sTemp <> '' then // 승인받은 날이 예외 시작일이 아니면 빈값으로 온다 25_0226 13:27:50 kku
begin
gMgSvc.PrefModel.MtpExcept := gMgSvc.PrefModel.MtpExcept + ';' + sTemp;
gMgSvc.SleepPolicy.MtpExcept := gMgSvc.SleepPolicy.MtpExcept + ';' + sTemp;
if gMgSvc.VulPolicy.Loaded then
gMgSvc.VulPolicy.MtpExcept := gMgSvc.VulPolicy.MtpExcept + ';' + sTemp;
if gMgSvc.OffPolicy.Loaded then
gMgSvc.OffPolicy.MtpExcept := gMgSvc.OffPolicy.MtpExcept + ';' + sTemp;
if gMgSvc.ExpPolicy.Loaded then
gMgSvc.ExpPolicy.MtpExcept := gMgSvc.ExpPolicy.MtpExcept + ';' + sTemp;
end;
end else begin
MsgList.Add(RS_MtpReqReject);
MsgList.Add('');
MsgList.Add(OInfo.S['deviceName']);
end;
SumString(LogInfo.sSummary, 'MTP');
end;
7 : // 블루투스
begin
// MsgList.Add(RS_BtExcept);
// MsgList.Add('');
if OInfo.S['result'] = 'true' then
begin
MsgList.Add(RS_BtReqPass);
MsgList.Add('');
MsgList.Add(OInfo.S['deviceName']);
sTemp := OInfo.S['serial'];
if sTemp <> '' then // 승인받은 날이 예외 시작일이 아니면 빈값으로 온다 25_0226 13:27:50 kku
begin
gMgSvc.PrefModel.BlueExcept := gMgSvc.PrefModel.BlueExcept + ';' + sTemp;
gMgSvc.SleepPolicy.BlueExcept := gMgSvc.SleepPolicy.BlueExcept + ';' + sTemp;
if gMgSvc.VulPolicy.Loaded then
gMgSvc.VulPolicy.BlueExcept := gMgSvc.VulPolicy.BlueExcept + ';' + sTemp;
if gMgSvc.OffPolicy.Loaded then
gMgSvc.OffPolicy.BlueExcept := gMgSvc.OffPolicy.BlueExcept + ';' + sTemp;
if gMgSvc.ExpPolicy.Loaded then
gMgSvc.ExpPolicy.BlueExcept := gMgSvc.ExpPolicy.BlueExcept + ';' + sTemp;
end;
end else begin
MsgList.Add(RS_BtReqReject);
MsgList.Add('');
MsgList.Add(OInfo.S['deviceName']);
end;
SumString(LogInfo.sSummary, 'Bluetooth');
end;
8 : // CD/DVD
begin
// MsgList.Add(RS_CdExcept);
// MsgList.Add('');
if OInfo.S['result'] = 'true' then
begin
MsgList.Add(RS_CdReqPass);
MsgList.Add('');
MsgList.Add(OInfo.S['deviceName']);
sTemp := OInfo.S['serial'];
if sTemp <> '' then // 승인받은 날이 예외 시작일이 아니면 빈값으로 온다 25_0226 13:27:50 kku
begin
gMgSvc.PrefModel.CdromExcept := gMgSvc.PrefModel.CdromExcept + ';' + sTemp;
gMgSvc.SleepPolicy.CdromExcept := gMgSvc.SleepPolicy.CdromExcept + ';' + sTemp;
if gMgSvc.VulPolicy.Loaded then
gMgSvc.VulPolicy.CdromExcept := gMgSvc.VulPolicy.CdromExcept + ';' + sTemp;
if gMgSvc.OffPolicy.Loaded then
gMgSvc.OffPolicy.CdromExcept := gMgSvc.OffPolicy.CdromExcept + ';' + sTemp;
if gMgSvc.ExpPolicy.Loaded then
gMgSvc.ExpPolicy.CdromExcept := gMgSvc.ExpPolicy.CdromExcept + ';' + sTemp;
end;
end else begin
MsgList.Add(RS_CdReqReject);
MsgList.Add('');
MsgList.Add(OInfo.S['deviceName']);
end;
SumString(LogInfo.sSummary, 'CD/DVD');
end;
9 : // 프린트 워터마크 1회 예외
begin
if OInfo.S['result'] = 'true' then
begin
MsgList.Add(RS_PrtWaterReqPass);
gMgSvc.IsPrtWaterExcept := true;
end else
MsgList.Add(RS_PrtWaterReject);
SumString(LogInfo.sSummary, 'Print watermark exception');
end;
10 : // 캡처 APP
begin
if OInfo.S['result'] = 'true' then
begin
MsgList.Add(RS_CapAppReqPass);
gMgSvc.IsPrtWaterExcept := true;
end else
MsgList.Add(RS_CapAppReject);
SumString(LogInfo.sSummary, 'Capture APP exception');
end;
end;
gMgSvc.SendEventLogEx(@LogInfo, false);
if OInfo.S['endDt'] <> '' then
begin
MsgList.Add('');
MsgList.Add(RS_AllowDateTime + OInfo.S['endDt']);
end;
if OInfo.S['reason'] <> '' then
begin
MsgList.Add('');
MsgList.Add(RS_ApprovalReason + ':');
MsgList.Add(OInfo.S['reason']);
end;
end;
end;
end;
{$IFDEF _HE_}
if PO.NotifyType = nftACenter then
begin
_nNotiCnt := 0; // 알림센터에서 일반 팝업 으로 넘어갈때를 위함, 일단 여기에 넣음..22_0825 09:02:09 kku
var sTitle: String := RS_SecuViol;
case O.I['T'] of
TYPE_MSG_SAFEAPPLIED : sTitle := RS_Info;
TYPE_MSG_OLD_WINDOWS,
TYPE_MSG_VUL_OS,
TYPE_MSG_VUL_PW,
TYPE_MSG_VUL_AV,
TYPE_MSG_VUL_FW,
TYPE_MSG_VUL_SCREEN,
TYPE_MSG_VUL_ALLOWACCESS,
TYPE_MSG_VUL_EMPNO : sTitle := RS_Vul;
// TYPE_MSG_NOTIFICATION,
TYPE_MSG_UPDATE,
TYPE_MSG_AFTERREPORT :
begin
sTitle := RS_Info;
end;
TYPE_MSG_NOTIFICATION : sTitle := RS_Noti;
end;
sNotiCenterMsg_ := sTitle + ':' + MsgList.Text;
end else
{$ENDIF}
begin
mmMsg.Text := MsgList.Text;
if CUSTOMER_TYPE = CUSTOMER_HDENG then
begin
mmMsg.Lines.Add('');
mmMsg.Lines.Add(RS_HecHelp);
end;
// if ((NotiType = nftNormal) and (mmMsg.Lines.Count > 9)) or
// ((NotiType = nftMin) and (mmMsg.Lines.Count > 5)) then
if mmMsg.Lines.Count > 5 then
mmMsg.ScrollBars := TScrollStyle.ssVertical;
{$IFNDEF _HE_}
Show;
{$ENDIF}
end;
except
on E: Exception do
ETgException.TraceException(Self, E, 'Fail .. PopupMessage()');
end;
end;
procedure TDlgNotice.FormClose(Sender: TObject; var Action: TCloseAction);
begin
try
if _nNotiCnt > 0 then
Dec(_nNotiCnt);
Action := caFree;
except
on E: Exception do
ETgException.TraceException(Self, E, 'Fail .. FormClose()');
end;
end;
procedure TDlgNotice.FormKeyPress(Sender: TObject; var Key: Char);
begin
if Key = #27 then
begin
try
Close;
except
on E: Exception do
ETgException.TraceException(Self, E, 'Fail .. FormKeyPress()');
end;
end;
end;
procedure TDlgNotice.FormMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
ReleaseCapture;
SendMessage(Handle, WM_NCLBUTTONDOWN, HTCAPTION, 0);
end;
procedure TDlgNotice.FormShow(Sender: TObject);
begin
FormStyle := fsNormal;
end;
procedure TDlgNotice.imgOkClick(Sender: TObject);
begin
try
Close;
except
on E: Exception do
ETgException.TraceException(Self, E, 'Fail .. imgOkClick()');
end;
end;
procedure TDlgNotice.imgOkMouseEnter(Sender: TObject);
var
img: TImage;
begin
if Sender = nil then
exit;
if Sender is TImage then
img := TImage(Sender)
else if Sender = lbOk then
img := imgOk
else
img := imgSet;
SetImgBtn(img, img.Tag + 1);
end;
procedure TDlgNotice.imgOkMouseLeave(Sender: TObject);
var
img: TImage;
begin
if Sender = nil then
exit;
if Sender is TImage then
img := TImage(Sender)
else if Sender = lbOk then
img := imgOk
else
img := imgSet;
SetImgBtn(img, img.Tag);
end;
procedure TDlgNotice.imgSetClick(Sender: TObject);
var
sHlpExe, sUrl: String;
LogInfo: TLogInfo;
bSendBin: Boolean;
begin
sUrl := '';
sHlpExe := GetRunExePathDir + DIR_CONF + EXE_HLP;
{$IFDEF _HE_}
if sCmdParam_ <> '' then
begin
if sCmdParam_ = 'ChangeEmpNo' then
begin
if gMain <> nil then
begin
gMain.imgChangeEmpNoClick(nil);
end;
end else
if sCmdParam_ = 'RegDevExcept' then
begin
if (IsApproveSupport and gMgSvc.UseApproval and gMgSvc.ModePolicy.UsbApproval and (ReqDevExceptInfo_.ReqDevType = rdtUsbDrive)) or
(IsApproveSupport and gMgSvc.UseApproval and gMgSvc.ModePolicy.CdApproval and (ReqDevExceptInfo_.ReqDevType = rdtCdrom)) or
(IsApproveSupport and gMgSvc.UseApproval and gMgSvc.ModePolicy.MtpApproval and (ReqDevExceptInfo_.ReqDevType = rdtMtp)) or
(IsApproveSupport and gMgSvc.UseApproval and gMgSvc.ModePolicy.BtApproval and (ReqDevExceptInfo_.ReqDevType = rdtBluetooth)) or
(IsApproveSupport and gMgSvc.UseApproval and gMgSvc.ModePolicy.ExFApproval and (ReqDevExceptInfo_.ReqDevType = rdtExpFile)) then
begin
var nType: Integer := -1;
ZeroMemory(@LogInfo, SizeOf(LogInfo));
LogInfo.sCode := REQUEST_APPROVAL;
LogInfo.sDevName := ReqDevExceptInfo_.sDevName;
LogInfo.sDevSerial := ReqDevExceptInfo_.sSerial;
case ReqDevExceptInfo_.ReqDevType of
rdtUsbDrive :
begin
nType := 1;
LogInfo.sSummary := 'Approval Request : USB';
end;
rdtExpFile :
begin
nType := 4;
LogInfo.sDevSerial := '';
var O: ISuperObject := nil;
try
O := SO(ReqDevExceptInfo_.sSerial);
except
end;
if (O <> nil) and (O.DataType = stArray) then
begin
LogInfo.sSummary := Format('Approval Request : File Export (%d)', [O.AsArray.Length]);
if O.AsArray.Length = 1 then
LogInfo.sPath := O.AsArray[0].S['filePath'];
sUrl := gMgSvc.SendApproval(nType, @ReqDevExceptInfo_, O.AsArray.Length);
var ORst: ISuperObject := nil;
if (sUrl <> '') and (sUrl[1] = '{') then
begin
// 구 버전 서버 대비 25_1118 10:57:33 kku
ORst := SO(sUrl);
sUrl := ORst.S['url'];
end;
if ORst <> nil then
begin
var i: Integer;
var sTemp: String := O.AsArray.O[i].S['filePath'];;
var sUpUrl: String := '';
for i := 0 to O.AsArray.Length - 1 do
begin
bSendBin := false;
sUpUrl := ORst.S['binFileUploadUrl' + IntToStr(i + 1)];
if sUpUrl = '' then
begin
sUpUrl := ORst.S['fileUploadUrl' + IntToStr(i + 1)];
if sUpUrl = '' then
break;
end else begin
sUpUrl := sUpUrl + '&fileName=' + UrlEncodeUTF8(ExtractFileName(sTemp));
bSendBin := true;
end;
if sUpUrl <> '' then
begin
if sUpUrl[1] = '/' then
Delete(sUpUrl, 1, 1);
if O.AsArray.O[i].S['OD'] <> '' then // 아웃룩 파일
gMgSvc.SendFileNor(bSendBin, 'file', sUpUrl, O.AsArray.O[i].S['OD'] + sTemp, gMgSvc.ModePolicy.AppABMinMB, gMgSvc.ModePolicy.AppABLimitMB, crtDelete)
else
gMgSvc.SendFileNor(bSendBin, 'file', sUpUrl, sTemp, gMgSvc.ModePolicy.AppABMinMB, gMgSvc.ModePolicy.AppABLimitMB);
TTgTrace.T('[차단] 반출 요청 파일 업로드 .. URL=%s', [sUpUrl], 2);
// TTgTrace.T('반출 요청 파일 업로드 .. %s, %d : %s', [BooleanToStr(bResult, 'OK', 'Fail'), i + 1, sTemp], 2);
TTgTrace.T('[차단] 반출 요청 파일 업로드 .. %d : %s', [i + 1, sTemp], 2);
end else
TTgTrace.T('[차단] 반출 요청 업로드를 위한 URL 가져오기 실패..', 2);
end;
end;
end else
LogInfo.sSummary := 'Approval Request : File Export';
end;
rdtMtp :
begin
nType := 5;
LogInfo.sSummary := 'Approval Request : MTP';
end;
rdtBluetooth :
begin
nType := 6;
LogInfo.sSummary := 'Approval Request : Bluetooth';
end;
rdtCdrom :
begin
nType := 7;
LogInfo.sSummary := 'Approval Request : CD/DVD';
end;
end;
if sUrl = '' then
sUrl := gMgSvc.SendApproval(nType, @ReqDevExceptInfo_);
if sUrl = '' then
begin
TTgTrace.T('Fail .. SendApproval(1)');
MessageBox(Handle, PChar(RS_NoApprovalInfo), PChar(APP_TITLE), MB_ICONWARNING or MB_OK);
end else begin
gMgSvc.SendEventLogEx(@LogInfo, false);
// ExecutePath(gMgSvc.DestIPort + sUrl);
if FileExists(sHlpExe) then
begin
var O: ISuperObject := SO;
O.I['RcvWnd'] := Handle;
O.I['Cmd'] := HPCMD_EXECUTE_FILE;
O.S['Path'] := gMgSvc.DestIPort + sUrl;
SaveJsonObjToFile(O, GetRunExePathDir + DIR_CONF + DAT_PARAM);
{$IFDEF DEBUG}
ExecutePath(sHlpExe);
{$ELSE}
ExecuteAppAsUser('explorer.exe', sHlpExe, '', SW_SHOWNORMAL);
{$ENDIF}
end else
ExecutePath(gMgSvc.DestIPort + sUrl);
end;
end else
if Pos('412', FreeLocalizer.LanguageFile) = 0 then
begin
TDlgReqDevExcept.Create(nil, ReqDevExceptInfo_).Show;
end else begin
if FileExists(sHlpExe) then
begin
var O: ISuperObject := SO;
O.I['RcvWnd'] := gMgSvc.RcvHwnd;
O.I['Cmd'] := HPCMD_REQ_DEVICE_EXCEPT;
O.S['WinCap'] := APP_TITLE;
O.O['ReqInfo'] := TTgJson.ValueToJsonObject<TReqDevExceptInfo>(ReqDevExceptInfo_);
O.I['CT'] := CUSTOMER_TYPE;
SaveJsonObjToFile(O, GetRunExePathDir + DIR_CONF + DAT_PARAM);
{$IFDEF DEBUG}
ExecutePath(sHlpExe);
{$ELSE}
ExecuteAppAsUser('explorer.exe', sHlpExe, '', SW_SHOWNORMAL);
{$ENDIF}
end;
end;
end else
if (sCmdParam_ = 'RegUrlExcept') and IsApproveSupport and gMgSvc.UseApproval and gMgSvc.ModePolicy.WebUrlApproval then
begin
sUrl := gMgSvc.SendApproval(2, @ReqDevExceptInfo_.sSerial[1]);
if sUrl = '' then
begin
TTgTrace.T('Fail .. SendApproval(2)');
MessageBox(Handle, PChar(RS_NoApprovalInfo), PChar(APP_TITLE), MB_ICONWARNING or MB_OK);
end else begin
LogInfo.sCode := REQUEST_APPROVAL;
LogInfo.sDestIpUrl := ReqDevExceptInfo_.sSerial;
LogInfo.sSummary := 'Approval Request : URL';
gMgSvc.SendEventLogEx(@LogInfo, false);
if FileExists(sHlpExe) then
begin
var O: ISuperObject := SO;
O.I['RcvWnd'] := Handle;
O.I['Cmd'] := HPCMD_EXECUTE_FILE;
O.S['Path'] := gMgSvc.DestIPort + sUrl;
SaveJsonObjToFile(O, GetRunExePathDir + DIR_CONF + DAT_PARAM);
{$IFDEF DEBUG}
ExecutePath(sHlpExe);
{$ELSE}
ExecuteAppAsUser('explorer.exe', sHlpExe, '', SW_SHOWNORMAL);
{$ENDIF}
end else
ExecutePath(gMgSvc.DestIPort + sUrl);
end;
end else
if sCmdParam_ = 'CapAppExcept' then
begin
sUrl := gMgSvc.SendApproval(12, @ReqDevExceptInfo_);
if sUrl = '' then
begin
TTgTrace.T('Fail .. SendApproval(2)');
MessageBox(Handle, PChar(RS_NoApprovalInfo), PChar(APP_TITLE), MB_ICONWARNING or MB_OK);
end else begin
LogInfo.sCode := REQUEST_APPROVAL;
LogInfo.sAppName := ReqDevExceptInfo_.sSerial;
LogInfo.sSummary := 'Approval Request : Capture APP';
gMgSvc.SendEventLogEx(@LogInfo, false);
if FileExists(sHlpExe) then
begin
var O: ISuperObject := SO;
O.I['RcvWnd'] := Handle;
O.I['Cmd'] := HPCMD_EXECUTE_FILE;
O.S['Path'] := gMgSvc.DestIPort + sUrl;
SaveJsonObjToFile(O, GetRunExePathDir + DIR_CONF + DAT_PARAM);
{$IFDEF DEBUG}
ExecutePath(sHlpExe);
{$ELSE}
ExecuteAppAsUser('explorer.exe', sHlpExe, '', SW_SHOWNORMAL);
{$ENDIF}
end else
ExecutePath(gMgSvc.DestIPort + sUrl);
end;
end else
if sCmdParam_ = 'CttSch' then
begin
gMain.lbCttSchRstClick(nil);
// TDlgViewCustomCttSchResult.Create(nil).Show;
end else
if sCmdParam_ = 'PersonalInfo' then
begin
sUrl := gMgSvc.GetRegPerInfoUrl;
if sUrl = '' then
begin
TTgTrace.T('Fail .. GetRegPerInfoUrl(2)');
MessageBox(Handle, PChar(RS_NoRegPerInfoUrl), PChar(APP_TITLE), MB_ICONWARNING or MB_OK);
end else begin
ZeroMemory(@LogInfo, SizeOf(LogInfo));
LogInfo.sCode := REQUEST_REG_PERINFO;
LogInfo.sSummary := 'HR Information Registration';
gMgSvc.SendEventLogEx(@LogInfo, false);
if FileExists(sHlpExe) then
begin
var O: ISuperObject := SO;
O.I['RcvWnd'] := Handle;
O.I['Cmd'] := HPCMD_EXECUTE_FILE;
O.S['Path'] := gMgSvc.DestIPort + sUrl;
SaveJsonObjToFile(O, GetRunExePathDir + DIR_CONF + DAT_PARAM);
{$IFDEF DEBUG}
ExecutePath(sHlpExe);
{$ELSE}
ExecuteAppAsUser('explorer.exe', sHlpExe, '', SW_SHOWNORMAL);
{$ENDIF}
end else
ExecutePath(gMgSvc.DestIPort + sUrl);
end;
end else
if sCmdParam_ = 'OutlookAddin' then
begin
if FileExists(sHlpExe) then
begin
var O: ISuperObject := SO;
O.I['RcvWnd'] := gMain.Handle;
O.B['RunAs'] := true;
O.I['Cmd'] := HPCMD_INSTALL_OUTLOOK_ADDIN;
O.S['MdDir'] := GetRunExePathDir + DIR_CONF;
SaveJsonObjToFile(O, GetRunExePathDir + DIR_CONF + DAT_PARAM);
{$IFDEF DEBUG}
ExecutePath(sHlpExe);
{$ELSE}
ExecuteAppAsUser('explorer.exe', sHlpExe, '', SW_SHOWNORMAL);
{$ENDIF}
end;
end else
if sCmdParam_.StartsWith('http') then
begin
if FileExists(sHlpExe) then
begin
var O: ISuperObject := SO;
O.I['RcvWnd'] := Handle;
O.I['Cmd'] := HPCMD_EXECUTE_FILE;
O.S['Path'] := sCmdParam_;
SaveJsonObjToFile(O, GetRunExePathDir + DIR_CONF + DAT_PARAM);
{$IFDEF DEBUG}
ExecutePath(sHlpExe);
{$ELSE}
ExecuteAppAsUser('explorer.exe', sHlpExe, '', SW_SHOWNORMAL);
{$ENDIF}
end else
ExecutePath(sCmdParam_);
end else
if sCmdParam_.StartsWith('/c') then
begin
if FileExists(sHlpExe) then
begin
var O: ISuperObject := SO;
O.I['RcvWnd'] := Handle;
O.I['Cmd'] := HPCMD_EXECUTE_FILE;
O.S['Path'] := 'cmd.exe';
O.S['Param'] := sCmdParam_;
O.B['Hide'] := true;
SaveJsonObjToFile(O, GetRunExePathDir + DIR_CONF + DAT_PARAM);
{$IFDEF DEBUG}
ExecutePath(sHlpExe);
{$ELSE}
ExecuteAppAsUser('explorer.exe', sHlpExe, '', SW_SHOWNORMAL);
{$ENDIF}
end else
ExecutePath_hide('cmd.exe', sCmdParam_)
end;
end;
{$ENDIF}
Close;
end;
procedure TDlgNotice.imgTopMouseDown(Sender: TObject; Button: TMouseButton;
Shift: TShiftState; X, Y: Integer);
begin
ReleaseCapture;
SendMessage(Handle, WM_NCLBUTTONDOWN, HTCAPTION, 0);
end;
procedure TDlgNotice.lbPiCntClick(Sender: TObject);
begin
{$IFDEF _HE_}
gMain.lbCttSchRstClick(nil);
{$ENDIF}
end;
procedure TDlgNotice.lbPiCntMouseEnter(Sender: TObject);
begin
lbPiCnt.Font.Style := lbPiCnt.Font.Style + [fsUnderline];
lbPiCnt.Font.Color := clBlue;
end;
procedure TDlgNotice.lbPiCntMouseLeave(Sender: TObject);
begin
lbPiCnt.Font.Style := lbPiCnt.Font.Style - [fsUnderline];
lbPiCnt.Font.Color := clBlack;
end;
procedure TDlgNotice.SetImgBtn(imgBtn: TImage; nImgIdx: Integer);
begin
try
if imgBtnList.Count <= nImgIdx then
exit;
imgBtnList.GetIcon(nImgIdx, imgBtn.Picture.Icon);
imgBtn.Repaint;
case nImgIdx of
2, 3 :
begin
lbSet.Font.Color := clGreen;
if lbSet.Caption <> RS_Confirm then // 음.. 깔끔하진 않지만 일단 이렇게 처리 25_0218 11:29:22 kku
lbSet.Caption := RS_SetVul;
end;
4, 5 :
begin
lbSet.Font.Color := clPurple;
lbSet.Caption := CM_RS_DevExcept;
end;
end;
except
on E: Exception do
ETgException.TraceException(Self, E, 'Fail .. SetImgBtn()');
end;
end;
procedure TDlgNotice.SetOneButtion;
begin
imgSet.Visible := false;
lbSet.Visible := imgSet.Visible;
imgOk.Left := (Width div 2) - (imgOk.Width div 2);
lbOk.Left := imgOk.Left;
end;
procedure TDlgNotice.SetPiResult4HEC(nRstCnt: Integer);
begin
// lbTitle.Visible := false;
if lbTitle.Top = 193 then
begin
// Label1.Left := Label1.Left + 25;
Label2.Left := Label2.Left + 25;
lbGrade.Left := lbGrade.Left + 25;
lbPiCnt.Left := lbPiCnt.Left + 25;
Label5.Left := Label5.Left + 25;
end;
lbPiCnt.Caption := Format('(%d)', [nRstCnt]);
// if nRstCnt < gMgSvc.PrefModel.PersonalInfoFileMax then
{$IFDEF _HE_}
if (gMgSvc.ProcCampn <> nil) and (gMgSvc.ProcCampn.Info.nNotiWarIfCnt > nRstCnt) then
begin
lbGrade.Caption := '''양호''';
lbGrade.Font.Color := clBlue;
end;
{$ENDIF}
cpMain.ActiveCard := cdPI;
end;
procedure TDlgNotice.tCloseTimer(Sender: TObject);
begin
tClose.Enabled := false;
btnClose.Click;
end;
procedure TDlgNotice.tInitTimer(Sender: TObject);
begin
tInit.Enabled := false;
SetImgBtn(imgOk, imgOk.Tag);
SetImgBtn(imgSet, imgSet.Tag);
Application.ProcessMessages;
end;
procedure TDlgNotice.btnCloseClick(Sender: TObject);
begin
Close;
end;
end.