Commit 4c2a85c754b2216e0640f11337510c142ed8255f

Authored by anderson.peterle@previdencia.gov.br
1 parent 004d4bae
Exists in master

Adequacoes ao uso de library unica, pequenas correcoes e faxina de codigo.

git-svn-id: http://svn.softwarepublico.gov.br/svn/cacic/cacic/trunk/agente-windows@762 fecfc0c7-e812-0410-ae72-849f08638ee7
cacicservice/CACICsvc.dpr
@@ -18,8 +18,8 @@ program CACICsvc; @@ -18,8 +18,8 @@ program CACICsvc;
18 18
19 uses 19 uses
20 SvcMgr, 20 SvcMgr,
21 - CACICsvcMain in 'CACICsvcMain.pas' {CACICservice: TService};  
22 - 21 + CACICsvcMain in 'CACICsvcMain.pas' {CACICservice: TService},
  22 + CACIC_Library in '..\CACIC_Library.pas';
23 {$R *.RES} 23 {$R *.RES}
24 24
25 begin 25 begin
cacicservice/CACICsvcMain.pas
@@ -18,17 +18,19 @@ unit CACICsvcMain; @@ -18,17 +18,19 @@ unit CACICsvcMain;
18 18
19 interface 19 interface
20 20
21 -uses Windows,  
22 - Messages,  
23 - SysUtils,  
24 - Classes,  
25 - SvcMgr,  
26 - strUtils,  
27 - ExtCtrls;  
28 -  
29 -var strHomeDrive,  
30 - strCacicDir : String;  
31 - boolStarted : boolean; 21 +uses
  22 + Windows,
  23 + Messages,
  24 + SysUtils,
  25 + Classes,
  26 + SvcMgr,
  27 + strUtils,
  28 + ExtCtrls,
  29 + CACIC_Library;
  30 +
  31 +var
  32 + boolStarted : boolean;
  33 + g_oCacic : TCACIC;
32 34
33 type 35 type
34 TCACICservice = class(TService) 36 TCACICservice = class(TService)
@@ -41,9 +43,7 @@ type @@ -41,9 +43,7 @@ type
41 private 43 private
42 44
43 { Internal Start & Stop methods } 45 { Internal Start & Stop methods }
44 - function HomeDrive : string;  
45 function GetValorChaveRegIni(p_Secao, p_Chave, p_File : String): String; 46 function GetValorChaveRegIni(p_Secao, p_Chave, p_File : String): String;
46 - function GetAppPath: String;  
47 procedure doSaveLog(Msg : String); 47 procedure doSaveLog(Msg : String);
48 Procedure WMEndSession(var Msg : TWMEndSession) ; message WM_ENDSESSION; 48 Procedure WMEndSession(var Msg : TWMEndSession) ; message WM_ENDSESSION;
49 procedure ExecutaCACIC; 49 procedure ExecutaCACIC;
@@ -66,6 +66,7 @@ begin @@ -66,6 +66,7 @@ begin
66 inherited; 66 inherited;
67 Application.Free; 67 Application.Free;
68 end; 68 end;
  69 +
69 // Funções Auxiliares 70 // Funções Auxiliares
70 function TCACICservice.GetValorChaveRegIni(p_Secao, p_Chave, p_File : String): String; 71 function TCACICservice.GetValorChaveRegIni(p_Secao, p_Chave, p_File : String): String;
71 //Para buscar do Arquivo INI... 72 //Para buscar do Arquivo INI...
@@ -105,40 +106,11 @@ var @@ -105,40 +106,11 @@ var
105 end; 106 end;
106 end; 107 end;
107 108
108 -function TCACICservice.GetAppPath: String;  
109 -Var  
110 - Test : String;  
111 - Res : Longint;  
112 - CurSize : Longint;  
113 -begin  
114 - CurSize := 1024;  
115 - SetLength(Test, CurSize);  
116 - Res := GetModuleFilename(GetModuleHandle(nil), PChar(test), CurSize);  
117 - If (res > curSize) then  
118 - begin  
119 - CurSize := res + 10;  
120 - SetLength(Test, CurSize);  
121 - Res := GetModuleFilename(GetModuleHandle(nil), PChar(test), CurSize);  
122 - end;  
123 - Setlength(Test, Res);  
124 - test := ExtractFileDir(Test);  
125 - if (test[Length(test)] = '\') or (test[Length(test)]='/') then  
126 - SetLength(Test, Length(test) - 1);  
127 - Result := test;  
128 -end;  
129 -  
130 -function TCACICservice.HomeDrive : string;  
131 -var WinDir : array [0..144] of char;  
132 -begin  
133 - GetWindowsDirectory (WinDir, 144);  
134 - Result := StrPas (WinDir);  
135 -end;  
136 -  
137 procedure TCACICservice.doSaveLog(Msg : String); 109 procedure TCACICservice.doSaveLog(Msg : String);
138 var fLog: textfile; 110 var fLog: textfile;
139 begin 111 begin
140 - AssignFile(fLog, HomeDrive + '\CACICsvc.log');  
141 - if FileExists(HomeDrive + '\CACICsvc.log') then 112 + AssignFile(fLog, g_oCacic.Windows.getWinDir + 'CACICsvc.log');
  113 + if FileExists(g_oCacic.Windows.getWinDir + 'CACICsvc.log') then
142 Append(fLog) 114 Append(fLog)
143 else 115 else
144 Rewrite(fLog); 116 Rewrite(fLog);
@@ -172,6 +144,7 @@ end; @@ -172,6 +144,7 @@ end;
172 144
173 procedure TCACICservice.ServiceStart(Sender: TService; var Started: Boolean); 145 procedure TCACICservice.ServiceStart(Sender: TService; var Started: Boolean);
174 begin 146 begin
  147 + g_oCacic := TCACIC.Create;
175 148
176 Started := true; 149 Started := true;
177 150
@@ -182,36 +155,32 @@ begin @@ -182,36 +155,32 @@ begin
182 155
183 While not Terminated do 156 While not Terminated do
184 Sleep(250); 157 Sleep(250);
185 -  
186 -  
187 end; 158 end;
188 159
189 procedure TCACICservice.ExecutaCACIC; 160 procedure TCACICservice.ExecutaCACIC;
190 Begin 161 Begin
  162 + g_oCacic.setCacicPath(g_oCacic.getHomeDrive + GetValorChaveRegIni('Cacic2', 'cacic_dir', g_oCacic.getWinDir + 'chksis.ini') + '\');
191 163
192 - strHomeDrive := MidStr(HomeDrive,1,3); //x:\  
193 - strCacicDir := strHomeDrive + GetValorChaveRegIni('Cacic2', 'cacic_dir', GetAppPath + '\chksis.ini');  
194 -  
195 - DeleteFile(strCacicDir + '\aguarde_CACIC.txt'); 164 + DeleteFile(g_oCacic.getCacicPath + 'aguarde_CACIC.txt');
196 Sleep(3000); 165 Sleep(3000);
197 166
198 // Se o arquivo indicador de execução não existir... 167 // Se o arquivo indicador de execução não existir...
199 - if not (FileExists(strCacicDir + '\aguarde_CACIC.txt')) then 168 + if not (FileExists(g_oCacic.getCacicPath + 'aguarde_CACIC.txt')) then
200 Begin 169 Begin
201 // Executo o CHKsis, verificando a estrutura do sistema 170 // Executo o CHKsis, verificando a estrutura do sistema
202 Try 171 Try
203 - WinEXEC(PChar(HomeDrive + '\chksis.exe'),sw_HIDE); 172 + WinEXEC(PChar(g_oCacic.getWinDir + 'chksis.exe'),sw_HIDE);
204 Except 173 Except
205 End; 174 End;
206 175
207 - While not (FileExists(strCacicDir + '\cacic2.exe')) do 176 + While not (FileExists(g_oCacic.getCacicPath + 'cacic2.exe')) do
208 Sleep(5000); // Espero 5 segundos... 177 Sleep(5000); // Espero 5 segundos...
209 End; 178 End;
210 179
211 180
212 // Executo o Agente Principal do CACIC 181 // Executo o Agente Principal do CACIC
213 Try 182 Try
214 - WinEXEC(PChar(strCacicDir + '\cacic2.exe'),sw_hide); 183 + WinEXEC(PChar(g_oCacic.getCacicPath + 'cacic2.exe'),sw_hide);
215 Except 184 Except
216 End; 185 End;
217 End; 186 End;
chkcacic/chkcacic.dpr
@@ -27,18 +27,18 @@ const @@ -27,18 +27,18 @@ const
27 CACIC_APP_NAME = 'chkcacic'; 27 CACIC_APP_NAME = 'chkcacic';
28 28
29 var 29 var
30 - oCacic : TCACIC; 30 + g_oCacic : TCACIC;
31 31
32 begin 32 begin
33 - oCacic := TCACIC.Create(); 33 + g_oCacic := TCACIC.Create();
34 34
35 - if( not oCacic.isAppRunning( CACIC_APP_NAME ) ) 35 + if( not g_oCacic.isAppRunning( CACIC_APP_NAME ) )
36 then begin 36 then begin
37 Application.Initialize; 37 Application.Initialize;
38 Application.CreateForm(TForm1, Form1); 38 Application.CreateForm(TForm1, Form1);
39 Application.Run; 39 Application.Run;
40 end; 40 end;
41 41
42 - oCacic.Free(); 42 + g_oCacic.Free();
43 43
44 end. 44 end.
chkcacic/main.pas
@@ -56,71 +56,56 @@ unit main; @@ -56,71 +56,56 @@ unit main;
56 56
57 interface 57 interface
58 58
59 -uses Windows,  
60 - strUtils,  
61 - SysUtils,  
62 - Classes,  
63 - Forms,  
64 - Registry,  
65 - Inifiles,  
66 - idFTPCommon,  
67 - XML,  
68 - LibXmlParser,  
69 - IdHTTP,  
70 - PJVersionInfo,  
71 - Controls,  
72 - StdCtrls,  
73 - IdBaseComponent,  
74 - IdComponent,  
75 - IdTCPConnection,  
76 - IdTCPClient,  
77 - variants,  
78 - DCPcrypt2,  
79 - DCPrijndael,  
80 - DCPbase64,  
81 - NTFileSecurity,  
82 - IdFTP,  
83 - Tlhelp32,  
84 - ExtCtrls,  
85 - CACIC_Library,  
86 - WinSvc,  
87 - dialogs;  
88 -  
89 -var v_ip_serv_cacic,  
90 - v_cacic_dir,  
91 - v_te_instala_frase_sucesso,  
92 - v_te_instala_frase_insucesso,  
93 - v_te_instala_informacoes_extras,  
94 - v_exibe_informacoes,  
95 - v_versao_local,  
96 - v_versao_remota,  
97 - v_CipherKey,  
98 - v_SeparatorKey,  
99 - v_IV,  
100 - v_strCipherClosed,  
101 - v_strCipherOpened,  
102 - v_DatFileName,  
103 - v_retorno,  
104 - v_versao_REM,  
105 - v_versao_LOC,  
106 - v_te_so : String;  
107 -  
108 - v_Debugs : boolean;  
109 -  
110 -var v_tstrCipherOpened : TStrings; 59 +uses
  60 + Windows,
  61 + strUtils,
  62 + SysUtils,
  63 + Classes,
  64 + Forms,
  65 + Registry,
  66 + Inifiles,
  67 + idFTPCommon,
  68 + XML,
  69 + LibXmlParser,
  70 + idHTTP,
  71 + PJVersionInfo,
  72 + Controls,
  73 + StdCtrls,
  74 + IdBaseComponent,
  75 + IdComponent,
  76 + IdTCPConnection,
  77 + IdTCPClient,
  78 + variants,
  79 + NTFileSecurity,
  80 + IdFTP,
  81 + Tlhelp32,
  82 + ExtCtrls,
  83 + CACIC_Library,
  84 + WinSvc,
  85 + dialogs;
111 86
112 var 87 var
113 - g_oCacic: TCACIC; /// Biblioteca CACIC_Library 88 + v_ip_serv_cacic,
  89 + v_te_instala_frase_sucesso,
  90 + v_te_instala_frase_insucesso,
  91 + v_te_instala_informacoes_extras,
  92 + v_exibe_informacoes,
  93 + v_versao_local,
  94 + v_versao_remota,
  95 + v_strCipherClosed,
  96 + v_strCipherOpened,
  97 + v_retorno,
  98 + v_versao_REM,
  99 + v_versao_LOC : String;
114 100
115 -// Constantes a serem usadas pela função IsAdmin...  
116 -const constSECURITY_NT_AUTHORITY: TSIDIdentifierAuthority = (Value: (0, 0, 0, 0, 0, 5));  
117 - constSECURITY_BUILTIN_DOMAIN_RID = $00000020;  
118 - constDOMAIN_ALIAS_RID_ADMINS = $00000220; 101 +var
  102 + v_Debugs : boolean;
119 103
120 -// Some constants that are dependant on the cipher being used  
121 -// Assuming MCRYPT_RIJNDAEL_128 (i.e., 128bit blocksize, 256bit keysize)  
122 -const KeySize = 32; // 32 bytes = 256 bits  
123 - BlockSize = 16; // 16 bytes = 128 bits 104 +var
  105 + v_tstrCipherOpened : TStrings;
  106 +
  107 +var
  108 + g_oCacic: TCACIC; /// Biblioteca CACIC_Library
124 109
125 Procedure chkcacic; 110 Procedure chkcacic;
126 procedure ComunicaInsucesso(strIndicador : String); //2.2.0.32 111 procedure ComunicaInsucesso(strIndicador : String); //2.2.0.32
@@ -135,7 +120,6 @@ procedure Matar(v_dir,v_files: string); // 2.2.0.16 @@ -135,7 +120,6 @@ procedure Matar(v_dir,v_files: string); // 2.2.0.16
135 Procedure MostraFormConfigura; 120 Procedure MostraFormConfigura;
136 121
137 Function ChecaVersoesAgentes(p_strNomeAgente : String) : integer; // 2.2.0.16 122 Function ChecaVersoesAgentes(p_strNomeAgente : String) : integer; // 2.2.0.16
138 -Function Explode(Texto, Separador : String) : TStrings;  
139 Function FindWindowByTitle(WindowTitle: string): Hwnd; 123 Function FindWindowByTitle(WindowTitle: string): Hwnd;
140 Function FTP(p_Host : String; p_Port : String; p_Username : String; p_Password : String; p_PathServer : String; p_File : String; p_Dest : String) : Boolean; 124 Function FTP(p_Host : String; p_Port : String; p_Username : String; p_Password : String; p_PathServer : String; p_File : String; p_Dest : String) : Boolean;
141 function GetFolderDate(Folder: string): TDateTime; 125 function GetFolderDate(Folder: string): TDateTime;
@@ -144,7 +128,6 @@ Function GetRootKey(strRootKey: String): HKEY; @@ -144,7 +128,6 @@ Function GetRootKey(strRootKey: String): HKEY;
144 Function GetValorChaveRegEdit(Chave: String): Variant; 128 Function GetValorChaveRegEdit(Chave: String): Variant;
145 Function GetValorChaveRegIni(p_Secao, p_Chave, p_File : String): String; 129 Function GetValorChaveRegIni(p_Secao, p_Chave, p_File : String): String;
146 Function GetVersionInfo(p_File: string):string; 130 Function GetVersionInfo(p_File: string):string;
147 -Function HomeDrive : string;  
148 Function KillTask(ExeFileName: string): Integer; 131 Function KillTask(ExeFileName: string): Integer;
149 Function ListFileDir(Path: string):string; 132 Function ListFileDir(Path: string):string;
150 function Posso_Rodar_CACIC : boolean; 133 function Posso_Rodar_CACIC : boolean;
@@ -167,8 +150,7 @@ type @@ -167,8 +150,7 @@ type
167 150
168 var 151 var
169 Form1: TForm1; 152 Form1: TForm1;
170 - Dir, ENDERECO_SERV_CACIC,  
171 - v_home_drive : string; 153 + ENDERECO_SERV_CACIC : string;
172 implementation 154 implementation
173 155
174 uses FormConfig; 156 uses FormConfig;
@@ -315,52 +297,12 @@ begin @@ -315,52 +297,12 @@ begin
315 StrDispose(temp); 297 StrDispose(temp);
316 end; 298 end;
317 299
318 -function IsAdmin: Boolean;  
319 -var hAccessToken: THandle;  
320 - ptgGroups: PTokenGroups;  
321 - dwInfoBufferSize: DWORD;  
322 - psidAdministrators: PSID;  
323 - x: Integer;  
324 - bSuccess: BOOL;  
325 -begin  
326 - Result := False;  
327 - bSuccess := OpenThreadToken(GetCurrentThread, TOKEN_QUERY, True, hAccessToken);  
328 - if not bSuccess then  
329 - begin  
330 - if GetLastError = ERROR_NO_TOKEN then  
331 - bSuccess := OpenProcessToken(GetCurrentProcess, TOKEN_QUERY, hAccessToken);  
332 - end;  
333 - if bSuccess then  
334 - begin  
335 - GetMem(ptgGroups, 1024);  
336 - bSuccess := GetTokenInformation(hAccessToken, TokenGroups, ptgGroups, 1024, dwInfoBufferSize);  
337 - CloseHandle(hAccessToken);  
338 - if bSuccess then  
339 - begin  
340 - AllocateAndInitializeSid(constSECURITY_NT_AUTHORITY, 2,  
341 - constSECURITY_BUILTIN_DOMAIN_RID,  
342 - constDOMAIN_ALIAS_RID_ADMINS,  
343 - 0, 0, 0, 0, 0, 0, psidAdministrators);  
344 - {$R-}  
345 - for x := 0 to ptgGroups.GroupCount - 1 do  
346 - if EqualSid(psidAdministrators, ptgGroups.Groups[x].Sid) then  
347 - begin  
348 - Result := True;  
349 - Break;  
350 - end;  
351 - {$R+}  
352 - FreeSid(psidAdministrators);  
353 - end;  
354 - FreeMem(ptgGroups);  
355 - end;  
356 -end;  
357 -  
358 procedure ComunicaInsucesso(strIndicador : String); 300 procedure ComunicaInsucesso(strIndicador : String);
359 var IdHTTP2: TIdHTTP; 301 var IdHTTP2: TIdHTTP;
360 Request_Config : TStringList; 302 Request_Config : TStringList;
361 Response_Config : TStringStream; 303 Response_Config : TStringStream;
362 begin 304 begin
363 - 305 +
364 // Envio notificação de insucesso para o Módulo Gerente Centralizado 306 // Envio notificação de insucesso para o Módulo Gerente Centralizado
365 Request_Config := TStringList.Create; 307 Request_Config := TStringList.Create;
366 Request_Config.Values['cs_indicador'] := strIndicador; 308 Request_Config.Values['cs_indicador'] := strIndicador;
@@ -390,8 +332,8 @@ var @@ -390,8 +332,8 @@ var
390 HistoricoLog : TextFile; 332 HistoricoLog : TextFile;
391 begin 333 begin
392 try 334 try
393 - FileSetAttr (v_home_drive + 'chkcacic.log',0); // Retira os atributos do arquivo para evitar o erro FILE ACCESS DENIED em máquinas 2000  
394 - AssignFile(HistoricoLog,v_home_drive + 'chkcacic.log'); {Associa o arquivo a uma variável do tipo TextFile} 335 + FileSetAttr (g_oCacic.getHomeDrive + 'chkcacic.log',0); // Retira os atributos do arquivo para evitar o erro FILE ACCESS DENIED em máquinas 2000
  336 + AssignFile(HistoricoLog,g_oCacic.getHomeDrive + 'chkcacic.log'); {Associa o arquivo a uma variável do tipo TextFile}
395 337
396 {$IOChecks off} 338 {$IOChecks off}
397 Reset(HistoricoLog); {Abre o arquivo texto} 339 Reset(HistoricoLog); {Abre o arquivo texto}
@@ -423,107 +365,6 @@ Begin @@ -423,107 +365,6 @@ Begin
423 End; 365 End;
424 End; 366 End;
425 367
426 -// Pad a string with zeros so that it is a multiple of size  
427 -function PadWithZeros(const str : string; size : integer) : string;  
428 -var  
429 - origsize, i : integer;  
430 -begin  
431 - Result := str;  
432 - origsize := Length(Result);  
433 - if ((origsize mod size) <> 0) or (origsize = 0) then  
434 - begin  
435 - SetLength(Result,((origsize div size)+1)*size);  
436 - for i := origsize+1 to Length(Result) do  
437 - Result[i] := #0;  
438 - end;  
439 -end;  
440 -  
441 -  
442 -// Encrypt a string and return the Base64 encoded result  
443 -function EnCrypt(p_Data : String) : String;  
444 -var  
445 - l_Cipher : TDCP_rijndael;  
446 - l_Data, l_Key, l_IV : string;  
447 -begin  
448 - Try  
449 - // Pad Key, IV and Data with zeros as appropriate  
450 - l_Key := PadWithZeros(v_CipherKey,KeySize);  
451 - l_IV := PadWithZeros(v_IV,BlockSize);  
452 - l_Data := PadWithZeros(p_Data,BlockSize);  
453 -  
454 - // Create the cipher and initialise according to the key length  
455 - l_Cipher := TDCP_rijndael.Create(nil);  
456 - if Length(v_CipherKey) <= 16 then  
457 - l_Cipher.Init(l_Key[1],128,@l_IV[1])  
458 - else if Length(v_CipherKey) <= 24 then  
459 - l_Cipher.Init(l_Key[1],192,@l_IV[1])  
460 - else  
461 - l_Cipher.Init(l_Key[1],256,@l_IV[1]);  
462 -  
463 - // Encrypt the data  
464 - l_Cipher.EncryptCBC(l_Data[1],l_Data[1],Length(l_Data));  
465 -  
466 - // Free the cipher and clear sensitive information  
467 - l_Cipher.Free;  
468 - FillChar(l_Key[1],Length(l_Key),0);  
469 -  
470 - // Return the Base64 encoded result  
471 - Result := Base64EncodeStr(l_Data);  
472 - Except  
473 - LogDiario('Erro no Processo de Criptografia');  
474 - End;  
475 -end;  
476 -  
477 -function DeCrypt(p_Data : String) : String;  
478 -var  
479 - l_Cipher : TDCP_rijndael;  
480 - l_Data, l_Key, l_IV : string;  
481 -begin  
482 - Try  
483 - // Pad Key and IV with zeros as appropriate  
484 - l_Key := PadWithZeros(v_CipherKey,KeySize);  
485 - l_IV := PadWithZeros(v_IV,BlockSize);  
486 -  
487 - // Decode the Base64 encoded string  
488 - l_Data := Base64DecodeStr(p_Data);  
489 -  
490 - // Create the cipher and initialise according to the key length  
491 - l_Cipher := TDCP_rijndael.Create(nil);  
492 - if Length(v_CipherKey) <= 16 then  
493 - l_Cipher.Init(l_Key[1],128,@l_IV[1])  
494 - else if Length(v_CipherKey) <= 24 then  
495 - l_Cipher.Init(l_Key[1],192,@l_IV[1])  
496 - else  
497 - l_Cipher.Init(l_Key[1],256,@l_IV[1]);  
498 -  
499 - // Decrypt the data  
500 - l_Cipher.DecryptCBC(l_Data[1],l_Data[1],Length(l_Data));  
501 -  
502 - // Free the cipher and clear sensitive information  
503 - l_Cipher.Free;  
504 - FillChar(l_Key[1],Length(l_Key),0);  
505 -  
506 - // Return the result  
507 - Result := l_Data;  
508 - Except  
509 - LogDiario('Erro no Processo de Decriptografia');  
510 - End;  
511 -end;  
512 -  
513 -  
514 -Function Implode(p_Array : TStrings ; p_Separador : String) : String;  
515 -var intAux : integer;  
516 - strAux : string;  
517 -Begin  
518 - strAux := '';  
519 - For intAux := 0 To p_Array.Count -1 do  
520 - Begin  
521 - if (strAux<>'') then strAux := strAux + p_Separador;  
522 - strAux := strAux + p_Array[intAux];  
523 - End;  
524 - Implode := strAux;  
525 -end;  
526 -  
527 Function CipherClose(p_DatFileName : string) : String; 368 Function CipherClose(p_DatFileName : string) : String;
528 var v_strCipherOpenImploded : string; 369 var v_strCipherOpenImploded : string;
529 v_DatFile : TextFile; 370 v_DatFile : TextFile;
@@ -536,8 +377,8 @@ begin @@ -536,8 +377,8 @@ begin
536 Rewrite (v_DatFile); 377 Rewrite (v_DatFile);
537 Append(v_DatFile); 378 Append(v_DatFile);
538 379
539 - v_strCipherOpenImploded := Implode(v_tstrCipherOpened,v_SeparatorKey);  
540 - v_strCipherClosed := EnCrypt(v_strCipherOpenImploded); 380 + v_strCipherOpenImploded := g_oCacic.implode(v_tstrCipherOpened,g_oCacic.getSeparatorKey);
  381 + v_strCipherClosed := g_oCacic.enCrypt(v_strCipherOpenImploded);
541 382
542 Writeln(v_DatFile,v_strCipherClosed); {Grava a string Texto no arquivo texto} 383 Writeln(v_DatFile,v_strCipherClosed); {Grava a string Texto no arquivo texto}
543 384
@@ -567,12 +408,12 @@ begin @@ -567,12 +408,12 @@ begin
567 Readln(v_DatFile,v_strCipherClosed); 408 Readln(v_DatFile,v_strCipherClosed);
568 while not EOF(v_DatFile) do Readln(v_DatFile,v_strCipherClosed); 409 while not EOF(v_DatFile) do Readln(v_DatFile,v_strCipherClosed);
569 CloseFile(v_DatFile); 410 CloseFile(v_DatFile);
570 - v_strCipherOpened:= DeCrypt(v_strCipherClosed); 411 + v_strCipherOpened:= g_oCacic.deCrypt(v_strCipherClosed);
571 end; 412 end;
572 if (trim(v_strCipherOpened)<>'') then 413 if (trim(v_strCipherOpened)<>'') then
573 - Result := explode(v_strCipherOpened,v_SeparatorKey) 414 + Result := g_oCacic.explode(v_strCipherOpened,g_oCacic.getSeparatorKey)
574 else 415 else
575 - Result := explode('Configs.ID_SO'+v_SeparatorKey+ g_oCacic.getWindowsStrId() +v_SeparatorKey+'Configs.Endereco_WS'+v_SeparatorKey+'/cacic2/ws/',v_SeparatorKey); 416 + Result := g_oCacic.explode('Configs.ID_SO'+g_oCacic.getSeparatorKey+ g_oCacic.getWindowsStrId() +g_oCacic.getSeparatorKey+'Configs.Endereco_WS'+g_oCacic.getSeparatorKey+'/cacic2/ws/',g_oCacic.getSeparatorKey);
576 417
577 418
578 if Result.Count mod 2 <> 0 then 419 if Result.Count mod 2 <> 0 then
@@ -635,7 +476,7 @@ var RegEditSet: TRegistry; @@ -635,7 +476,7 @@ var RegEditSet: TRegistry;
635 ListaAuxSet : TStrings; 476 ListaAuxSet : TStrings;
636 I : Integer; 477 I : Integer;
637 begin 478 begin
638 - ListaAuxSet := Explode(Chave, '); 479 + ListaAuxSet := g_oCacic.explode(Chave, ');
639 strRootKey := ListaAuxSet[0]; 480 strRootKey := ListaAuxSet[0];
640 For I := 1 To ListaAuxSet.Count - 2 do 481 For I := 1 To ListaAuxSet.Count - 2 do
641 strKey := strKey + ListaAuxSet[I] + '\'; 482 strKey := strKey + ListaAuxSet[I] + '\';
@@ -695,7 +536,7 @@ var RegEditGet: TRegistry; @@ -695,7 +536,7 @@ var RegEditGet: TRegistry;
695 DataSize, Len, I : Integer; 536 DataSize, Len, I : Integer;
696 begin 537 begin
697 try 538 try
698 - ListaAuxGet := Explode(Chave, '); 539 + ListaAuxGet := g_oCacic.Explode(Chave, ');
699 540
700 strRootKey := ListaAuxGet[0]; 541 strRootKey := ListaAuxGet[0];
701 For I := 1 To ListaAuxGet.Count - 2 Do strKey := strKey + ListaAuxGet[I] + '\'; 542 For I := 1 To ListaAuxGet.Count - 2 Do strKey := strKey + ListaAuxGet[I] + '\';
@@ -788,7 +629,7 @@ var RegDelValorReg: TRegistry; @@ -788,7 +629,7 @@ var RegDelValorReg: TRegistry;
788 ListaAuxDel : TStrings; 629 ListaAuxDel : TStrings;
789 I : Integer; 630 I : Integer;
790 begin 631 begin
791 - ListaAuxDel := Explode(Chave, '); 632 + ListaAuxDel := g_oCacic.explode(Chave, ');
792 strRootKey := ListaAuxDel[0]; 633 strRootKey := ListaAuxDel[0];
793 For I := 1 To ListaAuxDel.Count - 2 Do strKey := strKey + ListaAuxDel[I] + '\'; 634 For I := 1 To ListaAuxDel.Count - 2 Do strKey := strKey + ListaAuxDel[I] + '\';
794 strValue := ListaAuxDel[ListaAuxDel.Count - 1]; 635 strValue := ListaAuxDel[ListaAuxDel.Count - 1];
@@ -906,18 +747,12 @@ begin @@ -906,18 +747,12 @@ begin
906 End; 747 End;
907 end; 748 end;
908 749
909 -function HomeDrive : string;  
910 -var  
911 -WinDir : array [0..144] of char;  
912 -begin  
913 -GetWindowsDirectory (WinDir, 144);  
914 -Result := StrPas (WinDir);  
915 -end;  
916 -  
917 procedure GravaConfiguracoes; 750 procedure GravaConfiguracoes;
918 var chkcacic_ini : TextFile; 751 var chkcacic_ini : TextFile;
919 begin 752 begin
920 try 753 try
  754 + g_oCacic.setCacicPath(Configs.Edit_cacic_dir.text+'\');
  755 +
921 FileSetAttr (ExtractFilePath(Application.Exename) + '\chkcacic.ini',0); // Retira os atributos do arquivo para evitar o erro FILE ACCESS DENIED em máquinas 2000 756 FileSetAttr (ExtractFilePath(Application.Exename) + '\chkcacic.ini',0); // Retira os atributos do arquivo para evitar o erro FILE ACCESS DENIED em máquinas 2000
922 AssignFile(chkcacic_ini,ExtractFilePath(Application.Exename) + '\chkcacic.ini'); {Associa o arquivo a uma variável do tipo TextFile} 757 AssignFile(chkcacic_ini,ExtractFilePath(Application.Exename) + '\chkcacic.ini'); {Associa o arquivo a uma variável do tipo TextFile}
923 Rewrite (chkcacic_ini); // Recria o arquivo... 758 Rewrite (chkcacic_ini); // Recria o arquivo...
@@ -1000,18 +835,17 @@ begin @@ -1000,18 +835,17 @@ begin
1000 Writeln(chkcacic_ini,'[Cacic2]'); 835 Writeln(chkcacic_ini,'[Cacic2]');
1001 836
1002 // Atribuição dos valores do form FormConfig às variáveis... 837 // Atribuição dos valores do form FormConfig às variáveis...
1003 - v_ip_serv_cacic := Configs.Edit_ip_serv_cacic.text;  
1004 - v_cacic_dir := Configs.Edit_cacic_dir.text;  
1005 if Configs.ckboxExibeInformacoes.Checked then 838 if Configs.ckboxExibeInformacoes.Checked then
1006 v_exibe_informacoes := 'S' 839 v_exibe_informacoes := 'S'
1007 else 840 else
1008 v_exibe_informacoes := 'N'; 841 v_exibe_informacoes := 'N';
1009 842
  843 + v_ip_serv_cacic := Configs.Edit_ip_serv_cacic.text;
1010 v_te_instala_informacoes_extras := Configs.Memo_te_instala_informacoes_extras.Text; 844 v_te_instala_informacoes_extras := Configs.Memo_te_instala_informacoes_extras.Text;
1011 845
1012 // Escrita dos parâmetros obrigatórios 846 // Escrita dos parâmetros obrigatórios
1013 Writeln(chkcacic_ini,'ip_serv_cacic='+v_ip_serv_cacic); 847 Writeln(chkcacic_ini,'ip_serv_cacic='+v_ip_serv_cacic);
1014 - Writeln(chkcacic_ini,'cacic_dir='+v_cacic_dir); 848 + Writeln(chkcacic_ini,'cacic_dir='+Configs.Edit_cacic_dir.text);
1015 Writeln(chkcacic_ini,'exibe_informacoes='+v_exibe_informacoes); 849 Writeln(chkcacic_ini,'exibe_informacoes='+v_exibe_informacoes);
1016 850
1017 // Escrita dos valores opcionais quando existirem 851 // Escrita dos valores opcionais quando existirem
@@ -1033,7 +867,7 @@ begin @@ -1033,7 +867,7 @@ begin
1033 Writeln(iniFile,''); 867 Writeln(iniFile,'');
1034 Writeln(iniFile,'[Cacic2]'); 868 Writeln(iniFile,'[Cacic2]');
1035 Writeln(iniFile,'ip_serv_cacic='+v_ip_serv_cacic); 869 Writeln(iniFile,'ip_serv_cacic='+v_ip_serv_cacic);
1036 - Writeln(iniFile,'cacic_dir='+v_cacic_dir); 870 + Writeln(iniFile,'cacic_dir='+g_oCacic.getCacicPath);
1037 CloseFile(iniFile); {Fecha o arquivo texto} 871 CloseFile(iniFile); {Fecha o arquivo texto}
1038 except 872 except
1039 end; 873 end;
@@ -1159,7 +993,7 @@ Begin @@ -1159,7 +993,7 @@ Begin
1159 result := false; 993 result := false;
1160 994
1161 // Se eu conseguir matar o arquivo abaixo é porque não há outra sessão deste agente aberta... (POG? Nããão! :) ) 995 // Se eu conseguir matar o arquivo abaixo é porque não há outra sessão deste agente aberta... (POG? Nããão! :) )
1162 - Matar(v_cacic_dir,'aguarde_CACIC.txt'); 996 + Matar(g_oCacic.getCacicPath,'aguarde_CACIC.txt');
1163 997
1164 // Se o aguarde_CACIC.txt existir é porque refere-se a uma versão mais atual: 2.2.0.20 ou maior 998 // Se o aguarde_CACIC.txt existir é porque refere-se a uma versão mais atual: 2.2.0.20 ou maior
1165 if not (FileExists(g_oCacic.getCacicPath() + '\aguarde_CACIC.txt')) then 999 if not (FileExists(g_oCacic.getCacicPath() + '\aguarde_CACIC.txt')) then
@@ -1247,6 +1081,7 @@ var bool_configura, @@ -1247,6 +1081,7 @@ var bool_configura,
1247 bool_ArquivoINI, 1081 bool_ArquivoINI,
1248 bool_CommandLine : boolean; 1082 bool_CommandLine : boolean;
1249 1083
  1084 + v_cacic_dir,
1250 v_te_serv_updates, 1085 v_te_serv_updates,
1251 v_nu_porta_serv_updates, 1086 v_nu_porta_serv_updates,
1252 v_nm_usuario_login_serv_updates, 1087 v_nm_usuario_login_serv_updates,
@@ -1280,7 +1115,6 @@ begin @@ -1280,7 +1115,6 @@ begin
1280 bool_ArquivoINI := FileExists(ExtractFilePath(Application.Exename) + '\chkcacic.ini'); 1115 bool_ArquivoINI := FileExists(ExtractFilePath(Application.Exename) + '\chkcacic.ini');
1281 1116
1282 Try 1117 Try
1283 - v_home_drive := MidStr(HomeDrive,1,3); //x:\  
1284 1118
1285 // 2.2.0.17 - Tratamento de opções passadas em linha de comando 1119 // 2.2.0.17 - Tratamento de opções passadas em linha de comando
1286 // Grande dica do grande Cláudio Filho (OpenOffice.org) 1120 // Grande dica do grande Cláudio Filho (OpenOffice.org)
@@ -1332,16 +1166,14 @@ begin @@ -1332,16 +1166,14 @@ begin
1332 End; 1166 End;
1333 1167
1334 g_oCacic := TCACIC.Create(); 1168 g_oCacic := TCACIC.Create();
1335 - g_oCacic.setCacicPath(v_home_drive + v_cacic_dir);  
1336 -  
1337 - Dir := v_home_drive + v_cacic_dir; // Ex.: c:\cacic\ 1169 + g_oCacic.setCacicPath(g_oCacic.getHomeDrive + v_cacic_dir + '\');
1338 1170
1339 - if DirectoryExists(Dir + '\Temp\Debugs') then 1171 + if DirectoryExists(g_oCacic.getCacicPath + 'Temp\Debugs') then
1340 Begin 1172 Begin
1341 - if (FormatDateTime('ddmmyyyy', GetFolderDate(Dir + '\Temp\Debugs')) = FormatDateTime('ddmmyyyy', date)) then 1173 + if (FormatDateTime('ddmmyyyy', GetFolderDate(g_oCacic.getCacicPath + 'Temp\Debugs')) = FormatDateTime('ddmmyyyy', date)) then
1342 Begin 1174 Begin
1343 v_Debugs := true; 1175 v_Debugs := true;
1344 - LogDebug('Pasta "' + Dir + '\Temp\Debugs" com data '+FormatDateTime('dd-mm-yyyy', GetFolderDate(Dir + '\Temp\Debugs'))+' encontrada. DEBUG ativado.'); 1176 + LogDebug('Pasta "' + g_oCacic.getCacicPath + 'Temp\Debugs" com data '+FormatDateTime('dd-mm-yyyy', GetFolderDate(g_oCacic.getCacicPath + 'Temp\Debugs'))+' encontrada. DEBUG ativado.');
1345 End; 1177 End;
1346 End; 1178 End;
1347 1179
@@ -1393,18 +1225,14 @@ begin @@ -1393,18 +1225,14 @@ begin
1393 LogDebug(':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::'); 1225 LogDebug(':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::');
1394 LogDebug(':::::::::::::: OBTENDO VALORES DO "chkcacic.ini" ::::::::::::::'); 1226 LogDebug(':::::::::::::: OBTENDO VALORES DO "chkcacic.ini" ::::::::::::::');
1395 LogDebug(':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::'); 1227 LogDebug(':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::');
1396 - LogDebug('Drive de instalação......................: '+v_home_drive);  
1397 - LogDebug('Pasta para instalação....................: '+Dir); 1228 + LogDebug('Drive de instalação......................: '+g_oCacic.getHomeDrive);
  1229 + LogDebug('Pasta para instalação....................: '+g_oCacic.getCacicPath);
1398 LogDebug('IP do servidor...........................: '+v_ip_serv_cacic); 1230 LogDebug('IP do servidor...........................: '+v_ip_serv_cacic);
1399 LogDebug(':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::'); 1231 LogDebug(':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::');
1400 bool_configura := false; 1232 bool_configura := false;
1401 1233
1402 //chave AES. Recomenda-se que cada empresa/órgão altere a sua chave. 1234 //chave AES. Recomenda-se que cada empresa/órgão altere a sua chave.
1403 - v_CipherKey := 'CacicBrasil';  
1404 - v_IV := 'abcdefghijklmnop';  
1405 - v_SeparatorKey := '=CacicIsFree='; // Usada apenas para o cacic2.dat  
1406 - v_DatFileName := Dir + '\cacic2.dat';  
1407 - v_tstrCipherOpened := CipherOpen(v_DatFileName); 1235 + v_tstrCipherOpened := CipherOpen(g_oCacic.getCacicPath + '\' + g_oCacic.getDatFileName);
1408 1236
1409 if (g_oCacic.isWindowsGEXP()) then // Se >= Maior ou Igual ao WinXP... 1237 if (g_oCacic.isWindowsGEXP()) then // Se >= Maior ou Igual ao WinXP...
1410 Begin 1238 Begin
@@ -1415,24 +1243,24 @@ begin @@ -1415,24 +1243,24 @@ begin
1415 Try 1243 Try
1416 Begin 1244 Begin
1417 // Liberando as conexões de Saída para o FTP 1245 // Liberando as conexões de Saída para o FTP
1418 - 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='+HomeDrive+'\system32\\ftp.exe|Name=Programa de transferência de arquivos|Desc=Programa de transferência de arquivos|Edge=FALSE|');  
1419 - 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='+HomeDrive+'\system32\\ftp.exe|Name=Programa de transferência de arquivos|Desc=Programa de transferência de arquivos|Edge=FALSE|'); 1246 + 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='+g_oCacic.getHomeDrive+'system32\\ftp.exe|Name=Programa de transferência de arquivos|Desc=Programa de transferência de arquivos|Edge=FALSE|');
  1247 + 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='+g_oCacic.getHomeDrive+'system32\\ftp.exe|Name=Programa de transferência de arquivos|Desc=Programa de transferência de arquivos|Edge=FALSE|');
1420 1248
1421 // Liberando as conexões de Saída para o Ger_Cols 1249 // Liberando as conexões de Saída para o Ger_Cols
1422 - 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|');  
1423 - 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|'); 1250 + 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='+g_oCacic.getCacicPath+'modulos\\ger_cols.exe|Name=Módulo Gerente de Coletas do Sistema CACIC|Desc=Módulo Gerente de Coletas do Sistema CACIC|Edge=FALSE|');
  1251 + 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='+g_oCacic.getCacicPath+'modulos\\ger_cols.exe|Name=Módulo Gerente de Coletas do Sistema CACIC|Desc=Módulo Gerente de Coletas do Sistema CACIC|Edge=FALSE|');
1424 1252
1425 // Liberando as conexões de Saída para o SrCACICsrv 1253 // Liberando as conexões de Saída para o SrCACICsrv
1426 - SetValorChaveRegEdit('HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\FirewallRules\CACIC-SRCACICSRV-Out-TCP','v2.0|Action=Allow|Active=TRUE|Dir=Out|Protocol=6|Profile=Private|App='+Dir+'\modulos\\srcacicsrv.exe|Name=Módulo Suporte Remoto Seguro do Sistema CACIC|Desc=Módulo Suporte Remoto Seguro do Sistema CACIC|Edge=FALSE|');  
1427 - SetValorChaveRegEdit('HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\FirewallRules\CACIC-SRCACICSRV-Out-UDP','v2.0|Action=Allow|Active=TRUE|Dir=Out|Protocol=17|Profile=Private|App='+Dir+'\modulos\\srcacicsrv.exe|Name=Módulo Suporte Remoto Seguro do Sistema CACIC|Desc=Módulo Suporte Remoto Seguro do Sistema CACIC|Edge=FALSE|'); 1254 + SetValorChaveRegEdit('HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\FirewallRules\CACIC-SRCACICSRV-Out-TCP','v2.0|Action=Allow|Active=TRUE|Dir=Out|Protocol=6|Profile=Private|App='+g_oCacic.getCacicPath+'modulos\\srcacicsrv.exe|Name=Módulo Suporte Remoto Seguro do Sistema CACIC|Desc=Módulo Suporte Remoto Seguro do Sistema CACIC|Edge=FALSE|');
  1255 + SetValorChaveRegEdit('HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\FirewallRules\CACIC-SRCACICSRV-Out-UDP','v2.0|Action=Allow|Active=TRUE|Dir=Out|Protocol=17|Profile=Private|App='+g_oCacic.getCacicPath+'modulos\\srcacicsrv.exe|Name=Módulo Suporte Remoto Seguro do Sistema CACIC|Desc=Módulo Suporte Remoto Seguro do Sistema CACIC|Edge=FALSE|');
1428 1256
1429 // Liberando as conexões de Saída para o ChkCacic 1257 // Liberando as conexões de Saída para o ChkCacic
1430 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|'); 1258 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|');
1431 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|'); 1259 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|');
1432 1260
1433 // Liberando as conexões de Saída para o ChkSis 1261 // Liberando as conexões de Saída para o ChkSis
1434 - 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|');  
1435 - 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|'); 1262 + 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='+g_oCacic.getWinDir + 'chksis.exe|Name=Módulo Verificador de Integridade do Sistema CACIC|Desc=Módulo Verificador de Integridade do Sistema CACIC|Edge=FALSE|');
  1263 + 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='+g_oCacic.getWinDir + 'chksis.exe|Name=Módulo Verificador de Integridade do Sistema CACIC|Desc=Módulo Verificador de Integridade do Sistema CACIC|Edge=FALSE|');
1436 End 1264 End
1437 Except 1265 Except
1438 LogDebug('Problema Liberando Policies de FireWall!'); 1266 LogDebug('Problema Liberando Policies de FireWall!');
@@ -1477,25 +1305,25 @@ begin @@ -1477,25 +1305,25 @@ begin
1477 end; 1305 end;
1478 1306
1479 // Verifico a existência do diretório configurado para o Cacic, normalmente CACIC 1307 // Verifico a existência do diretório configurado para o Cacic, normalmente CACIC
1480 - if not DirectoryExists(Dir) then 1308 + if not DirectoryExists(g_oCacic.getCacicPath) then
1481 begin 1309 begin
1482 - LogDiario('Criando pasta '+Dir);  
1483 - ForceDirectories(Dir); 1310 + LogDiario('Criando pasta '+g_oCacic.getCacicPath);
  1311 + ForceDirectories(g_oCacic.getCacicPath);
1484 end; 1312 end;
1485 1313
1486 // Para eliminar versão 20014 e anteriores que provavelmente não fazem corretamente o AutoUpdate 1314 // Para eliminar versão 20014 e anteriores que provavelmente não fazem corretamente o AutoUpdate
1487 - if not DirectoryExists(Dir+'\modulos') then 1315 + if not DirectoryExists(g_oCacic.getCacicPath+'modulos') then
1488 begin 1316 begin
1489 - Matar(Dir, '\cacic2.exe');  
1490 - ForceDirectories(Dir + '\modulos');  
1491 - LogDiario('Criando pasta '+Dir+'\modulos'); 1317 + Matar(g_oCacic.getCacicPath, 'cacic2.exe');
  1318 + ForceDirectories(g_oCacic.getCacicPath + 'modulos');
  1319 + LogDiario('Criando pasta '+g_oCacic.getCacicPath+'modulos');
1492 end; 1320 end;
1493 1321
1494 // Crio o SubDiretório TEMP, caso não exista 1322 // Crio o SubDiretório TEMP, caso não exista
1495 - if not DirectoryExists(Dir+'\temp') then 1323 + if not DirectoryExists(g_oCacic.getCacicPath+'temp') then
1496 begin 1324 begin
1497 - ForceDirectories(Dir + '\temp');  
1498 - LogDiario('Criando pasta '+Dir+'\temp'); 1325 + ForceDirectories(g_oCacic.getCacicPath + 'temp');
  1326 + LogDiario('Criando pasta '+g_oCacic.getCacicPath+'temp');
1499 end; 1327 end;
1500 1328
1501 1329
@@ -1573,101 +1401,101 @@ begin @@ -1573,101 +1401,101 @@ begin
1573 LogDebug(':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::'); 1401 LogDebug(':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::');
1574 1402
1575 // Atribuição de acesso ao módulo principal e pastas 1403 // Atribuição de acesso ao módulo principal e pastas
1576 - Form1.FS_SetSecurity(Dir);  
1577 - Form1.FS_SetSecurity(Dir + '\cacic2.exe');  
1578 - Form1.FS_SetSecurity(Dir + '\cacic2.dat');  
1579 - Form1.FS_SetSecurity(Dir + '\cacic2.log');  
1580 - Form1.FS_SetSecurity(Dir + '\modulos');  
1581 - Form1.FS_SetSecurity(Dir + '\temp'); 1404 + Form1.FS_SetSecurity(g_oCacic.getCacicPath);
  1405 + Form1.FS_SetSecurity(g_oCacic.getCacicPath + 'cacic2.exe');
  1406 + Form1.FS_SetSecurity(g_oCacic.getCacicPath + 'cacic2.dat');
  1407 + Form1.FS_SetSecurity(g_oCacic.getCacicPath + 'cacic2.log');
  1408 + Form1.FS_SetSecurity(g_oCacic.getCacicPath + 'modulos');
  1409 + Form1.FS_SetSecurity(g_oCacic.getCacicPath + 'temp');
1582 1410
1583 // Atribuição de acesso aos módulos de gerenciamento de coletas e coletas para permissão de atualizações de versões 1411 // Atribuição de acesso aos módulos de gerenciamento de coletas e coletas para permissão de atualizações de versões
1584 - Form1.FS_SetSecurity(Dir + '\modulos\ger_cols.exe');  
1585 - Form1.FS_SetSecurity(Dir + '\modulos\srcacicsrv.exe');  
1586 - Form1.FS_SetSecurity(Dir + '\modulos\col_anvi.exe');  
1587 - Form1.FS_SetSecurity(Dir + '\modulos\col_comp.exe');  
1588 - Form1.FS_SetSecurity(Dir + '\modulos\col_hard.exe');  
1589 - Form1.FS_SetSecurity(Dir + '\modulos\col_moni.exe');  
1590 - Form1.FS_SetSecurity(Dir + '\modulos\col_patr.exe');  
1591 - Form1.FS_SetSecurity(Dir + '\modulos\col_soft.exe');  
1592 - Form1.FS_SetSecurity(Dir + '\modulos\col_undi.exe');  
1593 - Form1.FS_SetSecurity(Dir + '\modulos\ini_cols.exe');  
1594 - Form1.FS_SetSecurity(Dir + '\modulos\wscript.exe'); 1412 + Form1.FS_SetSecurity(g_oCacic.getCacicPath + 'modulos\ger_cols.exe');
  1413 + Form1.FS_SetSecurity(g_oCacic.getCacicPath + 'modulos\srcacicsrv.exe');
  1414 + Form1.FS_SetSecurity(g_oCacic.getCacicPath + 'modulos\col_anvi.exe');
  1415 + Form1.FS_SetSecurity(g_oCacic.getCacicPath + 'modulos\col_comp.exe');
  1416 + Form1.FS_SetSecurity(g_oCacic.getCacicPath + 'modulos\col_hard.exe');
  1417 + Form1.FS_SetSecurity(g_oCacic.getCacicPath + 'modulos\col_moni.exe');
  1418 + Form1.FS_SetSecurity(g_oCacic.getCacicPath + 'modulos\col_patr.exe');
  1419 + Form1.FS_SetSecurity(g_oCacic.getCacicPath + 'modulos\col_soft.exe');
  1420 + Form1.FS_SetSecurity(g_oCacic.getCacicPath + 'modulos\col_undi.exe');
  1421 + Form1.FS_SetSecurity(g_oCacic.getCacicPath + 'modulos\ini_cols.exe');
  1422 + Form1.FS_SetSecurity(g_oCacic.getCacicPath + 'modulos\wscript.exe');
1595 1423
1596 // Atribuição de acesso para atualização do módulo verificador de integridade do sistema e seus arquivos 1424 // Atribuição de acesso para atualização do módulo verificador de integridade do sistema e seus arquivos
1597 - Form1.FS_SetSecurity(HomeDrive + '\chksis.exe');  
1598 - Form1.FS_SetSecurity(HomeDrive + '\chksis.log');  
1599 - Form1.FS_SetSecurity(HomeDrive + '\chksis.dat'); 1425 + Form1.FS_SetSecurity(g_oCacic.getWinDir + 'chksis.exe');
  1426 + Form1.FS_SetSecurity(g_oCacic.getWinDir + 'chksis.log');
  1427 + Form1.FS_SetSecurity(g_oCacic.getWinDir + 'chksis.dat');
1600 1428
1601 // Atribuição de acesso para atualização/exclusão de log do instalador 1429 // Atribuição de acesso para atualização/exclusão de log do instalador
1602 - Form1.FS_SetSecurity(v_home_drive + 'chkcacic.log'); 1430 + Form1.FS_SetSecurity(g_oCacic.getHomeDrive + 'chkcacic.log');
1603 LogDebug(':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::'); 1431 LogDebug(':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::');
1604 End; 1432 End;
1605 1433
1606 // Verificação de versão do cacic2.exe e exclusão em caso de versão antiga/diferente da atual 1434 // Verificação de versão do cacic2.exe e exclusão em caso de versão antiga/diferente da atual
1607 - If (FileExists(Dir + '\cacic2.exe')) Then 1435 + If (FileExists(g_oCacic.getCacicPath + 'cacic2.exe')) Then
1608 Begin 1436 Begin
1609 // Pego as informações de dia/mês/ano/horas/minutos/segundos/milésimos que identificam o agente Cacic2 1437 // Pego as informações de dia/mês/ano/horas/minutos/segundos/milésimos que identificam o agente Cacic2
1610 - strDataHoraCACIC2_INI := FormatDateTime('ddmmyyyyhhnnsszzz', GetFolderDate(Dir + '\cacic2.exe')); 1438 + strDataHoraCACIC2_INI := FormatDateTime('ddmmyyyyhhnnsszzz', GetFolderDate(g_oCacic.getCacicPath + 'cacic2.exe'));
1611 1439
1612 - intAux := ChecaVersoesAgentes(Dir + '\cacic2.exe'); 1440 + intAux := ChecaVersoesAgentes(g_oCacic.getCacicPath + 'cacic2.exe');
1613 // 0 => Arquivo de versões ou informação inexistente 1441 // 0 => Arquivo de versões ou informação inexistente
1614 // 1 => Versões iguais 1442 // 1 => Versões iguais
1615 // 2 => Versões diferentes 1443 // 2 => Versões diferentes
1616 if (intAux = 0) then 1444 if (intAux = 0) then
1617 Begin 1445 Begin
1618 - v_versao_local := StringReplace(trim(GetVersionInfo(Dir + '\cacic2.exe')),'.','',[rfReplaceAll]); 1446 + v_versao_local := StringReplace(trim(GetVersionInfo(g_oCacic.getCacicPath + 'cacic2.exe')),'.','',[rfReplaceAll]);
1619 v_versao_remota := StringReplace(XML_RetornaValor('CACIC2' , v_retorno),'0103','',[rfReplaceAll]); 1447 v_versao_remota := StringReplace(XML_RetornaValor('CACIC2' , v_retorno),'0103','',[rfReplaceAll]);
1620 End; 1448 End;
1621 1449
1622 if (intAux = 2) or // Caso haja diferença na comparação de versões com "versoes_agentes.ini"... 1450 if (intAux = 2) or // Caso haja diferença na comparação de versões com "versoes_agentes.ini"...
1623 (v_versao_local ='0000') or // Provavelmente versão muito antiga ou corrompida 1451 (v_versao_local ='0000') or // Provavelmente versão muito antiga ou corrompida
1624 (v_versao_local ='2208') then 1452 (v_versao_local ='2208') then
1625 - Matar(Dir, '\cacic2.exe'); 1453 + Matar(g_oCacic.getCacicPath, 'cacic2.exe');
1626 End; 1454 End;
1627 1455
1628 // Verificação de versão do ger_cols.exe e exclusão em caso de versão antiga/diferente da atual 1456 // Verificação de versão do ger_cols.exe e exclusão em caso de versão antiga/diferente da atual
1629 - If (FileExists(Dir + '\modulos\ger_cols.exe')) Then 1457 + If (FileExists(g_oCacic.getCacicPath + 'modulos\ger_cols.exe')) Then
1630 Begin 1458 Begin
1631 // Pego as informações de dia/mês/ano/horas/minutos/segundos/milésimos que identificam o agente Ger_Cols 1459 // Pego as informações de dia/mês/ano/horas/minutos/segundos/milésimos que identificam o agente Ger_Cols
1632 - strDataHoraGERCOLS_INI := FormatDateTime('ddmmyyyyhhnnsszzz', GetFolderDate(Dir + '\modulos\ger_cols.exe')); 1460 + strDataHoraGERCOLS_INI := FormatDateTime('ddmmyyyyhhnnsszzz', GetFolderDate(g_oCacic.getCacicPath + 'modulos\ger_cols.exe'));
1633 1461
1634 - intAux := ChecaVersoesAgentes(Dir + '\modulos\ger_cols.exe'); 1462 + intAux := ChecaVersoesAgentes(g_oCacic.getCacicPath + 'modulos\ger_cols.exe');
1635 // 0 => Arquivo de versões ou informação inexistente 1463 // 0 => Arquivo de versões ou informação inexistente
1636 // 1 => Versões iguais 1464 // 1 => Versões iguais
1637 // 2 => Versões diferentes 1465 // 2 => Versões diferentes
1638 if (intAux = 0) then 1466 if (intAux = 0) then
1639 Begin 1467 Begin
1640 - v_versao_local := StringReplace(trim(GetVersionInfo(Dir + '\modulos\ger_cols.exe')),'.','',[rfReplaceAll]); 1468 + v_versao_local := StringReplace(trim(GetVersionInfo(g_oCacic.getCacicPath + 'modulos\ger_cols.exe')),'.','',[rfReplaceAll]);
1641 v_versao_remota := StringReplace(XML_RetornaValor('GER_COLS' , v_retorno),'0103','',[rfReplaceAll]); 1469 v_versao_remota := StringReplace(XML_RetornaValor('GER_COLS' , v_retorno),'0103','',[rfReplaceAll]);
1642 End; 1470 End;
1643 1471
1644 if (intAux = 2) or // Caso haja diferença na comparação de versões com "versoes_agentes.ini"... 1472 if (intAux = 2) or // Caso haja diferença na comparação de versões com "versoes_agentes.ini"...
1645 (v_versao_local ='0000') then // Provavelmente versão muito antiga ou corrompida 1473 (v_versao_local ='0000') then // Provavelmente versão muito antiga ou corrompida
1646 - Matar(Dir + '\modulos, 'ger_cols.exe'); 1474 + Matar(g_oCacic.getCacicPath + 'modulos, 'ger_cols.exe');
1647 End; 1475 End;
1648 1476
1649 // Verificação de versão do chksis.exe e exclusão em caso de versão antiga/diferente da atual 1477 // Verificação de versão do chksis.exe e exclusão em caso de versão antiga/diferente da atual
1650 - If (FileExists(HomeDrive + '\chksis.exe')) Then 1478 + If (FileExists(g_oCacic.getWinDir + 'chksis.exe')) Then
1651 Begin 1479 Begin
1652 - intAux := ChecaVersoesAgentes(HomeDrive + '\chksis.exe'); 1480 + intAux := ChecaVersoesAgentes(g_oCacic.getWinDir + 'chksis.exe');
1653 // 0 => Arquivo de versões ou informação inexistente 1481 // 0 => Arquivo de versões ou informação inexistente
1654 // 1 => Versões iguais 1482 // 1 => Versões iguais
1655 // 2 => Versões diferentes 1483 // 2 => Versões diferentes
1656 if (intAux = 0) then 1484 if (intAux = 0) then
1657 Begin 1485 Begin
1658 - v_versao_local := StringReplace(trim(GetVersionInfo(HomeDrive + '\chksis.exe')),'.','',[rfReplaceAll]); 1486 + v_versao_local := StringReplace(trim(GetVersionInfo(g_oCacic.getWinDir + 'chksis.exe')),'.','',[rfReplaceAll]);
1659 v_versao_remota := StringReplace(XML_RetornaValor('CHKSIS' , v_retorno),'0103','',[rfReplaceAll]); 1487 v_versao_remota := StringReplace(XML_RetornaValor('CHKSIS' , v_retorno),'0103','',[rfReplaceAll]);
1660 End; 1488 End;
1661 1489
1662 if (intAux = 2) or // Caso haja diferença na comparação de versões com "versoes_agentes.ini"... 1490 if (intAux = 2) or // Caso haja diferença na comparação de versões com "versoes_agentes.ini"...
1663 (v_versao_local ='0000') then // Provavelmente versão muito antiga ou corrompida 1491 (v_versao_local ='0000') then // Provavelmente versão muito antiga ou corrompida
1664 - Matar(HomeDrive,'chksis.exe'); 1492 + Matar(g_oCacic.getWinDir,'chksis.exe');
1665 End; 1493 End;
1666 1494
1667 // Tento detectar o ChkSis.EXE e copio ou faço FTP caso não exista 1495 // Tento detectar o ChkSis.EXE e copio ou faço FTP caso não exista
1668 verifyAndGet('chksis.exe', 1496 verifyAndGet('chksis.exe',
1669 XML_RetornaValor('CHKSIS_HASH', v_retorno), 1497 XML_RetornaValor('CHKSIS_HASH', v_retorno),
1670 - HomeDrive, 1498 + g_oCacic.getWinDir,
1671 v_te_serv_updates, 1499 v_te_serv_updates,
1672 v_nu_porta_serv_updates, 1500 v_nu_porta_serv_updates,
1673 v_nm_usuario_login_serv_updates, 1501 v_nm_usuario_login_serv_updates,
@@ -1676,11 +1504,11 @@ begin @@ -1676,11 +1504,11 @@ begin
1676 v_exibe_informacoes); 1504 v_exibe_informacoes);
1677 1505
1678 // Tento detectar o ChkSis.INI e crio-o caso necessário 1506 // Tento detectar o ChkSis.INI e crio-o caso necessário
1679 - If not FileExists(HomeDrive + '\chksis.ini') Then 1507 + If not FileExists(g_oCacic.getWinDir + 'chksis.ini') Then
1680 begin 1508 begin
1681 - LogDebug('Criando '+HomeDrive + '\chksis.ini');  
1682 - GravaIni(HomeDrive + '\chksis.ini');  
1683 - FileSetAttr ( PChar(HomeDrive + '\chksis.ini'),0); // Retira os atributos do arquivo para evitar o erro FILE ACCESS DENIED em máquinas 2000 1509 + LogDebug('Criando '+g_oCacic.getWinDir + 'chksis.ini');
  1510 + GravaIni(g_oCacic.getWinDir + 'chksis.ini');
  1511 + FileSetAttr ( PChar(g_oCacic.getWinDir + 'chksis.ini'),0); // Retira os atributos do arquivo para evitar o erro FILE ACCESS DENIED em máquinas 2000
1684 end; 1512 end;
1685 1513
1686 1514
@@ -1689,8 +1517,8 @@ begin @@ -1689,8 +1517,8 @@ begin
1689 Begin 1517 Begin
1690 // Tento detectar o CACICsvc.EXE e copio ou faço FTP caso não exista 1518 // Tento detectar o CACICsvc.EXE e copio ou faço FTP caso não exista
1691 verifyAndGet('cacicsvc.exe', 1519 verifyAndGet('cacicsvc.exe',
1692 - XML_RetornaValor('CACICSVC_HASH', v_retorno),  
1693 - HomeDrive, 1520 + XML_RetornaValor('CACICSVC_HASH', v_retorno),
  1521 + g_oCacic.getWinDir,
1694 v_te_serv_updates, 1522 v_te_serv_updates,
1695 v_nu_porta_serv_updates, 1523 v_nu_porta_serv_updates,
1696 v_nm_usuario_login_serv_updates, 1524 v_nm_usuario_login_serv_updates,
@@ -1699,16 +1527,13 @@ begin @@ -1699,16 +1527,13 @@ begin
1699 v_exibe_informacoes); 1527 v_exibe_informacoes);
1700 1528
1701 // O CACICsvc usará o arquivo de configurações \Windows\chksis.ini 1529 // O CACICsvc usará o arquivo de configurações \Windows\chksis.ini
1702 -  
1703 - //LogDebug('reCriando '+HomeDrive + '\cacicsvc.ini');  
1704 - //GravaIni(HomeDrive + '\cacicsvc.ini');  
1705 End; 1530 End;
1706 1531
1707 // Tento detectar o cacic2.INI e crio-o caso necessário 1532 // Tento detectar o cacic2.INI e crio-o caso necessário
1708 - If not FileExists(Dir + '\cacic2.ini') Then 1533 + If not FileExists(g_oCacic.getCacicPath + 'cacic2.ini') Then
1709 begin 1534 begin
1710 - LogDebug('Criando/Recriando '+Dir + '\cacic2.ini');  
1711 - GravaIni(Dir + '\cacic2.ini'); 1535 + LogDebug('Criando/Recriando '+g_oCacic.getCacicPath + 'cacic2.ini');
  1536 + GravaIni(g_oCacic.getCacicPath + 'cacic2.ini');
1712 end; 1537 end;
1713 1538
1714 // Verifico se existe a pasta "modulos" 1539 // Verifico se existe a pasta "modulos"
@@ -1717,8 +1542,8 @@ begin @@ -1717,8 +1542,8 @@ begin
1717 1542
1718 // Tento detectar o Agente Principal e copio ou faço FTP caso não exista 1543 // Tento detectar o Agente Principal e copio ou faço FTP caso não exista
1719 verifyAndGet('cacic2.exe', 1544 verifyAndGet('cacic2.exe',
1720 - XML_RetornaValor('CACIC2_HASH', v_retorno),  
1721 - Dir, 1545 + XML_RetornaValor('CACIC2_HASH', v_retorno),
  1546 + g_oCacic.getCacicPath,
1722 v_te_serv_updates, 1547 v_te_serv_updates,
1723 v_nu_porta_serv_updates, 1548 v_nu_porta_serv_updates,
1724 v_nm_usuario_login_serv_updates, 1549 v_nm_usuario_login_serv_updates,
@@ -1728,7 +1553,7 @@ begin @@ -1728,7 +1553,7 @@ begin
1728 1553
1729 verifyAndGet('ger_cols.exe', 1554 verifyAndGet('ger_cols.exe',
1730 XML_RetornaValor('GER_COLS_HASH', v_retorno), 1555 XML_RetornaValor('GER_COLS_HASH', v_retorno),
1731 - Dir + '\modulos', 1556 + g_oCacic.getCacicPath + 'modulos',
1732 v_te_serv_updates, 1557 v_te_serv_updates,
1733 v_nu_porta_serv_updates, 1558 v_nu_porta_serv_updates,
1734 v_nm_usuario_login_serv_updates, 1559 v_nm_usuario_login_serv_updates,
@@ -1747,8 +1572,8 @@ begin @@ -1747,8 +1572,8 @@ begin
1747 (v_array_modulos[intAux]<>'chksis.exe') then 1572 (v_array_modulos[intAux]<>'chksis.exe') then
1748 Begin 1573 Begin
1749 LogDiario('Copiando '+v_array_modulos[intAux]+' de '+ExtractFilePath(Application.Exename)+'modulos\'); 1574 LogDiario('Copiando '+v_array_modulos[intAux]+' de '+ExtractFilePath(Application.Exename)+'modulos\');
1750 - CopyFile(PChar(ExtractFilePath(Application.Exename) + 'modulos\'+v_array_modulos[intAux]), PChar(Dir + '\modulos\'+v_array_modulos[intAux]),false);  
1751 - 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 1575 + CopyFile(PChar(ExtractFilePath(Application.Exename) + 'modulos\'+v_array_modulos[intAux]), PChar(g_oCacic.getCacicPath + 'modulos\'+v_array_modulos[intAux]),false);
  1576 + FileSetAttr (PChar(g_oCacic.getCacicPath + 'modulos\'+v_array_modulos[intAux]),0); // Retira os atributos do arquivo para evitar o erro FILE ACCESS DENIED em máquinas 2000
1752 End; 1577 End;
1753 End; 1578 End;
1754 End; 1579 End;
@@ -1760,7 +1585,7 @@ begin @@ -1760,7 +1585,7 @@ begin
1760 // Tento detectar (de novo) o ChkSis.EXE e copio ou faço FTP caso não exista 1585 // Tento detectar (de novo) o ChkSis.EXE e copio ou faço FTP caso não exista
1761 verifyAndGet('chksis.exe', 1586 verifyAndGet('chksis.exe',
1762 XML_RetornaValor('CHKSIS_HASH', v_retorno), 1587 XML_RetornaValor('CHKSIS_HASH', v_retorno),
1763 - HomeDrive, 1588 + g_oCacic.getWinDir,
1764 v_te_serv_updates, 1589 v_te_serv_updates,
1765 v_nu_porta_serv_updates, 1590 v_nu_porta_serv_updates,
1766 v_nm_usuario_login_serv_updates, 1591 v_nm_usuario_login_serv_updates,
@@ -1771,7 +1596,7 @@ begin @@ -1771,7 +1596,7 @@ begin
1771 // Tento detectar (de novo) o Agente Principal e copio ou faço FTP caso não exista 1596 // Tento detectar (de novo) o Agente Principal e copio ou faço FTP caso não exista
1772 verifyAndGet('cacic2.exe', 1597 verifyAndGet('cacic2.exe',
1773 XML_RetornaValor('CACIC2_HASH', v_retorno), 1598 XML_RetornaValor('CACIC2_HASH', v_retorno),
1774 - Dir, 1599 + g_oCacic.getCacicPath,
1775 v_te_serv_updates, 1600 v_te_serv_updates,
1776 v_nu_porta_serv_updates, 1601 v_nu_porta_serv_updates,
1777 v_nm_usuario_login_serv_updates, 1602 v_nm_usuario_login_serv_updates,
@@ -1781,7 +1606,7 @@ begin @@ -1781,7 +1606,7 @@ begin
1781 1606
1782 verifyAndGet('ger_cols.exe', 1607 verifyAndGet('ger_cols.exe',
1783 XML_RetornaValor('GER_COLS_HASH', v_retorno), 1608 XML_RetornaValor('GER_COLS_HASH', v_retorno),
1784 - Dir + '\modulos', 1609 + g_oCacic.getCacicPath + 'modulos',
1785 v_te_serv_updates, 1610 v_te_serv_updates,
1786 v_nu_porta_serv_updates, 1611 v_nu_porta_serv_updates,
1787 v_nm_usuario_login_serv_updates, 1612 v_nm_usuario_login_serv_updates,
@@ -1789,28 +1614,22 @@ begin @@ -1789,28 +1614,22 @@ begin
1789 v_te_path_serv_updates, 1614 v_te_path_serv_updates,
1790 v_exibe_informacoes); 1615 v_exibe_informacoes);
1791 1616
1792 -  
1793 - {  
1794 - if ((intWinVer <> 0) and (intWinVer >= 8)) or  
1795 - (abstraiCSD(v_te_so) >= 250) then // Se >= WinXP...  
1796 - }  
1797 -  
1798 if (g_oCacic.isWindowsNTPlataform) then 1617 if (g_oCacic.isWindowsNTPlataform) then
1799 Begin 1618 Begin
1800 Try 1619 Try
1801 // Acrescento o Ger_Cols e srCacicSrv às exceções do FireWall nativo... 1620 // Acrescento o Ger_Cols e srCacicSrv às exceções do FireWall nativo...
1802 1621
1803 {chksis} 1622 {chksis}
1804 - LogDebug('Inserindo "'+HomeDrive + '\chksis" nas exceções do FireWall!');  
1805 - LiberaFireWall(HomeDrive + '\chksis'); 1623 + LogDebug('Inserindo "'+g_oCacic.getWinDir + 'chksis" nas exceções do FireWall!');
  1624 + LiberaFireWall(g_oCacic.getWinDir + 'chksis');
1806 1625
1807 {ger_cols} 1626 {ger_cols}
1808 - LogDebug('Inserindo "'+Dir + '\modulos\ger_cols" nas exceções do FireWall!');  
1809 - LiberaFireWall(Dir + '\modulos\ger_cols'); 1627 + LogDebug('Inserindo "'+g_oCacic.getCacicPath + 'modulos\ger_cols" nas exceções do FireWall!');
  1628 + LiberaFireWall(g_oCacic.getCacicPath + 'modulos\ger_cols');
1810 1629
1811 {srcacicsrv} 1630 {srcacicsrv}
1812 - LogDebug('Inserindo "'+Dir + '\modulos\srcacicsrv" nas exceções do FireWall!');  
1813 - LiberaFireWall(Dir + '\modulos\srcacicsrv'); 1631 + LogDebug('Inserindo "'+g_oCacic.getCacicPath + 'modulos\srcacicsrv" nas exceções do FireWall!');
  1632 + LiberaFireWall(g_oCacic.getCacicPath + 'modulos\srcacicsrv');
1814 1633
1815 Except 1634 Except
1816 End; 1635 End;
@@ -1823,13 +1642,13 @@ begin @@ -1823,13 +1642,13 @@ begin
1823 Begin 1642 Begin
1824 // Crio a chave/valor cacic2 para autoexecução do Cacic, caso não exista esta chave/valor 1643 // Crio a chave/valor cacic2 para autoexecução do Cacic, caso não exista esta chave/valor
1825 // Crio a chave/valor chksis para autoexecução do ChkSIS, caso não exista esta chave/valor 1644 // Crio a chave/valor chksis para autoexecução do ChkSIS, caso não exista esta chave/valor
1826 - SetValorChaveRegEdit('HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\CheckSystemRoutine', HomeDrive + '\chksis.exe'); 1645 + SetValorChaveRegEdit('HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\CheckSystemRoutine', g_oCacic.getWinDir + 'chksis.exe');
1827 1646
1828 bool_ExistsAutoRun := false; 1647 bool_ExistsAutoRun := false;
1829 - if (GetValorChaveRegEdit('HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\cacic2')=Dir + '\cacic2.exe') then 1648 + if (GetValorChaveRegEdit('HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\cacic2')=g_oCacic.getCacicPath + 'cacic2.exe') then
1830 bool_ExistsAutoRun := true 1649 bool_ExistsAutoRun := true
1831 else 1650 else
1832 - SetValorChaveRegEdit('HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\cacic2', Dir + '\cacic2.exe'); 1651 + SetValorChaveRegEdit('HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\cacic2', g_oCacic.getCacicPath + 'cacic2.exe');
1833 End 1652 End
1834 else 1653 else
1835 Begin 1654 Begin
@@ -1840,24 +1659,24 @@ begin @@ -1840,24 +1659,24 @@ begin
1840 // Igualo as chaves ip_serv_cacic dos arquivos chksis.ini e cacic2.ini! 1659 // Igualo as chaves ip_serv_cacic dos arquivos chksis.ini e cacic2.ini!
1841 SetValorDatMemoria('Configs.EnderecoServidor', v_ip_serv_cacic); 1660 SetValorDatMemoria('Configs.EnderecoServidor', v_ip_serv_cacic);
1842 LogDebug('Fechando Arquivo de Configurações do Cacic'); 1661 LogDebug('Fechando Arquivo de Configurações do Cacic');
1843 - CipherClose(v_DatFileName); 1662 + CipherClose(g_oCacic.getDatFileName);
1844 1663
1845 LogDebug('Abrindo Arquivo de Configurações do ChkSis'); 1664 LogDebug('Abrindo Arquivo de Configurações do ChkSis');
1846 - CipherOpen(HomeDrive + '\chksis.dat'); 1665 + CipherOpen(g_oCacic.getWinDir + 'chksis.dat');
1847 SetValorDatMemoria('Cacic2.ip_serv_cacic', v_ip_serv_cacic); 1666 SetValorDatMemoria('Cacic2.ip_serv_cacic', v_ip_serv_cacic);
1848 - CipherClose(HomeDrive + '\chksis.dat'); 1667 + CipherClose(g_oCacic.getWinDir + 'chksis.dat');
1849 1668
1850 // Volto a gravar o chksis.ini para o difícil caso de leitura por versões antigas 1669 // Volto a gravar o chksis.ini para o difícil caso de leitura por versões antigas
1851 - SetValorChaveRegIni('Cacic2', 'ip_serv_cacic', v_ip_serv_cacic, HomeDrive + '\chksis.ini'); 1670 + SetValorChaveRegIni('Cacic2', 'ip_serv_cacic', v_ip_serv_cacic, g_oCacic.getWinDir + 'chksis.ini');
1852 LogDebug('Fechando Arquivo de Configurações do ChkSis'); 1671 LogDebug('Fechando Arquivo de Configurações do ChkSis');
1853 1672
1854 LogDebug('Resgatando informações para identificação de alteração do agente CACIC2'); 1673 LogDebug('Resgatando informações para identificação de alteração do agente CACIC2');
1855 // Pego as informações de dia/mês/ano/horas/minutos/segundos/milésimos que identificam os agentes 1674 // Pego as informações de dia/mês/ano/horas/minutos/segundos/milésimos que identificam os agentes
1856 - strDataHoraCACIC2_FIM := FormatDateTime('ddmmyyyyhhnnsszzz', GetFolderDate(Dir + '\cacic2.exe')); 1675 + strDataHoraCACIC2_FIM := FormatDateTime('ddmmyyyyhhnnsszzz', GetFolderDate(g_oCacic.getCacicPath + 'cacic2.exe'));
1857 LogDebug('Inicial => "' + strDataHoraCACIC2_INI + '" Final => "' + strDataHoraCACIC2_FIM + '"'); 1676 LogDebug('Inicial => "' + strDataHoraCACIC2_INI + '" Final => "' + strDataHoraCACIC2_FIM + '"');
1858 1677
1859 LogDebug('Resgatando informações para identificação de alteração do agente GER_COLS'); 1678 LogDebug('Resgatando informações para identificação de alteração do agente GER_COLS');
1860 - strDataHoraGERCOLS_FIM := FormatDateTime('ddmmyyyyhhnnsszzz', GetFolderDate(Dir + '\modulos\ger_cols.exe')); 1679 + strDataHoraGERCOLS_FIM := FormatDateTime('ddmmyyyyhhnnsszzz', GetFolderDate(g_oCacic.getCacicPath + 'modulos\ger_cols.exe'));
1861 LogDebug('Inicial => "' + strDataHoraGERCOLS_INI + '" Final => "' + strDataHoraGERCOLS_FIM + '"'); 1680 LogDebug('Inicial => "' + strDataHoraGERCOLS_INI + '" Final => "' + strDataHoraGERCOLS_FIM + '"');
1862 1681
1863 // Caso o Cacic tenha sido baixado executo-o com parâmetro de configuração de servidor 1682 // Caso o Cacic tenha sido baixado executo-o com parâmetro de configuração de servidor
@@ -1866,7 +1685,7 @@ begin @@ -1866,7 +1685,7 @@ begin
1866 Begin 1685 Begin
1867 v_te_texto_janela_instalacao := v_te_instala_informacoes_extras; 1686 v_te_texto_janela_instalacao := v_te_instala_informacoes_extras;
1868 1687
1869 - if (GetValorChaveRegEdit('HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\cacic2')=Dir + '\cacic2.exe') and 1688 + if (GetValorChaveRegEdit('HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\cacic2')=g_oCacic.getCacicPath + 'cacic2.exe') and
1870 (not g_oCacic.isWindowsNTPlataform()) or 1689 (not g_oCacic.isWindowsNTPlataform()) or
1871 (g_oCacic.isWindowsNTPlataform()) then 1690 (g_oCacic.isWindowsNTPlataform()) then
1872 Begin 1691 Begin
@@ -1888,11 +1707,11 @@ begin @@ -1888,11 +1707,11 @@ begin
1888 // Se não for plataforma NT executo o agente principal 1707 // Se não for plataforma NT executo o agente principal
1889 if not (g_oCacic.isWindowsNTPlataform()) then 1708 if not (g_oCacic.isWindowsNTPlataform()) then
1890 Begin 1709 Begin
1891 - LogDebug('Executando '+Dir + '\cacic2.exe /ip_serv_cacic=' + v_ip_serv_cacic); 1710 + LogDebug('Executando '+g_oCacic.getCacicPath + 'cacic2.exe /ip_serv_cacic=' + v_ip_serv_cacic);
1892 if (strDataHoraCACIC2_INI <> strDataHoraCACIC2_FIM) then 1711 if (strDataHoraCACIC2_INI <> strDataHoraCACIC2_FIM) then
1893 - WinExec(PChar(Dir + '\cacic2.exe /ip_serv_cacic=' + v_ip_serv_cacic+ ' /execute'), SW_HIDE) 1712 + WinExec(PChar(g_oCacic.getCacicPath + 'cacic2.exe /ip_serv_cacic=' + v_ip_serv_cacic+ ' /execute'), SW_HIDE)
1894 else 1713 else
1895 - WinExec(PChar(Dir + '\cacic2.exe /ip_serv_cacic=' + v_ip_serv_cacic ), SW_HIDE); 1714 + WinExec(PChar(g_oCacic.getCacicPath + 'cacic2.exe /ip_serv_cacic=' + v_ip_serv_cacic ), SW_HIDE);
1896 End 1715 End
1897 else 1716 else
1898 Begin 1717 Begin
@@ -1911,13 +1730,13 @@ begin @@ -1911,13 +1730,13 @@ begin
1911 Begin 1730 Begin
1912 // Instalo e Habilito o serviço 1731 // Instalo e Habilito o serviço
1913 LogDiario('Instalando CACICservice...'); 1732 LogDiario('Instalando CACICservice...');
1914 - WinExec(PChar(HomeDrive + '\cacicsvc.exe -install'), SW_NORMAL); 1733 + WinExec(PChar(g_oCacic.getWinDir + 'cacicsvc.exe -install'), SW_NORMAL);
1915 End 1734 End
1916 else if ((wordServiceStatus < 4) or 1735 else if ((wordServiceStatus < 4) or
1917 (wordServiceStatus > 4)) then 1736 (wordServiceStatus > 4)) then
1918 Begin 1737 Begin
1919 LogDiario('Iniciando CACICservice'); 1738 LogDiario('Iniciando CACICservice');
1920 - WinExec(PChar(HomeDrive + '\cacicsvc.exe -start'), SW_NORMAL); 1739 + WinExec(PChar(g_oCacic.getWinDir + 'cacicsvc.exe -start'), SW_NORMAL);
1921 End 1740 End
1922 else 1741 else
1923 LogDiario('Não instalei o CACICservice. Já está rodando...'); 1742 LogDiario('Não instalei o CACICservice. Já está rodando...');
@@ -1937,14 +1756,11 @@ begin @@ -1937,14 +1756,11 @@ begin
1937 LogDiario('Falha na Instalação/Atualização'); 1756 LogDiario('Falha na Instalação/Atualização');
1938 End; 1757 End;
1939 1758
1940 - Application.Terminate;  
1941 - {  
1942 - Considerando-se que o objeto se libera ao fim da aplicação  
1943 try 1759 try
1944 g_oCacic.Free(); 1760 g_oCacic.Free();
1945 except 1761 except
1946 end; 1762 end;
1947 - } 1763 + Application.Terminate;
1948 end; 1764 end;
1949 1765
1950 function ServiceRunning(sMachine, sService: PChar): Boolean; 1766 function ServiceRunning(sMachine, sService: PChar): Boolean;
chksis/chksis.dpr
@@ -37,63 +37,22 @@ uses @@ -37,63 +37,22 @@ uses
37 IdTCPClient, 37 IdTCPClient,
38 PJVersionInfo, 38 PJVersionInfo,
39 Winsock, 39 Winsock,
40 - DCPcrypt2,  
41 - DCPrijndael,  
42 - DCPbase64,  
43 Tlhelp32, 40 Tlhelp32,
44 CACIC_Library in '..\CACIC_Library.pas'; 41 CACIC_Library in '..\CACIC_Library.pas';
45 42
46 -var PJVersionInfo1: TPJVersionInfo;  
47 - Dir,  
48 - v_CipherKey,  
49 - v_IV,  
50 - v_SeparatorKey,  
51 - v_strCipherClosed,  
52 - v_DatFileName,  
53 - v_versao_local,  
54 - v_versao_remota,  
55 - v_retorno,  
56 - v_te_so : String;  
57 - v_Debugs : Boolean;  
58 -var v_tstrCipherOpened : TStrings;  
59 -  
60 -var g_oCacic : TCACIC;  
61 -  
62 -// Some constants that are dependant on the cipher being used  
63 -// Assuming MCRYPT_RIJNDAEL_128 (i.e., 128bit blocksize, 256bit keysize)  
64 -const KeySize = 32; // 32 bytes = 256 bits  
65 - BlockSize = 16; // 16 bytes = 128 bits  
66 -  
67 -Function Explode(Texto, Separador : String) : TStrings;  
68 var 43 var
69 - strItem : String;  
70 - ListaAuxUTILS : TStrings;  
71 - NumCaracteres,  
72 - TamanhoSeparador,  
73 - I : Integer;  
74 -Begin  
75 - ListaAuxUTILS := TStringList.Create;  
76 - strItem := '';  
77 - NumCaracteres := Length(Texto);  
78 - TamanhoSeparador := Length(Separador);  
79 - I := 1;  
80 - While I <= NumCaracteres Do  
81 - Begin  
82 - If (Copy(Texto,I,TamanhoSeparador) = Separador) or (I = NumCaracteres) Then  
83 - Begin  
84 - if (I = NumCaracteres) then strItem := strItem + Texto[I];  
85 - ListaAuxUTILS.Add(trim(strItem));  
86 - strItem := '';  
87 - I := I + (TamanhoSeparador-1);  
88 - end  
89 - Else  
90 - strItem := strItem + Texto[I];  
91 -  
92 - I := I + 1;  
93 - End;  
94 - Explode := ListaAuxUTILS;  
95 -end; 44 + PJVersionInfo1: TPJVersionInfo;
  45 + v_strCipherClosed,
  46 + v_versao_local,
  47 + v_versao_remota,
  48 + v_retorno : String;
  49 + v_Debugs : Boolean;
96 50
  51 +var
  52 + v_tstrCipherOpened : TStrings;
  53 +
  54 +var
  55 + g_oCacic : TCACIC;
97 56
98 function VerFmt(const MS, LS: DWORD): string; 57 function VerFmt(const MS, LS: DWORD): string;
99 // Format the version number from the given DWORDs containing the info 58 // Format the version number from the given DWORDs containing the info
@@ -102,31 +61,17 @@ begin @@ -102,31 +61,17 @@ begin
102 [HiWord(MS), LoWord(MS), HiWord(LS), LoWord(LS)]) 61 [HiWord(MS), LoWord(MS), HiWord(LS), LoWord(LS)])
103 end; 62 end;
104 63
105 -{ TMainForm }  
106 -Function Implode(p_Array : TStrings ; p_Separador : String) : String;  
107 -var intAux : integer;  
108 - strAux : string;  
109 -Begin  
110 - strAux := '';  
111 - For intAux := 0 To p_Array.Count -1 do  
112 - Begin  
113 - if (strAux<>'') then strAux := strAux + p_Separador;  
114 - strAux := strAux + p_Array[intAux];  
115 - End;  
116 - Implode := strAux;  
117 -end;  
118 -  
119 procedure log_diario(strMsg : String); 64 procedure log_diario(strMsg : String);
120 var 65 var
121 HistoricoLog : TextFile; 66 HistoricoLog : TextFile;
122 strDataArqLocal, 67 strDataArqLocal,
123 strDataAtual, 68 strDataAtual,
124 - p_path : string; 69 + v_path : string;
125 begin 70 begin
126 try 71 try
127 - p_path := Dir + '\chksis.log';  
128 - FileSetAttr (p_path,0); // Retira os atributos do arquivo para evitar o erro FILE ACCESS DENIED em máquinas 2000  
129 - AssignFile(HistoricoLog,p_path); {Associa o arquivo a uma variável do tipo TextFile} 72 + v_path := g_oCacic.getWinDir + 'chksis.log';
  73 + FileSetAttr (v_path,0); // Retira os atributos do arquivo para evitar o erro FILE ACCESS DENIED em máquinas 2000
  74 + AssignFile(HistoricoLog,v_path); {Associa o arquivo a uma variável do tipo TextFile}
130 {$IOChecks off} 75 {$IOChecks off}
131 Reset(HistoricoLog); {Abre o arquivo texto} 76 Reset(HistoricoLog); {Abre o arquivo texto}
132 {$IOChecks on} 77 {$IOChecks on}
@@ -136,7 +81,7 @@ begin @@ -136,7 +81,7 @@ begin
136 Append(HistoricoLog); 81 Append(HistoricoLog);
137 Writeln(HistoricoLog,FormatDateTime('dd/mm hh:nn:ss : ', Now) + '======================> Iniciando o Log <======================='); 82 Writeln(HistoricoLog,FormatDateTime('dd/mm hh:nn:ss : ', Now) + '======================> Iniciando o Log <=======================');
138 end; 83 end;
139 - DateTimeToString(strDataArqLocal, 'yyyymmdd', FileDateToDateTime(Fileage(p_path))); 84 + DateTimeToString(strDataArqLocal, 'yyyymmdd', FileDateToDateTime(Fileage(v_path)));
140 DateTimeToString(strDataAtual , 'yyyymmdd', Date); 85 DateTimeToString(strDataAtual , 'yyyymmdd', Date);
141 if (strDataAtual <> strDataArqLocal) then // Se o arquivo INI não é da data atual... 86 if (strDataAtual <> strDataArqLocal) then // Se o arquivo INI não é da data atual...
142 begin 87 begin
@@ -163,93 +108,6 @@ Begin @@ -163,93 +108,6 @@ Begin
163 if v_Debugs then log_diario('(v.'+getVersionInfo(ParamStr(0))+') DEBUG - '+p_msg); 108 if v_Debugs then log_diario('(v.'+getVersionInfo(ParamStr(0))+') DEBUG - '+p_msg);
164 End; 109 End;
165 110
166 -// Pad a string with zeros so that it is a multiple of size  
167 -function PadWithZeros(const str : string; size : integer) : string;  
168 -var  
169 - origsize, i : integer;  
170 -begin  
171 - Result := str;  
172 - origsize := Length(Result);  
173 - if ((origsize mod size) <> 0) or (origsize = 0) then  
174 - begin  
175 - SetLength(Result,((origsize div size)+1)*size);  
176 - for i := origsize+1 to Length(Result) do  
177 - Result[i] := #0;  
178 - end;  
179 -end;  
180 -  
181 -  
182 -// Encrypt a string and return the Base64 encoded result  
183 -function EnCrypt(p_Data : String) : String;  
184 -var  
185 - l_Cipher : TDCP_rijndael;  
186 - l_Data, l_Key, l_IV : string;  
187 -begin  
188 - Try  
189 - // Pad Key, IV and Data with zeros as appropriate  
190 - l_Key := PadWithZeros(v_CipherKey,KeySize);  
191 - l_IV := PadWithZeros(v_IV,BlockSize);  
192 - l_Data := PadWithZeros(p_Data,BlockSize);  
193 -  
194 - // Create the cipher and initialise according to the key length  
195 - l_Cipher := TDCP_rijndael.Create(nil);  
196 - if Length(v_CipherKey) <= 16 then  
197 - l_Cipher.Init(l_Key[1],128,@l_IV[1])  
198 - else if Length(v_CipherKey) <= 24 then  
199 - l_Cipher.Init(l_Key[1],192,@l_IV[1])  
200 - else  
201 - l_Cipher.Init(l_Key[1],256,@l_IV[1]);  
202 -  
203 - // Encrypt the data  
204 - l_Cipher.EncryptCBC(l_Data[1],l_Data[1],Length(l_Data));  
205 -  
206 - // Free the cipher and clear sensitive information  
207 - l_Cipher.Free;  
208 - FillChar(l_Key[1],Length(l_Key),0);  
209 -  
210 - // Return the Base64 encoded result  
211 - Result := Base64EncodeStr(l_Data);  
212 - Except  
213 - log_diario('Erro no Processo de Criptografia');  
214 - End;  
215 -end;  
216 -  
217 -function DeCrypt(p_Data : String) : String;  
218 -var  
219 - l_Cipher : TDCP_rijndael;  
220 - l_Data, l_Key, l_IV : string;  
221 -begin  
222 - Try  
223 - // Pad Key and IV with zeros as appropriate  
224 - l_Key := PadWithZeros(v_CipherKey,KeySize);  
225 - l_IV := PadWithZeros(v_IV,BlockSize);  
226 -  
227 - // Decode the Base64 encoded string  
228 - l_Data := Base64DecodeStr(p_Data);  
229 -  
230 - // Create the cipher and initialise according to the key length  
231 - l_Cipher := TDCP_rijndael.Create(nil);  
232 - if Length(v_CipherKey) <= 16 then  
233 - l_Cipher.Init(l_Key[1],128,@l_IV[1])  
234 - else if Length(v_CipherKey) <= 24 then  
235 - l_Cipher.Init(l_Key[1],192,@l_IV[1])  
236 - else  
237 - l_Cipher.Init(l_Key[1],256,@l_IV[1]);  
238 -  
239 - // Decrypt the data  
240 - l_Cipher.DecryptCBC(l_Data[1],l_Data[1],Length(l_Data));  
241 -  
242 - // Free the cipher and clear sensitive information  
243 - l_Cipher.Free;  
244 - FillChar(l_Key[1],Length(l_Key),0);  
245 -  
246 - // Return the result  
247 - Result := l_Data;  
248 - Except  
249 - log_diario('Erro no Processo de Decriptografia');  
250 - End;  
251 -end;  
252 -  
253 Function CipherClose(p_DatFileName : string) : String; 111 Function CipherClose(p_DatFileName : string) : String;
254 var v_strCipherOpenImploded : string; 112 var v_strCipherOpenImploded : string;
255 v_DatFile : TextFile; 113 v_DatFile : TextFile;
@@ -270,8 +128,8 @@ begin @@ -270,8 +128,8 @@ begin
270 Append(v_DatFile); 128 Append(v_DatFile);
271 End; 129 End;
272 130
273 - v_strCipherOpenImploded := Implode(v_tstrCipherOpened,v_SeparatorKey);  
274 - v_strCipherClosed := EnCrypt(v_strCipherOpenImploded); 131 + v_strCipherOpenImploded := g_oCacic.implode(v_tstrCipherOpened,g_oCacic.getSeparatorKey);
  132 + v_strCipherClosed := g_oCacic.enCrypt(v_strCipherOpenImploded);
275 133
276 Writeln(v_DatFile,v_strCipherClosed); {Grava a string Texto no arquivo texto} 134 Writeln(v_DatFile,v_strCipherClosed); {Grava a string Texto no arquivo texto}
277 135
@@ -302,12 +160,12 @@ begin @@ -302,12 +160,12 @@ begin
302 Readln(v_DatFile,v_strCipherClosed); 160 Readln(v_DatFile,v_strCipherClosed);
303 while not EOF(v_DatFile) do Readln(v_DatFile,v_strCipherClosed); 161 while not EOF(v_DatFile) do Readln(v_DatFile,v_strCipherClosed);
304 CloseFile(v_DatFile); 162 CloseFile(v_DatFile);
305 - v_strCipherOpened:= DeCrypt(v_strCipherClosed); 163 + v_strCipherOpened:= g_oCacic.deCrypt(v_strCipherClosed);
306 end; 164 end;
307 if (trim(v_strCipherOpened)<>'') then 165 if (trim(v_strCipherOpened)<>'') then
308 - Result := explode(v_strCipherOpened,v_SeparatorKey) 166 + Result := g_oCacic.explode(v_strCipherOpened,g_oCacic.getSeparatorKey)
309 else 167 else
310 - Result := explode('Configs.ID_SO' + v_SeparatorKey + g_oCacic.getWindowsStrId() +v_SeparatorKey+'Configs.Endereco_WS'+v_SeparatorKey+'/cacic2/ws/',v_SeparatorKey); 168 + Result := g_oCacic.explode('Configs.ID_SO' + g_oCacic.getSeparatorKey + g_oCacic.getWindowsStrId() + g_oCacic.getSeparatorKey + 'Configs.Endereco_WS' + g_oCacic.getSeparatorKey + '/cacic2/ws/',g_oCacic.getSeparatorKey);
311 169
312 if Result.Count mod 2 <> 0 then 170 if Result.Count mod 2 <> 0 then
313 Result.Add(''); 171 Result.Add('');
@@ -344,7 +202,7 @@ var RegEditSet: TRegistry; @@ -344,7 +202,7 @@ var RegEditSet: TRegistry;
344 ListaAuxSet : TStrings; 202 ListaAuxSet : TStrings;
345 I : Integer; 203 I : Integer;
346 begin 204 begin
347 - ListaAuxSet := Explode(Chave, '); 205 + ListaAuxSet := g_oCacic.explode(Chave, ');
348 strRootKey := ListaAuxSet[0]; 206 strRootKey := ListaAuxSet[0];
349 For I := 1 To ListaAuxSet.Count - 2 Do strKey := strKey + ListaAuxSet[I] + '\'; 207 For I := 1 To ListaAuxSet.Count - 2 Do strKey := strKey + ListaAuxSet[I] + '\';
350 strValue := ListaAuxSet[ListaAuxSet.Count - 1]; 208 strValue := ListaAuxSet[ListaAuxSet.Count - 1];
@@ -402,7 +260,7 @@ var RegEditGet: TRegistry; @@ -402,7 +260,7 @@ var RegEditGet: TRegistry;
402 DataSize, Len, I : Integer; 260 DataSize, Len, I : Integer;
403 begin 261 begin
404 try 262 try
405 - ListaAuxGet := Explode(Chave, '); 263 + ListaAuxGet := g_oCacic.explode(Chave, ');
406 264
407 strRootKey := ListaAuxGet[0]; 265 strRootKey := ListaAuxGet[0];
408 For I := 1 To ListaAuxGet.Count - 2 Do strKey := strKey + ListaAuxGet[I] + '\'; 266 For I := 1 To ListaAuxGet.Count - 2 Do strKey := strKey + ListaAuxGet[I] + '\';
@@ -484,7 +342,7 @@ var RegDelValorReg: TRegistry; @@ -484,7 +342,7 @@ var RegDelValorReg: TRegistry;
484 ListaAuxDel : TStrings; 342 ListaAuxDel : TStrings;
485 I : Integer; 343 I : Integer;
486 begin 344 begin
487 - ListaAuxDel := Explode(Chave, '); 345 + ListaAuxDel := g_oCacic.explode(Chave, ');
488 strRootKey := ListaAuxDel[0]; 346 strRootKey := ListaAuxDel[0];
489 For I := 1 To ListaAuxDel.Count - 2 Do strKey := strKey + ListaAuxDel[I] + '\'; 347 For I := 1 To ListaAuxDel.Count - 2 Do strKey := strKey + ListaAuxDel[I] + '\';
490 strValue := ListaAuxDel[ListaAuxDel.Count - 1]; 348 strValue := ListaAuxDel[ListaAuxDel.Count - 1];
@@ -521,8 +379,6 @@ begin @@ -521,8 +379,6 @@ begin
521 Result := IntToStr(I1); 379 Result := IntToStr(I1);
522 end; 380 end;
523 381
524 -  
525 -  
526 Function FTP(p_Host : String; p_Port : String; p_Username : String; p_Password : String; p_PathServer : String; p_File : String; p_Dest : String) : Boolean; 382 Function FTP(p_Host : String; p_Port : String; p_Username : String; p_Password : String; p_PathServer : String; p_File : String; p_Dest : String) : Boolean;
527 var IdFTP : TIdFTP; 383 var IdFTP : TIdFTP;
528 msg_error : string; 384 msg_error : string;
@@ -565,15 +421,6 @@ begin @@ -565,15 +421,6 @@ begin
565 End; 421 End;
566 end; 422 end;
567 423
568 -  
569 -function HomeDrive : string;  
570 -var  
571 -WinDir : array [0..144] of char;  
572 -begin  
573 -GetWindowsDirectory (WinDir, 144);  
574 -Result := StrPas (WinDir);  
575 -end;  
576 -  
577 function GetIP: string; 424 function GetIP: string;
578 var ipwsa:TWSAData; p:PHostEnt; s:array[0..128] of char; c:pchar; 425 var ipwsa:TWSAData; p:PHostEnt; s:array[0..128] of char; c:pchar;
579 begin 426 begin
@@ -704,11 +551,11 @@ Begin @@ -704,11 +551,11 @@ Begin
704 result := false; 551 result := false;
705 552
706 // Se o aguarde_CACIC.txt existir é porque refere-se a uma versão mais atual: 2.2.0.20 ou maior 553 // Se o aguarde_CACIC.txt existir é porque refere-se a uma versão mais atual: 2.2.0.20 ou maior
707 - if (FileExists(Dir + '\aguarde_CACIC.txt')) then 554 + if (FileExists(g_oCacic.getCacicPath + 'aguarde_CACIC.txt')) then
708 Begin 555 Begin
709 // Se eu conseguir matar o arquivo abaixo é porque não há outra sessão deste agente aberta... (POG? Nããão! :) ) 556 // Se eu conseguir matar o arquivo abaixo é porque não há outra sessão deste agente aberta... (POG? Nããão! :) )
710 - Matar(Dir,'aguarde_CACIC.txt');  
711 - if (not (FileExists(Dir + '\aguarde_CACIC.txt'))) then 557 + Matar(g_oCacic.getCacicPath,'aguarde_CACIC.txt');
  558 + if (not (FileExists(g_oCacic.getCacicPath + 'aguarde_CACIC.txt'))) then
712 result := true; 559 result := true;
713 End; 560 End;
714 End; 561 End;
@@ -720,7 +567,7 @@ var v_versao_REM, @@ -720,7 +567,7 @@ var v_versao_REM,
720 v_array_NomeAgente : TStrings; 567 v_array_NomeAgente : TStrings;
721 intAux : integer; 568 intAux : integer;
722 Begin 569 Begin
723 - v_array_NomeAgente := explode(p_strNomeAgente,'); 570 + v_array_NomeAgente := g_oCacic.explode(p_strNomeAgente,');
724 571
725 v_versao_REM := XML_RetornaValor(StringReplace(StrUpper(PChar(v_array_NomeAgente[v_array_NomeAgente.count-1])),'.EXE','',[rfReplaceAll]), v_retorno); 572 v_versao_REM := XML_RetornaValor(StringReplace(StrUpper(PChar(v_array_NomeAgente[v_array_NomeAgente.count-1])),'.EXE','',[rfReplaceAll]), v_retorno);
726 v_versao_LOC := GetVersionInfo(p_strNomeAgente); 573 v_versao_LOC := GetVersionInfo(p_strNomeAgente);
@@ -779,7 +626,7 @@ procedure executa_chksis; @@ -779,7 +626,7 @@ procedure executa_chksis;
779 var 626 var
780 bool_download_CACIC2, 627 bool_download_CACIC2,
781 bool_ExistsAutoRun : boolean; 628 bool_ExistsAutoRun : boolean;
782 - v_home_drive, v_ip_serv_cacic, v_cacic_dir, v_rem_cacic_v0x, 629 + v_ip_serv_cacic, v_cacic_dir, v_rem_cacic_v0x,
783 v_te_serv_updates, v_nu_porta_serv_updates, v_nm_usuario_login_serv_updates, 630 v_te_serv_updates, v_nu_porta_serv_updates, v_nm_usuario_login_serv_updates,
784 v_te_senha_login_serv_updates, v_te_path_serv_updates : String; 631 v_te_senha_login_serv_updates, v_te_path_serv_updates : String;
785 Request_Config : TStringList; 632 Request_Config : TStringList;
@@ -789,19 +636,19 @@ var @@ -789,19 +636,19 @@ var
789 begin 636 begin
790 637
791 bool_download_CACIC2 := false; 638 bool_download_CACIC2 := false;
792 - v_home_drive := MidStr(HomeDrive,1,3); //x:\  
793 v_ip_serv_cacic := GetValorChaveRegIni('Cacic2', 'ip_serv_cacic', ExtractFilePath(ParamStr(0)) + 'chksis.ini'); 639 v_ip_serv_cacic := GetValorChaveRegIni('Cacic2', 'ip_serv_cacic', ExtractFilePath(ParamStr(0)) + 'chksis.ini');
794 - v_cacic_dir := GetValorChaveRegIni('Cacic2', 'cacic_dir', ExtractFilePath(ParamStr(0)) + 'chksis.ini'); 640 + v_cacic_dir := GetValorChaveRegIni('Cacic2', 'cacic_dir' , ExtractFilePath(ParamStr(0)) + 'chksis.ini');
795 v_rem_cacic_v0x := GetValorChaveRegIni('Cacic2', 'rem_cacic_v0x', ExtractFilePath(ParamStr(0)) + 'chksis.ini'); 641 v_rem_cacic_v0x := GetValorChaveRegIni('Cacic2', 'rem_cacic_v0x', ExtractFilePath(ParamStr(0)) + 'chksis.ini');
796 - Dir := v_home_drive + v_cacic_dir; 642 +
  643 + g_oCacic.setCacicPath(g_oCacic.getHomeDrive + v_cacic_dir +'\');
797 644
798 v_Debugs := false; 645 v_Debugs := false;
799 - if DirectoryExists(v_cacic_dir + '\Temp\Debugs') then 646 + if DirectoryExists(g_oCacic.getCacicPath + 'Temp\Debugs') then
800 Begin 647 Begin
801 - if (FormatDateTime('ddmmyyyy', GetFolderDate(v_cacic_dir + '\Temp\Debugs')) = FormatDateTime('ddmmyyyy', date)) then 648 + if (FormatDateTime('ddmmyyyy', GetFolderDate(g_oCacic.getCacicPath + 'Temp\Debugs')) = FormatDateTime('ddmmyyyy', date)) then
802 Begin 649 Begin
803 v_Debugs := true; 650 v_Debugs := true;
804 - log_DEBUG('Pasta "' + v_cacic_dir + '\Temp\Debugs" com data '+FormatDateTime('dd-mm-yyyy', GetFolderDate(v_cacic_dir + '\Temp\Debugs'))+' encontrada. DEBUG ativado.'); 651 + log_DEBUG('Pasta "' + g_oCacic.getCacicPath + 'Temp\Debugs" com data '+FormatDateTime('dd-mm-yyyy', GetFolderDate(g_oCacic.getCacicPath + 'Temp\Debugs'))+' encontrada. DEBUG ativado.');
805 End; 652 End;
806 End; 653 End;
807 654
@@ -813,36 +660,30 @@ begin @@ -813,36 +660,30 @@ begin
813 end; 660 end;
814 661
815 // Verifico a existência do diretório configurado para o Cacic, normalmente CACIC 662 // Verifico a existência do diretório configurado para o Cacic, normalmente CACIC
816 - if not DirectoryExists(Dir) then 663 + if not DirectoryExists(g_oCacic.getCacicPath) then
817 begin 664 begin
818 //log_diario('Criando diretório ' + Dir,ExtractFilePath(ParamStr(0))); 665 //log_diario('Criando diretório ' + Dir,ExtractFilePath(ParamStr(0)));
819 - ForceDirectories(Dir); 666 + ForceDirectories(g_oCacic.getCacicPath);
820 end; 667 end;
821 668
822 // Para eliminar versão 20014 e anteriores que provavelmente não fazem corretamente o AutoUpdate 669 // Para eliminar versão 20014 e anteriores que provavelmente não fazem corretamente o AutoUpdate
823 - if not DirectoryExists(Dir+'\modulos') then 670 + if not DirectoryExists(g_oCacic.getCacicPath+'modulos') then
824 begin 671 begin
825 - log_diario('Excluindo '+ Dir + '\cacic2.exe');  
826 - Matar(Dir,'\cacic2.exe');  
827 - log_diario('Criando diretório ' + Dir + '\modulos');  
828 - ForceDirectories(Dir + '\modulos'); 672 + log_diario('Excluindo '+ g_oCacic.getCacicPath + 'cacic2.exe');
  673 + Matar(g_oCacic.getCacicPath,'cacic2.exe');
  674 + log_diario('Criando diretório ' + g_oCacic.getCacicPath + 'modulos');
  675 + ForceDirectories(g_oCacic.getCacicPath + 'modulos');
829 end; 676 end;
830 677
831 // Crio o SubDiretório TEMP, caso não exista 678 // Crio o SubDiretório TEMP, caso não exista
832 - if not DirectoryExists(Dir+'\temp') then 679 + if not DirectoryExists(g_oCacic.getCacicPath+'temp') then
833 begin 680 begin
834 - log_diario('Criando diretório ' + Dir + '\temp');  
835 - ForceDirectories(Dir + '\temp'); 681 + log_diario('Criando diretório ' + g_oCacic.getCacicPath + 'temp');
  682 + ForceDirectories(g_oCacic.getCacicPath + 'temp');
836 end; 683 end;
837 684
838 - //chave AES. Recomenda-se que cada empresa altere a sua chave.  
839 - v_CipherKey := 'CacicBrasil';  
840 - v_IV := 'abcdefghijklmnop';  
841 - v_SeparatorKey := '=CacicIsFree=';  
842 - v_DatFileName := Dir + '\cacic2.dat';  
843 -  
844 // Verifico existência dos dois principais objetos 685 // Verifico existência dos dois principais objetos
845 - If (not FileExists(Dir + '\cacic2.exe')) or (not FileExists(Dir + '\modulos\ger_cols.exe')) Then 686 + If (not FileExists(g_oCacic.getCacicPath + 'cacic2.exe')) or (not FileExists(g_oCacic.getCacicPath + 'modulos\ger_cols.exe')) Then
846 Begin 687 Begin
847 // Busco as configurações para acesso ao ambiente FTP - Updates 688 // Busco as configurações para acesso ao ambiente FTP - Updates
848 Request_Config := TStringList.Create; 689 Request_Config := TStringList.Create;
@@ -886,68 +727,68 @@ begin @@ -886,68 +727,68 @@ begin
886 Response_Config.Free; 727 Response_Config.Free;
887 728
888 // Verificação de versão do cacic2.exe e exclusão em caso de versão antiga 729 // Verificação de versão do cacic2.exe e exclusão em caso de versão antiga
889 - If (FileExists(Dir + '\cacic2.exe')) Then 730 + If (FileExists(g_oCacic.getCacicPath + 'cacic2.exe')) Then
890 Begin 731 Begin
891 - intAux := ChecaVersoesAgentes(Dir + '\cacic2.exe'); 732 + intAux := ChecaVersoesAgentes(g_oCacic.getCacicPath + 'cacic2.exe');
892 // 0 => Arquivo de versões ou informação inexistente 733 // 0 => Arquivo de versões ou informação inexistente
893 // 1 => Versões iguais 734 // 1 => Versões iguais
894 // 2 => Versões diferentes 735 // 2 => Versões diferentes
895 if (intAux = 0) then 736 if (intAux = 0) then
896 Begin 737 Begin
897 - v_versao_local := StringReplace(trim(GetVersionInfo(Dir + '\cacic2.exe')),'.','',[rfReplaceAll]); 738 + v_versao_local := StringReplace(trim(GetVersionInfo(g_oCacic.getCacicPath + 'cacic2.exe')),'.','',[rfReplaceAll]);
898 v_versao_remota := StringReplace(XML_RetornaValor('CACIC2' , v_retorno),'0103','',[rfReplaceAll]); 739 v_versao_remota := StringReplace(XML_RetornaValor('CACIC2' , v_retorno),'0103','',[rfReplaceAll]);
899 End; 740 End;
900 741
901 if (intAux = 2) or // Caso haja diferença na comparação de versões com "versoes_agentes.ini"... 742 if (intAux = 2) or // Caso haja diferença na comparação de versões com "versoes_agentes.ini"...
902 (v_versao_local ='0000') or // Provavelmente versão muito antiga ou corrompida 743 (v_versao_local ='0000') or // Provavelmente versão muito antiga ou corrompida
903 (v_versao_local ='2208') then 744 (v_versao_local ='2208') then
904 - Matar(Dir, '\cacic2.exe'); 745 + Matar(g_oCacic.getCacicPath, 'cacic2.exe');
905 End; 746 End;
906 747
907 // Verificação de versão do ger_cols.exe e exclusão em caso de versão antiga 748 // Verificação de versão do ger_cols.exe e exclusão em caso de versão antiga
908 - If (FileExists(Dir + '\modulos\ger_cols.exe')) Then 749 + If (FileExists(g_oCacic.getCacicPath + 'modulos\ger_cols.exe')) Then
909 Begin 750 Begin
910 - intAux := ChecaVersoesAgentes(Dir + '\modulos\ger_cols.exe'); 751 + intAux := ChecaVersoesAgentes(g_oCacic.getCacicPath + 'modulos\ger_cols.exe');
911 // 0 => Arquivo de versões ou informação inexistente 752 // 0 => Arquivo de versões ou informação inexistente
912 // 1 => Versões iguais 753 // 1 => Versões iguais
913 // 2 => Versões diferentes 754 // 2 => Versões diferentes
914 if (intAux = 0) then 755 if (intAux = 0) then
915 Begin 756 Begin
916 - v_versao_local := StringReplace(trim(GetVersionInfo(Dir + '\modulos\ger_cols.exe')),'.','',[rfReplaceAll]); 757 + v_versao_local := StringReplace(trim(GetVersionInfo(g_oCacic.getCacicPath + 'modulos\ger_cols.exe')),'.','',[rfReplaceAll]);
917 v_versao_remota := StringReplace(XML_RetornaValor('GER_COLS' , v_retorno),'0103','',[rfReplaceAll]); 758 v_versao_remota := StringReplace(XML_RetornaValor('GER_COLS' , v_retorno),'0103','',[rfReplaceAll]);
918 End; 759 End;
919 760
920 if (intAux = 2) or // Caso haja diferença na comparação de versões com "versoes_agentes.ini"... 761 if (intAux = 2) or // Caso haja diferença na comparação de versões com "versoes_agentes.ini"...
921 (v_versao_local ='0000') then // Provavelmente versão muito antiga ou corrompida 762 (v_versao_local ='0000') then // Provavelmente versão muito antiga ou corrompida
922 - Matar(Dir + '\modulos, 'ger_cols.exe'); 763 + Matar(g_oCacic.getCacicPath + 'modulos, 'ger_cols.exe');
923 764
924 End; 765 End;
925 766
926 767
927 // Tento detectar o Agente Principal e faço FTP caso não exista 768 // Tento detectar o Agente Principal e faço FTP caso não exista
928 - If not FileExists(Dir + '\cacic2.exe') Then 769 + If not FileExists(g_oCacic.getCacicPath + 'cacic2.exe') Then
929 begin 770 begin
930 log_diario('Fazendo FTP de cacic2.exe a partir de ' + v_te_serv_updates + '/' + 771 log_diario('Fazendo FTP de cacic2.exe a partir de ' + v_te_serv_updates + '/' +
931 v_nu_porta_serv_updates+'/'+ 772 v_nu_porta_serv_updates+'/'+
932 v_nm_usuario_login_serv_updates + '/' + 773 v_nm_usuario_login_serv_updates + '/' +
933 - v_te_path_serv_updates + ' para a pasta ' + Dir); 774 + v_te_path_serv_updates + ' para a pasta ' + g_oCacic.getCacicPath);
934 FTP(v_te_serv_updates, 775 FTP(v_te_serv_updates,
935 v_nu_porta_serv_updates, 776 v_nu_porta_serv_updates,
936 v_nm_usuario_login_serv_updates, 777 v_nm_usuario_login_serv_updates,
937 v_te_senha_login_serv_updates, 778 v_te_senha_login_serv_updates,
938 v_te_path_serv_updates, 779 v_te_path_serv_updates,
939 'cacic2.exe', 780 'cacic2.exe',
940 - Dir); 781 + g_oCacic.getCacicPath);
941 bool_download_CACIC2 := true; 782 bool_download_CACIC2 := true;
942 end; 783 end;
943 784
944 // Tento detectar o Gerente de Coletas e faço FTP caso não exista 785 // Tento detectar o Gerente de Coletas e faço FTP caso não exista
945 - If (not FileExists(Dir + '\modulos\ger_cols.exe')) Then 786 + If (not FileExists(g_oCacic.getCacicPath + 'modulos\ger_cols.exe')) Then
946 begin 787 begin
947 log_diario('Fazendo FTP de ger_cols.exe a partir de ' + v_te_serv_updates + '/' + 788 log_diario('Fazendo FTP de ger_cols.exe a partir de ' + v_te_serv_updates + '/' +
948 v_nu_porta_serv_updates+'/'+ 789 v_nu_porta_serv_updates+'/'+
949 v_nm_usuario_login_serv_updates + '/' + 790 v_nm_usuario_login_serv_updates + '/' +
950 - v_te_path_serv_updates + ' para a pasta ' + Dir + '\modulos'); 791 + v_te_path_serv_updates + ' para a pasta ' + g_oCacic.getCacicPath + 'modulos');
951 792
952 FTP(v_te_serv_updates, 793 FTP(v_te_serv_updates,
953 v_nu_porta_serv_updates, 794 v_nu_porta_serv_updates,
@@ -955,7 +796,7 @@ begin @@ -955,7 +796,7 @@ begin
955 v_te_senha_login_serv_updates, 796 v_te_senha_login_serv_updates,
956 v_te_path_serv_updates, 797 v_te_path_serv_updates,
957 'ger_cols.exe', 798 'ger_cols.exe',
958 - Dir + '\modulos'); 799 + g_oCacic.getCacicPath + 'modulos');
959 end; 800 end;
960 801
961 802
@@ -988,13 +829,13 @@ begin @@ -988,13 +829,13 @@ begin
988 // Caso o Cacic tenha sido baixado executo-o com parâmetro de configuração de servidor 829 // Caso o Cacic tenha sido baixado executo-o com parâmetro de configuração de servidor
989 if Posso_Rodar_CACIC or not bool_ExistsAutoRun then 830 if Posso_Rodar_CACIC or not bool_ExistsAutoRun then
990 Begin 831 Begin
991 - log_diario('Executando '+Dir + '\cacic2.exe /ip_serv_cacic=' + v_ip_serv_cacic); 832 + log_diario('Executando '+g_oCacic.getCacicPath + 'cacic2.exe /ip_serv_cacic=' + v_ip_serv_cacic);
992 833
993 // Caso tenha havido download de agentes principais, executar coletas imediatamente... 834 // Caso tenha havido download de agentes principais, executar coletas imediatamente...
994 if (bool_download_CACIC2) then 835 if (bool_download_CACIC2) then
995 - WinExec(PChar(Dir + '\cacic2.exe /ip_serv_cacic=' + v_ip_serv_cacic+ ' /execute'), SW_HIDE) 836 + WinExec(PChar(g_oCacic.getCacicPath + 'cacic2.exe /ip_serv_cacic=' + v_ip_serv_cacic+ ' /execute'), SW_HIDE)
996 else 837 else
997 - WinExec(PChar(Dir + '\cacic2.exe /ip_serv_cacic=' + v_ip_serv_cacic ), SW_HIDE); 838 + WinExec(PChar(g_oCacic.getCacicPath + 'cacic2.exe /ip_serv_cacic=' + v_ip_serv_cacic ), SW_HIDE);
998 End; 839 End;
999 end; 840 end;
1000 841
col_anvi/col_anvi.dpr
@@ -26,16 +26,9 @@ uses @@ -26,16 +26,9 @@ uses
26 TLHELP32, 26 TLHELP32,
27 ShellAPI, 27 ShellAPI,
28 PJVersionInfo, 28 PJVersionInfo,
29 - DCPcrypt2,  
30 - DCPrijndael,  
31 - DCPbase64,  
32 CACIC_Library in '..\CACIC_Library.pas'; 29 CACIC_Library in '..\CACIC_Library.pas';
33 30
34 -var p_path_cacic,  
35 - v_CipherKey,  
36 - v_IV,  
37 - v_strCipherClosed,  
38 - v_DatFileName : String; 31 +var v_strCipherClosed : String;
39 32
40 var v_Debugs : boolean; 33 var v_Debugs : boolean;
41 34
@@ -45,11 +38,6 @@ var v_tstrCipherOpened, @@ -45,11 +38,6 @@ var v_tstrCipherOpened,
45 var 38 var
46 g_oCacic : TCACIC; 39 g_oCacic : TCACIC;
47 40
48 -// Some constants that are dependant on the cipher being used  
49 -// Assuming MCRYPT_RIJNDAEL_128 (i.e., 128bit blocksize, 256bit keysize)  
50 -const KeySize = 32; // 32 bytes = 256 bits  
51 - BlockSize = 16; // 16 bytes = 128 bits  
52 -  
53 function VerFmt(const MS, LS: DWORD): string; 41 function VerFmt(const MS, LS: DWORD): string;
54 // Format the version number from the given DWORDs containing the info 42 // Format the version number from the given DWORDs containing the info
55 begin 43 begin
@@ -57,24 +45,14 @@ begin @@ -57,24 +45,14 @@ begin
57 [HiWord(MS), LoWord(MS), HiWord(LS), LoWord(LS)]) 45 [HiWord(MS), LoWord(MS), HiWord(LS), LoWord(LS)])
58 end; 46 end;
59 47
60 -{ TMainForm }  
61 -{ TMainForm }  
62 -function HomeDrive : string;  
63 -var  
64 -WinDir : array [0..144] of char;  
65 -begin  
66 -GetWindowsDirectory (WinDir, 144);  
67 -Result := StrPas (WinDir);  
68 -end;  
69 -  
70 procedure log_diario(strMsg : String); 48 procedure log_diario(strMsg : String);
71 var 49 var
72 HistoricoLog : TextFile; 50 HistoricoLog : TextFile;
73 strDataArqLocal, strDataAtual : string; 51 strDataArqLocal, strDataAtual : string;
74 begin 52 begin
75 try 53 try
76 - FileSetAttr (p_path_cacic + 'cacic2.log',0); // Retira os atributos do arquivo para evitar o erro FILE ACCESS DENIED em máquinas 2000  
77 - AssignFile(HistoricoLog,p_path_cacic + 'cacic2.log'); {Associa o arquivo a uma variável do tipo TextFile} 54 + FileSetAttr (g_oCacic.getCacicPath + '\cacic2.log',0); // Retira os atributos do arquivo para evitar o erro FILE ACCESS DENIED em máquinas 2000
  55 + AssignFile(HistoricoLog,g_oCacic.getCacicPath + '\cacic2.log'); {Associa o arquivo a uma variável do tipo TextFile}
78 {$IOChecks off} 56 {$IOChecks off}
79 Reset(HistoricoLog); {Abre o arquivo texto} 57 Reset(HistoricoLog); {Abre o arquivo texto}
80 {$IOChecks on} 58 {$IOChecks on}
@@ -84,7 +62,7 @@ begin @@ -84,7 +62,7 @@ begin
84 Append(HistoricoLog); 62 Append(HistoricoLog);
85 Writeln(HistoricoLog,FormatDateTime('dd/mm hh:nn:ss : ', Now) + '======================> Iniciando o Log do CACIC <======================='); 63 Writeln(HistoricoLog,FormatDateTime('dd/mm hh:nn:ss : ', Now) + '======================> Iniciando o Log do CACIC <=======================');
86 end; 64 end;
87 - DateTimeToString(strDataArqLocal, 'yyyymmdd', FileDateToDateTime(Fileage(p_path_cacic + 'cacic2.log'))); 65 + DateTimeToString(strDataArqLocal, 'yyyymmdd', FileDateToDateTime(Fileage(g_oCacic.getCacicPath + '\cacic2.log')));
88 DateTimeToString(strDataAtual , 'yyyymmdd', Date); 66 DateTimeToString(strDataAtual , 'yyyymmdd', Date);
89 if (strDataAtual <> strDataArqLocal) then // Se o arquivo INI não é da data atual... 67 if (strDataAtual <> strDataArqLocal) then // Se o arquivo INI não é da data atual...
90 begin 68 begin
@@ -127,92 +105,6 @@ begin @@ -127,92 +105,6 @@ begin
127 end; 105 end;
128 end; 106 end;
129 107
130 -  
131 -// Encrypt a string and return the Base64 encoded result  
132 -function EnCrypt(p_Data : String) : String;  
133 -var  
134 - l_Cipher : TDCP_rijndael;  
135 - l_Data, l_Key, l_IV : string;  
136 -begin  
137 - Try  
138 - // Pad Key, IV and Data with zeros as appropriate  
139 - l_Key := PadWithZeros(v_CipherKey,KeySize);  
140 - l_IV := PadWithZeros(v_IV,BlockSize);  
141 - l_Data := PadWithZeros(p_Data,BlockSize);  
142 -  
143 - // Create the cipher and initialise according to the key length  
144 - l_Cipher := TDCP_rijndael.Create(nil);  
145 - if Length(v_CipherKey) <= 16 then  
146 - l_Cipher.Init(l_Key[1],128,@l_IV[1])  
147 - else if Length(v_CipherKey) <= 24 then  
148 - l_Cipher.Init(l_Key[1],192,@l_IV[1])  
149 - else  
150 - l_Cipher.Init(l_Key[1],256,@l_IV[1]);  
151 -  
152 - // Encrypt the data  
153 - l_Cipher.EncryptCBC(l_Data[1],l_Data[1],Length(l_Data));  
154 -  
155 - // Free the cipher and clear sensitive information  
156 - l_Cipher.Free;  
157 - FillChar(l_Key[1],Length(l_Key),0);  
158 -  
159 - // Return the Base64 encoded result  
160 - Result := Base64EncodeStr(l_Data);  
161 - Except  
162 - log_diario('Erro no Processo de Criptografia');  
163 - End;  
164 -end;  
165 -  
166 -function DeCrypt(p_Data : String) : String;  
167 -var  
168 - l_Cipher : TDCP_rijndael;  
169 - l_Data, l_Key, l_IV : string;  
170 -begin  
171 - Try  
172 - // Pad Key and IV with zeros as appropriate  
173 - l_Key := PadWithZeros(v_CipherKey,KeySize);  
174 - l_IV := PadWithZeros(v_IV,BlockSize);  
175 -  
176 - // Decode the Base64 encoded string  
177 - l_Data := Base64DecodeStr(p_Data);  
178 -  
179 - // Create the cipher and initialise according to the key length  
180 - l_Cipher := TDCP_rijndael.Create(nil);  
181 - if Length(v_CipherKey) <= 16 then  
182 - l_Cipher.Init(l_Key[1],128,@l_IV[1])  
183 - else if Length(v_CipherKey) <= 24 then  
184 - l_Cipher.Init(l_Key[1],192,@l_IV[1])  
185 - else  
186 - l_Cipher.Init(l_Key[1],256,@l_IV[1]);  
187 -  
188 - // Decrypt the data  
189 - l_Cipher.DecryptCBC(l_Data[1],l_Data[1],Length(l_Data));  
190 -  
191 - // Free the cipher and clear sensitive information  
192 - l_Cipher.Free;  
193 - FillChar(l_Key[1],Length(l_Key),0);  
194 -  
195 - // Return the result  
196 - Result := l_Data;  
197 - Except  
198 - log_diario('Erro no Processo de Decriptografia');  
199 - End;  
200 -end;  
201 -  
202 -Function Implode(p_Array : TStrings ; p_Separador : String) : String;  
203 -var intAux : integer;  
204 - strAux : string;  
205 -Begin  
206 -//log_diario('IMPLODE - Tamanho de p_Array='+inttostr(p_array.Count));  
207 - strAux := '';  
208 - For intAux := 0 To p_Array.Count -1 do  
209 - Begin  
210 - if (strAux<>'') then strAux := strAux + p_Separador;  
211 - strAux := strAux + p_Array[intAux];  
212 - End;  
213 - Result := strAux;  
214 -end;  
215 -  
216 Procedure CipherClose(p_DatFileName : string; p_tstrCipherOpened : TStrings); 108 Procedure CipherClose(p_DatFileName : string; p_tstrCipherOpened : TStrings);
217 var v_strCipherOpenImploded : string; 109 var v_strCipherOpenImploded : string;
218 v_DatFile : TextFile; 110 v_DatFile : TextFile;
@@ -225,50 +117,14 @@ begin @@ -225,50 +117,14 @@ begin
225 Rewrite (v_DatFile); 117 Rewrite (v_DatFile);
226 Append(v_DatFile); 118 Append(v_DatFile);
227 119
228 - //v_Cipher := TDCP_rijndael.Create(nil);  
229 - //v_Cipher.InitStr(v_CipherKey,TDCP_md5);  
230 - v_strCipherOpenImploded := Implode(p_tstrCipherOpened,'=CacicIsFree=');  
231 -// v_strCipherClosed := v_Cipher.EncryptString(v_strCipherOpenImploded);  
232 - v_strCipherClosed := EnCrypt(v_strCipherOpenImploded);  
233 -// v_Cipher.Burn;  
234 -// v_Cipher.Free; 120 + v_strCipherOpenImploded := g_oCacic.implode(p_tstrCipherOpened,g_oCacic.getSeparatorKey);
  121 + v_strCipherClosed := g_oCacic.enCrypt(v_strCipherOpenImploded);
235 Writeln(v_DatFile,v_strCipherClosed); {Grava a string Texto no arquivo texto} 122 Writeln(v_DatFile,v_strCipherClosed); {Grava a string Texto no arquivo texto}
236 CloseFile(v_DatFile); 123 CloseFile(v_DatFile);
237 except 124 except
238 end; 125 end;
239 end; 126 end;
240 127
241 -Function Explode(Texto, Separador : String) : TStrings;  
242 -var  
243 - strItem : String;  
244 - ListaAuxUTILS : TStrings;  
245 - NumCaracteres,  
246 - TamanhoSeparador,  
247 - I : Integer;  
248 -Begin  
249 - ListaAuxUTILS := TStringList.Create;  
250 - strItem := '';  
251 - NumCaracteres := Length(Texto);  
252 - TamanhoSeparador := Length(Separador);  
253 - I := 1;  
254 - While I <= NumCaracteres Do  
255 - Begin  
256 - If (Copy(Texto,I,TamanhoSeparador) = Separador) or (I = NumCaracteres) Then  
257 - Begin  
258 - if (I = NumCaracteres) then strItem := strItem + Texto[I];  
259 - ListaAuxUTILS.Add(trim(strItem));  
260 - strItem := '';  
261 - I := I + (TamanhoSeparador-1);  
262 - end  
263 - Else  
264 - strItem := strItem + Texto[I];  
265 -  
266 - I := I + 1;  
267 - End;  
268 - Explode := ListaAuxUTILS;  
269 -end;  
270 -  
271 -  
272 Function CipherOpen(p_DatFileName : string) : TStrings; 128 Function CipherOpen(p_DatFileName : string) : TStrings;
273 var v_DatFile : TextFile; 129 var v_DatFile : TextFile;
274 v_strCipherOpened, 130 v_strCipherOpened,
@@ -290,12 +146,12 @@ begin @@ -290,12 +146,12 @@ begin
290 Readln(v_DatFile,v_strCipherClosed); 146 Readln(v_DatFile,v_strCipherClosed);
291 while not EOF(v_DatFile) do Readln(v_DatFile,v_strCipherClosed); 147 while not EOF(v_DatFile) do Readln(v_DatFile,v_strCipherClosed);
292 CloseFile(v_DatFile); 148 CloseFile(v_DatFile);
293 - v_strCipherOpened:= DeCrypt(v_strCipherClosed); 149 + v_strCipherOpened:= g_oCacic.deCrypt(v_strCipherClosed);
294 end; 150 end;
295 if (trim(v_strCipherOpened)<>'') then 151 if (trim(v_strCipherOpened)<>'') then
296 - Result := explode(v_strCipherOpened,'=CacicIsFree=') 152 + Result := g_oCacic.explode(v_strCipherOpened,g_oCacic.getSeparatorKey)
297 else 153 else
298 - Result := explode('Configs.ID_SO=CacicIsFree='+ g_oCacic.getWindowsStrId() +'=CacicIsFree=Configs.Endereco_WS=CacicIsFree=/cacic2/ws/','=CacicIsFree='); 154 + Result := g_oCacic.explode('Configs.ID_SO'+g_oCacic.getSeparatorKey+ g_oCacic.getWindowsStrId() + g_oCacic.getSeparatorKey + 'Configs.Endereco_WS'+g_oCacic.getSeparatorKey+'/cacic2/ws/',g_oCacic.getSeparatorKey);
299 155
300 if Result.Count mod 2 <> 0 then 156 if Result.Count mod 2 <> 0 then
301 Result.Add(''); 157 Result.Add('');
@@ -349,7 +205,7 @@ var RegEditGet: TRegistry; @@ -349,7 +205,7 @@ var RegEditGet: TRegistry;
349 begin 205 begin
350 try 206 try
351 Result := ''; 207 Result := '';
352 - ListaAuxGet := Explode(Chave, '); 208 + ListaAuxGet := g_oCacic.explode(Chave, ');
353 209
354 strRootKey := ListaAuxGet[0]; 210 strRootKey := ListaAuxGet[0];
355 For I := 1 To ListaAuxGet.Count - 2 Do strKey := strKey + ListaAuxGet[I] + '\'; 211 For I := 1 To ListaAuxGet.Count - 2 Do strKey := strKey + ListaAuxGet[I] + '\';
@@ -454,7 +310,7 @@ begin @@ -454,7 +310,7 @@ begin
454 If FileExists(strDirTrend + '\filter32.vxd') Then 310 If FileExists(strDirTrend + '\filter32.vxd') Then
455 Begin 311 Begin
456 // Em máquinas Windows 9X a versão do engine e do pattern não são gravadas no registro. Tenho que pegar direto dos arquivos. 312 // Em máquinas Windows 9X a versão do engine e do pattern não são gravadas no registro. Tenho que pegar direto dos arquivos.
457 - Lista2_RCO := Explode(getVersionInfo(strDirTrend + 'filter32.vxd'), '.'); // Pego só os dois primeiros dígitos. Por exemplo: 6.640.0.1001 vira 6.640. 313 + Lista2_RCO := g_oCacic.explode(getVersionInfo(strDirTrend + 'filter32.vxd'), '.'); // Pego só os dois primeiros dígitos. Por exemplo: 6.640.0.1001 vira 6.640.
458 nu_versao_engine := Lista2_RCO[0] + '.' + Lista2_RCO[1]; 314 nu_versao_engine := Lista2_RCO[0] + '.' + Lista2_RCO[1];
459 Lista2_RCO.Free; 315 Lista2_RCO.Free;
460 end 316 end
@@ -517,24 +373,25 @@ begin @@ -517,24 +373,25 @@ begin
517 SetValorDatMemoria('Col_Anvi.te_servidor' , te_servidor , v_tstrCipherOpened1); 373 SetValorDatMemoria('Col_Anvi.te_servidor' , te_servidor , v_tstrCipherOpened1);
518 SetValorDatMemoria('Col_Anvi.in_ativo' , in_ativo , v_tstrCipherOpened1); 374 SetValorDatMemoria('Col_Anvi.in_ativo' , in_ativo , v_tstrCipherOpened1);
519 SetValorDatMemoria('Col_Anvi.UVC' , UVC , v_tstrCipherOpened1); 375 SetValorDatMemoria('Col_Anvi.UVC' , UVC , v_tstrCipherOpened1);
520 - CipherClose(p_path_cacic + 'temp\col_anvi.dat' , v_tstrCipherOpened1); 376 + CipherClose(g_oCacic.getCacicPath + '\temp\col_anvi.dat' , v_tstrCipherOpened1);
521 end 377 end
522 else 378 else
523 Begin 379 Begin
524 SetValorDatMemoria('Col_Anvi.nada', 'nada', v_tstrCipherOpened1); 380 SetValorDatMemoria('Col_Anvi.nada', 'nada', v_tstrCipherOpened1);
525 - CipherClose(p_path_cacic + 'temp\col_anvi.dat', v_tstrCipherOpened1); 381 + CipherClose(g_oCacic.getCacicPath + '\temp\col_anvi.dat', v_tstrCipherOpened1);
526 End; 382 End;
527 Except 383 Except
528 Begin 384 Begin
529 SetValorDatMemoria('Col_Anvi.nada', 'nada', v_tstrCipherOpened1); 385 SetValorDatMemoria('Col_Anvi.nada', 'nada', v_tstrCipherOpened1);
530 SetValorDatMemoria('Col_Anvi.Fim', '99999999', v_tstrCipherOpened1); 386 SetValorDatMemoria('Col_Anvi.Fim', '99999999', v_tstrCipherOpened1);
531 - CipherClose(p_path_cacic + 'temp\col_anvi.dat', v_tstrCipherOpened1); 387 + CipherClose(g_oCacic.getCacicPath + '\temp\col_anvi.dat', v_tstrCipherOpened1);
532 End; 388 End;
533 End; 389 End;
534 end; 390 end;
535 391
536 var tstrTripa1 : TStrings; 392 var tstrTripa1 : TStrings;
537 intAux : integer; 393 intAux : integer;
  394 + v_path_cacic : String;
538 const 395 const
539 CACIC_APP_NAME = 'col_anvi'; 396 CACIC_APP_NAME = 'col_anvi';
540 397
@@ -544,50 +401,38 @@ begin @@ -544,50 +401,38 @@ begin
544 if( not g_oCacic.isAppRunning( CACIC_APP_NAME ) ) then 401 if( not g_oCacic.isAppRunning( CACIC_APP_NAME ) ) then
545 if (ParamCount>0) then 402 if (ParamCount>0) then
546 Begin 403 Begin
547 - For intAux := 1 to ParamCount do  
548 - Begin  
549 - if LowerCase(Copy(ParamStr(intAux),1,13)) = '/p_cipherkey=' then  
550 - v_CipherKey := Trim(Copy(ParamStr(intAux),14,Length((ParamStr(intAux))))); 404 + //Pegarei o nível anterior do diretório, que deve ser, por exemplo \Cacic, para leitura do cacic2.ini
  405 + tstrTripa1 := g_oCacic.explode(ExtractFilePath(ParamStr(0)),'\');
  406 + v_path_cacic := '';
  407 + For intAux := 0 to tstrTripa1.Count -2 do
  408 + v_path_cacic := v_path_cacic + tstrTripa1[intAux] + '\';
  409 +
  410 + g_oCacic.setCacicPath(v_path_cacic);
  411 +
  412 + v_Debugs := false;
  413 + if DirectoryExists(g_oCacic.getCacicPath + 'Temp\Debugs') then
  414 + Begin
  415 + if (FormatDateTime('ddmmyyyy', GetFolderDate(g_oCacic.getCacicPath + 'Temp\Debugs')) = FormatDateTime('ddmmyyyy', date)) then
  416 + Begin
  417 + v_Debugs := true;
  418 + log_diario('Pasta "' + g_oCacic.getCacicPath + 'Temp\Debugs" com data '+FormatDateTime('dd-mm-yyyy', GetFolderDate(g_oCacic.getCacicPath + 'Temp\Debugs'))+' encontrada. DEBUG ativado.');
  419 + End;
551 End; 420 End;
  421 +
  422 + v_tstrCipherOpened := TStrings.Create;
  423 + v_tstrCipherOpened := CipherOpen(g_oCacic.getDatFileName);
552 424
553 - if (trim(v_CipherKey)<>'') then 425 + v_tstrCipherOpened1 := TStrings.Create;
  426 + v_tstrCipherOpened1 := CipherOpen(g_oCacic.getCacicPath + 'temp\col_anvi.dat');
  427 +
  428 + Try
  429 + Executa_Col_Anvi;
  430 + Except
554 Begin 431 Begin
555 - //Pegarei o nível anterior do diretório, que deve ser, por exemplo \Cacic, para leitura do cacic2.ini  
556 - tstrTripa1 := explode(ExtractFilePath(ParamStr(0)),'\');  
557 - p_path_cacic := '';  
558 - For intAux := 0 to tstrTripa1.Count -2 do  
559 - begin  
560 - p_path_cacic := p_path_cacic + tstrTripa1[intAux] + '\';  
561 - end;  
562 -  
563 - v_Debugs := false;  
564 - if DirectoryExists(p_path_cacic + 'Temp\Debugs') then  
565 - Begin  
566 - if (FormatDateTime('ddmmyyyy', GetFolderDate(p_path_cacic + 'Temp\Debugs')) = FormatDateTime('ddmmyyyy', date)) then  
567 - Begin  
568 - v_Debugs := true;  
569 - log_diario('Pasta "' + p_path_cacic + 'Temp\Debugs" com data '+FormatDateTime('dd-mm-yyyy', GetFolderDate(p_path_cacic + 'Temp\Debugs'))+' encontrada. DEBUG ativado.');  
570 - End;  
571 - End;  
572 -  
573 - // A chave AES foi obtida no parâmetro p_CipherKey. Recomenda-se que cada empresa altere a sua chave.  
574 - v_IV := 'abcdefghijklmnop';  
575 - v_DatFileName := p_path_cacic + 'cacic2.dat';  
576 - v_tstrCipherOpened := TStrings.Create;  
577 - v_tstrCipherOpened := CipherOpen(v_DatFileName);  
578 -  
579 - v_tstrCipherOpened1 := TStrings.Create;  
580 - v_tstrCipherOpened1 := CipherOpen(p_path_cacic + 'temp\col_anvi.dat');  
581 -  
582 - Try  
583 - Executa_Col_Anvi;  
584 - Except  
585 - Begin  
586 - SetValorDatMemoria('Col_Anvi.nada', 'nada', v_tstrCipherOpened1);  
587 - CipherClose(p_path_cacic + 'temp\col_anvi.dat', v_tstrCipherOpened1);  
588 - End;  
589 - End; 432 + SetValorDatMemoria('Col_Anvi.nada', 'nada', v_tstrCipherOpened1);
  433 + CipherClose(g_oCacic.getCacicPath + 'temp\col_anvi.dat', v_tstrCipherOpened1);
590 End; 434 End;
  435 + End;
591 End; 436 End;
592 g_oCacic.Free(); 437 g_oCacic.Free();
593 end. 438 end.
col_comp/col_comp.dpr
@@ -23,56 +23,23 @@ uses @@ -23,56 +23,23 @@ uses
23 SysUtils, 23 SysUtils,
24 Classes, 24 Classes,
25 Registry, 25 Registry,
26 - DCPcrypt2,  
27 - DCPrijndael,  
28 - DCPbase64,  
29 CACIC_Library in '..\CACIC_Library.pas'; 26 CACIC_Library in '..\CACIC_Library.pas';
30 27
31 -var p_path_cacic : string;  
32 - v_CipherKey,  
33 - v_IV,  
34 - v_strCipherClosed,  
35 - v_DatFileName : String; 28 +var v_strCipherClosed : String;
36 29
37 var v_tstrCipherOpened, 30 var v_tstrCipherOpened,
38 v_tstrCipherOpened1 : TStrings; 31 v_tstrCipherOpened1 : TStrings;
39 32
40 var g_oCacic : TCACIC; 33 var g_oCacic : TCACIC;
41 34
42 -// Some constants that are dependant on the cipher being used  
43 -// Assuming MCRYPT_RIJNDAEL_128 (i.e., 128bit blocksize, 256bit keysize)  
44 -const KeySize = 32; // 32 bytes = 256 bits  
45 - BlockSize = 16; // 16 bytes = 128 bits  
46 -  
47 -function HomeDrive : string;  
48 -var  
49 -WinDir : array [0..144] of char;  
50 -begin  
51 -GetWindowsDirectory (WinDir, 144);  
52 -Result := StrPas (WinDir);  
53 -end;  
54 -  
55 -Function Implode(p_Array : TStrings ; p_Separador : String) : String;  
56 -var intAux : integer;  
57 - strAux : string;  
58 -Begin  
59 - strAux := '';  
60 - For intAux := 0 To p_Array.Count -1 do  
61 - Begin  
62 - if (strAux<>'') then strAux := strAux + p_Separador;  
63 - strAux := strAux + p_Array[intAux];  
64 - End;  
65 - Implode := strAux;  
66 -end;  
67 -  
68 procedure log_diario(strMsg : String); 35 procedure log_diario(strMsg : String);
69 var 36 var
70 HistoricoLog : TextFile; 37 HistoricoLog : TextFile;
71 strDataArqLocal, strDataAtual : string; 38 strDataArqLocal, strDataAtual : string;
72 begin 39 begin
73 try 40 try
74 - FileSetAttr (p_path_cacic + 'cacic2.log',0); // Retira os atributos do arquivo para evitar o erro FILE ACCESS DENIED em máquinas 2000  
75 - AssignFile(HistoricoLog,p_path_cacic + 'cacic2.log'); {Associa o arquivo a uma variável do tipo TextFile} 41 + FileSetAttr (g_oCacic.getCacicPath + 'cacic2.log',0); // Retira os atributos do arquivo para evitar o erro FILE ACCESS DENIED em máquinas 2000
  42 + AssignFile(HistoricoLog,g_oCacic.getCacicPath + 'cacic2.log'); {Associa o arquivo a uma variável do tipo TextFile}
76 {$IOChecks off} 43 {$IOChecks off}
77 Reset(HistoricoLog); {Abre o arquivo texto} 44 Reset(HistoricoLog); {Abre o arquivo texto}
78 {$IOChecks on} 45 {$IOChecks on}
@@ -82,7 +49,7 @@ begin @@ -82,7 +49,7 @@ begin
82 Append(HistoricoLog); 49 Append(HistoricoLog);
83 Writeln(HistoricoLog,FormatDateTime('dd/mm hh:nn:ss : ', Now) + '======================> Iniciando o Log do CACIC <======================='); 50 Writeln(HistoricoLog,FormatDateTime('dd/mm hh:nn:ss : ', Now) + '======================> Iniciando o Log do CACIC <=======================');
84 end; 51 end;
85 - DateTimeToString(strDataArqLocal, 'yyyymmdd', FileDateToDateTime(Fileage(p_path_cacic + 'cacic2.log'))); 52 + DateTimeToString(strDataArqLocal, 'yyyymmdd', FileDateToDateTime(Fileage(g_oCacic.getCacicPath + 'cacic2.log')));
86 DateTimeToString(strDataAtual , 'yyyymmdd', Date); 53 DateTimeToString(strDataAtual , 'yyyymmdd', Date);
87 if (strDataAtual <> strDataArqLocal) then // Se o arquivo INI não é da data atual... 54 if (strDataAtual <> strDataArqLocal) then // Se o arquivo INI não é da data atual...
88 begin 55 begin
@@ -98,92 +65,6 @@ begin @@ -98,92 +65,6 @@ begin
98 log_diario('Erro na gravação do log!'); 65 log_diario('Erro na gravação do log!');
99 end; 66 end;
100 end; 67 end;
101 -// Pad a string with zeros so that it is a multiple of size  
102 -function PadWithZeros(const str : string; size : integer) : string;  
103 -var  
104 - origsize, i : integer;  
105 -begin  
106 - Result := str;  
107 - origsize := Length(Result);  
108 - if ((origsize mod size) <> 0) or (origsize = 0) then  
109 - begin  
110 - SetLength(Result,((origsize div size)+1)*size);  
111 - for i := origsize+1 to Length(Result) do  
112 - Result[i] := #0;  
113 - end;  
114 -end;  
115 -  
116 -  
117 -// Encrypt a string and return the Base64 encoded result  
118 -function EnCrypt(p_Data : String) : String;  
119 -var  
120 - l_Cipher : TDCP_rijndael;  
121 - l_Data, l_Key, l_IV : string;  
122 -begin  
123 - Try  
124 - // Pad Key, IV and Data with zeros as appropriate  
125 - l_Key := PadWithZeros(v_CipherKey,KeySize);  
126 - l_IV := PadWithZeros(v_IV,BlockSize);  
127 - l_Data := PadWithZeros(p_Data,BlockSize);  
128 -  
129 - // Create the cipher and initialise according to the key length  
130 - l_Cipher := TDCP_rijndael.Create(nil);  
131 - if Length(v_CipherKey) <= 16 then  
132 - l_Cipher.Init(l_Key[1],128,@l_IV[1])  
133 - else if Length(v_CipherKey) <= 24 then  
134 - l_Cipher.Init(l_Key[1],192,@l_IV[1])  
135 - else  
136 - l_Cipher.Init(l_Key[1],256,@l_IV[1]);  
137 -  
138 - // Encrypt the data  
139 - l_Cipher.EncryptCBC(l_Data[1],l_Data[1],Length(l_Data));  
140 -  
141 - // Free the cipher and clear sensitive information  
142 - l_Cipher.Free;  
143 - FillChar(l_Key[1],Length(l_Key),0);  
144 -  
145 - // Return the Base64 encoded result  
146 - Result := Base64EncodeStr(l_Data);  
147 - Except  
148 - log_diario('Erro no Processo de Criptografia');  
149 - End;  
150 -end;  
151 -  
152 -function DeCrypt(p_Data : String) : String;  
153 -var  
154 - l_Cipher : TDCP_rijndael;  
155 - l_Data, l_Key, l_IV : string;  
156 -begin  
157 - Try  
158 - // Pad Key and IV with zeros as appropriate  
159 - l_Key := PadWithZeros(v_CipherKey,KeySize);  
160 - l_IV := PadWithZeros(v_IV,BlockSize);  
161 -  
162 - // Decode the Base64 encoded string  
163 - l_Data := Base64DecodeStr(p_Data);  
164 -  
165 - // Create the cipher and initialise according to the key length  
166 - l_Cipher := TDCP_rijndael.Create(nil);  
167 - if Length(v_CipherKey) <= 16 then  
168 - l_Cipher.Init(l_Key[1],128,@l_IV[1])  
169 - else if Length(v_CipherKey) <= 24 then  
170 - l_Cipher.Init(l_Key[1],192,@l_IV[1])  
171 - else  
172 - l_Cipher.Init(l_Key[1],256,@l_IV[1]);  
173 -  
174 - // Decrypt the data  
175 - l_Cipher.DecryptCBC(l_Data[1],l_Data[1],Length(l_Data));  
176 -  
177 - // Free the cipher and clear sensitive information  
178 - l_Cipher.Free;  
179 - FillChar(l_Key[1],Length(l_Key),0);  
180 -  
181 - // Return the result  
182 - Result := l_Data;  
183 - Except  
184 - log_diario('Erro no Processo de Decriptografia');  
185 - End;  
186 -end;  
187 68
188 Function CipherClose(p_DatFileName : string; p_tstrCipherOpened : TStrings) : String; 69 Function CipherClose(p_DatFileName : string; p_tstrCipherOpened : TStrings) : String;
189 var v_strCipherOpenImploded : string; 70 var v_strCipherOpenImploded : string;
@@ -197,45 +78,14 @@ begin @@ -197,45 +78,14 @@ begin
197 Rewrite (v_DatFile); 78 Rewrite (v_DatFile);
198 Append(v_DatFile); 79 Append(v_DatFile);
199 80
200 - v_strCipherOpenImploded := Implode(p_tstrCipherOpened,'=CacicIsFree=');  
201 - v_strCipherClosed := EnCrypt(v_strCipherOpenImploded); 81 + v_strCipherOpenImploded := g_oCacic.implode(p_tstrCipherOpened,g_oCacic.getSeparatorKey);
  82 + v_strCipherClosed := g_oCacic.enCrypt(v_strCipherOpenImploded);
202 Writeln(v_DatFile,v_strCipherClosed); {Grava a string Texto no arquivo texto} 83 Writeln(v_DatFile,v_strCipherClosed); {Grava a string Texto no arquivo texto}
203 CloseFile(v_DatFile); 84 CloseFile(v_DatFile);
204 except 85 except
205 end; 86 end;
206 end; 87 end;
207 88
208 -Function Explode(Texto, Separador : String) : TStrings;  
209 -var  
210 - strItem : String;  
211 - ListaAuxUTILS : TStrings;  
212 - NumCaracteres,  
213 - TamanhoSeparador,  
214 - I : Integer;  
215 -Begin  
216 - ListaAuxUTILS := TStringList.Create;  
217 - strItem := '';  
218 - NumCaracteres := Length(Texto);  
219 - TamanhoSeparador := Length(Separador);  
220 - I := 1;  
221 - While I <= NumCaracteres Do  
222 - Begin  
223 - If (Copy(Texto,I,TamanhoSeparador) = Separador) or (I = NumCaracteres) Then  
224 - Begin  
225 - if (I = NumCaracteres) then strItem := strItem + Texto[I];  
226 - ListaAuxUTILS.Add(trim(strItem));  
227 - strItem := '';  
228 - I := I + (TamanhoSeparador-1);  
229 - end  
230 - Else  
231 - strItem := strItem + Texto[I];  
232 -  
233 - I := I + 1;  
234 - End;  
235 - Explode := ListaAuxUTILS;  
236 -end;  
237 -  
238 -  
239 Function CipherOpen(p_DatFileName : string) : TStrings; 89 Function CipherOpen(p_DatFileName : string) : TStrings;
240 var v_DatFile : TextFile; 90 var v_DatFile : TextFile;
241 v_strCipherOpened, 91 v_strCipherOpened,
@@ -257,12 +107,12 @@ begin @@ -257,12 +107,12 @@ begin
257 Readln(v_DatFile,v_strCipherClosed); 107 Readln(v_DatFile,v_strCipherClosed);
258 while not EOF(v_DatFile) do Readln(v_DatFile,v_strCipherClosed); 108 while not EOF(v_DatFile) do Readln(v_DatFile,v_strCipherClosed);
259 CloseFile(v_DatFile); 109 CloseFile(v_DatFile);
260 - v_strCipherOpened:= DeCrypt(v_strCipherClosed); 110 + v_strCipherOpened:= g_oCacic.deCrypt(v_strCipherClosed);
261 end; 111 end;
262 if (trim(v_strCipherOpened)<>'') then 112 if (trim(v_strCipherOpened)<>'') then
263 - Result := explode(v_strCipherOpened,'=CacicIsFree=') 113 + Result := g_oCacic.explode(v_strCipherOpened,g_oCacic.getSeparatorKey)
264 else 114 else
265 - Result := explode('Configs.ID_SO=CacicIsFree='+ g_oCacic.getWindowsStrId() +'=CacicIsFree=Configs.Endereco_WS=CacicIsFree=/cacic2/ws/','=CacicIsFree='); 115 + Result := g_oCacic.explode('Configs.ID_SO'+g_oCacic.getSeparatorKey+g_oCacic.getWindowsStrId() +g_oCacic.getSeparatorKey+'Configs.Endereco_WS'+g_oCacic.getSeparatorKey+'/cacic2/ws/',g_oCacic.getSeparatorKey);
266 116
267 117
268 if Result.Count mod 2 <> 0 then 118 if Result.Count mod 2 <> 0 then
@@ -322,7 +172,7 @@ var RegEditGet: TRegistry; @@ -322,7 +172,7 @@ var RegEditGet: TRegistry;
322 begin 172 begin
323 try 173 try
324 Result := ''; 174 Result := '';
325 - ListaAuxGet := Explode(Chave, '); 175 + ListaAuxGet := g_oCacic.explode(Chave, ');
326 176
327 strRootKey := ListaAuxGet[0]; 177 strRootKey := ListaAuxGet[0];
328 For I := 1 To ListaAuxGet.Count - 2 Do strKey := strKey + ListaAuxGet[I] + '\'; 178 For I := 1 To ListaAuxGet.Count - 2 Do strKey := strKey + ListaAuxGet[I] + '\';
@@ -475,68 +325,55 @@ Begin @@ -475,68 +325,55 @@ Begin
475 (strTripaDados <> '') Then 325 (strTripaDados <> '') Then
476 Begin 326 Begin
477 SetValorDatMemoria('Col_Comp.UVC', strTripaDados, v_tstrCipherOpened1); 327 SetValorDatMemoria('Col_Comp.UVC', strTripaDados, v_tstrCipherOpened1);
478 - CipherClose(p_path_cacic + 'temp\col_comp.dat', v_tstrCipherOpened1); 328 + CipherClose(g_oCacic.getCacicPath + 'temp\col_comp.dat', v_tstrCipherOpened1);
479 End 329 End
480 else 330 else
481 SetValorDatMemoria('Col_Comp.nada', 'nada', v_tstrCipherOpened1); 331 SetValorDatMemoria('Col_Comp.nada', 'nada', v_tstrCipherOpened1);
482 332
483 - CipherClose(p_path_cacic + 'temp\col_comp.dat', v_tstrCipherOpened1); 333 + CipherClose(g_oCacic.getCacicPath + 'temp\col_comp.dat', v_tstrCipherOpened1);
484 End; 334 End;
485 Except 335 Except
486 Begin 336 Begin
487 SetValorDatMemoria('Col_Comp.nada', 'nada', v_tstrCipherOpened1); 337 SetValorDatMemoria('Col_Comp.nada', 'nada', v_tstrCipherOpened1);
488 SetValorDatMemoria('Col_Comp.Fim', '99999999', v_tstrCipherOpened1); 338 SetValorDatMemoria('Col_Comp.Fim', '99999999', v_tstrCipherOpened1);
489 - CipherClose(p_path_cacic + 'temp\col_comp.dat', v_tstrCipherOpened1); 339 + CipherClose(g_oCacic.getCacicPath + 'temp\col_comp.dat', v_tstrCipherOpened1);
490 End; 340 End;
491 End; 341 End;
492 end; 342 end;
493 343
494 var tstrTripa1 : TStrings; 344 var tstrTripa1 : TStrings;
495 intAux : integer; 345 intAux : integer;
  346 + v_path_cacic : String;
  347 +
496 const 348 const
497 CACIC_APP_NAME = 'col_comp'; 349 CACIC_APP_NAME = 'col_comp';
498 350
499 -var  
500 - hwind:HWND;  
501 -  
502 begin 351 begin
503 g_oCacic := TCACIC.Create(); 352 g_oCacic := TCACIC.Create();
504 if( not g_oCacic.isAppRunning( CACIC_APP_NAME ) ) then 353 if( not g_oCacic.isAppRunning( CACIC_APP_NAME ) ) then
505 if (ParamCount>0) then 354 if (ParamCount>0) then
506 Begin 355 Begin
507 - For intAux := 1 to ParamCount do  
508 - Begin  
509 - if LowerCase(Copy(ParamStr(intAux),1,13)) = '/p_cipherkey=' then  
510 - v_CipherKey := Trim(Copy(ParamStr(intAux),14,Length((ParamStr(intAux)))));  
511 - End;  
512 -  
513 - if (trim(v_CipherKey)<>'') then  
514 - Begin  
515 - //Pegarei o nível anterior do diretório, que deve ser, por exemplo \Cacic, para leitura do cacic2.ini  
516 - tstrTripa1 := explode(ExtractFilePath(ParamStr(0)),'\');  
517 - p_path_cacic := '';  
518 - For intAux := 0 to tstrTripa1.Count -2 do  
519 - begin  
520 - p_path_cacic := p_path_cacic + tstrTripa1[intAux] + '\';  
521 - end;  
522 -  
523 - // A chave AES foi obtida no parâmetro p_CipherKey. Recomenda-se que cada empresa altere a sua chave.  
524 - v_IV := 'abcdefghijklmnop';  
525 - v_DatFileName := p_path_cacic + 'cacic2.dat';  
526 - v_tstrCipherOpened := TStrings.Create;  
527 - v_tstrCipherOpened := CipherOpen(v_DatFileName);  
528 -  
529 - v_tstrCipherOpened1 := TStrings.Create;  
530 - v_tstrCipherOpened1 := CipherOpen(p_path_cacic + 'temp\col_comp.dat');  
531 -  
532 - Try  
533 - Executa_Col_comp;  
534 - Except  
535 - SetValorDatMemoria('Col_Comp.nada', 'nada', v_tstrCipherOpened1);  
536 - CipherClose(p_path_cacic + 'temp\col_comp.dat', v_tstrCipherOpened1);  
537 - End;  
538 - Halt(0);  
539 - End; 356 + //Pegarei o nível anterior do diretório, que deve ser, por exemplo \Cacic, para leitura do cacic2.ini
  357 + tstrTripa1 := g_oCacic.explode(ExtractFilePath(ParamStr(0)),'\');
  358 + v_path_cacic := '';
  359 + For intAux := 0 to tstrTripa1.Count -2 do
  360 + v_path_cacic := v_path_cacic + tstrTripa1[intAux] + '\';
  361 +
  362 + g_oCacic.setCacicPath(v_path_cacic);
  363 +
  364 + v_tstrCipherOpened := TStrings.Create;
  365 + v_tstrCipherOpened := CipherOpen(g_oCacic.getDatFileName);
  366 +
  367 + v_tstrCipherOpened1 := TStrings.Create;
  368 + v_tstrCipherOpened1 := CipherOpen(g_oCacic.getCacicPath + 'temp\col_comp.dat');
  369 +
  370 + Try
  371 + Executa_Col_comp;
  372 + Except
  373 + SetValorDatMemoria('Col_Comp.nada', 'nada', v_tstrCipherOpened1);
  374 + CipherClose(g_oCacic.getCacicPath + 'temp\col_comp.dat', v_tstrCipherOpened1);
  375 + End;
  376 + Halt(0);
540 End; 377 End;
541 g_oCacic.Free(); 378 g_oCacic.Free();
542 end. 379 end.
col_hard/col_hard.dpr
@@ -35,26 +35,22 @@ uses @@ -35,26 +35,22 @@ uses
35 MSI_MEDIA, 35 MSI_MEDIA,
36 MSI_NETWORK, 36 MSI_NETWORK,
37 MSI_XML_Reports, 37 MSI_XML_Reports,
38 - DCPcrypt2,  
39 - DCPrijndael,  
40 - DCPbase64,  
41 PJVersionInfo, 38 PJVersionInfo,
42 CACIC_Library in '..\CACIC_Library.pas'; 39 CACIC_Library in '..\CACIC_Library.pas';
43 40
44 -var p_path_cacic, v_mensagem : string;  
45 - v_debugs : boolean;  
46 - v_CipherKey,  
47 - v_IV,  
48 - v_strCipherClosed,  
49 - v_DatFileName : String;  
50 -  
51 -var v_tstrCipherOpened,  
52 - v_tstrCipherOpened1 : TStrings; 41 +var
  42 + v_path_cacic,
  43 + v_mensagem,
  44 + v_strCipherClosed : String;
  45 + v_debugs : boolean;
  46 + v_tstrCipherOpened,
  47 + v_tstrCipherOpened1,
  48 + tstrTripa1 : TStrings;
  49 + intAux : integer;
  50 + g_oCacic : TCACIC;
53 51
54 -// Some constants that are dependant on the cipher being used  
55 -// Assuming MCRYPT_RIJNDAEL_128 (i.e., 128bit blocksize, 256bit keysize)  
56 -const KeySize = 32; // 32 bytes = 256 bits  
57 - BlockSize = 16; // 16 bytes = 128 bits 52 +const
  53 + CACIC_APP_NAME = 'col_hard';
58 54
59 // Dica baixada de http://www.marcosdellantonio.net/2007/06/14/operador-if-ternario-em-delphi-e-c/ 55 // Dica baixada de http://www.marcosdellantonio.net/2007/06/14/operador-if-ternario-em-delphi-e-c/
60 // Fiz isso para não ter que acrescentar o componente Math ao USES! 56 // Fiz isso para não ter que acrescentar o componente Math ao USES!
@@ -65,50 +61,15 @@ function iif(condicao : boolean; resTrue, resFalse : Variant) : Variant; @@ -65,50 +61,15 @@ function iif(condicao : boolean; resTrue, resFalse : Variant) : Variant;
65 else 61 else
66 Result := resFalse; 62 Result := resFalse;
67 End; 63 End;
68 -  
69 -function HomeDrive : string;  
70 -var  
71 -WinDir : array [0..144] of char;  
72 -begin  
73 -GetWindowsDirectory (WinDir, 144);  
74 -Result := StrPas (WinDir);  
75 -end;  
76 64
77 -  
78 -Function Implode(p_Array : TStrings ; p_Separador : String) : String;  
79 -var intAux : integer;  
80 - strAux : string;  
81 -Begin  
82 - strAux := '';  
83 - For intAux := 0 To p_Array.Count -1 do  
84 - Begin  
85 - if (strAux<>'') then strAux := strAux + p_Separador;  
86 - strAux := strAux + p_Array[intAux];  
87 - End;  
88 - Implode := strAux;  
89 -end;  
90 -// Pad a string with zeros so that it is a multiple of size  
91 -function PadWithZeros(const str : string; size : integer) : string;  
92 -var  
93 - origsize, i : integer;  
94 -begin  
95 - Result := str;  
96 - origsize := Length(Result);  
97 - if ((origsize mod size) <> 0) or (origsize = 0) then  
98 - begin  
99 - SetLength(Result,((origsize div size)+1)*size);  
100 - for i := origsize+1 to Length(Result) do  
101 - Result[i] := #0;  
102 - end;  
103 -end;  
104 procedure log_diario(strMsg : String); 65 procedure log_diario(strMsg : String);
105 var 66 var
106 HistoricoLog : TextFile; 67 HistoricoLog : TextFile;
107 strDataArqLocal, strDataAtual : string; 68 strDataArqLocal, strDataAtual : string;
108 begin 69 begin
109 try 70 try
110 - FileSetAttr (p_path_cacic + 'cacic2.log',0); // Retira os atributos do arquivo para evitar o erro FILE ACCESS DENIED em máquinas 2000  
111 - AssignFile(HistoricoLog,p_path_cacic + 'cacic2.log'); {Associa o arquivo a uma variável do tipo TextFile} 71 + FileSetAttr (g_oCacic.getCacicPath + 'cacic2.log',0); // Retira os atributos do arquivo para evitar o erro FILE ACCESS DENIED em máquinas 2000
  72 + AssignFile(HistoricoLog,g_oCacic.getCacicPath + 'cacic2.log'); {Associa o arquivo a uma variável do tipo TextFile}
112 {$IOChecks off} 73 {$IOChecks off}
113 Reset(HistoricoLog); {Abre o arquivo texto} 74 Reset(HistoricoLog); {Abre o arquivo texto}
114 {$IOChecks on} 75 {$IOChecks on}
@@ -118,7 +79,7 @@ begin @@ -118,7 +79,7 @@ begin
118 Append(HistoricoLog); 79 Append(HistoricoLog);
119 Writeln(HistoricoLog,FormatDateTime('dd/mm hh:nn:ss : ', Now) + '======================> Iniciando o Log <======================='); 80 Writeln(HistoricoLog,FormatDateTime('dd/mm hh:nn:ss : ', Now) + '======================> Iniciando o Log <=======================');
120 end; 81 end;
121 - DateTimeToString(strDataArqLocal, 'yyyymmdd', FileDateToDateTime(Fileage(p_path_cacic + 'cacic2.log'))); 82 + DateTimeToString(strDataArqLocal, 'yyyymmdd', FileDateToDateTime(Fileage(g_oCacic.getCacicPath + 'cacic2.log')));
122 DateTimeToString(strDataAtual , 'yyyymmdd', Date); 83 DateTimeToString(strDataAtual , 'yyyymmdd', Date);
123 if (strDataAtual <> strDataArqLocal) then // Se o arquivo INI não é da data atual... 84 if (strDataAtual <> strDataArqLocal) then // Se o arquivo INI não é da data atual...
124 begin 85 begin
@@ -137,76 +98,6 @@ begin @@ -137,76 +98,6 @@ begin
137 end; 98 end;
138 99
139 100
140 -// Encrypt a string and return the Base64 encoded result  
141 -function EnCrypt(p_Data : String) : String;  
142 -var  
143 - l_Cipher : TDCP_rijndael;  
144 - l_Data, l_Key, l_IV : string;  
145 -begin  
146 - Try  
147 - // Pad Key, IV and Data with zeros as appropriate  
148 - l_Key := PadWithZeros(v_CipherKey,KeySize);  
149 - l_IV := PadWithZeros(v_IV,BlockSize);  
150 - l_Data := PadWithZeros(p_Data,BlockSize);  
151 -  
152 - // Create the cipher and initialise according to the key length  
153 - l_Cipher := TDCP_rijndael.Create(nil);  
154 - if Length(v_CipherKey) <= 16 then  
155 - l_Cipher.Init(l_Key[1],128,@l_IV[1])  
156 - else if Length(v_CipherKey) <= 24 then  
157 - l_Cipher.Init(l_Key[1],192,@l_IV[1])  
158 - else  
159 - l_Cipher.Init(l_Key[1],256,@l_IV[1]);  
160 -  
161 - // Encrypt the data  
162 - l_Cipher.EncryptCBC(l_Data[1],l_Data[1],Length(l_Data));  
163 -  
164 - // Free the cipher and clear sensitive information  
165 - l_Cipher.Free;  
166 - FillChar(l_Key[1],Length(l_Key),0);  
167 -  
168 - // Return the Base64 encoded result  
169 - Result := Base64EncodeStr(l_Data);  
170 - Except  
171 - log_diario('Erro no Processo de Criptografia');  
172 - End;  
173 -end;  
174 -  
175 -function DeCrypt(p_Data : String) : String;  
176 -var  
177 - l_Cipher : TDCP_rijndael;  
178 - l_Data, l_Key, l_IV : string;  
179 -begin  
180 - Try  
181 - // Pad Key and IV with zeros as appropriate  
182 - l_Key := PadWithZeros(v_CipherKey,KeySize);  
183 - l_IV := PadWithZeros(v_IV,BlockSize);  
184 -  
185 - // Decode the Base64 encoded string  
186 - l_Data := Base64DecodeStr(p_Data);  
187 -  
188 - // Create the cipher and initialise according to the key length  
189 - l_Cipher := TDCP_rijndael.Create(nil);  
190 - if Length(v_CipherKey) <= 16 then  
191 - l_Cipher.Init(l_Key[1],128,@l_IV[1])  
192 - else if Length(v_CipherKey) <= 24 then  
193 - l_Cipher.Init(l_Key[1],192,@l_IV[1])  
194 - else  
195 - l_Cipher.Init(l_Key[1],256,@l_IV[1]);  
196 -  
197 - // Decrypt the data  
198 - l_Cipher.DecryptCBC(l_Data[1],l_Data[1],Length(l_Data));  
199 -  
200 - // Free the cipher and clear sensitive information  
201 - l_Cipher.Free;  
202 - FillChar(l_Key[1],Length(l_Key),0);  
203 -  
204 - // Return the result  
205 - Result := l_Data;  
206 - Except  
207 - log_diario('Erro no Processo de Decriptografia');  
208 - End;  
209 -end;  
210 101
211 Function CipherClose(p_DatFileName : string; p_tstrCipherOpened : TStrings) : String; 102 Function CipherClose(p_DatFileName : string; p_tstrCipherOpened : TStrings) : String;
212 var v_strCipherOpenImploded : string; 103 var v_strCipherOpenImploded : string;
@@ -220,13 +111,8 @@ begin @@ -220,13 +111,8 @@ begin
220 Rewrite (v_DatFile); 111 Rewrite (v_DatFile);
221 Append(v_DatFile); 112 Append(v_DatFile);
222 113
223 - //v_Cipher := TDCP_rijndael.Create(nil);  
224 - //v_Cipher.InitStr(v_CipherKey,TDCP_md5);  
225 - v_strCipherOpenImploded := Implode(p_tstrCipherOpened,'=CacicIsFree=');  
226 - v_strCipherClosed := EnCrypt(v_strCipherOpenImploded);  
227 - //v_strCipherClosed := v_Cipher.EncryptString(v_strCipherOpenImploded);  
228 - //v_Cipher.Burn;  
229 - //v_Cipher.Free; 114 + v_strCipherOpenImploded := g_oCacic.implode(p_tstrCipherOpened,g_oCacic.getSeparatorKey);
  115 + v_strCipherClosed := g_oCacic.enCrypt(v_strCipherOpenImploded);
230 116
231 Writeln(v_DatFile,v_strCipherClosed); {Grava a string Texto no arquivo texto} 117 Writeln(v_DatFile,v_strCipherClosed); {Grava a string Texto no arquivo texto}
232 118
@@ -234,94 +120,6 @@ begin @@ -234,94 +120,6 @@ begin
234 except 120 except
235 end; 121 end;
236 end; 122 end;
237 -function GetWinVer: Integer;  
238 -const  
239 - { operating system (OS)constants }  
240 - cOsUnknown = 0;  
241 - cOsWin95 = 1;  
242 - cOsWin95OSR2 = 2; // Não implementado.  
243 - cOsWin98 = 3;  
244 - cOsWin98SE = 4;  
245 - cOsWinME = 5;  
246 - cOsWinNT = 6;  
247 - cOsWin2000 = 7;  
248 - cOsXP = 8;  
249 -var  
250 - osVerInfo: TOSVersionInfo;  
251 - majorVer, minorVer: Integer;  
252 -begin  
253 - Result := cOsUnknown;  
254 - { set operating system type flag }  
255 - osVerInfo.dwOSVersionInfoSize := SizeOf(TOSVersionInfo);  
256 - if GetVersionEx(osVerInfo) then  
257 - begin  
258 - majorVer := osVerInfo.dwMajorVersion;  
259 - minorVer := osVerInfo.dwMinorVersion;  
260 - case osVerInfo.dwPlatformId of  
261 - VER_PLATFORM_WIN32_NT: { Windows NT/2000 }  
262 - begin  
263 - if majorVer <= 4 then  
264 - Result := cOsWinNT  
265 - else if (majorVer = 5) and (minorVer = 0) then  
266 - Result := cOsWin2000  
267 - else if (majorVer = 5) and (minorVer = 1) then  
268 - Result := cOsXP  
269 - else  
270 - Result := cOsUnknown;  
271 - end;  
272 - VER_PLATFORM_WIN32_WINDOWS: { Windows 9x/ME }  
273 - begin  
274 - if (majorVer = 4) and (minorVer = 0) then  
275 - Result := cOsWin95  
276 - else if (majorVer = 4) and (minorVer = 10) then  
277 - begin  
278 - if osVerInfo.szCSDVersion[1] = 'A' then  
279 - Result := cOsWin98SE  
280 - else  
281 - Result := cOsWin98;  
282 - end  
283 - else if (majorVer = 4) and (minorVer = 90) then  
284 - Result := cOsWinME  
285 - else  
286 - Result := cOsUnknown;  
287 - end;  
288 - else  
289 - Result := cOsUnknown;  
290 - end;  
291 - end  
292 - else  
293 - Result := cOsUnknown;  
294 -end;  
295 -Function Explode(Texto, Separador : String) : TStrings;  
296 -var  
297 - strItem : String;  
298 - ListaAuxUTILS : TStrings;  
299 - NumCaracteres,  
300 - TamanhoSeparador,  
301 - I : Integer;  
302 -Begin  
303 - ListaAuxUTILS := TStringList.Create;  
304 - strItem := '';  
305 - NumCaracteres := Length(Texto);  
306 - TamanhoSeparador := Length(Separador);  
307 - I := 1;  
308 - While I <= NumCaracteres Do  
309 - Begin  
310 - If (Copy(Texto,I,TamanhoSeparador) = Separador) or (I = NumCaracteres) Then  
311 - Begin  
312 - if (I = NumCaracteres) then strItem := strItem + Texto[I];  
313 - ListaAuxUTILS.Add(trim(strItem));  
314 - strItem := '';  
315 - I := I + (TamanhoSeparador-1);  
316 - end  
317 - Else  
318 - strItem := strItem + Texto[I];  
319 -  
320 - I := I + 1;  
321 - End;  
322 - Explode := ListaAuxUTILS;  
323 -end;  
324 -  
325 123
326 Function CipherOpen(p_DatFileName : string) : TStrings; 124 Function CipherOpen(p_DatFileName : string) : TStrings;
327 var v_DatFile : TextFile; 125 var v_DatFile : TextFile;
@@ -344,12 +142,12 @@ begin @@ -344,12 +142,12 @@ begin
344 Readln(v_DatFile,v_strCipherClosed); 142 Readln(v_DatFile,v_strCipherClosed);
345 while not EOF(v_DatFile) do Readln(v_DatFile,v_strCipherClosed); 143 while not EOF(v_DatFile) do Readln(v_DatFile,v_strCipherClosed);
346 CloseFile(v_DatFile); 144 CloseFile(v_DatFile);
347 - v_strCipherOpened:= DeCrypt(v_strCipherClosed); 145 + v_strCipherOpened:= g_oCacic.deCrypt(v_strCipherClosed);
348 end; 146 end;
349 if (trim(v_strCipherOpened)<>'') then 147 if (trim(v_strCipherOpened)<>'') then
350 - Result := explode(v_strCipherOpened,'=CacicIsFree=') 148 + Result := g_oCacic.explode(v_strCipherOpened,g_oCacic.getSeparatorKey)
351 else 149 else
352 - Result := explode('Configs.ID_SO=CacicIsFree='+inttostr(GetWinVer)+'=CacicIsFree=Configs.Endereco_WS=CacicIsFree=/cacic2/ws/','=CacicIsFree='); 150 + Result := g_oCacic.explode('Configs.ID_SO' + g_oCacic.getSeparatorKey + g_oCacic.getWindowsStrId + g_oCacic.getSeparatorKey + 'Configs.Endereco_WS'+g_oCacic.getSeparatorKey+'/cacic2/ws/',g_oCacic.getSeparatorKey);
353 151
354 if Result.Count mod 2 <> 0 then 152 if Result.Count mod 2 <> 0 then
355 Result.Add(''); 153 Result.Add('');
@@ -404,7 +202,7 @@ begin @@ -404,7 +202,7 @@ begin
404 Result := ''; 202 Result := '';
405 if (p_SectionName <> '') then 203 if (p_SectionName <> '') then
406 Begin 204 Begin
407 - v_array_SectionName := explode(p_SectionName,'/'); 205 + v_array_SectionName := g_oCacic.explode(p_SectionName,'/');
408 v_array_SectionName_Count := v_array_SectionName.Count; 206 v_array_SectionName_Count := v_array_SectionName.Count;
409 End 207 End
410 else v_array_SectionName_Count := 0; 208 else v_array_SectionName_Count := 0;
@@ -485,7 +283,7 @@ var @@ -485,7 +283,7 @@ var
485 strDataArqLocal, strDataAtual, v_file_debugs : string; 283 strDataArqLocal, strDataAtual, v_file_debugs : string;
486 begin 284 begin
487 try 285 try
488 - v_file_debugs := p_path_cacic + '\Temp\Debugs\debug_'+StringReplace(ExtractFileName(StrUpper(PChar(ParamStr(0)))),'.EXE','',[rfReplaceAll])+'.txt'; 286 + v_file_debugs := g_oCacic.getCacicPath + 'Temp\Debugs\debug_'+StringReplace(ExtractFileName(StrUpper(PChar(ParamStr(0)))),'.EXE','',[rfReplaceAll])+'.txt';
489 FileSetAttr (v_file_debugs,0); // Retira os atributos do arquivo para evitar o erro FILE ACCESS DENIED em máquinas 2000 287 FileSetAttr (v_file_debugs,0); // Retira os atributos do arquivo para evitar o erro FILE ACCESS DENIED em máquinas 2000
490 AssignFile(DebugsFile,v_file_debugs); {Associa o arquivo a uma variável do tipo TextFile} 288 AssignFile(DebugsFile,v_file_debugs); {Associa o arquivo a uma variável do tipo TextFile}
491 289
@@ -667,7 +465,7 @@ Begin @@ -667,7 +465,7 @@ Begin
667 v_conta_EXCECOES := 0; 465 v_conta_EXCECOES := 0;
668 if (p_excecao <> '') then 466 if (p_excecao <> '') then
669 Begin 467 Begin
670 - tstrEXCECOES := Explode(p_excecao,','); // Excecoes a serem tratadas 468 + tstrEXCECOES := g_oCacic.explode(p_excecao,','); // Excecoes a serem tratadas
671 for intAux1 := 0 to tstrEXCECOES.Count-1 Do 469 for intAux1 := 0 to tstrEXCECOES.Count-1 Do
672 Begin 470 Begin
673 if (rat(tstrEXCECOES[intAux1],p_mac) > 0) then 471 if (rat(tstrEXCECOES[intAux1],p_mac) > 0) then
@@ -739,10 +537,8 @@ var v_te_cpu_fabricante, @@ -739,10 +537,8 @@ var v_te_cpu_fabricante,
739 v_cpu_freq : TStrings; 537 v_cpu_freq : TStrings;
740 v_registry : TRegistry; 538 v_registry : TRegistry;
741 539
742 - oCacic : TCACIC;  
743 -  
744 begin 540 begin
745 - oCacic := TCACIC.Create(); 541 + g_oCacic := TCACIC.Create();
746 Try 542 Try
747 SetValorDatMemoria('Col_Hard.Inicio', FormatDateTime('hh:nn:ss', Now), v_tstrCipherOpened1); 543 SetValorDatMemoria('Col_Hard.Inicio', FormatDateTime('hh:nn:ss', Now), v_tstrCipherOpened1);
748 v_Report := TStringList.Create; 544 v_Report := TStringList.Create;
@@ -1084,7 +880,7 @@ begin @@ -1084,7 +880,7 @@ begin
1084 Try 880 Try
1085 // Monto a string que será comparada com o valor armazenado no registro. 881 // Monto a string que será comparada com o valor armazenado no registro.
1086 v_mensagem := 'Montando pacote para comparações...'; 882 v_mensagem := 'Montando pacote para comparações...';
1087 - UVC := oCacic.trimEspacosExcedentes(v_Tripa_TCPIP + ';' + 883 + UVC := g_oCacic.trimEspacosExcedentes(v_Tripa_TCPIP + ';' +
1088 v_Tripa_CPU + ';' + 884 v_Tripa_CPU + ';' +
1089 v_Tripa_CDROM + ';' + 885 v_Tripa_CDROM + ';' +
1090 v_te_mem_ram_desc + ';' + 886 v_te_mem_ram_desc + ';' +
@@ -1115,30 +911,30 @@ begin @@ -1115,30 +911,30 @@ begin
1115 // e, se não houver problemas durante esse procedimento, atualizo as 911 // e, se não houver problemas durante esse procedimento, atualizo as
1116 // informações no registro. 912 // informações no registro.
1117 If (GetValorDatMemoria('Configs.IN_COLETA_FORCADA_HARD',v_tstrCipherOpened)='S') or 913 If (GetValorDatMemoria('Configs.IN_COLETA_FORCADA_HARD',v_tstrCipherOpened)='S') or
1118 - (oCacic.trimEspacosExcedentes(UVC) <> oCacic.trimEspacosExcedentes(ValorChaveRegistro)) Then 914 + (g_oCacic.trimEspacosExcedentes(UVC) <> g_oCacic.trimEspacosExcedentes(ValorChaveRegistro)) Then
1119 Begin 915 Begin
1120 Try 916 Try
1121 //Envio via rede para ao Agente Gerente, para gravação no BD. 917 //Envio via rede para ao Agente Gerente, para gravação no BD.
1122 - SetValorDatMemoria('Col_Hard.te_Tripa_TCPIP' , oCacic.trimEspacosExcedentes( v_Tripa_TCPIP ), v_tstrCipherOpened1);  
1123 - SetValorDatMemoria('Col_Hard.te_Tripa_CPU' , oCacic.trimEspacosExcedentes( v_Tripa_CPU ), v_tstrCipherOpened1);  
1124 - SetValorDatMemoria('Col_Hard.te_Tripa_CDROM' , oCacic.trimEspacosExcedentes( v_Tripa_CDROM ), v_tstrCipherOpened1);  
1125 - SetValorDatMemoria('Col_Hard.te_placa_mae_fabricante' , oCacic.trimEspacosExcedentes( v_te_placa_mae_fabricante ) , v_tstrCipherOpened1);  
1126 - SetValorDatMemoria('Col_Hard.te_placa_mae_desc' , oCacic.trimEspacosExcedentes( v_te_placa_mae_desc ) , v_tstrCipherOpened1);  
1127 - SetValorDatMemoria('Col_Hard.qt_mem_ram' , oCacic.trimEspacosExcedentes( IntToStr(v_qt_mem_ram) ) , v_tstrCipherOpened1);  
1128 - SetValorDatMemoria('Col_Hard.te_mem_ram_desc' , oCacic.trimEspacosExcedentes( v_te_mem_ram_desc ) , v_tstrCipherOpened1);  
1129 - SetValorDatMemoria('Col_Hard.te_bios_desc' , oCacic.trimEspacosExcedentes( v_te_bios_desc ) , v_tstrCipherOpened1);  
1130 - SetValorDatMemoria('Col_Hard.te_bios_data' , oCacic.trimEspacosExcedentes( v_te_bios_data ) , v_tstrCipherOpened1);  
1131 - SetValorDatMemoria('Col_Hard.te_bios_fabricante' , oCacic.trimEspacosExcedentes( v_te_bios_fabricante ) , v_tstrCipherOpened1);  
1132 - SetValorDatMemoria('Col_Hard.qt_placa_video_cores' , oCacic.trimEspacosExcedentes( v_qt_placa_video_cores ) , v_tstrCipherOpened1);  
1133 - SetValorDatMemoria('Col_Hard.te_placa_video_desc' , oCacic.trimEspacosExcedentes( v_te_placa_video_desc ) , v_tstrCipherOpened1);  
1134 - SetValorDatMemoria('Col_Hard.qt_placa_video_mem' , oCacic.trimEspacosExcedentes( v_qt_placa_video_mem ) , v_tstrCipherOpened1);  
1135 - SetValorDatMemoria('Col_Hard.te_placa_video_resolucao', oCacic.trimEspacosExcedentes( v_te_placa_video_resolucao ) , v_tstrCipherOpened1);  
1136 - SetValorDatMemoria('Col_Hard.te_placa_som_desc' , oCacic.trimEspacosExcedentes( v_te_placa_som_desc ) , v_tstrCipherOpened1);  
1137 - SetValorDatMemoria('Col_Hard.te_teclado_desc' , oCacic.trimEspacosExcedentes( v_te_teclado_desc ) , v_tstrCipherOpened1);  
1138 - SetValorDatMemoria('Col_Hard.te_mouse_desc' , oCacic.trimEspacosExcedentes( v_te_mouse_desc ) , v_tstrCipherOpened1);  
1139 - SetValorDatMemoria('Col_Hard.te_modem_desc' , oCacic.trimEspacosExcedentes( v_te_modem_desc ) , v_tstrCipherOpened1);  
1140 - SetValorDatMemoria('Col_Hard.UVC' , oCacic.trimEspacosExcedentes( UVC ) , v_tstrCipherOpened1);  
1141 - CipherClose(p_path_cacic + 'temp\col_hard.dat', v_tstrCipherOpened1); 918 + SetValorDatMemoria('Col_Hard.te_Tripa_TCPIP' , g_oCacic.trimEspacosExcedentes( v_Tripa_TCPIP ), v_tstrCipherOpened1);
  919 + SetValorDatMemoria('Col_Hard.te_Tripa_CPU' , g_oCacic.trimEspacosExcedentes( v_Tripa_CPU ), v_tstrCipherOpened1);
  920 + SetValorDatMemoria('Col_Hard.te_Tripa_CDROM' , g_oCacic.trimEspacosExcedentes( v_Tripa_CDROM ), v_tstrCipherOpened1);
  921 + SetValorDatMemoria('Col_Hard.te_placa_mae_fabricante' , g_oCacic.trimEspacosExcedentes( v_te_placa_mae_fabricante ) , v_tstrCipherOpened1);
  922 + SetValorDatMemoria('Col_Hard.te_placa_mae_desc' , g_oCacic.trimEspacosExcedentes( v_te_placa_mae_desc ) , v_tstrCipherOpened1);
  923 + SetValorDatMemoria('Col_Hard.qt_mem_ram' , g_oCacic.trimEspacosExcedentes( IntToStr(v_qt_mem_ram) ) , v_tstrCipherOpened1);
  924 + SetValorDatMemoria('Col_Hard.te_mem_ram_desc' , g_oCacic.trimEspacosExcedentes( v_te_mem_ram_desc ) , v_tstrCipherOpened1);
  925 + SetValorDatMemoria('Col_Hard.te_bios_desc' , g_oCacic.trimEspacosExcedentes( v_te_bios_desc ) , v_tstrCipherOpened1);
  926 + SetValorDatMemoria('Col_Hard.te_bios_data' , g_oCacic.trimEspacosExcedentes( v_te_bios_data ) , v_tstrCipherOpened1);
  927 + SetValorDatMemoria('Col_Hard.te_bios_fabricante' , g_oCacic.trimEspacosExcedentes( v_te_bios_fabricante ) , v_tstrCipherOpened1);
  928 + SetValorDatMemoria('Col_Hard.qt_placa_video_cores' , g_oCacic.trimEspacosExcedentes( v_qt_placa_video_cores ) , v_tstrCipherOpened1);
  929 + SetValorDatMemoria('Col_Hard.te_placa_video_desc' , g_oCacic.trimEspacosExcedentes( v_te_placa_video_desc ) , v_tstrCipherOpened1);
  930 + SetValorDatMemoria('Col_Hard.qt_placa_video_mem' , g_oCacic.trimEspacosExcedentes( v_qt_placa_video_mem ) , v_tstrCipherOpened1);
  931 + SetValorDatMemoria('Col_Hard.te_placa_video_resolucao', g_oCacic.trimEspacosExcedentes( v_te_placa_video_resolucao ) , v_tstrCipherOpened1);
  932 + SetValorDatMemoria('Col_Hard.te_placa_som_desc' , g_oCacic.trimEspacosExcedentes( v_te_placa_som_desc ) , v_tstrCipherOpened1);
  933 + SetValorDatMemoria('Col_Hard.te_teclado_desc' , g_oCacic.trimEspacosExcedentes( v_te_teclado_desc ) , v_tstrCipherOpened1);
  934 + SetValorDatMemoria('Col_Hard.te_mouse_desc' , g_oCacic.trimEspacosExcedentes( v_te_mouse_desc ) , v_tstrCipherOpened1);
  935 + SetValorDatMemoria('Col_Hard.te_modem_desc' , g_oCacic.trimEspacosExcedentes( v_te_modem_desc ) , v_tstrCipherOpened1);
  936 + SetValorDatMemoria('Col_Hard.UVC' , g_oCacic.trimEspacosExcedentes( UVC ) , v_tstrCipherOpened1);
  937 + CipherClose(g_oCacic.getCacicPath + 'temp\col_hard.dat', v_tstrCipherOpened1);
1142 Except log_diario('Problema em gravação de dados no DAT!'); 938 Except log_diario('Problema em gravação de dados no DAT!');
1143 End; 939 End;
1144 end 940 end
@@ -1146,77 +942,60 @@ begin @@ -1146,77 +942,60 @@ begin
1146 Begin 942 Begin
1147 SetValorDatMemoria('Col_Hard.nada','nada', v_tstrCipherOpened1); 943 SetValorDatMemoria('Col_Hard.nada','nada', v_tstrCipherOpened1);
1148 SetValorDatMemoria('Col_Hard.Fim' , FormatDateTime('hh:nn:ss', Now), v_tstrCipherOpened1); 944 SetValorDatMemoria('Col_Hard.Fim' , FormatDateTime('hh:nn:ss', Now), v_tstrCipherOpened1);
1149 - CipherClose(p_path_cacic + 'temp\col_hard.dat', v_tstrCipherOpened1); 945 + CipherClose(g_oCacic.getCacicPath + 'temp\col_hard.dat', v_tstrCipherOpened1);
1150 End; 946 End;
1151 Except 947 Except
1152 Begin 948 Begin
1153 SetValorDatMemoria('Col_Hard.nada','nada', v_tstrCipherOpened1); 949 SetValorDatMemoria('Col_Hard.nada','nada', v_tstrCipherOpened1);
1154 SetValorDatMemoria('Col_Hard.Fim' , '99999999', v_tstrCipherOpened1); 950 SetValorDatMemoria('Col_Hard.Fim' , '99999999', v_tstrCipherOpened1);
1155 - CipherClose(p_path_cacic + 'temp\col_hard.dat', v_tstrCipherOpened1); 951 + CipherClose(g_oCacic.getCacicPath + 'temp\col_hard.dat', v_tstrCipherOpened1);
1156 log_diario('Problema na execução => ' + v_mensagem); 952 log_diario('Problema na execução => ' + v_mensagem);
1157 End; 953 End;
1158 End; 954 End;
1159 - oCacic.Free(); 955 + g_oCacic.Free();
1160 end; 956 end;
1161 957
1162 -const  
1163 - CACIC_APP_NAME = 'col_hard';  
1164 -  
1165 -var tstrTripa1 : TStrings;  
1166 - intAux : integer;  
1167 - oCacic : TCACIC;  
1168 -  
1169 begin 958 begin
1170 - oCacic := TCACIC.Create(); 959 + g_oCacic := TCACIC.Create();
1171 960
1172 - if( not oCacic.isAppRunning( CACIC_APP_NAME ) ) then 961 + if( not g_oCacic.isAppRunning( CACIC_APP_NAME ) ) then
1173 if (ParamCount>0) then 962 if (ParamCount>0) then
1174 - Begin  
1175 - For intAux := 1 to ParamCount do  
1176 - Begin  
1177 - if LowerCase(Copy(ParamStr(intAux),1,13)) = '/p_cipherkey=' then  
1178 - v_CipherKey := Trim(Copy(ParamStr(intAux),14,Length((ParamStr(intAux)))));  
1179 - End;  
1180 -  
1181 - if (trim(v_CipherKey)<>'') then  
1182 - Begin  
1183 - //Pegarei o nível anterior do diretório, que deve ser, por exemplo \Cacic, para leitura do cacic2.ini  
1184 - tstrTripa1 := explode(ExtractFilePath(ParamStr(0)),'\');  
1185 - p_path_cacic := '';  
1186 - intAux :=0;  
1187 - While intAux < tstrTripa1.Count -1 do  
1188 - begin  
1189 - p_path_cacic := p_path_cacic + tstrTripa1[intAux] + '\';  
1190 - intAux := intAux + 1  
1191 - end;  
1192 -  
1193 - // A chave AES foi obtida no parâmetro p_CipherKey. Recomenda-se que cada empresa altere a sua chave.  
1194 - v_IV := 'abcdefghijklmnop';  
1195 - v_DatFileName := p_path_cacic + 'cacic2.dat';  
1196 - v_tstrCipherOpened := TStrings.Create;  
1197 - v_tstrCipherOpened := CipherOpen(v_DatFileName);  
1198 -  
1199 - v_tstrCipherOpened1 := TStrings.Create;  
1200 - v_tstrCipherOpened1 := CipherOpen(p_path_cacic + 'temp\col_hard.dat');  
1201 -  
1202 - Try  
1203 - v_Debugs := false;  
1204 - if DirectoryExists(p_path_cacic + 'Temp\Debugs') then 963 + Begin
  964 + //Pegarei o nível anterior do diretório, que deve ser, por exemplo \Cacic, para leitura do cacic2.ini
  965 + tstrTripa1 := g_oCacic.explode(ExtractFilePath(ParamStr(0)),'\');
  966 + v_path_cacic := '';
  967 + intAux :=0;
  968 + While intAux < tstrTripa1.Count -1 do
  969 + begin
  970 + v_path_cacic := v_path_cacic + tstrTripa1[intAux] + '\';
  971 + intAux := intAux + 1
  972 + end;
  973 +
  974 + g_oCacic.setCacicPath(v_path_cacic);
  975 +
  976 + v_tstrCipherOpened := TStrings.Create;
  977 + v_tstrCipherOpened := CipherOpen(g_oCacic.getDatFileName);
  978 +
  979 + v_tstrCipherOpened1 := TStrings.Create;
  980 + v_tstrCipherOpened1 := CipherOpen(g_oCacic.getCacicPath + 'temp\col_hard.dat');
  981 +
  982 + Try
  983 + v_Debugs := false;
  984 + if DirectoryExists(g_oCacic.getCacicPath + 'Temp\Debugs') then
  985 + Begin
  986 + if (FormatDateTime('ddmmyyyy', GetFolderDate(g_oCacic.getCacicPath + 'Temp\Debugs')) = FormatDateTime('ddmmyyyy', date)) then
1205 Begin 987 Begin
1206 - if (FormatDateTime('ddmmyyyy', GetFolderDate(p_path_cacic + 'Temp\Debugs')) = FormatDateTime('ddmmyyyy', date)) then  
1207 - Begin  
1208 - v_Debugs := true;  
1209 - log_diario('Pasta "' + p_path_cacic + 'Temp\Debugs" com data '+FormatDateTime('dd-mm-yyyy', GetFolderDate(p_path_cacic + 'Temp\Debugs'))+' encontrada. DEBUG ativado.');  
1210 - End; 988 + v_Debugs := true;
  989 + log_diario('Pasta "' + g_oCacic.getCacicPath + 'Temp\Debugs" com data '+FormatDateTime('dd-mm-yyyy', GetFolderDate(g_oCacic.getCacicPath + 'Temp\Debugs'))+' encontrada. DEBUG ativado.');
1211 End; 990 End;
1212 - Executa_Col_Hard;  
1213 - Except  
1214 - SetValorDatMemoria('Col_Hard.nada', 'nada', v_tstrCipherOpened1);  
1215 - CipherClose(p_path_cacic + 'temp\col_hard.dat', v_tstrCipherOpened1);  
1216 - End;  
1217 - End; 991 + End;
  992 + Executa_Col_Hard;
  993 + Except
  994 + SetValorDatMemoria('Col_Hard.nada', 'nada', v_tstrCipherOpened1);
  995 + CipherClose(g_oCacic.getCacicPath + 'temp\col_hard.dat', v_tstrCipherOpened1);
  996 + End;
1218 End; 997 End;
1219 998
1220 - oCacic.Free(); 999 + g_oCacic.Free();
1221 1000
1222 end. 1001 end.