377 lines
12 KiB
Plaintext
377 lines
12 KiB
Plaintext
#include security.h
|
|
*!* #Define WINDOWHIDE 0x80
|
|
*!* #Define WINDOWSHOW 0x40
|
|
*!* #define TBAR_AUTOHIDE 1
|
|
*!* #define TBAR_KEEPONTOP 2
|
|
*!* #define ABM_GETSTATE 0x00000004
|
|
*!* #define ABM_SETSTATE 0x0000000A
|
|
|
|
Define Class settingsBaseController As Custom
|
|
cNumeProgram = ''
|
|
cAppName = ''
|
|
cAppPath = ''
|
|
cIniFile = ''
|
|
cVersiuneProgram = ''
|
|
cVersiuneDBTxt = ''
|
|
cROAClientPath = ''
|
|
cROAClientIniFile = ''
|
|
cIniText = ''
|
|
lLog = .F.
|
|
cHostErrors = ''
|
|
cCursorHost = [crshost]
|
|
nTipCriptare = 0
|
|
oOraSettingsController = Null
|
|
|
|
*!* 0 = fara
|
|
*!* 1 = vechi
|
|
*!* 2 = nou
|
|
|
|
Procedure Init
|
|
Lparameters tcNumeProgram
|
|
Declare Long FindWindow In "user32" String lpClassName, String lpWindowName
|
|
Declare Long SetWindowPos In "user32" Long HWnd, Long hWndInsertAfter, Long x, Long Y, Long cx, Long cy, Long wFlags
|
|
Declare Long SHAppBarMessage In "shell32.dll" Long dwMessage,String @pData
|
|
|
|
This.cNumeProgram = tcNumeProgram
|
|
This.cAppPath = Addbs(ShortPath(GetAppStartPath()))
|
|
This.cAppName = Allt(Uppe(Juststem(Sys(16,0))))
|
|
This.cIniFile = This.cAppPath + 'settings.ini'
|
|
This.cROAClientPath = Addbs(Left(This.cAppPath,Rat("\",This.cAppPath,2)-1))
|
|
This.cROAClientIniFile = This.cROAClientPath + 'settings.ini'
|
|
|
|
If !File(This.cIniFile)
|
|
This.InitSettings()
|
|
Endif
|
|
|
|
This.ReadSettings()
|
|
This.citesteVersiuneProgram()
|
|
This.citesteVersiuneDBTxt()
|
|
Endproc
|
|
*********************************************************************
|
|
Procedure setDBController
|
|
Lparameters toDBController
|
|
This.oOraSettingsController = Createobject('orasettingscontroller',toDBController)
|
|
Endproc
|
|
*********************************************************************
|
|
Procedure verificaVersiuni
|
|
Local lcMesaj,lcMesajVerificare
|
|
lcMesajVerificare = This.oOraSettingsController.verificaVersiuni(This.cNumeProgram,This.cVersiuneProgram,This.cVersiuneDBTxt)
|
|
If !Empty(Nvl(lcMesajVerificare,[]))
|
|
Do Case
|
|
Case This.cNumeProgram$Upper(lcMesajVerificare)
|
|
lcMesaj = "Trebuie actualizat " + This.cNumeProgram + " la versiunea " + Getwordnum(lcMesajVerificare, 2, ":") + Chr(13) + Chr(10) + ;
|
|
"Versiunea actuala este " + Getwordnum(lcMesajVerificare, 3, ":")
|
|
Case "DB"$Upper(lcMesajVerificare)
|
|
lcMesaj = "Trebuie actualizata baza de date la versiunea " + Getwordnum(lcMesajVerificare, 2, ":") + Chr(13) + Chr(10) + ;
|
|
"Versiunea actuala este " + Getwordnum(lcMesajVerificare, 3, ":")
|
|
Endcase
|
|
AMESSAGEBOX(lcMesaj,0+48, "Actualizare")
|
|
Endif
|
|
Release lcMesaj,lcMesajVerificare
|
|
Endproc
|
|
*********************************************************************
|
|
Procedure citesteVersiuneProgram
|
|
Local lcFisierExe
|
|
lcFisierExe = This.cAppPath + This.cAppName + [.exe]
|
|
If Agetfileversion(aVersion, lcFisierExe) > 0
|
|
This.cVersiuneProgram = Alltrim(aVersion(4))
|
|
Else
|
|
This.cVersiuneProgram = []
|
|
Endif
|
|
If Type('aVersion') <> 'U'
|
|
Release aVersion
|
|
Endif
|
|
Endproc
|
|
*********************************************************************
|
|
Procedure citesteVersiuneDBTxt
|
|
Local lcFisierVersiuneDB
|
|
lcFisierVersiuneDB = This.cAppPath + 'versiune_db.txt'
|
|
If File(lcFisierVersiuneDB)
|
|
This.cVersiuneDBTxt = Alltrim(Filetostr(lcFisierVersiuneDB))
|
|
Else
|
|
This.cVersiuneDBTxt = []
|
|
Endif
|
|
Release lcFileVersiuneDB
|
|
Endproc
|
|
*********************************************************************
|
|
Procedure InitSettings
|
|
If Empty(This.cIniText)
|
|
Return
|
|
Endif
|
|
Strtofile(This.cIniText, This.cIniFile)
|
|
Endproc && InitSettings
|
|
*!* *********************************************************************
|
|
*!* Function HideTaskBar
|
|
*!* Local lnHandle,lcInfoBuffer
|
|
*!* lnHandle = FindWindow("Shell_TrayWnd", "")
|
|
*!* *!* SetWindowPos(lnHandle, 0, 0, 0, 0, 0, WINDOWHIDE)
|
|
*!* DEBUG
|
|
*!* SUSPEND
|
|
*!* lcInfoBuffer = This.num2dword(0) + ;
|
|
*!* This.num2dword(lnHandle) + ;
|
|
*!* This.num2dword(0) + ;
|
|
*!* This.num2dword(0) + ;
|
|
*!* This.num2dword(0) + ;
|
|
*!* This.num2dword(0)
|
|
*!* SHAppBarMessage(ABM_GETSTATE,@lcInfoBuffer)
|
|
*!* lcInfoBuffer = This.num2dword(50000) + ;
|
|
*!* This.num2dword(lnHandle) + ;
|
|
*!* This.num2dword(0) + ;
|
|
*!* This.num2dword(0) + ;
|
|
*!* This.num2dword(0) + ;
|
|
*!* This.num2dword(BITNOT(TBAR_KEEPONTOP))
|
|
*!* SHAppBarMessage(ABM_SETSTATE,@lcInfoBuffer)
|
|
*!* Endfunc
|
|
*!* *********************************************************************
|
|
*!* Function ShowTaskBar
|
|
*!* Local lnHandle
|
|
*!* lnHandle = FindWindow("Shell_TrayWnd", "")
|
|
*!* *!* SetWindowPos(lnHandle, 0, 0, 0, 0, 0, WINDOWSHOW)
|
|
*!* Endfunc
|
|
*!* *********************************************************************
|
|
*!* FUNCTION num2dword
|
|
*!* LPARAMETERS tnValue
|
|
*!* #DEFINE m0 256
|
|
*!* #DEFINE m1 65536
|
|
*!* #DEFINE m2 16777216
|
|
*!* LOCAL b0, b1, b2, b3
|
|
*!* b3 = Int(tnValue/m2)
|
|
*!* b2 = Int((tnValue- b3*m2)/m1)
|
|
*!* b1 = Int((tnValue- b3*m2 - b2*m1)/m0)
|
|
*!* b0 = Mod(tnValue, m0)
|
|
*!* RETURN Chr(b0)+Chr(b1)+Chr(b2)+Chr(b3)
|
|
*!* endfunc
|
|
*!* *********************************************************************
|
|
Procedure ReadSettings
|
|
This.cHostErrors = This.GetVariable([errors],[host])
|
|
If Upper(Alltrim(This.GetVariable([errors],[log]))) = [TRUE]
|
|
This.lLog = .T.
|
|
Else
|
|
This.lLog = .F.
|
|
Endif
|
|
|
|
*!* This.citesteSecurity()
|
|
Endproc
|
|
*********************************************************************
|
|
Function getHostErrors
|
|
Return This.cHostErrors
|
|
Endfunc
|
|
*********************************************************************
|
|
Function getlLog
|
|
Return This.lLog
|
|
Endfunc
|
|
*********************************************************************
|
|
Function getLogPath
|
|
Return Iif(This.lLog,This.cAppPath + [log_]+ This.cNumeProgram + [_] + Dtos(Date()) + [.txt],[])
|
|
Endfunc
|
|
*********************************************************************
|
|
Function getUpdateServer
|
|
Return This.GetVariable([update],[server])
|
|
Endfunc
|
|
*********************************************************************
|
|
Function getNumeProgram
|
|
Return This.cNumeProgram
|
|
Endfunc
|
|
*********************************************************************
|
|
Function getSchemaSecurity
|
|
Lparameters tcNumeServer
|
|
Local lcAliasVechi,lcSchema
|
|
lcSchema = []
|
|
lcAliasVechi = Alias()
|
|
Select (This.cCursorHost)
|
|
Locate For Upper(Alltrim(Host)) = Upper(Alltrim(tcNumeServer))
|
|
If Found()
|
|
lcSchema = Upper(Alltrim(schema))
|
|
Endif
|
|
If Used(lcAliasVechi)
|
|
Select (lcAliasVechi)
|
|
Endif
|
|
Return lcSchema
|
|
Endfunc
|
|
*********************************************************************
|
|
Function getParolaSecurity
|
|
Lparameters tcNumeServer
|
|
Local lcAliasVechi,lcParola
|
|
lcParola = []
|
|
lcAliasVechi = Alias()
|
|
Select (This.cCursorHost)
|
|
Locate For Upper(Alltrim(Host)) = Upper(Alltrim(tcNumeServer))
|
|
If Found()
|
|
lcParola = Alltrim(pwd)
|
|
lcParola = Iif(Alltrim(isEncrypted) = [1],EncryptDecrypt(lcParola,ENCRYPTKEY,"decrypt",Iif(This.nTipCriptare=2,"blowfish","old")),lcParola)
|
|
Endif
|
|
If Used(lcAliasVechi)
|
|
Select (lcAliasVechi)
|
|
Endif
|
|
Return lcParola
|
|
Endfunc
|
|
*********************************************************************
|
|
Function citesteSecurity
|
|
Lparameters tcFileExt
|
|
Local lcSecurityFile,lcSecurityPath,lnValid,lcFileExt,lcSecurityText,llSucces
|
|
llSucces = .T.
|
|
lcFileExt = Iif(Empty(tcFileExt),[XML],tcFileExt)
|
|
|
|
lcSecurityPath = This.cROAClientPath + [SECURITY\]
|
|
lcSecurityFile = lcSecurityPath + [roa_security.] + lcFileExt
|
|
lnValid = 0
|
|
|
|
If !File(lcSecurityFile)
|
|
AMESSAGEBOX('Nu exista fisierul ' + lcSecurityFile + ' !',0+16,'Atentie')
|
|
llSucces = .F.
|
|
Else
|
|
If Used(This.cCursorHost)
|
|
Use In (This.cCursorHost)
|
|
Endif
|
|
|
|
Create Cursor (This.cCursorHost)(Host c(100), schema c(100), pwd v(100), isEncrypted c(1))
|
|
lcSecurityText = Filetostr(lcSecurityFile)
|
|
If lcFileExt = [XML]
|
|
Try
|
|
Xmltocursor(lcSecurityFile, "cXML", 512)
|
|
Select cXml
|
|
Go Top
|
|
Scatter Name lofirstrecord
|
|
|
|
If lofirstrecord.Host="ENCRYPTION"
|
|
This.nTipCriptare = 2
|
|
Delete
|
|
Else
|
|
This.nTipCriptare = 1
|
|
Endif
|
|
|
|
Insert Into (This.cCursorHost) (Host, schema, pwd, isEncrypted) ;
|
|
SELECT Host, schema, pwd, "1" As isEncrypted ;
|
|
from cXml
|
|
lnValid = Reccount('cXML')
|
|
|
|
Use In cXml
|
|
Catch To loex
|
|
*!* Local loEx As Exception
|
|
AMESSAGEBOX('Mesaj: ' + loex.Message + CRLF + ;
|
|
'Eroare nr: ' + Alltrim(Transform(loex.ErrorNo)) + CRLF + ;
|
|
'Cod: ' + loex.LineContents + CRLF + 'Procedura: ' + loex.Procedure + CRLF + ;
|
|
'Linia nr: ' + Alltrim(Transform(loex.Lineno)),0+16,'Eroare')
|
|
llSucces = .F.
|
|
Finally
|
|
Use In (Select('cXML'))
|
|
Endtry
|
|
|
|
Else
|
|
Local laHost
|
|
Dimension laHost[1]
|
|
|
|
lnLen = Alines(laHost, lcSecurityText)
|
|
|
|
If lnLen > 0
|
|
For i = 1 To lnLen
|
|
lcLinie = laHost[i]
|
|
|
|
lcHost = Getwordnum(lcLinie, 1, ';')
|
|
lcSchema = Getwordnum(lcLinie, 2, ';')
|
|
lcPassword = Getwordnum(lcLinie, 3, ';')
|
|
lcMode = "0" && necriptat - security.txt
|
|
|
|
If Empty(lcHost) Or Empty(lcSchema) Or Empty(lcPassword)
|
|
Loop
|
|
Endif
|
|
|
|
lnValid = lnValid + 1
|
|
Insert Into (This.cCursorHost) (Host, schema, pwd, isEncrypted) Values (lcHost, lcSchema, lcPassword, Iif(Empty(lcMode), '0', lcMode))
|
|
Endfor
|
|
This.nTipCriptare = 0
|
|
Endif
|
|
Endif
|
|
Endif
|
|
|
|
Return llSucces
|
|
Endfunc
|
|
*********************************************************************
|
|
Procedure citesteSetariSchema
|
|
Lparameters tnIdUtil
|
|
This.oOraSettingsController.initializeaza_firma(This.nId,tnIdUtil)
|
|
Endproc
|
|
******************************************************************
|
|
Function getoFirma
|
|
Return This.oOraSettingsController.getoFirma()
|
|
Endfunc
|
|
******************************************************************
|
|
Function getAn
|
|
Return This.oOraSettingsController.getoCalendar().an
|
|
Endfunc
|
|
******************************************************************
|
|
Function getLuna
|
|
Return This.oOraSettingsController.getoCalendar().luna
|
|
Endfunc
|
|
*********************************************************************
|
|
Function getIdSucursala
|
|
Return This.oOraSettingsController.getIdSucursala()
|
|
Endfunc
|
|
*********************************************************************
|
|
Function getIdMama
|
|
Return This.oOraSettingsController.getIdMama()
|
|
Endfunc
|
|
*********************************************************************
|
|
Function getEMama
|
|
Return This.oOraSettingsController.getEMama()
|
|
Endfunc
|
|
*********************************************************************
|
|
Procedure SetVariable
|
|
Lparameters tcSection, tcVarname, tuValue
|
|
Local lcSection, lcVarname, lcValue
|
|
|
|
lcSection = Lower(Alltrim(tcSection))
|
|
lcVarname = Lower(Alltrim(tcVarname))
|
|
lcValue = Transform(tuValue)
|
|
SetIni(This.cIniFile, lcSection, lcVarname, lcValue)
|
|
|
|
Endproc && SetVariable
|
|
*********************************************************************
|
|
Procedure GetVariable
|
|
Lparameters tcSection, tcVarname
|
|
|
|
Local lcSection, lcVarname, lcValue
|
|
|
|
lcSection = Lower(Alltrim(tcSection))
|
|
lcVarname = Lower(Alltrim(tcVarname))
|
|
lcValue = GetIni(This.cIniFile, lcSection, lcVarname)
|
|
lcValue = Nvl(lcValue, '')
|
|
If Empty(lcValue) And File(This.cROAClientIniFile)
|
|
lcValue = GetIni(This.cROAClientIniFile, lcSection, lcVarname)
|
|
lcValue = Nvl(lcValue, '')
|
|
Endif
|
|
|
|
Return lcValue
|
|
Endproc && GetVariable
|
|
*********************************************************************
|
|
Function getIniFilePath
|
|
Return This.cIniFile
|
|
Endfunc
|
|
*********************************************************************
|
|
*!* FUNCTION GetValue
|
|
*!* LPARAMETERS tcSetting
|
|
*!*
|
|
*!* LOCAL lcSetting, luValue
|
|
*!* lcSetting = "THIS." + tcSetting
|
|
*!* luValue = ''
|
|
*!* IF TYPE(lcSetting) # 'U'
|
|
*!* luValue = &lcSetting
|
|
*!* ENDIF
|
|
*!* RETURN luValue
|
|
*!*
|
|
*!* ENDFUNC
|
|
*!* *********************************************************************
|
|
*!* PROCEDURE SetValue
|
|
*!* LPARAMETERS tcSetting, tuValue
|
|
*!*
|
|
*!* LOCAL lcSetting, luValue
|
|
*!* lcSetting = "THIS." + tcSetting
|
|
*!* luValue = tuValue
|
|
*!* IF TYPE(lcSetting) # 'U'
|
|
*!* &lcSetting = luValue
|
|
*!* ENDIF
|
|
*!*
|
|
*!* ENDPROC
|
|
*!* *********************************************************************
|
|
Enddefine && settingsBaseController
|