From 76399d4b4813d3c3bb39bb330ca75cb12d37400d Mon Sep 17 00:00:00 2001 From: harpiain@gmail.com Date: Thu, 10 Apr 2008 21:28:32 +0000 Subject: [PATCH] Alterações acumuladas realizadas/enviadas pela Dataprev/ES (Anderson Peterle - 2007/2008) - necessita de revisões e (muitos) testes --- cacic2.dof | 6 +++--- cacic2.res | Bin 4900 -> 0 bytes chkcacic/chkcacic.dof | 6 +++--- chkcacic/chkcacic.res | Bin 5212 -> 0 bytes chkcacic/main.pas | 586 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- chksis/chksis.dof | 6 +++--- chksis/chksis.dpr | 261 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--------------------------------------------------------------------------------- chksis/chksis.res | Bin 5164 -> 0 bytes col_comp/col_comp.dof | 6 +++--- col_comp/col_comp.dpr | 225 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------------------------------------------------------------------------------------------- col_comp/col_comp.res | Bin 16328 -> 0 bytes col_hard/col_hard.cfg | 7 ------- col_hard/col_hard.dof | 44 +++++++++++--------------------------------- col_hard/col_hard.dpr | 570 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- col_patr/col_patr.dof | 6 +++--- col_patr/col_patr.res | Bin 16316 -> 0 bytes col_patr/main_col_patr.dfm | 190 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--------------------------------------------------------------- col_patr/main_col_patr.pas | 348 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----------------------------- col_undi/col_undi.dof | 6 +++--- col_undi/col_undi.dpr | 47 +++++++++++++++++++++++++++++++---------------- col_undi/col_undi.res | Bin 16332 -> 0 bytes ger_cols/ger_cols.cfg | 7 ------- ger_cols/ger_cols.dof | 50 ++++++++++---------------------------------------- ger_cols/ger_cols.dpr | 559 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- ger_cols/ger_cols.res | Bin 4824 -> 0 bytes ini_cols/ini_cols.dpr | 1 + main.dfm | Bin 12416 -> 0 bytes main.pas | 56 +++++++++++++++++++++++++++++++++++--------------------- mapa/acesso.dfm | 98 +++++++++++++++++++++++++++++++++++++++++--------------------------------------------------------- mapa/acesso.pas | 30 ++++++++++++++++++------------ mapa/main_mapa.dfm | 253 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++------------------------------------------------------------------------------------------------------------- mapa/main_mapa.pas | 575 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++----------------------------------------------------------------------------------------------------------------------------------------------------------------- mapa/mapacacic.dof | 6 +++--- mapa/mapacacic.res | Bin 5140 -> 0 bytes mapa/xml.pas | 2 +- 35 files changed, 2510 insertions(+), 1441 deletions(-) diff --git a/cacic2.dof b/cacic2.dof index 4c1705e..ea02018 100755 --- a/cacic2.dof +++ b/cacic2.dof @@ -115,7 +115,7 @@ AutoIncBuild=0 MajorVer=2 MinorVer=2 Release=0 -Build=26 +Build=30 Debug=0 PreRelease=0 Special=0 @@ -126,13 +126,13 @@ CodePage=1252 [Version Info Keys] CompanyName=Dataprev - Unidade Regional Espírito Santo FileDescription=Configurador Automático e Coletor de Informações Computacionais -FileVersion=2.2.0.26 +FileVersion=2.2.0.30 InternalName= LegalCopyright= LegalTrademarks= OriginalFilename= ProductName=Cacic - Agente Principal -ProductVersion=2.2.0.26 +ProductVersion=2.2.0.30 Comments=Baseado na licença GPL (General Public License) [HistoryLists\hlUnitAliases] Count=1 diff --git a/cacic2.res b/cacic2.res index 3775a98..3029f20 100755 Binary files a/cacic2.res and b/cacic2.res differ diff --git a/chkcacic/chkcacic.dof b/chkcacic/chkcacic.dof index 8dd576a..f7f3577 100755 --- a/chkcacic/chkcacic.dof +++ b/chkcacic/chkcacic.dof @@ -115,7 +115,7 @@ AutoIncBuild=0 MajorVer=2 MinorVer=2 Release=0 -Build=24 +Build=32 Debug=0 PreRelease=0 Special=0 @@ -126,13 +126,13 @@ CodePage=1252 [Version Info Keys] CompanyName=Dataprev - Unidade Regional Espírito Santo (URES) FileDescription=Módulo Verificador/Instalador dos Agentes Principais para o Sistema CACIC -FileVersion=2.2.0.24 +FileVersion=2.2.0.32 InternalName= LegalCopyright= LegalTrademarks= OriginalFilename= ProductName=ChkCACIC -ProductVersion=2.2.0.24 +ProductVersion=2.2.0.32 Comments=Baseado na licença GPL (General Public License) [HistoryLists\hlUnitAliases] Count=1 diff --git a/chkcacic/chkcacic.res b/chkcacic/chkcacic.res index 20d9c85..59945ce 100755 Binary files a/chkcacic/chkcacic.res and b/chkcacic/chkcacic.res differ diff --git a/chkcacic/main.pas b/chkcacic/main.pas index 24515a8..545e85b 100644 --- a/chkcacic/main.pas +++ b/chkcacic/main.pas @@ -18,6 +18,12 @@ Livre(FSF) Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA ChkCacic.exe : Verificador/Instalador dos agentes principais Cacic2.exe e Ger_Cols.exe ===================================================================================================== +v 2.2.0.38 ++ Acrescentado a obtenção de versão interna do S.O. ++ Acrescentado a inserção dos agentes principais nas exceções do FireWall interno do MS-Windows VISTA... +. +Diversas rebuilds... +. v 2.2.0.17 + Acrescentado o tratamento da passagem de opções em linha de comando * chkcacic /serv= /dir=c:\%windir%\cacic @@ -72,9 +78,11 @@ uses Windows, DCPcrypt2, DCPrijndael, DCPbase64, - NTFileSecurity, IdFTP, + NTFileSecurity, + IdFTP, Tlhelp32, - dialogs; + dialogs, + ExtCtrls; var v_ip_serv_cacic, v_cacic_dir, @@ -112,34 +120,39 @@ const KeySize = 32; // 32 bytes = 256 bits BlockSize = 16; // 16 bytes = 128 bits Procedure chkcacic; +procedure ComunicaInsucesso(strIndicador : String); //2.2.0.32 Procedure CriaFormConfigura; -Procedure MostraFormConfigura; -Procedure GravaConfiguracoes; Procedure DelValorReg(Chave: String); -procedure log_diario(strMsg : String); -procedure log_DEBUG(p_msg:string); +Procedure GravaConfiguracoes; +procedure GravaIni(strFullPath : STring); procedure KillProcess(hWindowHandle: HWND); // 2.2.0.15 +procedure LogDebug(p_msg:string); +procedure LogDiario(strMsg : String); procedure Matar(v_dir,v_files: string); // 2.2.0.16 -procedure GravaIni(strFullPath : STring); -Function ListFileDir(Path: string):string; -Function FTP(p_Host : String; p_Port : String; p_Username : String; p_Password : String; p_PathServer : String; p_File : String; p_Dest : String) : Boolean; +Procedure MostraFormConfigura; + +function abstraiCSD(p_te_so : String) : integer; +Function ChecaVersoesAgentes(p_strNomeAgente : String) : integer; // 2.2.0.16 Function Explode(Texto, Separador : String) : TStrings; +Function FindWindowByTitle(WindowTitle: string): Hwnd; +Function FTP(p_Host : String; p_Port : String; p_Username : String; p_Password : String; p_PathServer : String; p_File : String; p_Dest : String) : Boolean; +function Get_File_Size(sFileToExamine: string): integer; // 2.2.0.31 +function GetFolderDate(Folder: string): TDateTime; +function GetNetworkUserName : String; // 2.2.0.32 Function GetRootKey(strRootKey: String): HKEY; -Function SetValorChaveRegEdit(Chave: String; Dado: Variant): Variant; Function GetValorChaveRegEdit(Chave: String): Variant; -Function SetValorChaveRegIni(p_Secao, p_Chave, p_Valor, p_File : String): String; Function GetValorChaveRegIni(p_Secao, p_Chave, p_File : String): String; -Function HomeDrive : string; -Function RemoveCaracteresEspeciais(Texto : String) : String; -Function FindWindowByTitle(WindowTitle: string): Hwnd; Function GetVersionInfo(p_File: string):string; -Function VerFmt(const MS, LS: DWORD): string; Function GetWinVer: Integer; +Function HomeDrive : string; Function KillTask(ExeFileName: string): Integer; -Function ChecaVersoesAgentes(p_strNomeAgente : String) : integer; // 2.2.0.16 +Function ListFileDir(Path: string):string; function Posso_Rodar_CACIC : boolean; -function GetFolderDate(Folder: string): TDateTime; -function abstraiCSD(p_te_so : String) : integer; +Function SetValorChaveRegEdit(Chave: String; Dado: Variant): Variant; +Function SetValorChaveRegIni(p_Secao, p_Chave, p_Valor, p_File : String): String; +Function RemoveCaracteresEspeciais(Texto : String) : String; +Function VerFmt(const MS, LS: DWORD): string; + type TForm1 = class(TForm) PJVersionInfo1: TPJVersionInfo; @@ -158,6 +171,98 @@ implementation uses FormConfig; {$R *.dfm} +function GetWinVer: Integer; +const + { operating system (OS)constants } + cOsUnknown = 0; + cOsWin95 = 1; + cOsWin95OSR2 = 2; // Não implementado. + cOsWin98 = 3; + cOsWin98SE = 4; + cOsWinME = 5; + cOsWinNT = 6; + cOsWin2000 = 7; + cOsXP = 8; + cOsServer2003 = 13; +var + osVerInfo: TOSVersionInfo; + platformID, + majorVer, + minorVer: Integer; + CSDVersion : String; +begin + Result := cOsUnknown; + { set operating system type flag } + osVerInfo.dwOSVersionInfoSize := SizeOf(TOSVersionInfo); + if GetVersionEx(osVerInfo) then + begin + platformId := osVerInfo.dwPlatformId; + majorVer := osVerInfo.dwMajorVersion; + minorVer := osVerInfo.dwMinorVersion; + CSDVersion := trim(osVerInfo.szCSDVersion); + + case osVerInfo.dwPlatformId of + VER_PLATFORM_WIN32_NT: { Windows NT/2000 } + begin + if majorVer <= 4 then + Result := cOsWinNT + else if (majorVer = 5) and (minorVer = 0) then + Result := cOsWin2000 + else if (majorVer = 5) and (minorVer = 1) then + Result := cOsXP + else if (majorVer = 5) and (minorVer = 2) then + Result := cOsServer2003 + else + Result := cOsUnknown; + end; + VER_PLATFORM_WIN32_WINDOWS: { Windows 9x/ME } + begin + if (majorVer = 4) and (minorVer = 0) then + Result := cOsWin95 + else if (majorVer = 4) and (minorVer = 10) then + begin + if osVerInfo.szCSDVersion[1] = 'A' then + Result := cOsWin98SE + else + Result := cOsWin98; + end + else if (majorVer = 4) and (minorVer = 90) then + Result := cOsWinME + else + Result := cOsUnknown; + end; + else + Result := cOsUnknown; + end; + end + else + Result := cOsUnknown; + + // A partir da versão 2.2.0.24, defino o valor da ID Interna e atribuo-a sem o CSDVersion à versão externa + v_te_so := IntToStr(platformId) + '.' + + IntToStr(majorVer) + '.' + + IntToStr(minorVer) + + IfThen(CSDVersion='','','.'+CSDVersion); + if (Result = 0) then + Result := abstraiCSD(v_te_so); + + LogDebug('GetWinVer => ID_interna: '+ v_te_so + ' ID_Externa: ' + IntToStr(Result)); +end; +function GetNetworkUserName : String; + // Gets the name of the user currently logged into the network on + // the local PC +var + temp: PChar; + Ptr: DWord; +const + buff = 255; +begin + ptr := buff; + temp := StrAlloc(buff); + GetUserName(temp, ptr); + Result := string(temp); + StrDispose(temp); +end; function IsAdmin: Boolean; var hAccessToken: THandle; @@ -199,7 +304,37 @@ begin end; end; -procedure log_diario(strMsg : String); +procedure ComunicaInsucesso(strIndicador : String); +var IdHTTP2: TIdHTTP; + Request_Config : TStringList; + Response_Config : TStringStream; +begin + GetWinVer(); // Para obtenção de "te_so" + // Envio notificação de insucesso para o Módulo Gerente Centralizado + Request_Config := TStringList.Create; + Request_Config.Values['cs_indicador'] := strIndicador; + Request_Config.Values['id_usuario'] := GetNetworkUserName(); + Request_Config.Values['te_so'] := v_te_so; + Response_Config := TStringStream.Create(''); + Try + Try + IdHTTP2 := TIdHTTP.Create(nil); + IdHTTP2.Post('http://' + v_ip_serv_cacic + '/cacic2/ws/instalacacic.php', Request_Config, Response_Config); + IdHTTP2.Free; + Request_Config.Free; + Response_Config.Free; + Except + End; + finally + Begin + IdHTTP2.Free; + Request_Config.Free; + Response_Config.Free; + End; + End; +end; + +procedure LogDiario(strMsg : String); var HistoricoLog : TextFile; begin @@ -226,12 +361,15 @@ begin end; end; -procedure log_DEBUG(p_msg:string); +procedure LogDebug(p_msg:string); Begin if v_Debugs then Begin - ShowMessage('DEBUG - '+p_msg); - log_diario('(v.'+getVersionInfo(ParamStr(0))+') DEBUG - '+p_msg); + + //if FileExists(Dir + '\Temp\Debugs\show.txt') then + // ShowMessage('DEBUG - '+p_msg); + + LogDiario('(v.'+getVersionInfo(ParamStr(0))+') DEBUG - '+p_msg); End; End; @@ -282,7 +420,7 @@ begin // Return the Base64 encoded result Result := Base64EncodeStr(l_Data); Except - log_diario('Erro no Processo de Criptografia'); + LogDiario('Erro no Processo de Criptografia'); End; end; @@ -318,7 +456,7 @@ begin // Return the result Result := l_Data; Except - log_diario('Erro no Processo de Decriptografia'); + LogDiario('Erro no Processo de Decriptografia'); End; end; @@ -394,7 +532,7 @@ end; Procedure SetValorDatMemoria(p_Chave : string; p_Valor : String); begin - log_DEBUG('Setando Chave "'+p_Chave+'" com "'+p_Valor+'"'); + LogDebug('Setando Chave "'+p_Chave+'" com "'+p_Valor+'"'); // Exemplo: p_Chave => Configs.nu_ip_servidor : p_Valor => 10.71.0.120 if (v_tstrCipherOpened.IndexOf(p_Chave)<>-1) then v_tstrCipherOpened[v_tstrCipherOpened.IndexOf(p_Chave)+1] := p_Valor @@ -421,90 +559,14 @@ begin [HiWord(MS), LoWord(MS), HiWord(LS), LoWord(LS)]) end; -function GetWinVer: Integer; -const - { operating system (OS)constants } - cOsUnknown = 0; - cOsWin95 = 1; - cOsWin95OSR2 = 2; // Não implementado. - cOsWin98 = 3; - cOsWin98SE = 4; - cOsWinME = 5; - cOsWinNT = 6; - cOsWin2000 = 7; - cOsXP = 8; - cOsServer2003 = 13; -var - osVerInfo: TOSVersionInfo; - platformID, - majorVer, - minorVer: Integer; - CSDVersion : String; -begin - Result := cOsUnknown; - { set operating system type flag } - osVerInfo.dwOSVersionInfoSize := SizeOf(TOSVersionInfo); - if GetVersionEx(osVerInfo) then - begin - platformId := osVerInfo.dwPlatformId; - majorVer := osVerInfo.dwMajorVersion; - minorVer := osVerInfo.dwMinorVersion; - CSDVersion := trim(osVerInfo.szCSDVersion); - case osVerInfo.dwPlatformId of - VER_PLATFORM_WIN32_NT: { Windows NT/2000 } - begin - if majorVer <= 4 then - Result := cOsWinNT - else if (majorVer = 5) and (minorVer = 0) then - Result := cOsWin2000 - else if (majorVer = 5) and (minorVer = 1) then - Result := cOsXP - else if (majorVer = 5) and (minorVer = 2) then - Result := cOsServer2003 - else - Result := cOsUnknown; - end; - VER_PLATFORM_WIN32_WINDOWS: { Windows 9x/ME } - begin - if (majorVer = 4) and (minorVer = 0) then - Result := cOsWin95 - else if (majorVer = 4) and (minorVer = 10) then - begin - if osVerInfo.szCSDVersion[1] = 'A' then - Result := cOsWin98SE - else - Result := cOsWin98; - end - else if (majorVer = 4) and (minorVer = 90) then - Result := cOsWinME - else - Result := cOsUnknown; - end; - else - Result := cOsUnknown; - end; - end - else - Result := cOsUnknown; - - // A partir da versão 2.2.0.24, defino o valor da ID Interna e atribuo-a sem o CSDVersion à versão externa - v_te_so := IntToStr(platformId) + '.' + - IntToStr(majorVer) + '.' + - IntToStr(minorVer) + - IfThen(CSDVersion='','','.'+CSDVersion); - if (Result = 0) then - Result := abstraiCSD(v_te_so); - - log_DEBUG('GetWinVer => ID_interna: '+ v_te_so + ' ID_Externa: ' + IntToStr(Result)); -end; function abstraiCSD(p_te_so : String) : integer; var tstrTe_so : tstrings; Begin tstrTe_so := Explode(p_te_so, '.'); Result := StrToInt(tstrTe_so[0] + tstrTe_so[1] + tstrTe_so[2]); - log_DEBUG('abstraiCSD=> '+ tstrTe_so[0] + tstrTe_so[1] + tstrTe_so[2]); + LogDebug('abstraiCSD=> '+ tstrTe_so[0] + tstrTe_so[1] + tstrTe_so[2]); End; function GetVersionInfo(p_File: string):string; @@ -567,7 +629,7 @@ begin end; ListaAuxSet.Free; RegEditSet.Free; - log_DEBUG('Setando valor "'+Dado+'" para chave "'+Chave+'"'); + LogDebug('Setando valor "'+Dado+'" para chave "'+Chave+'"'); end; Function RemoveCaracteresEspeciais(Texto : String) : String; @@ -746,48 +808,53 @@ Function FTP(p_Host : String; p_Port : String; p_Username : String; p_Password : var IdFTP : TIdFTP; begin Try - Log_Debug('FTP: Criando instance'); + LogDebug('FTP: Criando instance'); + IdFTP := TIdFTP.Create(nil); - Log_Debug('FTP: Host => "'+p_Host+'"'); + LogDebug('FTP: Host => "'+p_Host+'"'); IdFTP.Host := p_Host; - Log_Debug('FTP: UserName => "'+p_Username+'"'); + LogDebug('FTP: UserName => "'+p_Username+'"'); IdFTP.Username := p_Username; - Log_Debug('FTP: PassWord => "'+p_Password+'"'); + LogDebug('FTP: PassWord => "'+p_Password+'"'); IdFTP.Password := p_Password; - Log_Debug('FTP: PathServer => "'+p_PathServer+'"'); + LogDebug('FTP: PathServer => "'+p_PathServer+'"'); IdFTP.Port := strtoint(p_Port); - Log_Debug('FTP: Setando TransferType para "ftBinary"'); + LogDebug('FTP: Setando TransferType para "ftBinary"'); IdFTP.TransferType := ftBinary; - Log_Debug('FTP: Change to "'+p_PathServer+'"'); + LogDebug('FTP: Setando Passive para "true"'); + IdFTP.Passive := true; + + LogDebug('FTP: Change to "'+p_PathServer+'"'); Try if IdFTP.Connected = true then begin - Log_Debug('FTP: Connected => Desconectando...'); + LogDebug('FTP: Connected => Desconectando...'); IdFTP.Disconnect; end; - Log_Debug('FTP: Efetuando Conexão...'); + LogDebug('FTP: Efetuando Conexão...'); IdFTP.Connect(true); - Log_Debug('FTP: Change to "'+p_PathServer+'"'); + LogDebug('FTP: Change to "'+p_PathServer+'"'); IdFTP.ChangeDir(p_PathServer); Try - Log_Debug('Iniciando FTP de "'+p_Dest + '\' + p_File+'"'); - IdFTP.Get(p_File, p_Dest + '\' + p_File, True); - result := true; - Except - Begin - Log_Debug('Oops! Problemas Após Início de Operação...'); - result := false; - end; + LogDebug('Iniciando FTP de "'+p_Dest + '\' + p_File+'"'); + LogDebug('Size de "'+p_File+'" Antes do FTP => '+IntToSTR(IdFTP.Size(p_File))); + IdFTP.Get(p_File, p_Dest + '\' + p_File, True, True); + LogDebug('Size de "'+p_Dest + '\' + p_File +'" Após o FTP => '+IntToSTR(Get_File_Size(p_Dest + '\' + p_File))); + Finally + LogDebug('Size de "'+p_Dest + '\' + p_File +'" Após o FTP em Finally => '+IntToStr(Get_File_Size(p_Dest + '\' + p_File))); + IdFTP.Disconnect; + IdFTP.Free; + result := true; End; Except Begin - Log_Debug('Oops! Problemas Sem Início de Operação...'); + LogDebug('Oops! Problemas Sem Início de Operação...'); result := false; End; end; @@ -947,17 +1014,27 @@ begin end; procedure LiberaFireWall(p_objeto:string); begin - log_DEBUG('Rotina para Liberação de FireWall...'); + LogDebug('Rotina para Liberação de FireWall...'); Try - if (trim(GetValorChaveRegEdit('HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile\AuthorizedApplications\List\'+StringReplace(p_objeto+'.exe','\','?\',[rfReplaceAll])))='') then + if (abstraiCSD(v_te_so) >= 260) then // Se VISTA... Begin - SetValorChaveRegEdit('HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile\AuthorizedApplications\List\'+StringReplace(p_objeto+'.exe','\','?\',[rfReplaceAll]),p_objeto+'.exe:*:Enabled:'+p_objeto); + if (trim(GetValorChaveRegEdit('HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile\AuthorizedApplications\List\'+StringReplace(p_objeto+'.exe','\','?\',[rfReplaceAll])))='') then + Begin + SetValorChaveRegEdit('HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile\AuthorizedApplications\List\'+StringReplace(p_objeto+'.exe','\','?\',[rfReplaceAll]),p_objeto+'.exe:*:Enabled:'+p_objeto); + End + else + LogDebug('Exceção para "'+p_objeto+'" já existente.'); End - else log_DEBUG('Exceção para "'+p_objeto+'" já existente.'); + else + if (trim(GetValorChaveRegEdit('HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile\AuthorizedApplications\List\'+StringReplace(p_objeto+'.exe','\','?\',[rfReplaceAll])))='') then + Begin + SetValorChaveRegEdit('HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile\AuthorizedApplications\List\'+StringReplace(p_objeto+'.exe','\','?\',[rfReplaceAll]),p_objeto+'.exe:*:Enabled:'+p_objeto); + End + else + LogDebug('Exceção para "'+p_objeto+'" já existente.'); Except - log_DEBUG('Problema adicionando "'+p_objeto+'" à lista de exceções do FireWall!'); + LogDebug('Problema adicionando "'+p_objeto+'" à lista de exceções do FireWall!'); End; - end; { @@ -995,7 +1072,7 @@ Begin v_versao_REM := XML_RetornaValor(StringReplace(StrUpper(PChar(v_array_NomeAgente[v_array_NomeAgente.count-1])),'.EXE','',[rfReplaceAll]), v_retorno); v_versao_LOC := GetVersionInfo(p_strNomeAgente); - log_DEBUG('Checando versão de "'+p_strNomeAgente+'"'); + LogDebug('Checando versão de "'+p_strNomeAgente+'"'); intAux := v_array_NomeAgente.Count; @@ -1005,12 +1082,12 @@ Begin Begin if (GetValorChaveRegIni('versoes_agentes',v_array_NomeAgente[intAux-1],ExtractFilePath(Application.Exename)+'versoes_agentes.ini')<>'') then Begin - log_DEBUG('Encontrado arquivo "'+(ExtractFilePath(Application.Exename)+'versoes_agentes.ini')+'"'); + LogDebug('Encontrado arquivo "'+(ExtractFilePath(Application.Exename)+'versoes_agentes.ini')+'"'); v_versao_REM := GetValorChaveRegIni('versoes_agentes',v_array_NomeAgente[intAux-1],ExtractFilePath(Application.Exename)+'versoes_agentes.ini'); End; End; - log_DEBUG('Versão Remota: "'+v_versao_REM+'" - Versão Local: "'+v_versao_LOC+'"'); + LogDebug('Versão Remota: "'+v_versao_REM+'" - Versão Local: "'+v_versao_LOC+'"'); if (v_versao_REM + v_versao_LOC <> '') and (v_versao_LOC <> '0000') then @@ -1037,13 +1114,13 @@ begin while result=0 do begin strFileName := StringReplace(v_dir + '\' + SearchRec.Name,'\\','\',[rfReplaceAll]); - log_DEBUG('Tentando Excluir: '+strFileName); + LogDebug('Tentando Excluir: '+strFileName); if DeleteFile(strFileName) then - log_DEBUG('Exclusão de ' + strFileName + ' efetuada com sucesso!') + LogDebug('Exclusão de ' + strFileName + ' efetuada com sucesso!') else Begin - log_DEBUG('Exclusão não efetuada! Provavelmente já esteja sendo executado...'); - log_DEBUG('Tentarei finalizar Tarefa/Processo...'); + LogDebug('Exclusão não efetuada! Provavelmente já esteja sendo executado...'); + LogDebug('Tentarei finalizar Tarefa/Processo...'); if ((intWinVer <> 0) and (intWinVer <= 5)) or (abstraiCSD(v_te_so) < 250) then // Menor que NT Like KillTask(SearchRec.Name) @@ -1051,7 +1128,7 @@ begin KillProcess(FindWindow(PChar(SearchRec.Name),nil)); if DeleteFile(strFileName) then - log_DEBUG('Exclusão Impossibilitada de ' + strFileName + '!'); + LogDebug('Exclusão Impossibilitada de ' + strFileName + '!'); End; Result:=FindNext(SearchRec); @@ -1125,7 +1202,7 @@ procedure verifyAndGet(strModuleName, // Verifico validade do Módulo e mato-o em caso negativo. intFileSize := Get_File_Size(strDestinationFolderName + '\'+strModuleName); - log_DEBUG('verifyAndGet - intFileSize de "'+strDestinationFolderName + '\'+strModuleName+'": ' + IntToStr(intFileSize)); + LogDebug('verifyAndGet - intFileSize de "'+strDestinationFolderName + '\'+strModuleName+'": ' + IntToStr(intFileSize)); If (intFileSize <= 0) then Matar(strDestinationFolderName, strModuleName); @@ -1134,7 +1211,7 @@ procedure verifyAndGet(strModuleName, Begin if (FileExists(ExtractFilePath(Application.Exename) + '\modulos\'+strModuleName)) then Begin - log_diario('Copiando '+strModuleName+' de '+ExtractFilePath(Application.Exename)+'modulos\'); + LogDiario('Copiando '+strModuleName+' de '+ExtractFilePath(Application.Exename)+'modulos\'); CopyFile(PChar(ExtractFilePath(Application.Exename) + 'modulos\'+strModuleName), PChar(strDestinationFolderName + '\'+strModuleName),false); FileSetAttr (PChar(strDestinationFolderName + '\' + strModuleName),0); // Retira os atributos do arquivo para evitar o erro FILE ACCESS DENIED End @@ -1150,17 +1227,17 @@ procedure verifyAndGet(strModuleName, strDestinationFolderName) and (strExibeInformacoes = 'S') then MessageDLG(#13#10+'ATENÇÃO! Não foi possível efetuar FTP para "'+strDestinationFolderName + '\'+strModuleName+'".'+#13#10+'Verifique o Servidor de Updates.',mtError,[mbOK],0); Except - log_DEBUG('FTP de "'+ strDestinationFolderName + '\' + strModuleName+'" Interrompido.'); + LogDebug('FTP de "'+ strDestinationFolderName + '\' + strModuleName+'" Interrompido.'); End; if not FileExists(strDestinationFolderName + '\' + strModuleName) Then Begin - log_DEBUG('Problemas Efetuando Download de '+ strDestinationFolderName + '\' + strModuleName+' (FTP)'); - log_DEBUG('Conexão:'); - log_DEBUG(strServUpdates+', '+strPortaServUpdates+', '+strNomeUsuarioLoginServUpdates+', '+strSenhaLoginServUpdates+', '+strPathServUpdates); + LogDebug('Problemas Efetuando Download de '+ strDestinationFolderName + '\' + strModuleName+' (FTP)'); + LogDebug('Conexão:'); + LogDebug(strServUpdates+', '+strPortaServUpdates+', '+strNomeUsuarioLoginServUpdates+', '+strSenhaLoginServUpdates+', '+strPathServUpdates); End else - log_diario('Download Concluído de "'+strModuleName+'" (FTP)'); + LogDiario('Download Concluído de "'+strModuleName+'" (FTP)'); end; End; End; @@ -1227,15 +1304,24 @@ begin bool_CommandLine := true; End; + + // ATENÇÃO: Trecho para uso exclusivo no âmbito da DATAPREV a nível Brasil, para internalização maciça. + // Para envio à Comunidade, retirar as chaves mais abaixo, para que o código padrão seja descomentado. + // Anderson Peterle - FEV2008 + //v_ip_serv_cacic := 'UXRJO115'; + //v_cacic_dir := 'Cacic'; + //v_exibe_informacoes := 'N'; // Manter o "N", pois, esse mesmo ChkCacic será colocado em NetLogons! + + + if not bool_CommandLine then Begin If not (FileExists(ExtractFilePath(Application.Exename) + '\chkcacic.ini')) then Begin - log_diario('Abrindo formulário de configurações'); + LogDiario('Abrindo formulário de configurações'); CriaFormConfigura; MostraFormConfigura; End; - v_ip_serv_cacic := GetValorChaveRegIni('Cacic2', 'ip_serv_cacic' , ExtractFilePath(Application.Exename) + '\chkcacic.ini'); v_cacic_dir := GetValorChaveRegIni('Cacic2', 'cacic_dir' , ExtractFilePath(Application.Exename) + '\chkcacic.ini'); v_exibe_informacoes := GetValorChaveRegIni('Cacic2', 'exibe_informacoes', ExtractFilePath(Application.Exename) + '\chkcacic.ini'); @@ -1249,7 +1335,7 @@ begin if (FormatDateTime('ddmmyyyy', GetFolderDate(Dir + '\Temp\Debugs')) = FormatDateTime('ddmmyyyy', date)) then Begin v_Debugs := true; - log_DEBUG('Pasta "' + Dir + '\Temp\Debugs" com data '+FormatDateTime('dd-mm-yyyy', GetFolderDate(Dir + '\Temp\Debugs'))+' encontrada. DEBUG ativado.'); + LogDebug('Pasta "' + Dir + '\Temp\Debugs" com data '+FormatDateTime('dd-mm-yyyy', GetFolderDate(Dir + '\Temp\Debugs'))+' encontrada. DEBUG ativado.'); End; End; @@ -1258,20 +1344,21 @@ begin // Verifico se o S.O. é NT Like e se o Usuário está com privilégio administrativo... if (((intWinVer <> 0) and (intWinVer >= 6)) or (abstraiCSD(v_te_so) >= 250)) and - (v_exibe_informacoes = 'S') and not IsAdmin then // Se NT/2000/XP/... Begin - MessageDLG(#13#10+'ATENÇÃO! Essa aplicação requer execução com nível administrativo.',mtError,[mbOK],0); + if (v_exibe_informacoes = 'S') then + MessageDLG(#13#10+'ATENÇÃO! Essa aplicação requer execução com nível administrativo.',mtError,[mbOK],0); + ComunicaInsucesso('0'); // O indicador "0" (zero) sinalizará falta de privilégio na estação End else Begin - log_DEBUG(':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::'); - log_DEBUG(':::::::::::::: OBTENDO VALORES DO "chkcacic.ini" ::::::::::::::'); - log_DEBUG(':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::'); - log_DEBUG('Drive de instalação......................: '+v_home_drive); - log_DEBUG('Pasta para instalação....................: '+Dir); - log_DEBUG('IP do servidor...........................: '+v_ip_serv_cacic); - log_DEBUG(':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::'); + LogDebug(':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::'); + LogDebug(':::::::::::::: OBTENDO VALORES DO "chkcacic.ini" ::::::::::::::'); + LogDebug(':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::'); + LogDebug('Drive de instalação......................: '+v_home_drive); + LogDebug('Pasta para instalação....................: '+Dir); + LogDebug('IP do servidor...........................: '+v_ip_serv_cacic); + LogDebug(':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::'); bool_configura := false; //chave AES. Recomenda-se que cada empresa/órgão altere a sua chave. @@ -1281,50 +1368,42 @@ begin v_DatFileName := Dir + '\cacic2.dat'; v_tstrCipherOpened := CipherOpen(v_DatFileName); - if ((intWinVer <> 0) and (intWinVer >= 8)) or - (abstraiCSD(v_te_so) >= 250) then // Se >= WinXP... + (abstraiCSD(v_te_so) >= 250) then // Se >= Maior ou Igual ao WinXP... Begin Try - // Libero as policies do FireWall (testes) - Try + // Libero as policies do FireWall Interno + if (abstraiCSD(v_te_so) >= 260) then // Maior ou Igual ao VISTA... Begin - Log_DEBUG('Valor de "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\DisableStatefulFTP" => '+trim(GetValorChaveRegEdit('HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\DisableStatefulFTP'))); - if (trim(GetValorChaveRegEdit('HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\DisableStatefulFTP'))='0') then - SetValorChaveRegEdit('HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\DisableStatefulFTP','1'); - - Log_DEBUG('Valor de "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile\EnableFirewall" => '+trim(GetValorChaveRegEdit('HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile\EnableFirewall'))); - if (trim(GetValorChaveRegEdit('HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile\EnableFirewall'))='1') then - SetValorChaveRegEdit('HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile\EnableFirewall','0'); - - Log_DEBUG('Valor de "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile\DisableNotifications" => '+trim(GetValorChaveRegEdit('HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile\DisableNotifications'))); - if (trim(GetValorChaveRegEdit('HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile\DisableNotifications'))='0') then - SetValorChaveRegEdit('HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\StandardProfile\DisableNotifications','1'); - - Log_DEBUG('Valor de "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\DomainProfile\DisableNotifications" => '+trim(GetValorChaveRegEdit('HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\DomainProfile\DisableNotifications'))); - if (trim(GetValorChaveRegEdit('HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\DomainProfile\DisableNotifications'))='0') then - SetValorChaveRegEdit('HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\DomainProfile\DisableNotifications','1'); - - Log_DEBUG('Valor de "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\DomainProfile\EnableFirewall" => '+trim(GetValorChaveRegEdit('HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\DomainProfile\EnableFirewall'))); - if (trim(GetValorChaveRegEdit('HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\DomainProfile\EnableFirewall'))='1') then - SetValorChaveRegEdit('HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\DomainProfile\EnableFirewall','0'); - - Log_DEBUG('Valor de "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\PublicProfile\DisableNotifications" => '+trim(GetValorChaveRegEdit('HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\PublicProfile\DisableNotifications'))); - if (trim(GetValorChaveRegEdit('HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\PublicProfile\DisableNotifications'))='0') then - SetValorChaveRegEdit('HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\PublicProfile\DisableNotifications','1'); - - Log_DEBUG('Valor de "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\PublicProfile\EnableFirewall" => '+trim(GetValorChaveRegEdit('HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\PublicProfile\EnableFirewall'))); - if (trim(GetValorChaveRegEdit('HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\PublicProfile\EnableFirewall'))='1') then - SetValorChaveRegEdit('HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\PublicProfile\EnableFirewall','0'); + Try + Begin + // Liberando as conexões de Saída para o FTP + SetValorChaveRegEdit('HKEY_LOCAL//_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\FirewallRules\FTP-Out-TCP','v2.0|Action=Allow|Active=TRUE|Dir=Out|Protocol=6|Profile=Private|App=C:\\windows\\system32\\ftp.exe|Name=Programa de transferência de arquivos|Desc=Programa de transferência de arquivos|Edge=FALSE|'); + SetValorChaveRegEdit('HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\FirewallRules\FTP-Out-UDP','v2.0|Action=Allow|Active=TRUE|Dir=Out|Protocol=17|Profile=Private|App=C:\\windows\\system32\\ftp.exe|Name=Programa de transferência de arquivos|Desc=Programa de transferência de arquivos|Edge=FALSE|'); + + // Liberando as conexões de Saída para o Ger_Cols + SetValorChaveRegEdit('HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\FirewallRules\CACIC-GERCOLS-Out-TCP','v2.0|Action=Allow|Active=TRUE|Dir=Out|Protocol=6|Profile=Private|App='+Dir+'\modulos\\ger_cols.exe|Name=Módulo Gerente de Coletas do Sistema CACIC|Desc=Módulo Gerente de Coletas do Sistema CACIC|Edge=FALSE|'); + SetValorChaveRegEdit('HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\FirewallRules\CACIC-GERCOLS-Out-UDP','v2.0|Action=Allow|Active=TRUE|Dir=Out|Protocol=17|Profile=Private|App='+Dir+'\modulos\\ger_cols.exe|Name=Módulo Gerente de Coletas do Sistema CACIC|Desc=Módulo Gerente de Coletas do Sistema CACIC|Edge=FALSE|'); + + // Liberando as conexões de Saída para o ChkCacic + SetValorChaveRegEdit('HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\FirewallRules\CACIC-CHKCACIC-Out-TCP','v2.0|Action=Allow|Active=TRUE|Dir=Out|Protocol=6|Profile=Private|App='+ExtractFilePath(Application.Exename) + '\chkcacic.exe|Name=chkcacic.exe|Desc=chkcacic.exe|Edge=FALSE|'); + SetValorChaveRegEdit('HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\FirewallRules\CACIC-CHKCACIC-Out-UDP','v2.0|Action=Allow|Active=TRUE|Dir=Out|Protocol=17|Profile=Private|App='+ExtractFilePath(Application.Exename) + '\chkcacic.exe|Name=chkcacic.exe|Desc=chkcacic.exe|Edge=FALSE|'); + + // Liberando as conexões de Saída para o ChkSis + SetValorChaveRegEdit('HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\FirewallRules\CACIC-CHKSIS-Out-TCP','v2.0|Action=Allow|Active=TRUE|Dir=Out|Protocol=6|Profile=Private|App='+HomeDrive + '\chksis.exe|Name=Módulo Verificador de Integridade do Sistema CACIC|Desc=Módulo Verificador de Integridade do Sistema CACIC|Edge=FALSE|'); + SetValorChaveRegEdit('HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\FirewallRules\CACIC-CHKSIS-Out-UDP','v2.0|Action=Allow|Active=TRUE|Dir=Out|Protocol=17|Profile=Private|App='+HomeDrive + '\chksis.exe|Name=Módulo Verificador de Integridade do Sistema CACIC|Desc=Módulo Verificador de Integridade do Sistema CACIC|Edge=FALSE|'); + End + Except + LogDebug('Problema Liberando Policies de FireWall!'); + End; End - Except - log_DEBUG('Problema Liberando Policies de FireWall!'); - End; - - // Acrescento o ChkCacic às exceções do FireWall nativo... - {chkcacic} - LiberaFireWall(ExtractFilePath(Application.Exename) + 'chkcacic'); - + else + Begin + // Acrescento o ChkCacic às exceções do FireWall nativo... + {chkcacic} + LogDebug('Inserindo "'+ExtractFilePath(Application.Exename) + 'chkcacic" nas exceções do FireWall!'); + LiberaFireWall(ExtractFilePath(Application.Exename) + 'chkcacic'); + End; Except End; End; @@ -1334,7 +1413,7 @@ begin while (v_ip_serv_cacic = '') or (v_cacic_dir = '') or bool_configura do Begin - log_diario('Abrindo formulário de configurações'); + LogDiario('Abrindo formulário de configurações'); bool_configura := false; CriaFormConfigura; Configs.Edit_ip_serv_cacic.text := v_ip_serv_cacic; @@ -1352,7 +1431,7 @@ begin // Verifico a existência do diretório configurado para o Cacic, normalmente CACIC if not DirectoryExists(Dir) then begin - log_diario('Criando pasta '+Dir); + LogDiario('Criando pasta '+Dir); ForceDirectories(Dir); end; @@ -1361,14 +1440,14 @@ begin begin Matar(Dir, '\cacic2.exe'); ForceDirectories(Dir + '\modulos'); - log_diario('Criando pasta '+Dir+'\modulos'); + LogDiario('Criando pasta '+Dir+'\modulos'); end; // Crio o SubDiretório TEMP, caso não exista if not DirectoryExists(Dir+'\temp') then begin ForceDirectories(Dir + '\temp'); - log_diario('Criando pasta '+Dir+'\temp'); + LogDiario('Criando pasta '+Dir+'\temp'); end; @@ -1380,6 +1459,7 @@ begin Response_Config := TStringStream.Create(''); Try + LogDiario('Iniciando comunicação com '+'http://' + v_ip_serv_cacic + '/cacic2/ws/get_config.php'); IdHTTP1 := TIdHTTP.Create(IdHTTP1); idHTTP1.AllowCookies := true; idHTTP1.ASCIIFilter := false; @@ -1399,9 +1479,11 @@ begin idHTTP1.Request.ContentType := 'text/html'; idHTTP1.SendBufferSize := 32768; idHTTP1.Tag := 0; - log_diario('Iniciando comunicação com '+'http://' + v_ip_serv_cacic + '/cacic2/ws/get_config.php'); + IdHTTP1.Post('http://' + v_ip_serv_cacic + '/cacic2/ws/get_config.php', Request_Config, Response_Config); + idHTTP1.Disconnect; idHTTP1.Free; + v_retorno := Response_Config.DataString; v_te_serv_updates := XML_RetornaValor('te_serv_updates' , v_retorno); v_nu_porta_serv_updates := XML_RetornaValor('nu_porta_serv_updates' , v_retorno); @@ -1409,27 +1491,27 @@ begin v_te_senha_login_serv_updates := XML_RetornaValor('te_senha_login_serv_updates' , v_retorno); v_te_path_serv_updates := XML_RetornaValor('te_path_serv_updates' , v_retorno); - log_DEBUG(':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::'); - log_DEBUG(':::::::::::::::: VALORES OBTIDOS NO Gerente WEB :::::::::::::::'); - log_DEBUG(':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::'); - log_DEBUG('Servidor de updates......................: '+v_te_serv_updates); - log_DEBUG('Porta do servidor de updates.............: '+v_nu_porta_serv_updates); - log_DEBUG('Usuário para login no servidor de updates: '+v_nm_usuario_login_serv_updates); - log_DEBUG('Pasta no servidor de updates.............: '+v_te_path_serv_updates); - log_DEBUG(' '); - log_DEBUG('Versões dos Agentes Principais:'); - log_DEBUG('------------------------------'); - log_DEBUG('Cacic2 - Agente do Systray.........: '+XML_RetornaValor('CACIC2', v_retorno)); - log_DEBUG('Ger_Cols - Gerente de Coletas........: '+XML_RetornaValor('GER_COLS', v_retorno)); - log_DEBUG('ChkSis - Verificador de Integridade: '+XML_RetornaValor('CHKSIS', v_retorno)); - log_DEBUG(':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::'); + LogDebug(':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::'); + LogDebug(':::::::::::::::: VALORES OBTIDOS NO Gerente WEB :::::::::::::::'); + LogDebug(':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::'); + LogDebug('Servidor de updates......................: '+v_te_serv_updates); + LogDebug('Porta do servidor de updates.............: '+v_nu_porta_serv_updates); + LogDebug('Usuário para login no servidor de updates: '+v_nm_usuario_login_serv_updates); + LogDebug('Pasta no servidor de updates.............: '+v_te_path_serv_updates); + LogDebug(' '); + LogDebug('Versões dos Agentes Principais:'); + LogDebug('------------------------------'); + LogDebug('Cacic2 - Agente do Systray.........: '+XML_RetornaValor('CACIC2', v_retorno)); + LogDebug('Ger_Cols - Gerente de Coletas........: '+XML_RetornaValor('GER_COLS', v_retorno)); + LogDebug('ChkSis - Verificador de Integridade: '+XML_RetornaValor('CHKSIS', v_retorno)); + LogDebug(':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::'); Except Begin if v_exibe_informacoes = 'S' then MessageDLG(#13#10+'ATENÇÃO! Não foi possível estabelecer comunicação com o módulo Gerente WEB em "'+v_ip_serv_cacic+'".',mtError,[mbOK],0); - log_diario('**********************************************************'); - log_diario('Oops! Não Foi Possível Comunicar com o Módulo Gerente WEB!'); - log_diario('**********************************************************'); + LogDiario('**********************************************************'); + LogDiario('Oops! Não Foi Possível Comunicar com o Módulo Gerente WEB!'); + LogDiario('**********************************************************'); End End; Request_Config.Free; @@ -1440,10 +1522,11 @@ begin if ((intWinVer <> 0) and (intWinVer > 5)) or (abstraiCSD(v_te_so) >= 250) then Begin - log_DEBUG(':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::'); - log_DEBUG('::::::: VERIFICANDO FILE SYSTEM E ATRIBUINDO PERMISSÕES :::::::'); - log_DEBUG(':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::'); + LogDebug(':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::'); + LogDebug('::::::: VERIFICANDO FILE SYSTEM E ATRIBUINDO PERMISSÕES :::::::'); + LogDebug(':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::'); + // Atribuição de acesso ao módulo principal e pastas Form1.FS_SetSecurity(Dir); Form1.FS_SetSecurity(Dir + '\cacic2.exe'); Form1.FS_SetSecurity(Dir + '\cacic2.dat'); @@ -1451,7 +1534,7 @@ begin Form1.FS_SetSecurity(Dir + '\modulos'); Form1.FS_SetSecurity(Dir + '\temp'); - // Atribuição de acesso a todos os módulos para permissão de atualizações de versão + // Atribuição de acesso aos módulos de gerenciamento de coletas e coletas para permissão de atualizações de versões Form1.FS_SetSecurity(Dir + '\modulos\ger_cols.exe'); Form1.FS_SetSecurity(Dir + '\modulos\col_anvi.exe'); Form1.FS_SetSecurity(Dir + '\modulos\col_comp.exe'); @@ -1470,7 +1553,7 @@ begin // Atribuição de acesso para atualização/exclusão de log do instalador Form1.FS_SetSecurity(v_home_drive + 'chkcacic.log'); - log_DEBUG(':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::'); + LogDebug(':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::'); End; // Verificação de versão do cacic2.exe e exclusão em caso de versão antiga/diferente da atual @@ -1548,7 +1631,7 @@ begin // Tento detectar o ChkSis.INI e crio-o caso necessário If not FileExists(HomeDrive + '\chksis.ini') Then begin - log_DEBUG('Criando '+HomeDrive + '\chksis.ini'); + LogDebug('Criando '+HomeDrive + '\chksis.ini'); GravaIni(HomeDrive + '\chksis.ini'); FileSetAttr ( PChar(HomeDrive + '\chksis.ini'),0); // Retira os atributos do arquivo para evitar o erro FILE ACCESS DENIED em máquinas 2000 end; @@ -1556,13 +1639,13 @@ begin // Tento detectar o cacic2.INI e crio-o caso necessário If not FileExists(Dir + '\cacic2.ini') Then begin - log_DEBUG('Criando/Recriando '+Dir + '\cacic2.ini'); + LogDebug('Criando/Recriando '+Dir + '\cacic2.ini'); GravaIni(Dir + '\cacic2.ini'); end; // Verifico se existe a pasta "modulos" v_modulos := ListFileDir(ExtractFilePath(Application.Exename)+'\modulos\*.exe'); - if (v_modulos <> '') then log_diario('Pasta "Modulos" encontrada..'); + if (v_modulos <> '') then LogDiario('Pasta "Modulos" encontrada..'); // Tento detectar o Agente Principal e copio ou faço FTP caso não exista verifyAndGet('cacic2.exe', @@ -1593,7 +1676,7 @@ begin (v_array_modulos[intAux]<>'ger_cols.exe') and (v_array_modulos[intAux]<>'chksis.exe') then Begin - log_diario('Copiando '+v_array_modulos[intAux]+' de '+ExtractFilePath(Application.Exename)+'modulos\'); + LogDiario('Copiando '+v_array_modulos[intAux]+' de '+ExtractFilePath(Application.Exename)+'modulos\'); CopyFile(PChar(ExtractFilePath(Application.Exename) + 'modulos\'+v_array_modulos[intAux]), PChar(Dir + '\modulos\'+v_array_modulos[intAux]),false); FileSetAttr (PChar(Dir + '\modulos\'+v_array_modulos[intAux]),0); // Retira os atributos do arquivo para evitar o erro FILE ACCESS DENIED em máquinas 2000 End; @@ -1640,16 +1723,17 @@ begin // Acrescento o ChkSis e o Ger_Cols às exceções do FireWall nativo... {chksis} + LogDebug('Inserindo "'+HomeDrive + '\chksis" nas exceções do FireWall!'); LiberaFireWall(HomeDrive + '\chksis'); {ger_cols} + LogDebug('Inserindo "'+Dir + '\modulos\ger_cols" nas exceções do FireWall!'); LiberaFireWall(Dir + '\modulos\ger_cols'); - Except End; End; - log_DEBUG('Gravando registros para auto-execução'); + LogDebug('Gravando registros para auto-execução'); // Crio a chave/valor cacic2 para autoexecução do Cacic, caso não exista esta chave/valor // Crio a chave/valor chksis para autoexecução do ChkSIS, caso não exista esta chave/valor @@ -1663,26 +1747,26 @@ begin // Igualo as chaves ip_serv_cacic dos arquivos chksis.ini e cacic2.ini! SetValorDatMemoria('Configs.EnderecoServidor', v_ip_serv_cacic); - log_DEBUG('Fechando Arquivo de Configurações do Cacic'); + LogDebug('Fechando Arquivo de Configurações do Cacic'); CipherClose(v_DatFileName); - log_DEBUG('Abrindo Arquivo de Configurações do ChkSis'); + LogDebug('Abrindo Arquivo de Configurações do ChkSis'); CipherOpen(HomeDrive + '\chksis.dat'); SetValorDatMemoria('Cacic2.ip_serv_cacic', v_ip_serv_cacic); CipherClose(HomeDrive + '\chksis.dat'); // Volto a gravar o chksis.ini para o difícil caso de leitura por versões antigas SetValorChaveRegIni('Cacic2', 'ip_serv_cacic', v_ip_serv_cacic, HomeDrive + '\chksis.ini'); - log_DEBUG('Fechando Arquivo de Configurações do ChkSis'); + LogDebug('Fechando Arquivo de Configurações do ChkSis'); - log_DEBUG('Resgatando informações para identificação de alteração do agente CACIC2'); + LogDebug('Resgatando informações para identificação de alteração do agente CACIC2'); // Pego as informações de dia/mês/ano/horas/minutos/segundos/milésimos que identificam os agentes strDataHoraCACIC2_FIM := FormatDateTime('ddmmyyyyhhnnsszzz', GetFolderDate(Dir + '\cacic2.exe')); - log_DEBUG('Inicial => "' + strDataHoraCACIC2_INI + '" Final => "' + strDataHoraCACIC2_FIM + '"'); + LogDebug('Inicial => "' + strDataHoraCACIC2_INI + '" Final => "' + strDataHoraCACIC2_FIM + '"'); - log_DEBUG('Resgatando informações para identificação de alteração do agente GER_COLS'); + LogDebug('Resgatando informações para identificação de alteração do agente GER_COLS'); strDataHoraGERCOLS_FIM := FormatDateTime('ddmmyyyyhhnnsszzz', GetFolderDate(Dir + '\modulos\ger_cols.exe')); - log_DEBUG('Inicial => "' + strDataHoraGERCOLS_INI + '" Final => "' + strDataHoraGERCOLS_FIM + '"'); + LogDebug('Inicial => "' + strDataHoraGERCOLS_INI + '" Final => "' + strDataHoraGERCOLS_FIM + '"'); // Caso o Cacic tenha sido baixado executo-o com parâmetro de configuração de servidor if ((strDataHoraCACIC2_INI <> strDataHoraCACIC2_FIM) OR @@ -1692,33 +1776,37 @@ begin if (GetValorChaveRegEdit('HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\cacic2')=Dir + '\cacic2.exe') then Begin if (v_exibe_informacoes = 'S') then - MessageDlg(#13#10+#13#10+v_te_instala_frase_sucesso+#13#10+#13#10+#13#10 + '======================================================' + #13#10 + v_te_texto_janela_instalacao+ '======================================================',mtInformation,[mbok],0); + MessageDlg(#13#10+#13#10+'Sistema CACIC'+#13#10+#13#10+v_te_instala_frase_sucesso+#13#10+#13#10+#13#10 + '======================================================' + #13#10 + v_te_texto_janela_instalacao+ #13#10 +'======================================================',mtInformation,[mbok],0); End - else if (v_exibe_informacoes = 'S') then - MessageDlg(#13#10+#13#10+v_te_instala_frase_insucesso+#13#10+#13#10+#13#10 + '======================================================' + #13#10 + v_te_texto_janela_instalacao+ '======================================================',mtInformation,[mbok],0); - + else + Begin + if (v_exibe_informacoes = 'S') then + MessageDlg(#13#10+#13#10+'Sistema CACIC'+#13#10+#13#10+v_te_instala_frase_insucesso+#13#10+#13#10+#13#10 + '======================================================' + #13#10 + v_te_texto_janela_instalacao+ #13#10 +'======================================================',mtInformation,[mbok],0); + ComunicaInsucesso('1'); // O indicador "1" sinalizará que não foi devido a privilégio na estação + End; End else - log_diario('ATENÇÃO: Instalação NÃO REALIZADA ou ATUALIZAÇÃO DESNECESSÁRIA!'); + LogDiario('ATENÇÃO: Instalação NÃO REALIZADA ou ATUALIZAÇÃO DESNECESSÁRIA!'); - if Posso_Rodar_CACIC or not bool_ExistsAutoRun then + if Posso_Rodar_CACIC or + not bool_ExistsAutoRun or + (strDataHoraCACIC2_INI <> strDataHoraCACIC2_FIM) then Begin - log_DEBUG('Executando '+Dir + '\cacic2.exe /ip_serv_cacic=' + v_ip_serv_cacic); + LogDebug('Executando '+Dir + '\cacic2.exe /ip_serv_cacic=' + v_ip_serv_cacic); // Caso tenha havido download de agentes principais, executar coletas imediatamente... - if ((strDataHoraCACIC2_INI <> strDataHoraCACIC2_FIM) OR - (strDataHoraGERCOLS_INI <> strDataHoraGERCOLS_FIM)) then + if (strDataHoraCACIC2_INI <> strDataHoraCACIC2_FIM) then WinExec(PChar(Dir + '\cacic2.exe /ip_serv_cacic=' + v_ip_serv_cacic+ ' /execute'), SW_HIDE) else WinExec(PChar(Dir + '\cacic2.exe /ip_serv_cacic=' + v_ip_serv_cacic ), SW_HIDE); End else - log_DEBUG('Chave de Auto-Execução já existente ou Execução já iniciada...'); + LogDebug('Chave de Auto-Execução já existente ou Execução já iniciada...'); End; Except - log_diario('Falha na Instalação/Atualização'); + LogDiario('Falha na Instalação/Atualização'); End; - + Application.Terminate; end; function FindWindowByTitle(WindowTitle: string): Hwnd; @@ -1815,7 +1903,7 @@ begin // if (FindWindowByTitle('chksis') = 0) then chkcacic; // else -// log_diario('Não executei devido execução em paralelo de "chksis"'); +// LogDiario('Não executei devido execução em paralelo de "chksis"'); Application.Terminate; end; @@ -1838,7 +1926,7 @@ begin Begin // If local group, alias or user... v_FS_Security.FileRights[intAux] := [faAll]; v_FS_Security.DirectoryRights[intAux] := [faAll]; - log_DEBUG(p_Target + ' [Full Access] >> '+v_FS_Security.EntryName[intAux]); + LogDebug(p_Target + ' [Full Access] >> '+v_FS_Security.EntryName[intAux]); //Setting total access on p_Target to local groups. End; End; @@ -1848,7 +1936,7 @@ begin // Set total permissions to local groups v_FS_Security.SetSecurity; end - else Log_diario('File System: "' + v_FS_Security.FileSystemName+'" - Ok!'); + else LogDiario('File System: "' + v_FS_Security.FileSystemName+'" - Ok!'); v_FS_Security.Free; end; diff --git a/chksis/chksis.dof b/chksis/chksis.dof index 5969e53..09a2c24 100755 --- a/chksis/chksis.dof +++ b/chksis/chksis.dof @@ -115,7 +115,7 @@ AutoIncBuild=0 MajorVer=2 MinorVer=2 Release=0 -Build=20 +Build=29 Debug=0 PreRelease=0 Special=0 @@ -126,13 +126,13 @@ CodePage=1252 [Version Info Keys] CompanyName=Dataprev - Unidade Regional Espírito Santo (URES) FileDescription=Módulo Verificador de Integridade do Sistema CACIC -FileVersion=2.2.0.20 +FileVersion=2.2.0.29 InternalName= LegalCopyright= LegalTrademarks= OriginalFilename= ProductName=ChkSIS -ProductVersion=2.2.0.20 +ProductVersion=2.2.0.29 Comments=Baseado na licença GPL (General Public License) [HistoryLists\hlDebugSourcePath] Count=1 diff --git a/chksis/chksis.dpr b/chksis/chksis.dpr index c1e8fc2..0932cff 100755 --- a/chksis/chksis.dpr +++ b/chksis/chksis.dpr @@ -50,8 +50,10 @@ var PJVersionInfo1: TPJVersionInfo; v_DatFileName, v_versao_local, v_versao_remota, - v_retorno : String; - + v_retorno, + v_te_so : String; + intWinVer : integer; + v_Debugs : Boolean; var v_tstrCipherOpened : TStrings; // Some constants that are dependant on the cipher being used @@ -111,14 +113,17 @@ Begin Implode := strAux; end; -procedure log_diario(strMsg,p_path : String); +procedure log_diario(strMsg : String); var HistoricoLog : TextFile; - strDataArqLocal, strDataAtual : string; + strDataArqLocal, + strDataAtual, + p_path : string; begin try - FileSetAttr (Dir + '\cacic2.log',0); // Retira os atributos do arquivo para evitar o erro FILE ACCESS DENIED em máquinas 2000 - AssignFile(HistoricoLog,Dir + '\cacic2.log'); {Associa o arquivo a uma variável do tipo TextFile} + p_path := Dir + '\chksis.log'; + FileSetAttr (p_path,0); // Retira os atributos do arquivo para evitar o erro FILE ACCESS DENIED em máquinas 2000 + AssignFile(HistoricoLog,p_path); {Associa o arquivo a uma variável do tipo TextFile} {$IOChecks off} Reset(HistoricoLog); {Abre o arquivo texto} {$IOChecks on} @@ -128,7 +133,7 @@ begin Append(HistoricoLog); Writeln(HistoricoLog,FormatDateTime('dd/mm hh:nn:ss : ', Now) + '======================> Iniciando o Log <======================='); end; - DateTimeToString(strDataArqLocal, 'yyyymmdd', FileDateToDateTime(Fileage(Dir + '\cacic2.log'))); + DateTimeToString(strDataArqLocal, 'yyyymmdd', FileDateToDateTime(Fileage(p_path))); DateTimeToString(strDataAtual , 'yyyymmdd', Date); if (strDataAtual <> strDataArqLocal) then // Se o arquivo INI não é da data atual... begin @@ -140,9 +145,20 @@ begin Writeln(HistoricoLog,FormatDateTime('dd/mm hh:nn:ss : ', Now)+ '[Verif.Integr.Sistema] '+strMsg); {Grava a string Texto no arquivo texto} CloseFile(HistoricoLog); {Fecha o arquivo texto} except - log_diario('Erro na gravação do log!',ExtractFilePath(ParamStr(0))); + log_diario('Erro na gravação do log!'); end; end; +function GetVersionInfo(p_File: string):string; +begin + PJVersionInfo1 := TPJVersionInfo.Create(PJVersionInfo1); + PJVersionInfo1.FileName := PChar(p_File); + Result := VerFmt(PJVersionInfo1.FixedFileInfo.dwFileVersionMS, PJVersionInfo1.FixedFileInfo.dwFileVersionLS); +end; + +procedure log_DEBUG(p_msg:string); +Begin + if v_Debugs then log_diario('(v.'+getVersionInfo(ParamStr(0))+') DEBUG - '+p_msg); +End; // Pad a string with zeros so that it is a multiple of size function PadWithZeros(const str : string; size : integer) : string; @@ -191,7 +207,7 @@ begin // Return the Base64 encoded result Result := Base64EncodeStr(l_Data); Except - log_diario('Erro no Processo de Criptografia',ExtractFilePath(ParamStr(0))); + log_diario('Erro no Processo de Criptografia'); End; end; @@ -227,7 +243,7 @@ begin // Return the result Result := l_Data; Except - log_diario('Erro no Processo de Decriptografia',ExtractFilePath(ParamStr(0))); + log_diario('Erro no Processo de Decriptografia'); End; end; @@ -264,32 +280,47 @@ begin CloseFile(v_DatFile); except - log_diario('Problema na gravação do arquivo de configurações.',ExtractFilePath(ParamStr(0))); + log_diario('Problema na gravação do arquivo de configurações.'); end; end; + +function abstraiCSD(p_te_so : String) : integer; + var tstrTe_so : tstrings; + Begin + tstrTe_so := Explode(p_te_so, '.'); + Result := StrToInt(tstrTe_so[0] + tstrTe_so[1] + tstrTe_so[2]); + End; + function GetWinVer: Integer; const { operating system (OS)constants } - cOsUnknown = 0; - cOsWin95 = 1; - cOsWin95OSR2 = 2; // Não implementado. - cOsWin98 = 3; - cOsWin98SE = 4; - cOsWinME = 5; - cOsWinNT = 6; - cOsWin2000 = 7; - cOsXP = 8; + cOsUnknown = 0; + cOsWin95 = 1; + cOsWin95OSR2 = 2; // Não implementado. + cOsWin98 = 3; + cOsWin98SE = 4; + cOsWinME = 5; + cOsWinNT = 6; + cOsWin2000 = 7; + cOsXP = 8; + cOsServer2003 = 13; var osVerInfo: TOSVersionInfo; - majorVer, minorVer: Integer; + platformID, + majorVer, + minorVer: Integer; + CSDVersion : String; begin Result := cOsUnknown; { set operating system type flag } osVerInfo.dwOSVersionInfoSize := SizeOf(TOSVersionInfo); if GetVersionEx(osVerInfo) then begin - majorVer := osVerInfo.dwMajorVersion; - minorVer := osVerInfo.dwMinorVersion; + platformId := osVerInfo.dwPlatformId; + majorVer := osVerInfo.dwMajorVersion; + minorVer := osVerInfo.dwMinorVersion; + CSDVersion := trim(osVerInfo.szCSDVersion); + case osVerInfo.dwPlatformId of VER_PLATFORM_WIN32_NT: { Windows NT/2000 } begin @@ -299,6 +330,8 @@ begin Result := cOsWin2000 else if (majorVer = 5) and (minorVer = 1) then Result := cOsXP + else if (majorVer = 5) and (minorVer = 2) then + Result := cOsServer2003 else Result := cOsUnknown; end; @@ -324,6 +357,15 @@ begin end else Result := cOsUnknown; + + // A partir da versão 2.2.0.24, defino o valor da ID Interna e atribuo-a sem o CSDVersion à versão externa + v_te_so := IntToStr(platformId) + '.' + + IntToStr(majorVer) + '.' + + IntToStr(minorVer) + + IfThen(CSDVersion='','','.'+CSDVersion); + if (Result = 0) then + Result := abstraiCSD(v_te_so); + end; Function CipherOpen(p_DatFileName : string) : TStrings; @@ -352,7 +394,7 @@ begin if (trim(v_strCipherOpened)<>'') then Result := explode(v_strCipherOpened,v_SeparatorKey) else - Result := explode('Configs.ID_SO' + v_SeparatorKey + inttostr(GetWinVer)+v_SeparatorKey+'Configs.Endereco_WS'+v_SeparatorKey+'/cacic2/ws/',v_SeparatorKey); + Result := explode('Configs.ID_SO' + v_SeparatorKey + inttostr(intWinVer)+v_SeparatorKey+'Configs.Endereco_WS'+v_SeparatorKey+'/cacic2/ws/',v_SeparatorKey); if Result.Count mod 2 <> 0 then Result.Add(''); @@ -371,12 +413,6 @@ begin End; end; -function GetVersionInfo(p_File: string):string; -begin - PJVersionInfo1 := TPJVersionInfo.Create(PJVersionInfo1); - PJVersionInfo1.FileName := PChar(p_File); - Result := VerFmt(PJVersionInfo1.FixedFileInfo.dwFileVersionMS, PJVersionInfo1.FixedFileInfo.dwFileVersionLS); -end; function GetRootKey(strRootKey: String): HKEY; begin @@ -554,6 +590,24 @@ begin RegDelValorReg.Free; ListaAuxDel.Free; end; +function Get_File_Size(sFileToExamine: string; bInKBytes: Boolean): string; +var + SearchRec: TSearchRec; + sgPath: string; + inRetval, I1: Integer; +begin + sgPath := ExpandFileName(sFileToExamine); + try + inRetval := FindFirst(ExpandFileName(sFileToExamine), faAnyFile, SearchRec); + if inRetval = 0 then + I1 := SearchRec.Size + else + I1 := -1; + finally + SysUtils.FindClose(SearchRec); + end; + Result := IntToStr(I1); +end; @@ -567,6 +621,7 @@ begin IdFTP.Password := p_Password; IdFTP.Port := strtoint(p_Port); IdFTP.TransferType := ftBinary; + IdFTP.Passive := true; Try if IdFTP.Connected = true then begin @@ -575,10 +630,14 @@ begin IdFTP.Connect(true); IdFTP.ChangeDir(p_PathServer); Try + log_DEBUG('Size de "'+p_File+'" Antes do FTP => '+IntToSTR(IdFTP.Size(p_File))); IdFTP.Get(p_File, p_Dest + '\' + p_File, True); + log_DEBUG('Size de "'+p_Dest + '\' + p_File +'" Após o FTP => '+Get_File_Size(p_Dest + '\' + p_File,true)); + Finally + log_DEBUG('Size de "'+p_Dest + '\' + p_File +'" Após o FTP em Finally => '+Get_File_Size(p_Dest + '\' + p_File,true)); + idFTP.Disconnect; + idFTP.Free; result := true; - Except - result := false; End; Except result := false; @@ -704,23 +763,20 @@ var SearchRec: TSearchRec; begin strFileName := StringReplace(v_dir + '\' + v_files,'\\','\',[rfReplaceAll]); Result:=FindFirst(strFileName, faAnyFile, SearchRec); + while result=0 do begin strFileName := StringReplace(v_dir + '\' + SearchRec.Name,'\\','\',[rfReplaceAll]); - log_diario('Tentando Excluir: '+strFileName,ExtractFilePath(ParamStr(0))); - if DeleteFile(strFileName) then - log_diario('Exclusão de ' + strFileName + ' efetuada com sucesso!',ExtractFilePath(ParamStr(0))) - else + + if not DeleteFile(strFileName) then Begin - log_diario('Exclusão não efetuada! Provavelmente já esteja sendo executado...',ExtractFilePath(ParamStr(0))); - log_diario('Tentarei finalizar Tarefa/Processo...',ExtractFilePath(ParamStr(0))); - if (GetWinVer <= 5) then // Até + if ((intWinVer <> 0) and (intWinVer <= 5)) or + (abstraiCSD(v_te_so) < 250) then // Menor que NT Like KillTask(SearchRec.Name) else KillProcess(FindWindow(PChar(SearchRec.Name),nil)); - if DeleteFile(strFileName) then - log_diario('Exclusão Impossibilitada de ' + strFileName + '!',ExtractFilePath(ParamStr(0))); + DeleteFile(strFileName); End; Result:=FindNext(SearchRec); @@ -732,11 +788,11 @@ Begin result := false; // Se o aguarde_CACIC.txt existir é porque refere-se a uma versão mais atual: 2.2.0.20 ou maior - if (FileExists(Dir + 'aguarde_CACIC.txt')) then + if (FileExists(Dir + '\aguarde_CACIC.txt')) then Begin // Se eu conseguir matar o arquivo abaixo é porque não há outra sessão deste agente aberta... (POG? Nããão! :) ) Matar(Dir,'aguarde_CACIC.txt'); - if (not (FileExists(Dir + 'aguarde_CACIC.txt'))) then + if (not (FileExists(Dir + '\aguarde_CACIC.txt'))) then result := true; End; End; @@ -753,7 +809,7 @@ Begin v_versao_REM := XML_RetornaValor(StringReplace(StrUpper(PChar(v_array_NomeAgente[v_array_NomeAgente.count-1])),'.EXE','',[rfReplaceAll]), v_retorno); v_versao_LOC := GetVersionInfo(p_strNomeAgente); - log_diario('Checando versão de "'+p_strNomeAgente+'"',ExtractFilePath(ParamStr(0))); + log_diario('Checando versão de "'+p_strNomeAgente+'"'); intAux := v_array_NomeAgente.Count; @@ -763,12 +819,12 @@ Begin Begin if (GetValorChaveRegIni('versoes_agentes',v_array_NomeAgente[intAux-1],ExtractFilePath(Application.Exename)+'versoes_agentes.ini')<>'') then Begin - log_diario('Encontrado arquivo "'+(ExtractFilePath(Application.Exename)+'versoes_agentes.ini')+'"',ExtractFilePath(ParamStr(0))); + log_diario('Encontrado arquivo "'+(ExtractFilePath(Application.Exename)+'versoes_agentes.ini')+'"'); v_versao_REM := GetValorChaveRegIni('versoes_agentes',v_array_NomeAgente[intAux-1],ExtractFilePath(Application.Exename)+'versoes_agentes.ini'); End; End; - log_diario('Versão Remota: "'+v_versao_REM+'" - Versão Local: "'+v_versao_LOC+'"',ExtractFilePath(ParamStr(0))); + log_diario('Versão Remota: "'+v_versao_REM+'" - Versão Local: "'+v_versao_LOC+'"'); if (v_versao_REM + v_versao_LOC <> '') and (v_versao_LOC <> '0000') then @@ -782,6 +838,27 @@ Begin Result := 0; End; +function GetFolderDate(Folder: string): TDateTime; +var + Rec: TSearchRec; + Found: Integer; + Date: TDateTime; +begin + if Folder[Length(folder)] = '\' then + Delete(Folder, Length(folder), 1); + Result := 0; + Found := FindFirst(Folder, faDirectory, Rec); + try + if Found = 0 then + begin + Date := FileDateToDateTime(Rec.Time); + Result := Date; + end; + finally + FindClose(Rec); + end; +end; + procedure executa_chksis; var bool_download_CACIC2, @@ -794,6 +871,7 @@ var IdHTTP1: TIdHTTP; intAux : integer; begin + bool_download_CACIC2 := false; v_home_drive := MidStr(HomeDrive,1,3); //x:\ v_ip_serv_cacic := GetValorChaveRegIni('Cacic2', 'ip_serv_cacic', ExtractFilePath(ParamStr(0)) + 'chksis.ini'); @@ -801,7 +879,17 @@ begin v_rem_cacic_v0x := GetValorChaveRegIni('Cacic2', 'rem_cacic_v0x', ExtractFilePath(ParamStr(0)) + 'chksis.ini'); Dir := v_home_drive + v_cacic_dir; + v_Debugs := false; + if DirectoryExists(v_cacic_dir + '\Temp\Debugs') then + Begin + if (FormatDateTime('ddmmyyyy', GetFolderDate(v_cacic_dir + '\Temp\Debugs')) = FormatDateTime('ddmmyyyy', date)) then + Begin + v_Debugs := true; + log_DEBUG('Pasta "' + v_cacic_dir + '\Temp\Debugs" com data '+FormatDateTime('dd-mm-yyyy', GetFolderDate(v_cacic_dir + '\Temp\Debugs'))+' encontrada. DEBUG ativado.'); + End; + End; + intWinVer := GetWinVer; // Caso o parâmetro rem_cacic_v0x seja "S/s" removo a chave/valor de execução do Cacic antigo if (LowerCase(v_rem_cacic_v0x)='s') then @@ -820,16 +908,16 @@ begin // Para eliminar versão 20014 e anteriores que provavelmente não fazem corretamente o AutoUpdate if not DirectoryExists(Dir+'\modulos') then begin - log_diario('Excluindo '+ Dir + '\cacic2.exe',ExtractFilePath(ParamStr(0))); + log_diario('Excluindo '+ Dir + '\cacic2.exe'); Matar(Dir,'\cacic2.exe'); - log_diario('Criando diretório ' + Dir + '\modulos',ExtractFilePath(ParamStr(0))); + log_diario('Criando diretório ' + Dir + '\modulos'); ForceDirectories(Dir + '\modulos'); end; // Crio o SubDiretório TEMP, caso não exista if not DirectoryExists(Dir+'\temp') then begin - log_diario('Criando diretório ' + Dir + '\temp',ExtractFilePath(ParamStr(0))); + log_diario('Criando diretório ' + Dir + '\temp'); ForceDirectories(Dir + '\temp'); end; @@ -843,15 +931,15 @@ begin v_IV := 'abcdefghijklmnop'; v_SeparatorKey := '=CacicIsFree='; v_DatFileName := Dir + '\cacic2.dat'; - v_tstrCipherOpened := CipherOpen(v_DatFileName); + //v_tstrCipherOpened := CipherOpen(v_DatFileName); - SetValorDatMemoria('Configs.EnderecoServidor', v_ip_serv_cacic); + //SetValorDatMemoria('Configs.EnderecoServidor', v_ip_serv_cacic); // log_diario('Setando chave Configs/cacic_dir=' + v_cacic_dir + ' em '+Dir + '\cacic2.ini',ExtractFilePath(ParamStr(0))); // SetValorChaveRegIni('Configs', 'cacic_dir', v_cacic_dir, Dir + '\cacic2.ini'); - SetValorDatMemoria('Configs.cacic_dir', v_cacic_dir); + //SetValorDatMemoria('Configs.cacic_dir', v_cacic_dir); - CipherClose(v_DatFileName); + //CipherClose(v_DatFileName); // Verifico existência dos dois principais objetos If (not FileExists(Dir + '\cacic2.exe')) or (not FileExists(Dir + '\modulos\ger_cols.exe')) Then Begin @@ -863,9 +951,11 @@ begin Response_Config := TStringStream.Create(''); Try + log_diario('Tentando contato com ' + 'http://' + v_ip_serv_cacic + '/cacic2/ws/get_config.php'); IdHTTP1 := TIdHTTP.Create(nil); - log_diario('Tentando contato com ' + 'http://' + v_ip_serv_cacic + '/cacic2/ws/get_config.php',ExtractFilePath(ParamStr(0))); IdHTTP1.Post('http://' + v_ip_serv_cacic + '/cacic2/ws/get_config.php', Request_Config, Response_Config); + IdHTTP1.Disconnect; + IdHTTP1.Free; v_retorno := Response_Config.DataString; v_te_serv_updates := XML_RetornaValor('te_serv_updates' , Response_Config.DataString); v_nu_porta_serv_updates := XML_RetornaValor('nu_porta_serv_updates' , Response_Config.DataString); @@ -873,22 +963,22 @@ begin v_te_senha_login_serv_updates := XML_RetornaValor('te_senha_login_serv_updates' , Response_Config.DataString); v_te_path_serv_updates := XML_RetornaValor('te_path_serv_updates' , Response_Config.DataString); - log_diario(':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::',ExtractFilePath(ParamStr(0))); - log_diario(':::::::::::::::: VALORES OBTIDOS NO Gerente WEB :::::::::::::::',ExtractFilePath(ParamStr(0))); - log_diario(':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::',ExtractFilePath(ParamStr(0))); - log_diario('Servidor de updates......................: '+v_te_serv_updates,ExtractFilePath(ParamStr(0))); - log_diario('Porta do servidor de updates.............: '+v_nu_porta_serv_updates,ExtractFilePath(ParamStr(0))); - log_diario('Usuário para login no servidor de updates: '+v_nm_usuario_login_serv_updates,ExtractFilePath(ParamStr(0))); - log_diario('Pasta no servidor de updates.............: '+v_te_path_serv_updates,ExtractFilePath(ParamStr(0))); - log_diario(' ',ExtractFilePath(ParamStr(0))); - log_diario('Versões dos Agentes Principais:',ExtractFilePath(ParamStr(0))); - log_diario('------------------------------',ExtractFilePath(ParamStr(0))); - log_diario('Cacic2 - Agente do Systray.........: '+XML_RetornaValor('CACIC2', v_retorno),ExtractFilePath(ParamStr(0))); - log_diario('Ger_Cols - Gerente de Coletas........: '+XML_RetornaValor('GER_COLS', v_retorno),ExtractFilePath(ParamStr(0))); - log_diario('ChkSis - Verificador de Integridade: '+XML_RetornaValor('CHKSIS', v_retorno),ExtractFilePath(ParamStr(0))); - log_diario(':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::',ExtractFilePath(ParamStr(0))); - - Except log_diario('Falha no contato com ' + 'http://' + v_ip_serv_cacic + '/cacic2/ws/get_config.php',ExtractFilePath(ParamStr(0))); + log_diario(':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::'); + log_diario(':::::::::::::::: VALORES OBTIDOS NO Gerente WEB :::::::::::::::'); + log_diario(':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::'); + log_diario('Servidor de updates......................: '+v_te_serv_updates); + log_diario('Porta do servidor de updates.............: '+v_nu_porta_serv_updates); + log_diario('Usuário para login no servidor de updates: '+v_nm_usuario_login_serv_updates); + log_diario('Pasta no servidor de updates.............: '+v_te_path_serv_updates); + log_diario(' '); + log_diario('Versões dos Agentes Principais:'); + log_diario('------------------------------'); + log_diario('Cacic2 - Agente do Systray.........: '+XML_RetornaValor('CACIC2', v_retorno)); + log_diario('Ger_Cols - Gerente de Coletas........: '+XML_RetornaValor('GER_COLS', v_retorno)); + log_diario('ChkSis - Verificador de Integridade: '+XML_RetornaValor('CHKSIS', v_retorno)); + log_diario(':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::'); + + Except log_diario('Falha no contato com ' + 'http://' + v_ip_serv_cacic + '/cacic2/ws/get_config.php'); End; Request_Config.Free; @@ -938,7 +1028,7 @@ begin log_diario('Fazendo FTP de cacic2.exe a partir de ' + v_te_serv_updates + '/' + v_nu_porta_serv_updates+'/'+ v_nm_usuario_login_serv_updates + '/' + - v_te_path_serv_updates + ' para a pasta ' + Dir,ExtractFilePath(ParamStr(0))); + v_te_path_serv_updates + ' para a pasta ' + Dir); FTP(v_te_serv_updates, v_nu_porta_serv_updates, v_nm_usuario_login_serv_updates, @@ -955,7 +1045,7 @@ begin log_diario('Fazendo FTP de ger_cols.exe a partir de ' + v_te_serv_updates + '/' + v_nu_porta_serv_updates+'/'+ v_nm_usuario_login_serv_updates + '/' + - v_te_path_serv_updates + ' para a pasta ' + Dir + '\modulos',ExtractFilePath(ParamStr(0))); + v_te_path_serv_updates + ' para a pasta ' + Dir + '\modulos'); FTP(v_te_serv_updates, v_nu_porta_serv_updates, @@ -970,17 +1060,25 @@ begin // 5 segundos para espera de possível FTP... Sleep(5000); - // Crio a chave/valor cacic2 para autoexecução do Cacic, caso não exista esta chave/valor - // Crio a chave/valor chksis para autoexecução do Cacic, caso não exista esta chave/valor - //log_diario('Setando chave HLM../Run com ' + HomeDrive + '\chksis.exe',ExtractFilePath(ParamStr(0))); - SetValorChaveRegEdit('HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\CheckSystemRoutine', HomeDrive + '\chksis.exe'); - //log_diario('Setando chave HLM../Run com ' + Dir + '\cacic2.exe',ExtractFilePath(ParamStr(0))); + Try + // Crio a chave/valor chksis para autoexecução do Cacic, caso não exista esta chave/valor + log_diario('Setando chave HLM../Run com ' + HomeDrive + '\chksis.exe'); + SetValorChaveRegEdit('HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\CheckSystemRoutine', HomeDrive + '\chksis.exe'); + Except + End; bool_ExistsAutoRun := false; if (GetValorChaveRegEdit('HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\cacic2')=Dir + '\cacic2.exe') then bool_ExistsAutoRun := true else - SetValorChaveRegEdit('HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\cacic2', Dir + '\cacic2.exe'); + Begin + Try + // Crio a chave/valor cacic2 para autoexecução do Cacic, caso não exista esta chave/valor + log_diario('Setando chave HLM../Run com ' + Dir + '\cacic2.exe'); + SetValorChaveRegEdit('HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\cacic2', Dir + '\cacic2.exe'); + Except + End; + End; // Caso o Cacic tenha sido baixado executo-o com parâmetro de configuração de servidor //if (bool_download_CACIC2) then @@ -989,7 +1087,7 @@ begin // Begin if Posso_Rodar_CACIC or not bool_ExistsAutoRun then Begin - log_diario('Executando '+Dir + '\cacic2.exe /ip_serv_cacic=' + v_ip_serv_cacic,ExtractFilePath(ParamStr(0))); + log_diario('Executando '+Dir + '\cacic2.exe /ip_serv_cacic=' + v_ip_serv_cacic); // Caso tenha havido download de agentes principais, executar coletas imediatamente... if (bool_download_CACIC2) then @@ -999,15 +1097,16 @@ begin End; // End // else - // log_diario('Não Executei. Chave de AutoExecução já existente...',ExtractFilePath(ParamStr(0))); + log_diario('Não Executei. Chave de AutoExecução já existente...'); //End + Application.Terminate; end; begin // Application.ShowMainForm:=false; if (FindWindowByTitle('chkcacic') = 0) and (FindWindowByTitle('cacic2') = 0) then if (FileExists(ExtractFilePath(ParamStr(0)) + 'chksis.ini')) then executa_chksis - else log_diario('Não executei devido execução em paralelo de "chkcacic" ou "cacic2"!',ExtractFilePath(ParamStr(0))); + else log_diario('Não executei devido execução em paralelo de "chkcacic" ou "cacic2"!'); Halt; //Application.Terminate; diff --git a/chksis/chksis.res b/chksis/chksis.res index 39b1b0b..0d8fc5f 100755 Binary files a/chksis/chksis.res and b/chksis/chksis.res differ diff --git a/col_comp/col_comp.dof b/col_comp/col_comp.dof index 9b2e770..ad2b1e2 100755 --- a/col_comp/col_comp.dof +++ b/col_comp/col_comp.dof @@ -115,7 +115,7 @@ AutoIncBuild=0 MajorVer=2 MinorVer=2 Release=0 -Build=1 +Build=2 Debug=0 PreRelease=0 Special=0 @@ -126,13 +126,13 @@ CodePage=1252 [Version Info Keys] CompanyName=Dataprev-Unidade Regional Espírito Santo FileDescription=Coletor de Informações de Compartilhamento do Sistema CACIC -FileVersion=2.2.0.1 +FileVersion=2.2.0.2 InternalName= LegalCopyright= LegalTrademarks= OriginalFilename= ProductName=Col_COMP -ProductVersion=2.2.0.1 +ProductVersion=2.2.0.2 Comments=Baseado na licença GPL (General Public License) [HistoryLists\hlDebugSourcePath] Count=1 diff --git a/col_comp/col_comp.dpr b/col_comp/col_comp.dpr index ae2ae8d..ef71630 100755 --- a/col_comp/col_comp.dpr +++ b/col_comp/col_comp.dpr @@ -432,126 +432,133 @@ Begin end; var Reg_RCC : TRegistry; ChaveRegistro, ValorChaveRegistro, nm_compartilhamento, nm_dir_compart, - in_senha_escrita, in_senha_leitura, te_comentario, strXML, strAux, + in_senha_escrita, in_senha_leitura, te_comentario, strTripaDados, strAux, cs_tipo_permissao, cs_tipo_compart : String; I, intAux: Integer; Lista_RCC : TStringList; Begin Try - SetValorDatMemoria('Col_Comp.Inicio', FormatDateTime('hh:nn:ss', Now), v_tstrCipherOpened1); - nm_compartilhamento := ''; - nm_dir_compart := ''; - cs_tipo_compart := ' '; - cs_tipo_permissao := ' '; - in_senha_leitura := ''; - in_senha_escrita := ''; - log_diario('Coletando informações de Compartilhamentos.'); - Reg_RCC := TRegistry.Create; - Reg_RCC.LazyWrite := False; - Lista_RCC := TStringList.Create; - Reg_RCC.Rootkey := HKEY_LOCAL_MACHINE; - { - strXML := '' + - '' + - '' + GetValorChaveRegIni('TcpIp' ,'TE_NODE_ADDRESS' ,p_path_cacic_ini) + '' + - '' + GetValorChaveRegIni('TcpIp' ,'TE_NOME_COMPUTADOR',p_path_cacic_ini) + '' + - '' + GetValorChaveRegIni('TcpIp' ,'TE_WORKGROUP' ,p_path_cacic_ini) + '' + - '' + GetValorChaveRegIni('Configs','ID_SO' ,p_path_cacic_ini) + ''; - } - - strXML := ''; - - if Win32Platform = VER_PLATFORM_WIN32_NT then - Begin // 2k, xp, nt. - ChaveRegistro := '\System\ControlSet001\Services\lanmanserver\Shares\'; - Reg_RCC.OpenKeyReadOnly(ChaveRegistro); - Reg_RCC.GetValueNames(Lista_RCC); - Reg_RCC.CloseKey; - For I := 0 To Lista_RCC.Count - 1 Do - Begin - nm_compartilhamento := Lista_RCC.Strings[i]; - strAux := GetValorChaveRegEdit('HKEY_LOCAL_MACHINE' + ChaveRegistro + nm_compartilhamento); - nm_dir_compart := RetornaValorShareNT(strAux, 'Path=', 'Permissions='); - te_comentario := RetornaValorShareNT(strAux, 'Remark=', 'Type='); - cs_tipo_compart := RetornaValorShareNT(strAux, 'Type=', 'Fim'); - if (cs_tipo_compart = '0') Then cs_tipo_compart := 'D' Else cs_tipo_compart := 'I'; - strXML := strXML + '' + - '' + nm_compartilhamento + '' + - '' + nm_dir_compart + '' + - '' + cs_tipo_compart + '' + - '' + te_comentario + '' + - ''; - end; - end - Else Begin - ChaveRegistro := '\Software\Microsoft\Windows\CurrentVersion\Network\LanMan\'; - Reg_RCC.OpenKeyReadOnly(ChaveRegistro); - Reg_RCC.GetKeyNames(Lista_RCC); - Reg_RCC.CloseKey; - For I := 0 To Lista_RCC.Count - 1 Do - Begin - nm_compartilhamento := Lista_RCC.Strings[i]; - Reg_RCC.OpenKey(ChaveRegistro + nm_compartilhamento, True); - nm_dir_compart := Reg_RCC.ReadString('Path'); - te_comentario := Reg_RCC.ReadString('Remark'); - if (Reg_RCC.GetDataSize('Parm1enc') = 0) Then in_senha_escrita := '0' Else in_senha_escrita := '1'; - if (Reg_RCC.GetDataSize('Parm2enc') = 0) Then in_senha_leitura := '0' Else in_senha_leitura := '1'; - if (Reg_RCC.ReadInteger('Type') = 0) Then cs_tipo_compart := 'D' Else cs_tipo_compart := 'I'; - intAux := Reg_RCC.ReadInteger('Flags'); - Case intAux of //http://www.la2600.org/talks/chronology/enigma/19971107.html - 401 : cs_tipo_permissao := 'S'; // Somente Leitura. - 258 : cs_tipo_permissao := 'C'; // Completo. - 259 : cs_tipo_permissao := 'D'; // Depende de senha. - end; - Reg_RCC.CloseKey; - strXML := strXML + '' + - '' + nm_compartilhamento + '' + - '' + nm_dir_compart + '' + - '' + cs_tipo_compart + '' + - '' + cs_tipo_permissao + '' + - '' + in_senha_leitura + '' + - '' + in_senha_escrita + '' + - '' + te_comentario + '' + - ''; - end; - end; - - if (Lista_RCC.Count = 0) then strXML := strXML + '' + - '' + - '' + - '' + - '' + - ''; - - Reg_RCC.Free; - Lista_RCC.Free; - strXML := strXML + ''; - - // Obtenho do registro o valor que foi previamente armazenado - ValorChaveRegistro := Trim(GetValorDatMemoria('Coletas.Compartilhamentos')); - - SetValorDatMemoria('Col_Comp.Fim' , FormatDateTime('hh:nn:ss', Now), v_tstrCipherOpened1); - - // Se essas informações forem diferentes significa que houve alguma alteração - // na configuração. Nesse caso, gravo as informações no BD Central e, se não houver - // problemas durante esse procedimento, atualizo as informações no registro. - If (GetValorDatMemoria('Configs.IN_COLETA_FORCADA_COMP')='S') or (strXML <> ValorChaveRegistro) Then - Begin - SetValorDatMemoria('Col_Comp.UVC', strXML, v_tstrCipherOpened1); -//log_diario('Vou chamar o CLOSE...'); - CipherClose(p_path_cacic + 'temp\col_comp.dat', v_tstrCipherOpened1); -//log_diario('Após chamada ao CLOSE...'); - End - else + SetValorDatMemoria('Col_Comp.Inicio', FormatDateTime('hh:nn:ss', Now), v_tstrCipherOpened1); + nm_compartilhamento := ''; + nm_dir_compart := ''; + cs_tipo_compart := ' '; + cs_tipo_permissao := ' '; + in_senha_leitura := ''; + in_senha_escrita := ''; + log_diario('Coletando informações de Compartilhamentos.'); + Reg_RCC := TRegistry.Create; + Reg_RCC.LazyWrite := False; + Lista_RCC := TStringList.Create; + Reg_RCC.Rootkey := HKEY_LOCAL_MACHINE; + { + strXML := '' + + '' + + '' + GetValorChaveRegIni('TcpIp' ,'TE_NODE_ADDRESS' ,p_path_cacic_ini) + '' + + '' + GetValorChaveRegIni('TcpIp' ,'TE_NOME_COMPUTADOR',p_path_cacic_ini) + '' + + '' + GetValorChaveRegIni('TcpIp' ,'TE_WORKGROUP' ,p_path_cacic_ini) + '' + + '' + GetValorChaveRegIni('Configs','ID_SO' ,p_path_cacic_ini) + ''; + } + + //strXML := ''; + strTripaDados := ''; + + if Win32Platform = VER_PLATFORM_WIN32_NT then + Begin // 2k, xp, nt. + ChaveRegistro := '\System\ControlSet001\Services\lanmanserver\Shares\'; + Reg_RCC.OpenKeyReadOnly(ChaveRegistro); + Reg_RCC.GetValueNames(Lista_RCC); + Reg_RCC.CloseKey; + For I := 0 To Lista_RCC.Count - 1 Do + Begin + nm_compartilhamento := Lista_RCC.Strings[i]; + strAux := GetValorChaveRegEdit('HKEY_LOCAL_MACHINE' + ChaveRegistro + nm_compartilhamento); + nm_dir_compart := RetornaValorShareNT(strAux, 'Path=', 'Permissions='); + te_comentario := RetornaValorShareNT(strAux, 'Remark=', 'Type='); + cs_tipo_compart := RetornaValorShareNT(strAux, 'Type=', 'Fim'); + if (cs_tipo_compart = '0') Then cs_tipo_compart := 'D' Else cs_tipo_compart := 'I'; + if (strTripaDados <> '') then + strTripaDados := strTripaDados + ''; // Delimitador de REGISTRO + + strTripaDados := strTripaDados + nm_compartilhamento + '' + + nm_dir_compart + '' + + cs_tipo_compart + '' + + te_comentario; + end; + end + Else Begin + ChaveRegistro := '\Software\Microsoft\Windows\CurrentVersion\Network\LanMan\'; + Reg_RCC.OpenKeyReadOnly(ChaveRegistro); + Reg_RCC.GetKeyNames(Lista_RCC); + Reg_RCC.CloseKey; + For I := 0 To Lista_RCC.Count - 1 Do + Begin + nm_compartilhamento := Lista_RCC.Strings[i]; + Reg_RCC.OpenKey(ChaveRegistro + nm_compartilhamento, True); + nm_dir_compart := Reg_RCC.ReadString('Path'); + te_comentario := Reg_RCC.ReadString('Remark'); + if (Reg_RCC.GetDataSize('Parm1enc') = 0) Then in_senha_escrita := '0' Else in_senha_escrita := '1'; + if (Reg_RCC.GetDataSize('Parm2enc') = 0) Then in_senha_leitura := '0' Else in_senha_leitura := '1'; + if (Reg_RCC.ReadInteger('Type') = 0) Then cs_tipo_compart := 'D' Else cs_tipo_compart := 'I'; + intAux := Reg_RCC.ReadInteger('Flags'); + Case intAux of //http://www.la2600.org/talks/chronology/enigma/19971107.html + 401 : cs_tipo_permissao := 'S'; // Somente Leitura. + 258 : cs_tipo_permissao := 'C'; // Completo. + 259 : cs_tipo_permissao := 'D'; // Depende de senha. + end; + Reg_RCC.CloseKey; + { + strXML := strXML + '' + + '' + nm_compartilhamento + '' + + '' + nm_dir_compart + '' + + '' + cs_tipo_compart + '' + + '' + cs_tipo_permissao + '' + + '' + in_senha_leitura + '' + + '' + in_senha_escrita + '' + + '' + te_comentario + '' + + ''; + } + if (strTripaDados <> '') then + strTripaDados := strTripaDados + ''; // Delimitador de REGISTRO + + strTripaDados := strTripaDados + nm_compartilhamento + '' + + nm_dir_compart + '' + + cs_tipo_compart + '' + + te_comentario + '' + + in_senha_leitura + '' + + in_senha_escrita + '' + + cs_tipo_permissao; + end; + end; + + Reg_RCC.Free; + Lista_RCC.Free; + + + // Obtenho do registro o valor que foi previamente armazenado + ValorChaveRegistro := Trim(GetValorDatMemoria('Coletas.Compartilhamentos')); + + SetValorDatMemoria('Col_Comp.Fim' , FormatDateTime('hh:nn:ss', Now), v_tstrCipherOpened1); + + // Se essas informações forem diferentes significa que houve alguma alteração + // na configuração. Nesse caso, gravo as informações no BD Central e, se não houver + // problemas durante esse procedimento, atualizo as informações no registro. + If ((GetValorDatMemoria('Configs.IN_COLETA_FORCADA_COMP')='S') or (strTripaDados <> ValorChaveRegistro)) and + (strTripaDados <> '') Then + Begin + SetValorDatMemoria('Col_Comp.UVC', strTripaDados, v_tstrCipherOpened1); + CipherClose(p_path_cacic + 'temp\col_comp.dat', v_tstrCipherOpened1); + End + else SetValorDatMemoria('Col_Comp.nada', 'nada', v_tstrCipherOpened1); - CipherClose(p_path_cacic + 'temp\col_comp.dat', v_tstrCipherOpened1); - End; + + CipherClose(p_path_cacic + 'temp\col_comp.dat', v_tstrCipherOpened1); + End; Except Begin SetValorDatMemoria('Col_Comp.nada', 'nada', v_tstrCipherOpened1); - SetValorDatMemoria('Col_Comp.Fim', '99999999', v_tstrCipherOpened1); + SetValorDatMemoria('Col_Comp.Fim', '99999999', v_tstrCipherOpened1); CipherClose(p_path_cacic + 'temp\col_comp.dat', v_tstrCipherOpened1); End; End; diff --git a/col_comp/col_comp.res b/col_comp/col_comp.res index ef11d8c..449c8ab 100755 Binary files a/col_comp/col_comp.res and b/col_comp/col_comp.res differ diff --git a/col_hard/col_hard.cfg b/col_hard/col_hard.cfg index 90760bf..9590be7 100755 --- a/col_hard/col_hard.cfg +++ b/col_hard/col_hard.cfg @@ -33,10 +33,3 @@ -K$00400000 -LE"c:\arquivos de programas\borland\delphi7\Projects\Bpl" -LN"c:\arquivos de programas\borland\delphi7\Projects\Bpl" --U"C:\Arquivos de programas\Borland\Delphi7\Comps_CACIC\CriptografiaDCP;C:\Arquivos de programas\Borland\Delphi7\Comps_CACIC\Mitec\v1010_Delphi7;C:\Arquivos de programas\Borland\Delphi7\Comps_CACIC\NTFileSecurity;C:\Arquivos de programas\Borland\Delphi7\Comps_CACIC\PJVersion;C:\Arquivos de programas\Borland\Delphi7\Comps_CACIC\ZLibEx" --O"C:\Arquivos de programas\Borland\Delphi7\Comps_CACIC\CriptografiaDCP;C:\Arquivos de programas\Borland\Delphi7\Comps_CACIC\Mitec\v1010_Delphi7;C:\Arquivos de programas\Borland\Delphi7\Comps_CACIC\NTFileSecurity;C:\Arquivos de programas\Borland\Delphi7\Comps_CACIC\PJVersion;C:\Arquivos de programas\Borland\Delphi7\Comps_CACIC\ZLibEx" --I"C:\Arquivos de programas\Borland\Delphi7\Comps_CACIC\CriptografiaDCP;C:\Arquivos de programas\Borland\Delphi7\Comps_CACIC\Mitec\v1010_Delphi7;C:\Arquivos de programas\Borland\Delphi7\Comps_CACIC\NTFileSecurity;C:\Arquivos de programas\Borland\Delphi7\Comps_CACIC\PJVersion;C:\Arquivos de programas\Borland\Delphi7\Comps_CACIC\ZLibEx" --R"C:\Arquivos de programas\Borland\Delphi7\Comps_CACIC\CriptografiaDCP;C:\Arquivos de programas\Borland\Delphi7\Comps_CACIC\Mitec\v1010_Delphi7;C:\Arquivos de programas\Borland\Delphi7\Comps_CACIC\NTFileSecurity;C:\Arquivos de programas\Borland\Delphi7\Comps_CACIC\PJVersion;C:\Arquivos de programas\Borland\Delphi7\Comps_CACIC\ZLibEx" --w-UNSAFE_TYPE --w-UNSAFE_CODE --w-UNSAFE_CAST diff --git a/col_hard/col_hard.dof b/col_hard/col_hard.dof index d9aa82e..2911a2d 100755 --- a/col_hard/col_hard.dof +++ b/col_hard/col_hard.dof @@ -76,9 +76,9 @@ LocaleToUnicode=1 ImagebaseMultiple=1 SuspiciousTypecast=1 PrivatePropAccessor=1 -UnsafeType=0 -UnsafeCode=0 -UnsafeCast=0 +UnsafeType=1 +UnsafeCode=1 +UnsafeCast=1 [Linker] MapFile=0 OutputObjs=0 @@ -94,10 +94,10 @@ OutputDir= UnitOutputDir= PackageDLLOutputDir= PackageDCPOutputDir= -SearchPath=C:\Arquivos de programas\Borland\Delphi7\Comps_CACIC\CriptografiaDCP;C:\Arquivos de programas\Borland\Delphi7\Comps_CACIC\Mitec\v1010_Delphi7;C:\Arquivos de programas\Borland\Delphi7\Comps_CACIC\NTFileSecurity;C:\Arquivos de programas\Borland\Delphi7\Comps_CACIC\PJVersion;C:\Arquivos de programas\Borland\Delphi7\Comps_CACIC\ZLibEx -Packages=vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;IntrawebDB_50_70;Intraweb_50_70;Rave50CLX;Rave50VCL;dclOffice2k;MSI_D7_Rtl +SearchPath= +Packages= Conditionals= -DebugSourceDirs=C:\Arquivos de programas\Borland\Delphi7\Mitec\D7 +DebugSourceDirs= UsePackages=0 [Parameters] RunParams= @@ -108,40 +108,18 @@ DebugCWD= [Language] ActiveLang= ProjectLang= -RootDir=C:\Arquivos de programas\Borland\Delphi7\Bin\ +RootDir= [Version Info] IncludeVerInfo=1 AutoIncBuild=0 -MajorVer=2 -MinorVer=2 +MajorVer=1 +MinorVer=0 Release=0 -Build=1 +Build=0 Debug=0 PreRelease=0 Special=0 Private=0 DLL=0 -Locale=2070 +Locale=1046 CodePage=1252 -[Version Info Keys] -CompanyName=Dataprev-Unidade Regional Espírito Santo -FileDescription=Coletor de Informações de Hardware do Sistema CACIC -FileVersion=2.2.0.1 -InternalName= -LegalCopyright= -LegalTrademarks= -OriginalFilename= -ProductName=Col_Hard -ProductVersion=2.2.0.1 -Comments=Baseado na licença GPL (General Public License) -[HistoryLists\hlDebugSourcePath] -Count=1 -Item0=C:\Arquivos de programas\Borland\Delphi7\Mitec\D7 -[HistoryLists\hlUnitAliases] -Count=1 -Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; -[HistoryLists\hlSearchPath] -Count=3 -Item0=C:\Arquivos de programas\Borland\Delphi7\Comps_CACIC\CriptografiaDCP;C:\Arquivos de programas\Borland\Delphi7\Comps_CACIC\Mitec\v1010_Delphi7;C:\Arquivos de programas\Borland\Delphi7\Comps_CACIC\NTFileSecurity;C:\Arquivos de programas\Borland\Delphi7\Comps_CACIC\PJVersion;C:\Arquivos de programas\Borland\Delphi7\Comps_CACIC\ZLibEx -Item1=C:\Arquivos de programas\Borland\Delphi7\CriptografiaDCP;C:\Arquivos de programas\Borland\Delphi7\CriptografiaDCP\Ciphers;C:\Arquivos de programas\Borland\Delphi7\CriptografiaDCP\Hashes;C:\Arquivos de programas\Borland\Delphi7\Mitec\9.60 -Item2=C:\Arquivos de programas\Borland\Delphi7\CriptografiaDCP;C:\Arquivos de programas\Borland\Delphi7\CriptografiaDCP\Ciphers;C:\Arquivos de programas\Borland\Delphi7\CriptografiaDCP\Hashes diff --git a/col_hard/col_hard.dpr b/col_hard/col_hard.dpr index 43998ca..f92ce11 100755 --- a/col_hard/col_hard.dpr +++ b/col_hard/col_hard.dpr @@ -22,17 +22,22 @@ program col_hard; {$R *.res} {$APPTYPE CONSOLE} -uses Windows, SysUtils, Classes, IniFiles, - MSI_SMBIOS, - MSI_Devices, - MSI_CPU, - MSI_DISPLAY, - MSI_MEDIA, - MSI_NETWORK, - MSI_XML_Reports, - DCPcrypt2, - DCPrijndael, - DCPbase64; +uses + Windows, + SysUtils, + Classes, + IniFiles, + MSI_SMBIOS, + MSI_Devices, + MSI_CPU, + MSI_DISPLAY, + MSI_MEDIA, + MSI_NETWORK, + MSI_XML_Reports, + DCPcrypt2, + DCPrijndael, + DCPbase64, + PJVersionInfo; var p_path_cacic, v_mensagem : string; v_debugs : boolean; @@ -49,6 +54,16 @@ var v_tstrCipherOpened, const KeySize = 32; // 32 bytes = 256 bits BlockSize = 16; // 16 bytes = 128 bits +// Dica baixada de http://www.marcosdellantonio.net/2007/06/14/operador-if-ternario-em-delphi-e-c/ +// Fiz isso para não ter que acrescentar o componente Math ao USES! +function iif(condicao : boolean; resTrue, resFalse : Variant) : Variant; + Begin + if condicao then + Result := resTrue + else + Result := resFalse; + End; + function HomeDrive : string; var WinDir : array [0..144] of char; @@ -57,6 +72,7 @@ GetWindowsDirectory (WinDir, 144); Result := StrPas (WinDir); end; + Function Implode(p_Array : TStrings ; p_Separador : String) : String; var intAux : integer; strAux : string; @@ -355,8 +371,26 @@ begin else Result := ''; end; +function VerFmt(const MS, LS: DWORD): string; + // Format the version number from the given DWORDs containing the info +begin + Result := Format('%d.%d.%d.%d', + [HiWord(MS), LoWord(MS), HiWord(LS), LoWord(LS)]) +end; +function GetVersionInfo(p_File: string):string; +var PJVersionInfo1: TPJVersionInfo; +begin + PJVersionInfo1 := TPJVersionInfo.Create(nil); + PJVersionInfo1.FileName := PChar(p_File); + Result := VerFmt(PJVersionInfo1.FixedFileInfo.dwFileVersionMS, PJVersionInfo1.FixedFileInfo.dwFileVersionLS); + PJVersionInfo1.Free; +end; +procedure log_DEBUG(p_msg:string); +Begin + if v_Debugs then log_diario('(v.'+getVersionInfo(ParamStr(0))+') DEBUG - '+p_msg); +End; // Função criada devido a divergências entre os valores retornados pelos métodos dos componentes MSI e seus Reports. function Parse(p_ClassName, p_SectionName, p_DataName:string; p_Report : TStringList) : String; @@ -364,6 +398,7 @@ var intClasses, intSections, intDatas, v_achei_SectionName, v_array_SectionName_ v_ClassName, v_DataName, v_string_consulta : string; v_array_SectionName : tstrings; begin + Log_DEBUG('p_ClassName => "'+p_ClassName+'" p_SectionName => "'+p_SectionName+'" p_DataName => "'+p_DataName+'"'); Result := ''; if (p_SectionName <> '') then Begin @@ -647,45 +682,110 @@ Begin End; procedure Executa_Col_Hard; -var v_te_cpu_freq, v_te_cpu_fabricante, v_te_cpu_desc, v_te_cpu_serial, v_te_placa_rede_desc, v_te_placa_som_desc, v_te_cdrom_desc, v_te_teclado_desc, - v_te_modem_desc, v_te_mouse_desc, v_te_mem_ram_desc, v_te_mem_ram_tipo, v_qt_placa_video_mem, v_te_placa_video_resolucao, v_te_placa_video_desc, - v_qt_placa_video_cores, v_te_bios_fabricante, v_te_bios_data, v_te_bios_desc, - v_te_placa_mae_fabricante, v_te_placa_mae_desc,UVC, ValorChaveRegistro, - v_DataName, v_SectionName, v_Macs_Invalidos, v_Mac_Address : String; - i : Integer; - v_qt_mem_ram : WORD; - v_CPU : TMiTeC_CPU; - v_DISPLAY : TMiTeC_Display; - v_MEDIA : TMiTeC_Media; - v_DEVICES : TMiTeC_Devices; - v_TCP : TMiTeC_TCPIP; - v_SMBIOS : TMiTeC_SMBIOS; - v_MemoriaRAM : TMemoryStatus; - v_Report : TStringList; +var v_te_cpu_fabricante, + v_te_cpu_desc, + v_te_cpu_serial, + v_te_cpu_frequencia, + v_te_placa_rede_desc, + v_te_placa_som_desc, + v_te_cdrom_desc, + v_te_teclado_desc, + v_te_modem_desc, + v_te_mouse_desc, + v_te_mem_ram_desc, + v_te_mem_ram_tipo, + v_qt_placa_video_mem, + v_te_placa_video_resolucao, + v_te_placa_video_desc, + v_qt_placa_video_cores, + v_te_bios_fabricante, + v_te_bios_data, + v_te_bios_desc, + v_te_placa_mae_fabricante, + v_te_placa_mae_desc, + UVC, + ValorChaveRegistro, + v_DataName, + v_SectionName, + v_Macs_Invalidos, + v_Mac_Address, + v_Tripa_CDROM, + v_Tripa_TCPIP, + v_Tripa_CPU, + strAux, + v_PhysicalAddress, + v_IPAddress, + v_IPMask, + v_Gateway_IPAddress, + v_DHCP_IPAddress, + v_PrimaryWINS_IPAddress, + v_SecondaryWINS_IPAddress : String; + i : Integer; + v_qt_mem_ram : WORD; + v_CPU : TMiTeC_CPU; + v_DISPLAY : TMiTeC_Display; + v_MEDIA : TMiTeC_Media; + v_DEVICES : TMiTeC_Devices; + v_TCP : TMiTeC_TCPIP; + v_SMBIOS : TMiTeC_SMBIOS; + v_MemoriaRAM : TMemoryStatus; + v_Report, + v_tstrCPU, + v_tstrCDROM, + v_tstrTCPIP : TStringList; begin Try SetValorDatMemoria('Col_Hard.Inicio', FormatDateTime('hh:nn:ss', Now), v_tstrCipherOpened1); v_Report := TStringList.Create; log_diario('Coletando informações de Hardware.'); + v_tstrCPU := TStringList.Create; + v_tstrCDROM := TStringList.Create; + v_tstrTCPIP := TStringList.Create; + Try + Begin + Log_Debug('Instanciando v_CPU...'); v_CPU := TMiTeC_CPU.Create(nil); + Log_Debug('RefreshingData...'); v_CPU.RefreshData; + Log_Debug('Gerando MSI_XML_Reports...'); MSI_XML_Reports.CPU_XML_Report(v_CPU,TRUE,v_Report); + Log_Debug('Liberando v_CPU...'); //v_CPU.Report(v_Report); v_CPU.Free; + Log_Debug('CPU Informations - OK!'); // CPU Informations Try - v_te_cpu_serial := parse('TCPU','Processor #1','Serial Number',v_Report); - v_te_cpu_desc := AnsiToAscii(parse('TCPU','Processor #1','CPUName',v_Report)); - v_te_cpu_fabricante := AnsiToAscii(parse('TCPU','Processor #1','Vendor',v_Report)); - v_te_cpu_freq := parse('TCPU','Processor #1','Frequency',v_Report); + i := 1; + while (i <= 128) DO// Vamos procurar até 128 processadores! Eu já ouví dizer de máquinas neste porte!! (AP - 15FEV2008) + Begin + strAux := 'Processor #' + trim(intToStr(i)); + v_te_cpu_serial := parse('TCPU',strAux,'Serial Number',v_Report); + v_te_cpu_desc := AnsiToAscii(parse('TCPU',strAux,'CPUName',v_Report)); + IF (v_te_cpu_desc = '') then + v_te_cpu_desc := AnsiToAscii(parse('TCPU',strAux,'MarketingName',v_Report)); + v_te_cpu_frequencia := AnsiToAscii(parse('TCPU',strAux,'Frequency',v_Report)); + v_te_cpu_fabricante := AnsiToAscii(parse('TCPU',strAux,'Vendor',v_Report)); + + // Se pegou ao menos a descrição, adiciono à tripa... + if (v_te_cpu_desc <> '') then + Begin + v_tstrCPU.Add('te_cpu_desc###' + v_te_cpu_desc + '#FIELD#' + + 'te_cpu_fabricante###' + v_te_cpu_fabricante + '#FIELD#' + + 'te_cpu_serial###' + v_te_cpu_serial + '#FIELD#' + + 'te_cpu_frequencia###' + v_te_cpu_frequencia); + Log_Debug('Adicionando a tstrCPU: "'+v_tstrCPU[v_tstrCPU.count-1]); + Log_DEBUG('Tamanho de v_tstrCPU 0: '+intToStr(v_tstrCPU.Count)); + End; + i := i+1; + End; Except log_diario('Problema em CPU Details!'); end; - + Log_DEBUG('Tamanho de v_tstrCPU 1: '+intToStr(v_tstrCPU.Count)); // Media informations Try v_MEDIA := TMiTeC_Media.Create(nil); @@ -704,53 +804,85 @@ begin except log_diario('Problema em MEDIA Details!'); end; + Log_Debug('MEDIA Informations - OK!'); // Devices informations Try + Log_Debug('Instanciando v_DEVICES...'); v_DEVICES := TMiTeC_Devices.Create(nil); + Log_Debug('RefreshingData...'); v_DEVICES.RefreshData; //if v_Debugs then v_DEVICES.Report(v_Report); if v_Debugs then MSI_XML_Reports.Devices_XML_Report(v_DEVICES,TRUE,v_Report); - + Log_Debug('v_DEVICES.DeviceCount = '+intToStr(v_DEVICES.DeviceCount)); i := 0; While i < v_DEVICES.DeviceCount do Begin v_mensagem := 'Obtendo Descrição de CDROM'; + Log_Debug('Percorrendo v_DEVICES.Devices['+intToStr(i)+']...'); if v_DEVICES.Devices[i].DeviceClass=dcCDROM then - if Trim(v_DEVICES.Devices[i].FriendlyName)='' then v_te_cdrom_desc := Trim(v_DEVICES.Devices[i].Description) - else v_te_cdrom_desc := Trim(v_DEVICES.Devices[i].FriendlyName); + Begin + // Vamos tentar de tudo! :)))) + v_te_cdrom_desc := Trim(v_DEVICES.Devices[i].Name); + if Trim(v_te_cdrom_desc)='' then + v_te_cdrom_desc := v_DEVICES.Devices[i].FriendlyName; + if Trim(v_te_cdrom_desc)='' then + v_te_cdrom_desc := v_DEVICES.Devices[i].Description; + + if (v_te_cdrom_desc <> '') then + Begin + v_tstrCDROM.Add('te_cdrom_desc###'+v_te_cdrom_desc); + Log_Debug('Adicionando a tstrCDROM: "'+v_tstrCDROM[v_tstrCDROM.count-1]+'"'); + Log_Debug('CDROM Informations - OK!'); + End; + End; + v_mensagem := 'Obtendo Descrição de Modem'; if v_DEVICES.Devices[i].DeviceClass=dcModem then - if Trim(v_DEVICES.Devices[i].FriendlyName)='' then v_te_modem_desc := Trim(v_DEVICES.Devices[i].Description) - else v_te_modem_desc := Trim(v_DEVICES.Devices[i].FriendlyName); + Begin + if Trim(v_DEVICES.Devices[i].FriendlyName)='' then + v_te_modem_desc := Trim(v_DEVICES.Devices[i].Description) + else + v_te_modem_desc := Trim(v_DEVICES.Devices[i].FriendlyName); + + Log_Debug('MODEM Informations - OK!'); + End; v_mensagem := 'Obtendo Descrição de Mouse'; if v_DEVICES.Devices[i].DeviceClass=dcMouse then - if Trim(v_DEVICES.Devices[i].FriendlyName)='' then v_te_mouse_desc := Trim(v_DEVICES.Devices[i].Description) - else v_te_mouse_desc := Trim(v_DEVICES.Devices[i].FriendlyName); + Begin + if Trim(v_DEVICES.Devices[i].FriendlyName)='' then + v_te_mouse_desc := Trim(v_DEVICES.Devices[i].Description) + else + v_te_mouse_desc := Trim(v_DEVICES.Devices[i].FriendlyName); + + Log_Debug('MOUSE Informations - OK!'); + End; v_mensagem := 'Obtendo Descrição de Teclado'; if v_DEVICES.Devices[i].DeviceClass=dcKeyboard then - if Trim(v_DEVICES.Devices[i].FriendlyName)='' then v_te_teclado_desc := Trim(v_DEVICES.Devices[i].Description) - else v_te_teclado_desc := Trim(v_DEVICES.Devices[i].FriendlyName); - -// v_mensagem := 'Obtendo Descrição de Placa-Mãe'; -// if v_DEVICES.Devices[i].DeviceClass=dcComputer then -// if Trim(v_DEVICES.Devices[i].FriendlyName)='' then v_te_placa_mae_desc := Trim(v_DEVICES.Devices[i].Description) -// else v_te_placa_mae_desc := Trim(v_DEVICES.Devices[i].FriendlyName); - -// if Trim(v_te_placa_mae_desc)='' then v_te_placa_mae_desc := Trim(v_DEVICES.Devices[i].Name); + Begin + if Trim(v_DEVICES.Devices[i].FriendlyName)='' then + v_te_teclado_desc := Trim(v_DEVICES.Devices[i].Description) + else + v_te_teclado_desc := Trim(v_DEVICES.Devices[i].FriendlyName); -// v_mensagem := 'Obtendo Fabricante da Placa-Mãe'; -// if v_DEVICES.Devices[i].DeviceClass=dcComputer then -// v_te_placa_mae_fabricante := Trim(v_DEVICES.Devices[i].Manufacturer); + Log_Debug('KEYBOARD Informations - OK!'); + End; v_mensagem := 'Obtendo Descrição de Vídeo'; if v_DEVICES.Devices[i].DeviceClass=dcDisplay then - if Trim(v_DEVICES.Devices[i].FriendlyName)='' then v_te_placa_video_desc := Trim(v_DEVICES.Devices[i].Description) - else v_te_placa_video_desc := Trim(v_DEVICES.Devices[i].FriendlyName); + Begin + if Trim(v_DEVICES.Devices[i].FriendlyName)='' then + v_te_placa_video_desc := Trim(v_DEVICES.Devices[i].Description) + else + v_te_placa_video_desc := Trim(v_DEVICES.Devices[i].FriendlyName); + + Log_Debug('DISPLAY Informations - OK!'); + End; + i := i+1; End; except log_diario('Problema em DEVICES Details!'); @@ -760,126 +892,144 @@ begin // Memory informations Try + Begin v_MemoriaRAM.dwLength := SizeOf(v_MemoriaRAM); GlobalMemoryStatus(v_MemoriaRAM); v_qt_mem_ram := v_MemoriaRAM.dwTotalPhys div 1024000; + Log_Debug('MEMORY Informations - OK!'); + End; except log_diario('Problema em MEMORY Details!'); end; // Try - v_SMBIOS := TMiTeC_SMBIOS.Create(nil); - v_SMBIOS.RefreshData; - //v_SMBIOS.Report(v_Report); - MSI_XML_Reports.SMBIOS_XML_Report(v_SMBIOS,true,v_Report); + Begin + v_SMBIOS := TMiTeC_SMBIOS.Create(nil); + v_SMBIOS.RefreshData; + //v_SMBIOS.Report(v_Report); + MSI_XML_Reports.SMBIOS_XML_Report(v_SMBIOS,true,v_Report); - v_SMBIOS.Free; + v_SMBIOS.Free; - if Parse('TSMBIOS','MemoryModule', 'Count', v_Report) <> '0' then - Begin - i :=0; - while i < StrToInt(Parse('TSMBIOS','MemoryModule', 'Count', v_Report)) do - Begin - v_SectionName := 'MemoryModule/Module_'+IntToStr(i); - v_te_mem_ram_tipo:=Parse('TSMBIOS',v_SectionName, 'Type', v_Report); - if Parse('TSMBIOS',v_SectionName, 'Size', v_Report)<>'0' then - begin - if (v_te_mem_ram_desc <> '') then v_te_mem_ram_desc := v_te_mem_ram_desc + ' - '; - v_te_mem_ram_desc := v_te_mem_ram_desc + 'Slot ' + IntToStr(i) + ': ' + Parse('TSMBIOS',v_SectionName, 'Size', v_Report) + '(' + v_te_mem_ram_tipo +')'; - end; - i := i+1; - End; - end - else - Begin - i := 0; - while i < StrToInt(Parse('TSMBIOS','MemoryDevice', 'Count', v_Report)) do - Begin - v_SectionName := 'MemoryModule/Device_'+IntToStr(i); - v_te_mem_ram_tipo := Parse('TSMBIOS',v_SectionName, 'Type', v_Report); - - if Parse('TSMBIOS',v_SectionName, 'Size', v_Report)<>'0' then - begin - if (v_te_mem_ram_desc <> '') then v_te_mem_ram_desc := v_te_mem_ram_desc + ' - '; - v_te_mem_ram_desc := v_te_mem_ram_desc + 'Slot ' + IntToStr(i) + ': ' + Parse('TSMBIOS',v_SectionName, 'Size', v_Report) + '(' + v_te_mem_ram_tipo + ')'; - end; - i := i+1; - end; - End; + if Parse('TSMBIOS','MemoryModule', 'Count', v_Report) <> '0' then + Begin + i :=0; + while i < StrToInt(Parse('TSMBIOS','MemoryModule', 'Count', v_Report)) do + Begin + v_SectionName := 'MemoryModule/Module_'+IntToStr(i); + v_te_mem_ram_tipo:=Parse('TSMBIOS',v_SectionName, 'Type', v_Report); + if Parse('TSMBIOS',v_SectionName, 'Size', v_Report)<>'0' then + begin + if (v_te_mem_ram_desc <> '') then v_te_mem_ram_desc := v_te_mem_ram_desc + ' - '; + v_te_mem_ram_desc := v_te_mem_ram_desc + 'Slot ' + IntToStr(i) + ': ' + Parse('TSMBIOS',v_SectionName, 'Size', v_Report) + '(' + v_te_mem_ram_tipo +')'; + end; + i := i+1; + End; + end + else + Begin + i := 0; + while i < StrToInt(Parse('TSMBIOS','MemoryDevice', 'Count', v_Report)) do + Begin + v_SectionName := 'MemoryModule/Device_'+IntToStr(i); + v_te_mem_ram_tipo := Parse('TSMBIOS',v_SectionName, 'Type', v_Report); + + if Parse('TSMBIOS',v_SectionName, 'Size', v_Report)<>'0' then + begin + if (v_te_mem_ram_desc <> '') then v_te_mem_ram_desc := v_te_mem_ram_desc + ' - '; + v_te_mem_ram_desc := v_te_mem_ram_desc + 'Slot ' + IntToStr(i) + ': ' + Parse('TSMBIOS',v_SectionName, 'Size', v_Report) + '(' + v_te_mem_ram_tipo + ')'; + end; + i := i+1; + end; + End; - if (trim(v_te_placa_mae_fabricante)='') then - v_te_placa_mae_fabricante := AnsiToAscii(Trim(Parse('TSMBIOS','Mainboard', 'Manufacturer', v_Report))); - if (trim(v_te_placa_mae_desc)='') then - v_te_placa_mae_desc := AnsiToAscii(Trim(Parse('TSMBIOS','Mainboard', 'Model', v_Report))); - v_te_bios_data := Trim(Parse('TSMBIOS','BIOS', 'Date', v_Report)); - v_te_bios_fabricante := Trim(Parse('TSMBIOS','BIOS', 'Vendor', v_Report)); - v_te_bios_desc := AnsiToAscii(Trim(Parse('TBIOS','', 'Copyright', v_Report))); - if (v_te_bios_desc = '') then - v_te_bios_desc := Trim(Parse('TSMBIOS','BIOS', 'Version', v_Report)); + if (trim(v_te_placa_mae_fabricante)='') then + v_te_placa_mae_fabricante := AnsiToAscii(Trim(Parse('TSMBIOS','Mainboard', 'Manufacturer', v_Report))); + if (trim(v_te_placa_mae_desc)='') then + v_te_placa_mae_desc := AnsiToAscii(Trim(Parse('TSMBIOS','Mainboard', 'Model', v_Report))); + v_te_bios_data := Trim(Parse('TSMBIOS','BIOS', 'Date', v_Report)); + v_te_bios_fabricante := Trim(Parse('TSMBIOS','BIOS', 'Vendor', v_Report)); + v_te_bios_desc := AnsiToAscii(Trim(Parse('TBIOS','', 'Copyright', v_Report))); + if (v_te_bios_desc = '') then + v_te_bios_desc := Trim(Parse('TSMBIOS','BIOS', 'Version', v_Report)); + + Log_Debug('SMBIOS Informations - OK!'); + End; Except log_diario('Problema em SMBIOS Details!'); End; // Display informations Try - v_DISPLAY := TMiTeC_Display.Create(nil); - v_DISPLAY.RefreshData; - //v_DISPLAY.Report(v_Report); - MSI_XML_Reports.Display_XML_Report(v_DISPLAY,true,v_Report); - v_DISPLAY.Free; - - if (trim(v_te_placa_video_desc)='') then v_te_placa_video_desc := parse('TDisplay','','Adapter',v_Report); - v_qt_placa_video_cores := parse('TDisplay','','ColorDepth',v_Report); - v_qt_placa_video_mem := IntToStr(StrToInt(parse('TDisplay','','MemorySize',v_Report)) div 1048576 ); - v_te_placa_video_resolucao := parse('TDisplay','','HorizontalResolution',v_Report) + 'x' + parse('TDisplay','','VerticalResolution',v_Report); + Begin + v_DISPLAY := TMiTeC_Display.Create(nil); + v_DISPLAY.RefreshData; + //v_DISPLAY.Report(v_Report); + MSI_XML_Reports.Display_XML_Report(v_DISPLAY,true,v_Report); + v_DISPLAY.Free; + + if (trim(v_te_placa_video_desc)='') then v_te_placa_video_desc := parse('TDisplay','','Adapter',v_Report); + v_qt_placa_video_cores := parse('TDisplay','','ColorDepth',v_Report); + v_qt_placa_video_mem := IntToStr(StrToInt(parse('TDisplay','','MemorySize',v_Report)) div 1048576 ); + v_te_placa_video_resolucao := parse('TDisplay','','HorizontalResolution',v_Report) + 'x' + parse('TDisplay','','VerticalResolution',v_Report); + + Log_Debug('VIDEO Informations - OK!'); + End; Except log_diario('Problema em VIDEO Details!'); End; - { - // Network informations - Try - v_NETWORK := TMiTeC_Network.Create(nil); - v_NETWORK.RefreshData; - v_mensagem := 'Ativando Network Getinfo...'; - if v_Debugs then v_NETWORK.Report(v_Report); - if v_NETWORK.PhysicalAdapters.Count>0 then - Begin - v_te_placa_rede_desc := v_NETWORK.TCPIP.Adapter[0].Name; - End - else if v_NETWORK.VirtualAdapters.Count >0 then - Begin - v_te_placa_rede_desc := v_NETWORK.VirtualAdapters.Names[0]; - End; - - Except log_diario('Problema em NETWORK Details!'); - End; - - v_NETWORK.Free; - } - // Network informations Try - v_TCP := TMiTeC_TCPIP.Create(nil); - v_TCP.RefreshData; - //v_TCP.Report(v_Report); - MSI_XML_Reports.TCPIP_XML_Report(v_TCP,true,v_Report); - v_TCP.Free; - v_mensagem := 'Ativando TCP Getinfo...'; + Begin + v_TCP := TMiTeC_TCPIP.Create(nil); + v_TCP.RefreshData; + //v_TCP.Report(v_Report); + MSI_XML_Reports.TCPIP_XML_Report(v_TCP,true,v_Report); + v_TCP.Free; + v_mensagem := 'Ativando TCP Getinfo...'; - i := 0; - v_Macs_Invalidos := trim(GetValorDatMemoria('TCPIP.TE_ENDERECOS_MAC_INVALIDOS',v_tstrCipherOpened)); - v_te_placa_rede_desc := ''; + i := 0; + v_Macs_Invalidos := trim(GetValorDatMemoria('TCPIP.TE_ENDERECOS_MAC_INVALIDOS',v_tstrCipherOpened)); - // Em virtude de possibilidades de existência de VmWare likes, - // serão verificados até 50 adaptadores de redes! :) - While (v_te_placa_rede_desc = '') and (i < 50) do - Begin - v_SectionName := 'Adapter_'+inttostr(i); - v_Mac_Address := parse('TTCPIP',v_SectionName,'PhysicalAddress',v_Report); - if (TrataExcecoesMacAddress(v_Mac_Address, v_Macs_Invalidos)<>'') then - v_te_placa_rede_desc := AnsiToAscii(trim(parse('TTCPIP',v_SectionName,'Name',v_Report))); - i := i + 1; - End; + // Em virtude de possibilidades de existência de VmWare likes, + // serão verificados até 50 adaptadores de redes! :) Não pesquisei essa possibilidade, por via das dúvidas... (AP - 15FEV2008) + While (i < 50) do + Begin + v_SectionName := 'Adapter_'+inttostr(i); + v_te_placa_rede_desc := AnsiToAscii(trim(parse('TTCPIP',v_SectionName,'Name',v_Report))); + v_PhysicalAddress := parse('TTCPIP',v_SectionName,'PhysicalAddress',v_Report); + v_IPAddress := parse('TTCPIP',v_SectionName,'IPAddress',v_Report); + v_IPMask := parse('TTCPIP',v_SectionName,'IPMask',v_Report); + v_Gateway_IPAddress := parse('TTCPIP',v_SectionName,'Gateway_IPAddress',v_Report); + v_DHCP_IPAddress := parse('TTCPIP',v_SectionName,'DHCP_IPAddress',v_Report); + v_PrimaryWINS_IPAddress := parse('TTCPIP',v_SectionName,'PrimaryWINS_IPAddress',v_Report); + v_SecondaryWINS_IPAddress := parse('TTCPIP',v_SectionName,'SecondaryWINS_IPAddress',v_Report); + + if (trim( v_te_placa_rede_desc + + v_PhysicalAddress + + v_IPAddress + + v_IPMask + + v_Gateway_IPAddress + + v_DHCP_IPAddress + + v_PrimaryWINS_IPAddress + + v_SecondaryWINS_IPAddress)<>'') then + Begin + v_tstrTCPIP.Add('te_placa_rede_desc###' + v_te_placa_rede_desc +'#FIELD#'+ + 'te_node_address###' + v_PhysicalAddress +'#FIELD#'+ + 'te_ip###' + v_IPAddress +'#FIELD#'+ + 'te_mascara###' + v_IPMask +'#FIELD#'+ + 'te_gateway###' + v_Gateway_IPAddress +'#FIELD#'+ + 'te_serv_dhcp###' + v_DHCP_IPAddress +'#FIELD#'+ + 'te_wins_primario###' + v_PrimaryWINS_IPAddress +'#FIELD#'+ + 'te_wins_secundario###' + v_SecondaryWINS_IPAddress); + Log_Debug('Adicionando a tstrTCPIP: "'+v_tstrTCPIP[v_tstrTCPIP.count-1]+'"'); + End + else + i := 50; + i := i + 1; + End; + Log_Debug('TCPIP Informations - OK!'); + End; Except log_diario('Problema em TCP Details!'); End; @@ -895,42 +1045,65 @@ begin End; v_report.Free; End; - + End; Except End; - { - for i:=0 to MSysteminfo1.Storage.DeviceCount-1 do - if (MSysteminfo1.Storage.Devices[i].Geometry.MediaType = Fixedmedia) Then - Begin - DescHDs := MSysteminfo1.Storage.Devices[i].Model + IntToStr((MSysteminfo1.Storage.Devices[i].Capacity div 1024) div 1024); - end; - } + + // Crio as Tripas dos múltiplos ítens... + v_Tripa_CPU := ''; + v_tstrCPU.Sort; + Log_DEBUG('Tamanho de v_tstrCPU 2: '+intToStr(v_tstrCPU.Count)); + i := 0; + while (i < v_tstrCPU.Count) do + Begin + v_Tripa_CPU := v_Tripa_CPU + iif(v_Tripa_CPU = '','','#CPU#'); + v_Tripa_CPU := v_Tripa_CPU + v_tstrCPU[i]; + i := i + 1; + End; + + v_Tripa_CDROM := ''; + v_tstrCDROM.Sort; + Log_DEBUG('Tamanho de v_tstrCDROM: '+intToStr(v_tstrCDROM.Count)); + i := 0; + while (i < v_tstrCDROM.Count) do + Begin + v_Tripa_CDROM := v_Tripa_CDROM + iif(v_Tripa_CDROM = '','','#CDROM#'); + v_Tripa_CDROM := v_Tripa_CDROM + v_tstrCDROM[i]; + i := i + 1; + End; + + v_Tripa_TCPIP := ''; + v_tstrTCPIP.Sort; + Log_DEBUG('Tamanho de v_tstrTCPIP: '+intToStr(v_tstrTCPIP.Count)); + i := 0; + while (i < v_tstrTCPIP.Count) do + Begin + v_Tripa_TCPIP := v_Tripa_TCPIP + iif(v_Tripa_TCPIP = '','','#TCPIP#'); + v_Tripa_TCPIP := v_Tripa_TCPIP + v_tstrTCPIP[i]; + i := i + 1; + End; Try // Monto a string que será comparada com o valor armazenado no registro. v_mensagem := 'Montando pacote para comparações...'; - UVC := Trim(v_te_placa_rede_desc + ';' + - v_te_cpu_fabricante + ';' + - v_te_cpu_desc + ';' + - // Como a frequência não é constante, ela não vai entrar na verificação da mudança de hardware. - // IntToStr(MSysteminfo1.CPU.Frequency) + ';' + - v_te_cpu_serial + ';' + - v_te_mem_ram_desc + ';' + - IntToStr(v_qt_mem_ram) + ';' + - v_te_bios_desc + ';' + - v_te_bios_data + ';' + - v_te_bios_fabricante + ';' + - v_te_placa_mae_fabricante + ';' + - v_te_placa_mae_desc + ';' + - v_te_placa_video_desc + ';' + - v_te_placa_video_resolucao + ';' + - v_qt_placa_video_cores + ';' + - v_qt_placa_video_mem + ';' + - v_te_placa_som_desc + ';' + - v_te_cdrom_desc + ';' + - v_te_teclado_desc + ';' + - v_te_modem_desc + ';' + - v_te_mouse_desc); + UVC := StringReplace(Trim( v_Tripa_TCPIP + ';' + + v_Tripa_CPU + ';' + + v_Tripa_CDROM + ';' + + v_te_mem_ram_desc + ';' + + IntToStr(v_qt_mem_ram) + ';' + + v_te_bios_desc + ';' + + v_te_bios_data + ';' + + v_te_bios_fabricante + ';' + + v_te_placa_mae_fabricante + ';' + + v_te_placa_mae_desc + ';' + + v_te_placa_video_desc + ';' + + v_te_placa_video_resolucao + ';' + + v_qt_placa_video_cores + ';' + + v_qt_placa_video_mem + ';' + + v_te_placa_som_desc + ';' + + v_te_teclado_desc + ';' + + v_te_modem_desc + ';' + + v_te_mouse_desc),' ',' ',[rfReplaceAll]); Except log_diario('Problema em comparação de envio!'); End; @@ -947,28 +1120,25 @@ begin Begin Try //Envio via rede para ao Agente Gerente, para gravação no BD. - SetValorDatMemoria('Col_Hard.te_placa_rede_desc' , v_te_placa_rede_desc , v_tstrCipherOpened1); - SetValorDatMemoria('Col_Hard.te_placa_mae_fabricante' , v_te_placa_mae_fabricante , v_tstrCipherOpened1); - SetValorDatMemoria('Col_Hard.te_placa_mae_desc' , v_te_placa_mae_desc , v_tstrCipherOpened1); - SetValorDatMemoria('Col_Hard.te_cpu_serial' , v_te_cpu_serial , v_tstrCipherOpened1); - SetValorDatMemoria('Col_Hard.te_cpu_desc' , v_te_cpu_desc , v_tstrCipherOpened1); - SetValorDatMemoria('Col_Hard.te_cpu_fabricante' , v_te_cpu_fabricante , v_tstrCipherOpened1); - SetValorDatMemoria('Col_Hard.te_cpu_freq' , v_te_cpu_freq , v_tstrCipherOpened1); - SetValorDatMemoria('Col_Hard.qt_mem_ram' , IntToStr(v_qt_mem_ram) , v_tstrCipherOpened1); - SetValorDatMemoria('Col_Hard.te_mem_ram_desc' , v_te_mem_ram_desc , v_tstrCipherOpened1); - SetValorDatMemoria('Col_Hard.te_bios_desc' , v_te_bios_desc , v_tstrCipherOpened1); - SetValorDatMemoria('Col_Hard.te_bios_data' , v_te_bios_data , v_tstrCipherOpened1); - SetValorDatMemoria('Col_Hard.te_bios_fabricante' , v_te_bios_fabricante , v_tstrCipherOpened1); - SetValorDatMemoria('Col_Hard.qt_placa_video_cores' , v_qt_placa_video_cores , v_tstrCipherOpened1); - SetValorDatMemoria('Col_Hard.te_placa_video_desc' , v_te_placa_video_desc , v_tstrCipherOpened1); - SetValorDatMemoria('Col_Hard.qt_placa_video_mem' , v_qt_placa_video_mem , v_tstrCipherOpened1); - SetValorDatMemoria('Col_Hard.te_placa_video_resolucao', v_te_placa_video_resolucao, v_tstrCipherOpened1); - SetValorDatMemoria('Col_Hard.te_placa_som_desc' , v_te_placa_som_desc , v_tstrCipherOpened1); - SetValorDatMemoria('Col_Hard.te_cdrom_desc' , v_te_cdrom_desc , v_tstrCipherOpened1); - SetValorDatMemoria('Col_Hard.te_teclado_desc' , v_te_teclado_desc , v_tstrCipherOpened1); - SetValorDatMemoria('Col_Hard.te_mouse_desc' , v_te_mouse_desc , v_tstrCipherOpened1); - SetValorDatMemoria('Col_Hard.te_modem_desc' , v_te_modem_desc , v_tstrCipherOpened1); - SetValorDatMemoria('Col_Hard.UVC' , UVC , v_tstrCipherOpened1); + SetValorDatMemoria('Col_Hard.te_Tripa_TCPIP' , StringReplace(v_Tripa_TCPIP ,' ',' ',[rfReplaceAll]) , v_tstrCipherOpened1); + SetValorDatMemoria('Col_Hard.te_Tripa_CPU' , StringReplace(v_Tripa_CPU ,' ',' ',[rfReplaceAll]) , v_tstrCipherOpened1); + SetValorDatMemoria('Col_Hard.te_Tripa_CDROM' , StringReplace(v_Tripa_CDROM ,' ',' ',[rfReplaceAll]) , v_tstrCipherOpened1); + SetValorDatMemoria('Col_Hard.te_placa_mae_fabricante' , StringReplace(v_te_placa_mae_fabricante ,' ',' ',[rfReplaceAll]) , v_tstrCipherOpened1); + SetValorDatMemoria('Col_Hard.te_placa_mae_desc' , StringReplace(v_te_placa_mae_desc ,' ',' ',[rfReplaceAll]) , v_tstrCipherOpened1); + SetValorDatMemoria('Col_Hard.qt_mem_ram' , StringReplace(IntToStr(v_qt_mem_ram) ,' ',' ',[rfReplaceAll]) , v_tstrCipherOpened1); + SetValorDatMemoria('Col_Hard.te_mem_ram_desc' , StringReplace(v_te_mem_ram_desc ,' ',' ',[rfReplaceAll]) , v_tstrCipherOpened1); + SetValorDatMemoria('Col_Hard.te_bios_desc' , StringReplace(v_te_bios_desc ,' ',' ',[rfReplaceAll]) , v_tstrCipherOpened1); + SetValorDatMemoria('Col_Hard.te_bios_data' , StringReplace(v_te_bios_data ,' ',' ',[rfReplaceAll]) , v_tstrCipherOpened1); + SetValorDatMemoria('Col_Hard.te_bios_fabricante' , StringReplace(v_te_bios_fabricante ,' ',' ',[rfReplaceAll]) , v_tstrCipherOpened1); + SetValorDatMemoria('Col_Hard.qt_placa_video_cores' , StringReplace(v_qt_placa_video_cores ,' ',' ',[rfReplaceAll]) , v_tstrCipherOpened1); + SetValorDatMemoria('Col_Hard.te_placa_video_desc' , StringReplace(v_te_placa_video_desc ,' ',' ',[rfReplaceAll]) , v_tstrCipherOpened1); + SetValorDatMemoria('Col_Hard.qt_placa_video_mem' , StringReplace(v_qt_placa_video_mem ,' ',' ',[rfReplaceAll]) , v_tstrCipherOpened1); + SetValorDatMemoria('Col_Hard.te_placa_video_resolucao', StringReplace(v_te_placa_video_resolucao,' ',' ',[rfReplaceAll]) , v_tstrCipherOpened1); + SetValorDatMemoria('Col_Hard.te_placa_som_desc' , StringReplace(v_te_placa_som_desc ,' ',' ',[rfReplaceAll]) , v_tstrCipherOpened1); + SetValorDatMemoria('Col_Hard.te_teclado_desc' , StringReplace(v_te_teclado_desc ,' ',' ',[rfReplaceAll]) , v_tstrCipherOpened1); + SetValorDatMemoria('Col_Hard.te_mouse_desc' , StringReplace(v_te_mouse_desc ,' ',' ',[rfReplaceAll]) , v_tstrCipherOpened1); + SetValorDatMemoria('Col_Hard.te_modem_desc' , StringReplace(v_te_modem_desc ,' ',' ',[rfReplaceAll]) , v_tstrCipherOpened1); + SetValorDatMemoria('Col_Hard.UVC' , StringReplace(UVC ,' ',' ',[rfReplaceAll]) , v_tstrCipherOpened1); CipherClose(p_path_cacic + 'temp\col_hard.dat', v_tstrCipherOpened1); Except log_diario('Problema em gravação de dados no DAT!'); End; diff --git a/col_patr/col_patr.dof b/col_patr/col_patr.dof index bfffda7..7925165 100755 --- a/col_patr/col_patr.dof +++ b/col_patr/col_patr.dof @@ -115,7 +115,7 @@ AutoIncBuild=0 MajorVer=2 MinorVer=2 Release=0 -Build=1 +Build=3 Debug=0 PreRelease=0 Special=0 @@ -126,13 +126,13 @@ CodePage=1252 [Version Info Keys] CompanyName=Dataprev-Unidade Regional Espírito Santo FileDescription=Coletor de Informações de Patrimônio do Sistema CACIC -FileVersion=2.2.0.1 +FileVersion=2.2.0.3 InternalName= LegalCopyright= LegalTrademarks= OriginalFilename= ProductName=Col_PATR -ProductVersion=2.2.0.1 +ProductVersion=2.2.0.3 Comments=Baseado na Licença GPL(General Public License) [HistoryLists\hlDebugSourcePath] Count=1 diff --git a/col_patr/col_patr.res b/col_patr/col_patr.res index 9f933aa..ebf1802 100755 Binary files a/col_patr/col_patr.res and b/col_patr/col_patr.res differ diff --git a/col_patr/main_col_patr.dfm b/col_patr/main_col_patr.dfm index 12a6bba..4ce1b2f 100755 --- a/col_patr/main_col_patr.dfm +++ b/col_patr/main_col_patr.dfm @@ -1,11 +1,11 @@ object FormPatrimonio: TFormPatrimonio - Left = 65 - Top = 67 + Left = 137 + Top = 173 BorderIcons = [biSystemMenu] BorderStyle = bsSingle - Caption = 'CACIC - Coletor Informa'#231#245'es Patrimoniais' - ClientHeight = 246 - ClientWidth = 605 + Caption = 'CACIC - Coletor de Informa'#231#245'es Patrimoniais' + ClientHeight = 286 + ClientWidth = 782 Color = clBtnFace Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText @@ -20,11 +20,26 @@ object FormPatrimonio: TFormPatrimonio OnCreate = FormCreate PixelsPerInch = 96 TextHeight = 13 + object lbVersao: TLabel + Left = 672 + Top = 273 + Width = 108 + Height = 12 + Alignment = taRightJustify + AutoSize = False + Caption = 'v: X.X.X.X' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -9 + Font.Name = 'Arial' + Font.Style = [] + ParentFont = False + end object GroupBox1: TGroupBox - Left = 5 + Left = 2 Top = -1 - Width = 596 - Height = 67 + Width = 780 + Height = 75 Caption = ' Leia com aten'#231#227'o ' Color = clBtnFace Font.Charset = DEFAULT_CHARSET @@ -38,7 +53,7 @@ object FormPatrimonio: TFormPatrimonio object Label10: TLabel Left = 5 Top = 14 - Width = 588 + Width = 769 Height = 32 AutoSize = False Caption = @@ -55,12 +70,12 @@ object FormPatrimonio: TFormPatrimonio end object Label11: TLabel Left = 6 - Top = 46 - Width = 456 + Top = 54 + Width = 475 Height = 16 Caption = - 'Por favor, atualize as informa'#231#245'es abaixo. Agradecemos a sua col' + - 'abora'#231#227'o.' + 'Por favor, atualize as informa'#231#245'es abaixo. Agradecemos pela sua ' + + 'colabora'#231#227'o.' Color = clBtnFace Font.Charset = DEFAULT_CHARSET Font.Color = clBlack @@ -72,11 +87,13 @@ object FormPatrimonio: TFormPatrimonio end end object GroupBox2: TGroupBox - Left = 5 - Top = 69 - Width = 596 + Left = 2 + Top = 77 + Width = 780 Height = 144 - Caption = ' Informa'#231#245'es sobre este computador ' + Caption = + 'Informa'#231#245'es sobre localiza'#231#227'o f'#237'sica e patrimonial deste computa' + + 'dor' Font.Charset = DEFAULT_CHARSET Font.Color = clBlue Font.Height = -11 @@ -85,7 +102,7 @@ object FormPatrimonio: TFormPatrimonio ParentFont = False TabOrder = 1 object Etiqueta1: TLabel - Left = 11 + Left = 3 Top = 17 Width = 48 Height = 13 @@ -98,8 +115,8 @@ object FormPatrimonio: TFormPatrimonio ParentFont = False end object Etiqueta2: TLabel - Left = 185 - Top = 17 + Left = 3 + Top = 101 Width = 48 Height = 13 Caption = 'Etiqueta 2' @@ -111,7 +128,7 @@ object FormPatrimonio: TFormPatrimonio ParentFont = False end object Etiqueta3: TLabel - Left = 430 + Left = 341 Top = 17 Width = 48 Height = 13 @@ -124,8 +141,8 @@ object FormPatrimonio: TFormPatrimonio ParentFont = False end object Etiqueta4: TLabel - Left = 11 - Top = 57 + Left = 341 + Top = 59 Width = 48 Height = 13 Caption = 'Etiqueta 4' @@ -137,8 +154,8 @@ object FormPatrimonio: TFormPatrimonio ParentFont = False end object Etiqueta5: TLabel - Left = 185 - Top = 57 + Left = 492 + Top = 59 Width = 48 Height = 13 Caption = 'Etiqueta 5' @@ -150,8 +167,8 @@ object FormPatrimonio: TFormPatrimonio ParentFont = False end object Etiqueta6: TLabel - Left = 430 - Top = 57 + Left = 645 + Top = 59 Width = 48 Height = 13 Caption = 'Etiqueta 6' @@ -163,8 +180,8 @@ object FormPatrimonio: TFormPatrimonio ParentFont = False end object Etiqueta7: TLabel - Left = 11 - Top = 98 + Left = 341 + Top = 101 Width = 48 Height = 13 Caption = 'Etiqueta 7' @@ -176,8 +193,8 @@ object FormPatrimonio: TFormPatrimonio ParentFont = False end object Etiqueta8: TLabel - Left = 185 - Top = 98 + Left = 492 + Top = 101 Width = 48 Height = 13 Caption = 'Etiqueta 8' @@ -189,8 +206,8 @@ object FormPatrimonio: TFormPatrimonio ParentFont = False end object Etiqueta9: TLabel - Left = 430 - Top = 98 + Left = 645 + Top = 101 Width = 48 Height = 13 Caption = 'Etiqueta 9' @@ -201,10 +218,23 @@ object FormPatrimonio: TFormPatrimonio Font.Style = [] ParentFont = False end + object Etiqueta1a: TLabel + Left = 3 + Top = 60 + Width = 54 + Height = 13 + Caption = 'Etiqueta 1a' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + ParentFont = False + end object id_unid_organizacional_nivel1: TComboBox - Left = 9 + Left = 3 Top = 31 - Width = 157 + Width = 325 Height = 21 Hint = 'Esse '#233' o texto de ajuda da "Etiqueta 1"' Style = csDropDownList @@ -221,9 +251,9 @@ object FormPatrimonio: TFormPatrimonio OnChange = id_unid_organizacional_nivel1Change end object id_unid_organizacional_nivel2: TComboBox - Left = 185 - Top = 31 - Width = 226 + Left = 3 + Top = 115 + Width = 325 Height = 21 Style = csDropDownList Font.Charset = DEFAULT_CHARSET @@ -238,117 +268,151 @@ object FormPatrimonio: TFormPatrimonio TabOrder = 1 end object te_localizacao_complementar: TEdit - Left = 430 + Left = 341 Top = 31 - Width = 157 + Width = 434 Height = 21 Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -11 Font.Name = 'MS Sans Serif' Font.Style = [] + MaxLength = 100 ParentFont = False ParentShowHint = False ShowHint = True TabOrder = 2 end object te_info_patrimonio3: TEdit - Left = 430 - Top = 71 - Width = 155 + Left = 645 + Top = 73 + Width = 130 Height = 21 Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -11 Font.Name = 'MS Sans Serif' Font.Style = [] + MaxLength = 20 ParentFont = False ParentShowHint = False ShowHint = True TabOrder = 5 end object te_info_patrimonio1: TEdit - Left = 9 - Top = 71 - Width = 158 + Left = 341 + Top = 73 + Width = 130 Height = 21 Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -11 Font.Name = 'MS Sans Serif' Font.Style = [] + MaxLength = 20 ParentFont = False ParentShowHint = False ShowHint = True TabOrder = 3 end object te_info_patrimonio2: TEdit - Left = 185 - Top = 71 - Width = 155 + Left = 492 + Top = 73 + Width = 130 Height = 21 Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -11 Font.Name = 'MS Sans Serif' Font.Style = [] + MaxLength = 20 ParentFont = False ParentShowHint = False ShowHint = True TabOrder = 4 end object te_info_patrimonio6: TEdit - Left = 430 - Top = 112 - Width = 155 + Left = 645 + Top = 115 + Width = 130 Height = 21 Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -11 Font.Name = 'MS Sans Serif' Font.Style = [] + MaxLength = 20 ParentFont = False ParentShowHint = False ShowHint = True TabOrder = 8 end object te_info_patrimonio4: TEdit - Left = 9 - Top = 112 - Width = 158 + Left = 341 + Top = 115 + Width = 130 Height = 21 Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -11 Font.Name = 'MS Sans Serif' Font.Style = [] + MaxLength = 20 ParentFont = False ParentShowHint = False ShowHint = True TabOrder = 6 end object te_info_patrimonio5: TEdit - Left = 185 - Top = 112 - Width = 155 + Left = 492 + Top = 115 + Width = 130 Height = 21 Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -11 Font.Name = 'MS Sans Serif' Font.Style = [] + MaxLength = 20 ParentFont = False ParentShowHint = False ShowHint = True TabOrder = 7 end + object id_unid_organizacional_nivel1a: TComboBox + Left = 3 + Top = 73 + Width = 325 + Height = 21 + Hint = 'Esse '#233' o texto de ajuda da "Etiqueta 1"' + Style = csDropDownList + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + ItemHeight = 13 + ParentFont = False + ParentShowHint = False + ShowHint = True + TabOrder = 9 + OnChange = id_unid_organizacional_nivel1aChange + end + object Panel1: TPanel + Left = 333 + Top = 15 + Width = 2 + Height = 125 + Caption = 'Panel1' + TabOrder = 10 + end end object Button2: TButton - Left = 435 - Top = 219 - Width = 155 - Height = 23 - Caption = 'Gravar Informa'#231#245'es' + Left = 290 + Top = 237 + Width = 212 + Height = 33 + Caption = 'Gravar Informa'#231#245'es Patrimoniais' Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -11 diff --git a/col_patr/main_col_patr.pas b/col_patr/main_col_patr.pas index bf88582..fb6d87a 100755 --- a/col_patr/main_col_patr.pas +++ b/col_patr/main_col_patr.pas @@ -33,7 +33,9 @@ uses IniFiles, DIALOGS, DCPcrypt2, DCPrijndael, - DCPbase64; + DCPbase64, + ExtCtrls, + Math; var p_path_cacic : String; v_Dados_Patrimonio : TStrings; @@ -79,6 +81,10 @@ type te_info_patrimonio4: TEdit; te_info_patrimonio5: TEdit; te_info_patrimonio6: TEdit; + Etiqueta1a: TLabel; + id_unid_organizacional_nivel1a: TComboBox; + Panel1: TPanel; + lbVersao: TLabel; function SetValorChaveRegEdit(Chave: String; Dado: Variant): Variant; function GetValorChaveRegEdit(Chave: String): Variant; @@ -107,10 +113,19 @@ type function GetVersionInfo(p_File: string):string; function VerFmt(const MS, LS: DWORD): string; function GetFolderDate(Folder: string): TDateTime; + procedure id_unid_organizacional_nivel1aChange(Sender: TObject); private - var_id_unid_organizacional_nivel1, var_id_unid_organizacional_nivel2, var_te_localizacao_complementar, - var_te_info_patrimonio1, var_te_info_patrimonio2, var_te_info_patrimonio3, var_te_info_patrimonio4, - var_te_info_patrimonio5, var_te_info_patrimonio6 : String; + var_id_unid_organizacional_nivel1, + var_id_unid_organizacional_nivel1a, + var_id_unid_organizacional_nivel2, + var_id_Local, + var_te_localizacao_complementar, + var_te_info_patrimonio1, + var_te_info_patrimonio2, + var_te_info_patrimonio3, + var_te_info_patrimonio4, + var_te_info_patrimonio5, + var_te_info_patrimonio6 : String; public end; @@ -130,15 +145,29 @@ type end; TVetorUON1 = array of TRegistroUON1; + TRegistroUON1a = record + id1 : String; + id1a : String; + nm1a : String; + id_local: String; + end; + + TVetorUON1a = array of TRegistroUON1a; + TRegistroUON2 = record - id1 : String; - id2 : String; - nm2 : String; + id1a : String; + id2 : String; + nm2 : String; + id_local: String; end; TVetorUON2 = array of TRegistroUON2; -var VetorUON1 : TVetorUON1; - VetorUON2 : TVetorUON2; +var VetorUON1 : TVetorUON1; + VetorUON1a : TVetorUON1a; + VetorUON2 : TVetorUON2; + + // Esse array é usado apenas para saber a uon1a, após a filtragem pelo uon1 + VetorUON1aFiltrado : array of String; // Esse array é usado apenas para saber a uon2, após a filtragem pelo uon1 VetorUON2Filtrado : array of String; @@ -582,28 +611,39 @@ begin end; end; -Function RetornaValorVetorUON1(id1Procurado1 : string) : String; +Function RetornaValorVetorUON1(id1 : string) : String; var I : Integer; begin For I := 0 to (Length(VetorUON1)-1) Do - If (VetorUON1[I].id1 = id1Procurado1) Then Result := VetorUON1[I].nm1; + If (VetorUON1[I].id1 = id1) Then Result := VetorUON1[I].nm1; end; - -Function RetornaValorVetorUON2(id1Procurado : string; id2Procurado : string) : String; +Function RetornaValorVetorUON1a(id1a : string) : String; +var I : Integer; +begin + For I := 0 to (Length(VetorUON1a)-1) Do + If (VetorUON1a[I].id1a = id1a) Then Result := VetorUON1a[I].nm1a; +end; +Function RetornaValorVetorUON2(id2, idLocal : string) : String; var I : Integer; begin For I := 0 to (Length(VetorUON2)-1) Do - If (VetorUON2[I].id1 = id1Procurado) and (VetorUON2[I].id2 = id2Procurado) Then Result := VetorUON2[I].nm2; + If (VetorUON2[I].id2 = id2) and + (VetorUON2[I].id_local = idLocal) Then Result := VetorUON2[I].nm2; end; + procedure TFormPatrimonio.RecuperaValoresAnteriores; begin - Etiqueta1.Caption := DeCrypt(XML.XML_RetornaValor('te_etiqueta1', v_configs)); + Etiqueta1.Caption := DeCrypt(XML.XML_RetornaValor('te_etiqueta1', v_configs)); + Etiqueta1a.Caption := DeCrypt(XML.XML_RetornaValor('te_etiqueta1a', v_configs)); var_id_unid_organizacional_nivel1 := GetValorDatMemoria('Patrimonio.id_unid_organizacional_nivel1',v_tstrCipherOpened); if (var_id_unid_organizacional_nivel1='') then var_id_unid_organizacional_nivel1 := DeCrypt(XML.XML_RetornaValor('ID_UON1', v_configs)); + var_id_unid_organizacional_nivel1a := GetValorDatMemoria('Patrimonio.id_unid_organizacional_nivel1a',v_tstrCipherOpened); + if (var_id_unid_organizacional_nivel1a='') then var_id_unid_organizacional_nivel1a := DeCrypt(XML.XML_RetornaValor('ID_UON1a', v_configs)); + var_id_unid_organizacional_nivel2 := GetValorDatMemoria('Patrimonio.id_unid_organizacional_nivel2',v_tstrCipherOpened); if (var_id_unid_organizacional_nivel2='') then var_id_unid_organizacional_nivel2 := DeCrypt(XML.XML_RetornaValor('ID_UON2', v_configs)); @@ -638,12 +678,32 @@ begin var_te_info_patrimonio6 := GetValorDatMemoria('Patrimonio.te_info_patrimonio6',v_tstrCipherOpened); if (var_te_info_patrimonio6='') then var_te_info_patrimonio6 := DeCrypt(XML.XML_RetornaValor('TE_INFO6', v_configs)); + { Try id_unid_organizacional_nivel1.ItemIndex := id_unid_organizacional_nivel1.Items.IndexOf(RetornaValorVetorUON1(var_id_unid_organizacional_nivel1)); id_unid_organizacional_nivel1Change(Nil); // Para filtrar os valores do combo2 de acordo com o valor selecionado no combo1 id_unid_organizacional_nivel2.ItemIndex := id_unid_organizacional_nivel2.Items.IndexOf(RetornaValorVetorUON2(var_id_unid_organizacional_nivel1, var_id_unid_organizacional_nivel2)); Except end; + } + Try + id_unid_organizacional_nivel1.ItemIndex := id_unid_organizacional_nivel1.Items.IndexOf(RetornaValorVetorUON1(var_id_unid_organizacional_nivel1)); + id_unid_organizacional_nivel1Change(Nil); // Para filtrar os valores do combo2 de acordo com o valor selecionado no combo1 + + Except + end; + + Try + id_unid_organizacional_nivel1a.ItemIndex := id_unid_organizacional_nivel1a.Items.IndexOf(RetornaValorVetorUON1a(var_id_unid_organizacional_nivel1a)); + id_unid_organizacional_nivel1aChange(Nil); // Para filtrar os valores do combo3 de acordo com o valor selecionado no combo2 + Except + End; + + Try + id_unid_organizacional_nivel2.ItemIndex := id_unid_organizacional_nivel2.Items.IndexOf(RetornaValorVetorUON2(var_id_unid_organizacional_nivel2,var_id_Local)); + Except + end; + te_localizacao_complementar.Text := var_te_localizacao_complementar; te_info_patrimonio1.Text := var_te_info_patrimonio1; @@ -660,7 +720,12 @@ procedure TFormPatrimonio.MontaCombos; var Parser : TXmlParser; i : integer; v_Tag : boolean; + strAux, + strAux1, + strTagName, + strItemName : string; begin +{ Parser := TXmlParser.Create; Parser.Normalize := True; Parser.LoadFromBuffer(PAnsiChar(v_configs)); @@ -703,13 +768,147 @@ begin id_unid_organizacional_nivel1.Items.Clear; For i := 0 to Length(VetorUON1) - 1 Do id_unid_organizacional_nivel1.Items.Add(VetorUON1[i].nm1); + } + + + Parser := TXmlParser.Create; + Parser.Normalize := True; + Parser.LoadFromBuffer(PAnsiChar(v_Configs)); + log_DEBUG('v_Configs: '+v_Configs); + Parser.StartScan; + i := -1; + strItemName := ''; + strTagName := ''; + While Parser.Scan DO + Begin + strItemName := UpperCase(Parser.CurName); + if (Parser.CurPartType = ptStartTag) and (strItemName = 'IT1') Then + Begin + i := i + 1; + SetLength(VetorUON1, i + 1); // Aumento o tamanho da matriz dinamicamente de acordo com o número de itens recebidos. + strTagName := 'IT1'; + end + else if (Parser.CurPartType = ptEndTag) and (strItemName = 'IT1') then + strTagName := '' + else if (Parser.CurPartType in [ptContent, ptCData]) and (strTagName='IT1')Then + Begin + strAux1 := DeCrypt(Parser.CurContent); + if (strItemName = 'ID1') then + Begin + VetorUON1[i].id1 := strAux1; + log_DEBUG('Gravei VetorUON1.id1: "'+strAux1+'"'); + End + else if (strItemName = 'NM1') then + Begin + VetorUON1[i].nm1 := strAux1; + log_DEBUG('Gravei VetorUON1.nm1: "'+strAux1+'"'); + End; + End; + End; + + // Código para montar o combo 2 + Parser.StartScan; + strTagName := ''; + strAux1 := ''; + i := -1; + While Parser.Scan DO + Begin + strItemName := UpperCase(Parser.CurName); + if (Parser.CurPartType = ptStartTag) and (strItemName = 'IT1A') Then + Begin + i := i + 1; + SetLength(VetorUON1a, i + 1); // Aumento o tamanho da matriz dinamicamente de acordo com o número de itens recebidos. + strTagName := 'IT1A'; + end + else if (Parser.CurPartType = ptEndTag) and (strItemName = 'IT1A') then + strTagName := '' + else if (Parser.CurPartType in [ptContent, ptCData]) and (strTagName='IT1A')Then + Begin + strAux1 := DeCrypt(Parser.CurContent); + if (strItemName = 'ID1') then + Begin + VetorUON1a[i].id1 := strAux1; + log_DEBUG('Gravei VetorUON1a.id1: "'+strAux1+'"'); + End + else if (strItemName = 'SG_LOC') then + Begin + strAux := ' ('+strAux1 + ')'; + End + else if (strItemName = 'ID1A') then + Begin + VetorUON1a[i].id1a := strAux1; + log_DEBUG('Gravei VetorUON1a.id1a: "'+strAux1+'"'); + End + else if (strItemName = 'NM1A') then + Begin + VetorUON1a[i].nm1a := strAux1+strAux; + log_DEBUG('Gravei VetorUON1a.nm1a: "'+strAux1+strAux+'"'); + End + else if (strItemName = 'ID_LOCAL') then + Begin + VetorUON1a[i].id_local := strAux1; + log_DEBUG('Gravei VetorUON1a.id_local: "'+strAux1+'"'); + End; + + End; + end; + + // Código para montar o combo 3 + Parser.StartScan; + strTagName := ''; + i := -1; + While Parser.Scan DO + Begin + strItemName := UpperCase(Parser.CurName); + if (Parser.CurPartType = ptStartTag) and (strItemName = 'IT2') Then + Begin + i := i + 1; + SetLength(VetorUON2, i + 1); // Aumento o tamanho da matriz dinamicamente de acordo com o número de itens recebidos. + strTagName := 'IT2'; + end + else if (Parser.CurPartType = ptEndTag) and (strItemName = 'IT2') then + strTagName := '' + else if (Parser.CurPartType in [ptContent, ptCData]) and (strTagName='IT2')Then + Begin + strAux1 := DeCrypt(Parser.CurContent); + if (strItemName = 'ID1A') then + Begin + VetorUON2[i].id1a := strAux1; + log_DEBUG('Gravei VetorUON2.id1a: "'+strAux1+'"'); + End + else if (strItemName = 'ID2') then + Begin + VetorUON2[i].id2 := strAux1; + log_DEBUG('Gravei VetorUON2.id2: "'+strAux1+'"'); + End + else if (strItemName = 'NM2') then + Begin + VetorUON2[i].nm2 := strAux1; + log_DEBUG('Gravei VetorUON2.nm2: "'+strAux1+'"'); + End + else if (strItemName = 'ID_LOCAL') then + Begin + VetorUON2[i].id_local := strAux1; + log_DEBUG('Gravei VetorUON2.id_local: "'+strAux1+'"'); + End; + + End; + end; + Parser.Free; + // Como os itens do combo1 nunca mudam durante a execução do programa (ao contrario dos combo2 e 3), posso colocar o seu preenchimento aqui mesmo. + id_unid_organizacional_nivel1.Items.Clear; + For i := 0 to Length(VetorUON1) - 1 Do + id_unid_organizacional_nivel1.Items.Add(VetorUON1[i].nm1); + end; procedure TFormPatrimonio.id_unid_organizacional_nivel1Change(Sender: TObject); var i, j: Word; - strAux : String; + strAux, + strIdUON1 : String; begin + { // Filtro os itens do combo2, de acordo com o item selecionado no combo1 strAux := VetorUON1[id_unid_organizacional_nivel1.ItemIndex].id1; @@ -725,23 +924,106 @@ begin VetorUON2Filtrado[j] := VetorUON2[i].id2; end; end; -end; + } + // Filtro os itens do combo2, de acordo com o item selecionado no combo1 + strIdUON1 := VetorUON1[id_unid_organizacional_nivel1.ItemIndex].id1; + id_unid_organizacional_nivel1a.Items.Clear; + id_unid_organizacional_nivel2.Items.Clear; + id_unid_organizacional_nivel1a.Enabled := false; + id_unid_organizacional_nivel2.Enabled := false; + SetLength(VetorUON1aFiltrado, 0); + + For i := 0 to Length(VetorUON1a) - 1 Do + Begin + Try + if VetorUON1a[i].id1 = strIdUON1 then + Begin + id_unid_organizacional_nivel1a.Items.Add(VetorUON1a[i].nm1a); + j := Length(VetorUON1aFiltrado); + SetLength(VetorUON1aFiltrado, j + 1); + VetorUON1aFiltrado[j] := VetorUON1a[i].id1a; + end; + Except + End; + end; + if (id_unid_organizacional_nivel1a.Items.Count > 0) then + Begin + id_unid_organizacional_nivel1a.Enabled := true; + id_unid_organizacional_nivel1a.ItemIndex := 0; + id_unid_organizacional_nivel1aChange(nil); + End; +end; +procedure TFormPatrimonio.id_unid_organizacional_nivel1aChange( + Sender: TObject); +var i, j: Word; + strIdUON1a, + strIdLocal : String; + intAux : integer; +begin + // Filtro os itens do combo2, de acordo com o item selecionado no combo1 + intAux := IfThen(id_unid_organizacional_nivel1a.Items.Count > 1,id_unid_organizacional_nivel1a.ItemIndex+1,0); + strIdUON1a := VetorUON1a[intAux].id1a; + strIdLocal := VetorUON1a[intAux].id_local; + id_unid_organizacional_nivel2.Items.Clear; + id_unid_organizacional_nivel2.Enabled := false; + SetLength(VetorUON2Filtrado, 0); + + For i := 0 to Length(VetorUON2) - 1 Do + Begin + Try + if (VetorUON2[i].id1a = strIdUON1a) and + (VetorUON2[i].id_local = strIdLocal) then + Begin + id_unid_organizacional_nivel2.Items.Add(VetorUON2[i].nm2); + j := Length(VetorUON2Filtrado); + SetLength(VetorUON2Filtrado, j + 1); + VetorUON2Filtrado[j] := VetorUON2[i].id2 + '#' + VetorUON2[i].id_local; + end; + Except + End; + end; + if (id_unid_organizacional_nivel2.Items.Count > 0) then + Begin + id_unid_organizacional_nivel2.Enabled := true; + id_unid_organizacional_nivel2.ItemIndex := 0; + End; +end; procedure TFormPatrimonio.AtualizaPatrimonio(Sender: TObject); -var strAux1, strAux2 : String; +var strIdUON1, + strIdUON1a, + strIdUON2, + strIdLocal, + strRetorno : String; + tstrAux : TStrings; begin //Verifico se houve qualquer alteração nas informações. // Só vou enviar as novas informações para o bd ou gravar no registro se houve alterações. + { Try strAux1 := VetorUON1[id_unid_organizacional_nivel1.ItemIndex].id1; strAux2 := VetorUON2Filtrado[id_unid_organizacional_nivel2.ItemIndex]; Except end; + } + + tstrAux := TStrings.Create; + tstrAux := explode(VetorUON2Filtrado[id_unid_organizacional_nivel2.ItemIndex],'#'); + Try + strIdUON1 := VetorUON1[id_unid_organizacional_nivel1.ItemIndex].id1; + strIdUON1a := VetorUON1aFiltrado[id_unid_organizacional_nivel1a.ItemIndex]; + strIdUON2 := tstrAux[0]; + strIdLocal := tstrAux[1]; + Except + end; + tstrAux.Free; + SetValorDatMemoria('Col_Patr.Fim', FormatDateTime('hh:nn:ss', Now), v_tstrCipherOpened1); - if (strAux1 <> var_id_unid_organizacional_nivel1) or - (strAux2 <> var_id_unid_organizacional_nivel2) or + if (strIdUON1 <> var_id_unid_organizacional_nivel1) or + (strIdUON1a <> var_id_unid_organizacional_nivel1a) or + (strIdUON2 <> var_id_unid_organizacional_nivel2) or (te_localizacao_complementar.Text <> var_te_localizacao_complementar) or (te_info_patrimonio1.Text <> var_te_info_patrimonio1) or (te_info_patrimonio2.Text <> var_te_info_patrimonio2) or @@ -751,17 +1033,18 @@ begin (te_info_patrimonio6.Text <> var_te_info_patrimonio6) then begin //Envio via rede para ao Agente Gerente, para gravação no BD. - SetValorDatMemoria('Col_Patr.id_unid_organizacional_nivel1', strAux1, v_tstrCipherOpened1); - SetValorDatMemoria('Col_Patr.id_unid_organizacional_nivel2', strAux2, v_tstrCipherOpened1); - SetValorDatMemoria('Col_Patr.te_localizacao_complementar' , te_localizacao_complementar.Text, v_tstrCipherOpened1); - SetValorDatMemoria('Col_Patr.te_info_patrimonio1' , te_info_patrimonio1.Text, v_tstrCipherOpened1); + SetValorDatMemoria('Col_Patr.id_unid_organizacional_nivel1' , strIdUON1, v_tstrCipherOpened1); + SetValorDatMemoria('Col_Patr.id_unid_organizacional_nivel1a', strIdUON1a, v_tstrCipherOpened1); + SetValorDatMemoria('Col_Patr.id_unid_organizacional_nivel2' , strIdUON2, v_tstrCipherOpened1); + SetValorDatMemoria('Col_Patr.te_localizacao_complementar' , te_localizacao_complementar.Text, v_tstrCipherOpened1); + SetValorDatMemoria('Col_Patr.te_info_patrimonio1' , te_info_patrimonio1.Text, v_tstrCipherOpened1); SetValorChaveRegEdit('HKEY_LOCAL_MACHINE\SOFTWARE\Dataprev\Patrimonio\te_info_patrimonio1', te_info_patrimonio1.Text); - SetValorDatMemoria('Col_Patr.te_info_patrimonio2' , te_info_patrimonio2.Text, v_tstrCipherOpened1); - SetValorDatMemoria('Col_Patr.te_info_patrimonio3' , te_info_patrimonio3.Text, v_tstrCipherOpened1); - SetValorDatMemoria('Col_Patr.te_info_patrimonio4' , te_info_patrimonio4.Text, v_tstrCipherOpened1); + SetValorDatMemoria('Col_Patr.te_info_patrimonio2' , te_info_patrimonio2.Text, v_tstrCipherOpened1); + SetValorDatMemoria('Col_Patr.te_info_patrimonio3' , te_info_patrimonio3.Text, v_tstrCipherOpened1); + SetValorDatMemoria('Col_Patr.te_info_patrimonio4' , te_info_patrimonio4.Text, v_tstrCipherOpened1); SetValorChaveRegEdit('HKEY_LOCAL_MACHINE\SOFTWARE\Dataprev\Patrimonio\te_info_patrimonio4', te_info_patrimonio4.Text); - SetValorDatMemoria('Col_Patr.te_info_patrimonio5' , te_info_patrimonio5.Text, v_tstrCipherOpened1); - SetValorDatMemoria('Col_Patr.te_info_patrimonio6' , te_info_patrimonio6.Text, v_tstrCipherOpened1); + SetValorDatMemoria('Col_Patr.te_info_patrimonio5' , te_info_patrimonio5.Text, v_tstrCipherOpened1); + SetValorDatMemoria('Col_Patr.te_info_patrimonio6' , te_info_patrimonio6.Text, v_tstrCipherOpened1); CipherClose(p_path_cacic + 'temp\col_patr.dat', v_tstrCipherOpened1); end else @@ -780,6 +1063,9 @@ Begin Etiqueta1.Caption := DeCrypt(XML.XML_RetornaValor('te_etiqueta1', v_configs)); id_unid_organizacional_nivel1.Hint := DeCrypt(XML.XML_RetornaValor('te_help_etiqueta1', v_configs)); + Etiqueta1a.Caption := DeCrypt(XML.XML_RetornaValor('te_etiqueta1a', v_configs)); + id_unid_organizacional_nivel1a.Hint := DeCrypt(XML.XML_RetornaValor('te_help_etiqueta1a', v_configs)); + Etiqueta2.Caption := DeCrypt(XML.XML_RetornaValor('te_etiqueta2', v_configs)); id_unid_organizacional_nivel2.Hint := DeCrypt(XML.XML_RetornaValor('te_help_etiqueta2', v_configs)); @@ -926,8 +1212,10 @@ var boolColeta : boolean; i,intAux : integer; v_Aux : String; Begin + if (ParamCount>0) then Begin + FormPatrimonio.lbVersao.Caption := 'Versão: ' + GetVersionInfo(ParamStr(0)); For intAux := 1 to ParamCount do Begin if LowerCase(Copy(ParamStr(intAux),1,13)) = '/p_cipherkey=' then @@ -1018,4 +1306,6 @@ Begin End; end; + + end. diff --git a/col_undi/col_undi.dof b/col_undi/col_undi.dof index 9f43bcf..a0bd706 100755 --- a/col_undi/col_undi.dof +++ b/col_undi/col_undi.dof @@ -115,7 +115,7 @@ AutoIncBuild=0 MajorVer=2 MinorVer=2 Release=0 -Build=1 +Build=2 Debug=0 PreRelease=0 Special=0 @@ -126,13 +126,13 @@ CodePage=1252 [Version Info Keys] CompanyName=Dataprev-Unidade Regional Espírito Santo FileDescription=Coletor de Informações de Unidades de Disco do Sistema CACIC -FileVersion=2.2.0.1 +FileVersion=2.2.0.2 InternalName= LegalCopyright= LegalTrademarks= OriginalFilename= ProductName=Col_UNDI -ProductVersion=2.2.0.1 +ProductVersion=2.2.0.2 Comments=Baseado na licença GPL (General Public License) [HistoryLists\hlDebugSourcePath] Count=1 diff --git a/col_undi/col_undi.dpr b/col_undi/col_undi.dpr index cc70b57..37fac52 100755 --- a/col_undi/col_undi.dpr +++ b/col_undi/col_undi.dpr @@ -487,7 +487,7 @@ end; procedure Executa_Col_undi; -var strXML, strAux, id_tipo_unid_disco, ValorChaveRegistro : String; +var strTripaDados, strAux, id_tipo_unid_disco, ValorChaveRegistro : String; I: Integer; v_DISK : TMiTeC_Disk; v_Report : TstringList; @@ -495,7 +495,8 @@ Begin SetValorDatMemoria('Col_Undi.Inicio', FormatDateTime('hh:nn:ss', Now), v_tstrCipherOpened1); log_diario('Coletando informações de Unidades de Disco.'); Try - strXML := ''; + //strXML := ''; + strTripaDados := ''; v_DISK := TMiTeC_Disk.Create(nil); with v_DISK do @@ -511,17 +512,30 @@ Begin if (UpperCase(id_tipo_unid_disco) = 'FIXED') then Begin id_tipo_unid_disco := '2'; - strXML := strXML + '' + - '' + Drive + ''; - if ((id_tipo_unid_disco = '2') or (id_tipo_unid_disco = '4')) then strXML := strXML + - '' + FileSystem + '' + - '' + SerialNumber + '' + - '' + IntToStr(Capacity div 10485760) + '0' + // Em MB - Coleta apenas de 10 em 10 MB - '' + IntToStr(FreeSpace div 10485760 ) + '0'; // Em MB - Coleta apenas de 10 em 10 MB - if (id_tipo_unid_disco = '4') then strXML := strXML + - '' + ExpandUNCFilename(Drive) + ''; - strXML := strXML + '' + id_tipo_unid_disco + '' + - ''; + if (strTripaDados <> '') then + strTripaDados := strTripaDados + ''; // Delimitador de REGISTRO + + //strXML := strXML + '' + + // '' + Drive + ''; + strTripaDados := strTripaDados + Drive + ''; + + strTripaDados := strTripaDados + id_tipo_unid_disco + ''; + + if ((id_tipo_unid_disco = '2') or (id_tipo_unid_disco = '4')) then + strTripaDados := strTripaDados + FileSystem + '' + + SerialNumber + '' + + IntToStr(Capacity div 10485760) + '0' + '' + // Em MB - Coleta apenas de 10 em 10 MB + IntToStr(FreeSpace div 10485760) + '0' + '' // Em MB - Coleta apenas de 10 em 10 MB + else + strTripaDados := strTripaDados + '' + '' + + '' + '' + + '' + '' + // Em MB - Coleta apenas de 10 em 10 MB + '' + ''; // Em MB - Coleta apenas de 10 em 10 MB + if (id_tipo_unid_disco = '4') then + strTripaDados := strTripaDados + ExpandUNCFilename(Drive) + else + strTripaDados := strTripaDados + ''; + end; end; @@ -536,7 +550,7 @@ Begin End; v_DISK.Free; - strXML := strXML + ''; + //strXML := strXML + ''; // Obtenho do registro o valor que foi previamente armazenado ValorChaveRegistro := Trim(GetValorDatMemoria('Coletas.UnidadesDisco',v_tstrCipherOpened)); @@ -546,9 +560,10 @@ Begin // Se essas informações forem diferentes significa que houve alguma alteração // na configuração. Nesse caso, gravo as informações no BD Central e, se não houver // problemas durante esse procedimento, atualizo as informações no registro. - If (GetValorDatMemoria('Configs.IN_COLETA_FORCADA_UNDI',v_tstrCipherOpened)='S') or (strXML <> ValorChaveRegistro) Then + If ((GetValorDatMemoria('Configs.IN_COLETA_FORCADA_UNDI',v_tstrCipherOpened)='S') or (strTripaDados <> ValorChaveRegistro)) and + (strTripaDados <> '') Then Begin - SetValorDatMemoria('Col_Undi.UVC', strXML, v_tstrCipherOpened1); + SetValorDatMemoria('Col_Undi.UVC', strTripaDados, v_tstrCipherOpened1); CipherClose(p_path_cacic + 'temp\col_undi.dat', v_tstrCipherOpened1); end else diff --git a/col_undi/col_undi.res b/col_undi/col_undi.res index 6067c04..e36b68a 100755 Binary files a/col_undi/col_undi.res and b/col_undi/col_undi.res differ diff --git a/ger_cols/ger_cols.cfg b/ger_cols/ger_cols.cfg index 461c437..9590be7 100755 --- a/ger_cols/ger_cols.cfg +++ b/ger_cols/ger_cols.cfg @@ -33,10 +33,3 @@ -K$00400000 -LE"c:\arquivos de programas\borland\delphi7\Projects\Bpl" -LN"c:\arquivos de programas\borland\delphi7\Projects\Bpl" --U"C:\Arquivos de programas\Borland\Delphi7\Comps_CACIC\CriptografiaDCP;C:\Arquivos de programas\Borland\Delphi7\Comps_CACIC\Mitec\v1010_Delphi7;C:\Arquivos de programas\Borland\Delphi7\Comps_CACIC\NTFileSecurity;C:\Arquivos de programas\Borland\Delphi7\Comps_CACIC\PJVersion;C:\Arquivos de programas\Borland\Delphi7\Comps_CACIC\ZLibex" --O"C:\Arquivos de programas\Borland\Delphi7\Comps_CACIC\CriptografiaDCP;C:\Arquivos de programas\Borland\Delphi7\Comps_CACIC\Mitec\v1010_Delphi7;C:\Arquivos de programas\Borland\Delphi7\Comps_CACIC\NTFileSecurity;C:\Arquivos de programas\Borland\Delphi7\Comps_CACIC\PJVersion;C:\Arquivos de programas\Borland\Delphi7\Comps_CACIC\ZLibex" --I"C:\Arquivos de programas\Borland\Delphi7\Comps_CACIC\CriptografiaDCP;C:\Arquivos de programas\Borland\Delphi7\Comps_CACIC\Mitec\v1010_Delphi7;C:\Arquivos de programas\Borland\Delphi7\Comps_CACIC\NTFileSecurity;C:\Arquivos de programas\Borland\Delphi7\Comps_CACIC\PJVersion;C:\Arquivos de programas\Borland\Delphi7\Comps_CACIC\ZLibex" --R"C:\Arquivos de programas\Borland\Delphi7\Comps_CACIC\CriptografiaDCP;C:\Arquivos de programas\Borland\Delphi7\Comps_CACIC\Mitec\v1010_Delphi7;C:\Arquivos de programas\Borland\Delphi7\Comps_CACIC\NTFileSecurity;C:\Arquivos de programas\Borland\Delphi7\Comps_CACIC\PJVersion;C:\Arquivos de programas\Borland\Delphi7\Comps_CACIC\ZLibex" --w-UNSAFE_TYPE --w-UNSAFE_CODE --w-UNSAFE_CAST diff --git a/ger_cols/ger_cols.dof b/ger_cols/ger_cols.dof index 0e77828..2911a2d 100755 --- a/ger_cols/ger_cols.dof +++ b/ger_cols/ger_cols.dof @@ -76,9 +76,9 @@ LocaleToUnicode=1 ImagebaseMultiple=1 SuspiciousTypecast=1 PrivatePropAccessor=1 -UnsafeType=0 -UnsafeCode=0 -UnsafeCast=0 +UnsafeType=1 +UnsafeCode=1 +UnsafeCast=1 [Linker] MapFile=0 OutputObjs=0 @@ -94,10 +94,10 @@ OutputDir= UnitOutputDir= PackageDLLOutputDir= PackageDCPOutputDir= -SearchPath=C:\Arquivos de programas\Borland\Delphi7\Comps_CACIC\CriptografiaDCP;C:\Arquivos de programas\Borland\Delphi7\Comps_CACIC\Mitec\v1010_Delphi7;C:\Arquivos de programas\Borland\Delphi7\Comps_CACIC\NTFileSecurity;C:\Arquivos de programas\Borland\Delphi7\Comps_CACIC\PJVersion;C:\Arquivos de programas\Borland\Delphi7\Comps_CACIC\ZLibex -Packages=vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;IntrawebDB_50_70;Intraweb_50_70;Rave50CLX;Rave50VCL;dclOffice2k +SearchPath= +Packages= Conditionals= -DebugSourceDirs=C:\Arquivos de programas\Borland\Delphi7\ +DebugSourceDirs= UsePackages=0 [Parameters] RunParams= @@ -108,14 +108,14 @@ DebugCWD= [Language] ActiveLang= ProjectLang= -RootDir=C:\Arquivos de programas\Borland\Delphi7\Bin\ +RootDir= [Version Info] IncludeVerInfo=1 AutoIncBuild=0 -MajorVer=2 -MinorVer=2 +MajorVer=1 +MinorVer=0 Release=0 -Build=27 +Build=0 Debug=0 PreRelease=0 Special=0 @@ -123,33 +123,3 @@ Private=0 DLL=0 Locale=1046 CodePage=1252 -[Version Info Keys] -CompanyName=Dataprev-Unidade Regional Espírito Santo -FileDescription=Módulo Gerente de Coletas do Sistema CACIC -FileVersion=2.2.0.27 -InternalName= -LegalCopyright= -LegalTrademarks= -OriginalFilename= -ProductName=Ger_COLS -ProductVersion=2.2.0.27 -Comments=Baseado na licença GPL (General Public License) -[HistoryLists\hlDebugSourcePath] -Count=2 -Item0=C:\Arquivos de programas\Borland\Delphi7\ -Item1=C:\Arquivos de programas\Borland\Delphi7\Mitec\v910_Delphi7 -[HistoryLists\hlUnitAliases] -Count=1 -Item0=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; -[HistoryLists\hlSearchPath] -Count=10 -Item0=C:\Arquivos de programas\Borland\Delphi7\Comps_CACIC\CriptografiaDCP;C:\Arquivos de programas\Borland\Delphi7\Comps_CACIC\Mitec\v1010_Delphi7;C:\Arquivos de programas\Borland\Delphi7\Comps_CACIC\NTFileSecurity;C:\Arquivos de programas\Borland\Delphi7\Comps_CACIC\PJVersion;C:\Arquivos de programas\Borland\Delphi7\Comps_CACIC\ZLibex -Item1=C:\Arquivos de programas\Borland\Delphi7\Comps_CACIC\CriptografiaDCP;C:\Arquivos de programas\Borland\Delphi7\Comps_CACIC\Mitec\v1010_Delphi7;C:\Arquivos de programas\Borland\Delphi7\Comps_CACIC\NTFileSecurity;C:\Arquivos de programas\Borland\Delphi7\Comps_CACIC\PJVersion;C:\Arquivos de programas\Borland\Delphi7\Comps_CACIC\ZLibex;C:\Arquivos de programas\Borland\Delphi7\Comps_CACIC\TpAbbrevia -Item2=C:\Arquivos de programas\Borland\Delphi7\Comps_CACIC\CriptografiaDCP;C:\Arquivos de programas\Borland\Delphi7\Comps_CACIC\Mitec\v1010_Delphi7;C:\Arquivos de programas\Borland\Delphi7\Comps_CACIC\NTFileSecurity;C:\Arquivos de programas\Borland\Delphi7\Comps_CACIC\PJVersion -Item3=C:\Arquivos de programas\Borland\Delphi7\CriptografiaDCP\Hashes;C:\Arquivos de programas\Borland\Delphi7\CriptografiaDCP\Ciphers;C:\Arquivos de programas\Borland\Delphi7\CriptografiaDCP;C:\Arquivos de programas\Borland\Delphi7\Mitec\v1010_Delphi7 -Item4=C:\Arquivos de programas\Borland\Delphi7\Mitec\9.60;C:\Arquivos de programas\Borland\Delphi7\CriptografiaDCP\Hashes;C:\Arquivos de programas\Borland\Delphi7\CriptografiaDCP\Ciphers;C:\Arquivos de programas\Borland\Delphi7\CriptografiaDCP;C:\Arquivos de programas\Borland\Delphi7\Mitec\v1010_Delphi7 -Item5=C:\Arquivos de programas\Borland\Delphi7\Mitec\9.60;C:\Arquivos de programas\Borland\Delphi7\CriptografiaDCP\Hashes;C:\Arquivos de programas\Borland\Delphi7\CriptografiaDCP\Ciphers;C:\Arquivos de programas\Borland\Delphi7\CriptografiaDCP -Item6=C:\Arquivos de programas\Borland\Delphi7\Mitec\9.60;C:\Arquivos de programas\Borland\Delphi7\CriptografiaDCP\Hashes;C:\Arquivos de programas\Borland\Delphi7\CriptografiaDCP\Ciphers -Item7=C:\Arquivos de programas\Borland\Delphi7\Mitec\9.60;C:\Arquivos de programas\Borland\Delphi7\CriptografiaDCP\Hashes -Item8=C:\Arquivos de programas\Borland\Delphi7\Mitec\9.60 -Item9=C:\Arquivos de programas\Borland\Delphi7\Mitec\v910_Delphi7 diff --git a/ger_cols/ger_cols.dpr b/ger_cols/ger_cols.dpr index b3fc04e..064d97d 100755 --- a/ger_cols/ger_cols.dpr +++ b/ger_cols/ger_cols.dpr @@ -1,4 +1,4 @@ -(** +(* --------------------------------------------------------------------------------------------------------------------------------------------------------------- Copyright 2000, 2001, 2002, 2003, 2004, 2005 Dataprev - Empresa de Tecnologia e Informações da Previdência Social, Brasil @@ -20,7 +20,7 @@ NOTA: O componente MiTeC System Information Component (MSIC) é baseado na classe program ger_cols; {$R *.res} -{$APPTYPE CONSOLE} + uses ShellApi, Windows, @@ -47,7 +47,7 @@ uses DCPrijndael, DCPbase64, ZLibEx; - +{$APPTYPE CONSOLE} var p_path_cacic, v_scripter, p_Shell_Command, @@ -72,8 +72,6 @@ var CountUPD, intMontaBatch, intLoop : integer; - - var tstrTripa1, v_tstrCipherOpened, v_tstrCipherOpened1, @@ -93,6 +91,7 @@ var BatchFile, const KeySize = 32; // 32 bytes = 256 bits BlockSize = 16; // 16 bytes = 128 bits + // Pad a string with zeros so that it is a multiple of size function PadWithZeros(const str : string; size : integer) : string; var @@ -273,6 +272,25 @@ Begin Explode := ListaAuxUTILS; end; +function StringtoHex(Data: string): string; +var + i, i2: Integer; + s: string; +begin + i2 := 1; + for i := 1 to Length(Data) do + begin + Inc(i2); + if i2 = 2 then + begin + s := s + ' '; + i2 := 1; + end; + s := s + IntToHex(Ord(Data[i]), 2); + end; + Result := s; +end; + Function Implode(p_Array : TStrings ; p_Separador : String) : String; var intAux : integer; Begin @@ -319,7 +337,10 @@ end; function EnCrypt(p_Data : String; p_Compress : Boolean) : String; var l_Cipher : TDCP_rijndael; - l_Data, l_Key, l_IV : String; + l_Data, + l_Key, + l_IV, + strAux : String; begin Try if l_cs_cipher then @@ -329,6 +350,10 @@ begin l_IV := PadWithZeros(v_IV,BlockSize); l_Data := PadWithZeros(trim(p_Data),BlockSize); + //log_DEBUG('Encrypt - HEXA da CHAVE "'+v_CipherKey+'": "'+StringtoHex(l_Key)+'"'); + //log_DEBUG('Encrypt - HEXA do IV "'+v_IV+'": "'+StringtoHex(l_IV)+'"'); + //log_DEBUG('Encrypt - HEXA do DADO "'+trim(p_Data)+'": "'+StringtoHex(l_Data)+'"'); + // Create the cipher and initialise according to the key length l_Cipher := TDCP_rijndael.Create(nil); if Length(v_CipherKey) <= 16 then @@ -346,6 +371,9 @@ begin FillChar(l_Key[1],Length(l_Key),0); log_DEBUG('Criptografia(ATIVADA) de "'+p_Data+'" => "'+l_Data+'"'); // Return the Base64 encoded result + + // Substituo os sinais de "+" por devido a problema com tráfego POST + Result := trim(Base64EncodeStr(l_Data)); End else @@ -379,6 +407,10 @@ begin // Decode the Base64 encoded string l_Data := Base64DecodeStr(trim(v_Data)); + //log_DEBUG('Decrypt - HEXA da CHAVE "'+v_CipherKey+'": "'+StringtoHex(l_Key)+'"'); + //log_DEBUG('Decrypt - HEXA do IV "'+v_IV+'": "'+StringtoHex(l_IV)+'"'); + //log_DEBUG('Decrypt - HEXA do DADO "'+trim(p_Data)+'": "'+StringtoHex(l_Data)+'"'); + // Create the cipher and initialise according to the key length l_Cipher := TDCP_rijndael.Create(nil); if Length(v_CipherKey) <= 16 then @@ -482,7 +514,8 @@ begin v_te_so := IntToStr(platformId) + '.' + IntToStr(majorVer) + '.' + IntToStr(minorVer) + - IfThen(CSDVersion='','','.'+CSDVersion); + ifThen(CSDVersion='','','.'+CSDVersion); + if (Result = 0) then Result := abstraiCSD(v_te_so); end; @@ -502,9 +535,10 @@ end; Function CipherClose(p_DatFileName : string; p_tstrCipherOpened : TStrings) : String; var v_strCipherOpenImploded, - v_strCipherClosed : string; - v_DatFile : TextFile; - //intAux : integer; + v_strCipherClosed, + strAux : string; + v_DatFile, + v_DatFileDebug : TextFile; v_cs_cipher : boolean; begin try @@ -521,14 +555,33 @@ begin Rewrite (v_DatFile); Append(v_DatFile); + if v_Debugs then + Begin + strAux := StringReplace(p_DatFileName,'.dat','_Debug.dat',[rfReplaceAll]); + AssignFile(v_DatFileDebug,strAux); {Associa o arquivo a uma variável do tipo TextFile} + + // Criação do arquivo .DAT para Debug + {$IOChecks off} + Rewrite (v_DatFileDebug); + {$IOChecks on} + Append(v_DatFileDebug); + End; + v_strCipherOpenImploded := Implode(p_tstrCipherOpened,'=CacicIsFree='); + v_cs_cipher := l_cs_cipher; l_cs_cipher := true; log_DEBUG('Rotina de Fechamento do cacic2.dat ATIVANDO criptografia.'); v_strCipherClosed := EnCrypt(v_strCipherOpenImploded, false); + l_cs_cipher := v_cs_cipher; log_DEBUG('Rotina de Fechamento do cacic2.dat RESTAURANDO estado da criptografia.'); Writeln(v_DatFile,v_strCipherClosed); {Grava a string Texto no arquivo texto} + if v_Debugs then + Begin + Writeln(v_DatFileDebug,StringReplace(v_strCipherOpenImploded,'=CacicIsFree=',#13#10,[rfReplaceAll])); + CloseFile(v_DatFileDebug); + End; CloseFile(v_DatFile); except log_diario('ERRO NA GRAVAÇÃO DO ARQUIVO DE CONFIGURAÇÕES.'); @@ -1140,12 +1193,23 @@ begin Reg_Ini.Free; end; +function GetIP: string; +var ipwsa:TWSAData; p:PHostEnt; s:array[0..128] of char; c:pchar; +begin + wsastartup(257,ipwsa); + GetHostName(@s, 128); + p := GetHostByName(@s); + c := iNet_ntoa(PInAddr(p^.h_addr_list^)^); + Result := String(c); +end; + Function ComunicaServidor(URL : String; Request : TStringList; MsgAcao: String) : String; var Response_CS : TStringStream; strEndereco, v_Endereco_WS, v_Aux, - v_Aux1 : String; + v_Aux1, + strAux : String; idHTTP1 : TIdHTTP; intAux : integer; v_AuxRequest : TStringList; @@ -1157,7 +1221,27 @@ Begin v_AuxRequest.Values['cs_cipher'] := GetValorDatMemoria('Configs.CS_CIPHER',v_tstrCipherOpened); // A partir da versão 2.0.2.18+ envio um Classificador indicativo de dados compactados... - v_AuxRequest.Values['cs_compress'] := GetValorDatMemoria('Configs.CS_COMPRESS',v_tstrCipherOpened); + v_AuxRequest.Values['cs_compress'] := GetValorDatMemoria('Configs.CS_COMPRESS',v_tstrCipherOpened); + + intAux := GetWinVer; + strAux := GetValorDatMemoria('TcpIp.TE_IP', v_tstrCipherOpened); + if (strAux = '') then + strAux := 'A.B.C.D'; // Apenas para forçar que o Gerente extraia via _SERVER[REMOTE_ADDR] + + // Tratamentos de valores para tráfego POST: + // v_te_so => transformar ' ' em Razão: o mmcrypt se perde quando encontra ' ' (espaço) + v_te_so := StringReplace(v_te_so,' ','',[rfReplaceAll]); + + v_AuxRequest.Values['te_node_address'] := StringReplace(EnCrypt(GetValorDatMemoria('TcpIp.TE_NODE_ADDRESS' , v_tstrCipherOpened),l_cs_compress),'+','',[rfReplaceAll]); + v_AuxRequest.Values['id_so'] := StringReplace(EnCrypt(IntToStr(intAux) ,l_cs_compress),'+','',[rfReplaceAll]); + v_AuxRequest.Values['te_so'] := StringReplace(EnCrypt(v_te_so ,l_cs_compress),'+','',[rfReplaceAll]); + v_AuxRequest.Values['te_ip'] := StringReplace(EnCrypt(strAux ,l_cs_compress),'+','',[rfReplaceAll]); + v_AuxRequest.Values['id_ip_rede'] := StringReplace(EnCrypt(GetValorDatMemoria('TcpIp.ID_IP_REDE' , v_tstrCipherOpened),l_cs_compress),'+','',[rfReplaceAll]); + v_AuxRequest.Values['te_workgroup'] := StringReplace(EnCrypt(GetValorDatMemoria('TcpIp.TE_WORKGROUP' , v_tstrCipherOpened),l_cs_compress),'+','',[rfReplaceAll]); + v_AuxRequest.Values['te_nome_computador']:= StringReplace(EnCrypt(GetValorDatMemoria('TcpIp.TE_NOME_COMPUTADOR', v_tstrCipherOpened),l_cs_compress),'+','',[rfReplaceAll]); + v_AuxRequest.Values['id_ip_estacao'] := StringReplace(EnCrypt(GetIP,l_cs_compress),'+','',[rfReplaceAll]); + v_AuxRequest.Values['te_versao_cacic'] := StringReplace(EnCrypt(getVersionInfo(p_path_cacic + 'cacic2.exe'),l_cs_compress),'+','',[rfReplaceAll]); + v_AuxRequest.Values['te_versao_gercols'] := StringReplace(EnCrypt(getVersionInfo(ParamStr(0)),l_cs_compress),'+','',[rfReplaceAll]); v_Endereco_WS := GetValorDatMemoria('Configs.Endereco_WS', v_tstrCipherOpened); v_Endereco_Servidor := GetValorDatMemoria('Configs.EnderecoServidor', v_tstrCipherOpened); @@ -1186,37 +1270,39 @@ Begin Try idHTTP1 := TIdHTTP.Create(nil); idHTTP1.AllowCookies := true; - idHTTP1.ASCIIFilter := false; - idHTTP1.AuthRetries := 1; + idHTTP1.ASCIIFilter := false; // ATENÇÃO: Esta propriedade deixa de existir na próxima versão do Indy (10.x) + idHTTP1.AuthRetries := 1; // ATENÇÃO: Esta propriedade deixa de existir na próxima versão do Indy (10.x) idHTTP1.BoundPort := 0; idHTTP1.HandleRedirects := false; idHTTP1.ProxyParams.BasicAuthentication := false; idHTTP1.ProxyParams.ProxyPort := 0; idHTTP1.ReadTimeout := 0; - idHTTP1.RecvBufferSize := 32768; idHTTP1.RedirectMaximum := 15; - idHTTP1.Request.UserAgent := EnCrypt('AGENTE_CACIC',l_cs_compress); - idHTTP1.Request.Username := EnCrypt('USER_CACIC',l_cs_compress); - idHTTP1.Request.Password := EnCrypt('PW_CACIC',l_cs_compress); + idHTTP1.Request.UserAgent := StringReplace(EnCrypt('AGENTE_CACIC',l_cs_compress),'+','',[rfReplaceAll]); + idHTTP1.Request.Username := StringReplace(EnCrypt('USER_CACIC',l_cs_compress),'+','',[rfReplaceAll]); + idHTTP1.Request.Password := StringReplace(EnCrypt('PW_CACIC',l_cs_compress),'+','',[rfReplaceAll]); idHTTP1.Request.Accept := 'text/html, */*'; idHTTP1.Request.BasicAuthentication := true; idHTTP1.Request.ContentLength := -1; idHTTP1.Request.ContentRangeStart := 0; idHTTP1.Request.ContentRangeEnd := 0; idHTTP1.Request.ContentType := 'text/html'; - idHTTP1.SendBufferSize := 32768; + idHTTP1.RecvBufferSize := 32768; // ATENÇÃO: Esta propriedade deixa de existir na próxima versão do Indy (10.x) + idHTTP1.SendBufferSize := 32768; // ATENÇÃO: Esta propriedade deixa de existir na próxima versão do Indy (10.x) idHTTP1.Tag := 0; if v_Debugs then Begin + Log_Debug('te_so => '+v_te_so); Log_Debug('Valores de REQUEST para envio ao Gerente WEB:'); for intAux := 0 to v_AuxRequest.count -1 do Log_Debug('#'+inttostr(intAux)+': '+v_AuxRequest[intAux]); End; IdHTTP1.Post(strEndereco, v_AuxRequest, Response_CS); + idHTTP1.Disconnect; idHTTP1.Free; -// log_DEBUG('Retorno: "'+StringReplace(Response_CS.DataString,' ','=CacicIsFree=',[rfReplaceAll])+'"'); + log_DEBUG('Retorno: "'+Response_CS.DataString+'"'); Except log_diario('ERRO! Comunicação impossível com o endereço ' + strEndereco + Response_CS.DataString); @@ -1257,13 +1343,6 @@ var strDt_ultima_renovacao_patrim, Begin // Solicita ao servidor as configurações para a Coleta de Informações de Patrimônio Request_Ger_Cols:=TStringList.Create; - Request_Ger_Cols.Values['te_node_address'] := EnCrypt(GetValorDatMemoria('TcpIp.TE_NODE_ADDRESS' , v_tstrCipherOpened),l_cs_compress); - Request_Ger_Cols.Values['id_so'] := EnCrypt(GetValorDatMemoria('Configs.ID_SO' , v_tstrCipherOpened),l_cs_compress); - Request_Ger_Cols.Values['te_so'] := EnCrypt(v_te_so,l_cs_compress); - Request_Ger_Cols.Values['te_ip'] := EnCrypt(GetValorDatMemoria('TcpIp.TE_IP' , v_tstrCipherOpened),l_cs_compress); - Request_Ger_Cols.Values['id_ip_rede'] := EnCrypt(GetValorDatMemoria('TcpIp.ID_IP_REDE' , v_tstrCipherOpened),l_cs_compress); - Request_Ger_Cols.Values['te_workgroup'] := EnCrypt(GetValorDatMemoria('TcpIp.TE_WORKGROUP' , v_tstrCipherOpened),l_cs_compress); - Request_Ger_Cols.Values['te_nome_computador']:= EnCrypt(GetValorDatMemoria('TcpIp.TE_NOME_COMPUTADOR', v_tstrCipherOpened),l_cs_compress); strRetorno := ComunicaServidor('get_patrimonio.php', Request_Ger_Cols, '.'); SetValorDatMemoria('Patrimonio.Configs', strRetorno, v_tstrCipherOpened); @@ -1385,12 +1464,16 @@ var v_te_senha_login_serv_updates : string; IdFTP1 : TIdFTP; begin v_te_senha_login_serv_updates := GetValorDatMemoria('Configs.TE_SENHA_LOGIN_SERV_UPDATES', v_tstrCipherOpened); + log_DEBUG('Instanciando FTP...'); IdFTP1 := TIdFTP.Create(IdFTP1); + + log_DEBUG('FTP Instanciado!'); IdFTP1.Host := GetValorDatMemoria('Configs.TE_SERV_UPDATES', v_tstrCipherOpened); IdFTP1.Username := GetValorDatMemoria('Configs.NM_USUARIO_LOGIN_SERV_UPDATES', v_tstrCipherOpened); IdFTP1.Password := v_te_senha_login_serv_updates; IdFTP1.Port := strtoint(GetValorDatMemoria('Configs.NU_PORTA_SERV_UPDATES', v_tstrCipherOpened)); IdFTP1.TransferType := ftBinary; + IdFTP1.Passive := true; log_DEBUG('Iniciando FTP de '+Arq +' para '+StringReplace(DirDestino + '\' + Arq,'\\','\',[rfReplaceAll])); log_DEBUG('Host........ ='+IdFTP1.Host); @@ -1403,19 +1486,24 @@ begin begin IdFTP1.Disconnect; end; - IdFTP1.Connect(true); + //IdFTP1.Connect(True); + IdFTP1.Connect; IdFTP1.ChangeDir(GetValorDatMemoria('Configs.TE_PATH_SERV_UPDATES', v_tstrCipherOpened)); Try // Substituo \\ por \ devido a algumas vezes em que o DirDestino assume o valor de DirTemp... + log_DEBUG('FTP - Size de "'+Arq+'" Antes => '+IntToSTR(IdFTP1.Size(Arq))); IdFTP1.Get(Arq, StringReplace(DirDestino + '\' + Arq,'\\','\',[rfReplaceAll]), True); + log_DEBUG('FTP - Size de "'+DirDestino + '\' + Arq +'" Após => '+Get_File_Size(DirDestino + '\' + Arq,true)); + Finally result := true; - Except - result := false; + log_DEBUG('FTP - Size de "'+DirDestino + '\' + Arq +'" Após em Finally => '+Get_File_Size(DirDestino + '\' + Arq,true)); + idFTP1.Disconnect; + IdFTP1.Free; End; Except + log_DEBUG('FTP - Erro - Size de "'+DirDestino + '\' + Arq +'" Após em Finally => '+Get_File_Size(DirDestino + '\' + Arq,true)); result := false; end; - IdFTP1.Free end; procedure CriaTXT(p_Dir, p_File : string); @@ -1535,15 +1623,6 @@ begin Result := WinPath end; -function GetIP: string; -var ipwsa:TWSAData; p:PHostEnt; s:array[0..128] of char; c:pchar; -begin - wsastartup(257,ipwsa); - GetHostName(@s, 128); - p := GetHostByName(@s); - c := iNet_ntoa(PInAddr(p^.h_addr_list^)^); - Result := String(c); -end; function GetNetworkUserName : String; // Gets the name of the user currently logged into the network on @@ -1663,10 +1742,41 @@ begin end; end; +function ChecaAgente(agentFolder, agentName : String) : boolean; +var strFraseVersao : String; +Begin + Result := true; + + log_DEBUG('Verificando existência e tamanho de "'+agentFolder+'\'+agentName+'"'); + v_Tamanho_Arquivo := Get_File_Size(agentFolder+'\'+agentName,true); + + log_DEBUG('Resultado: #'+v_Tamanho_Arquivo); + + if (v_Tamanho_Arquivo = '0') or (v_Tamanho_Arquivo = '-1') then + Begin + Result := false; + + Matar(agentFolder+'\',agentName); + + Ver_UPD(StringReplace(LowerCase(agentName),'.exe','',[rfReplaceAll]),agentName,agentFolder+'\','Temp',false); + + sleep(15000); // 15 segundos de espera para download do agente + v_Tamanho_Arquivo := Get_File_Size(agentFolder+'\'+agentName,true); + if not(v_Tamanho_Arquivo = '0') and not(v_Tamanho_Arquivo = '-1') then + Begin + log_diario('Agente "'+agentFolder+'\'+agentName+'" RECUPERADO COM SUCESSO!'); + Result := True; + End + else + log_diario('Agente "'+agentFolder+'\'+agentName+'" NÃO RECUPERADO!'); + End; +End; + procedure Patrimnio1Click(Sender: TObject); begin SetValorDatMemoria('Patrimonio.dt_ultima_renovacao_patrim','', v_tstrCipherOpened); - WinExec(PChar(p_path_cacic + 'modulos\ini_cols.exe /p_CipherKey='+v_CipherKey+ ' /p_ModulosOpcoes=col_patr,wait,user#'),SW_HIDE); + if ChecaAgente(p_path_cacic + 'modulos', 'ini_cols.exe') then + WinExec(PChar(p_path_cacic + 'modulos\ini_cols.exe /p_CipherKey='+v_CipherKey+ ' /p_ModulosOpcoes=col_patr,wait,user#'),SW_HIDE); end; procedure ChecaCipher; @@ -1759,7 +1869,7 @@ Begin Begin v_acao_gercols := 'Gerando Report para TMiTeC_Network...'; //v_NETWORK.Report(v_Report,false); - MSI_XML_Reports.Network_XML_Report(v_NETWORK,true,v_Report); + MSI_XML_Reports.Network_XML_Report(v_NETWORK,true,v_Report); for intAux1:=0 to v_Report.count-1 do Begin @@ -1776,13 +1886,13 @@ Begin // Verifico comunicação com o Módulo Gerente WEB. Request_SVG := TStringList.Create; - Request_SVG.Values['in_teste'] := EnCrypt('OK',l_cs_compress); - Request_SVG.Values['te_node_address'] := EnCrypt(v_mac_address,l_cs_compress); - Request_SVG.Values['id_so'] := EnCrypt(inttostr(GetWinVer),l_cs_compress); - Request_SVG.Values['te_so'] := EnCrypt(v_te_so,l_cs_compress); - Request_SVG.Values['id_ip_rede'] := EnCrypt(GetIPRede(te_ip, te_mascara),l_cs_compress); - Request_SVG.Values['te_workgroup'] := EnCrypt(GetWorkgroup,l_cs_compress); - Request_SVG.Values['te_nome_computador']:= EnCrypt(te_nome_host,l_cs_compress); + Request_SVG.Values['in_teste'] := StringReplace(EnCrypt('OK',l_cs_compress),'+','',[rfReplaceAll]); + //Request_SVG.Values['te_node_address'] := EnCrypt(v_mac_address,l_cs_compress); + //Request_SVG.Values['id_so'] := EnCrypt(inttostr(GetWinVer),l_cs_compress); + //Request_SVG.Values['te_so'] := EnCrypt(v_te_so,l_cs_compress); + //Request_SVG.Values['id_ip_rede'] := EnCrypt(GetIPRede(te_ip, te_mascara),l_cs_compress); + //Request_SVG.Values['te_workgroup'] := EnCrypt(GetWorkgroup,l_cs_compress); + //Request_SVG.Values['te_nome_computador']:= EnCrypt(te_nome_host,l_cs_compress); v_acao_gercols := 'Preparando teste de comunicação com Módulo Gerente WEB.'; @@ -1798,7 +1908,7 @@ Begin for intAux1 := 0 to intAux2 do Begin v_acao_gercols := 'Setando Request.te_ip com ' + v_tcpip.Adapter[v_index_ethernet].IPAddress[intAux1]; - + SetValorDatMemoria('TcpIp.TE_IP',v_tcpip.Adapter[v_index_ethernet].IPAddress[intAux1], v_tstrCipherOpened); Try strRetorno := ComunicaServidor('get_config.php', Request_SVG, 'Testando comunicação com o Módulo Gerente WEB.'); Seta_l_cs_cipher(strRetorno); @@ -1826,15 +1936,14 @@ Begin // Nova tentativa, preciso reinicializar o objeto devido aos restos da operação anterior... (Eu acho!) :) Request_SVG.Free; Request_SVG := TStringList.Create; - Request_SVG.Values['te_node_address'] := EnCrypt(v_mac_address,l_cs_compress); - Request_SVG.Values['id_so'] := EnCrypt(inttostr(GetWinVer),l_cs_compress); - Request_SVG.Values['te_so'] := EnCrypt(v_te_so,l_cs_compress); - Request_SVG.Values['id_ip_rede'] := EnCrypt(GetIPRede(te_ip, te_mascara),l_cs_compress); - Request_SVG.Values['te_workgroup'] := EnCrypt(GetWorkgroup,l_cs_compress); - Request_SVG.Values['te_nome_computador']:= EnCrypt(te_nome_host,l_cs_compress); - Request_SVG.Values['te_ip'] := EnCrypt(te_ip,l_cs_compress); - Request_SVG.Values['in_teste'] := EnCrypt('OK',l_cs_compress); - + //Request_SVG.Values['te_node_address'] := EnCrypt(v_mac_address,l_cs_compress); + //Request_SVG.Values['id_so'] := EnCrypt(inttostr(GetWinVer),l_cs_compress); + //Request_SVG.Values['te_so'] := EnCrypt(v_te_so,l_cs_compress); + //Request_SVG.Values['id_ip_rede'] := EnCrypt(GetIPRede(te_ip, te_mascara),l_cs_compress); + //Request_SVG.Values['te_workgroup'] := EnCrypt(GetWorkgroup,l_cs_compress); + //Request_SVG.Values['te_nome_computador']:= EnCrypt(te_nome_host,l_cs_compress); + //Request_SVG.Values['te_ip'] := EnCrypt(te_ip,l_cs_compress); + Request_SVG.Values['in_teste'] := StringReplace(EnCrypt('OK',l_cs_compress),'+','',[rfReplaceAll]); Try strRetorno := ComunicaServidor('get_config.php', Request_SVG, 'Teste de comunicação com o Módulo Gerente WEB.'); Seta_l_cs_cipher(strRetorno); @@ -1906,9 +2015,9 @@ Begin log_DEBUG('Preparando contato com módulo Gerente WEB para Downloads.'); v_acao_gercols := 'Contactando o módulo Gerente WEB: get_config.php...'; Request_SVG := TStringList.Create; - Request_SVG.Values['in_chkcacic'] := EnCrypt('chkcacic',l_cs_compress); - Request_SVG.Values['te_fila_ftp'] := EnCrypt('1',l_cs_compress); // Indicará que o agente quer entrar no grupo para FTP - Request_SVG.Values['id_ip_estacao'] := EnCrypt(GetIP,l_cs_compress); // Informará o IP para registro na tabela redes_grupos_FTP + Request_SVG.Values['in_chkcacic'] := StringReplace(EnCrypt('chkcacic',l_cs_compress),'+','',[rfReplaceAll]); + Request_SVG.Values['te_fila_ftp'] := StringReplace(EnCrypt('1',l_cs_compress),'+','',[rfReplaceAll]); // Indicará que o agente quer entrar no grupo para FTP + //Request_SVG.Values['id_ip_estacao'] := EnCrypt(GetIP,l_cs_compress); // Informará o IP para registro na tabela redes_grupos_FTP log_DEBUG(v_acao_gercols + ' Parâmetros: in_chkcacic="'+Request_SVG.Values['in_chkcacic']+'", te_fila_ftp="'+Request_SVG.Values['te_fila_ftp']+'" e id_ip_estacao="'+Request_SVG.Values['id_ip_estacao']+'"'); strRetorno := ComunicaServidor('get_config.php', Request_SVG, v_mensagem_log); @@ -2013,7 +2122,8 @@ Begin v_acao_gercols := 'Invocando execução de VBS para obtenção de IPCONFIG...'; log_DEBUG('Executando "'+p_path_cacic + 'modulos\' + v_scripter + ' //b ' + p_path_cacic + 'temp\ipconfig.vbs"'); - WinExec(PChar(p_path_cacic + 'modulos\' + v_scripter + ' //b ' + p_path_cacic + 'temp\ipconfig.vbs'), SW_HIDE); + if ChecaAgente(p_path_cacic + 'modulos', v_scripter) then + WinExec(PChar(p_path_cacic + 'modulos\' + v_scripter + ' //b ' + p_path_cacic + 'temp\ipconfig.vbs'), SW_HIDE); Except Begin log_diario('Erro na geração do ipconfig.txt pelo ' + v_metodo_obtencao+'.'); @@ -2147,7 +2257,7 @@ Begin (abstraiCSD(v_te_so) >= 250) then //Se NT/2K/XP Try te_dominio_windows := PegaDadosIPConfig(v_array_campos,v_array_valores,'usu,rio,logado;usu,rio,logado','') Except te_dominio_windows := 'Não Identificado'; end else - Try te_dominio_windows := GetValorChaveRegEdit('HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\MSNP32\NetworkProvider\AuthenticatingAgent') + '\' + GetValorChaveRegEdit('HKEY_LOCAL_MACHINE\Network\Logon\username') Except te_dominio_windows := 'Não Identificado'; end + Try te_dominio_windows := GetValorChaveRegEdit('HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\MSNP32\NetworkProvider\AuthenticatingAgent') + '@' + GetValorChaveRegEdit('HKEY_LOCAL_MACHINE\Network\Logon\username') Except te_dominio_windows := 'Não Identificado'; end End // fim do Begin Else Begin @@ -2219,11 +2329,12 @@ Begin log_diario('Erro setando NODE_ADDRESS.'); end; - Try - SetValorDatMemoria('TcpIp.TE_IP',TE_IP, v_tstrCipherOpened); - except - log_diario('Erro setando IP.'); - End; + // Esta atribuição foi realizada no teste de comunicação mais acima + //Try + // SetValorDatMemoria('TcpIp.TE_IP',TE_IP, v_tstrCipherOpened); + //except + // log_diario('Erro setando IP.'); + //End; Try SetValorDatMemoria('TcpIp.TE_NOME_HOST',TE_NOME_HOST, v_tstrCipherOpened); @@ -2248,15 +2359,13 @@ Begin // Passei a enviar sempre a versão do CACIC... // Solicito do servidor a configuração que foi definida pelo administrador do CACIC. Request_SVG := TStringList.Create; - Request_SVG.Values['te_node_address'] := EnCrypt(GetValorDatMemoria('TcpIp.TE_NODE_ADDRESS' , v_tstrCipherOpened),l_cs_compress); - Request_SVG.Values['id_so'] := EnCrypt(GetValorDatMemoria('Configs.ID_SO' , v_tstrCipherOpened),l_cs_compress); - Request_SVG.Values['te_so'] := EnCrypt(v_te_so,l_cs_compress); - Request_SVG.Values['id_ip_rede'] := EnCrypt(GetValorDatMemoria('TcpIp.ID_IP_REDE' , v_tstrCipherOpened),l_cs_compress); - Request_SVG.Values['te_nome_computador'] := EnCrypt(GetValorDatMemoria('TcpIp.TE_NOME_COMPUTADOR', v_tstrCipherOpened),l_cs_compress); - Request_SVG.Values['te_ip'] := EnCrypt(GetValorDatMemoria('TcpIp.TE_IP' , v_tstrCipherOpened),l_cs_compress); - Request_SVG.Values['te_workgroup'] := EnCrypt(GetValorDatMemoria('TcpIp.TE_WORKGROUP' , v_tstrCipherOpened),l_cs_compress); - Request_SVG.Values['te_versao_cacic'] := EnCrypt(getVersionInfo(p_path_cacic + 'cacic2.exe'),l_cs_compress); - Request_SVG.Values['te_versao_gercols'] := EnCrypt(getVersionInfo(ParamStr(0)),l_cs_compress); + //Request_SVG.Values['te_node_address'] := EnCrypt(GetValorDatMemoria('TcpIp.TE_NODE_ADDRESS' , v_tstrCipherOpened),l_cs_compress); + //Request_SVG.Values['id_so'] := EnCrypt(GetValorDatMemoria('Configs.ID_SO' , v_tstrCipherOpened),l_cs_compress); + //Request_SVG.Values['te_so'] := EnCrypt(v_te_so,l_cs_compress); + //Request_SVG.Values['id_ip_rede'] := EnCrypt(GetValorDatMemoria('TcpIp.ID_IP_REDE' , v_tstrCipherOpened),l_cs_compress); + //Request_SVG.Values['te_nome_computador'] := EnCrypt(GetValorDatMemoria('TcpIp.TE_NOME_COMPUTADOR', v_tstrCipherOpened),l_cs_compress); + //Request_SVG.Values['te_ip'] := EnCrypt(GetValorDatMemoria('TcpIp.TE_IP' , v_tstrCipherOpened),l_cs_compress); + //Request_SVG.Values['te_workgroup'] := EnCrypt(GetValorDatMemoria('TcpIp.TE_WORKGROUP' , v_tstrCipherOpened),l_cs_compress); //Tratamento de Sistemas Monitorados intAux4 := 1; @@ -2282,7 +2391,7 @@ Begin // Request_SVG.Values['te_tripa_perfis'] := strTripa; // Proposital, para forçar a chegada dos perfis, solução temporária... - Request_SVG.Values['te_tripa_perfis'] := EnCrypt('',l_cs_compress); + Request_SVG.Values['te_tripa_perfis'] := StringReplace(EnCrypt('',l_cs_compress),'+','',[rfReplaceAll]); v_te_serv_cacic := GetValorDatMemoria('Configs.EnderecoServidor', v_tstrCipherOpened); strRetorno := ComunicaServidor('get_config.php', Request_SVG, v_mensagem_log); @@ -2309,16 +2418,14 @@ Begin // Solicito do servidor a configuração que foi definida pelo administrador do CACIC. Request_SVG.Free; Request_SVG := TStringList.Create; - Request_SVG.Values['te_node_address'] := EnCrypt(GetValorDatMemoria('TcpIp.TE_NODE_ADDRESS' , v_tstrCipherOpened),l_cs_compress); - Request_SVG.Values['id_so'] := EnCrypt(GetValorDatMemoria('Configs.ID_SO' , v_tstrCipherOpened),l_cs_compress); - Request_SVG.Values['te_so'] := EnCrypt(v_te_so,l_cs_compress); - Request_SVG.Values['id_ip_rede'] := EnCrypt(GetValorDatMemoria('TcpIp.ID_IP_REDE' , v_tstrCipherOpened),l_cs_compress); - Request_SVG.Values['te_nome_computador'] := EnCrypt(GetValorDatMemoria('TcpIp.TE_NOME_COMPUTADOR', v_tstrCipherOpened),l_cs_compress); - Request_SVG.Values['te_ip'] := EnCrypt(GetValorDatMemoria('TcpIp.TE_IP' , v_tstrCipherOpened),l_cs_compress); - Request_SVG.Values['te_workgroup'] := EnCrypt(GetValorDatMemoria('TcpIp.TE_WORKGROUP' , v_tstrCipherOpened),l_cs_compress); - Request_SVG.Values['te_versao_cacic'] := EnCrypt(GetVersionInfo(p_path_cacic + 'cacic2.exe'),l_cs_compress); - Request_SVG.Values['te_versao_gercols'] := EnCrypt(getVersionInfo(ParamStr(0)),l_cs_compress); - Request_SVG.Values['te_tripa_perfis'] := EnCrypt('',l_cs_compress); + //Request_SVG.Values['te_node_address'] := EnCrypt(GetValorDatMemoria('TcpIp.TE_NODE_ADDRESS' , v_tstrCipherOpened),l_cs_compress); + //Request_SVG.Values['id_so'] := EnCrypt(GetValorDatMemoria('Configs.ID_SO' , v_tstrCipherOpened),l_cs_compress); + //Request_SVG.Values['te_so'] := EnCrypt(v_te_so,l_cs_compress); + //Request_SVG.Values['id_ip_rede'] := EnCrypt(GetValorDatMemoria('TcpIp.ID_IP_REDE' , v_tstrCipherOpened),l_cs_compress); + //Request_SVG.Values['te_nome_computador'] := EnCrypt(GetValorDatMemoria('TcpIp.TE_NOME_COMPUTADOR', v_tstrCipherOpened),l_cs_compress); + //Request_SVG.Values['te_ip'] := EnCrypt(GetValorDatMemoria('TcpIp.TE_IP' , v_tstrCipherOpened),l_cs_compress); + //Request_SVG.Values['te_workgroup'] := EnCrypt(GetValorDatMemoria('TcpIp.TE_WORKGROUP' , v_tstrCipherOpened),l_cs_compress); + Request_SVG.Values['te_tripa_perfis'] := StringReplace(EnCrypt('',l_cs_compress),'+','',[rfReplaceAll]); strRetorno := ComunicaServidor('get_config.php', Request_SVG, v_mensagem_log); Seta_l_cs_cipher(strRetorno); Seta_l_cs_compress(strRetorno); @@ -2427,32 +2534,32 @@ Begin Try if ((GetWinVer <> 0) and (GetWinVer > 5)) or (abstraiCSD(v_te_so) >= 250) then //Se NT/2K/XP - te_dominio_windows := GetDomainName + '\' + GetNetworkUserName + te_dominio_windows := GetNetworkUserName + '@' + GetDomainName else - te_dominio_windows := GetValorChaveRegEdit('HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\MSNP32\NetworkProvider\AuthenticatingAgent') + '\' + GetValorChaveRegEdit('HKEY_LOCAL_MACHINE\Network\Logon\username'); + te_dominio_windows := GetValorChaveRegEdit('HKEY_LOCAL_MACHINE\Network\Logon\username')+ '@' + GetValorChaveRegEdit('HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\MSNP32\NetworkProvider\AuthenticatingAgent'); Except te_dominio_windows := 'Não Identificado'; End; End; Request_SVG := TStringList.Create; - Request_SVG.Values['te_node_address'] := EnCrypt(GetValorDatMemoria('TcpIp.TE_NODE_ADDRESS' , v_tstrCipherOpened),l_cs_compress); - Request_SVG.Values['id_so'] := EnCrypt(GetValorDatMemoria('Configs.ID_SO' , v_tstrCipherOpened),l_cs_compress); - Request_SVG.Values['te_so'] := EnCrypt(v_te_so,l_cs_compress); - Request_SVG.Values['id_ip_rede'] := EnCrypt(GetValorDatMemoria('TcpIp.ID_IP_REDE' , v_tstrCipherOpened),l_cs_compress); - Request_SVG.Values['te_nome_computador'] := EnCrypt(GetValorDatMemoria('TcpIp.TE_NOME_COMPUTADOR', v_tstrCipherOpened),l_cs_compress); - Request_SVG.Values['te_ip'] := EnCrypt(GetValorDatMemoria('TcpIp.TE_IP' , v_tstrCipherOpened),l_cs_compress); - Request_SVG.Values['te_workgroup'] := EnCrypt(GetValorDatMemoria('TcpIp.TE_WORKGROUP' , v_tstrCipherOpened),l_cs_compress); - Request_SVG.Values['te_mascara'] := EnCrypt(te_mascara,l_cs_compress); - Request_SVG.Values['te_gateway'] := EnCrypt(te_gateway,l_cs_compress); - Request_SVG.Values['te_serv_dhcp'] := EnCrypt(te_serv_dhcp,l_cs_compress); - Request_SVG.Values['te_dns_primario'] := EnCrypt(te_dns_primario,l_cs_compress); - Request_SVG.Values['te_dns_secundario'] := EnCrypt(te_dns_secundario,l_cs_compress); - Request_SVG.Values['te_wins_primario'] := EnCrypt(te_wins_primario,l_cs_compress); - Request_SVG.Values['te_wins_secundario'] := EnCrypt(te_wins_secundario,l_cs_compress); - Request_SVG.Values['te_nome_host'] := EnCrypt(te_nome_host,l_cs_compress); - Request_SVG.Values['te_dominio_dns'] := EnCrypt(te_dominio_dns,l_cs_compress); - Request_SVG.Values['te_origem_mac'] := EnCrypt(GetValorDatMemoria('TcpIp.TE_ORIGEM_MAC', v_tstrCipherOpened),l_cs_compress); - Request_SVG.Values['te_dominio_windows'] := EnCrypt(te_dominio_windows,l_cs_compress); + //Request_SVG.Values['te_node_address'] := EnCrypt(GetValorDatMemoria('TcpIp.TE_NODE_ADDRESS' , v_tstrCipherOpened),l_cs_compress); + //Request_SVG.Values['id_so'] := EnCrypt(GetValorDatMemoria('Configs.ID_SO' , v_tstrCipherOpened),l_cs_compress); + //Request_SVG.Values['te_so'] := EnCrypt(v_te_so,l_cs_compress); + //Request_SVG.Values['id_ip_rede'] := EnCrypt(GetValorDatMemoria('TcpIp.ID_IP_REDE' , v_tstrCipherOpened),l_cs_compress); + //Request_SVG.Values['te_nome_computador'] := EnCrypt(GetValorDatMemoria('TcpIp.TE_NOME_COMPUTADOR', v_tstrCipherOpened),l_cs_compress); + //Request_SVG.Values['te_ip'] := EnCrypt(GetValorDatMemoria('TcpIp.TE_IP' , v_tstrCipherOpened),l_cs_compress); + //Request_SVG.Values['te_workgroup'] := EnCrypt(GetValorDatMemoria('TcpIp.TE_WORKGROUP' , v_tstrCipherOpened),l_cs_compress); + Request_SVG.Values['te_mascara'] := StringReplace(EnCrypt(te_mascara,l_cs_compress),'+','',[rfReplaceAll]); + Request_SVG.Values['te_gateway'] := StringReplace(EnCrypt(te_gateway,l_cs_compress),'+','',[rfReplaceAll]); + Request_SVG.Values['te_serv_dhcp'] := StringReplace(EnCrypt(te_serv_dhcp,l_cs_compress),'+','',[rfReplaceAll]); + Request_SVG.Values['te_dns_primario'] := StringReplace(EnCrypt(te_dns_primario,l_cs_compress),'+','',[rfReplaceAll]); + Request_SVG.Values['te_dns_secundario'] := StringReplace(EnCrypt(te_dns_secundario,l_cs_compress),'+','',[rfReplaceAll]); + Request_SVG.Values['te_wins_primario'] := StringReplace(EnCrypt(te_wins_primario,l_cs_compress),'+','',[rfReplaceAll]); + Request_SVG.Values['te_wins_secundario'] := StringReplace(EnCrypt(te_wins_secundario,l_cs_compress),'+','',[rfReplaceAll]); + Request_SVG.Values['te_nome_host'] := StringReplace(EnCrypt(te_nome_host,l_cs_compress),'+','',[rfReplaceAll]); + Request_SVG.Values['te_dominio_dns'] := StringReplace(EnCrypt(te_dominio_dns,l_cs_compress),'+','',[rfReplaceAll]); + Request_SVG.Values['te_origem_mac'] := StringReplace(EnCrypt(GetValorDatMemoria('TcpIp.TE_ORIGEM_MAC', v_tstrCipherOpened),l_cs_compress),'+','',[rfReplaceAll]); + Request_SVG.Values['te_dominio_windows'] := StringReplace(EnCrypt(te_dominio_windows,l_cs_compress),'+','',[rfReplaceAll]); v_acao_gercols := 'Contactando módulo Gerente WEB: set_tcp_ip.php'; @@ -2517,7 +2624,9 @@ Begin v_acao_gercols := 'Atualização do Agente Principal - Invocando '+p_path_cacic + 'cacic2.exe /atualizacao'; Finalizar(false); - WinExec(PChar(p_path_cacic + 'cacic2.exe /atualizacao'), SW_MINIMIZE); + + if ChecaAgente(p_path_cacic, 'cacic2.exe') then + WinExec(PChar(p_path_cacic + 'cacic2.exe /atualizacao'), SW_MINIMIZE); Sair; end; @@ -2802,11 +2911,11 @@ Begin (GetValorDatMemoria('Configs.ID_FTP',v_tstrCipherOpened)<>'') then Begin Request_Ger_Cols := TStringList.Create; - Request_Ger_Cols.Values['in_chkcacic'] := EnCrypt('chkcacic',l_cs_compress); - Request_Ger_Cols.Values['te_fila_ftp'] := EnCrypt('2',l_cs_compress); // Indicará sucesso na operação de FTP e liberará lugar para o próximo - Request_Ger_Cols.Values['id_ftp'] := EnCrypt(GetValorDatMemoria('Configs.ID_FTP',v_tstrCipherOpened),l_cs_compress); // Indicará sucesso na operação de FTP e liberará lugar para o próximo - Request_Ger_Cols.Values['te_so'] := EnCrypt(v_te_so,l_cs_compress); - Request_Ger_Cols.Values['id_ip_estacao'] := EnCrypt(GetIP,l_cs_compress); // Informará o IP para registro na tabela redes_grupos_FTP + Request_Ger_Cols.Values['in_chkcacic'] := StringReplace(EnCrypt('chkcacic',l_cs_compress),'+','',[rfReplaceAll]); + Request_Ger_Cols.Values['te_fila_ftp'] := StringReplace(EnCrypt('2',l_cs_compress),'+','',[rfReplaceAll]); // Indicará sucesso na operação de FTP e liberará lugar para o próximo + Request_Ger_Cols.Values['id_ftp'] := StringReplace(EnCrypt(GetValorDatMemoria('Configs.ID_FTP',v_tstrCipherOpened),l_cs_compress),'+','',[rfReplaceAll]); // Indicará sucesso na operação de FTP e liberará lugar para o próximo + //Request_Ger_Cols.Values['te_so'] := EnCrypt(v_te_so,l_cs_compress); + //Request_Ger_Cols.Values['id_ip_estacao'] := EnCrypt(GetIP,l_cs_compress); // Informará o IP para registro na tabela redes_grupos_FTP ComunicaServidor('get_config.php', Request_Ger_Cols, '>> Liberando Grupo FTP!...'); Request_Ger_Cols.Free; SetValorDatMemoria('Configs.ID_FTP','', v_tstrCipherOpened) @@ -2860,20 +2969,20 @@ Begin Begin // Dados para uso do Gerente WEB... - Request_Ger_Cols.Values['te_node_address' ] := EnCrypt(GetValorDatMemoria('TcpIp.TE_NODE_ADDRESS' ,v_tstrCipherOpened),l_cs_compress); - Request_Ger_Cols.Values['id_so' ] := EnCrypt(GetValorDatMemoria('Configs.ID_SO' ,v_tstrCipherOpened),l_cs_compress); - Request_Ger_Cols.Values['te_so' ] := EnCrypt(v_te_so,l_cs_compress); - Request_Ger_Cols.Values['te_ip' ] := EnCrypt(GetValorDatMemoria('TcpIp.TE_IP' ,v_tstrCipherOpened),l_cs_compress); - Request_Ger_Cols.Values['id_ip_rede' ] := EnCrypt(GetValorDatMemoria('TcpIp.ID_IP_REDE' ,v_tstrCipherOpened),l_cs_compress); - Request_Ger_Cols.Values['te_workgroup' ] := EnCrypt(GetValorDatMemoria('TcpIp.TE_WORKGROUP' ,v_tstrCipherOpened),l_cs_compress); - Request_Ger_Cols.Values['te_nome_computador'] := EnCrypt(GetValorDatMemoria('TcpIp.TE_NOME_COMPUTADOR',v_tstrCipherOpened),l_cs_compress); + //Request_Ger_Cols.Values['te_node_address' ] := EnCrypt(GetValorDatMemoria('TcpIp.TE_NODE_ADDRESS' ,v_tstrCipherOpened),l_cs_compress); + //Request_Ger_Cols.Values['id_so' ] := EnCrypt(GetValorDatMemoria('Configs.ID_SO' ,v_tstrCipherOpened),l_cs_compress); + //Request_Ger_Cols.Values['te_so' ] := EnCrypt(v_te_so,l_cs_compress); + //Request_Ger_Cols.Values['te_ip' ] := EnCrypt(GetValorDatMemoria('TcpIp.TE_IP' ,v_tstrCipherOpened),l_cs_compress); + //Request_Ger_Cols.Values['id_ip_rede' ] := EnCrypt(GetValorDatMemoria('TcpIp.ID_IP_REDE' ,v_tstrCipherOpened),l_cs_compress); + //Request_Ger_Cols.Values['te_workgroup' ] := EnCrypt(GetValorDatMemoria('TcpIp.TE_WORKGROUP' ,v_tstrCipherOpened),l_cs_compress); + //Request_Ger_Cols.Values['te_nome_computador'] := EnCrypt(GetValorDatMemoria('TcpIp.TE_NOME_COMPUTADOR',v_tstrCipherOpened),l_cs_compress); // Preparação para envio... - Request_Ger_Cols.Values['nu_versao_engine' ] := EnCrypt(GetValorDatMemoria('Col_Anvi.nu_versao_engine' ,v_tstrCipherOpened1),l_cs_compress); - Request_Ger_Cols.Values['nu_versao_pattern'] := EnCrypt(GetValorDatMemoria('Col_Anvi.nu_versao_pattern',v_tstrCipherOpened1),l_cs_compress); - Request_Ger_Cols.Values['dt_hr_instalacao' ] := EnCrypt(GetValorDatMemoria('Col_Anvi.dt_hr_instalacao' ,v_tstrCipherOpened1),l_cs_compress); - Request_Ger_Cols.Values['te_servidor' ] := EnCrypt(GetValorDatMemoria('Col_Anvi.te_servidor' ,v_tstrCipherOpened1),l_cs_compress); - Request_Ger_Cols.Values['in_ativo' ] := EnCrypt(GetValorDatMemoria('Col_Anvi.in_ativo' ,v_tstrCipherOpened1),l_cs_compress); + Request_Ger_Cols.Values['nu_versao_engine' ] := StringReplace(EnCrypt(GetValorDatMemoria('Col_Anvi.nu_versao_engine' ,v_tstrCipherOpened1),l_cs_compress),'+','',[rfReplaceAll]); + Request_Ger_Cols.Values['nu_versao_pattern'] := StringReplace(EnCrypt(GetValorDatMemoria('Col_Anvi.nu_versao_pattern',v_tstrCipherOpened1),l_cs_compress),'+','',[rfReplaceAll]); + Request_Ger_Cols.Values['dt_hr_instalacao' ] := StringReplace(EnCrypt(GetValorDatMemoria('Col_Anvi.dt_hr_instalacao' ,v_tstrCipherOpened1),l_cs_compress),'+','',[rfReplaceAll]); + Request_Ger_Cols.Values['te_servidor' ] := StringReplace(EnCrypt(GetValorDatMemoria('Col_Anvi.te_servidor' ,v_tstrCipherOpened1),l_cs_compress),'+','',[rfReplaceAll]); + Request_Ger_Cols.Values['in_ativo' ] := StringReplace(EnCrypt(GetValorDatMemoria('Col_Anvi.in_ativo' ,v_tstrCipherOpened1),l_cs_compress),'+','',[rfReplaceAll]); if v_Debugs then For intLoop := 0 to Request_Ger_Cols.Count-1 do @@ -2919,19 +3028,22 @@ Begin if (GetValorDatMemoria('Col_Comp.nada',v_tstrCipherOpened1)='') then Begin // Dados para uso do Gerente WEB... - Request_Ger_Cols.Values['te_node_address' ] := EnCrypt(GetValorDatMemoria('TcpIp.TE_NODE_ADDRESS' ,v_tstrCipherOpened),l_cs_compress); - Request_Ger_Cols.Values['id_so' ] := EnCrypt(GetValorDatMemoria('Configs.ID_SO' ,v_tstrCipherOpened),l_cs_compress); - Request_Ger_Cols.Values['te_so' ] := EnCrypt(v_te_so,l_cs_compress); - Request_Ger_Cols.Values['te_ip' ] := EnCrypt(GetValorDatMemoria('TcpIp.TE_IP' ,v_tstrCipherOpened),l_cs_compress); - Request_Ger_Cols.Values['id_ip_rede' ] := EnCrypt(GetValorDatMemoria('TcpIp.ID_IP_REDE' ,v_tstrCipherOpened),l_cs_compress); - Request_Ger_Cols.Values['te_workgroup' ] := EnCrypt(GetValorDatMemoria('TcpIp.TE_WORKGROUP' ,v_tstrCipherOpened),l_cs_compress); - Request_Ger_Cols.Values['te_nome_computador'] := EnCrypt(GetValorDatMemoria('TcpIp.TE_NOME_COMPUTADOR',v_tstrCipherOpened),l_cs_compress); + //Request_Ger_Cols.Values['te_node_address' ] := EnCrypt(GetValorDatMemoria('TcpIp.TE_NODE_ADDRESS' ,v_tstrCipherOpened),l_cs_compress); + //Request_Ger_Cols.Values['id_so' ] := EnCrypt(GetValorDatMemoria('Configs.ID_SO' ,v_tstrCipherOpened),l_cs_compress); + //Request_Ger_Cols.Values['te_so' ] := EnCrypt(v_te_so,l_cs_compress); + //Request_Ger_Cols.Values['te_ip' ] := EnCrypt(GetValorDatMemoria('TcpIp.TE_IP' ,v_tstrCipherOpened),l_cs_compress); + //Request_Ger_Cols.Values['id_ip_rede' ] := EnCrypt(GetValorDatMemoria('TcpIp.ID_IP_REDE' ,v_tstrCipherOpened),l_cs_compress); + //Request_Ger_Cols.Values['te_workgroup' ] := EnCrypt(GetValorDatMemoria('TcpIp.TE_WORKGROUP' ,v_tstrCipherOpened),l_cs_compress); + //Request_Ger_Cols.Values['te_nome_computador'] := EnCrypt(GetValorDatMemoria('TcpIp.TE_NOME_COMPUTADOR',v_tstrCipherOpened),l_cs_compress); // Preparação para envio... - Request_Ger_Cols.Values['compartilhamentos'] := EnCrypt(GetValorDatMemoria('Col_Comp.UVC',v_tstrCipherOpened1),l_cs_compress); + Request_Ger_Cols.Values['CompartilhamentosLocais'] := StringReplace(EnCrypt(StringReplace(GetValorDatMemoria('Col_Comp.UVC',v_tstrCipherOpened1),'\','',[rfReplaceAll]),l_cs_compress),'+','',[rfReplaceAll]); if v_Debugs then + Begin + log_DEBUG('Col_Comp.UVC => '+GetValorDatMemoria('Col_Comp.UVC',v_tstrCipherOpened1)); For intLoop := 0 to Request_Ger_Cols.Count-1 do log_DEBUG('Item "'+Request_Ger_Cols.Names[intLoop]+'" de Col_Comp: '+Request_Ger_Cols.ValueFromIndex[intLoop]); + End; if (ComunicaServidor('set_compart.php', Request_Ger_Cols, '>> Enviando informações de Compartilhamentos para o Gerente WEB.') <> '0') Then Begin @@ -2972,36 +3084,33 @@ Begin if (GetValorDatMemoria('Col_Hard.nada',v_tstrCipherOpened1)='') then Begin // Dados para uso do Gerente WEB... - Request_Ger_Cols.Values['te_node_address' ] := EnCrypt(GetValorDatMemoria('TcpIp.TE_NODE_ADDRESS' ,v_tstrCipherOpened),l_cs_compress); - Request_Ger_Cols.Values['id_so' ] := EnCrypt(GetValorDatMemoria('Configs.ID_SO' ,v_tstrCipherOpened),l_cs_compress); - Request_Ger_Cols.Values['te_so' ] := EnCrypt(v_te_so,l_cs_compress); - Request_Ger_Cols.Values['te_ip' ] := EnCrypt(GetValorDatMemoria('TcpIp.TE_IP' ,v_tstrCipherOpened),l_cs_compress); - Request_Ger_Cols.Values['id_ip_rede' ] := EnCrypt(GetValorDatMemoria('TcpIp.ID_IP_REDE' ,v_tstrCipherOpened),l_cs_compress); - Request_Ger_Cols.Values['te_workgroup' ] := EnCrypt(GetValorDatMemoria('TcpIp.TE_WORKGROUP' ,v_tstrCipherOpened),l_cs_compress); - Request_Ger_Cols.Values['te_nome_computador'] := EnCrypt(GetValorDatMemoria('TcpIp.TE_NOME_COMPUTADOR',v_tstrCipherOpened),l_cs_compress); + //Request_Ger_Cols.Values['te_node_address' ] := EnCrypt(GetValorDatMemoria('TcpIp.TE_NODE_ADDRESS' ,v_tstrCipherOpened),l_cs_compress); + //Request_Ger_Cols.Values['id_so' ] := EnCrypt(GetValorDatMemoria('Configs.ID_SO' ,v_tstrCipherOpened),l_cs_compress); + //Request_Ger_Cols.Values['te_so' ] := EnCrypt(v_te_so,l_cs_compress); + //Request_Ger_Cols.Values['te_ip' ] := EnCrypt(GetValorDatMemoria('TcpIp.TE_IP' ,v_tstrCipherOpened),l_cs_compress); + //Request_Ger_Cols.Values['id_ip_rede' ] := EnCrypt(GetValorDatMemoria('TcpIp.ID_IP_REDE' ,v_tstrCipherOpened),l_cs_compress); + //Request_Ger_Cols.Values['te_workgroup' ] := EnCrypt(GetValorDatMemoria('TcpIp.TE_WORKGROUP' ,v_tstrCipherOpened),l_cs_compress); + //Request_Ger_Cols.Values['te_nome_computador'] := EnCrypt(GetValorDatMemoria('TcpIp.TE_NOME_COMPUTADOR',v_tstrCipherOpened),l_cs_compress); // Preparação para envio... - Request_Ger_Cols.Values['te_placa_rede_desc' ] := EnCrypt(GetValorDatMemoria('Col_Hard.te_placa_rede_desc' ,v_tstrCipherOpened1),l_cs_compress); - Request_Ger_Cols.Values['te_placa_mae_fabricante' ] := EnCrypt(GetValorDatMemoria('Col_Hard.te_placa_mae_fabricante' ,v_tstrCipherOpened1),l_cs_compress); - Request_Ger_Cols.Values['te_placa_mae_desc' ] := EnCrypt(GetValorDatMemoria('Col_Hard.te_placa_mae_desc' ,v_tstrCipherOpened1),l_cs_compress); - Request_Ger_Cols.Values['te_cpu_serial' ] := EnCrypt(GetValorDatMemoria('Col_Hard.te_cpu_serial' ,v_tstrCipherOpened1),l_cs_compress); - Request_Ger_Cols.Values['te_cpu_desc' ] := EnCrypt(GetValorDatMemoria('Col_Hard.te_cpu_desc' ,v_tstrCipherOpened1),l_cs_compress); - Request_Ger_Cols.Values['te_cpu_fabricante' ] := EnCrypt(GetValorDatMemoria('Col_Hard.te_cpu_fabricante' ,v_tstrCipherOpened1),l_cs_compress); - Request_Ger_Cols.Values['te_cpu_freq' ] := EnCrypt(GetValorDatMemoria('Col_Hard.te_cpu_freq' ,v_tstrCipherOpened1),l_cs_compress); - Request_Ger_Cols.Values['qt_mem_ram' ] := EnCrypt(GetValorDatMemoria('Col_Hard.qt_mem_ram' ,v_tstrCipherOpened1),l_cs_compress); - Request_Ger_Cols.Values['te_mem_ram_desc' ] := EnCrypt(GetValorDatMemoria('Col_Hard.te_mem_ram_desc' ,v_tstrCipherOpened1),l_cs_compress); - Request_Ger_Cols.Values['te_bios_desc' ] := EnCrypt(GetValorDatMemoria('Col_Hard.te_bios_desc' ,v_tstrCipherOpened1),l_cs_compress); - Request_Ger_Cols.Values['te_bios_data' ] := EnCrypt(GetValorDatMemoria('Col_Hard.te_bios_data' ,v_tstrCipherOpened1),l_cs_compress); - Request_Ger_Cols.Values['te_bios_fabricante' ] := EnCrypt(GetValorDatMemoria('Col_Hard.te_bios_fabricante' ,v_tstrCipherOpened1),l_cs_compress); - Request_Ger_Cols.Values['qt_placa_video_cores' ] := EnCrypt(GetValorDatMemoria('Col_Hard.qt_placa_video_cores' ,v_tstrCipherOpened1),l_cs_compress); - Request_Ger_Cols.Values['te_placa_video_desc' ] := EnCrypt(GetValorDatMemoria('Col_Hard.te_placa_video_desc' ,v_tstrCipherOpened1),l_cs_compress); - Request_Ger_Cols.Values['qt_placa_video_mem' ] := EnCrypt(GetValorDatMemoria('Col_Hard.qt_placa_video_mem' ,v_tstrCipherOpened1),l_cs_compress); - Request_Ger_Cols.Values['te_placa_video_resolucao'] := EnCrypt(GetValorDatMemoria('Col_Hard.te_placa_video_resolucao',v_tstrCipherOpened1),l_cs_compress); - Request_Ger_Cols.Values['te_placa_som_desc' ] := EnCrypt(GetValorDatMemoria('Col_Hard.te_placa_som_desc' ,v_tstrCipherOpened1),l_cs_compress); - Request_Ger_Cols.Values['te_cdrom_desc' ] := EnCrypt(GetValorDatMemoria('Col_Hard.te_cdrom_desc' ,v_tstrCipherOpened1),l_cs_compress); - Request_Ger_Cols.Values['te_teclado_desc' ] := EnCrypt(GetValorDatMemoria('Col_Hard.te_teclado_desc' ,v_tstrCipherOpened1),l_cs_compress); - Request_Ger_Cols.Values['te_mouse_desc' ] := EnCrypt(GetValorDatMemoria('Col_Hard.te_mouse_desc' ,v_tstrCipherOpened1),l_cs_compress); - Request_Ger_Cols.Values['te_modem_desc' ] := EnCrypt(GetValorDatMemoria('Col_Hard.te_modem_desc' ,v_tstrCipherOpened1),l_cs_compress); + Request_Ger_Cols.Values['te_Tripa_TCPIP' ] := StringReplace(EnCrypt(GetValorDatMemoria('Col_Hard.te_Tripa_TCPIP' ,v_tstrCipherOpened1),l_cs_compress),'+','',[rfReplaceAll]); + Request_Ger_Cols.Values['te_Tripa_CPU' ] := StringReplace(EnCrypt(GetValorDatMemoria('Col_Hard.te_Tripa_CPU' ,v_tstrCipherOpened1),l_cs_compress),'+','',[rfReplaceAll]); + Request_Ger_Cols.Values['te_Tripa_CDROM' ] := StringReplace(EnCrypt(GetValorDatMemoria('Col_Hard.te_Tripa_CDROM' ,v_tstrCipherOpened1),l_cs_compress),'+','',[rfReplaceAll]); + Request_Ger_Cols.Values['te_placa_mae_fabricante' ] := StringReplace(EnCrypt(GetValorDatMemoria('Col_Hard.te_placa_mae_fabricante' ,v_tstrCipherOpened1),l_cs_compress),'+','',[rfReplaceAll]); + Request_Ger_Cols.Values['te_placa_mae_desc' ] := StringReplace(EnCrypt(GetValorDatMemoria('Col_Hard.te_placa_mae_desc' ,v_tstrCipherOpened1),l_cs_compress),'+','',[rfReplaceAll]); + Request_Ger_Cols.Values['qt_mem_ram' ] := StringReplace(EnCrypt(GetValorDatMemoria('Col_Hard.qt_mem_ram' ,v_tstrCipherOpened1),l_cs_compress),'+','',[rfReplaceAll]); + Request_Ger_Cols.Values['te_mem_ram_desc' ] := StringReplace(EnCrypt(GetValorDatMemoria('Col_Hard.te_mem_ram_desc' ,v_tstrCipherOpened1),l_cs_compress),'+','',[rfReplaceAll]); + Request_Ger_Cols.Values['te_bios_desc' ] := StringReplace(EnCrypt(GetValorDatMemoria('Col_Hard.te_bios_desc' ,v_tstrCipherOpened1),l_cs_compress),'+','',[rfReplaceAll]); + Request_Ger_Cols.Values['te_bios_data' ] := StringReplace(EnCrypt(GetValorDatMemoria('Col_Hard.te_bios_data' ,v_tstrCipherOpened1),l_cs_compress),'+','',[rfReplaceAll]); + Request_Ger_Cols.Values['te_bios_fabricante' ] := StringReplace(EnCrypt(GetValorDatMemoria('Col_Hard.te_bios_fabricante' ,v_tstrCipherOpened1),l_cs_compress),'+','',[rfReplaceAll]); + Request_Ger_Cols.Values['qt_placa_video_cores' ] := StringReplace(EnCrypt(GetValorDatMemoria('Col_Hard.qt_placa_video_cores' ,v_tstrCipherOpened1),l_cs_compress),'+','',[rfReplaceAll]); + Request_Ger_Cols.Values['te_placa_video_desc' ] := StringReplace(EnCrypt(GetValorDatMemoria('Col_Hard.te_placa_video_desc' ,v_tstrCipherOpened1),l_cs_compress),'+','',[rfReplaceAll]); + Request_Ger_Cols.Values['qt_placa_video_mem' ] := StringReplace(EnCrypt(GetValorDatMemoria('Col_Hard.qt_placa_video_mem' ,v_tstrCipherOpened1),l_cs_compress),'+','',[rfReplaceAll]); + Request_Ger_Cols.Values['te_placa_video_resolucao'] := StringReplace(EnCrypt(GetValorDatMemoria('Col_Hard.te_placa_video_resolucao',v_tstrCipherOpened1),l_cs_compress),'+','',[rfReplaceAll]); + Request_Ger_Cols.Values['te_placa_som_desc' ] := StringReplace(EnCrypt(GetValorDatMemoria('Col_Hard.te_placa_som_desc' ,v_tstrCipherOpened1),l_cs_compress),'+','',[rfReplaceAll]); + Request_Ger_Cols.Values['te_teclado_desc' ] := StringReplace(EnCrypt(GetValorDatMemoria('Col_Hard.te_teclado_desc' ,v_tstrCipherOpened1),l_cs_compress),'+','',[rfReplaceAll]); + Request_Ger_Cols.Values['te_mouse_desc' ] := StringReplace(EnCrypt(GetValorDatMemoria('Col_Hard.te_mouse_desc' ,v_tstrCipherOpened1),l_cs_compress),'+','',[rfReplaceAll]); + Request_Ger_Cols.Values['te_modem_desc' ] := StringReplace(EnCrypt(GetValorDatMemoria('Col_Hard.te_modem_desc' ,v_tstrCipherOpened1),l_cs_compress),'+','',[rfReplaceAll]); if v_Debugs then For intLoop := 0 to Request_Ger_Cols.Count-1 do log_DEBUG('Item "'+Request_Ger_Cols.Names[intLoop]+'" de Col_Hard: '+Request_Ger_Cols.ValueFromIndex[intLoop]); @@ -3045,24 +3154,25 @@ Begin if (GetValorDatMemoria('Col_Patr.nada',v_tstrCipherOpened1)='') then Begin // Dados para uso do Gerente WEB... - Request_Ger_Cols.Values['te_node_address' ] := EnCrypt(GetValorDatMemoria('TcpIp.TE_NODE_ADDRESS' ,v_tstrCipherOpened),l_cs_compress); - Request_Ger_Cols.Values['id_so' ] := EnCrypt(GetValorDatMemoria('Configs.ID_SO' ,v_tstrCipherOpened),l_cs_compress); - Request_Ger_Cols.Values['te_so' ] := EnCrypt(v_te_so,l_cs_compress); - Request_Ger_Cols.Values['te_ip' ] := EnCrypt(GetValorDatMemoria('TcpIp.TE_IP' ,v_tstrCipherOpened),l_cs_compress); - Request_Ger_Cols.Values['id_ip_rede' ] := EnCrypt(GetValorDatMemoria('TcpIp.ID_IP_REDE' ,v_tstrCipherOpened),l_cs_compress); - Request_Ger_Cols.Values['te_workgroup' ] := EnCrypt(GetValorDatMemoria('TcpIp.TE_WORKGROUP' ,v_tstrCipherOpened),l_cs_compress); - Request_Ger_Cols.Values['te_nome_computador'] := EnCrypt(GetValorDatMemoria('TcpIp.TE_NOME_COMPUTADOR',v_tstrCipherOpened),l_cs_compress); + //Request_Ger_Cols.Values['te_node_address' ] := EnCrypt(GetValorDatMemoria('TcpIp.TE_NODE_ADDRESS' ,v_tstrCipherOpened),l_cs_compress); + //Request_Ger_Cols.Values['id_so' ] := EnCrypt(GetValorDatMemoria('Configs.ID_SO' ,v_tstrCipherOpened),l_cs_compress); + //Request_Ger_Cols.Values['te_so' ] := EnCrypt(v_te_so,l_cs_compress); + //Request_Ger_Cols.Values['te_ip' ] := EnCrypt(GetValorDatMemoria('TcpIp.TE_IP' ,v_tstrCipherOpened),l_cs_compress); + //Request_Ger_Cols.Values['id_ip_rede' ] := EnCrypt(GetValorDatMemoria('TcpIp.ID_IP_REDE' ,v_tstrCipherOpened),l_cs_compress); + //Request_Ger_Cols.Values['te_workgroup' ] := EnCrypt(GetValorDatMemoria('TcpIp.TE_WORKGROUP' ,v_tstrCipherOpened),l_cs_compress); + //Request_Ger_Cols.Values['te_nome_computador'] := EnCrypt(GetValorDatMemoria('TcpIp.TE_NOME_COMPUTADOR',v_tstrCipherOpened),l_cs_compress); // Preparação para envio... - Request_Ger_Cols.Values['id_unid_organizacional_nivel1'] := EnCrypt(GetValorDatMemoria('Col_Patr.id_unid_organizacional_nivel1' ,v_tstrCipherOpened1),l_cs_compress); - Request_Ger_Cols.Values['id_unid_organizacional_nivel2'] := EnCrypt(GetValorDatMemoria('Col_Patr.id_unid_organizacional_nivel2' ,v_tstrCipherOpened1),l_cs_compress); - Request_Ger_Cols.Values['te_localizacao_complementar' ] := EnCrypt(GetValorDatMemoria('Col_Patr.te_localizacao_complementar' ,v_tstrCipherOpened1),l_cs_compress); - Request_Ger_Cols.Values['te_info_patrimonio1' ] := EnCrypt(GetValorDatMemoria('Col_Patr.te_info_patrimonio1' ,v_tstrCipherOpened1),l_cs_compress); - Request_Ger_Cols.Values['te_info_patrimonio2' ] := EnCrypt(GetValorDatMemoria('Col_Patr.te_info_patrimonio2' ,v_tstrCipherOpened1),l_cs_compress); - Request_Ger_Cols.Values['te_info_patrimonio3' ] := EnCrypt(GetValorDatMemoria('Col_Patr.te_info_patrimonio3' ,v_tstrCipherOpened1),l_cs_compress); - Request_Ger_Cols.Values['te_info_patrimonio4' ] := EnCrypt(GetValorDatMemoria('Col_Patr.te_info_patrimonio4' ,v_tstrCipherOpened1),l_cs_compress); - Request_Ger_Cols.Values['te_info_patrimonio5' ] := EnCrypt(GetValorDatMemoria('Col_Patr.te_info_patrimonio5' ,v_tstrCipherOpened1),l_cs_compress); - Request_Ger_Cols.Values['te_info_patrimonio6' ] := EnCrypt(GetValorDatMemoria('Col_Patr.te_info_patrimonio6' ,v_tstrCipherOpened1),l_cs_compress); + Request_Ger_Cols.Values['id_unid_organizacional_nivel1'] := StringReplace(EnCrypt(GetValorDatMemoria('Col_Patr.id_unid_organizacional_nivel1' ,v_tstrCipherOpened1),l_cs_compress),'+','',[rfReplaceAll]); + Request_Ger_Cols.Values['id_unid_organizacional_nivel1a'] := StringReplace(EnCrypt(GetValorDatMemoria('Col_Patr.id_unid_organizacional_nivel1a' ,v_tstrCipherOpened1),l_cs_compress),'+','',[rfReplaceAll]); + Request_Ger_Cols.Values['id_unid_organizacional_nivel2'] := StringReplace(EnCrypt(GetValorDatMemoria('Col_Patr.id_unid_organizacional_nivel2' ,v_tstrCipherOpened1),l_cs_compress),'+','',[rfReplaceAll]); + Request_Ger_Cols.Values['te_localizacao_complementar' ] := StringReplace(EnCrypt(GetValorDatMemoria('Col_Patr.te_localizacao_complementar' ,v_tstrCipherOpened1),l_cs_compress),'+','',[rfReplaceAll]); + Request_Ger_Cols.Values['te_info_patrimonio1' ] := StringReplace(EnCrypt(GetValorDatMemoria('Col_Patr.te_info_patrimonio1' ,v_tstrCipherOpened1),l_cs_compress),'+','',[rfReplaceAll]); + Request_Ger_Cols.Values['te_info_patrimonio2' ] := StringReplace(EnCrypt(GetValorDatMemoria('Col_Patr.te_info_patrimonio2' ,v_tstrCipherOpened1),l_cs_compress),'+','',[rfReplaceAll]); + Request_Ger_Cols.Values['te_info_patrimonio3' ] := StringReplace(EnCrypt(GetValorDatMemoria('Col_Patr.te_info_patrimonio3' ,v_tstrCipherOpened1),l_cs_compress),'+','',[rfReplaceAll]); + Request_Ger_Cols.Values['te_info_patrimonio4' ] := StringReplace(EnCrypt(GetValorDatMemoria('Col_Patr.te_info_patrimonio4' ,v_tstrCipherOpened1),l_cs_compress),'+','',[rfReplaceAll]); + Request_Ger_Cols.Values['te_info_patrimonio5' ] := StringReplace(EnCrypt(GetValorDatMemoria('Col_Patr.te_info_patrimonio5' ,v_tstrCipherOpened1),l_cs_compress),'+','',[rfReplaceAll]); + Request_Ger_Cols.Values['te_info_patrimonio6' ] := StringReplace(EnCrypt(GetValorDatMemoria('Col_Patr.te_info_patrimonio6' ,v_tstrCipherOpened1),l_cs_compress),'+','',[rfReplaceAll]); if v_Debugs then For intLoop := 0 to Request_Ger_Cols.Count-1 do @@ -3075,16 +3185,17 @@ Begin // Somente atualizo o registro caso não tenha havido nenhum erro durante o envio das informações para o BD //Sobreponho a informação no registro para posterior comparação, na próxima execução. - SetValorDatMemoria('Patrimonio.id_unid_organizacional_nivel1', GetValorDatMemoria('Col_Patr.id_unid_organizacional_nivel1',v_tstrCipherOpened1), v_tstrCipherOpened); - SetValorDatMemoria('Patrimonio.id_unid_organizacional_nivel2', GetValorDatMemoria('Col_Patr.id_unid_organizacional_nivel2',v_tstrCipherOpened1), v_tstrCipherOpened); - SetValorDatMemoria('Patrimonio.te_localizacao_complementar' , GetValorDatMemoria('Col_Patr.te_localizacao_complementar' ,v_tstrCipherOpened1), v_tstrCipherOpened); - SetValorDatMemoria('Patrimonio.te_info_patrimonio1' , GetValorDatMemoria('Col_Patr.te_info_patrimonio1' ,v_tstrCipherOpened1), v_tstrCipherOpened); - SetValorDatMemoria('Patrimonio.te_info_patrimonio2' , GetValorDatMemoria('Col_Patr.te_info_patrimonio2' ,v_tstrCipherOpened1), v_tstrCipherOpened); - SetValorDatMemoria('Patrimonio.te_info_patrimonio3' , GetValorDatMemoria('Col_Patr.te_info_patrimonio3' ,v_tstrCipherOpened1), v_tstrCipherOpened); - SetValorDatMemoria('Patrimonio.te_info_patrimonio4' , GetValorDatMemoria('Col_Patr.te_info_patrimonio4' ,v_tstrCipherOpened1), v_tstrCipherOpened); - SetValorDatMemoria('Patrimonio.te_info_patrimonio5' , GetValorDatMemoria('Col_Patr.te_info_patrimonio5' ,v_tstrCipherOpened1), v_tstrCipherOpened); - SetValorDatMemoria('Patrimonio.te_info_patrimonio6' , GetValorDatMemoria('Col_Patr.te_info_patrimonio6' ,v_tstrCipherOpened1), v_tstrCipherOpened); - SetValorDatMemoria('Patrimonio.ultima_rede_obtida' , GetValorDatMemoria('TcpIp.ID_IP_REDE' ,v_tstrCipherOpened) , v_tstrCipherOpened); + SetValorDatMemoria('Patrimonio.id_unid_organizacional_nivel1' , GetValorDatMemoria('Col_Patr.id_unid_organizacional_nivel1',v_tstrCipherOpened1), v_tstrCipherOpened); + SetValorDatMemoria('Patrimonio.id_unid_organizacional_nivel1a', GetValorDatMemoria('Col_Patr.id_unid_organizacional_nivel1a',v_tstrCipherOpened1), v_tstrCipherOpened); + SetValorDatMemoria('Patrimonio.id_unid_organizacional_nivel2' , GetValorDatMemoria('Col_Patr.id_unid_organizacional_nivel2',v_tstrCipherOpened1), v_tstrCipherOpened); + SetValorDatMemoria('Patrimonio.te_localizacao_complementar' , GetValorDatMemoria('Col_Patr.te_localizacao_complementar' ,v_tstrCipherOpened1), v_tstrCipherOpened); + SetValorDatMemoria('Patrimonio.te_info_patrimonio1' , GetValorDatMemoria('Col_Patr.te_info_patrimonio1' ,v_tstrCipherOpened1), v_tstrCipherOpened); + SetValorDatMemoria('Patrimonio.te_info_patrimonio2' , GetValorDatMemoria('Col_Patr.te_info_patrimonio2' ,v_tstrCipherOpened1), v_tstrCipherOpened); + SetValorDatMemoria('Patrimonio.te_info_patrimonio3' , GetValorDatMemoria('Col_Patr.te_info_patrimonio3' ,v_tstrCipherOpened1), v_tstrCipherOpened); + SetValorDatMemoria('Patrimonio.te_info_patrimonio4' , GetValorDatMemoria('Col_Patr.te_info_patrimonio4' ,v_tstrCipherOpened1), v_tstrCipherOpened); + SetValorDatMemoria('Patrimonio.te_info_patrimonio5' , GetValorDatMemoria('Col_Patr.te_info_patrimonio5' ,v_tstrCipherOpened1), v_tstrCipherOpened); + SetValorDatMemoria('Patrimonio.te_info_patrimonio6' , GetValorDatMemoria('Col_Patr.te_info_patrimonio6' ,v_tstrCipherOpened1), v_tstrCipherOpened); + SetValorDatMemoria('Patrimonio.ultima_rede_obtida' , GetValorDatMemoria('TcpIp.ID_IP_REDE' ,v_tstrCipherOpened) , v_tstrCipherOpened); intAux := 1; End else @@ -3115,16 +3226,16 @@ Begin if (GetValorDatMemoria('Col_Moni.nada',v_tstrCipherOpened1)='') then Begin // Dados para uso do Gerente WEB... - Request_Ger_Cols.Values['te_node_address' ] := EnCrypt(GetValorDatMemoria('TcpIp.TE_NODE_ADDRESS' ,v_tstrCipherOpened),l_cs_compress); - Request_Ger_Cols.Values['id_so' ] := EnCrypt(GetValorDatMemoria('Configs.ID_SO' ,v_tstrCipherOpened),l_cs_compress); - Request_Ger_Cols.Values['te_so' ] := EnCrypt(v_te_so,l_cs_compress); - Request_Ger_Cols.Values['te_ip' ] := EnCrypt(GetValorDatMemoria('TcpIp.TE_IP' ,v_tstrCipherOpened),l_cs_compress); - Request_Ger_Cols.Values['id_ip_rede' ] := EnCrypt(GetValorDatMemoria('TcpIp.ID_IP_REDE' ,v_tstrCipherOpened),l_cs_compress); - Request_Ger_Cols.Values['te_workgroup' ] := EnCrypt(GetValorDatMemoria('TcpIp.TE_WORKGROUP' ,v_tstrCipherOpened),l_cs_compress); - Request_Ger_Cols.Values['te_nome_computador'] := EnCrypt(GetValorDatMemoria('TcpIp.TE_NOME_COMPUTADOR',v_tstrCipherOpened),l_cs_compress); + //Request_Ger_Cols.Values['te_node_address' ] := EnCrypt(GetValorDatMemoria('TcpIp.TE_NODE_ADDRESS' ,v_tstrCipherOpened),l_cs_compress); + //Request_Ger_Cols.Values['id_so' ] := EnCrypt(GetValorDatMemoria('Configs.ID_SO' ,v_tstrCipherOpened),l_cs_compress); + //Request_Ger_Cols.Values['te_so' ] := EnCrypt(v_te_so,l_cs_compress); + //Request_Ger_Cols.Values['te_ip' ] := EnCrypt(GetValorDatMemoria('TcpIp.TE_IP' ,v_tstrCipherOpened),l_cs_compress); + //Request_Ger_Cols.Values['id_ip_rede' ] := EnCrypt(GetValorDatMemoria('TcpIp.ID_IP_REDE' ,v_tstrCipherOpened),l_cs_compress); + //Request_Ger_Cols.Values['te_workgroup' ] := EnCrypt(GetValorDatMemoria('TcpIp.TE_WORKGROUP' ,v_tstrCipherOpened),l_cs_compress); + //Request_Ger_Cols.Values['te_nome_computador'] := EnCrypt(GetValorDatMemoria('TcpIp.TE_NOME_COMPUTADOR',v_tstrCipherOpened),l_cs_compress); // Preparação para envio... - Request_Ger_Cols.Values['te_tripa_monitorados'] := EnCrypt(GetValorDatMemoria('Col_Moni.UVC',v_tstrCipherOpened1),l_cs_compress); + Request_Ger_Cols.Values['te_tripa_monitorados'] := StringReplace(EnCrypt(GetValorDatMemoria('Col_Moni.UVC',v_tstrCipherOpened1),l_cs_compress),'+','',[rfReplaceAll]); if v_Debugs then For intLoop := 0 to Request_Ger_Cols.Count-1 do @@ -3169,28 +3280,26 @@ Begin if (GetValorDatMemoria('Col_Soft.nada',v_tstrCipherOpened1)='') then Begin // Dados para uso do Gerente WEB... - Request_Ger_Cols.Values['te_node_address' ] := EnCrypt(GetValorDatMemoria('TcpIp.TE_NODE_ADDRESS' ,v_tstrCipherOpened),l_cs_compress); - Request_Ger_Cols.Values['id_so' ] := EnCrypt(GetValorDatMemoria('Configs.ID_SO' ,v_tstrCipherOpened),l_cs_compress); - Request_Ger_Cols.Values['te_so' ] := EnCrypt(v_te_so,l_cs_compress); - Request_Ger_Cols.Values['te_ip' ] := EnCrypt(GetValorDatMemoria('TcpIp.TE_IP' ,v_tstrCipherOpened),l_cs_compress); - Request_Ger_Cols.Values['id_ip_rede' ] := EnCrypt(GetValorDatMemoria('TcpIp.ID_IP_REDE' ,v_tstrCipherOpened),l_cs_compress); - Request_Ger_Cols.Values['te_workgroup' ] := EnCrypt(GetValorDatMemoria('TcpIp.TE_WORKGROUP' ,v_tstrCipherOpened),l_cs_compress); - Request_Ger_Cols.Values['te_nome_computador'] := EnCrypt(GetValorDatMemoria('TcpIp.TE_NOME_COMPUTADOR',v_tstrCipherOpened),l_cs_compress); + //Request_Ger_Cols.Values['te_node_address' ] := EnCrypt(GetValorDatMemoria('TcpIp.TE_NODE_ADDRESS' ,v_tstrCipherOpened),l_cs_compress); + //Request_Ger_Cols.Values['id_so' ] := EnCrypt(GetValorDatMemoria('Configs.ID_SO' ,v_tstrCipherOpened),l_cs_compress); + //Request_Ger_Cols.Values['te_so' ] := EnCrypt(v_te_so,l_cs_compress); + //Request_Ger_Cols.Values['te_ip' ] := EnCrypt(GetValorDatMemoria('TcpIp.TE_IP' ,v_tstrCipherOpened),l_cs_compress); + //Request_Ger_Cols.Values['id_ip_rede' ] := EnCrypt(GetValorDatMemoria('TcpIp.ID_IP_REDE' ,v_tstrCipherOpened),l_cs_compress); + //Request_Ger_Cols.Values['te_workgroup' ] := EnCrypt(GetValorDatMemoria('TcpIp.TE_WORKGROUP' ,v_tstrCipherOpened),l_cs_compress); + //Request_Ger_Cols.Values['te_nome_computador'] := EnCrypt(GetValorDatMemoria('TcpIp.TE_NOME_COMPUTADOR',v_tstrCipherOpened),l_cs_compress); // Preparação para envio... - Request_Ger_Cols.Values['te_versao_bde' ] := EnCrypt(GetValorDatMemoria('Col_Soft.te_versao_bde' ,v_tstrCipherOpened1),l_cs_compress); - Request_Ger_Cols.Values['te_versao_dao' ] := EnCrypt(GetValorDatMemoria('Col_Soft.te_versao_dao' ,v_tstrCipherOpened1),l_cs_compress); - Request_Ger_Cols.Values['te_versao_ado' ] := EnCrypt(GetValorDatMemoria('Col_Soft.te_versao_ado' ,v_tstrCipherOpened1),l_cs_compress); - Request_Ger_Cols.Values['te_versao_odbc' ] := EnCrypt(GetValorDatMemoria('Col_Soft.te_versao_odbc' ,v_tstrCipherOpened1),l_cs_compress); - Request_Ger_Cols.Values['te_versao_directx' ] := EnCrypt(GetValorDatMemoria('Col_Soft.te_versao_directx' ,v_tstrCipherOpened1),l_cs_compress); - Request_Ger_Cols.Values['te_versao_acrobat_reader'] := EnCrypt(GetValorDatMemoria('Col_Soft.te_versao_acrobat_reader',v_tstrCipherOpened1),l_cs_compress); - Request_Ger_Cols.Values['te_versao_ie' ] := EnCrypt(GetValorDatMemoria('Col_Soft.te_versao_ie' ,v_tstrCipherOpened1),l_cs_compress); - Request_Ger_Cols.Values['te_versao_mozilla' ] := EnCrypt(GetValorDatMemoria('Col_Soft.te_versao_mozilla' ,v_tstrCipherOpened1),l_cs_compress); - Request_Ger_Cols.Values['te_versao_jre' ] := EnCrypt(GetValorDatMemoria('Col_Soft.te_versao_jre' ,v_tstrCipherOpened1),l_cs_compress); - Request_Ger_Cols.Values['te_inventario_softwares' ] := EnCrypt(GetValorDatMemoria('Col_Soft.te_inventario_softwares' ,v_tstrCipherOpened1),l_cs_compress); - Request_Ger_Cols.Values['te_variaveis_ambiente' ] := EnCrypt(GetValorDatMemoria('Col_Soft.te_variaveis_ambiente' ,v_tstrCipherOpened1),l_cs_compress); - Request_Ger_Cols.Values['te_versao_cacic' ] := EnCrypt(getVersionInfo(p_path_cacic + 'cacic2.exe'),l_cs_compress); - Request_Ger_Cols.Values['te_versao_gercols' ] := EnCrypt(getVersionInfo(ParamStr(0)),l_cs_compress); + Request_Ger_Cols.Values['te_versao_bde' ] := StringReplace(EnCrypt(GetValorDatMemoria('Col_Soft.te_versao_bde' ,v_tstrCipherOpened1),l_cs_compress),'+','',[rfReplaceAll]); + Request_Ger_Cols.Values['te_versao_dao' ] := StringReplace(EnCrypt(GetValorDatMemoria('Col_Soft.te_versao_dao' ,v_tstrCipherOpened1),l_cs_compress),'+','',[rfReplaceAll]); + Request_Ger_Cols.Values['te_versao_ado' ] := StringReplace(EnCrypt(GetValorDatMemoria('Col_Soft.te_versao_ado' ,v_tstrCipherOpened1),l_cs_compress),'+','',[rfReplaceAll]); + Request_Ger_Cols.Values['te_versao_odbc' ] := StringReplace(EnCrypt(GetValorDatMemoria('Col_Soft.te_versao_odbc' ,v_tstrCipherOpened1),l_cs_compress),'+','',[rfReplaceAll]); + Request_Ger_Cols.Values['te_versao_directx' ] := StringReplace(EnCrypt(GetValorDatMemoria('Col_Soft.te_versao_directx' ,v_tstrCipherOpened1),l_cs_compress),'+','',[rfReplaceAll]); + Request_Ger_Cols.Values['te_versao_acrobat_reader'] := StringReplace(EnCrypt(GetValorDatMemoria('Col_Soft.te_versao_acrobat_reader',v_tstrCipherOpened1),l_cs_compress),'+','',[rfReplaceAll]); + Request_Ger_Cols.Values['te_versao_ie' ] := StringReplace(EnCrypt(GetValorDatMemoria('Col_Soft.te_versao_ie' ,v_tstrCipherOpened1),l_cs_compress),'+','',[rfReplaceAll]); + Request_Ger_Cols.Values['te_versao_mozilla' ] := StringReplace(EnCrypt(GetValorDatMemoria('Col_Soft.te_versao_mozilla' ,v_tstrCipherOpened1),l_cs_compress),'+','',[rfReplaceAll]); + Request_Ger_Cols.Values['te_versao_jre' ] := StringReplace(EnCrypt(GetValorDatMemoria('Col_Soft.te_versao_jre' ,v_tstrCipherOpened1),l_cs_compress),'+','',[rfReplaceAll]); + Request_Ger_Cols.Values['te_inventario_softwares' ] := StringReplace(EnCrypt(GetValorDatMemoria('Col_Soft.te_inventario_softwares' ,v_tstrCipherOpened1),l_cs_compress),'+','',[rfReplaceAll]); + Request_Ger_Cols.Values['te_variaveis_ambiente' ] := StringReplace(EnCrypt(StringReplace(GetValorDatMemoria('Col_Soft.te_variaveis_ambiente',v_tstrCipherOpened1),'\','',[rfReplaceAll]),l_cs_compress),'+','',[rfReplaceAll]); if v_Debugs then For intLoop := 0 to Request_Ger_Cols.Count-1 do @@ -3235,16 +3344,16 @@ Begin if (GetValorDatMemoria('Col_Undi.nada',v_tstrCipherOpened1)='') then Begin // Dados para uso do Gerente WEB... - Request_Ger_Cols.Values['te_node_address' ] := EnCrypt(GetValorDatMemoria('TcpIp.TE_NODE_ADDRESS' ,v_tstrCipherOpened),l_cs_compress); - Request_Ger_Cols.Values['id_so' ] := EnCrypt(GetValorDatMemoria('Configs.ID_SO' ,v_tstrCipherOpened),l_cs_compress); - Request_Ger_Cols.Values['te_so' ] := EnCrypt(v_te_so,l_cs_compress); - Request_Ger_Cols.Values['te_ip' ] := EnCrypt(GetValorDatMemoria('TcpIp.TE_IP' ,v_tstrCipherOpened),l_cs_compress); - Request_Ger_Cols.Values['id_ip_rede' ] := EnCrypt(GetValorDatMemoria('TcpIp.ID_IP_REDE' ,v_tstrCipherOpened),l_cs_compress); - Request_Ger_Cols.Values['te_workgroup' ] := EnCrypt(GetValorDatMemoria('TcpIp.TE_WORKGROUP' ,v_tstrCipherOpened),l_cs_compress); - Request_Ger_Cols.Values['te_nome_computador'] := EnCrypt(GetValorDatMemoria('TcpIp.TE_NOME_COMPUTADOR',v_tstrCipherOpened),l_cs_compress); + //Request_Ger_Cols.Values['te_node_address' ] := EnCrypt(GetValorDatMemoria('TcpIp.TE_NODE_ADDRESS' ,v_tstrCipherOpened),l_cs_compress); + //Request_Ger_Cols.Values['id_so' ] := EnCrypt(GetValorDatMemoria('Configs.ID_SO' ,v_tstrCipherOpened),l_cs_compress); + //Request_Ger_Cols.Values['te_so' ] := EnCrypt(v_te_so,l_cs_compress); + //Request_Ger_Cols.Values['te_ip' ] := EnCrypt(GetValorDatMemoria('TcpIp.TE_IP' ,v_tstrCipherOpened),l_cs_compress); + //Request_Ger_Cols.Values['id_ip_rede' ] := EnCrypt(GetValorDatMemoria('TcpIp.ID_IP_REDE' ,v_tstrCipherOpened),l_cs_compress); + //Request_Ger_Cols.Values['te_workgroup' ] := EnCrypt(GetValorDatMemoria('TcpIp.TE_WORKGROUP' ,v_tstrCipherOpened),l_cs_compress); + //Request_Ger_Cols.Values['te_nome_computador'] := EnCrypt(GetValorDatMemoria('TcpIp.TE_NOME_COMPUTADOR',v_tstrCipherOpened),l_cs_compress); // Preparação para envio... - Request_Ger_Cols.Values['unidades'] := EnCrypt(GetValorDatMemoria('Col_Undi.UVC',v_tstrCipherOpened1),l_cs_compress); + Request_Ger_Cols.Values['UnidadesDiscos'] := StringReplace(EnCrypt(GetValorDatMemoria('Col_Undi.UVC',v_tstrCipherOpened1),l_cs_compress),'+','',[rfReplaceAll]); if v_Debugs then For intLoop := 0 to Request_Ger_Cols.Count-1 do diff --git a/ger_cols/ger_cols.res b/ger_cols/ger_cols.res index cf1bbeb..7551467 100755 Binary files a/ger_cols/ger_cols.res and b/ger_cols/ger_cols.res differ diff --git a/ini_cols/ini_cols.dpr b/ini_cols/ini_cols.dpr index a3884d4..a5ee7c4 100755 --- a/ini_cols/ini_cols.dpr +++ b/ini_cols/ini_cols.dpr @@ -457,6 +457,7 @@ begin v_DatFileName := p_path_cacic + 'cacic2.dat'; v_SeparatorKey := '=CacicIsFree='; + Matar(p_path_cacic+'temp\','*.dat'); Try // Caso exista o Gerente de Coletas será verificada a versão... // Devido a problemas na rotina de FTP na versão 2.0.1.2, diff --git a/main.dfm b/main.dfm index b8b7eca..7724bb1 100755 Binary files a/main.dfm and b/main.dfm differ diff --git a/main.pas b/main.pas index e9a7f7b..e3fcc80 100755 --- a/main.pas +++ b/main.pas @@ -107,11 +107,15 @@ type Mnu_FinalizarCacic: TMenuItem; listSistemasMonitorados: TListView; Panel1: TPanel; - Label1: TLabel; + lbColetasRealizadasNestaData: TLabel; listaColetas: TListView; - lbDataColeta: TLabel; + teDataColeta: TLabel; Panel2: TPanel; Panel3: TPanel; + pnVersao: TPanel; + lbServidorWEB: TLabel; + teServidorWEB: TLabel; + Panel5: TPanel; procedure RemoveIconesMortos; procedure ChecaCONFIGS; procedure CriaFormSenha(Sender: TObject); @@ -141,7 +145,7 @@ type procedure Bt_Fechar_InfosGeraisClick(Sender: TObject); function Get_File_Size(sFileToExamine: string; bInKBytes: Boolean): string; function Posso_Rodar : boolean; - function abstraiCSD(p_te_so : String) : integer; + function abstraiCSD(p_te_so : String) : integer; private ShutdownEmExecucao : Boolean; IsMenuOpen : Boolean; @@ -506,7 +510,9 @@ begin end; log_DEBUG('Lendo '+v_DatFileName); + Readln(v_DatFile,v_strCipherClosed); + log_DEBUG('Povoando Variável'); while not EOF(v_DatFile) do Readln(v_DatFile,v_strCipherClosed); log_DEBUG('Fechando '+v_DatFileName); @@ -663,22 +669,35 @@ end; function TFormularioGeral.ChecaGERCOLS : boolean; var strFraseVersao : String; Begin - log_DEBUG('Verificando existência do Gerente de Coletas...'); - if not (FileExists(p_path_cacic + 'modulos\ger_cols.exe')) then + Result := true; + + log_DEBUG('Verificando existência e tamanho do Gerente de Coletas...'); + v_Tamanho_Arquivo := Get_File_Size(p_path_cacic + 'modulos\ger_cols.exe',true); + + log_DEBUG('Resultado: #'+v_Tamanho_Arquivo); + + if (v_Tamanho_Arquivo = '0') or (v_Tamanho_Arquivo = '-1') then Begin + Result := false; + + Matar(p_path_cacic + 'modulos\','ger_cols.exe'); + strFraseVersao := 'CACIC V:' + getVersionInfo(ParamStr(0)); if not (getValorDatMemoria('TcpIp.TE_IP',v_tstrCipherOpened) = '') then strFraseVersao := strFraseVersao + #13#10 + 'IP: '+getValorDatMemoria('TcpIp.TE_IP',v_tstrCipherOpened); InicializaTray(strFraseVersao); log_diario('Acionando recuperador de Módulo Gerente de Coletas.'); + log_DEBUG('Recuperador de Módulo Gerente de Coletas: '+HomeDrive + '\chksis.exe'); WinExec(PChar(HomeDrive + '\chksis.exe'),SW_HIDE); sleep(30000); // 30 segundos de espera para download do ger_cols.exe - if (FileExists(p_path_cacic + 'modulos\ger_cols.exe')) then + v_Tamanho_Arquivo := Get_File_Size(p_path_cacic + 'modulos\ger_cols.exe',true); + if not(v_Tamanho_Arquivo = '0') and not(v_Tamanho_Arquivo = '-1') then Begin log_diario('Módulo Gerente de Coletas RECUPERADO COM SUCESSO!'); InicializaTray(''); + Result := True; End else log_diario('Módulo Gerente de Coletas NÃO RECUPERADO!'); @@ -965,6 +984,9 @@ var strAux, v_Aguarde : TextFile; v_SystemDrive : TStrings; begin + // Não mostrar o formulário... + Application.ShowMainForm:=false; + Try // De acordo com a versão do OS, determino o ShellCommand para chamadas externas. if ((GetWinVer <> 0) and (GetWinVer > 5)) or @@ -984,7 +1006,6 @@ begin p_Shell_Command := 'command.com'; strAux := GetEnvironmentVariable('windir') + '\'; //Ex.: c:\windows\ End; - v_SystemDrive := explode(strAux,'\'); v_cacic_dir := v_SystemDrive[0] + '\' + getValorChaveRegIni('Cacic2','cacic_dir',strAux + 'chksis.ini') + '\'; @@ -1025,7 +1046,7 @@ begin // Chave AES. Recomenda-se que cada empresa altere a sua chave. // Esta chave é passada como parâmetro para o Gerente de Coletas que, por sua vez, // passa para o Inicializador de Coletas e este passa para os coletores... - v_CipherKey := 'CacicBrasil'; + v_CipherKey := 'CacicBrasil'; v_IV := 'abcdefghijklmnop'; v_SeparatorKey := '=CacicIsFree='; // Usada apenas para o cacic2.dat v_DatFileName := p_path_cacic + 'cacic2.dat'; @@ -1111,7 +1132,7 @@ begin strFraseVersao := 'CACIC V:' + getVersionInfo(ParamStr(0)); if not (getValorDatMemoria('TcpIp.TE_IP',v_tstrCipherOpened) = '') then strFraseVersao := strFraseVersao + #13#10 + 'IP: '+ getValorDatMemoria('TcpIp.TE_IP',v_tstrCipherOpened); - + pnVersao.Caption := 'V. ' + getVersionInfo(ParamStr(0)); InicializaTray(strFraseVersao); CipherClose; End @@ -1238,16 +1259,6 @@ begin Matar(p_path_cacic + 'temp\','*.ini'); // Caso exista o Gerente de Coletas será verificada a versão e excluída caso antiga(Uma forma de ação pró-ativa) - If (FileExists(p_path_cacic + 'modulos\ger_cols.exe')) Then - Begin - v_versao := trim(GetVersionInfo(p_path_cacic + 'modulos\ger_cols.exe')); - if (v_versao = '0.0.0.0') then // Provavelmente arquivo corrompido ou versão muito antiga - Begin - log_diario('Excluindo versão ('+v_versao+') de Ger_Cols.exe'); - Matar(p_path_cacic + 'modulos\','ger_cols.exe'); - End; - End; - if ChecaGERCOLS then Begin ChecaCONFIGS; @@ -1255,7 +1266,9 @@ begin log_diario('Invocando Gerente de Coletas com ação: "'+p_acao+'"'); Timer_Nu_Exec_Apos.Enabled := False; WinExec(PChar(p_path_cacic + 'modulos\GER_COLS.EXE /'+p_acao+' /p_CipherKey='+v_CipherKey),SW_HIDE); - End; + End + else + log_diario('Não foi possível invocar o Gerente de Coletas!'); end; function TFormularioGeral.FindWindowByTitle(WindowTitle: string): Hwnd; @@ -1760,7 +1773,8 @@ begin End; end; - lbDataColeta.Caption := '('+FormatDateTime('dd/mm/yyyy', now)+')'; + teDataColeta.Caption := '('+FormatDateTime('dd/mm/yyyy', now)+')'; + teServidorWEB.Caption := '"'+FormularioGeral.getValorDatMemoria('Configs.EnderecoServidor',v_tstrCipherOpened)+'"'; strAux := GetValorDatMemoria('Coletas.HOJE', v_tstrCipherOpened); if (strAux <> '') then diff --git a/mapa/acesso.dfm b/mapa/acesso.dfm index b71da96..94ff184 100755 --- a/mapa/acesso.dfm +++ b/mapa/acesso.dfm @@ -150,9 +150,38 @@ object frmAcesso: TfrmAcesso OnShow = FormShow PixelsPerInch = 96 TextHeight = 13 + object lbNomeServidorWEB: TLabel + Left = 0 + Top = 272 + Width = 300 + Height = 12 + AutoSize = False + Caption = 'Servidor: ABCDEFGHIJKLMNOP' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -9 + Font.Name = 'Arial' + Font.Style = [fsBold] + ParentFont = False + end + object lbVersao: TLabel + Left = 303 + Top = 272 + Width = 300 + Height = 12 + Alignment = taRightJustify + AutoSize = False + Caption = 'Vers'#227'o: X.X.X.X' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -9 + Font.Name = 'Arial' + Font.Style = [] + ParentFont = False + end object btAcesso: TButton Left = 174 - Top = 241 + Top = 233 Width = 100 Height = 30 Caption = 'Acessar' @@ -167,8 +196,8 @@ object frmAcesso: TfrmAcesso OnClick = btAcessoClick end object btCancela: TButton - Left = 324 - Top = 241 + Left = 330 + Top = 233 Width = 100 Height = 30 Caption = 'Cancelar' @@ -182,9 +211,9 @@ object frmAcesso: TfrmAcesso OnClick = btCancelaClick end object pnAcesso: TPanel - Left = 5 - Top = 10 - Width = 596 + Left = 2 + Top = 3 + Width = 602 Height = 196 BevelInner = bvRaised BevelOuter = bvLowered @@ -203,7 +232,7 @@ object frmAcesso: TfrmAcesso ParentFont = False end object lbSenhaAcesso: TLabel - Left = 389 + Left = 394 Top = 39 Width = 110 Height = 16 @@ -218,7 +247,7 @@ object frmAcesso: TfrmAcesso object lbAviso: TLabel Left = 4 Top = 121 - Width = 587 + Width = 593 Height = 13 Alignment = taCenter AutoSize = False @@ -242,7 +271,7 @@ object frmAcesso: TfrmAcesso OnKeyUp = edNomeUsuarioAcessoKeyUp end object edSenhaAcesso: TEdit - Left = 389 + Left = 394 Top = 55 Width = 150 Height = 21 @@ -252,9 +281,9 @@ object frmAcesso: TfrmAcesso end end object pnMensagens: TPanel - Left = 4 - Top = 205 - Width = 596 + Left = 1 + Top = 200 + Width = 602 Height = 24 BevelInner = bvLowered TabOrder = 3 @@ -267,51 +296,6 @@ object frmAcesso: TfrmAcesso AutoSize = False end end - object pnVersao: TPanel - Left = 513 - Top = 267 - Width = 90 - Height = 14 - BevelOuter = bvLowered - TabOrder = 4 - object lbVersao: TLabel - Left = 4 - Top = 1 - Width = 85 - Height = 12 - Alignment = taCenter - AutoSize = False - Caption = 'v: X.X.X.X' - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -9 - Font.Name = 'Arial' - Font.Style = [] - ParentFont = False - end - end - object pnNomeServidorWEB: TPanel - Left = 1 - Top = 267 - Width = 90 - Height = 14 - BevelOuter = bvLowered - TabOrder = 5 - object lbNomeServidorWEB: TLabel - Left = 3 - Top = 1 - Width = 83 - Height = 12 - Alignment = taCenter - AutoSize = False - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -9 - Font.Name = 'Arial' - Font.Style = [fsBold] - ParentFont = False - end - end object tm_Mensagem: TTimer Enabled = False Interval = 5000 diff --git a/mapa/acesso.pas b/mapa/acesso.pas index a06a7cb..d39e6d1 100755 --- a/mapa/acesso.pas +++ b/mapa/acesso.pas @@ -21,7 +21,7 @@ interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, - Dialogs, StdCtrls, ExtCtrls; + StdCtrls, ExtCtrls, dialogs; type TfrmAcesso = class(TForm) @@ -35,11 +35,9 @@ type pnMensagens: TPanel; lbMsg_Erro_Senha: TLabel; lbAviso: TLabel; - pnVersao: TPanel; - lbVersao: TLabel; tm_Mensagem: TTimer; - pnNomeServidorWEB: TPanel; lbNomeServidorWEB: TLabel; + lbVersao: TLabel; procedure btAcessoClick(Sender: TObject); procedure btCancelaClick(Sender: TObject); procedure FormCreate(Sender: TObject); @@ -73,16 +71,23 @@ begin lbMsg_Erro_Senha.Caption := str_local_Aux; // Envio dos dados ao DataBase... - Request_mapa.Values['nm_acesso'] := frmMapaCacic.EnCrypt(edNomeUsuarioAcesso.Text); - Request_mapa.Values['te_senha'] := frmMapaCacic.EnCrypt(edSenhaAcesso.Text); - Request_mapa.Values['cs_MapaCacic'] := frmMapaCacic.EnCrypt('S'); - + Request_mapa.Values['nm_acesso'] := frmMapaCacic.EnCrypt(edNomeUsuarioAcesso.Text); + Request_mapa.Values['te_senha'] := frmMapaCacic.EnCrypt(edSenhaAcesso.Text); + Request_mapa.Values['cs_MapaCacic'] := frmMapaCacic.EnCrypt('S'); + Request_mapa.Values['te_versao_mapa'] := frmMapaCacic.EnCrypt(frmMapaCacic.getVersionInfo(ParamStr(0))); strRetorno := frmMapaCacic.ComunicaServidor('mapa_acesso.php', Request_mapa, 'Autenticando o Acesso...'); Request_mapa.free; if (frmMapaCacic.XML_RetornaValor('STATUS', strRetorno)='OK') then Begin + str_local_Aux := trim(frmMapaCacic.DeCrypt(frmMapaCacic.XML_RetornaValor('TE_VERSAO_MAPA',strRetorno))); + if (str_local_Aux <> '') then + Begin + MessageDLG(#13#10#13#10+'ATENÇÃO! Foi disponibilizada a versão "'+str_local_Aux+'".'+#13#10#13#10#13#10+'Efetue o download acessando http://www-cacic, na opção Repositório.'+#13#10#13#10,mtInformation,[mbOK],0); + btCancela.Click; + End; + str_local_Aux := trim(frmMapaCacic.DeCrypt(frmMapaCacic.XML_RetornaValor('ID_USUARIO',strRetorno))); if (str_local_Aux <> '') then Begin @@ -138,9 +143,10 @@ end; procedure TfrmAcesso.FormCreate(Sender: TObject); begin - frmAcesso.lbVersao.Caption := 'v: ' + frmMapaCacic.GetVersionInfo(ParamStr(0)); + intPausaPadrao := 3000; //(3 mil milisegundos = 3 segundos) + frmAcesso.lbVersao.Caption := 'Versão: ' + frmMapaCacic.GetVersionInfo(ParamStr(0)); frmMapaCacic.tStringsCipherOpened := frmMapaCacic.CipherOpen(frmMapaCacic.strDatFileName); - frmMapaCacic.lbNomeServidorWEB.Caption := frmMapaCacic.GetValorDatMemoria('Configs.EnderecoServidor', frmMapaCacic.tStringsCipherOpened); + frmMapaCacic.lbNomeServidorWEB.Caption := 'Servidor: '+frmMapaCacic.GetValorDatMemoria('Configs.EnderecoServidor', frmMapaCacic.tStringsCipherOpened); frmMapaCacic.lbMensagens.Caption := 'Entrada de Dados para Autenticação no Módulo Gerente WEB Cacic'; if (frmMapaCacic.GetValorDatMemoria('TcpIp.TE_NODE_ADDRESS' , frmMapaCacic.tStringsCipherOpened)='') then Begin @@ -188,14 +194,14 @@ end; procedure TfrmAcesso.FormActivate(Sender: TObject); var strAux : String; begin - strAux := frmMapaCacic.GetValorDatMemoria('Configs.EnderecoServidor', frmMapaCacic.tStringsCipherOpened); + strAux := 'Servidor: ' + frmMapaCacic.GetValorDatMemoria('Configs.EnderecoServidor', frmMapaCacic.tStringsCipherOpened); if not (strAux = '') then Begin frmAcesso.lbNomeServidorWEB.Caption := strAux; End else Begin - frmMapaCacic.Mensagem('Favor verificar a instalação do Cacic.' +#13#10 + 'Não Existe Servidor de Aplicação configurado!',true); + frmMapaCacic.Mensagem('Favor verificar a instalação do Cacic.' +#13#10 + 'Não Existe Servidor de Aplicação configurado!',true,intPausaPadrao); frmMapaCacic.Finalizar(true); End; end; diff --git a/mapa/main_mapa.dfm b/mapa/main_mapa.dfm index a2523aa..714da51 100755 --- a/mapa/main_mapa.dfm +++ b/mapa/main_mapa.dfm @@ -6,12 +6,12 @@ object frmMapaCacic: TfrmMapaCacic Caption = 'MapaCacic - M'#243'dulo Avulso para Coleta de Informa'#231#245'es Patrimoniai' + 's' - ClientHeight = 284 - ClientWidth = 605 + ClientHeight = 316 + ClientWidth = 782 Color = clBtnFace Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText - Font.Height = -11 + Font.Height = -9 Font.Name = 'MS Sans Serif' Font.Style = [] Icon.Data = { @@ -150,10 +150,38 @@ object frmMapaCacic: TfrmMapaCacic OnClose = FormClose PixelsPerInch = 96 TextHeight = 13 + object lbNomeServidorWEB: TLabel + Left = 0 + Top = 303 + Width = 390 + Height = 12 + AutoSize = False + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -9 + Font.Name = 'Arial' + Font.Style = [fsBold] + ParentFont = False + end + object lbVersao: TLabel + Left = 389 + Top = 303 + Width = 390 + Height = 12 + Alignment = taRightJustify + AutoSize = False + Caption = 'v: X.X.X.X' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -9 + Font.Name = 'Arial' + Font.Style = [] + ParentFont = False + end object gbLeiaComAtencao: TGroupBox - Left = 5 + Left = 1 Top = -1 - Width = 596 + Width = 780 Height = 53 Caption = ' Leia com aten'#231#227'o ' Color = clBtnFace @@ -169,7 +197,7 @@ object frmMapaCacic: TfrmMapaCacic object lbLeiaComAtencao: TLabel Left = 5 Top = 14 - Width = 588 + Width = 769 Height = 32 AutoSize = False Caption = @@ -186,11 +214,13 @@ object frmMapaCacic: TfrmMapaCacic end end object gbInformacoesSobreComputador: TGroupBox - Left = 5 + Left = 1 Top = 61 - Width = 596 - Height = 144 - Caption = ' Informa'#231#245'es sobre este computador ' + Width = 780 + Height = 151 + Caption = + 'Informa'#231#245'es sobre localiza'#231#227'o f'#237'sica e patrimonial deste computa' + + 'dor' Font.Charset = DEFAULT_CHARSET Font.Color = clBlue Font.Height = -11 @@ -200,8 +230,8 @@ object frmMapaCacic: TfrmMapaCacic TabOrder = 1 Visible = False object lbEtiqueta1: TLabel - Left = 11 - Top = 17 + Left = 3 + Top = 15 Width = 48 Height = 13 Caption = 'Etiqueta 1' @@ -214,8 +244,8 @@ object frmMapaCacic: TfrmMapaCacic Visible = False end object lbEtiqueta2: TLabel - Left = 185 - Top = 17 + Left = 3 + Top = 105 Width = 48 Height = 13 Caption = 'Etiqueta 2' @@ -228,8 +258,8 @@ object frmMapaCacic: TfrmMapaCacic Visible = False end object lbEtiqueta3: TLabel - Left = 430 - Top = 17 + Left = 341 + Top = 15 Width = 48 Height = 13 Caption = 'Etiqueta 3' @@ -242,8 +272,8 @@ object frmMapaCacic: TfrmMapaCacic Visible = False end object lbEtiqueta4: TLabel - Left = 11 - Top = 57 + Left = 341 + Top = 60 Width = 48 Height = 13 Caption = 'Etiqueta 4' @@ -256,8 +286,8 @@ object frmMapaCacic: TfrmMapaCacic Visible = False end object lbEtiqueta5: TLabel - Left = 185 - Top = 57 + Left = 493 + Top = 60 Width = 48 Height = 13 Caption = 'Etiqueta 5' @@ -270,8 +300,8 @@ object frmMapaCacic: TfrmMapaCacic Visible = False end object lbEtiqueta6: TLabel - Left = 430 - Top = 57 + Left = 645 + Top = 60 Width = 48 Height = 13 Caption = 'Etiqueta 6' @@ -284,8 +314,8 @@ object frmMapaCacic: TfrmMapaCacic Visible = False end object lbEtiqueta7: TLabel - Left = 11 - Top = 98 + Left = 341 + Top = 105 Width = 48 Height = 13 Caption = 'Etiqueta 7' @@ -298,8 +328,8 @@ object frmMapaCacic: TfrmMapaCacic Visible = False end object lbEtiqueta8: TLabel - Left = 185 - Top = 98 + Left = 493 + Top = 105 Width = 48 Height = 13 Caption = 'Etiqueta 8' @@ -312,8 +342,8 @@ object frmMapaCacic: TfrmMapaCacic Visible = False end object lbEtiqueta9: TLabel - Left = 430 - Top = 98 + Left = 645 + Top = 105 Width = 48 Height = 13 Caption = 'Etiqueta 9' @@ -325,10 +355,24 @@ object frmMapaCacic: TfrmMapaCacic ParentFont = False Visible = False end + object lbEtiqueta1a: TLabel + Left = 3 + Top = 60 + Width = 54 + Height = 13 + Caption = 'Etiqueta 1a' + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'MS Sans Serif' + Font.Style = [] + ParentFont = False + Visible = False + end object cb_id_unid_organizacional_nivel1: TComboBox - Left = 9 - Top = 31 - Width = 157 + Left = 3 + Top = 30 + Width = 325 Height = 21 Hint = 'Esse '#233' o texto de ajuda da "Etiqueta 1"' Style = csDropDownList @@ -346,11 +390,12 @@ object frmMapaCacic: TfrmMapaCacic OnChange = cb_id_unid_organizacional_nivel1Change end object cb_id_unid_organizacional_nivel2: TComboBox - Left = 185 - Top = 31 - Width = 226 + Left = 3 + Top = 120 + Width = 325 Height = 21 Style = csDropDownList + Enabled = False Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -11 @@ -364,15 +409,16 @@ object frmMapaCacic: TfrmMapaCacic Visible = False end object ed_te_localizacao_complementar: TEdit - Left = 430 - Top = 31 - Width = 157 - Height = 21 + Left = 341 + Top = 30 + Width = 434 + Height = 22 Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -11 - Font.Name = 'MS Sans Serif' + Font.Name = 'Arial' Font.Style = [] + MaxLength = 100 ParentFont = False ParentShowHint = False ShowHint = True @@ -380,15 +426,16 @@ object frmMapaCacic: TfrmMapaCacic Visible = False end object ed_te_info_patrimonio3: TEdit - Left = 430 - Top = 71 - Width = 155 + Left = 645 + Top = 75 + Width = 130 Height = 21 Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -11 Font.Name = 'MS Sans Serif' Font.Style = [] + MaxLength = 20 ParentFont = False ParentShowHint = False ShowHint = True @@ -396,15 +443,16 @@ object frmMapaCacic: TfrmMapaCacic Visible = False end object ed_te_info_patrimonio1: TEdit - Left = 9 - Top = 71 - Width = 158 + Left = 341 + Top = 75 + Width = 130 Height = 21 Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -11 Font.Name = 'MS Sans Serif' Font.Style = [] + MaxLength = 20 ParentFont = False ParentShowHint = False ShowHint = True @@ -412,15 +460,16 @@ object frmMapaCacic: TfrmMapaCacic Visible = False end object ed_te_info_patrimonio2: TEdit - Left = 185 - Top = 71 - Width = 155 + Left = 493 + Top = 75 + Width = 130 Height = 21 Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -11 Font.Name = 'MS Sans Serif' Font.Style = [] + MaxLength = 20 ParentFont = False ParentShowHint = False ShowHint = True @@ -428,15 +477,16 @@ object frmMapaCacic: TfrmMapaCacic Visible = False end object ed_te_info_patrimonio6: TEdit - Left = 430 - Top = 112 - Width = 155 + Left = 645 + Top = 120 + Width = 130 Height = 21 Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -11 Font.Name = 'MS Sans Serif' Font.Style = [] + MaxLength = 20 ParentFont = False ParentShowHint = False ShowHint = True @@ -444,15 +494,16 @@ object frmMapaCacic: TfrmMapaCacic Visible = False end object ed_te_info_patrimonio4: TEdit - Left = 9 - Top = 112 - Width = 158 + Left = 341 + Top = 120 + Width = 130 Height = 21 Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -11 Font.Name = 'MS Sans Serif' Font.Style = [] + MaxLength = 20 ParentFont = False ParentShowHint = False ShowHint = True @@ -460,25 +511,54 @@ object frmMapaCacic: TfrmMapaCacic Visible = False end object ed_te_info_patrimonio5: TEdit - Left = 185 - Top = 112 - Width = 155 + Left = 493 + Top = 120 + Width = 130 Height = 21 Font.Charset = DEFAULT_CHARSET Font.Color = clWindowText Font.Height = -11 Font.Name = 'MS Sans Serif' Font.Style = [] + MaxLength = 20 ParentFont = False ParentShowHint = False ShowHint = True TabOrder = 7 Visible = False end + object cb_id_unid_organizacional_nivel1a: TComboBox + Left = 3 + Top = 75 + Width = 325 + Height = 22 + Style = csDropDownList + Enabled = False + Font.Charset = DEFAULT_CHARSET + Font.Color = clWindowText + Font.Height = -11 + Font.Name = 'Arial' + Font.Style = [] + ItemHeight = 14 + ParentFont = False + ParentShowHint = False + ShowHint = True + TabOrder = 9 + Visible = False + OnChange = cb_id_unid_organizacional_nivel1aChange + end + object Panel1: TPanel + Left = 333 + Top = 16 + Width = 2 + Height = 125 + Caption = 'Panel1' + TabOrder = 10 + end end object btGravarInformacoes: TButton - Left = 164 - Top = 240 + Left = 251 + Top = 254 Width = 275 Height = 30 Caption = 'Grava e Envia Informa'#231#245'es Patrimoniais' @@ -492,40 +572,17 @@ object frmMapaCacic: TfrmMapaCacic Visible = False OnClick = AtualizaPatrimonio end - object pnVersao: TPanel - Left = 513 - Top = 267 - Width = 90 - Height = 14 - BevelOuter = bvLowered - TabOrder = 3 - object lbVersao: TLabel - Left = 4 - Top = 1 - Width = 82 - Height = 12 - Alignment = taCenter - AutoSize = False - Caption = 'v: X.X.X.X' - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -9 - Font.Name = 'Arial' - Font.Style = [] - ParentFont = False - end - end object pnMensagens: TPanel - Left = 4 - Top = 204 - Width = 596 + Left = 1 + Top = 212 + Width = 779 Height = 22 BevelInner = bvLowered - TabOrder = 4 + TabOrder = 3 object lbMensagens: TLabel Left = 2 Top = 2 - Width = 592 + Width = 775 Height = 18 Align = alClient Alignment = taCenter @@ -538,26 +595,4 @@ object frmMapaCacic: TfrmMapaCacic ParentFont = False end end - object pnNomeServidorWEB: TPanel - Left = 1 - Top = 267 - Width = 90 - Height = 14 - BevelOuter = bvLowered - TabOrder = 5 - object lbNomeServidorWEB: TLabel - Left = 3 - Top = 1 - Width = 83 - Height = 12 - Alignment = taCenter - AutoSize = False - Font.Charset = DEFAULT_CHARSET - Font.Color = clWindowText - Font.Height = -9 - Font.Name = 'Arial' - Font.Style = [fsBold] - ParentFont = False - end - end end diff --git a/mapa/main_mapa.pas b/mapa/main_mapa.pas index a90f42e..cf9f9fc 100755 --- a/mapa/main_mapa.pas +++ b/mapa/main_mapa.pas @@ -43,15 +43,16 @@ uses IniFiles, DCPbase64, ExtCtrls, Graphics, - dialogs; + Dialogs; var strCipherClosed, strCipherOpened, strPathCacic, str_te_so : string; -var boolDebugs, - boolUON2 : boolean; +var intPausaPadrao : integer; + +var boolDebugs : boolean; // Some constants that are dependant on the cipher being used @@ -93,12 +94,13 @@ type ed_te_info_patrimonio4: TEdit; ed_te_info_patrimonio5: TEdit; ed_te_info_patrimonio6: TEdit; - pnVersao: TPanel; - lbVersao: TLabel; pnMensagens: TPanel; lbMensagens: TLabel; - pnNomeServidorWEB: TPanel; + lbEtiqueta1a: TLabel; + cb_id_unid_organizacional_nivel1a: TComboBox; + Panel1: TPanel; lbNomeServidorWEB: TLabel; + lbVersao: TLabel; procedure mapa; procedure Grava_Debugs(strMsg : String); @@ -141,23 +143,27 @@ type Function Rat(OQue: String; Onde: String) : Integer; Function RemoveZerosFimString(Texto : String) : String; function GetValorChaveRegIni(p_SectionName, p_KeyName, p_IniFileName : String) : String; - Function RetornaValorVetorUON1(id1Procurado1 : string) : String; - Function RetornaValorVetorUON2(id1Procurado : string; id2Procurado : string) : String; + Function RetornaValorVetorUON1(id1 : string) : String; + Function RetornaValorVetorUON1a(id1a : string) : String; + Function RetornaValorVetorUON2(id2,idLocal : string) : String; function LetrasDrives: string; function SearchFile(p_Drive,p_File:string) : boolean; procedure GetSubDirs(Folder:string; sList:TStringList); - procedure Mensagem(p_strMsg : String; p_boolAlerta : boolean); + procedure Mensagem(p_strMsg : String; p_boolAlerta : boolean; p_intPausaSegundos : integer); procedure FormActivate(Sender: TObject); + procedure cb_id_unid_organizacional_nivel1aChange(Sender: TObject); private - var_id_unid_organizacional_nivel1, - var_id_unid_organizacional_nivel2, - var_te_localizacao_complementar, - var_te_info_patrimonio1, - var_te_info_patrimonio2, - var_te_info_patrimonio3, - var_te_info_patrimonio4, - var_te_info_patrimonio5, - var_te_info_patrimonio6 : String; + strId_unid_organizacional_nivel1, + strId_unid_organizacional_nivel1a, + strId_unid_organizacional_nivel2, + strId_Local, + strTe_localizacao_complementar, + strTe_info_patrimonio1, + strTe_info_patrimonio2, + strTe_info_patrimonio3, + strTe_info_patrimonio4, + strTe_info_patrimonio5, + strTe_info_patrimonio6 : String; public boolAcessoOK : boolean; strId_usuario, @@ -172,7 +178,7 @@ var implementation -uses acesso; +uses acesso, Math; {$R *.dfm} @@ -185,21 +191,32 @@ type end; TVetorUON1 = array of TRegistroUON1; - TRegistroUON2 = record - id1 : String; - id2 : String; - nm2 : String; + TRegistroUON1a = record + id1 : String; + id1a : String; + nm1a : String; + id_local: String; end; - TVetorUON2 = array of TRegistroUON2; -var VetorUON1 : TVetorUON1; - VetorUON2 : TVetorUON2; + TVetorUON1a = array of TRegistroUON1a; - // Esse array é usado apenas para saber a uon2, após a filtragem pelo uon1 - VetorUON2Filtrado : array of String; + TRegistroUON2 = record + id1a : String; + id2 : String; + nm2 : String; + id_local: String; + end; + TVetorUON2 = array of TRegistroUON2; +var VetorUON1 : TVetorUON1; + VetorUON1a : TVetorUON1a; + VetorUON2 : TVetorUON2; + // Esse array é usado apenas para saber a uon1a, após a filtragem pelo uon1 + VetorUON1aFiltrado : array of String; + // Esse array é usado apenas para saber a uon2, após a filtragem pelo uon1a + VetorUON2Filtrado : array of String; // Baixada de http://www.geocities.com/SiliconValley/Bay/1058/fdelphi.html Function TfrmMapaCacic.Rat(OQue: String; Onde: String) : Integer; @@ -229,7 +246,7 @@ while (Pos >= 1) and not Achou do Result := Pos; end; -procedure TfrmMapaCacic.Mensagem(p_strMsg : String; p_boolAlerta : boolean); +procedure TfrmMapaCacic.Mensagem(p_strMsg : String; p_boolAlerta : boolean; p_intPausaSegundos : integer); Begin if p_boolAlerta then lbMensagens.Font.Color := clRed @@ -239,6 +256,8 @@ Begin lbMensagens.Caption := p_strMsg; log_diario(lbMensagens.Caption); Application.ProcessMessages; + if (p_intPausaSegundos > 0) then + sleep(p_intPausaSegundos); End; procedure TfrmMapaCacic.log_diario(strMsg : String); @@ -418,7 +437,7 @@ begin intClasses := intClasses + 1; End; // for intClasses... except - frmMapaCacic.Mensagem('ERRO! Problema na rotina parse',true); + frmMapaCacic.Mensagem('ERRO! Problema na rotina parse',true,intPausaPadrao); end; end; @@ -444,7 +463,7 @@ End; procedure TfrmMapaCacic.Finalizar(p_pausa:boolean); Begin - Mensagem('Finalizando MapaCacic...',false); + Mensagem('Finalizando MapaCacic...',false,0); CipherClose(strDatFileName, tStringsCipherOpened); Apaga_Temps; @@ -579,7 +598,7 @@ Begin idHTTP1.Free; log_DEBUG('Retorno: "'+Response_CS.DataString+'"'); Except - Mensagem('ERRO! Comunicação impossível com o endereço ' + strEndereco + ': '+Response_CS.DataString,true); + Mensagem('ERRO! Comunicação impossível com o endereço ' + strEndereco + ': '+Response_CS.DataString,true,intPausaPadrao); result := '0'; Exit; end; @@ -588,7 +607,7 @@ Begin Try if (UpperCase(XML_RetornaValor('Status', Response_CS.DataString)) <> 'OK') Then Begin - Mensagem('PROBLEMAS DURANTE A COMUNICAÇÃO',true); + Mensagem('PROBLEMAS DURANTE A COMUNICAÇÃO',true,intPausaPadrao); log_diario('Endereço: ' + strEndereco); log_diario('Mensagem: ' + Response_CS.DataString); result := '0'; @@ -600,7 +619,7 @@ Begin Response_CS.Free; Except Begin - Mensagem('PROBLEMAS DURANTE A COMUNICAÇÃO',true); + Mensagem('PROBLEMAS DURANTE A COMUNICAÇÃO',true,intPausaPadrao); log_diario('Endereço: ' + strEndereco); log_diario('Mensagem: ' + Response_CS.DataString); result := '0'; @@ -990,216 +1009,442 @@ begin else if Trim(strRootKey) = 'HKEY_DYN_DATA' Then Result := HKEY_DYN_DATA; end; -Function TfrmMapaCacic.RetornaValorVetorUON1(id1Procurado1 : string) : String; +Function TfrmMapaCacic.RetornaValorVetorUON1(id1 : string) : String; var I : Integer; begin For I := 0 to (Length(VetorUON1)-1) Do - If (VetorUON1[I].id1 = id1Procurado1) Then Result := VetorUON1[I].nm1; + If (VetorUON1[I].id1 = id1) Then Result := VetorUON1[I].nm1; end; +Function TfrmMapaCacic.RetornaValorVetorUON1a(id1a : string) : String; +var I : Integer; +begin + For I := 0 to (Length(VetorUON1a)-1) Do + If (VetorUON1a[I].id1a = id1a) Then Result := VetorUON1a[I].nm1a; +end; -Function TfrmMapaCacic.RetornaValorVetorUON2(id1Procurado : string; id2Procurado : string) : String; +Function TfrmMapaCacic.RetornaValorVetorUON2(id2, idLocal: string) : String; var I : Integer; begin For I := 0 to (Length(VetorUON2)-1) Do - If (VetorUON2[I].id1 = id1Procurado) and (VetorUON2[I].id2 = id2Procurado) Then Result := VetorUON2[I].nm2; + If (VetorUON2[I].id2 = id2) and + (VetorUON2[I].id_local = idLocal) Then Result := VetorUON2[I].nm2; end; procedure TfrmMapaCacic.RecuperaValoresAnteriores(p_strConfigs : String); begin - Mensagem('Recuperando Valores Anteriores...',false); + Mensagem('Recuperando Valores Anteriores...',false,intPausaPadrao div 3); + + strId_unid_organizacional_nivel1 := GetValorDatMemoria('Patrimonio.id_unid_organizacional_nivel1',tStringsCipherOpened); + if (strId_unid_organizacional_nivel1='') then + strId_unid_organizacional_nivel1 := DeCrypt(XML.XML_RetornaValor('ID_UON1', p_strConfigs)); - var_id_unid_organizacional_nivel1 := GetValorDatMemoria('Patrimonio.id_unid_organizacional_nivel1',tStringsCipherOpened); - if (var_id_unid_organizacional_nivel1='') then var_id_unid_organizacional_nivel1 := DeCrypt(XML.XML_RetornaValor('ID_UON1', p_strConfigs)); + strId_unid_organizacional_nivel1a := GetValorDatMemoria('Patrimonio.id_unid_organizacional_nivel1a',tStringsCipherOpened); + if (strId_unid_organizacional_nivel1a='') then + strId_unid_organizacional_nivel1a := DeCrypt(XML.XML_RetornaValor('ID_UON1a', p_strConfigs)); - var_id_unid_organizacional_nivel2 := GetValorDatMemoria('Patrimonio.id_unid_organizacional_nivel2',tStringsCipherOpened); - if (var_id_unid_organizacional_nivel2='') then var_id_unid_organizacional_nivel2 := DeCrypt(XML.XML_RetornaValor('ID_UON2', p_strConfigs)); + strId_unid_organizacional_nivel2 := GetValorDatMemoria('Patrimonio.id_unid_organizacional_nivel2',tStringsCipherOpened); + if (strId_unid_organizacional_nivel2='') then + strId_unid_organizacional_nivel2 := DeCrypt(XML.XML_RetornaValor('ID_UON2', p_strConfigs)); + + strId_Local := GetValorDatMemoria('Patrimonio.id_local',tStringsCipherOpened); + if (strId_Local='') then + strId_Local := DeCrypt(XML.XML_RetornaValor('ID_LOCAL', p_strConfigs)); Try - cb_id_unid_organizacional_nivel1.ItemIndex := cb_id_unid_organizacional_nivel1.Items.IndexOf(RetornaValorVetorUON1(var_id_unid_organizacional_nivel1)); + cb_id_unid_organizacional_nivel1.ItemIndex := cb_id_unid_organizacional_nivel1.Items.IndexOf(RetornaValorVetorUON1(strId_unid_organizacional_nivel1)); cb_id_unid_organizacional_nivel1Change(Nil); // Para filtrar os valores do combo2 de acordo com o valor selecionado no combo1 - cb_id_unid_organizacional_nivel2.ItemIndex := cb_id_unid_organizacional_nivel2.Items.IndexOf(RetornaValorVetorUON2(var_id_unid_organizacional_nivel1, var_id_unid_organizacional_nivel2)); + cb_id_unid_organizacional_nivel1a.ItemIndex := cb_id_unid_organizacional_nivel1a.Items.IndexOf(RetornaValorVetorUON1(strId_unid_organizacional_nivel1)); Except end; - lbEtiqueta1.Caption := DeCrypt(XML.XML_RetornaValor('te_etiqueta1', p_strConfigs)); + Try + cb_id_unid_organizacional_nivel1a.ItemIndex := cb_id_unid_organizacional_nivel1a.Items.IndexOf(RetornaValorVetorUON1a(strId_unid_organizacional_nivel1a)); + cb_id_unid_organizacional_nivel1aChange(Nil); // Para filtrar os valores do combo3 de acordo com o valor selecionado no combo2 + cb_id_unid_organizacional_nivel2.ItemIndex := cb_id_unid_organizacional_nivel2.Items.IndexOf(RetornaValorVetorUON2(strId_unid_organizacional_nivel2,strId_Local)); + Except + end; + lbEtiqueta1.Caption := DeCrypt(XML.XML_RetornaValor('te_etiqueta1', p_strConfigs)); + lbEtiqueta1a.Caption := DeCrypt(XML.XML_RetornaValor('te_etiqueta1a', p_strConfigs)); - var_te_localizacao_complementar := GetValorDatMemoria('Patrimonio.te_localizacao_complementar',tStringsCipherOpened); - if (var_te_localizacao_complementar='') then var_te_localizacao_complementar := DeCrypt(XML.XML_RetornaValor('TE_LOC_COMPL', p_strConfigs)); + strTe_localizacao_complementar := GetValorDatMemoria('Patrimonio.te_localizacao_complementar',tStringsCipherOpened); + if (strTe_localizacao_complementar='') then strTe_localizacao_complementar := DeCrypt(XML.XML_RetornaValor('TE_LOC_COMPL', p_strConfigs)); // Tentarei buscar informação gravada no Registry - var_te_info_patrimonio1 := GetValorChaveRegEdit('HKEY_LOCAL_MACHINE\SOFTWARE\Dataprev\Patrimonio\te_info_patrimonio1'); - if (var_te_info_patrimonio1='') then + strTe_info_patrimonio1 := GetValorChaveRegEdit('HKEY_LOCAL_MACHINE\SOFTWARE\Dataprev\Patrimonio\te_info_patrimonio1'); + if (strTe_info_patrimonio1='') then Begin - var_te_info_patrimonio1 := GetValorDatMemoria('Patrimonio.te_info_patrimonio1',tStringsCipherOpened); + strTe_info_patrimonio1 := GetValorDatMemoria('Patrimonio.te_info_patrimonio1',tStringsCipherOpened); End; - if (var_te_info_patrimonio1='') then var_te_info_patrimonio1 := DeCrypt(XML.XML_RetornaValor('TE_INFO1', p_strConfigs)); + if (strTe_info_patrimonio1='') then strTe_info_patrimonio1 := DeCrypt(XML.XML_RetornaValor('TE_INFO1', p_strConfigs)); - var_te_info_patrimonio2 := GetValorDatMemoria('Patrimonio.te_info_patrimonio2',tStringsCipherOpened); - if (var_te_info_patrimonio2='') then var_te_info_patrimonio2 := DeCrypt(XML.XML_RetornaValor('TE_INFO2', p_strConfigs)); + strTe_info_patrimonio2 := GetValorDatMemoria('Patrimonio.te_info_patrimonio2',tStringsCipherOpened); + if (strTe_info_patrimonio2='') then strTe_info_patrimonio2 := DeCrypt(XML.XML_RetornaValor('TE_INFO2', p_strConfigs)); - var_te_info_patrimonio3 := GetValorDatMemoria('Patrimonio.te_info_patrimonio3',tStringsCipherOpened); - if (var_te_info_patrimonio3='') then var_te_info_patrimonio3 := DeCrypt(XML.XML_RetornaValor('TE_INFO3', p_strConfigs)); + strTe_info_patrimonio3 := GetValorDatMemoria('Patrimonio.te_info_patrimonio3',tStringsCipherOpened); + if (strTe_info_patrimonio3='') then strTe_info_patrimonio3 := DeCrypt(XML.XML_RetornaValor('TE_INFO3', p_strConfigs)); // Tentarei buscar informação gravada no Registry - var_te_info_patrimonio4 := GetValorChaveRegEdit('HKEY_LOCAL_MACHINE\SOFTWARE\Dataprev\Patrimonio\te_info_patrimonio4'); - if (var_te_info_patrimonio4='') then + strTe_info_patrimonio4 := GetValorChaveRegEdit('HKEY_LOCAL_MACHINE\SOFTWARE\Dataprev\Patrimonio\te_info_patrimonio4'); + if (strTe_info_patrimonio4='') then Begin - var_te_info_patrimonio4 := GetValorDatMemoria('Patrimonio.te_info_patrimonio4',tStringsCipherOpened); + strTe_info_patrimonio4 := GetValorDatMemoria('Patrimonio.te_info_patrimonio4',tStringsCipherOpened); End; - if (var_te_info_patrimonio4='') then var_te_info_patrimonio4 := DeCrypt(XML.XML_RetornaValor('TE_INFO4', p_strConfigs)); + if (strTe_info_patrimonio4='') then strTe_info_patrimonio4 := DeCrypt(XML.XML_RetornaValor('TE_INFO4', p_strConfigs)); - var_te_info_patrimonio5 := GetValorDatMemoria('Patrimonio.te_info_patrimonio5',tStringsCipherOpened); - if (var_te_info_patrimonio5='') then var_te_info_patrimonio5 := DeCrypt(XML.XML_RetornaValor('TE_INFO5', p_strConfigs)); + strTe_info_patrimonio5 := GetValorDatMemoria('Patrimonio.te_info_patrimonio5',tStringsCipherOpened); + if (strTe_info_patrimonio5='') then strTe_info_patrimonio5 := DeCrypt(XML.XML_RetornaValor('TE_INFO5', p_strConfigs)); - var_te_info_patrimonio6 := GetValorDatMemoria('Patrimonio.te_info_patrimonio6',tStringsCipherOpened); - if (var_te_info_patrimonio6='') then var_te_info_patrimonio6 := DeCrypt(XML.XML_RetornaValor('TE_INFO6', p_strConfigs)); + strTe_info_patrimonio6 := GetValorDatMemoria('Patrimonio.te_info_patrimonio6',tStringsCipherOpened); + if (strTe_info_patrimonio6='') then strTe_info_patrimonio6 := DeCrypt(XML.XML_RetornaValor('TE_INFO6', p_strConfigs)); end; procedure TfrmMapaCacic.MontaCombos(p_strConfigs : String); var Parser : TXmlParser; i : integer; - v_Tag : boolean; + strAux, + strAux1, + strTagName, + strItemName : string; begin - Mensagem('Montando Listas para Seleção de U.O. Nível 1 e U.O. Nível 2...',false); + Mensagem('Montando Listas para Seleção de Unidades Organizacionais...',false,intPausaPadrao div 3); Parser := TXmlParser.Create; Parser.Normalize := True; Parser.LoadFromBuffer(PAnsiChar(p_strConfigs)); + log_DEBUG('p_strConfigs: '+p_strConfigs); Parser.StartScan; i := -1; - v_Tag := false; - While Parser.Scan and (UpperCase(Parser.CurName) <> 'IT2') DO - Begin - if ((Parser.CurPartType = ptStartTag) and (UpperCase(Parser.CurName) = 'IT1')) Then - Begin - v_Tag := true; + strItemName := ''; + strTagName := ''; + While Parser.Scan DO + Begin + strItemName := UpperCase(Parser.CurName); + if (Parser.CurPartType = ptStartTag) and (strItemName = 'IT1') Then + Begin i := i + 1; SetLength(VetorUON1, i + 1); // Aumento o tamanho da matriz dinamicamente de acordo com o número de itens recebidos. - end - else if (Parser.CurPartType in [ptContent, ptCData]) and v_Tag Then - if (UpperCase(Parser.CurName) = 'ID1') then VetorUON1[i].id1 := DeCrypt(Parser.CurContent) - else if (UpperCase(Parser.CurName) = 'NM1') then VetorUON1[i].nm1 := DeCrypt(Parser.CurContent); - end; + strTagName := 'IT1'; + end + else if (Parser.CurPartType = ptEndTag) and (strItemName = 'IT1') then + strTagName := '' + else if (Parser.CurPartType in [ptContent, ptCData]) and (strTagName='IT1')Then + Begin + strAux1 := DeCrypt(Parser.CurContent); + if (strItemName = 'ID1') then + Begin + VetorUON1[i].id1 := strAux1; + log_DEBUG('Gravei VetorUON1.id1: "'+strAux1+'"'); + End + else if (strItemName = 'NM1') then + Begin + VetorUON1[i].nm1 := strAux1; + log_DEBUG('Gravei VetorUON1.nm1: "'+strAux1+'"'); + End; + End; + End; // Código para montar o combo 2 Parser.StartScan; - v_Tag := false; + strTagName := ''; + strAux1 := ''; i := -1; While Parser.Scan DO - Begin - if ((Parser.CurPartType = ptStartTag) and (UpperCase(Parser.CurName) = 'IT2')) Then + Begin + strItemName := UpperCase(Parser.CurName); + if (Parser.CurPartType = ptStartTag) and (strItemName = 'IT1A') Then Begin - v_Tag := TRUE; - i := i + 1; - SetLength(VetorUON2, i + 1); // Aumento o tamanho da matriz dinamicamente de acordo com o número de itens recebidos. + i := i + 1; + SetLength(VetorUON1a, i + 1); // Aumento o tamanho da matriz dinamicamente de acordo com o número de itens recebidos. + strTagName := 'IT1A'; end - else if (Parser.CurPartType in [ptContent, ptCData]) and v_Tag Then - Begin - boolUON2 := true; - if (UpperCase(Parser.CurName) = 'ID1') then - VetorUON2[i].id1 := DeCrypt(Parser.CurContent) - else if (UpperCase(Parser.CurName) = 'ID2') then - VetorUON2[i].id2 := DeCrypt(Parser.CurContent) - else if (UpperCase(Parser.CurName) = 'NM2') then - VetorUON2[i].nm2 := DeCrypt(Parser.CurContent); - End; - end; + else if (Parser.CurPartType = ptEndTag) and (strItemName = 'IT1A') then + strTagName := '' + else if (Parser.CurPartType in [ptContent, ptCData]) and (strTagName='IT1A')Then + Begin + strAux1 := DeCrypt(Parser.CurContent); + if (strItemName = 'ID1') then + Begin + VetorUON1a[i].id1 := strAux1; + log_DEBUG('Gravei VetorUON1a.id1: "'+strAux1+'"'); + End + else if (strItemName = 'SG_LOC') then + Begin + strAux := ' ('+strAux1 + ')'; + End + else if (strItemName = 'ID1A') then + Begin + VetorUON1a[i].id1a := strAux1; + log_DEBUG('Gravei VetorUON1a.id1a: "'+strAux1+'"'); + End + else if (strItemName = 'NM1A') then + Begin + VetorUON1a[i].nm1a := strAux1+strAux; + log_DEBUG('Gravei VetorUON1a.nm1a: "'+strAux1+strAux+'"'); + End + else if (strItemName = 'ID_LOCAL') then + Begin + VetorUON1a[i].id_local := strAux1; + log_DEBUG('Gravei VetorUON1a.id_local: "'+strAux1+'"'); + End; + + End; + end; + + // Código para montar o combo 3 + Parser.StartScan; + strTagName := ''; + i := -1; + While Parser.Scan DO + Begin + strItemName := UpperCase(Parser.CurName); + if (Parser.CurPartType = ptStartTag) and (strItemName = 'IT2') Then + Begin + i := i + 1; + SetLength(VetorUON2, i + 1); // Aumento o tamanho da matriz dinamicamente de acordo com o número de itens recebidos. + strTagName := 'IT2'; + end + else if (Parser.CurPartType = ptEndTag) and (strItemName = 'IT2') then + strTagName := '' + else if (Parser.CurPartType in [ptContent, ptCData]) and (strTagName='IT2')Then + Begin + strAux1 := DeCrypt(Parser.CurContent); + if (strItemName = 'ID1A') then + Begin + VetorUON2[i].id1a := strAux1; + log_DEBUG('Gravei VetorUON2.id1a: "'+strAux1+'"'); + End + else if (strItemName = 'ID2') then + Begin + VetorUON2[i].id2 := strAux1; + log_DEBUG('Gravei VetorUON2.id2: "'+strAux1+'"'); + End + else if (strItemName = 'NM2') then + Begin + VetorUON2[i].nm2 := strAux1; + log_DEBUG('Gravei VetorUON2.nm2: "'+strAux1+'"'); + End + else if (strItemName = 'ID_LOCAL') then + Begin + VetorUON2[i].id_local := strAux1; + log_DEBUG('Gravei VetorUON2.id_local: "'+strAux1+'"'); + End; + + End; + end; Parser.Free; - // Como os itens do combo1 nunca mudam durante a execução do programa (ao contrario do combo2), posso colocar o seu preenchimento aqui mesmo. + // Como os itens do combo1 nunca mudam durante a execução do programa (ao contrario dos combo2 e 3), posso colocar o seu preenchimento aqui mesmo. cb_id_unid_organizacional_nivel1.Items.Clear; For i := 0 to Length(VetorUON1) - 1 Do cb_id_unid_organizacional_nivel1.Items.Add(VetorUON1[i].nm1); + + if (Length(VetorUON1) = 0) then + Begin + frmMapaCacic.Mensagem('ATENÇÃO! Verifique se esta subrede foi cadastrada no CACIC.',true,intPausaPadrao * 2); + Finalizar(true); + End; + + For i := 0 to Length(VetorUON1) - 1 Do + Begin + Log_DEBUG('VetorUON1['+IntToStr(i)+'].id1='+VetorUON1[i].id1); + Log_DEBUG('VetorUON1['+IntToStr(i)+'].nm1='+VetorUON1[i].nm1); + End; + + For i := 0 to Length(VetorUON1a) - 1 Do + Begin + Log_DEBUG('VetorUON1a['+IntToStr(i)+'].id1='+VetorUON1a[i].id1); + Log_DEBUG('VetorUON1a['+IntToStr(i)+'].id1a='+VetorUON1a[i].id1a); + Log_DEBUG('VetorUON1a['+IntToStr(i)+'].nm1a='+VetorUON1a[i].nm1a); + Log_DEBUG('VetorUON1a['+IntToStr(i)+'].id_local='+VetorUON1a[i].id_local); + End; + + For i := 0 to Length(VetorUON2) - 1 Do + Begin + Log_DEBUG('VetorUON2['+IntToStr(i)+'].id1a='+VetorUON2[i].id1a); + Log_DEBUG('VetorUON2['+IntToStr(i)+'].id2='+VetorUON2[i].id2); + Log_DEBUG('VetorUON2['+IntToStr(i)+'].nm2='+VetorUON2[i].nm2); + Log_DEBUG('VetorUON2['+IntToStr(i)+'].id_local='+VetorUON2[i].id_local); + End; end; procedure TfrmMapaCacic.cb_id_unid_organizacional_nivel1Change(Sender: TObject); var i, j: Word; - strAux : String; + strIdUON1 : String; begin - if boolUON2 then - Begin + log_DEBUG('Nível 1 CHANGE'); // Filtro os itens do combo2, de acordo com o item selecionado no combo1 - strAux := VetorUON1[cb_id_unid_organizacional_nivel1.ItemIndex].id1; + strIdUON1 := VetorUON1[cb_id_unid_organizacional_nivel1.ItemIndex].id1; + cb_id_unid_organizacional_nivel1a.Items.Clear; cb_id_unid_organizacional_nivel2.Items.Clear; + cb_id_unid_organizacional_nivel1a.Enabled := false; + cb_id_unid_organizacional_nivel2.Enabled := false; + SetLength(VetorUON1aFiltrado, 0); + + log_DEBUG('Tamanho de VetorUON1..: '+IntToStr(Length(VetorUON1))); + log_DEBUG('ItemIndex de cb_nivel1: '+IntToStr(cb_id_unid_organizacional_nivel1.ItemIndex)); + log_DEBUG('Tamanho de VetorUON1a.: '+IntToStr(Length(VetorUON1a))); + For i := 0 to Length(VetorUON1a) - 1 Do + Begin + Try + if VetorUON1a[i].id1 = strIdUON1 then + Begin + log_DEBUG('Add em cb_nivel1a: '+VetorUON1a[i].nm1a); + cb_id_unid_organizacional_nivel1a.Items.Add(VetorUON1a[i].nm1a); + j := Length(VetorUON1aFiltrado); + SetLength(VetorUON1aFiltrado, j + 1); + VetorUON1aFiltrado[j] := VetorUON1a[i].id1a + '#' +VetorUON1a[i].id_local; + log_DEBUG('VetorUON1aFiltrado['+IntToStr(j)+']= '+VetorUON1aFiltrado[j]); + end; + Except + End; + end; + if (cb_id_unid_organizacional_nivel1a.Items.Count > 0) then + Begin + cb_id_unid_organizacional_nivel1a.Enabled := true; + cb_id_unid_organizacional_nivel1a.ItemIndex := 0; + log_DEBUG('Provocando CHANGE em nivel1a'); + cb_id_unid_organizacional_nivel1aChange(nil); + End; +end; + +procedure TfrmMapaCacic.cb_id_unid_organizacional_nivel1aChange( + Sender: TObject); +var i, j: Word; + strIdUON1a, + strIdLocal : String; + intAux : integer; + tstrAux : TStrings; +begin + log_DEBUG('Nível 1a CHANGE'); + // Filtro os itens do combo2, de acordo com o item selecionado no combo1 + //intAux := IfThen(cb_id_unid_organizacional_nivel1a.Items.Count > 1,cb_id_unid_organizacional_nivel1a.ItemIndex+1,0); + intAux := cb_id_unid_organizacional_nivel1a.ItemIndex; + Log_debug('cb_id_unid_organizacional_nivel1a.ItemIndex = '+intToStr(cb_id_unid_organizacional_nivel1a.ItemIndex)); + + tstrAux := TStrings.Create; + tstrAux := Explode(VetorUON1aFiltrado[cb_id_unid_organizacional_nivel1a.ItemIndex],'#'); + + strIdUON1a := tstrAux[0]; + strIdLocal := tstrAux[1]; + + Log_debug('strIdLocal = '+strIdLocal); + cb_id_unid_organizacional_nivel2.Items.Clear; + cb_id_unid_organizacional_nivel2.Enabled := false; SetLength(VetorUON2Filtrado, 0); + log_DEBUG('Tamanho de VetorUON1a..: '+IntToStr(Length(VetorUON1a))); + log_DEBUG('ItemIndex de cb_nivel1a: '+IntToStr(cb_id_unid_organizacional_nivel1a.ItemIndex)); + log_DEBUG('Tamanho de VetorUON2...: '+IntToStr(Length(VetorUON2))); + For i := 0 to Length(VetorUON2) - 1 Do Begin Try - if VetorUON2[i].id1 = strAux then + if (VetorUON2[i].id1a = strIdUON1a) and + (VetorUON2[i].id_local = strIdLocal) then Begin + log_DEBUG('Add em cb_nivel2: '+VetorUON2[i].nm2); cb_id_unid_organizacional_nivel2.Items.Add(VetorUON2[i].nm2); j := Length(VetorUON2Filtrado); SetLength(VetorUON2Filtrado, j + 1); - VetorUON2Filtrado[j] := VetorUON2[i].id2; + VetorUON2Filtrado[j] := VetorUON2[i].id2 + '#' + VetorUON2[i].id_local; + log_DEBUG('VetorUON2Filtrado['+IntToStr(j)+']= '+VetorUON2Filtrado[j]); end; Except End; end; - End - else - Mensagem('ATENÇÃO! Não Existe '+frmMapaCacic.lbEtiqueta2.Caption+' Associado a '+VetorUON1[cb_id_unid_organizacional_nivel1.ItemIndex].nm1+'. Procure um supervisor do sistema.',true); + if (cb_id_unid_organizacional_nivel2.Items.Count > 0) then + Begin + cb_id_unid_organizacional_nivel2.Enabled := true; + cb_id_unid_organizacional_nivel2.ItemIndex := 0; + End; end; procedure TfrmMapaCacic.AtualizaPatrimonio(Sender: TObject); -var strAux1, - strAux2, - strRetorno : String; - Request_mapa : TStringList; +var strIdUON1, + strIdUON1a, + strIdUON2, + strIdLocal, + strRetorno : String; + tstrListAux : TStringList; + tstrAux : TStrings; begin + tstrAux := TStrings.Create; + tstrAux := explode(VetorUON2Filtrado[cb_id_unid_organizacional_nivel2.ItemIndex],'#'); + Try + strIdUON1 := VetorUON1[cb_id_unid_organizacional_nivel1.ItemIndex].id1; + strIdUON2 := tstrAux[0]; + strIdLocal := tstrAux[1]; + Except + end; + + tstrAux := explode(VetorUON1aFiltrado[cb_id_unid_organizacional_nivel1a.ItemIndex],'#'); Try - strAux1 := VetorUON1[cb_id_unid_organizacional_nivel1.ItemIndex].id1; - strAux2 := VetorUON2Filtrado[cb_id_unid_organizacional_nivel2.ItemIndex]; + strIdUON1a := tstrAux[0]; Except end; + + tstrAux.Free; + // Assim, o envio será incondicional! - 01/12/2006 - Anderson Peterle -// if (strAux1 <> var_id_unid_organizacional_nivel1) or -// (strAux2 <> var_id_unid_organizacional_nivel2) or -// (ed_te_localizacao_complementar.Text <> var_te_localizacao_complementar) or -// (ed_te_info_patrimonio1.Text <> var_te_info_patrimonio1) or -// (ed_te_info_patrimonio2.Text <> var_te_info_patrimonio2) or -// (ed_te_info_patrimonio3.Text <> var_te_info_patrimonio3) or -// (ed_te_info_patrimonio4.Text <> var_te_info_patrimonio4) or -// (ed_te_info_patrimonio5.Text <> var_te_info_patrimonio5) or -// (ed_te_info_patrimonio6.Text <> var_te_info_patrimonio6) then +// if (strAux1 <> strId_unid_organizacional_nivel1) or +// (strAux2 <> strId_unid_organizacional_nivel2) or +// (ed_te_localizacao_complementar.Text <> strTe_localizacao_complementar) or +// (ed_te_info_patrimonio1.Text <> strTe_info_patrimonio1) or +// (ed_te_info_patrimonio2.Text <> strTe_info_patrimonio2) or +// (ed_te_info_patrimonio3.Text <> strTe_info_patrimonio3) or +// (ed_te_info_patrimonio4.Text <> strTe_info_patrimonio4) or +// (ed_te_info_patrimonio5.Text <> strTe_info_patrimonio5) or +// (ed_te_info_patrimonio6.Text <> strTe_info_patrimonio6) then // begin - Mensagem('Enviando Informações Coletadas ao Banco de Dados...',false); + Mensagem('Enviando Informações Coletadas ao Banco de Dados...',false,intPausaPadrao div 3); // Envio dos Dados Coletados ao Banco de Dados - Request_mapa := TStringList.Create; - Request_mapa.Values['te_node_address'] := frmMapaCacic.EnCrypt(frmMapaCacic.GetValorDatMemoria('TcpIp.TE_NODE_ADDRESS' , frmMapaCacic.tStringsCipherOpened)); - Request_mapa.Values['id_so'] := frmMapaCacic.EnCrypt(frmMapaCacic.GetValorDatMemoria('Configs.ID_SO' , frmMapaCacic.tStringsCipherOpened)); - Request_mapa.Values['te_so'] := frmMapaCacic.EnCrypt(str_te_so); - Request_mapa.Values['id_ip_rede'] := frmMapaCacic.EnCrypt(frmMapaCacic.GetValorDatMemoria('TcpIp.ID_IP_REDE' , frmMapaCacic.tStringsCipherOpened)); - Request_mapa.Values['te_ip'] := frmMapaCacic.EnCrypt(frmMapaCacic.GetValorDatMemoria('TcpIp.TE_IP' , frmMapaCacic.tStringsCipherOpened)); - Request_mapa.Values['te_nome_computador'] := frmMapaCacic.EnCrypt(frmMapaCacic.GetValorDatMemoria('TcpIp.TE_NOME_COMPUTADOR' , frmMapaCacic.tStringsCipherOpened)); - Request_mapa.Values['te_workgroup'] := frmMapaCacic.EnCrypt(frmMapaCacic.GetValorDatMemoria('TcpIp.TE_WORKGROUP' , frmMapaCacic.tStringsCipherOpened)); - Request_mapa.Values['id_usuario'] := frmMapaCacic.EnCrypt(frmMapaCacic.strId_usuario); - - Request_mapa.Values['id_unid_organizacional_nivel1'] := frmMapaCacic.EnCrypt(strAux1); - Request_mapa.Values['id_unid_organizacional_nivel2'] := frmMapaCacic.EnCrypt(strAux2); - Request_mapa.Values['te_localizacao_complementar' ] := frmMapaCacic.EnCrypt(ed_te_localizacao_complementar.Text); - Request_mapa.Values['te_info_patrimonio1' ] := frmMapaCacic.EnCrypt(ed_te_info_patrimonio1.Text); - Request_mapa.Values['te_info_patrimonio2' ] := frmMapaCacic.EnCrypt(ed_te_info_patrimonio2.Text); - Request_mapa.Values['te_info_patrimonio3' ] := frmMapaCacic.EnCrypt(ed_te_info_patrimonio3.Text); - Request_mapa.Values['te_info_patrimonio4' ] := frmMapaCacic.EnCrypt(ed_te_info_patrimonio4.Text); - Request_mapa.Values['te_info_patrimonio5' ] := frmMapaCacic.EnCrypt(ed_te_info_patrimonio5.Text); - Request_mapa.Values['te_info_patrimonio6' ] := frmMapaCacic.EnCrypt(ed_te_info_patrimonio6.Text); - - strRetorno := frmMapaCacic.ComunicaServidor('mapa_set_patrimonio.php', Request_mapa, ''); - Request_mapa.Free; + tstrListAux := TStringList.Create; + tstrListAux.Values['te_node_address'] := frmMapaCacic.EnCrypt(frmMapaCacic.GetValorDatMemoria('TcpIp.TE_NODE_ADDRESS' , frmMapaCacic.tStringsCipherOpened)); + tstrListAux.Values['id_so'] := frmMapaCacic.EnCrypt(frmMapaCacic.GetValorDatMemoria('Configs.ID_SO' , frmMapaCacic.tStringsCipherOpened)); + tstrListAux.Values['te_so'] := frmMapaCacic.EnCrypt(str_te_so); + tstrListAux.Values['id_ip_rede'] := frmMapaCacic.EnCrypt(frmMapaCacic.GetValorDatMemoria('TcpIp.ID_IP_REDE' , frmMapaCacic.tStringsCipherOpened)); + tstrListAux.Values['te_ip'] := frmMapaCacic.EnCrypt(frmMapaCacic.GetValorDatMemoria('TcpIp.TE_IP' , frmMapaCacic.tStringsCipherOpened)); + tstrListAux.Values['te_nome_computador'] := frmMapaCacic.EnCrypt(frmMapaCacic.GetValorDatMemoria('TcpIp.TE_NOME_COMPUTADOR' , frmMapaCacic.tStringsCipherOpened)); + tstrListAux.Values['te_workgroup'] := frmMapaCacic.EnCrypt(frmMapaCacic.GetValorDatMemoria('TcpIp.TE_WORKGROUP' , frmMapaCacic.tStringsCipherOpened)); + tstrListAux.Values['id_usuario'] := frmMapaCacic.EnCrypt(frmMapaCacic.strId_usuario); + + tstrListAux.Values['id_unid_organizacional_nivel1'] := frmMapaCacic.EnCrypt(strIdUON1); + tstrListAux.Values['id_unid_organizacional_nivel1a']:= frmMapaCacic.EnCrypt(strIdUON1A); + tstrListAux.Values['id_unid_organizacional_nivel2'] := frmMapaCacic.EnCrypt(strIdUON2); + tstrListAux.Values['te_localizacao_complementar' ] := frmMapaCacic.EnCrypt(ed_te_localizacao_complementar.Text); + tstrListAux.Values['te_info_patrimonio1' ] := frmMapaCacic.EnCrypt(ed_te_info_patrimonio1.Text); + tstrListAux.Values['te_info_patrimonio2' ] := frmMapaCacic.EnCrypt(ed_te_info_patrimonio2.Text); + tstrListAux.Values['te_info_patrimonio3' ] := frmMapaCacic.EnCrypt(ed_te_info_patrimonio3.Text); + tstrListAux.Values['te_info_patrimonio4' ] := frmMapaCacic.EnCrypt(ed_te_info_patrimonio4.Text); + tstrListAux.Values['te_info_patrimonio5' ] := frmMapaCacic.EnCrypt(ed_te_info_patrimonio5.Text); + tstrListAux.Values['te_info_patrimonio6' ] := frmMapaCacic.EnCrypt(ed_te_info_patrimonio6.Text); + + log_DEBUG('Informações para contato com mapa_set_patrimonio:'); + log_DEBUG('te_node_address: '+tstrListAux.Values['te_node_address']); + log_DEBUG('id_so: '+tstrListAux.Values['id_so']); + log_DEBUG('te_so: '+tstrListAux.Values['te_so']); + log_DEBUG('id_ip_rede: '+tstrListAux.Values['id_ip_rede']); + log_DEBUG('te_ip: '+tstrListAux.Values['te_ip']); + log_DEBUG('te_nome_computador: '+tstrListAux.Values['te_nome_computador']); + log_DEBUG('te_workgroup: '+tstrListAux.Values['te_workgroup']); + + strRetorno := frmMapaCacic.ComunicaServidor('mapa_set_patrimonio.php', tstrListAux, ''); + tstrListAux.Free; if not (frmMapaCacic.XML_RetornaValor('STATUS', strRetorno)='OK') then - Mensagem('ATENÇÃO: PROBLEMAS NO ENVIO DAS INFORMAÇÕES COLETADAS AO BANCO DE DADOS...',true); + Mensagem('ATENÇÃO: PROBLEMAS NO ENVIO DAS INFORMAÇÕES COLETADAS AO BANCO DE DADOS...',true,intPausaPadrao); // else // Begin - Mensagem('Salvando Informações Coletadas em Base Local...',false); - SetValorDatMemoria('Patrimonio.id_unid_organizacional_nivel1', strAux1, tStringsCipherOpened); - SetValorDatMemoria('Patrimonio.id_unid_organizacional_nivel2', strAux2, tStringsCipherOpened); + Mensagem('Salvando Informações Coletadas em Base Local...',false,intPausaPadrao div 3); + SetValorDatMemoria('Patrimonio.id_unid_organizacional_nivel1', strIdUON1, tStringsCipherOpened); + SetValorDatMemoria('Patrimonio.id_unid_organizacional_nivel1a', strIdUON1a, tStringsCipherOpened); + SetValorDatMemoria('Patrimonio.id_unid_organizacional_nivel2' , strIdUON2, tStringsCipherOpened); + SetValorDatMemoria('Patrimonio.id_local' , strIdLocal, tStringsCipherOpened); SetValorDatMemoria('Patrimonio.te_localizacao_complementar' , ed_te_localizacao_complementar.Text, tStringsCipherOpened); SetValorDatMemoria('Patrimonio.te_info_patrimonio1' , ed_te_info_patrimonio1.Text, tStringsCipherOpened); SetValorChaveRegEdit('HKEY_LOCAL_MACHINE\SOFTWARE\Dataprev\Patrimonio\te_info_patrimonio1', ed_te_info_patrimonio1.Text); @@ -1219,13 +1464,18 @@ end; procedure TfrmMapaCacic.MontaInterface(p_strConfigs : String); Begin - Mensagem('Montando Interface para Coleta de Informações...',false); + Mensagem('Montando Interface para Coleta de Informações...',false,intPausaPadrao div 3); lbEtiqueta1.Caption := DeCrypt(XML.XML_RetornaValor('te_etiqueta1', p_strConfigs)); lbEtiqueta1.Visible := true; cb_id_unid_organizacional_nivel1.Hint := DeCrypt(XML.XML_RetornaValor('te_help_etiqueta1', p_strConfigs)); cb_id_unid_organizacional_nivel1.Visible := true; + lbEtiqueta1a.Caption := DeCrypt(XML.XML_RetornaValor('te_etiqueta1a', p_strConfigs)); + lbEtiqueta1a.Visible := true; + cb_id_unid_organizacional_nivel1a.Hint := DeCrypt(XML.XML_RetornaValor('te_help_etiqueta1a', p_strConfigs)); + cb_id_unid_organizacional_nivel1a.Visible := true; + lbEtiqueta2.Caption := DeCrypt(XML.XML_RetornaValor('te_etiqueta2', p_strConfigs)); lbEtiqueta2.Visible := true; cb_id_unid_organizacional_nivel2.Hint := DeCrypt(XML.XML_RetornaValor('te_help_etiqueta2', p_strConfigs)); @@ -1233,7 +1483,7 @@ Begin lbEtiqueta3.Caption := DeCrypt(XML.XML_RetornaValor('te_etiqueta3', p_strConfigs)); lbEtiqueta3.Visible := true; - ed_te_localizacao_complementar.Text := var_te_localizacao_complementar; + ed_te_localizacao_complementar.Text := strTe_localizacao_complementar; ed_te_localizacao_complementar.Visible := true; if (DeCrypt(XML.XML_RetornaValor('in_exibir_etiqueta4', p_strConfigs)) = 'S') then @@ -1241,7 +1491,7 @@ Begin lbEtiqueta4.Caption := DeCrypt(XML.XML_RetornaValor('te_etiqueta4', p_strConfigs)); lbEtiqueta4.Visible := true; ed_te_info_patrimonio1.Hint := DeCrypt(XML.XML_RetornaValor('te_help_etiqueta4', p_strConfigs)); - ed_te_info_patrimonio1.Text := var_te_info_patrimonio1; + ed_te_info_patrimonio1.Text := strTe_info_patrimonio1; ed_te_info_patrimonio1.visible := True; end; @@ -1250,7 +1500,7 @@ Begin lbEtiqueta5.Caption := DeCrypt(XML.XML_RetornaValor('te_etiqueta5', p_strConfigs)); lbEtiqueta5.Visible := true; ed_te_info_patrimonio2.Hint := DeCrypt(XML.XML_RetornaValor('te_help_etiqueta5', p_strConfigs)); - ed_te_info_patrimonio2.Text := var_te_info_patrimonio2; + ed_te_info_patrimonio2.Text := strTe_info_patrimonio2; ed_te_info_patrimonio2.visible := True; end; @@ -1259,7 +1509,7 @@ Begin lbEtiqueta6.Caption := DeCrypt(XML.XML_RetornaValor('te_etiqueta6', p_strConfigs)); lbEtiqueta6.Visible := true; ed_te_info_patrimonio3.Hint := DeCrypt(XML.XML_RetornaValor('te_help_etiqueta6', p_strConfigs)); - ed_te_info_patrimonio3.Text := var_te_info_patrimonio3; + ed_te_info_patrimonio3.Text := strTe_info_patrimonio3; ed_te_info_patrimonio3.visible := True; end; @@ -1268,7 +1518,7 @@ Begin lbEtiqueta7.Caption := DeCrypt(XML.XML_RetornaValor('te_etiqueta7', p_strConfigs)); lbEtiqueta7.Visible := true; ed_te_info_patrimonio4.Hint := DeCrypt(XML.XML_RetornaValor('te_help_etiqueta7', p_strConfigs)); - ed_te_info_patrimonio4.Text := var_te_info_patrimonio4; + ed_te_info_patrimonio4.Text := strTe_info_patrimonio4; ed_te_info_patrimonio4.visible := True; end; @@ -1277,7 +1527,7 @@ Begin lbEtiqueta8.Caption := DeCrypt(XML.XML_RetornaValor('te_etiqueta8', p_strConfigs)); lbEtiqueta8.Visible := true; ed_te_info_patrimonio5.Hint := DeCrypt(XML.XML_RetornaValor('te_help_etiqueta8', p_strConfigs)); - ed_te_info_patrimonio5.Text := var_te_info_patrimonio5; + ed_te_info_patrimonio5.Text := strTe_info_patrimonio5; ed_te_info_patrimonio5.visible := True; end; @@ -1286,10 +1536,10 @@ Begin lbEtiqueta9.Caption := DeCrypt(XML.XML_RetornaValor('te_etiqueta9', p_strConfigs)); lbEtiqueta9.Visible := true; ed_te_info_patrimonio6.Hint := DeCrypt(XML.XML_RetornaValor('te_help_etiqueta9', p_strConfigs)); - ed_te_info_patrimonio6.Text := var_te_info_patrimonio6; + ed_te_info_patrimonio6.Text := strTe_info_patrimonio6; ed_te_info_patrimonio6.visible := True; end; - Mensagem('',false); + Mensagem('',false,0); btGravarInformacoes.Visible := true; end; @@ -1482,7 +1732,6 @@ begin strConfigs := GetValorDatMemoria('Patrimonio.Configs', frmMapaCacic.tStringsCipherOpened); gbLeiaComAtencao.Visible := true; gbInformacoesSobreComputador.Visible := true; - boolUON2 := false; // Inicializo com false e torno true quando da montagem da combo de UON2... MontaCombos(strConfigs); RecuperaValoresAnteriores(strConfigs); MontaInterface(strConfigs); @@ -1497,7 +1746,8 @@ var intAux : integer; strRetorno : String; Request_mapa : TStringList; begin - frmMapaCacic.lbVersao.Caption := 'v: ' + frmMapaCacic.GetVersionInfo(ParamStr(0)); + frmMapaCacic.lbVersao.Caption := 'Versão: ' + frmMapaCacic.GetVersionInfo(ParamStr(0)); + log_DEBUG('Versão do MapaCacic: '+frmMapaCacic.lbVersao.Caption); if (GetWinVer > 5) and not IsAdmin then Begin MessageDLG(#13#10+'ATENÇÃO! Essa aplicação requer execução com nível administrativo.',mtError,[mbOK],0); @@ -1547,7 +1797,7 @@ begin else Begin pnMensagens.Visible := true; - Mensagem('Efetuando Comunicação com o Módulo Gerente WEB em "'+GetValorDatMemoria('Configs.EnderecoServidor', tStringsCipherOpened)+'"...',false); + Mensagem('Efetuando Comunicação com o Módulo Gerente WEB em "'+GetValorDatMemoria('Configs.EnderecoServidor', tStringsCipherOpened)+'"...',false,intPausaPadrao div 3); frmAcesso.Free; // Povoamento com dados de configurações da interface patrimonial @@ -1560,18 +1810,20 @@ begin Request_mapa.Values['te_ip'] := frmMapaCacic.EnCrypt(frmMapaCacic.GetValorDatMemoria('TcpIp.TE_IP' , frmMapaCacic.tStringsCipherOpened)); Request_mapa.Values['te_nome_computador']:= frmMapaCacic.EnCrypt(frmMapaCacic.GetValorDatMemoria('TcpIp.TE_NOME_COMPUTADOR', frmMapaCacic.tStringsCipherOpened)); Request_mapa.Values['te_workgroup'] := frmMapaCacic.EnCrypt(frmMapaCacic.GetValorDatMemoria('TcpIp.TE_WORKGROUP' , frmMapaCacic.tStringsCipherOpened)); + Request_mapa.Values['id_usuario'] := frmMapaCacic.EnCrypt(frmMapaCacic.strId_usuario); strRetorno := frmMapaCacic.ComunicaServidor('mapa_get_patrimonio.php', Request_mapa, '.'); + log_DEBUG('Retorno: "'+strRetorno+'"'); + if (frmMapaCacic.XML_RetornaValor('STATUS', strRetorno)='OK') then Begin - Mensagem('Comunicação Efetuada com Sucesso! Salvando Configurações Obtidas...',false); + Mensagem('Comunicação Efetuada com Sucesso! Salvando Configurações Obtidas...',false,intPausaPadrao div 3); frmMapaCacic.SetValorDatMemoria('Patrimonio.Configs', strRetorno, frmMapaCacic.tStringsCipherOpened) End else Begin - Mensagem('PROBLEMAS NA COMUNICAÇÃO COM O MÓDULO GERENTE WEB...',true); - sleep(3); + Mensagem('PROBLEMAS NA COMUNICAÇÃO COM O MÓDULO GERENTE WEB...',true,intPausaPadrao); Finalizar(true); End; @@ -1592,4 +1844,5 @@ begin end; + end. diff --git a/mapa/mapacacic.dof b/mapa/mapacacic.dof index f15e681..7fb8737 100755 --- a/mapa/mapacacic.dof +++ b/mapa/mapacacic.dof @@ -115,7 +115,7 @@ AutoIncBuild=0 MajorVer=1 MinorVer=0 Release=0 -Build=4 +Build=11 Debug=0 PreRelease=0 Special=0 @@ -126,13 +126,13 @@ CodePage=1252 [Version Info Keys] CompanyName=Dataprev-ES FileDescription=MapaCacic - Módulo Avulso para Coleta de Informações Patrimoniais para o Sistema CACIC -FileVersion=1.0.0.4 +FileVersion=1.0.0.11 InternalName= LegalCopyright= LegalTrademarks= OriginalFilename= ProductName= -ProductVersion=1.0.0.4 +ProductVersion=1.0.0.11 Comments=Baseado na Licença GPL(General Public License) [HistoryLists\hlDebugSourcePath] Count=1 diff --git a/mapa/mapacacic.res b/mapa/mapacacic.res index ac5be58..65bc203 100755 Binary files a/mapa/mapacacic.res and b/mapa/mapacacic.res differ diff --git a/mapa/xml.pas b/mapa/xml.pas index 607b626..3361585 100755 --- a/mapa/xml.pas +++ b/mapa/xml.pas @@ -3,7 +3,7 @@ unit XML; interface -Uses LibXmlParser, SysUtils, dialogs; +Uses LibXmlParser, SysUtils; Function XML_RetornaValor(Tag : String; Fonte : String) : String; -- libgit2 0.21.2