Commit 4c2a85c754b2216e0640f11337510c142ed8255f
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
Showing
8 changed files
with
420 additions
and
1333 deletions
Show diff stats
cacicservice/CACICsvc.dpr
... | ... | @@ -18,8 +18,8 @@ program CACICsvc; |
18 | 18 | |
19 | 19 | uses |
20 | 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 | 23 | {$R *.RES} |
24 | 24 | |
25 | 25 | begin | ... | ... |
cacicservice/CACICsvcMain.pas
... | ... | @@ -18,17 +18,19 @@ unit CACICsvcMain; |
18 | 18 | |
19 | 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 | 35 | type |
34 | 36 | TCACICservice = class(TService) |
... | ... | @@ -41,9 +43,7 @@ type |
41 | 43 | private |
42 | 44 | |
43 | 45 | { Internal Start & Stop methods } |
44 | - function HomeDrive : string; | |
45 | 46 | function GetValorChaveRegIni(p_Secao, p_Chave, p_File : String): String; |
46 | - function GetAppPath: String; | |
47 | 47 | procedure doSaveLog(Msg : String); |
48 | 48 | Procedure WMEndSession(var Msg : TWMEndSession) ; message WM_ENDSESSION; |
49 | 49 | procedure ExecutaCACIC; |
... | ... | @@ -66,6 +66,7 @@ begin |
66 | 66 | inherited; |
67 | 67 | Application.Free; |
68 | 68 | end; |
69 | + | |
69 | 70 | // Funções Auxiliares |
70 | 71 | function TCACICservice.GetValorChaveRegIni(p_Secao, p_Chave, p_File : String): String; |
71 | 72 | //Para buscar do Arquivo INI... |
... | ... | @@ -105,40 +106,11 @@ var |
105 | 106 | end; |
106 | 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 | 109 | procedure TCACICservice.doSaveLog(Msg : String); |
138 | 110 | var fLog: textfile; |
139 | 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 | 114 | Append(fLog) |
143 | 115 | else |
144 | 116 | Rewrite(fLog); |
... | ... | @@ -172,6 +144,7 @@ end; |
172 | 144 | |
173 | 145 | procedure TCACICservice.ServiceStart(Sender: TService; var Started: Boolean); |
174 | 146 | begin |
147 | + g_oCacic := TCACIC.Create; | |
175 | 148 | |
176 | 149 | Started := true; |
177 | 150 | |
... | ... | @@ -182,36 +155,32 @@ begin |
182 | 155 | |
183 | 156 | While not Terminated do |
184 | 157 | Sleep(250); |
185 | - | |
186 | - | |
187 | 158 | end; |
188 | 159 | |
189 | 160 | procedure TCACICservice.ExecutaCACIC; |
190 | 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 | 165 | Sleep(3000); |
197 | 166 | |
198 | 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 | 169 | Begin |
201 | 170 | // Executo o CHKsis, verificando a estrutura do sistema |
202 | 171 | Try |
203 | - WinEXEC(PChar(HomeDrive + '\chksis.exe'),sw_HIDE); | |
172 | + WinEXEC(PChar(g_oCacic.getWinDir + 'chksis.exe'),sw_HIDE); | |
204 | 173 | Except |
205 | 174 | End; |
206 | 175 | |
207 | - While not (FileExists(strCacicDir + '\cacic2.exe')) do | |
176 | + While not (FileExists(g_oCacic.getCacicPath + 'cacic2.exe')) do | |
208 | 177 | Sleep(5000); // Espero 5 segundos... |
209 | 178 | End; |
210 | 179 | |
211 | 180 | |
212 | 181 | // Executo o Agente Principal do CACIC |
213 | 182 | Try |
214 | - WinEXEC(PChar(strCacicDir + '\cacic2.exe'),sw_hide); | |
183 | + WinEXEC(PChar(g_oCacic.getCacicPath + 'cacic2.exe'),sw_hide); | |
215 | 184 | Except |
216 | 185 | End; |
217 | 186 | End; | ... | ... |
chkcacic/chkcacic.dpr
... | ... | @@ -27,18 +27,18 @@ const |
27 | 27 | CACIC_APP_NAME = 'chkcacic'; |
28 | 28 | |
29 | 29 | var |
30 | - oCacic : TCACIC; | |
30 | + g_oCacic : TCACIC; | |
31 | 31 | |
32 | 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 | 36 | then begin |
37 | 37 | Application.Initialize; |
38 | 38 | Application.CreateForm(TForm1, Form1); |
39 | 39 | Application.Run; |
40 | 40 | end; |
41 | 41 | |
42 | - oCacic.Free(); | |
42 | + g_oCacic.Free(); | |
43 | 43 | |
44 | 44 | end. | ... | ... |
chkcacic/main.pas
... | ... | @@ -56,71 +56,56 @@ unit main; |
56 | 56 | |
57 | 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 | 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 | 110 | Procedure chkcacic; |
126 | 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 | 120 | Procedure MostraFormConfigura; |
136 | 121 | |
137 | 122 | Function ChecaVersoesAgentes(p_strNomeAgente : String) : integer; // 2.2.0.16 |
138 | -Function Explode(Texto, Separador : String) : TStrings; | |
139 | 123 | Function FindWindowByTitle(WindowTitle: string): Hwnd; |
140 | 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 | 125 | function GetFolderDate(Folder: string): TDateTime; |
... | ... | @@ -144,7 +128,6 @@ Function GetRootKey(strRootKey: String): HKEY; |
144 | 128 | Function GetValorChaveRegEdit(Chave: String): Variant; |
145 | 129 | Function GetValorChaveRegIni(p_Secao, p_Chave, p_File : String): String; |
146 | 130 | Function GetVersionInfo(p_File: string):string; |
147 | -Function HomeDrive : string; | |
148 | 131 | Function KillTask(ExeFileName: string): Integer; |
149 | 132 | Function ListFileDir(Path: string):string; |
150 | 133 | function Posso_Rodar_CACIC : boolean; |
... | ... | @@ -167,8 +150,7 @@ type |
167 | 150 | |
168 | 151 | var |
169 | 152 | Form1: TForm1; |
170 | - Dir, ENDERECO_SERV_CACIC, | |
171 | - v_home_drive : string; | |
153 | + ENDERECO_SERV_CACIC : string; | |
172 | 154 | implementation |
173 | 155 | |
174 | 156 | uses FormConfig; |
... | ... | @@ -315,52 +297,12 @@ begin |
315 | 297 | StrDispose(temp); |
316 | 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 | 300 | procedure ComunicaInsucesso(strIndicador : String); |
359 | 301 | var IdHTTP2: TIdHTTP; |
360 | 302 | Request_Config : TStringList; |
361 | 303 | Response_Config : TStringStream; |
362 | 304 | begin |
363 | - | |
305 | + | |
364 | 306 | // Envio notificação de insucesso para o Módulo Gerente Centralizado |
365 | 307 | Request_Config := TStringList.Create; |
366 | 308 | Request_Config.Values['cs_indicador'] := strIndicador; |
... | ... | @@ -390,8 +332,8 @@ var |
390 | 332 | HistoricoLog : TextFile; |
391 | 333 | begin |
392 | 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 | 338 | {$IOChecks off} |
397 | 339 | Reset(HistoricoLog); {Abre o arquivo texto} |
... | ... | @@ -423,107 +365,6 @@ Begin |
423 | 365 | End; |
424 | 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 | 368 | Function CipherClose(p_DatFileName : string) : String; |
528 | 369 | var v_strCipherOpenImploded : string; |
529 | 370 | v_DatFile : TextFile; |
... | ... | @@ -536,8 +377,8 @@ begin |
536 | 377 | Rewrite (v_DatFile); |
537 | 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 | 383 | Writeln(v_DatFile,v_strCipherClosed); {Grava a string Texto no arquivo texto} |
543 | 384 | |
... | ... | @@ -567,12 +408,12 @@ begin |
567 | 408 | Readln(v_DatFile,v_strCipherClosed); |
568 | 409 | while not EOF(v_DatFile) do Readln(v_DatFile,v_strCipherClosed); |
569 | 410 | CloseFile(v_DatFile); |
570 | - v_strCipherOpened:= DeCrypt(v_strCipherClosed); | |
411 | + v_strCipherOpened:= g_oCacic.deCrypt(v_strCipherClosed); | |
571 | 412 | end; |
572 | 413 | if (trim(v_strCipherOpened)<>'') then |
573 | - Result := explode(v_strCipherOpened,v_SeparatorKey) | |
414 | + Result := g_oCacic.explode(v_strCipherOpened,g_oCacic.getSeparatorKey) | |
574 | 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 | 419 | if Result.Count mod 2 <> 0 then |
... | ... | @@ -635,7 +476,7 @@ var RegEditSet: TRegistry; |
635 | 476 | ListaAuxSet : TStrings; |
636 | 477 | I : Integer; |
637 | 478 | begin |
638 | - ListaAuxSet := Explode(Chave, '); | |
479 | + ListaAuxSet := g_oCacic.explode(Chave, '); | |
639 | 480 | strRootKey := ListaAuxSet[0]; |
640 | 481 | For I := 1 To ListaAuxSet.Count - 2 do |
641 | 482 | strKey := strKey + ListaAuxSet[I] + '\'; |
... | ... | @@ -695,7 +536,7 @@ var RegEditGet: TRegistry; |
695 | 536 | DataSize, Len, I : Integer; |
696 | 537 | begin |
697 | 538 | try |
698 | - ListaAuxGet := Explode(Chave, '); | |
539 | + ListaAuxGet := g_oCacic.Explode(Chave, '); | |
699 | 540 | |
700 | 541 | strRootKey := ListaAuxGet[0]; |
701 | 542 | For I := 1 To ListaAuxGet.Count - 2 Do strKey := strKey + ListaAuxGet[I] + '\'; |
... | ... | @@ -788,7 +629,7 @@ var RegDelValorReg: TRegistry; |
788 | 629 | ListaAuxDel : TStrings; |
789 | 630 | I : Integer; |
790 | 631 | begin |
791 | - ListaAuxDel := Explode(Chave, '); | |
632 | + ListaAuxDel := g_oCacic.explode(Chave, '); | |
792 | 633 | strRootKey := ListaAuxDel[0]; |
793 | 634 | For I := 1 To ListaAuxDel.Count - 2 Do strKey := strKey + ListaAuxDel[I] + '\'; |
794 | 635 | strValue := ListaAuxDel[ListaAuxDel.Count - 1]; |
... | ... | @@ -906,18 +747,12 @@ begin |
906 | 747 | End; |
907 | 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 | 750 | procedure GravaConfiguracoes; |
918 | 751 | var chkcacic_ini : TextFile; |
919 | 752 | begin |
920 | 753 | try |
754 | + g_oCacic.setCacicPath(Configs.Edit_cacic_dir.text+'\'); | |
755 | + | |
921 | 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 | 757 | AssignFile(chkcacic_ini,ExtractFilePath(Application.Exename) + '\chkcacic.ini'); {Associa o arquivo a uma variável do tipo TextFile} |
923 | 758 | Rewrite (chkcacic_ini); // Recria o arquivo... |
... | ... | @@ -1000,18 +835,17 @@ begin |
1000 | 835 | Writeln(chkcacic_ini,'[Cacic2]'); |
1001 | 836 | |
1002 | 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 | 838 | if Configs.ckboxExibeInformacoes.Checked then |
1006 | 839 | v_exibe_informacoes := 'S' |
1007 | 840 | else |
1008 | 841 | v_exibe_informacoes := 'N'; |
1009 | 842 | |
843 | + v_ip_serv_cacic := Configs.Edit_ip_serv_cacic.text; | |
1010 | 844 | v_te_instala_informacoes_extras := Configs.Memo_te_instala_informacoes_extras.Text; |
1011 | 845 | |
1012 | 846 | // Escrita dos parâmetros obrigatórios |
1013 | 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 | 849 | Writeln(chkcacic_ini,'exibe_informacoes='+v_exibe_informacoes); |
1016 | 850 | |
1017 | 851 | // Escrita dos valores opcionais quando existirem |
... | ... | @@ -1033,7 +867,7 @@ begin |
1033 | 867 | Writeln(iniFile,''); |
1034 | 868 | Writeln(iniFile,'[Cacic2]'); |
1035 | 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 | 871 | CloseFile(iniFile); {Fecha o arquivo texto} |
1038 | 872 | except |
1039 | 873 | end; |
... | ... | @@ -1159,7 +993,7 @@ Begin |
1159 | 993 | result := false; |
1160 | 994 | |
1161 | 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 | 998 | // Se o aguarde_CACIC.txt existir é porque refere-se a uma versão mais atual: 2.2.0.20 ou maior |
1165 | 999 | if not (FileExists(g_oCacic.getCacicPath() + '\aguarde_CACIC.txt')) then |
... | ... | @@ -1247,6 +1081,7 @@ var bool_configura, |
1247 | 1081 | bool_ArquivoINI, |
1248 | 1082 | bool_CommandLine : boolean; |
1249 | 1083 | |
1084 | + v_cacic_dir, | |
1250 | 1085 | v_te_serv_updates, |
1251 | 1086 | v_nu_porta_serv_updates, |
1252 | 1087 | v_nm_usuario_login_serv_updates, |
... | ... | @@ -1280,7 +1115,6 @@ begin |
1280 | 1115 | bool_ArquivoINI := FileExists(ExtractFilePath(Application.Exename) + '\chkcacic.ini'); |
1281 | 1116 | |
1282 | 1117 | Try |
1283 | - v_home_drive := MidStr(HomeDrive,1,3); //x:\ | |
1284 | 1118 | |
1285 | 1119 | // 2.2.0.17 - Tratamento de opções passadas em linha de comando |
1286 | 1120 | // Grande dica do grande Cláudio Filho (OpenOffice.org) |
... | ... | @@ -1332,16 +1166,14 @@ begin |
1332 | 1166 | End; |
1333 | 1167 | |
1334 | 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 | 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 | 1174 | Begin |
1343 | 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 | 1177 | End; |
1346 | 1178 | End; |
1347 | 1179 | |
... | ... | @@ -1393,18 +1225,14 @@ begin |
1393 | 1225 | LogDebug(':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::'); |
1394 | 1226 | LogDebug(':::::::::::::: OBTENDO VALORES DO "chkcacic.ini" ::::::::::::::'); |
1395 | 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 | 1230 | LogDebug('IP do servidor...........................: '+v_ip_serv_cacic); |
1399 | 1231 | LogDebug(':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::'); |
1400 | 1232 | bool_configura := false; |
1401 | 1233 | |
1402 | 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 | 1237 | if (g_oCacic.isWindowsGEXP()) then // Se >= Maior ou Igual ao WinXP... |
1410 | 1238 | Begin |
... | ... | @@ -1415,24 +1243,24 @@ begin |
1415 | 1243 | Try |
1416 | 1244 | Begin |
1417 | 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 | 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 | 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 | 1257 | // Liberando as conexões de Saída para o ChkCacic |
1430 | 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 | 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 | 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 | 1264 | End |
1437 | 1265 | Except |
1438 | 1266 | LogDebug('Problema Liberando Policies de FireWall!'); |
... | ... | @@ -1477,25 +1305,25 @@ begin |
1477 | 1305 | end; |
1478 | 1306 | |
1479 | 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 | 1309 | begin |
1482 | - LogDiario('Criando pasta '+Dir); | |
1483 | - ForceDirectories(Dir); | |
1310 | + LogDiario('Criando pasta '+g_oCacic.getCacicPath); | |
1311 | + ForceDirectories(g_oCacic.getCacicPath); | |
1484 | 1312 | end; |
1485 | 1313 | |
1486 | 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 | 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 | 1320 | end; |
1493 | 1321 | |
1494 | 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 | 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 | 1327 | end; |
1500 | 1328 | |
1501 | 1329 | |
... | ... | @@ -1573,101 +1401,101 @@ begin |
1573 | 1401 | LogDebug(':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::'); |
1574 | 1402 | |
1575 | 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 | 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 | 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 | 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 | 1431 | LogDebug(':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::'); |
1604 | 1432 | End; |
1605 | 1433 | |
1606 | 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 | 1436 | Begin |
1609 | 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 | 1441 | // 0 => Arquivo de versões ou informação inexistente |
1614 | 1442 | // 1 => Versões iguais |
1615 | 1443 | // 2 => Versões diferentes |
1616 | 1444 | if (intAux = 0) then |
1617 | 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 | 1447 | v_versao_remota := StringReplace(XML_RetornaValor('CACIC2' , v_retorno),'0103','',[rfReplaceAll]); |
1620 | 1448 | End; |
1621 | 1449 | |
1622 | 1450 | if (intAux = 2) or // Caso haja diferença na comparação de versões com "versoes_agentes.ini"... |
1623 | 1451 | (v_versao_local ='0000') or // Provavelmente versão muito antiga ou corrompida |
1624 | 1452 | (v_versao_local ='2208') then |
1625 | - Matar(Dir, '\cacic2.exe'); | |
1453 | + Matar(g_oCacic.getCacicPath, 'cacic2.exe'); | |
1626 | 1454 | End; |
1627 | 1455 | |
1628 | 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 | 1458 | Begin |
1631 | 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 | 1463 | // 0 => Arquivo de versões ou informação inexistente |
1636 | 1464 | // 1 => Versões iguais |
1637 | 1465 | // 2 => Versões diferentes |
1638 | 1466 | if (intAux = 0) then |
1639 | 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 | 1469 | v_versao_remota := StringReplace(XML_RetornaValor('GER_COLS' , v_retorno),'0103','',[rfReplaceAll]); |
1642 | 1470 | End; |
1643 | 1471 | |
1644 | 1472 | if (intAux = 2) or // Caso haja diferença na comparação de versões com "versoes_agentes.ini"... |
1645 | 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 | 1475 | End; |
1648 | 1476 | |
1649 | 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 | 1479 | Begin |
1652 | - intAux := ChecaVersoesAgentes(HomeDrive + '\chksis.exe'); | |
1480 | + intAux := ChecaVersoesAgentes(g_oCacic.getWinDir + 'chksis.exe'); | |
1653 | 1481 | // 0 => Arquivo de versões ou informação inexistente |
1654 | 1482 | // 1 => Versões iguais |
1655 | 1483 | // 2 => Versões diferentes |
1656 | 1484 | if (intAux = 0) then |
1657 | 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 | 1487 | v_versao_remota := StringReplace(XML_RetornaValor('CHKSIS' , v_retorno),'0103','',[rfReplaceAll]); |
1660 | 1488 | End; |
1661 | 1489 | |
1662 | 1490 | if (intAux = 2) or // Caso haja diferença na comparação de versões com "versoes_agentes.ini"... |
1663 | 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 | 1493 | End; |
1666 | 1494 | |
1667 | 1495 | // Tento detectar o ChkSis.EXE e copio ou faço FTP caso não exista |
1668 | 1496 | verifyAndGet('chksis.exe', |
1669 | 1497 | XML_RetornaValor('CHKSIS_HASH', v_retorno), |
1670 | - HomeDrive, | |
1498 | + g_oCacic.getWinDir, | |
1671 | 1499 | v_te_serv_updates, |
1672 | 1500 | v_nu_porta_serv_updates, |
1673 | 1501 | v_nm_usuario_login_serv_updates, |
... | ... | @@ -1676,11 +1504,11 @@ begin |
1676 | 1504 | v_exibe_informacoes); |
1677 | 1505 | |
1678 | 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 | 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 | 1512 | end; |
1685 | 1513 | |
1686 | 1514 | |
... | ... | @@ -1689,8 +1517,8 @@ begin |
1689 | 1517 | Begin |
1690 | 1518 | // Tento detectar o CACICsvc.EXE e copio ou faço FTP caso não exista |
1691 | 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 | 1522 | v_te_serv_updates, |
1695 | 1523 | v_nu_porta_serv_updates, |
1696 | 1524 | v_nm_usuario_login_serv_updates, |
... | ... | @@ -1699,16 +1527,13 @@ begin |
1699 | 1527 | v_exibe_informacoes); |
1700 | 1528 | |
1701 | 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 | 1530 | End; |
1706 | 1531 | |
1707 | 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 | 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 | 1537 | end; |
1713 | 1538 | |
1714 | 1539 | // Verifico se existe a pasta "modulos" |
... | ... | @@ -1717,8 +1542,8 @@ begin |
1717 | 1542 | |
1718 | 1543 | // Tento detectar o Agente Principal e copio ou faço FTP caso não exista |
1719 | 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 | 1547 | v_te_serv_updates, |
1723 | 1548 | v_nu_porta_serv_updates, |
1724 | 1549 | v_nm_usuario_login_serv_updates, |
... | ... | @@ -1728,7 +1553,7 @@ begin |
1728 | 1553 | |
1729 | 1554 | verifyAndGet('ger_cols.exe', |
1730 | 1555 | XML_RetornaValor('GER_COLS_HASH', v_retorno), |
1731 | - Dir + '\modulos', | |
1556 | + g_oCacic.getCacicPath + 'modulos', | |
1732 | 1557 | v_te_serv_updates, |
1733 | 1558 | v_nu_porta_serv_updates, |
1734 | 1559 | v_nm_usuario_login_serv_updates, |
... | ... | @@ -1747,8 +1572,8 @@ begin |
1747 | 1572 | (v_array_modulos[intAux]<>'chksis.exe') then |
1748 | 1573 | Begin |
1749 | 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 | 1577 | End; |
1753 | 1578 | End; |
1754 | 1579 | End; |
... | ... | @@ -1760,7 +1585,7 @@ begin |
1760 | 1585 | // Tento detectar (de novo) o ChkSis.EXE e copio ou faço FTP caso não exista |
1761 | 1586 | verifyAndGet('chksis.exe', |
1762 | 1587 | XML_RetornaValor('CHKSIS_HASH', v_retorno), |
1763 | - HomeDrive, | |
1588 | + g_oCacic.getWinDir, | |
1764 | 1589 | v_te_serv_updates, |
1765 | 1590 | v_nu_porta_serv_updates, |
1766 | 1591 | v_nm_usuario_login_serv_updates, |
... | ... | @@ -1771,7 +1596,7 @@ begin |
1771 | 1596 | // Tento detectar (de novo) o Agente Principal e copio ou faço FTP caso não exista |
1772 | 1597 | verifyAndGet('cacic2.exe', |
1773 | 1598 | XML_RetornaValor('CACIC2_HASH', v_retorno), |
1774 | - Dir, | |
1599 | + g_oCacic.getCacicPath, | |
1775 | 1600 | v_te_serv_updates, |
1776 | 1601 | v_nu_porta_serv_updates, |
1777 | 1602 | v_nm_usuario_login_serv_updates, |
... | ... | @@ -1781,7 +1606,7 @@ begin |
1781 | 1606 | |
1782 | 1607 | verifyAndGet('ger_cols.exe', |
1783 | 1608 | XML_RetornaValor('GER_COLS_HASH', v_retorno), |
1784 | - Dir + '\modulos', | |
1609 | + g_oCacic.getCacicPath + 'modulos', | |
1785 | 1610 | v_te_serv_updates, |
1786 | 1611 | v_nu_porta_serv_updates, |
1787 | 1612 | v_nm_usuario_login_serv_updates, |
... | ... | @@ -1789,28 +1614,22 @@ begin |
1789 | 1614 | v_te_path_serv_updates, |
1790 | 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 | 1617 | if (g_oCacic.isWindowsNTPlataform) then |
1799 | 1618 | Begin |
1800 | 1619 | Try |
1801 | 1620 | // Acrescento o Ger_Cols e srCacicSrv às exceções do FireWall nativo... |
1802 | 1621 | |
1803 | 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 | 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 | 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 | 1634 | Except |
1816 | 1635 | End; |
... | ... | @@ -1823,13 +1642,13 @@ begin |
1823 | 1642 | Begin |
1824 | 1643 | // Crio a chave/valor cacic2 para autoexecução do Cacic, caso não exista esta chave/valor |
1825 | 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 | 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 | 1649 | bool_ExistsAutoRun := true |
1831 | 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 | 1652 | End |
1834 | 1653 | else |
1835 | 1654 | Begin |
... | ... | @@ -1840,24 +1659,24 @@ begin |
1840 | 1659 | // Igualo as chaves ip_serv_cacic dos arquivos chksis.ini e cacic2.ini! |
1841 | 1660 | SetValorDatMemoria('Configs.EnderecoServidor', v_ip_serv_cacic); |
1842 | 1661 | LogDebug('Fechando Arquivo de Configurações do Cacic'); |
1843 | - CipherClose(v_DatFileName); | |
1662 | + CipherClose(g_oCacic.getDatFileName); | |
1844 | 1663 | |
1845 | 1664 | LogDebug('Abrindo Arquivo de Configurações do ChkSis'); |
1846 | - CipherOpen(HomeDrive + '\chksis.dat'); | |
1665 | + CipherOpen(g_oCacic.getWinDir + 'chksis.dat'); | |
1847 | 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 | 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 | 1671 | LogDebug('Fechando Arquivo de Configurações do ChkSis'); |
1853 | 1672 | |
1854 | 1673 | LogDebug('Resgatando informações para identificação de alteração do agente CACIC2'); |
1855 | 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 | 1676 | LogDebug('Inicial => "' + strDataHoraCACIC2_INI + '" Final => "' + strDataHoraCACIC2_FIM + '"'); |
1858 | 1677 | |
1859 | 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 | 1680 | LogDebug('Inicial => "' + strDataHoraGERCOLS_INI + '" Final => "' + strDataHoraGERCOLS_FIM + '"'); |
1862 | 1681 | |
1863 | 1682 | // Caso o Cacic tenha sido baixado executo-o com parâmetro de configuração de servidor |
... | ... | @@ -1866,7 +1685,7 @@ begin |
1866 | 1685 | Begin |
1867 | 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 | 1689 | (not g_oCacic.isWindowsNTPlataform()) or |
1871 | 1690 | (g_oCacic.isWindowsNTPlataform()) then |
1872 | 1691 | Begin |
... | ... | @@ -1888,11 +1707,11 @@ begin |
1888 | 1707 | // Se não for plataforma NT executo o agente principal |
1889 | 1708 | if not (g_oCacic.isWindowsNTPlataform()) then |
1890 | 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 | 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 | 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 | 1715 | End |
1897 | 1716 | else |
1898 | 1717 | Begin |
... | ... | @@ -1911,13 +1730,13 @@ begin |
1911 | 1730 | Begin |
1912 | 1731 | // Instalo e Habilito o serviço |
1913 | 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 | 1734 | End |
1916 | 1735 | else if ((wordServiceStatus < 4) or |
1917 | 1736 | (wordServiceStatus > 4)) then |
1918 | 1737 | Begin |
1919 | 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 | 1740 | End |
1922 | 1741 | else |
1923 | 1742 | LogDiario('Não instalei o CACICservice. Já está rodando...'); |
... | ... | @@ -1937,14 +1756,11 @@ begin |
1937 | 1756 | LogDiario('Falha na Instalação/Atualização'); |
1938 | 1757 | End; |
1939 | 1758 | |
1940 | - Application.Terminate; | |
1941 | - { | |
1942 | - Considerando-se que o objeto se libera ao fim da aplicação | |
1943 | 1759 | try |
1944 | 1760 | g_oCacic.Free(); |
1945 | 1761 | except |
1946 | 1762 | end; |
1947 | - } | |
1763 | + Application.Terminate; | |
1948 | 1764 | end; |
1949 | 1765 | |
1950 | 1766 | function ServiceRunning(sMachine, sService: PChar): Boolean; | ... | ... |
chksis/chksis.dpr
... | ... | @@ -37,63 +37,22 @@ uses |
37 | 37 | IdTCPClient, |
38 | 38 | PJVersionInfo, |
39 | 39 | Winsock, |
40 | - DCPcrypt2, | |
41 | - DCPrijndael, | |
42 | - DCPbase64, | |
43 | 40 | Tlhelp32, |
44 | 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 | 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 | 57 | function VerFmt(const MS, LS: DWORD): string; |
99 | 58 | // Format the version number from the given DWORDs containing the info |
... | ... | @@ -102,31 +61,17 @@ begin |
102 | 61 | [HiWord(MS), LoWord(MS), HiWord(LS), LoWord(LS)]) |
103 | 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 | 64 | procedure log_diario(strMsg : String); |
120 | 65 | var |
121 | 66 | HistoricoLog : TextFile; |
122 | 67 | strDataArqLocal, |
123 | 68 | strDataAtual, |
124 | - p_path : string; | |
69 | + v_path : string; | |
125 | 70 | begin |
126 | 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 | 75 | {$IOChecks off} |
131 | 76 | Reset(HistoricoLog); {Abre o arquivo texto} |
132 | 77 | {$IOChecks on} |
... | ... | @@ -136,7 +81,7 @@ begin |
136 | 81 | Append(HistoricoLog); |
137 | 82 | Writeln(HistoricoLog,FormatDateTime('dd/mm hh:nn:ss : ', Now) + '======================> Iniciando o Log <======================='); |
138 | 83 | end; |
139 | - DateTimeToString(strDataArqLocal, 'yyyymmdd', FileDateToDateTime(Fileage(p_path))); | |
84 | + DateTimeToString(strDataArqLocal, 'yyyymmdd', FileDateToDateTime(Fileage(v_path))); | |
140 | 85 | DateTimeToString(strDataAtual , 'yyyymmdd', Date); |
141 | 86 | if (strDataAtual <> strDataArqLocal) then // Se o arquivo INI não é da data atual... |
142 | 87 | begin |
... | ... | @@ -163,93 +108,6 @@ Begin |
163 | 108 | if v_Debugs then log_diario('(v.'+getVersionInfo(ParamStr(0))+') DEBUG - '+p_msg); |
164 | 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 | 111 | Function CipherClose(p_DatFileName : string) : String; |
254 | 112 | var v_strCipherOpenImploded : string; |
255 | 113 | v_DatFile : TextFile; |
... | ... | @@ -270,8 +128,8 @@ begin |
270 | 128 | Append(v_DatFile); |
271 | 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 | 134 | Writeln(v_DatFile,v_strCipherClosed); {Grava a string Texto no arquivo texto} |
277 | 135 | |
... | ... | @@ -302,12 +160,12 @@ begin |
302 | 160 | Readln(v_DatFile,v_strCipherClosed); |
303 | 161 | while not EOF(v_DatFile) do Readln(v_DatFile,v_strCipherClosed); |
304 | 162 | CloseFile(v_DatFile); |
305 | - v_strCipherOpened:= DeCrypt(v_strCipherClosed); | |
163 | + v_strCipherOpened:= g_oCacic.deCrypt(v_strCipherClosed); | |
306 | 164 | end; |
307 | 165 | if (trim(v_strCipherOpened)<>'') then |
308 | - Result := explode(v_strCipherOpened,v_SeparatorKey) | |
166 | + Result := g_oCacic.explode(v_strCipherOpened,g_oCacic.getSeparatorKey) | |
309 | 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 | 170 | if Result.Count mod 2 <> 0 then |
313 | 171 | Result.Add(''); |
... | ... | @@ -344,7 +202,7 @@ var RegEditSet: TRegistry; |
344 | 202 | ListaAuxSet : TStrings; |
345 | 203 | I : Integer; |
346 | 204 | begin |
347 | - ListaAuxSet := Explode(Chave, '); | |
205 | + ListaAuxSet := g_oCacic.explode(Chave, '); | |
348 | 206 | strRootKey := ListaAuxSet[0]; |
349 | 207 | For I := 1 To ListaAuxSet.Count - 2 Do strKey := strKey + ListaAuxSet[I] + '\'; |
350 | 208 | strValue := ListaAuxSet[ListaAuxSet.Count - 1]; |
... | ... | @@ -402,7 +260,7 @@ var RegEditGet: TRegistry; |
402 | 260 | DataSize, Len, I : Integer; |
403 | 261 | begin |
404 | 262 | try |
405 | - ListaAuxGet := Explode(Chave, '); | |
263 | + ListaAuxGet := g_oCacic.explode(Chave, '); | |
406 | 264 | |
407 | 265 | strRootKey := ListaAuxGet[0]; |
408 | 266 | For I := 1 To ListaAuxGet.Count - 2 Do strKey := strKey + ListaAuxGet[I] + '\'; |
... | ... | @@ -484,7 +342,7 @@ var RegDelValorReg: TRegistry; |
484 | 342 | ListaAuxDel : TStrings; |
485 | 343 | I : Integer; |
486 | 344 | begin |
487 | - ListaAuxDel := Explode(Chave, '); | |
345 | + ListaAuxDel := g_oCacic.explode(Chave, '); | |
488 | 346 | strRootKey := ListaAuxDel[0]; |
489 | 347 | For I := 1 To ListaAuxDel.Count - 2 Do strKey := strKey + ListaAuxDel[I] + '\'; |
490 | 348 | strValue := ListaAuxDel[ListaAuxDel.Count - 1]; |
... | ... | @@ -521,8 +379,6 @@ begin |
521 | 379 | Result := IntToStr(I1); |
522 | 380 | end; |
523 | 381 | |
524 | - | |
525 | - | |
526 | 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 | 383 | var IdFTP : TIdFTP; |
528 | 384 | msg_error : string; |
... | ... | @@ -565,15 +421,6 @@ begin |
565 | 421 | End; |
566 | 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 | 424 | function GetIP: string; |
578 | 425 | var ipwsa:TWSAData; p:PHostEnt; s:array[0..128] of char; c:pchar; |
579 | 426 | begin |
... | ... | @@ -704,11 +551,11 @@ Begin |
704 | 551 | result := false; |
705 | 552 | |
706 | 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 | 555 | Begin |
709 | 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 | 559 | result := true; |
713 | 560 | End; |
714 | 561 | End; |
... | ... | @@ -720,7 +567,7 @@ var v_versao_REM, |
720 | 567 | v_array_NomeAgente : TStrings; |
721 | 568 | intAux : integer; |
722 | 569 | Begin |
723 | - v_array_NomeAgente := explode(p_strNomeAgente,'); | |
570 | + v_array_NomeAgente := g_oCacic.explode(p_strNomeAgente,'); | |
724 | 571 | |
725 | 572 | v_versao_REM := XML_RetornaValor(StringReplace(StrUpper(PChar(v_array_NomeAgente[v_array_NomeAgente.count-1])),'.EXE','',[rfReplaceAll]), v_retorno); |
726 | 573 | v_versao_LOC := GetVersionInfo(p_strNomeAgente); |
... | ... | @@ -779,7 +626,7 @@ procedure executa_chksis; |
779 | 626 | var |
780 | 627 | bool_download_CACIC2, |
781 | 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 | 630 | v_te_serv_updates, v_nu_porta_serv_updates, v_nm_usuario_login_serv_updates, |
784 | 631 | v_te_senha_login_serv_updates, v_te_path_serv_updates : String; |
785 | 632 | Request_Config : TStringList; |
... | ... | @@ -789,19 +636,19 @@ var |
789 | 636 | begin |
790 | 637 | |
791 | 638 | bool_download_CACIC2 := false; |
792 | - v_home_drive := MidStr(HomeDrive,1,3); //x:\ | |
793 | 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 | 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 | 645 | v_Debugs := false; |
799 | - if DirectoryExists(v_cacic_dir + '\Temp\Debugs') then | |
646 | + if DirectoryExists(g_oCacic.getCacicPath + 'Temp\Debugs') then | |
800 | 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 | 649 | Begin |
803 | 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 | 652 | End; |
806 | 653 | End; |
807 | 654 | |
... | ... | @@ -813,36 +660,30 @@ begin |
813 | 660 | end; |
814 | 661 | |
815 | 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 | 664 | begin |
818 | 665 | //log_diario('Criando diretório ' + Dir,ExtractFilePath(ParamStr(0))); |
819 | - ForceDirectories(Dir); | |
666 | + ForceDirectories(g_oCacic.getCacicPath); | |
820 | 667 | end; |
821 | 668 | |
822 | 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 | 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 | 676 | end; |
830 | 677 | |
831 | 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 | 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 | 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 | 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 | 687 | Begin |
847 | 688 | // Busco as configurações para acesso ao ambiente FTP - Updates |
848 | 689 | Request_Config := TStringList.Create; |
... | ... | @@ -886,68 +727,68 @@ begin |
886 | 727 | Response_Config.Free; |
887 | 728 | |
888 | 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 | 731 | Begin |
891 | - intAux := ChecaVersoesAgentes(Dir + '\cacic2.exe'); | |
732 | + intAux := ChecaVersoesAgentes(g_oCacic.getCacicPath + 'cacic2.exe'); | |
892 | 733 | // 0 => Arquivo de versões ou informação inexistente |
893 | 734 | // 1 => Versões iguais |
894 | 735 | // 2 => Versões diferentes |
895 | 736 | if (intAux = 0) then |
896 | 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 | 739 | v_versao_remota := StringReplace(XML_RetornaValor('CACIC2' , v_retorno),'0103','',[rfReplaceAll]); |
899 | 740 | End; |
900 | 741 | |
901 | 742 | if (intAux = 2) or // Caso haja diferença na comparação de versões com "versoes_agentes.ini"... |
902 | 743 | (v_versao_local ='0000') or // Provavelmente versão muito antiga ou corrompida |
903 | 744 | (v_versao_local ='2208') then |
904 | - Matar(Dir, '\cacic2.exe'); | |
745 | + Matar(g_oCacic.getCacicPath, 'cacic2.exe'); | |
905 | 746 | End; |
906 | 747 | |
907 | 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 | 750 | Begin |
910 | - intAux := ChecaVersoesAgentes(Dir + '\modulos\ger_cols.exe'); | |
751 | + intAux := ChecaVersoesAgentes(g_oCacic.getCacicPath + 'modulos\ger_cols.exe'); | |
911 | 752 | // 0 => Arquivo de versões ou informação inexistente |
912 | 753 | // 1 => Versões iguais |
913 | 754 | // 2 => Versões diferentes |
914 | 755 | if (intAux = 0) then |
915 | 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 | 758 | v_versao_remota := StringReplace(XML_RetornaValor('GER_COLS' , v_retorno),'0103','',[rfReplaceAll]); |
918 | 759 | End; |
919 | 760 | |
920 | 761 | if (intAux = 2) or // Caso haja diferença na comparação de versões com "versoes_agentes.ini"... |
921 | 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 | 765 | End; |
925 | 766 | |
926 | 767 | |
927 | 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 | 770 | begin |
930 | 771 | log_diario('Fazendo FTP de cacic2.exe a partir de ' + v_te_serv_updates + '/' + |
931 | 772 | v_nu_porta_serv_updates+'/'+ |
932 | 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 | 775 | FTP(v_te_serv_updates, |
935 | 776 | v_nu_porta_serv_updates, |
936 | 777 | v_nm_usuario_login_serv_updates, |
937 | 778 | v_te_senha_login_serv_updates, |
938 | 779 | v_te_path_serv_updates, |
939 | 780 | 'cacic2.exe', |
940 | - Dir); | |
781 | + g_oCacic.getCacicPath); | |
941 | 782 | bool_download_CACIC2 := true; |
942 | 783 | end; |
943 | 784 | |
944 | 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 | 787 | begin |
947 | 788 | log_diario('Fazendo FTP de ger_cols.exe a partir de ' + v_te_serv_updates + '/' + |
948 | 789 | v_nu_porta_serv_updates+'/'+ |
949 | 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 | 793 | FTP(v_te_serv_updates, |
953 | 794 | v_nu_porta_serv_updates, |
... | ... | @@ -955,7 +796,7 @@ begin |
955 | 796 | v_te_senha_login_serv_updates, |
956 | 797 | v_te_path_serv_updates, |
957 | 798 | 'ger_cols.exe', |
958 | - Dir + '\modulos'); | |
799 | + g_oCacic.getCacicPath + 'modulos'); | |
959 | 800 | end; |
960 | 801 | |
961 | 802 | |
... | ... | @@ -988,13 +829,13 @@ begin |
988 | 829 | // Caso o Cacic tenha sido baixado executo-o com parâmetro de configuração de servidor |
989 | 830 | if Posso_Rodar_CACIC or not bool_ExistsAutoRun then |
990 | 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 | 834 | // Caso tenha havido download de agentes principais, executar coletas imediatamente... |
994 | 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 | 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 | 839 | End; |
999 | 840 | end; |
1000 | 841 | ... | ... |
col_anvi/col_anvi.dpr
... | ... | @@ -26,16 +26,9 @@ uses |
26 | 26 | TLHELP32, |
27 | 27 | ShellAPI, |
28 | 28 | PJVersionInfo, |
29 | - DCPcrypt2, | |
30 | - DCPrijndael, | |
31 | - DCPbase64, | |
32 | 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 | 33 | var v_Debugs : boolean; |
41 | 34 | |
... | ... | @@ -45,11 +38,6 @@ var v_tstrCipherOpened, |
45 | 38 | var |
46 | 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 | 41 | function VerFmt(const MS, LS: DWORD): string; |
54 | 42 | // Format the version number from the given DWORDs containing the info |
55 | 43 | begin |
... | ... | @@ -57,24 +45,14 @@ begin |
57 | 45 | [HiWord(MS), LoWord(MS), HiWord(LS), LoWord(LS)]) |
58 | 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 | 48 | procedure log_diario(strMsg : String); |
71 | 49 | var |
72 | 50 | HistoricoLog : TextFile; |
73 | 51 | strDataArqLocal, strDataAtual : string; |
74 | 52 | begin |
75 | 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 | 56 | {$IOChecks off} |
79 | 57 | Reset(HistoricoLog); {Abre o arquivo texto} |
80 | 58 | {$IOChecks on} |
... | ... | @@ -84,7 +62,7 @@ begin |
84 | 62 | Append(HistoricoLog); |
85 | 63 | Writeln(HistoricoLog,FormatDateTime('dd/mm hh:nn:ss : ', Now) + '======================> Iniciando o Log do CACIC <======================='); |
86 | 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 | 66 | DateTimeToString(strDataAtual , 'yyyymmdd', Date); |
89 | 67 | if (strDataAtual <> strDataArqLocal) then // Se o arquivo INI não é da data atual... |
90 | 68 | begin |
... | ... | @@ -127,92 +105,6 @@ begin |
127 | 105 | end; |
128 | 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 | 108 | Procedure CipherClose(p_DatFileName : string; p_tstrCipherOpened : TStrings); |
217 | 109 | var v_strCipherOpenImploded : string; |
218 | 110 | v_DatFile : TextFile; |
... | ... | @@ -225,50 +117,14 @@ begin |
225 | 117 | Rewrite (v_DatFile); |
226 | 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 | 122 | Writeln(v_DatFile,v_strCipherClosed); {Grava a string Texto no arquivo texto} |
236 | 123 | CloseFile(v_DatFile); |
237 | 124 | except |
238 | 125 | end; |
239 | 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 | 128 | Function CipherOpen(p_DatFileName : string) : TStrings; |
273 | 129 | var v_DatFile : TextFile; |
274 | 130 | v_strCipherOpened, |
... | ... | @@ -290,12 +146,12 @@ begin |
290 | 146 | Readln(v_DatFile,v_strCipherClosed); |
291 | 147 | while not EOF(v_DatFile) do Readln(v_DatFile,v_strCipherClosed); |
292 | 148 | CloseFile(v_DatFile); |
293 | - v_strCipherOpened:= DeCrypt(v_strCipherClosed); | |
149 | + v_strCipherOpened:= g_oCacic.deCrypt(v_strCipherClosed); | |
294 | 150 | end; |
295 | 151 | if (trim(v_strCipherOpened)<>'') then |
296 | - Result := explode(v_strCipherOpened,'=CacicIsFree=') | |
152 | + Result := g_oCacic.explode(v_strCipherOpened,g_oCacic.getSeparatorKey) | |
297 | 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 | 156 | if Result.Count mod 2 <> 0 then |
301 | 157 | Result.Add(''); |
... | ... | @@ -349,7 +205,7 @@ var RegEditGet: TRegistry; |
349 | 205 | begin |
350 | 206 | try |
351 | 207 | Result := ''; |
352 | - ListaAuxGet := Explode(Chave, '); | |
208 | + ListaAuxGet := g_oCacic.explode(Chave, '); | |
353 | 209 | |
354 | 210 | strRootKey := ListaAuxGet[0]; |
355 | 211 | For I := 1 To ListaAuxGet.Count - 2 Do strKey := strKey + ListaAuxGet[I] + '\'; |
... | ... | @@ -454,7 +310,7 @@ begin |
454 | 310 | If FileExists(strDirTrend + '\filter32.vxd') Then |
455 | 311 | Begin |
456 | 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 | 314 | nu_versao_engine := Lista2_RCO[0] + '.' + Lista2_RCO[1]; |
459 | 315 | Lista2_RCO.Free; |
460 | 316 | end |
... | ... | @@ -517,24 +373,25 @@ begin |
517 | 373 | SetValorDatMemoria('Col_Anvi.te_servidor' , te_servidor , v_tstrCipherOpened1); |
518 | 374 | SetValorDatMemoria('Col_Anvi.in_ativo' , in_ativo , v_tstrCipherOpened1); |
519 | 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 | 377 | end |
522 | 378 | else |
523 | 379 | Begin |
524 | 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 | 382 | End; |
527 | 383 | Except |
528 | 384 | Begin |
529 | 385 | SetValorDatMemoria('Col_Anvi.nada', 'nada', v_tstrCipherOpened1); |
530 | 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 | 388 | End; |
533 | 389 | End; |
534 | 390 | end; |
535 | 391 | |
536 | 392 | var tstrTripa1 : TStrings; |
537 | 393 | intAux : integer; |
394 | + v_path_cacic : String; | |
538 | 395 | const |
539 | 396 | CACIC_APP_NAME = 'col_anvi'; |
540 | 397 | |
... | ... | @@ -544,50 +401,38 @@ begin |
544 | 401 | if( not g_oCacic.isAppRunning( CACIC_APP_NAME ) ) then |
545 | 402 | if (ParamCount>0) then |
546 | 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 | 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 | 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 | 434 | End; |
435 | + End; | |
591 | 436 | End; |
592 | 437 | g_oCacic.Free(); |
593 | 438 | end. | ... | ... |
col_comp/col_comp.dpr
... | ... | @@ -23,56 +23,23 @@ uses |
23 | 23 | SysUtils, |
24 | 24 | Classes, |
25 | 25 | Registry, |
26 | - DCPcrypt2, | |
27 | - DCPrijndael, | |
28 | - DCPbase64, | |
29 | 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 | 30 | var v_tstrCipherOpened, |
38 | 31 | v_tstrCipherOpened1 : TStrings; |
39 | 32 | |
40 | 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 | 35 | procedure log_diario(strMsg : String); |
69 | 36 | var |
70 | 37 | HistoricoLog : TextFile; |
71 | 38 | strDataArqLocal, strDataAtual : string; |
72 | 39 | begin |
73 | 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 | 43 | {$IOChecks off} |
77 | 44 | Reset(HistoricoLog); {Abre o arquivo texto} |
78 | 45 | {$IOChecks on} |
... | ... | @@ -82,7 +49,7 @@ begin |
82 | 49 | Append(HistoricoLog); |
83 | 50 | Writeln(HistoricoLog,FormatDateTime('dd/mm hh:nn:ss : ', Now) + '======================> Iniciando o Log do CACIC <======================='); |
84 | 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 | 53 | DateTimeToString(strDataAtual , 'yyyymmdd', Date); |
87 | 54 | if (strDataAtual <> strDataArqLocal) then // Se o arquivo INI não é da data atual... |
88 | 55 | begin |
... | ... | @@ -98,92 +65,6 @@ begin |
98 | 65 | log_diario('Erro na gravação do log!'); |
99 | 66 | end; |
100 | 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 | 69 | Function CipherClose(p_DatFileName : string; p_tstrCipherOpened : TStrings) : String; |
189 | 70 | var v_strCipherOpenImploded : string; |
... | ... | @@ -197,45 +78,14 @@ begin |
197 | 78 | Rewrite (v_DatFile); |
198 | 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 | 83 | Writeln(v_DatFile,v_strCipherClosed); {Grava a string Texto no arquivo texto} |
203 | 84 | CloseFile(v_DatFile); |
204 | 85 | except |
205 | 86 | end; |
206 | 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 | 89 | Function CipherOpen(p_DatFileName : string) : TStrings; |
240 | 90 | var v_DatFile : TextFile; |
241 | 91 | v_strCipherOpened, |
... | ... | @@ -257,12 +107,12 @@ begin |
257 | 107 | Readln(v_DatFile,v_strCipherClosed); |
258 | 108 | while not EOF(v_DatFile) do Readln(v_DatFile,v_strCipherClosed); |
259 | 109 | CloseFile(v_DatFile); |
260 | - v_strCipherOpened:= DeCrypt(v_strCipherClosed); | |
110 | + v_strCipherOpened:= g_oCacic.deCrypt(v_strCipherClosed); | |
261 | 111 | end; |
262 | 112 | if (trim(v_strCipherOpened)<>'') then |
263 | - Result := explode(v_strCipherOpened,'=CacicIsFree=') | |
113 | + Result := g_oCacic.explode(v_strCipherOpened,g_oCacic.getSeparatorKey) | |
264 | 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 | 118 | if Result.Count mod 2 <> 0 then |
... | ... | @@ -322,7 +172,7 @@ var RegEditGet: TRegistry; |
322 | 172 | begin |
323 | 173 | try |
324 | 174 | Result := ''; |
325 | - ListaAuxGet := Explode(Chave, '); | |
175 | + ListaAuxGet := g_oCacic.explode(Chave, '); | |
326 | 176 | |
327 | 177 | strRootKey := ListaAuxGet[0]; |
328 | 178 | For I := 1 To ListaAuxGet.Count - 2 Do strKey := strKey + ListaAuxGet[I] + '\'; |
... | ... | @@ -475,68 +325,55 @@ Begin |
475 | 325 | (strTripaDados <> '') Then |
476 | 326 | Begin |
477 | 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 | 329 | End |
480 | 330 | else |
481 | 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 | 334 | End; |
485 | 335 | Except |
486 | 336 | Begin |
487 | 337 | SetValorDatMemoria('Col_Comp.nada', 'nada', v_tstrCipherOpened1); |
488 | 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 | 340 | End; |
491 | 341 | End; |
492 | 342 | end; |
493 | 343 | |
494 | 344 | var tstrTripa1 : TStrings; |
495 | 345 | intAux : integer; |
346 | + v_path_cacic : String; | |
347 | + | |
496 | 348 | const |
497 | 349 | CACIC_APP_NAME = 'col_comp'; |
498 | 350 | |
499 | -var | |
500 | - hwind:HWND; | |
501 | - | |
502 | 351 | begin |
503 | 352 | g_oCacic := TCACIC.Create(); |
504 | 353 | if( not g_oCacic.isAppRunning( CACIC_APP_NAME ) ) then |
505 | 354 | if (ParamCount>0) then |
506 | 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 | 377 | End; |
541 | 378 | g_oCacic.Free(); |
542 | 379 | end. | ... | ... |
col_hard/col_hard.dpr
... | ... | @@ -35,26 +35,22 @@ uses |
35 | 35 | MSI_MEDIA, |
36 | 36 | MSI_NETWORK, |
37 | 37 | MSI_XML_Reports, |
38 | - DCPcrypt2, | |
39 | - DCPrijndael, | |
40 | - DCPbase64, | |
41 | 38 | PJVersionInfo, |
42 | 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 | 55 | // Dica baixada de http://www.marcosdellantonio.net/2007/06/14/operador-if-ternario-em-delphi-e-c/ |
60 | 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 | 61 | else |
66 | 62 | Result := resFalse; |
67 | 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 | 65 | procedure log_diario(strMsg : String); |
105 | 66 | var |
106 | 67 | HistoricoLog : TextFile; |
107 | 68 | strDataArqLocal, strDataAtual : string; |
108 | 69 | begin |
109 | 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 | 73 | {$IOChecks off} |
113 | 74 | Reset(HistoricoLog); {Abre o arquivo texto} |
114 | 75 | {$IOChecks on} |
... | ... | @@ -118,7 +79,7 @@ begin |
118 | 79 | Append(HistoricoLog); |
119 | 80 | Writeln(HistoricoLog,FormatDateTime('dd/mm hh:nn:ss : ', Now) + '======================> Iniciando o Log <======================='); |
120 | 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 | 83 | DateTimeToString(strDataAtual , 'yyyymmdd', Date); |
123 | 84 | if (strDataAtual <> strDataArqLocal) then // Se o arquivo INI não é da data atual... |
124 | 85 | begin |
... | ... | @@ -137,76 +98,6 @@ begin |
137 | 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 | 102 | Function CipherClose(p_DatFileName : string; p_tstrCipherOpened : TStrings) : String; |
212 | 103 | var v_strCipherOpenImploded : string; |
... | ... | @@ -220,13 +111,8 @@ begin |
220 | 111 | Rewrite (v_DatFile); |
221 | 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 | 117 | Writeln(v_DatFile,v_strCipherClosed); {Grava a string Texto no arquivo texto} |
232 | 118 | |
... | ... | @@ -234,94 +120,6 @@ begin |
234 | 120 | except |
235 | 121 | end; |
236 | 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 | 124 | Function CipherOpen(p_DatFileName : string) : TStrings; |
327 | 125 | var v_DatFile : TextFile; |
... | ... | @@ -344,12 +142,12 @@ begin |
344 | 142 | Readln(v_DatFile,v_strCipherClosed); |
345 | 143 | while not EOF(v_DatFile) do Readln(v_DatFile,v_strCipherClosed); |
346 | 144 | CloseFile(v_DatFile); |
347 | - v_strCipherOpened:= DeCrypt(v_strCipherClosed); | |
145 | + v_strCipherOpened:= g_oCacic.deCrypt(v_strCipherClosed); | |
348 | 146 | end; |
349 | 147 | if (trim(v_strCipherOpened)<>'') then |
350 | - Result := explode(v_strCipherOpened,'=CacicIsFree=') | |
148 | + Result := g_oCacic.explode(v_strCipherOpened,g_oCacic.getSeparatorKey) | |
351 | 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 | 152 | if Result.Count mod 2 <> 0 then |
355 | 153 | Result.Add(''); |
... | ... | @@ -404,7 +202,7 @@ begin |
404 | 202 | Result := ''; |
405 | 203 | if (p_SectionName <> '') then |
406 | 204 | Begin |
407 | - v_array_SectionName := explode(p_SectionName,'/'); | |
205 | + v_array_SectionName := g_oCacic.explode(p_SectionName,'/'); | |
408 | 206 | v_array_SectionName_Count := v_array_SectionName.Count; |
409 | 207 | End |
410 | 208 | else v_array_SectionName_Count := 0; |
... | ... | @@ -485,7 +283,7 @@ var |
485 | 283 | strDataArqLocal, strDataAtual, v_file_debugs : string; |
486 | 284 | begin |
487 | 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 | 287 | FileSetAttr (v_file_debugs,0); // Retira os atributos do arquivo para evitar o erro FILE ACCESS DENIED em máquinas 2000 |
490 | 288 | AssignFile(DebugsFile,v_file_debugs); {Associa o arquivo a uma variável do tipo TextFile} |
491 | 289 | |
... | ... | @@ -667,7 +465,7 @@ Begin |
667 | 465 | v_conta_EXCECOES := 0; |
668 | 466 | if (p_excecao <> '') then |
669 | 467 | Begin |
670 | - tstrEXCECOES := Explode(p_excecao,','); // Excecoes a serem tratadas | |
468 | + tstrEXCECOES := g_oCacic.explode(p_excecao,','); // Excecoes a serem tratadas | |
671 | 469 | for intAux1 := 0 to tstrEXCECOES.Count-1 Do |
672 | 470 | Begin |
673 | 471 | if (rat(tstrEXCECOES[intAux1],p_mac) > 0) then |
... | ... | @@ -739,10 +537,8 @@ var v_te_cpu_fabricante, |
739 | 537 | v_cpu_freq : TStrings; |
740 | 538 | v_registry : TRegistry; |
741 | 539 | |
742 | - oCacic : TCACIC; | |
743 | - | |
744 | 540 | begin |
745 | - oCacic := TCACIC.Create(); | |
541 | + g_oCacic := TCACIC.Create(); | |
746 | 542 | Try |
747 | 543 | SetValorDatMemoria('Col_Hard.Inicio', FormatDateTime('hh:nn:ss', Now), v_tstrCipherOpened1); |
748 | 544 | v_Report := TStringList.Create; |
... | ... | @@ -1084,7 +880,7 @@ begin |
1084 | 880 | Try |
1085 | 881 | // Monto a string que será comparada com o valor armazenado no registro. |
1086 | 882 | v_mensagem := 'Montando pacote para comparações...'; |
1087 | - UVC := oCacic.trimEspacosExcedentes(v_Tripa_TCPIP + ';' + | |
883 | + UVC := g_oCacic.trimEspacosExcedentes(v_Tripa_TCPIP + ';' + | |
1088 | 884 | v_Tripa_CPU + ';' + |
1089 | 885 | v_Tripa_CDROM + ';' + |
1090 | 886 | v_te_mem_ram_desc + ';' + |
... | ... | @@ -1115,30 +911,30 @@ begin |
1115 | 911 | // e, se não houver problemas durante esse procedimento, atualizo as |
1116 | 912 | // informações no registro. |
1117 | 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 | 915 | Begin |
1120 | 916 | Try |
1121 | 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 | 938 | Except log_diario('Problema em gravação de dados no DAT!'); |
1143 | 939 | End; |
1144 | 940 | end |
... | ... | @@ -1146,77 +942,60 @@ begin |
1146 | 942 | Begin |
1147 | 943 | SetValorDatMemoria('Col_Hard.nada','nada', v_tstrCipherOpened1); |
1148 | 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 | 946 | End; |
1151 | 947 | Except |
1152 | 948 | Begin |
1153 | 949 | SetValorDatMemoria('Col_Hard.nada','nada', v_tstrCipherOpened1); |
1154 | 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 | 952 | log_diario('Problema na execução => ' + v_mensagem); |
1157 | 953 | End; |
1158 | 954 | End; |
1159 | - oCacic.Free(); | |
955 | + g_oCacic.Free(); | |
1160 | 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 | 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 | 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 | 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 | 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 | 997 | End; |
1219 | 998 | |
1220 | - oCacic.Free(); | |
999 | + g_oCacic.Free(); | |
1221 | 1000 | |
1222 | 1001 | end. | ... | ... |