git-svn-id: https://192.168.0.254/svn/Componentes.Terceros.RemObjects@49 b6239004-a887-0f4b-9937-50029ccdca16
229 lines
7.4 KiB
ObjectPascal
229 lines
7.4 KiB
ObjectPascal
unit MessageEnvelopes_ClientMain;
|
|
|
|
interface
|
|
|
|
uses
|
|
Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls,
|
|
uROClient, uROClientIntf, uRORemoteService, uROBinMessage, uROWinInetHTTPChannel,
|
|
ToolWin, ComCtrls, CheckLst, ExtCtrls, ActnList, uROEncryptionEnvelope,
|
|
Spin;
|
|
|
|
type
|
|
TMessageEnvelopes_ClientMainForm = class(TForm)
|
|
ROMessage: TROBinMessage;
|
|
ROChannel: TROWinInetHTTPChannel;
|
|
RORemoteService: TRORemoteService;
|
|
ActionList1: TActionList;
|
|
aAdd: TAction;
|
|
aUpdate: TAction;
|
|
aDelete: TAction;
|
|
aMoveUp: TAction;
|
|
aMoveDown: TAction;
|
|
Panel1: TPanel;
|
|
bMoveDown: TButton;
|
|
bMoveUp: TButton;
|
|
bDelete: TButton;
|
|
bUpdate: TButton;
|
|
bAdd: TButton;
|
|
CheckListBox1: TCheckListBox;
|
|
Label1: TLabel;
|
|
Panel2: TPanel;
|
|
bClearLog: TButton;
|
|
Memo1: TMemo;
|
|
Panel3: TPanel;
|
|
Edit1: TEdit;
|
|
bTest: TButton;
|
|
bRandomTest: TButton;
|
|
SpinEdit1: TSpinEdit;
|
|
Label2: TLabel;
|
|
procedure bClearLogClick(Sender: TObject);
|
|
procedure aTestExecute(Sender: TObject);
|
|
procedure FormCreate(Sender: TObject);
|
|
procedure aDeleteExecute(Sender: TObject);
|
|
procedure aDeleteUpdate(Sender: TObject);
|
|
procedure CheckListBox1ClickCheck(Sender: TObject);
|
|
procedure aMoveUpUpdate(Sender: TObject);
|
|
procedure aMoveUpExecute(Sender: TObject);
|
|
procedure aMoveDownExecute(Sender: TObject);
|
|
procedure aMoveDownUpdate(Sender: TObject);
|
|
procedure bAddClick(Sender: TObject);
|
|
procedure aUpdateExecute(Sender: TObject);
|
|
procedure bRandomTestClick(Sender: TObject);
|
|
private
|
|
{ Private declarations }
|
|
procedure Log(AStr: string);
|
|
procedure CreateAESEnvelope(AMarker, APass: String; AEnabled: Boolean);
|
|
procedure DoBeforeEnvelopeProcessed(
|
|
AMessageEnvelope: TROMessageEnvelope; AStream: TStream;
|
|
aMode: TROMessageEnvelopeMode; AMessage: IROMessage);
|
|
function GenerateString(AMessageEnvelope: TROAESEncryptionEnvelope): String;
|
|
public
|
|
{ Public declarations }
|
|
end;
|
|
|
|
var
|
|
MessageEnvelopes_ClientMainForm: TMessageEnvelopes_ClientMainForm;
|
|
|
|
implementation
|
|
|
|
|
|
uses MessageEnvelopesLibrary_Intf, MessageEnvelopes_AddEnvelope, Math;
|
|
|
|
{$R *.dfm}
|
|
|
|
procedure TMessageEnvelopes_ClientMainForm.bClearLogClick(Sender: TObject);
|
|
begin
|
|
Memo1.Clear;
|
|
end;
|
|
|
|
procedure TMessageEnvelopes_ClientMainForm.aTestExecute(Sender: TObject);
|
|
begin
|
|
if (RORemoteService as IMessageEnvelopesService).Echo(Edit1.Text) = Edit1.Text then
|
|
Log('Echo is OK!');
|
|
end;
|
|
|
|
procedure TMessageEnvelopes_ClientMainForm.Log(AStr: string);
|
|
begin
|
|
Memo1.Lines.Add(AStr);
|
|
end;
|
|
|
|
procedure TMessageEnvelopes_ClientMainForm.FormCreate(Sender: TObject);
|
|
begin
|
|
CreateAESEnvelope('Marker A','Password A',True);
|
|
CheckListBox1.ItemIndex := 0;
|
|
CreateAESEnvelope('Marker B','Password B',False);
|
|
CreateAESEnvelope('Marker C','Password C',False);
|
|
end;
|
|
|
|
procedure TMessageEnvelopes_ClientMainForm.CreateAESEnvelope(AMarker, APass: String; AEnabled: Boolean);
|
|
var
|
|
lEnv: TROAESEncryptionEnvelope;
|
|
begin
|
|
lEnv := TROAESEncryptionEnvelope.Create(nil);
|
|
with lEnv do begin
|
|
Password := APass;
|
|
EnvelopeMarker := AMarker;
|
|
BeforeEnvelopeProcessed := DoBeforeEnvelopeProcessed;
|
|
end;
|
|
with TROMessageEnvelopeItem(ROMessage.Envelopes.Add) do begin
|
|
Envelope := lEnv;
|
|
Enabled := AEnabled;
|
|
end;
|
|
CheckListBox1.AddItem(GenerateString(lEnv),lEnv);
|
|
CheckListBox1.Checked[CheckListBox1.Count-1]:=AEnabled;
|
|
end;
|
|
|
|
procedure TMessageEnvelopes_ClientMainForm.aDeleteExecute(Sender: TObject);
|
|
var
|
|
lEnv: TROMessageEnvelope;
|
|
begin
|
|
lEnv := TROMessageEnvelope(CheckListBox1.Items.Objects[CheckListBox1.ItemIndex]);
|
|
CheckListBox1.Items.Delete(CheckListBox1.ItemIndex);
|
|
ROMessage.Envelopes.Delete(ROMessage.Envelopes.ItemByEnvelope(lEnv).Index);
|
|
lEnv.Free;
|
|
end;
|
|
|
|
procedure TMessageEnvelopes_ClientMainForm.aDeleteUpdate(Sender: TObject);
|
|
begin
|
|
TAction(Sender).Enabled := CheckListBox1.ItemIndex <> -1;
|
|
end;
|
|
|
|
procedure TMessageEnvelopes_ClientMainForm.CheckListBox1ClickCheck(Sender: TObject);
|
|
var
|
|
lEnv: TROMessageEnvelope;
|
|
begin
|
|
lEnv := TROMessageEnvelope(CheckListBox1.Items.Objects[CheckListBox1.ItemIndex]);
|
|
ROMessage.Envelopes.ItemByEnvelope(lEnv).Enabled := CheckListBox1.Checked[CheckListBox1.ItemIndex];
|
|
end;
|
|
|
|
procedure TMessageEnvelopes_ClientMainForm.aMoveUpUpdate(Sender: TObject);
|
|
begin
|
|
TAction(Sender).Enabled := (CheckListBox1.ItemIndex > 0);
|
|
end;
|
|
|
|
procedure TMessageEnvelopes_ClientMainForm.aMoveUpExecute(Sender: TObject);
|
|
var
|
|
lEnv: TROMessageEnvelope;
|
|
begin
|
|
lEnv := TROMessageEnvelope(CheckListBox1.Items.Objects[CheckListBox1.ItemIndex]);
|
|
with ROMessage.Envelopes.ItemByEnvelope(lEnv) do
|
|
Index := Index -1;
|
|
CheckListBox1.Items.Exchange(CheckListBox1.ItemIndex, CheckListBox1.ItemIndex-1);
|
|
end;
|
|
|
|
procedure TMessageEnvelopes_ClientMainForm.aMoveDownExecute(Sender: TObject);
|
|
var
|
|
lEnv: TROMessageEnvelope;
|
|
begin
|
|
lEnv := TROMessageEnvelope(CheckListBox1.Items.Objects[CheckListBox1.ItemIndex]);
|
|
with ROMessage.Envelopes.ItemByEnvelope(lEnv) do
|
|
Index := Index +1;
|
|
CheckListBox1.Items.Exchange(CheckListBox1.ItemIndex, CheckListBox1.ItemIndex+1);
|
|
end;
|
|
|
|
procedure TMessageEnvelopes_ClientMainForm.aMoveDownUpdate(Sender: TObject);
|
|
begin
|
|
TAction(Sender).Enabled := (CheckListBox1.ItemIndex <> -1) and (CheckListBox1.ItemIndex <> CheckListBox1.Count-1);
|
|
end;
|
|
|
|
procedure TMessageEnvelopes_ClientMainForm.DoBeforeEnvelopeProcessed(
|
|
AMessageEnvelope: TROMessageEnvelope; AStream: TStream;
|
|
aMode: TROMessageEnvelopeMode; AMessage: IROMessage);
|
|
begin
|
|
case aMode of
|
|
memIncoming: Log(AMessageEnvelope.EnvelopeMarker+' : processing incoming message');
|
|
memOutgoing: Log(AMessageEnvelope.EnvelopeMarker+' : processing outgoing message');
|
|
end;
|
|
end;
|
|
|
|
procedure TMessageEnvelopes_ClientMainForm.bAddClick(Sender: TObject);
|
|
var
|
|
lMarker, lPassword: string;
|
|
begin
|
|
lMarker := 'Marker '+ inttoStr(CheckListBox1.Count+1);
|
|
lPassword := 'Password '+ inttoStr(CheckListBox1.Count+1);
|
|
if AddAESEnvelope(lMarker,lPassword) then
|
|
CreateAESEnvelope(lMarker,lPassword,True);
|
|
end;
|
|
|
|
procedure TMessageEnvelopes_ClientMainForm.aUpdateExecute(Sender: TObject);
|
|
var
|
|
lEnv: TROAESEncryptionEnvelope;
|
|
lMarker, lPassword: string;
|
|
begin
|
|
lEnv := TROAESEncryptionEnvelope(CheckListBox1.Items.Objects[CheckListBox1.ItemIndex]);
|
|
lMarker :=lEnv.EnvelopeMarker;
|
|
lPassword := lEnv.Password;
|
|
if UpdateAESEnvelope(lMarker,lPassword) then begin
|
|
lEnv.EnvelopeMarker := lMarker;
|
|
lEnv.Password := lPassword;
|
|
CheckListBox1.Items[CheckListBox1.ItemIndex] := GenerateString(lEnv);
|
|
end;
|
|
end;
|
|
|
|
procedure TMessageEnvelopes_ClientMainForm.bRandomTestClick(Sender: TObject);
|
|
var
|
|
i,j: integer;
|
|
begin
|
|
for j := 0 to SpinEdit1.Value -1 do begin
|
|
For i:= 0 to CheckListBox1.Count -1 do begin
|
|
CheckListBox1.Checked[i] := False;
|
|
ROMessage.Envelopes[i].Enabled := False;
|
|
end;
|
|
if CheckListBox1.Count > 0 then begin
|
|
i := RandomRange(0, CheckListBox1.Count-1);
|
|
CheckListBox1.Checked[i] := True;
|
|
ROMessage.Envelopes[i].Enabled := True;
|
|
aTestExecute(bTest);
|
|
end;
|
|
end;
|
|
end;
|
|
|
|
function TMessageEnvelopes_ClientMainForm.GenerateString(
|
|
AMessageEnvelope: TROAESEncryptionEnvelope): String;
|
|
begin
|
|
Result := AMessageEnvelope.EnvelopeMarker + ' [ password = ''' + AMessageEnvelope.Password+''' ]'
|
|
end;
|
|
|
|
end.
|