3050 lines
103 KiB
Plaintext
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.
|