216 lines
6.0 KiB
Plaintext
216 lines
6.0 KiB
Plaintext
unit DataFlowSettingForm;
|
|
|
|
interface
|
|
|
|
uses
|
|
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
|
|
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ComCtrls, Vcl.StdCtrls, Vcl.ExtCtrls,
|
|
Bs1PolicyUnit;
|
|
|
|
type
|
|
TDataFlowSettingForm = class(TForm)
|
|
PanelBottom: TPanel;
|
|
btnSave: TButton;
|
|
btnClose: TButton;
|
|
PageControlMain: TPageControl;
|
|
|
|
// [탭 1] 예외 경로
|
|
tsException: TTabSheet;
|
|
PanelExTop: TPanel;
|
|
LabelEx: TLabel;
|
|
EditExPath: TEdit;
|
|
btnAddEx: TButton;
|
|
btnDelEx: TButton;
|
|
ListBoxExceptions: TListBox;
|
|
|
|
// [탭 2] MTP/BT 제어
|
|
tsDevice: TTabSheet;
|
|
GroupBoxMtp: TGroupBox;
|
|
LabelM1: TLabel; LabelM2: TLabel;
|
|
cbMtpPolicy: TComboBox;
|
|
edtMtpSize: TEdit;
|
|
|
|
GroupBoxBt: TGroupBox;
|
|
LabelB1: TLabel; LabelB2: TLabel;
|
|
cbBtPolicy: TComboBox;
|
|
edtBtSize: TEdit;
|
|
grpCDROM: TGroupBox;
|
|
grbUsbToUsb: TGroupBox;
|
|
lbl1: TLabel;
|
|
lbl2: TLabel;
|
|
cbbCDROMPolicy: TComboBox;
|
|
lbl3: TLabel;
|
|
lbl4: TLabel;
|
|
cbbUsbToUsbPolicy: TComboBox;
|
|
edtCDROMSize: TEdit;
|
|
edtUsbToUsbSize: TEdit; // 수정사항 반영 버튼
|
|
|
|
procedure FormCreate(Sender: TObject);
|
|
procedure FormDestroy(Sender: TObject);
|
|
|
|
// Tab 1: Exception
|
|
procedure btnAddExClick(Sender: TObject);
|
|
procedure btnDelExClick(Sender: TObject);
|
|
procedure ListBoxExceptionsClick(Sender: TObject);
|
|
|
|
// Tab 3: Hook
|
|
procedure lbHookProcClick(Sender: TObject);
|
|
procedure btnSaveClick(Sender: TObject);
|
|
procedure btnCloseClick(Sender: TObject);
|
|
procedure PanelBottomClick(Sender: TObject);
|
|
private
|
|
FTempConfig: TDataFlowConfig; // 편집 중인 임시 데이터 (Cancel 지원용)
|
|
procedure LoadUIFromConfig;
|
|
// procedure SaveUIToConfig;
|
|
procedure ClearHookDetails;
|
|
|
|
public
|
|
procedure SetEngine(AEngine: TBs1Policy);
|
|
|
|
end;
|
|
|
|
var
|
|
DataFlowForm: TDataFlowSettingForm;
|
|
|
|
implementation
|
|
|
|
{$R *.dfm}
|
|
|
|
procedure TDataFlowSettingForm.FormCreate(Sender: TObject);
|
|
begin
|
|
Caption := '파일 차단 정책 설정';
|
|
Position := poOwnerFormCenter;
|
|
|
|
FTempConfig := TDataFlowConfig.Create;
|
|
|
|
// 콤보박스 초기화
|
|
cbMtpPolicy.Items.AddStrings(['0: Allow', '1: Block']);
|
|
cbBtPolicy.Items.AddStrings(['0: Allow', '1: Block']);
|
|
cbbCDROMPolicy.Items.AddStrings(['0: Allow', '1: Block']);
|
|
cbbUsbToUsbPolicy.Items.AddStrings(['0: Allow', '1: Block']);
|
|
|
|
|
|
end;
|
|
|
|
procedure TDataFlowSettingForm.FormDestroy(Sender: TObject);
|
|
begin
|
|
FTempConfig.Free;
|
|
end;
|
|
|
|
procedure TDataFlowSettingForm.SetEngine(AEngine: TBs1Policy);
|
|
begin
|
|
if Assigned(gBs1Policy) then
|
|
begin
|
|
gBs1Policy.LoadDataFlowConfig; // 최신 데이터 로드
|
|
// 임시 객체로 복사 (편집 중 취소 가능하게)
|
|
FTempConfig.Assign(gBs1Policy.DataFlowConfig);
|
|
LoadUIFromConfig;
|
|
end;
|
|
end;
|
|
|
|
procedure TDataFlowSettingForm.LoadUIFromConfig;
|
|
begin
|
|
// 1. Exception Path
|
|
ListBoxExceptions.Items.Assign(FTempConfig.GlobalExceptionPath);
|
|
|
|
// 2. MTP/BT
|
|
cbMtpPolicy.ItemIndex := FTempConfig.MtpConfig.Policy; // 값 범위 체크 필요 시 보강
|
|
edtMtpSize.Text := IntToStr(FTempConfig.MtpConfig.FileSize);
|
|
|
|
cbBtPolicy.ItemIndex := FTempConfig.BtConfig.Policy;
|
|
edtBtSize.Text := IntToStr(FTempConfig.BtConfig.FileSize);
|
|
|
|
cbbCDROMPolicy.ItemIndex := FTempConfig.CDROMConfig.Policy;
|
|
edtCDROMSize.Text := IntToStr(FTempConfig.CDROMConfig.FileSize);
|
|
|
|
cbbUsbToUsbPolicy.ItemIndex := FTempConfig.UsbToUsbConfig.Policy;
|
|
edtUsbToUsbSize.Text := IntToStr(FTempConfig.UsbToUsbConfig.FileSize);
|
|
|
|
ClearHookDetails;
|
|
end;
|
|
|
|
procedure TDataFlowSettingForm.PanelBottomClick(Sender: TObject);
|
|
begin
|
|
|
|
end;
|
|
|
|
// -----------------------------------------------------------------------------
|
|
// [탭 1] Exception Path
|
|
// -----------------------------------------------------------------------------
|
|
procedure TDataFlowSettingForm.btnAddExClick(Sender: TObject);
|
|
begin
|
|
if Trim(EditExPath.Text) <> '' then
|
|
begin
|
|
ListBoxExceptions.Items.Add(Trim(EditExPath.Text));
|
|
EditExPath.Text := '';
|
|
end;
|
|
end;
|
|
|
|
procedure TDataFlowSettingForm.btnDelExClick(Sender: TObject);
|
|
begin
|
|
if ListBoxExceptions.ItemIndex >= 0 then
|
|
ListBoxExceptions.Items.Delete(ListBoxExceptions.ItemIndex);
|
|
end;
|
|
|
|
procedure TDataFlowSettingForm.ListBoxExceptionsClick(Sender: TObject);
|
|
begin
|
|
if ListBoxExceptions.ItemIndex >= 0 then
|
|
EditExPath.Text := ListBoxExceptions.Items[ListBoxExceptions.ItemIndex];
|
|
end;
|
|
|
|
// -----------------------------------------------------------------------------
|
|
// [탭 3] Hook Process
|
|
// -----------------------------------------------------------------------------
|
|
procedure TDataFlowSettingForm.ClearHookDetails;
|
|
begin
|
|
|
|
end;
|
|
|
|
procedure TDataFlowSettingForm.lbHookProcClick(Sender: TObject);
|
|
var
|
|
Item: THookProcessItem;
|
|
begin
|
|
end;
|
|
|
|
|
|
// -----------------------------------------------------------------------------
|
|
// [Main] Save & Close
|
|
// -----------------------------------------------------------------------------
|
|
procedure TDataFlowSettingForm.btnSaveClick(Sender: TObject);
|
|
begin
|
|
if not Assigned(gBs1Policy) then Exit;
|
|
|
|
// 1. Exception Path 반영
|
|
FTempConfig.GlobalExceptionPath.Assign(ListBoxExceptions.Items);
|
|
|
|
// 2. MTP/BT 반영
|
|
if cbMtpPolicy.ItemIndex >= 0 then FTempConfig.MtpConfig.Policy := cbMtpPolicy.ItemIndex;
|
|
FTempConfig.MtpConfig.FileSize := StrToIntDef(edtMtpSize.Text, 20);
|
|
|
|
if cbBtPolicy.ItemIndex >= 0 then FTempConfig.BtConfig.Policy := cbBtPolicy.ItemIndex;
|
|
FTempConfig.BtConfig.FileSize := StrToIntDef(edtBtSize.Text, 20);
|
|
|
|
if cbbCDROMPolicy.ItemIndex >= 0 then FTempConfig.CDROMConfig.Policy := cbbCDROMPolicy.ItemIndex;
|
|
FTempConfig.CDROMConfig.FileSize := StrToIntDef(edtCDROMSize.Text, 20);
|
|
|
|
if cbbUsbToUsbPolicy.ItemIndex >= 0 then FTempConfig.UsbToUsbConfig.Policy := cbbUsbToUsbPolicy.ItemIndex;
|
|
FTempConfig.UsbToUsbConfig.FileSize := StrToIntDef(edtUsbToUsbSize.Text, 20);
|
|
|
|
// 3. 실제 엔진에 반영 후 저장
|
|
gBs1Policy.DataFlowConfig.Assign(FTempConfig);
|
|
try
|
|
gBs1Policy.SaveDataFlowConfig;
|
|
ShowMessage('저장 완료');
|
|
ModalResult := mrOk;
|
|
except
|
|
on E: Exception do ShowMessage('저장 실패: ' + E.Message);
|
|
end;
|
|
end;
|
|
|
|
procedure TDataFlowSettingForm.btnCloseClick(Sender: TObject);
|
|
begin
|
|
Close;
|
|
end;
|
|
|
|
end.
|