BSOne.SFC/eCrmHE/EXE_eCrmHeLinux/DeCrmHeLinuxMain.pas

243 lines
6.8 KiB
Plaintext

unit DeCrmHeLinuxMain;
interface
uses
System.SysUtils, System.Types, System.UITypes, System.Classes, System.Variants,
FMX.Types, FMX.Controls, FMX.Forms, FMX.Graphics, FMX.Dialogs, FMX.Layouts,
FMX.ExtCtrls, FMX.StdCtrls, FMX.Objects, FMX.Controls.Presentation,
IdHTTP, IdSSLOpenSSL, IdIOHandler,
FMX.Memo.Types, FMX.ScrollBox, FMX.Memo, FMX.Edit, System.ImageList,
FMX.ImgList, System.Net.URLClient, System.Net.HttpClient,
System.Net.HttpClientComponent;
type
TDlgeCrmHeLinuxMain = class(TForm)
imgMain: TImage;
lbMode: TLabel;
btnGetPolicy: TButton;
mmPolicy: TMemo;
edSvrAddr: TEdit;
imgMainList: TImageList;
NetHTTPClient: TNetHTTPClient;
NetHTTPRequest: TNetHTTPRequest;
tProc: TTimer;
procedure btnGetPolicyClick(Sender: TObject);
private
{ Private declarations }
HTTP_: TIdHTTP;
SSL_: TIdSSLIOHandlerSocketOpenSSL;
function HttpPost(sDest, sRqType, sParam: String): String;
public
{ Public declarations }
Constructor Create(aOwner: TComponent); override;
Destructor Destroy; override;
end;
var
DlgeCrmHeLinuxMain: TDlgeCrmHeLinuxMain;
implementation
uses
System.JSON, System.JSON.Readers, System.Net.Mime;
{$R *.fmx}
Constructor TDlgeCrmHeLinuxMain.Create(aOwner: TComponent);
procedure InitHttp;
begin
SSL_ := TIdSSLIOHandlerSocketOpenSSL.Create(nil);
SSL_.SSLOptions.Method := sslvSSLv23;
SSL_.SSLOptions.SSLVersions := [sslvTLSv1_2, sslvTLSv1_1, sslvTLSv1];
HTTP_ := TIdHTTP.Create(nil);
HTTP_.IOHandler := SSL_;
with HTTP_ do
begin
Request.Clear;
Request.UserAgent := 'Mozilla/5.0';
Request.ContentType := 'application/json; charset=utf-8'; //'application/xml';
Request.Accept := 'application/json; charset=utf-8';
Request.Charset := 'utf-8';
Request.Connection := 'Keep-Alive';
ConnectTimeout := 3000;
ReadTimeout := 3000;
end;
NetHTTPClient.UserAgent := 'Mozilla/5.0';
NetHTTPClient.ContentType := 'application/json; charset=utf-8';
NetHTTPClient.Accept := 'application/json; charset=utf-8';
NetHTTPClient.AcceptCharSet := 'utf-8';
NetHTTPRequest.CustomHeaders['UserAgent'] := 'Mozilla/5.0';
NetHTTPRequest.CustomHeaders['ContentType'] := 'application/json; charset=utf-8';
NetHTTPRequest.CustomHeaders['Accept'] := 'application/json; charset=utf-8';
NetHTTPRequest.CustomHeaders['Charset'] := 'utf-8';
end;
begin
Inherited Create(aOwner);
InitHttp;
end;
Destructor TDlgeCrmHeLinuxMain.Destroy;
begin
FreeAndNil(HTTP_);
FreeAndNil(SSL_);
Inherited;
end;
function TDlgeCrmHeLinuxMain.HttpPost(sDest, sRqType, sParam: String): String;
var
ss: TStringStream;
begin
Result := '';
try
ss := TStringStream.Create(sParam, TEncoding.UTF8);
try
HTTP_.Request.CustomHeaders.Values['requestType'] := sRqType;
Result := HTTP_.Post(sDest, ss);
if (Result = '') and (HTTP_.ResponseCode = 200) then
Result := 'true';
finally
FreeAndNil(ss);
end;
except
{$IFDEF TRACE1}
on E: Exception do
ETgException.TraceException(Self, E, Format('Fail .. HttpPost(), RqType=%s', [sRqType]));
{$ENDIF}
end;
end;
procedure GetRunningAplications(Applist: TStringlist);
var
fWorkSpace:NSWorkSpace;
list:NSArray;
i: Integer;
lItem:NSDictionary;
key,value: NSString;
begin
fWorkSpace := TNsWorkspace.Wrap(TNsWorkSpace.OCClass.sharedWorkspace);
list := fWorkspace.launchedApplications;
if (List <> nil) and (List.count > 0) then
begin
for i := 0 to list.count-1 do
begin
lItem := TNSDictionary.Wrap(List.objectAtIndex(i));
key := NSSTR(String(PAnsiChar(UTF8Encode('NSApplicationBundleIdentifier'))));
// You can also use NSApplicationPath or NSApplicationName
value := TNSString.Wrap(lItem.valueForKey(key));
Applist.Add(String(value.UTF8String));
end;
end;
end;
procedure TDlgeCrmHeLinuxMain.btnGetPolicyClick(Sender: TObject);
var
sRes: String;
O: TJSONObject;
jr: TJsonReader;
sr: TStringReader;
SizeF: TSizeF;
ss1,
ss2: TStringStream;
NetHearder: TNetHeaders;
Res: IHTTPResponse;
MD: TMultipartFormData;
begin
SizeF.cx := 570;
SizeF.cy := 298;
imgMain.Bitmap := imgMainList.Bitmap(SizeF, 1);
O := TJSONObject.Create;
O.AddPair('MODEL_ID', 'kjkim');
O.AddPair('mwAKey_IP', '192.168.14.71');
O.AddPair('mwAKey_MAC', '00155D903838');
O.AddPair('mwAKey_HOSTNAME', 'DESKTOP-GIUQ72N\kjkim');
O.AddPair('mwAKey_STATUS', 'Disconnected');
O.AddPair('mwAKey_COLLASTCONN', FormatDateTime('yyyy-mm-dd hh:nn:ss', Now));
O.AddPair('mwAKey_COLVERSION', '1.5.2.22');
O.AddPair('mwAKey_AGENTID', 'kjkim');
O.AddPair('mwAKey_EULACONFIRMED', 'disagree');
O.AddPair('mwAKey_LOCATION', 'KKU_TEST');
O.AddPair('mwAKey_PWDSET', 'true');
O.AddPair('mwAKey_SCRNLOCK', 'true');
O.AddPair('mwAKey_OSVER', '10');
O.AddPair('mwAKey_PATCHES', 'null');
O.AddPair('mwAKey_AVINFORM', 'AV');
O.AddPair('mwAKey_ASINFORM', 'AS');
O.AddPair('mwAKey_FIREWALLINFO', 'null');
O.AddPair('mwAKey_SOFTWAREINFO', 'null');
O.AddPair('mwAKey_ADDEULACONFIRM', 'false');
O.AddPair('mwAKey_OSSAFE', 'true');
O.AddPair('mwAKey_PATCHEXIST', 'true');
O.AddPair('mwAKey_AVSAFE', 'true');
O.AddPair('mwAKey_ASSAFE', 'true');
O.AddPair('mwAKey_FWSAFE', 'true');
O.AddPair('mwAKey_SAFEBLOCKSETTING', 'true');
O.AddPair('mwAKey_VPNINFO', 'kjkim');
O.AddPair('mwAKey_EMPNO', 'kjkim');
// ssl : https://192.168.14.133:8443/agentLogRequests.do
// nomal : http://192.168.14.67:4445/agentLogRequest.do
edSvrAddr.Text := Trim(edSvrAddr.Text);
(*
Result := '';
try
ss := TStringStream.Create(sParam, TEncoding.UTF8);
try
HTTP_.Request.CustomHeaders.Values['requestType'] := sRqType;
Result := HTTP_.Post(sDest, ss);
if (Result = '') and (HTTP_.ResponseCode = 200) then
Result := 'true';
finally
FreeAndNil(ss);
end;
except
{$IFDEF TRACE1}
on E: Exception do
ETgException.TraceException(Self, E, Format('Fail .. HttpPost(), RqType=%s', [sRqType]));
{$ENDIF}
end;
Request.UserAgent := 'Mozilla/5.0';
Request.ContentType := 'application/json; charset=utf-8'; //'application/xml';
Request.Accept := 'application/json; charset=utf-8';
Request.Charset := 'utf-8';
*)
NetHTTPRequest.CustomHeaders['requestType'] := '123120';
// NetHearder
ss1 := TStringStream.Create(O.ToJSON, TEncoding.UTF8);
ss1.Position := 0;
ss2 := TStringStream.Create('', TEncoding.UTF8);
Res := NetHTTPRequest.Post(edSvrAddr.Text, ss1, ss2);
sRes := Res.ContentAsString(TEncoding.UTF8);
if ss2.Size = 0 then
exit;
// sRes := HttpPost(edSvrAddr.Text, '123120', O.ToJSON);
O.Free;
try
// O := TJSONObject.ParseJSONValue(sRes) as TJSONObject;
O := TJSONObject.ParseJSONValue(ss2.DataString) as TJSONObject;
except
exit;
end;
mmPolicy.Text := O.Format(4);
O.Free;
end;
end.