Prvni verze
This commit is contained in:
737
cfgGUI/uMain.pas
Normal file
737
cfgGUI/uMain.pas
Normal file
@ -0,0 +1,737 @@
|
||||
unit uMain;
|
||||
|
||||
interface
|
||||
|
||||
uses
|
||||
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
|
||||
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.Mask, Vcl.ExtCtrls, System.IOUtils,
|
||||
System.StrUtils, Vcl.Imaging.pngimage, System.IniFiles, Winapi.ShlObj,
|
||||
Xml.XmlIntf, Xml.XMLDoc,
|
||||
flcCipher, System.ImageList, Vcl.ImgList, Vcl.VirtualImageList,
|
||||
Vcl.BaseImageCollection, Vcl.ImageCollection, Vcl.Buttons;
|
||||
|
||||
const
|
||||
eKey2 = '9!81Aq#cU:MCntb6';
|
||||
sName = 'DBName';
|
||||
sSSLKey = 'SSLKeyFile';
|
||||
eKey1 = 'qe*cX!8k@4WA!gQ5';
|
||||
sEncConn = 'DBEncConn';
|
||||
sDZTasksIntZapisHeO = 'DZTasksIntervalZapisHeO';
|
||||
sServer = 'DBServer';
|
||||
pwd1 = 'L~4';
|
||||
sPortS = 'DBPort';
|
||||
sSSL = 'SSL';
|
||||
pwd2 = 'Qe!r';
|
||||
sHeliosStoreURL = 'HeliosStoreURL';
|
||||
sUser = 'DBUser';
|
||||
iVect2 = '3r!9q$';
|
||||
sDZTaskIntZapisTypCas = 'DZTaskZapisIntervalTypCas';
|
||||
sLCh = 'licCheck';
|
||||
sPwd = 'DBPwd';
|
||||
sDzKlic = 'DataZoneKey';
|
||||
sDZTasksIntDown = 'DZTasksIntervalDownload';
|
||||
sSSLCert = 'SSLCertFile';
|
||||
sHeoPath = 'HEOPath';
|
||||
iVect1 = 's4W*ERr9';
|
||||
sCfgComp = 'confComp';
|
||||
sLoginMod = 'JWTAuthMod';
|
||||
sDZTasksDownURL = 'DZTasksDownloadURL';
|
||||
sHeoLic = 'HEOLicence';
|
||||
sPort = 'APIPort';
|
||||
cfgFName = 'hdcDZAPIcfg.dat';
|
||||
|
||||
|
||||
|
||||
type
|
||||
TfrmMain = class(TForm)
|
||||
edtServer: TLabeledEdit;
|
||||
edtPwd: TLabeledEdit;
|
||||
edtPort: TLabeledEdit;
|
||||
edtDB: TLabeledEdit;
|
||||
edtUser: TLabeledEdit;
|
||||
edtAPIport: TLabeledEdit;
|
||||
bntSave: TButton;
|
||||
gbAPI: TGroupBox;
|
||||
gbSQL: TGroupBox;
|
||||
btnClose: TButton;
|
||||
Image1: TImage;
|
||||
Label1: TLabel;
|
||||
lblIniPath: TLabel;
|
||||
cbxEncConn: TCheckBox;
|
||||
cbxSSL: TCheckBox;
|
||||
edtSSLCert: TButtonedEdit;
|
||||
edtSSLKey: TButtonedEdit;
|
||||
cbxJWTLogin: TCheckBox;
|
||||
imgList: TVirtualImageList;
|
||||
imgColl: TImageCollection;
|
||||
Label2: TLabel;
|
||||
Label3: TLabel;
|
||||
selHeoCfg: TSpeedButton;
|
||||
lblDZKlic: TLabeledEdit;
|
||||
edtDZTasksDown: TLabeledEdit;
|
||||
Label4: TLabel;
|
||||
edtHeoLic: TLabeledEdit;
|
||||
grpDZ: TGroupBox;
|
||||
edtDZTasksZapis: TLabeledEdit;
|
||||
edtDZTasksURL: TLabeledEdit;
|
||||
edtLicCheckURL: TLabeledEdit;
|
||||
cbL: TCheckBox;
|
||||
lblCompname: TLabeledEdit;
|
||||
cbTypIntervalZapis: TComboBox;
|
||||
procedure FormCreate(Sender: TObject);
|
||||
procedure btnCloseClick(Sender: TObject);
|
||||
procedure bntSaveClick(Sender: TObject);
|
||||
procedure FormShow(Sender: TObject);
|
||||
procedure Image1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
|
||||
procedure Image1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
|
||||
procedure cbxSSLClick(Sender: TObject);
|
||||
function Encrypt(const AStr: string): RawByteString;
|
||||
function Decrypt(const AStr: string): RawByteString;
|
||||
function ReturnEncrypted(const AStr: string): string;
|
||||
function ReturnDecrypted(const AStr: string): string;
|
||||
procedure edtSSLKeyRightButtonClick(Sender: TObject);
|
||||
procedure edtSSLCertRightButtonClick(Sender: TObject);
|
||||
procedure selHeoCfgClick(Sender: TObject);
|
||||
procedure edtDBChange(Sender: TObject);
|
||||
procedure edtDZTasksDownExit(Sender: TObject);
|
||||
procedure edtAPIportExit(Sender: TObject);
|
||||
procedure edtDZTasksZapisKeyPress(Sender: TObject; var Key: Char);
|
||||
public
|
||||
end;
|
||||
|
||||
var
|
||||
frmMain: TfrmMain;
|
||||
s, fleName: string;
|
||||
cfgXML: IXMLDocument;
|
||||
n1: IXMLNode;
|
||||
|
||||
dbPwd, dbUsr, apiLic, iniFPath: string;
|
||||
intDown: integer;
|
||||
sTemp: RawByteString;
|
||||
|
||||
implementation
|
||||
{$R *.dfm}
|
||||
|
||||
uses
|
||||
System.Hash;
|
||||
|
||||
|
||||
|
||||
function IsEmptyOrNull(const Value: Variant): Boolean;
|
||||
begin
|
||||
result := VarIsClear(Value) or VarIsEmpty(Value) or VarIsNull(Value) or (VarCompareValue(Value, Unassigned) = vrEqual);
|
||||
if (not result) and VarIsStr(Value) then
|
||||
result:= Value = '';
|
||||
end;
|
||||
|
||||
|
||||
|
||||
function VyberAdresar(var Foldr: string; Title: string): Boolean;
|
||||
var BrowseInfo: TBrowseInfo;
|
||||
ItemIDList: PItemIDList;
|
||||
DisplayName: array[0..MAX_PATH] of Char;
|
||||
begin
|
||||
Result := False;
|
||||
FillChar(BrowseInfo, SizeOf(BrowseInfo), #0);
|
||||
with BrowseInfo do
|
||||
begin
|
||||
hwndOwner := Application.Handle;
|
||||
pszDisplayName := @DisplayName[0];
|
||||
lpszTitle := PChar(Title);
|
||||
ulFlags := BIF_RETURNONLYFSDIRS;
|
||||
end;
|
||||
ItemIDList := SHBrowseForFolder(BrowseInfo);
|
||||
if Assigned(ItemIDList) then
|
||||
if SHGetPathFromIDList(ItemIDList, DisplayName) then
|
||||
begin
|
||||
Foldr := DisplayName;
|
||||
Result := True;
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
|
||||
|
||||
function StringToMemoryStream(const AString: string): TMemoryStream;
|
||||
var M: TMemoryStream;
|
||||
begin
|
||||
M:= TMemoryStream.Create;
|
||||
try
|
||||
M.Size:= (Length(AString)*SizeOf(Char)) div 2;
|
||||
if (M.Size>0) then
|
||||
begin
|
||||
HexToBin(PChar(AString), M.Memory, M.Size);
|
||||
M.Position:= 0;
|
||||
end;
|
||||
finally
|
||||
result:= M;
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
|
||||
|
||||
function SimpleXOR(Buffer: String; Key: integer): String;
|
||||
var i, c, x: integer;
|
||||
begin
|
||||
for i:= 1 to Length(Buffer) do
|
||||
begin
|
||||
c:= integer(Buffer[i]);
|
||||
x:= c xor Key;
|
||||
result:= result + Char(x);
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
|
||||
|
||||
function TfrmMain.Encrypt(const AStr: string): RawByteString;
|
||||
begin
|
||||
result:= flcCipher.Encrypt(ctRC4, cmECB, cpNone, 256, RawByteString(eKey1+eKey2), RawByteString(AStr), iVect1+iVect2);
|
||||
end;
|
||||
|
||||
|
||||
|
||||
|
||||
function TfrmMain.Decrypt(const AStr: string): RawByteString;
|
||||
begin
|
||||
result:= flcCipher.Decrypt(ctRC4, cmECB, cpNone, 256, RawByteString(eKey1+eKey2), RawByteString(AStr), iVect1+iVect2);
|
||||
end;
|
||||
|
||||
|
||||
|
||||
|
||||
procedure TfrmMain.edtAPIportExit(Sender: TObject);
|
||||
var i: integer;
|
||||
begin
|
||||
i:= -1;
|
||||
if not(TryStrToInt(edtAPIport.Text, i)) then
|
||||
i:= -1;
|
||||
|
||||
if (i<1) or (i>65535) then
|
||||
begin
|
||||
ShowMessage('Port nesmí být musí být v rozmezí 1-65535');
|
||||
edtAPIport.Text:= '8080';
|
||||
if (edtAPIport.CanFocus) then
|
||||
edtAPIport.SetFocus;
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
|
||||
|
||||
procedure TfrmMain.edtDBChange(Sender: TObject);
|
||||
var dbLic: string;
|
||||
begin
|
||||
dbLic:= edtHeoLic.Text + edtDB.Text;
|
||||
|
||||
dbLic:= SimpleXOR(dbLic, 57846218);
|
||||
lblDZKlic.Text:= THashMD5.GetHashString(dbLic).ToUpper;
|
||||
end;
|
||||
|
||||
|
||||
|
||||
|
||||
procedure TfrmMain.edtDZTasksDownExit(Sender: TObject);
|
||||
var i: integer;
|
||||
begin
|
||||
i:= -1;
|
||||
if not(TryStrToInt(edtDZTasksDown.Text, i)) then
|
||||
i:= -1;
|
||||
|
||||
if (i<0) then
|
||||
begin
|
||||
ShowMessage('Interval stahování nesmí být záporný.');
|
||||
edtDZTasksDown.Text:= '15';
|
||||
if (edtDZTasksDown.CanFocus) then
|
||||
edtDZTasksDown.SetFocus;
|
||||
end;
|
||||
end;
|
||||
|
||||
|
||||
|
||||
|
||||
procedure TfrmMain.edtDZTasksZapisKeyPress(Sender: TObject; var Key: Char);
|
||||
begin
|
||||
if (Key='.') or (Key=',') then
|
||||
Key:= #0;
|
||||
end;
|
||||
|
||||
|
||||
|
||||
|
||||
procedure TfrmMain.edtSSLCertRightButtonClick(Sender: TObject);
|
||||
var fod: TFileOpenDialog;
|
||||
fn, initF: string;
|
||||
begin
|
||||
fn:= '';
|
||||
fod:= TFileOpenDialog.Create(nil);
|
||||
try
|
||||
initF:= GetEnvironmentVariable('USERPROFILE') + System.SysUtils.PathDelim + 'Desktop';
|
||||
if (edtSSLCert.Text<>'') then
|
||||
if (ExtractFilePath(edtSSLCert.Text)<>'') then
|
||||
if (DirectoryExists(ExtractFilePath(edtSSLCert.Text))) then
|
||||
initF:= ExtractFilePath(edtSSLCert.Text);
|
||||
fod.DefaultFolder:= initF;
|
||||
fod.Options:= [fdoShareAware, fdoPathMustExist, fdoFileMustExist];
|
||||
|
||||
fod.FileTypes.Clear;
|
||||
with fod.FileTypes.Add do
|
||||
begin
|
||||
DisplayName:= 'Soubor certifikátu';
|
||||
FileMask:= 'cacert.pem';
|
||||
end;
|
||||
|
||||
if (fod.Execute) then
|
||||
fn:= fod.FileName;
|
||||
finally
|
||||
fod.Free;
|
||||
end;
|
||||
|
||||
if (fn<>'') then
|
||||
if (FileExists(fn)) then
|
||||
edtSSLCert.Text:= fn;
|
||||
end;
|
||||
|
||||
|
||||
|
||||
|
||||
procedure TfrmMain.edtSSLKeyRightButtonClick(Sender: TObject);
|
||||
var fod: TFileOpenDialog;
|
||||
fn, initF: string;
|
||||
begin
|
||||
fn:= '';
|
||||
fod:= TFileOpenDialog.Create(nil);
|
||||
try
|
||||
initF:= GetEnvironmentVariable('USERPROFILE') + System.SysUtils.PathDelim + 'Desktop';
|
||||
if (edtSSLKey.Text<>'') then
|
||||
if (ExtractFilePath(edtSSLKey.Text)<>'') then
|
||||
if (DirectoryExists(ExtractFilePath(edtSSLKey.Text))) then
|
||||
initF:= ExtractFilePath(edtSSLKey.Text);
|
||||
fod.DefaultFolder:= initF;
|
||||
fod.Options:= [fdoShareAware, fdoPathMustExist, fdoFileMustExist];
|
||||
|
||||
fod.FileTypes.Clear;
|
||||
with fod.FileTypes.Add do
|
||||
begin
|
||||
DisplayName:= 'Soubor privátního klíče';
|
||||
FileMask:= 'privkey.pem';
|
||||
end;
|
||||
|
||||
if (fod.Execute) then
|
||||
fn:= fod.FileName;
|
||||
finally
|
||||
fod.Free;
|
||||
end;
|
||||
|
||||
if (fn<>'') then
|
||||
if (FileExists(fn)) then
|
||||
edtSSLKey.Text:= fn;
|
||||
end;
|
||||
|
||||
|
||||
|
||||
|
||||
function TfrmMain.ReturnEncrypted(const AStr: string): string;
|
||||
var i: integer;
|
||||
sTemp: RawByteString;
|
||||
begin
|
||||
sTemp:= Encrypt(AStr);
|
||||
result:= '';
|
||||
for i:=1 to Length(sTemp) do
|
||||
result:= result + IntToHex(Byte(sTemp[i]));
|
||||
end;
|
||||
|
||||
|
||||
|
||||
function TfrmMain.ReturnDecrypted(const AStr: string): string;
|
||||
var i: integer;
|
||||
sText: string;
|
||||
sTemp: RawByteString;
|
||||
begin
|
||||
result:= '';
|
||||
sTemp:= '';
|
||||
sText:= AStr;
|
||||
for i:=0 to (Length(sText) div 2)-1 do
|
||||
sTemp:= sTemp + AnsiChar(StrToInt('$' + Copy(sText, (i*2)+1, 2)));
|
||||
if (sTemp<>'') then
|
||||
result:= Decrypt(sTemp);
|
||||
end;
|
||||
|
||||
|
||||
|
||||
|
||||
procedure TfrmMain.FormCreate (Sender: TObject);
|
||||
var i: integer;
|
||||
s, obsahXML: string;
|
||||
t1: integer;
|
||||
fs: TFileStream;
|
||||
ms: TMemoryStream;
|
||||
attribs: IXMLNodeList;
|
||||
begin
|
||||
fleName:= ExtractFileDir(Application.ExeName) + '\' + cfgFName;
|
||||
cfgXML:= TXMLDocument.Create(nil);
|
||||
|
||||
cbL.Visible:= (FileExists('lic'));
|
||||
lblCompname.Visible:= cbL.Visible;
|
||||
if (cbL.Visible) then
|
||||
self.Height:= self.Height + 30;
|
||||
|
||||
cbL.Checked:= true;
|
||||
lblCompname.Text:= GetEnvironmentVariable('COMPUTERNAME');
|
||||
|
||||
if (FileExists(fleName)) then
|
||||
try
|
||||
s:= '';
|
||||
|
||||
try
|
||||
fs:= TFileStream.Create(fleName, fmOpenRead);
|
||||
if (fs.Size>0) then
|
||||
begin
|
||||
SetLength(s, (fs.Size div SizeOf(Char)));
|
||||
fs.Read(s[Low(s)], fs.Size);
|
||||
end;
|
||||
s:= ReplaceStr(s, #0, '');
|
||||
finally
|
||||
fs.Free;
|
||||
end;
|
||||
|
||||
if (LeftStr(s, 2)='7D') then
|
||||
s:= ReturnDecrypted(s);
|
||||
s:= s.Replace(#13#10,'');
|
||||
|
||||
if (LeftStr(s, 2)='<?') then
|
||||
cfgXML.LoadFromXML(s);
|
||||
cfgXML.Active:= true;
|
||||
|
||||
iniFPath:= '';
|
||||
edtServer.Text:= '';
|
||||
edtDB.Text:= '';
|
||||
edtPort.Text:= '';
|
||||
edtPwd.Text:= '';
|
||||
edtUser.Text:= '';
|
||||
edtDZTasksDown.Text:= '15';
|
||||
edtHeoLic.Text:= '';
|
||||
|
||||
edtAPIport.Text:= '8080';
|
||||
cbxSSL.Checked:= false;
|
||||
edtSSLCert.Text:= '';
|
||||
edtSSLCert.Enabled:= (cbxSSL.Checked);
|
||||
edtSSLKey.Text:= '';
|
||||
edtSSLKey.Enabled:= (cbxSSL.Checked);
|
||||
cbxEncConn.Checked:= false;
|
||||
|
||||
|
||||
if not(cfgXML.IsEmptyDoc) then
|
||||
begin
|
||||
if (cfgXML.DocumentElement<>nil) then
|
||||
begin
|
||||
n1:= cfgXML.DocumentElement;
|
||||
if (n1.NodeName='config') then
|
||||
begin
|
||||
attribs:= n1.AttributeNodes;
|
||||
|
||||
i:= attribs.IndexOf(sPort);
|
||||
if (i>-1) then
|
||||
edtAPIport.Text:= attribs.Get(i).NodeValue;
|
||||
|
||||
i:= attribs.IndexOf('IniPath');
|
||||
if (i>-1) then
|
||||
if (attribs.Get(i).NodeValue<>null) then
|
||||
iniFPath:= attribs.Get(i).NodeValue;
|
||||
|
||||
i:= attribs.IndexOf(sCfgComp);
|
||||
if (i>-1) then
|
||||
if (attribs.Get(i).NodeValue<>null) then
|
||||
lblCompname.Text:= attribs.Get(i).NodeValue;
|
||||
|
||||
i:= attribs.IndexOf(sServer);
|
||||
if (i>-1) then
|
||||
if (attribs.Get(i).NodeValue<>null) then
|
||||
edtServer.Text:= attribs.Get(i).NodeValue;
|
||||
|
||||
i:= attribs.IndexOf(sName);
|
||||
if (i>-1) then
|
||||
if (attribs.Get(i).NodeValue<>null) then
|
||||
edtDB.Text:= attribs.Get(i).NodeValue;
|
||||
|
||||
i:= attribs.IndexOf(sPortS);
|
||||
if (i>-1) then
|
||||
if (attribs.Get(i).NodeValue<>null) then
|
||||
edtPort.Text:= attribs.Get(i).NodeValue;
|
||||
|
||||
i:= attribs.IndexOf(sUser);
|
||||
if (i>-1) then
|
||||
if (attribs.Get(i).NodeValue<>null) then
|
||||
begin
|
||||
dbUsr:= attribs.Get(i).NodeValue;
|
||||
edtUser.Text:= ReturnDecrypted(dbUsr);
|
||||
end;
|
||||
|
||||
i:= attribs.IndexOf(sPwd);
|
||||
if (i>-1) then
|
||||
if (attribs.Get(i).NodeValue<>null) then
|
||||
begin
|
||||
dbPwd:= attribs.Get(i).NodeValue;
|
||||
edtPwd.Text:= ReturnDecrypted(dbPwd);
|
||||
end;
|
||||
|
||||
i:= attribs.IndexOf(sEncConn);
|
||||
if (i>-1) then
|
||||
if (attribs.Get(i).NodeValue<>null) then
|
||||
if (attribs.Get(i).NodeValue='1') then
|
||||
cbxEncConn.Checked:= true;
|
||||
|
||||
|
||||
i:= attribs.IndexOf(sSSL);
|
||||
if (i>-1) then
|
||||
if (attribs.Get(i).NodeValue<>null) then
|
||||
cbxSSL.Checked:= attribs.Get(i).NodeValue;
|
||||
|
||||
i:= attribs.IndexOf(sLoginMod);
|
||||
if (i>-1) then
|
||||
if (attribs.Get(i).NodeValue<>null) then
|
||||
cbxJWTLogin.Checked:= attribs.Get(i).NodeValue;
|
||||
|
||||
i:= attribs.IndexOf(sLCh);
|
||||
if (i>-1) then
|
||||
if (attribs.Get(i).NodeValue<>null) then
|
||||
cbL.Checked:= attribs.Get(i).NodeValue;
|
||||
|
||||
i:= attribs.IndexOf(sSSLCert);
|
||||
if (i>-1) then
|
||||
if (attribs.Get(i).NodeValue<>null) then
|
||||
edtSSLCert.Text:= attribs.Get(i).NodeValue;
|
||||
|
||||
i:= attribs.IndexOf(sSSLKey);
|
||||
if (i>-1) then
|
||||
if (attribs.Get(i).NodeValue<>null) then
|
||||
edtSSLKey.Text:= attribs.Get(i).NodeValue;
|
||||
|
||||
i:= attribs.IndexOf(sDzKlic);
|
||||
if (i>-1) then
|
||||
if (attribs.Get(i).NodeValue<>null) then
|
||||
lblDZKlic.Text:= attribs.Get(i).NodeValue;
|
||||
|
||||
i:= attribs.IndexOf(sDZTasksIntDown);
|
||||
if (i>-1) then
|
||||
if (attribs.Get(i).NodeValue<>null) then
|
||||
edtDZTasksDown.Text:= attribs.Get(i).NodeValue;
|
||||
|
||||
i:= attribs.IndexOf(sDZTasksDownURL);
|
||||
if (i>-1) then
|
||||
if (attribs.Get(i).NodeValue<>null) then
|
||||
edtDZTasksURL.Text:= attribs.Get(i).NodeValue;
|
||||
|
||||
i:= attribs.IndexOf(sDZTasksIntZapisHeO);
|
||||
if (i>-1) then
|
||||
if (attribs.Get(i).NodeValue<>null) then
|
||||
edtDZTasksZapis.Text:= attribs.Get(i).NodeValue;
|
||||
|
||||
i:= attribs.IndexOf(sDZTaskIntZapisTypCas);
|
||||
if (i>-1) then
|
||||
if (attribs.Get(i).NodeValue<>null) then
|
||||
begin
|
||||
t1:= attribs.Get(i).NodeValue;
|
||||
if (t1>-1) and (t1<3) then
|
||||
cbTypIntervalZapis.ItemIndex:= t1;
|
||||
end;
|
||||
|
||||
|
||||
i:= attribs.IndexOf(sHeoLic);
|
||||
if (i>-1) then
|
||||
if (attribs.Get(i).NodeValue<>null) then
|
||||
edtHeoLic.Text:= attribs.Get(i).NodeValue;
|
||||
|
||||
i:= attribs.IndexOf(sHeliosStoreURL);
|
||||
if (i>-1) then
|
||||
if (attribs.Get(i).NodeValue<>null) then
|
||||
edtLicCheckURL.Text:= attribs.Get(i).NodeValue;
|
||||
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
||||
lblIniPath.Caption:= iniFPath;
|
||||
except
|
||||
end
|
||||
else
|
||||
try
|
||||
cfgXML.Active:= true;
|
||||
cfgXML.Options:= [doNodeAutoIndent];
|
||||
cfgXML.NodeIndentStr:= ' ';
|
||||
cfgXML.Version:= '1.0';
|
||||
cfgXML.AddChild('config');
|
||||
n1:= cfgXML.DocumentElement;
|
||||
except
|
||||
end;
|
||||
|
||||
// TODO: JWT autentifikaci
|
||||
cbxJWTLogin.Checked:= false;
|
||||
cbxJWTLogin.Visible:= false;
|
||||
|
||||
end;
|
||||
|
||||
|
||||
|
||||
procedure TfrmMain.FormShow (Sender: TObject);
|
||||
begin
|
||||
iniFPath:= '';
|
||||
if (edtAPIport.CanFocus) then
|
||||
edtAPIport.SetFocus;
|
||||
end;
|
||||
|
||||
|
||||
|
||||
|
||||
procedure TfrmMain.Image1MouseDown(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
|
||||
begin
|
||||
edtPwd.PasswordChar:= #0;
|
||||
end;
|
||||
|
||||
|
||||
|
||||
|
||||
procedure TfrmMain.Image1MouseUp(Sender: TObject; Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
|
||||
begin
|
||||
edtPwd.PasswordChar:= '*';
|
||||
end;
|
||||
|
||||
|
||||
|
||||
|
||||
procedure TfrmMain.cbxSSLClick(Sender: TObject);
|
||||
begin
|
||||
edtSSLCert.Enabled:= (cbxSSL.Checked);
|
||||
edtSSLKey.Enabled:= (cbxSSL.Checked);
|
||||
end;
|
||||
|
||||
|
||||
|
||||
procedure TfrmMain.selHeoCfgClick(Sender: TObject);
|
||||
var ini: TIniFile;
|
||||
srv, dbLic, selDirTit, fld, fn, DZLic: string;
|
||||
i: integer;
|
||||
md5hex: THashMD5;
|
||||
begin
|
||||
fn:= '';
|
||||
selDirTit:= 'Vyberte adresář Heliosu s konfiguračními soubory (Helios.ini/Licence.ini)';
|
||||
if (VyberAdresar(fld, selDirTit)) then
|
||||
begin
|
||||
fn:= fld + '\Helios.ini';
|
||||
if (FileExists(fn)) then
|
||||
begin
|
||||
iniFPath:= ExtractFileDir(fn);
|
||||
lblIniPath.Caption:= iniFPath;
|
||||
ini:= TIniFile.Create(fn);
|
||||
srv:= ini.ReadString('SQLServer', 'Server', '');
|
||||
if (srv.Substring(0, 4).ToLower='tcp:') then
|
||||
srv:= srv.Substring(4, 255);
|
||||
i:= AnsiPos(srv, ',');
|
||||
if (i>0) then
|
||||
begin
|
||||
edtServer.Text:= LeftStr(srv, i);
|
||||
edtPort.Text:= MidStr(srv, i, 255);
|
||||
end
|
||||
else
|
||||
edtServer.Text:= srv;
|
||||
edtDB.Text:= ini.ReadString('SQLServer', 'SystemDB', '');
|
||||
if (edtUser.CanFocus) then
|
||||
edtUser.SetFocus;
|
||||
ini.Free;
|
||||
end;
|
||||
|
||||
fn:= fld + '\Licence.ini';
|
||||
if (FileExists(fn)) then
|
||||
begin
|
||||
ini:= TIniFile.Create(fn);
|
||||
edtHeoLic.Text:= ini.ReadString('HELIOS', 'Licence', '');
|
||||
dbLic:= edtHeoLic.Text + edtDB.Text;
|
||||
|
||||
dbLic:= SimpleXOR(dbLic, 57846218);
|
||||
lblDZKlic.Text:= THashMD5.GetHashString(dbLic).ToUpper;
|
||||
|
||||
ini.Free;
|
||||
end;
|
||||
|
||||
end;
|
||||
|
||||
end;
|
||||
|
||||
|
||||
|
||||
|
||||
procedure TfrmMain.bntSaveClick(Sender: TObject);
|
||||
var s: AnsiString;
|
||||
sx: string;
|
||||
fs: TFileStream;
|
||||
begin
|
||||
|
||||
edtPort.Text:= Trim(edtPort.Text);
|
||||
if (edtPort.Text='') then
|
||||
edtPort.Text:= '1433';
|
||||
|
||||
edtSSLCert.Text:= Trim(edtSSLCert.Text);
|
||||
edtSSLKey.Text:= Trim(edtSSLKey.Text);
|
||||
|
||||
if (cbxSSL.Checked) and ((edtSSLCert.Text='') or (edtSSLKey.Text='')) then
|
||||
begin
|
||||
ShowMessage('Mód SSL - je nutno zadat soubory certifikátu a klíče !!');
|
||||
Exit;
|
||||
end;
|
||||
|
||||
dbPwd:= ReturnEncrypted(edtPwd.Text);
|
||||
dbUsr:= ReturnEncrypted(edtUser.Text);
|
||||
|
||||
if (lblIniPath.Caption<>'') then
|
||||
iniFPath:= lblIniPath.Caption;
|
||||
|
||||
if (Assigned(n1)) then
|
||||
begin
|
||||
n1.SetAttributeNS(sCfgComp, '', Trim(lblCompname.Text));
|
||||
n1.SetAttributeNS(sPort, '', Trim(edtAPIport.Text).ToInteger);
|
||||
n1.SetAttributeNS(sLoginMod, '', IfThen(cbxJWTLogin.Checked, '1', '0'));
|
||||
n1.SetAttributeNS(sSSL, '', IfThen(cbxSSL.Checked, '1', '0'));
|
||||
n1.SetAttributeNS(sEncConn, '', IfThen(cbxEncConn.Checked, '1', '0'));
|
||||
n1.SetAttributeNS(sSSLCert, '', IfThen(cbxSSL.Checked, Trim(edtSSLCert.Text), ''));
|
||||
n1.SetAttributeNS(sSSLKey, '', IfThen(cbxSSL.Checked, Trim(edtSSLKey.Text), ''));
|
||||
n1.SetAttributeNS(sServer, '', Trim(edtServer.Text));
|
||||
n1.SetAttributeNS(sPortS, '', Trim(edtPort.Text).ToInteger);
|
||||
n1.SetAttributeNS(sName, '', Trim(edtDB.Text));
|
||||
n1.SetAttributeNS(sUser, '', dbUsr);
|
||||
n1.SetAttributeNS(sPwd, '', dbPwd);
|
||||
n1.SetAttributeNS(sDzKlic, '', Trim(lblDZKlic.Text));
|
||||
n1.SetAttributeNS(sDZTasksDownURL, '', Trim(edtDZTasksURL.Text));
|
||||
n1.SetAttributeNS(sDZTasksIntDown, '', Trim(edtDZTasksDown.Text));
|
||||
n1.SetAttributeNS(sDZTasksIntZapisHeO, '', Trim(edtDZTasksZapis.Text));
|
||||
n1.SetAttributeNS(sDZTaskIntZapisTypCas, '', cbTypIntervalZapis.ItemIndex.ToString);
|
||||
n1.SetAttributeNS(sLCh, '', IfThen(cbL.Checked, '1', '0'));
|
||||
n1.SetAttributeNS(sHeoLic, '', edtHeoLic.Text);
|
||||
n1.SetAttributeNS(sHeliosStoreURL, '', Trim(edtLicCheckURL.Text));
|
||||
n1.SetAttributeNS('IniPath', '', iniFPath);
|
||||
s:= cfgXML.XML.Text;
|
||||
sx:= ReturnEncrypted(s);
|
||||
try
|
||||
fs:= TFileStream.Create(fleName, fmCreate or fmOpenWrite);
|
||||
fs.Write(PChar(sx)^, Length(sx)*SizeOf(Char));
|
||||
finally
|
||||
fs.Free;
|
||||
end;
|
||||
end;
|
||||
|
||||
Close;
|
||||
end;
|
||||
|
||||
|
||||
|
||||
|
||||
procedure TfrmMain.btnCloseClick(Sender: TObject);
|
||||
begin
|
||||
Close;
|
||||
end;
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
end.
|
||||
Reference in New Issue
Block a user