Files
vfp_roaauto/COMUN/programe/controllere/settingsbcontroller.prg

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