Commit c52c6d6f1d935a9293aa44ff1147e51d4770f99e

Authored by anderson.peterle@previdencia.gov.br
1 parent 4d566bb7
Exists in master

Reuso de codigos da library generica, pequenas correcoes e faxina de codigo.

git-svn-id: http://svn.softwarepublico.gov.br/svn/cacic/cacic/trunk/agente-windows@775 fecfc0c7-e812-0410-ae72-849f08638ee7
CACIC_Library.pas
... ... @@ -132,17 +132,20 @@ type
132 132 protected
133 133 /// Mantem o caminho físico de instalação do agente cacic
134 134 g_cacic_path: string;
  135 + g_boolCipher : boolean;
135 136  
136 137 public
137 138 Windows : TCACIC_Windows; /// objeto de informacoes de windows
138 139 Debug : TCACIC_Debug; /// objeto de tratamento de debug
139 140 procedure setCacicPath(p_cacic_path: string);
  141 + procedure setBoolCipher(p_boolCipher : boolean);
140 142 function deCrypt(p_Data : String) : String;
141 143 function enCrypt(p_Data : String) : String;
142 144 function explode(p_String, p_Separador : String) : TStrings;
143 145 function implode(p_Array : TStrings ; p_Separador : String) : String;
144 146 function getCacicPath() : String;
145 147 function getCipherKey() : String;
  148 + function getBoolCipher() : boolean;
146 149 function getIV() : String;
147 150 function getKeySize() : integer;
148 151 function getBlockSize() : integer;
... ... @@ -307,6 +310,26 @@ begin
307 310 end;
308 311  
309 312 {*------------------------------------------------------------------------------
  313 + Atribui valor booleano à variável indicadora do status da criptografia
  314 +
  315 + @param p_boolCipher Valor booleano para atribuição à variável para status da
  316 + criptografia.
  317 +-------------------------------------------------------------------------------}
  318 +procedure TCACIC.setBoolCipher(p_boolCipher : boolean);
  319 +Begin
  320 + Self.g_boolCipher := p_boolCipher;
  321 +End;
  322 +{*------------------------------------------------------------------------------
  323 + Obtém o status da criptografia (TRUE -> Ligada / FALSE -> Desligada)
  324 +
  325 + @return boolean contendo o status para a criptografia
  326 +-------------------------------------------------------------------------------}
  327 +function TCACIC.getBoolCipher() : boolean;
  328 +Begin
  329 + Result := Self.g_boolCipher;
  330 +End;
  331 +
  332 +{*------------------------------------------------------------------------------
310 333 Atribui o caminho físico de instalação do agente cacic
311 334  
312 335 @param p_cacic_path Caminho físico de instalação do agente cacic
... ... @@ -756,29 +779,35 @@ var
756 779 l_Data, l_Key, l_IV : string;
757 780 begin
758 781 Try
759   - // Pad Key, IV and Data with zeros as appropriate
760   - l_Key := PadWithZeros(CACIC_CIPHERKEY,CACIC_KEYSIZE);
761   - l_IV := PadWithZeros(CACIC_IV,CACIC_BLOCKSIZE);
762   - l_Data := PadWithZeros(p_Data,CACIC_BLOCKSIZE);
763   -
764   - // Create the cipher and initialise according to the key length
765   - l_Cipher := TDCP_rijndael.Create(nil);
766   - if Length(CACIC_CIPHERKEY) <= 16 then
767   - l_Cipher.Init(l_Key[1],128,@l_IV[1])
768   - else if Length(CACIC_CIPHERKEY) <= 24 then
769   - l_Cipher.Init(l_Key[1],192,@l_IV[1])
770   - else
771   - l_Cipher.Init(l_Key[1],256,@l_IV[1]);
772   -
773   - // Encrypt the data
774   - l_Cipher.EncryptCBC(l_Data[1],l_Data[1],Length(l_Data));
775   -
776   - // Free the cipher and clear sensitive information
777   - l_Cipher.Free;
778   - FillChar(l_Key[1],Length(l_Key),0);
779   -
780   - // Return the Base64 encoded result
781   - Result := Base64EncodeStr(l_Data);
  782 + if self.g_boolCipher then
  783 + Begin
  784 + // Pad Key, IV and Data with zeros as appropriate
  785 + l_Key := PadWithZeros(CACIC_CIPHERKEY,CACIC_KEYSIZE);
  786 + l_IV := PadWithZeros(CACIC_IV,CACIC_BLOCKSIZE);
  787 + l_Data := PadWithZeros(p_Data,CACIC_BLOCKSIZE);
  788 +
  789 + // Create the cipher and initialise according to the key length
  790 + l_Cipher := TDCP_rijndael.Create(nil);
  791 + if Length(CACIC_CIPHERKEY) <= 16 then
  792 + l_Cipher.Init(l_Key[1],128,@l_IV[1])
  793 + else if Length(CACIC_CIPHERKEY) <= 24 then
  794 + l_Cipher.Init(l_Key[1],192,@l_IV[1])
  795 + else
  796 + l_Cipher.Init(l_Key[1],256,@l_IV[1]);
  797 +
  798 + // Encrypt the data
  799 + l_Cipher.EncryptCBC(l_Data[1],l_Data[1],Length(l_Data));
  800 +
  801 + // Free the cipher and clear sensitive information
  802 + l_Cipher.Free;
  803 + FillChar(l_Key[1],Length(l_Key),0);
  804 +
  805 + // Return the Base64 encoded result
  806 + Result := Base64EncodeStr(l_Data);
  807 + End
  808 + Else
  809 + // Return the original value
  810 + Result := p_Data;
782 811 Except
783 812 // LogDiario('Erro no Processo de Criptografia');
784 813 End;
... ... @@ -790,31 +819,37 @@ var
790 819 l_Data, l_Key, l_IV : string;
791 820 begin
792 821 Try
793   - // Pad Key and IV with zeros as appropriate
794   - l_Key := PadWithZeros(CACIC_CIPHERKEY,CACIC_KEYSIZE);
795   - l_IV := PadWithZeros(CACIC_IV,CACIC_BLOCKSIZE);
796   -
797   - // Decode the Base64 encoded string
798   - l_Data := Base64DecodeStr(p_Data);
799   -
800   - // Create the cipher and initialise according to the key length
801   - l_Cipher := TDCP_rijndael.Create(nil);
802   - if Length(CACIC_CIPHERKEY) <= 16 then
803   - l_Cipher.Init(l_Key[1],128,@l_IV[1])
804   - else if Length(CACIC_CIPHERKEY) <= 24 then
805   - l_Cipher.Init(l_Key[1],192,@l_IV[1])
806   - else
807   - l_Cipher.Init(l_Key[1],256,@l_IV[1]);
808   -
809   - // Decrypt the data
810   - l_Cipher.DecryptCBC(l_Data[1],l_Data[1],Length(l_Data));
811   -
812   - // Free the cipher and clear sensitive information
813   - l_Cipher.Free;
814   - FillChar(l_Key[1],Length(l_Key),0);
815   -
816   - // Return the result
817   - Result := l_Data;
  822 + if self.g_boolCipher then
  823 + Begin
  824 + // Pad Key and IV with zeros as appropriate
  825 + l_Key := PadWithZeros(CACIC_CIPHERKEY,CACIC_KEYSIZE);
  826 + l_IV := PadWithZeros(CACIC_IV,CACIC_BLOCKSIZE);
  827 +
  828 + // Decode the Base64 encoded string
  829 + l_Data := Base64DecodeStr(p_Data);
  830 +
  831 + // Create the cipher and initialise according to the key length
  832 + l_Cipher := TDCP_rijndael.Create(nil);
  833 + if Length(CACIC_CIPHERKEY) <= 16 then
  834 + l_Cipher.Init(l_Key[1],128,@l_IV[1])
  835 + else if Length(CACIC_CIPHERKEY) <= 24 then
  836 + l_Cipher.Init(l_Key[1],192,@l_IV[1])
  837 + else
  838 + l_Cipher.Init(l_Key[1],256,@l_IV[1]);
  839 +
  840 + // Decrypt the data
  841 + l_Cipher.DecryptCBC(l_Data[1],l_Data[1],Length(l_Data));
  842 +
  843 + // Free the cipher and clear sensitive information
  844 + l_Cipher.Free;
  845 + FillChar(l_Key[1],Length(l_Key),0);
  846 +
  847 + // Return the result (unCrypted)
  848 + Result := l_Data
  849 + End
  850 + Else
  851 + // Return the original value
  852 + Result := p_Data
818 853 Except
819 854 // LogDiario('Erro no Processo de Decriptografia');
820 855 End;
... ...
cacic2.dpr
... ... @@ -20,7 +20,6 @@ program cacic2;
20 20 uses
21 21 Forms,
22 22 Windows,
23   - Dialogs,
24 23 main in 'main.pas' {FormularioGeral},
25 24 frmSenha in 'frmsenha.pas' {formSenha},
26 25 frmConfiguracoes in 'frmConfiguracoes.pas' {FormConfiguracoes},
... ...
col_moni/col_moni.dpr
... ... @@ -6,7 +6,7 @@ Este arquivo é parte do programa CACIC - Configurador Automático e Coletor de In
6 6  
7 7 O CACIC é um software livre; você pode redistribui-lo e/ou modifica-lo dentro dos termos da Licença Pública Geral GNU como
8 8 publicada pela Fundação do Software Livre (FSF); na versão 2 da Licença, ou (na sua opinião) qualquer versão.
9   -
  9 +
10 10 Este programa é distribuido na esperança que possa ser util, mas SEM NENHUMA GARANTIA; sem uma garantia implicita de ADEQUAÇÂO a qualquer
11 11 MERCADO ou APLICAÇÃO EM PARTICULAR. Veja a Licença Pública Geral GNU para maiores detalhes.
12 12  
... ... @@ -28,7 +28,6 @@ uses
28 28 CACIC_Library in '..\CACIC_Library.pas';
29 29  
30 30 var
31   - v_path_cacic,
32 31 v_Res_Search,
33 32 v_Drive,
34 33 v_File,
... ... @@ -876,44 +875,52 @@ begin
876 875 end;
877 876 end;
878 877  
  878 +var strAux : String;
879 879 begin
880 880 g_oCacic := TCACIC.Create();
881 881  
  882 + g_oCacic.setBoolCipher(true);
  883 +
882 884 if( not g_oCacic.isAppRunning( CACIC_APP_NAME ) ) then
883 885 if (ParamCount>0) then
884   - Begin
885   - //Pegarei o nível anterior do diretório, que deve ser, por exemplo \Cacic, para leitura do cacic2.ini
886   - tstrTripa1 := g_oCacic.explode(ExtractFilePath(ParamStr(0)),'\');
887   - v_path_cacic := '';
888   - For intAux := 0 to tstrTripa1.Count -2 do
889   - begin
890   - v_path_cacic := v_path_cacic + tstrTripa1[intAux] + '\';
891   - end;
892   -
893   - g_oCacic.setCacicPath(v_path_cacic);
894   - v_Debugs := false;
895   - if DirectoryExists(g_oCacic.getCacicPath + 'Temp\Debugs') then
896   - Begin
897   - if (FormatDateTime('ddmmyyyy', GetFolderDate(g_oCacic.getCacicPath + 'Temp\Debugs')) = FormatDateTime('ddmmyyyy', date)) then
898   - Begin
899   - v_Debugs := true;
900   - log_diario('Pasta "' + g_oCacic.getCacicPath + 'Temp\Debugs" com data '+FormatDateTime('dd-mm-yyyy', GetFolderDate(g_oCacic.getCacicPath + 'Temp\Debugs'))+' encontrada. DEBUG ativado.');
901   - End;
902   - End;
903   -
904   - v_tstrCipherOpened := TStrings.Create;
905   - v_tstrCipherOpened := CipherOpen(g_oCacic.getDatFileName);
906   -
907   - v_tstrCipherOpened1 := TStrings.Create;
908   - v_tstrCipherOpened1 := CipherOpen(g_oCacic.getCacicPath + 'temp\col_moni.dat');
909   -
910   - Try
911   - Executa_Col_moni;
912   - Except
913   - SetValorDatMemoria('Col_Moni.nada', 'nada', v_tstrCipherOpened1);
914   - CipherClose(g_oCacic.getCacicPath + 'temp\col_moni.dat', v_tstrCipherOpened1);
915   - End;
916   - End;
  886 + Begin
  887 + strAux := '';
  888 + For intAux := 1 to ParamCount do
  889 + Begin
  890 + if LowerCase(Copy(ParamStr(intAux),1,11)) = '/cacicpath=' then
  891 + begin
  892 + strAux := Trim(Copy(ParamStr(intAux),12,Length((ParamStr(intAux)))));
  893 + log_DEBUG('Parâmetro /CacicPath recebido com valor="'+strAux+'"');
  894 + end;
  895 + end;
  896 +
  897 + if (strAux <> '') then
  898 + Begin
  899 + g_oCacic.setCacicPath(strAux);
  900 + v_Debugs := false;
  901 + if DirectoryExists(g_oCacic.getCacicPath + 'Temp\Debugs') then
  902 + Begin
  903 + if (FormatDateTime('ddmmyyyy', GetFolderDate(g_oCacic.getCacicPath + 'Temp\Debugs')) = FormatDateTime('ddmmyyyy', date)) then
  904 + Begin
  905 + v_Debugs := true;
  906 + log_diario('Pasta "' + g_oCacic.getCacicPath + 'Temp\Debugs" com data '+FormatDateTime('dd-mm-yyyy', GetFolderDate(g_oCacic.getCacicPath + 'Temp\Debugs'))+' encontrada. DEBUG ativado.');
  907 + End;
  908 + End;
  909 +
  910 + v_tstrCipherOpened := TStrings.Create;
  911 + v_tstrCipherOpened := CipherOpen(g_oCacic.getCacicPath + g_oCacic.getDatFileName);
  912 +
  913 + v_tstrCipherOpened1 := TStrings.Create;
  914 + v_tstrCipherOpened1 := CipherOpen(g_oCacic.getCacicPath + 'temp\col_moni.dat');
  915 +
  916 + Try
  917 + Executa_Col_moni;
  918 + Except
  919 + SetValorDatMemoria('Col_Moni.nada', 'nada', v_tstrCipherOpened1);
  920 + CipherClose(g_oCacic.getCacicPath + 'temp\col_moni.dat', v_tstrCipherOpened1);
  921 + End;
  922 + End;
  923 + End;
917 924  
918 925 g_oCacic.Free();
919 926  
... ...
col_patr/col_patr.dpr
... ... @@ -32,12 +32,12 @@ const
32 32  
33 33 var
34 34 hwind:HWND;
35   - g_oCacic : TCACIC;
  35 + oCacic : TCACIC;
36 36  
37 37 begin
38   - g_oCacic := TCACIC.Create();
  38 + oCacic := TCACIC.Create();
39 39  
40   - if( g_oCacic.isAppRunning( CACIC_APP_NAME ) )
  40 + if( oCacic.isAppRunning( CACIC_APP_NAME ) )
41 41 then begin
42 42 hwind := 0;
43 43 repeat // The string 'My app' must match your App Title (below)
... ... @@ -55,6 +55,6 @@ begin
55 55 Application.Run;
56 56 end;
57 57  
58   - g_oCacic.Free();
  58 + oCacic.Free();
59 59  
60 60 end.
... ...
col_patr/main_col_patr.pas
... ... @@ -906,93 +906,96 @@ var boolColeta : boolean;
906 906 tstrTripa1 : TStrings;
907 907 i,intAux : integer;
908 908 v_Aux,
909   - v_path_cacic : String;
  909 + strAux : String;
910 910 Begin
911 911 g_oCacic := TCACIC.Create();
912 912  
  913 + g_oCacic.setBoolCipher(true);
  914 +
913 915 if (ParamCount>0) then
914 916 Begin
915 917 FormPatrimonio.lbVersao.Caption := 'Versão: ' + GetVersionInfo(ParamStr(0));
916   -
917   - v_option := 'system';
918   - For intAux := 1 to ParamCount do
919   - Begin
920   - if LowerCase(Copy(ParamStr(intAux),1,10)) = '/p_option=' then
921   - v_option := Trim(Copy(ParamStr(intAux),11,Length((ParamStr(intAux)))));
922   - End;
923   -
924   - tstrTripa1 := g_oCacic.explode(ExtractFilePath(Application.Exename),'\'); //Pegarei o nível anterior do diretório, que deve ser, por exemplo \Cacic
925   - v_path_cacic := '';
926   - For i := 0 to tstrTripa1.Count -2 do
927   - v_path_cacic := v_path_cacic + tstrTripa1[i] + '\';
928   -
929   - g_oCacic.setCacicPath(v_path_cacic);
930   - v_Debugs := false;
931   - if DirectoryExists(g_oCacic.getCacicPath + 'Temp\Debugs') then
932 918 Begin
933   - if (FormatDateTime('ddmmyyyy', GetFolderDate(g_oCacic.getCacicPath + 'Temp\Debugs')) = FormatDateTime('ddmmyyyy', date)) then
  919 + strAux := '';
  920 + For intAux := 1 to ParamCount do
934 921 Begin
935   - v_Debugs := true;
936   - log_DEBUG('Pasta "' + g_oCacic.getCacicPath + 'Temp\Debugs" com data '+FormatDateTime('dd-mm-yyyy', GetFolderDate(g_oCacic.getCacicPath + 'Temp\Debugs'))+' encontrada. DEBUG ativado.');
937   - End;
938   - End;
939   -
940   - v_tstrCipherOpened := TStrings.Create;
941   - v_tstrCipherOpened := CipherOpen(g_oCacic.getCacicPath + 'cacic2.dat');
942   -
943   - v_tstrCipherOpened1 := TStrings.Create;
944   - v_tstrCipherOpened1 := CipherOpen(g_oCacic.getCacicPath + 'temp\col_patr.dat');
945   -
946   - // Os valores possíveis serão 0-DESLIGADO 1-LIGADO 2-ESPERA PARA LIGAR (Será transformado em "1") 3-Ainda se comunicará com o Gerente WEB
947   - l_cs_cipher := false;
948   - v_Aux := GetValorDatMemoria('Configs.CS_CIPHER', v_tstrCipherOpened);
949   - if (v_Aux='1')then
950   - Begin
951   - l_cs_cipher := true;
952   - End;
953   -
954   - Try
955   - boolColeta := false;
956   - if (GetValorDatMemoria('Patrimonio.in_alteracao_fisica',v_tstrCipherOpened)= 'S') then
957   - Begin
958   - // Solicita o cadastramento de informações de patrimõnio caso seja detectado remanejamento para uma nova rede.
959   - MessageDlg('Atenção: foi identificada uma alteração na localização física deste computador. Por favor, confirme as informações que serão apresentadas na tela que será exibida a seguir.', mtInformation, [mbOk], 0);
960   - boolColeta := true;
961   - End
962   - Else if (GetValorDatMemoria('Patrimonio.in_renovacao_informacoes',v_tstrCipherOpened)= 'S') and (v_option='system') then
963   - Begin
964   - // Solicita o cadastramento de informações de patrimõnio caso tenha completado o prazo configurado para renovação de informações.
965   - MessageDlg('Atenção: é necessário o preenchimento/atualização das informações de Patrimônio e Localização Física deste computador. Por favor, confirme as informações que serão apresentadas na tela que será exibida a seguir.', mtInformation, [mbOk], 0);
966   - boolColeta := true;
967   - end
968   - Else if (GetValorDatMemoria('Patrimonio.dt_ultima_renovacao_patrim',v_tstrCipherOpened)= '') then
969   - Begin
970   - // Solicita o cadastramento de informações de patrimõnio caso ainda não tenha sido cadastrado.
971   - boolColeta := true;
972   - end;
973   -
974   - if boolColeta then
  922 + if LowerCase(Copy(ParamStr(intAux),1,11)) = '/cacicpath=' then
  923 + begin
  924 + strAux := Trim(Copy(ParamStr(intAux),12,Length((ParamStr(intAux)))));
  925 + log_DEBUG('Parâmetro /CacicPath recebido com valor="'+strAux+'"');
  926 + end;
  927 + end;
  928 +
  929 + if (strAux <> '') then
975 930 Begin
976   - SetValorDatMemoria('Col_Patr.Inicio', FormatDateTime('hh:nn:ss', Now), v_tstrCipherOpened1);
977   - log_diario('Coletando informações de Patrimônio e Localização Física.');
978   - v_configs := GetValorDatMemoria('Patrimonio.Configs',v_tstrCipherOpened);
979   - log_DEBUG('Configurações obtidas: '+v_configs);
980   -
981   - MontaInterface;
982   - MontaCombos;
983   - RecuperaValoresAnteriores;
984   -
  931 + g_oCacic.setCacicPath(strAux);
  932 + v_Debugs := false;
  933 + if DirectoryExists(g_oCacic.getCacicPath + 'Temp\Debugs') then
  934 + Begin
  935 + if (FormatDateTime('ddmmyyyy', GetFolderDate(g_oCacic.getCacicPath + 'Temp\Debugs')) = FormatDateTime('ddmmyyyy', date)) then
  936 + Begin
  937 + v_Debugs := true;
  938 + log_DEBUG('Pasta "' + g_oCacic.getCacicPath + 'Temp\Debugs" com data '+FormatDateTime('dd-mm-yyyy', GetFolderDate(g_oCacic.getCacicPath + 'Temp\Debugs'))+' encontrada. DEBUG ativado.');
  939 + End;
  940 + End;
  941 +
  942 + v_tstrCipherOpened := TStrings.Create;
  943 + v_tstrCipherOpened := CipherOpen(g_oCacic.getCacicPath + g_oCacic.getDatFileName);
  944 +
  945 + v_tstrCipherOpened1 := TStrings.Create;
  946 + v_tstrCipherOpened1 := CipherOpen(g_oCacic.getCacicPath + 'temp\col_patr.dat');
  947 +
  948 + // Os valores possíveis serão 0-DESLIGADO 1-LIGADO 2-ESPERA PARA LIGAR (Será transformado em "1") 3-Ainda se comunicará com o Gerente WEB
  949 + l_cs_cipher := false;
  950 + v_Aux := GetValorDatMemoria('Configs.CS_CIPHER', v_tstrCipherOpened);
  951 + if (v_Aux='1')then
  952 + Begin
  953 + l_cs_cipher := true;
  954 + End;
  955 +
  956 + Try
  957 + boolColeta := false;
  958 + if (GetValorDatMemoria('Patrimonio.in_alteracao_fisica',v_tstrCipherOpened)= 'S') then
  959 + Begin
  960 + // Solicita o cadastramento de informações de patrimõnio caso seja detectado remanejamento para uma nova rede.
  961 + MessageDlg('Atenção: foi identificada uma alteração na localização física deste computador. Por favor, confirme as informações que serão apresentadas na tela que será exibida a seguir.', mtInformation, [mbOk], 0);
  962 + boolColeta := true;
  963 + End
  964 + Else if (GetValorDatMemoria('Patrimonio.in_renovacao_informacoes',v_tstrCipherOpened)= 'S') and (v_option='system') then
  965 + Begin
  966 + // Solicita o cadastramento de informações de patrimõnio caso tenha completado o prazo configurado para renovação de informações.
  967 + MessageDlg('Atenção: é necessário o preenchimento/atualização das informações de Patrimônio e Localização Física deste computador. Por favor, confirme as informações que serão apresentadas na tela que será exibida a seguir.', mtInformation, [mbOk], 0);
  968 + boolColeta := true;
  969 + end
  970 + Else if (GetValorDatMemoria('Patrimonio.dt_ultima_renovacao_patrim',v_tstrCipherOpened)= '') then
  971 + Begin
  972 + // Solicita o cadastramento de informações de patrimõnio caso ainda não tenha sido cadastrado.
  973 + boolColeta := true;
  974 + end;
  975 +
  976 + if boolColeta then
  977 + Begin
  978 + SetValorDatMemoria('Col_Patr.Inicio', FormatDateTime('hh:nn:ss', Now), v_tstrCipherOpened1);
  979 + log_diario('Coletando informações de Patrimônio e Localização Física.');
  980 + v_configs := GetValorDatMemoria('Patrimonio.Configs',v_tstrCipherOpened);
  981 + log_DEBUG('Configurações obtidas: '+v_configs);
  982 +
  983 + MontaInterface;
  984 + MontaCombos;
  985 + RecuperaValoresAnteriores;
  986 +
  987 + End;
  988 + Except
  989 + SetValorDatMemoria('Col_Patr.nada','nada', v_tstrCipherOpened1);
  990 + SetValorDatMemoria('Col_Patr.Fim', '99999999', v_tstrCipherOpened1);
  991 + CipherClose(g_oCacic.getCacicPath + 'temp\col_patr.dat', v_tstrCipherOpened1);
  992 + g_oCacic.Free();
  993 + Application.Terminate;
  994 + End;
985 995 End;
986   - Except
987   - SetValorDatMemoria('Col_Patr.nada','nada', v_tstrCipherOpened1);
988   - SetValorDatMemoria('Col_Patr.Fim', '99999999', v_tstrCipherOpened1);
989   - CipherClose(g_oCacic.getCacicPath + 'temp\col_patr.dat', v_tstrCipherOpened1);
990   - g_oCacic.Free();
991   - Application.Terminate;
992   - End;
993   - End;
994   -end;
995   -
  996 + End;
  997 + end;
  998 +End;
996 999  
997 1000  
998 1001 end.
... ...
col_soft/col_soft.dpr
... ... @@ -78,7 +78,6 @@ begin
78 78 Append(HistoricoLog);
79 79 Writeln(HistoricoLog,FormatDateTime('dd/mm hh:nn:ss : ', Now)+ '[Coletor SOFT] '+strMsg); {Grava a string Texto no arquivo texto}
80 80 CloseFile(HistoricoLog); {Fecha o arquivo texto}
81   -
82 81 except
83 82 log_diario('Erro na gravação do log!');
84 83 end;
... ... @@ -623,43 +622,53 @@ begin
623 622 End;
624 623 end;
625 624  
626   -var v_path_cacic : String;
  625 +var strAux : String;
627 626 begin
628 627 g_oCacic := TCACIC.Create();
629 628  
  629 + g_oCacic.setBoolCipher(true);
  630 +
630 631 if( not g_oCacic.isAppRunning( CACIC_APP_NAME ) ) then
631 632 if (ParamCount>0) then
632   - Begin
633   - //Pegarei o nível anterior do diretório, que deve ser, por exemplo \Cacic, para leitura do cacic2.ini
634   - tstrTripa1 := g_oCacic.explode(ExtractFilePath(ParamStr(0)),'\');
635   - v_path_cacic := '';
636   - For intAux := 0 to tstrTripa1.Count -2 do
637   - v_path_cacic := v_path_cacic + tstrTripa1[intAux] + '\';
638   -
639   - v_tstrCipherOpened := TStrings.Create;
640   - v_tstrCipherOpened := CipherOpen(g_oCacic.getDatFileName);
641   -
642   - v_tstrCipherOpened1 := TStrings.Create;
643   - v_tstrCipherOpened1 := CipherOpen(g_oCacic.getCacicPath + 'temp\col_soft.dat');
644   -
645   - Try
646   - v_Debugs := false;
  633 + Begin
  634 + strAux := '';
  635 + For intAux := 1 to ParamCount do
  636 + Begin
  637 + if LowerCase(Copy(ParamStr(intAux),1,11)) = '/cacicpath=' then
  638 + begin
  639 + strAux := Trim(Copy(ParamStr(intAux),12,Length((ParamStr(intAux)))));
  640 + end;
  641 + end;
647 642  
648   - if DirectoryExists(g_oCacic.getCacicPath + 'Temp\Debugs') then
  643 + if (strAux <> '') then
649 644 Begin
650   - if (FormatDateTime('ddmmyyyy', GetFolderDate(g_oCacic.getCacicPath + 'Temp\Debugs')) = FormatDateTime('ddmmyyyy', date)) then
651   - Begin
652   - v_Debugs := true;
653   - log_diario('Pasta "' + g_oCacic.getCacicPath + 'Temp\Debugs" com data '+FormatDateTime('dd-mm-yyyy', GetFolderDate(g_oCacic.getCacicPath + 'Temp\Debugs'))+' encontrada. DEBUG ativado.');
654   - End;
  645 + g_oCacic.setCacicPath(strAux);
  646 +
  647 + v_tstrCipherOpened := TStrings.Create;
  648 + v_tstrCipherOpened := CipherOpen(g_oCacic.getCacicPath + g_oCacic.getDatFileName);
  649 +
  650 + v_tstrCipherOpened1 := TStrings.Create;
  651 + v_tstrCipherOpened1 := CipherOpen(g_oCacic.getCacicPath + 'temp\col_soft.dat');
  652 +
  653 + Try
  654 + v_Debugs := false;
  655 +
  656 + if DirectoryExists(g_oCacic.getCacicPath + 'Temp\Debugs') then
  657 + Begin
  658 + if (FormatDateTime('ddmmyyyy', GetFolderDate(g_oCacic.getCacicPath + 'Temp\Debugs')) = FormatDateTime('ddmmyyyy', date)) then
  659 + Begin
  660 + v_Debugs := true;
  661 + log_diario('Pasta "' + g_oCacic.getCacicPath + 'Temp\Debugs" com data '+FormatDateTime('dd-mm-yyyy', GetFolderDate(g_oCacic.getCacicPath + 'Temp\Debugs'))+' encontrada. DEBUG ativado.');
  662 + End;
  663 + End;
  664 +
  665 + Executa_Col_Soft;
  666 + Except
  667 + SetValorDatMemoria('Col_Soft.nada', 'nada', v_tstrCipherOpened1);
  668 + CipherClose(g_oCacic.getCacicPath + 'temp\col_soft.dat', v_tstrCipherOpened1);
  669 + End;
655 670 End;
656   -
657   - Executa_Col_Soft;
658   - Except
659   - SetValorDatMemoria('Col_Soft.nada', 'nada', v_tstrCipherOpened1);
660   - CipherClose(g_oCacic.getCacicPath + 'temp\col_soft.dat', v_tstrCipherOpened1);
661   - End;
662   - End;
  671 + End;
663 672  
664 673 g_oCacic.Free();
665 674  
... ...
col_undi/col_undi.dpr
... ... @@ -385,45 +385,52 @@ Begin
385 385 End;
386 386 end;
387 387  
388   -var v_path_cacic : String;
  388 +var strAux : String;
389 389 begin
390 390 g_oCacic := TCACIC.Create();
391 391  
  392 + g_oCacic.setBoolCipher(true);
  393 +
392 394 if( not g_oCacic.isAppRunning( CACIC_APP_NAME ) ) then
393 395 if (ParamCount>0) then
394   - Begin
395   - //Pegarei o nível anterior do diretório, que deve ser, por exemplo \Cacic, para leitura do cacic2.ini
396   - tstrTripa1 := g_oCacic.explode(ExtractFilePath(ParamStr(0)),'\');
397   - v_path_cacic := '';
398   - For intAux := 0 to tstrTripa1.Count -2 do
399   - begin
400   - v_path_cacic := v_path_cacic + tstrTripa1[intAux] + '\';
401   - end;
402   -
403   - v_tstrCipherOpened := TStrings.Create;
404   - v_tstrCipherOpened := CipherOpen(g_oCacic.getDatFileName);
405   -
406   - v_tstrCipherOpened1 := TStrings.Create;
407   - v_tstrCipherOpened1 := CipherOpen(g_oCacic.getCacicPath + 'temp\col_undi.dat');
408   -
409   - Try
410   - v_Debugs := false;
411   - if DirectoryExists(g_oCacic.getCacicPath + 'Temp\Debugs') then
412   - Begin
413   - if (FormatDateTime('ddmmyyyy', GetFolderDate(g_oCacic.getCacicPath + 'Temp\Debugs')) = FormatDateTime('ddmmyyyy', date)) then
414   - Begin
415   - v_Debugs := true;
416   - log_diario('Pasta "' + g_oCacic.getCacicPath + 'Temp\Debugs" com data '+FormatDateTime('dd-mm-yyyy', GetFolderDate(g_oCacic.getCacicPath + 'Temp\Debugs'))+' encontrada. DEBUG ativado.');
417   - End;
418   - End;
419   -
420   - Executa_Col_undi;
421   - Except
422   - SetValorDatMemoria('Col_Undi.nada', 'nada', v_tstrCipherOpened1);
423   - CipherClose(g_oCacic.getCacicPath + 'temp\col_undi.dat', v_tstrCipherOpened1);
424   - End;
425   - End;
426   -
  396 + Begin
  397 + strAux := '';
  398 + For intAux := 1 to ParamCount do
  399 + Begin
  400 + if LowerCase(Copy(ParamStr(intAux),1,11)) = '/cacicpath=' then
  401 + begin
  402 + strAux := Trim(Copy(ParamStr(intAux),12,Length((ParamStr(intAux)))));
  403 + end;
  404 + end;
  405 +
  406 + if (strAux <> '') then
  407 + Begin
  408 + g_oCacic.setCacicPath(strAux);
  409 +
  410 + v_tstrCipherOpened := TStrings.Create;
  411 + v_tstrCipherOpened := CipherOpen(g_oCacic.getCacicPath + g_oCacic.getDatFileName);
  412 +
  413 + v_tstrCipherOpened1 := TStrings.Create;
  414 + v_tstrCipherOpened1 := CipherOpen(g_oCacic.getCacicPath + 'temp\col_undi.dat');
  415 +
  416 + Try
  417 + v_Debugs := false;
  418 + if DirectoryExists(g_oCacic.getCacicPath + 'Temp\Debugs') then
  419 + Begin
  420 + if (FormatDateTime('ddmmyyyy', GetFolderDate(g_oCacic.getCacicPath + 'Temp\Debugs')) = FormatDateTime('ddmmyyyy', date)) then
  421 + Begin
  422 + v_Debugs := true;
  423 + log_diario('Pasta "' + g_oCacic.getCacicPath + 'Temp\Debugs" com data '+FormatDateTime('dd-mm-yyyy', GetFolderDate(g_oCacic.getCacicPath + 'Temp\Debugs'))+' encontrada. DEBUG ativado.');
  424 + End;
  425 + End;
  426 +
  427 + Executa_Col_undi;
  428 + Except
  429 + SetValorDatMemoria('Col_Undi.nada', 'nada', v_tstrCipherOpened1);
  430 + CipherClose(g_oCacic.getCacicPath + 'temp\col_undi.dat', v_tstrCipherOpened1);
  431 + End;
  432 + End;
  433 + End;
427 434 g_oCacic.Free();
428 435  
429 436 end.
... ...
ger_cols/ger_cols.dpr
... ... @@ -78,7 +78,6 @@ var
78 78  
79 79 var
80 80 v_Debugs,
81   - l_cs_cipher,
82 81 l_cs_compress,
83 82 v_CS_AUTO_UPDATE : boolean;
84 83  
... ... @@ -132,6 +131,7 @@ var intLimite,
132 131 strPalavra,
133 132 strCaracter : String;
134 133 begin
  134 + log_diario('Regerando palavra-chave...');
135 135 Randomize;
136 136 strPalavra := '';
137 137 intLimite := RandomRange(10,30); // Gerarei uma palavra com tamanho mínimo 10 e máximo 30
... ... @@ -350,13 +350,13 @@ begin
350 350  
351 351 v_strCipherOpenImploded := g_oCacic.implode(p_tstrCipherOpened,g_oCacic.getSeparatorKey);
352 352  
353   - v_cs_cipher := l_cs_cipher;
354   - l_cs_cipher := true;
355   - log_DEBUG('Rotina de Fechamento do cacic2.dat ATIVANDO criptografia.');
  353 + v_cs_cipher := g_oCacic.getBoolCipher;
  354 + g_oCacic.setBoolCipher(true);
  355 + log_DEBUG('Rotina de Fechamento do ' + g_oCacic.getDatFileName + '. ATIVANDO criptografia.');
356 356 v_strCipherClosed := g_oCacic.enCrypt(v_strCipherOpenImploded);
357 357  
358   - l_cs_cipher := v_cs_cipher;
359   - log_DEBUG('Rotina de Fechamento do cacic2.dat RESTAURANDO estado da criptografia.');
  358 + g_oCacic.setBoolCipher(v_cs_cipher);
  359 + log_DEBUG('Rotina de Fechamento do ' + g_oCacic.getDatFileName + '. RESTAURANDO estado da criptografia.');
360 360 Writeln(v_DatFile,v_strCipherClosed); {Grava a string Texto no arquivo texto}
361 361 if v_Debugs then
362 362 Begin
... ... @@ -395,12 +395,12 @@ begin
395 395 Readln(v_DatFile,v_strCipherClosed);
396 396 while not EOF(v_DatFile) do Readln(v_DatFile,v_strCipherClosed);
397 397 CloseFile(v_DatFile);
398   - v_cs_cipher := l_cs_cipher;
399   - l_cs_cipher := true;
400   - log_DEBUG('Rotina de Abertura do cacic2.dat ATIVANDO criptografia.');
  398 + v_cs_cipher := g_oCacic.getBoolCipher;
  399 + g_oCacic.setBoolCipher(true);
  400 + log_DEBUG('Rotina de Abertura do ' + g_oCacic.getDatFileName + '. ATIVANDO criptografia.');
401 401 v_strCipherOpened:= g_oCacic.deCrypt(v_strCipherClosed);
402   - l_cs_cipher := v_cs_cipher;
403   - log_DEBUG('Rotina de Abertura do cacic2.dat RESTAURANDO estado da criptografia.');
  402 + g_oCacic.setBoolCipher(v_cs_cipher);
  403 + log_DEBUG('Rotina de Abertura do ' + g_oCacic.getDatFileName + '. RESTAURANDO estado da criptografia.');
404 404 end;
405 405 if (trim(v_strCipherOpened)<>'') then
406 406 Result := g_oCacic.explode(v_strCipherOpened,g_oCacic.getSeparatorKey)
... ... @@ -418,25 +418,24 @@ begin
418 418 Matar(g_oCacic.getCacicPath + 'temp\','*.txt');
419 419 end;
420 420  
  421 +procedure Sair;
  422 +Begin
  423 + g_oCacic.Free;
  424 + Halt(0);
  425 +End;
  426 +
421 427 procedure Finalizar(p_pausa:boolean);
422 428 Begin
423   - CipherClose(g_oCacic.getDatFileName, v_tstrCipherOpened);
  429 + CipherClose(g_oCacic.getCacicPath + g_oCacic.getDatFileName, v_tstrCipherOpened);
424 430 Apaga_Temps;
425 431 if p_pausa then sleep(2000); // Pausa de 2 segundos para conclusão de operações de arquivos.
426 432 End;
427 433  
428   -procedure Sair;
429   -Begin
430   - log_DEBUG('Liberando Memória - FreeMemory(0)');
431   - FreeMemory(0);
432   - log_DEBUG('Suspendendo - Halt(0)');
433   - Halt(0);
434   -End;
435 434  
436   -procedure Seta_l_cs_cipher(p_strRetorno : String);
  435 +procedure Seta_boolCipher(p_strRetorno : String);
437 436 var v_Aux : string;
438 437 Begin
439   - l_cs_cipher := false;
  438 + g_oCacic.setBoolCipher(false);
440 439  
441 440 v_Aux := XML_RetornaValor('cs_cipher',p_strRetorno);
442 441 if (p_strRetorno = '') or (v_Aux = '') then v_Aux := '3';
... ... @@ -444,7 +443,7 @@ Begin
444 443 if (v_Aux='1') then
445 444 Begin
446 445 log_DEBUG('ATIVANDO Criptografia!');
447   - l_cs_cipher := true;
  446 + g_oCacic.setBoolCipher(true);
448 447 End
449 448 else if (v_Aux='2') then
450 449 Begin
... ... @@ -1558,7 +1557,7 @@ procedure Patrimnio1Click(Sender: TObject);
1558 1557 begin
1559 1558 SetValorDatMemoria('Patrimonio.dt_ultima_renovacao_patrim','', v_tstrCipherOpened);
1560 1559 if ChecaAgente(g_oCacic.getCacicPath + 'modulos', 'ini_cols.exe') then
1561   - g_oCacic.createSampleProcess( g_oCacic.getCacicPath + 'modulos\ini_cols.exe /p_ModulosOpcoes=col_patr,wait,user#', CACIC_PROCESS_WAIT );
  1560 + g_oCacic.createSampleProcess( g_oCacic.getCacicPath + 'modulos\ini_cols.exe /CacicPath='+g_oCacic.getCacicPath+' /p_ModulosOpcoes=col_patr,wait,user#', CACIC_PROCESS_WAIT );
1562 1561  
1563 1562 if (FileExists(g_oCacic.getCacicPath + 'Temp\col_patr.dat')) then
1564 1563 Begin
... ... @@ -1627,11 +1626,11 @@ end;
1627 1626 procedure ChecaCipher;
1628 1627 begin
1629 1628 // Os valores possíveis serão 0-DESLIGADO 1-LIGADO 2-ESPERA PARA LIGAR (Será transformado em "1") 3-Ainda se comunicará com o Gerente WEB
1630   - l_cs_cipher := false;
  1629 + g_oCacic.setBoolCipher(false);
1631 1630 v_Aux := GetValorDatMemoria('Configs.CS_CIPHER', v_tstrCipherOpened);
1632 1631 if (v_Aux='1') or (v_Aux='2') then
1633 1632 Begin
1634   - l_cs_cipher := true;
  1633 + g_oCacic.setBoolCipher(true);
1635 1634 SetValorDatMemoria('Configs.CS_CIPHER','1', v_tstrCipherOpened);
1636 1635 End
1637 1636 else
... ... @@ -1654,17 +1653,63 @@ begin
1654 1653 end;
1655 1654  
1656 1655 procedure BuscaConfigs(p_mensagem_log : boolean);
1657   -var Request_SVG, v_array_campos, v_array_valores, v_Report : TStringList;
1658   - intAux1, intAux2, intAux3, intAux4, v_conta_EXCECOES, v_index_ethernet : integer;
1659   - strRetorno, strTripa, strAux3, ValorChaveRegistro, ValorRetornado, v_mensagem_log,
1660   - v_mascara,te_ip,te_mascara, te_gateway, te_serv_dhcp, te_dns_primario, te_dns_secundario, te_wins_primario, te_wins_secundario, te_nome_host, te_dominio_dns, te_dominio_windows,
1661   - v_mac_address,v_metodo_obtencao,v_nome_arquivo,IpConfigLINHA, v_enderecos_mac_invalidos, v_win_dir, v_dir_command, v_dir_ipcfg, v_win_dir_command, v_win_dir_ipcfg, v_te_serv_cacic : string;
1662   - tstrTripa1, tstrTripa2, tstrTripa3, tstrTripa4, tstrTripa5, tstrEXCECOES : TStrings;
1663   - IpConfigTXT, chksis_ini : textfile;
1664   -
1665   - v_oMachine : TMiTec_Machine;
1666   - v_TCPIP : TMiTeC_TCPIP;
1667   - v_NETWORK : TMiTeC_Network;
  1656 +var
  1657 + Request_SVG,
  1658 + v_array_campos,
  1659 + v_array_valores,
  1660 + v_Report : TStringList;
  1661 +
  1662 + intAux1,
  1663 + intAux2,
  1664 + intAux3,
  1665 + intAux4,
  1666 + v_conta_EXCECOES,
  1667 + v_index_ethernet : integer;
  1668 +
  1669 + strRetorno,
  1670 + strTripa,
  1671 + strAux3,
  1672 + ValorChaveRegistro,
  1673 + ValorRetornado,
  1674 + v_mensagem_log,
  1675 + v_mascara,
  1676 + te_ip,
  1677 + te_mascara,
  1678 + te_gateway,
  1679 + te_serv_dhcp,
  1680 + te_dns_primario,
  1681 + te_dns_secundario,
  1682 + te_wins_primario,
  1683 + te_wins_secundario,
  1684 + te_nome_host,
  1685 + te_dominio_dns,
  1686 + te_dominio_windows,
  1687 + v_mac_address,
  1688 + v_metodo_obtencao,
  1689 + v_nome_arquivo,
  1690 + IpConfigLINHA,
  1691 + v_enderecos_mac_invalidos,
  1692 + v_win_dir,
  1693 + v_dir_command,
  1694 + v_dir_ipcfg,
  1695 + v_win_dir_command,
  1696 + v_win_dir_ipcfg,
  1697 + v_te_serv_cacic : string;
  1698 +
  1699 + tstrTripa1,
  1700 + tstrTripa2,
  1701 + tstrTripa3,
  1702 + tstrTripa4,
  1703 + tstrTripa5,
  1704 + tstrEXCECOES : TStrings;
  1705 +
  1706 + IpConfigTXT,
  1707 + chksis_ini,
  1708 + v_txtCookie : TextFile;
  1709 +
  1710 + v_oMachine : TMiTec_Machine;
  1711 + v_TCPIP : TMiTeC_TCPIP;
  1712 + v_NETWORK : TMiTeC_Network;
1668 1713 Begin
1669 1714 Try
1670 1715 ChecaCipher;
... ... @@ -1755,12 +1800,12 @@ Begin
1755 1800 SetValorDatMemoria('TcpIp.TE_IP',v_tcpip.Adapter[v_index_ethernet].IPAddress[intAux1], v_tstrCipherOpened);
1756 1801 Try
1757 1802 strRetorno := ComunicaServidor('get_config.php', Request_SVG, 'Testando comunicação com o Módulo Gerente WEB.');
1758   - Seta_l_cs_cipher(strRetorno);
  1803 + Seta_boolCipher(strRetorno);
1759 1804 Seta_l_cs_compress(strRetorno);
1760 1805  
1761 1806 v_Aux := g_oCacic.deCrypt(XML_RetornaValor('te_serv_cacic', strRetorno));
1762 1807 if (v_te_serv_cacic <> v_Aux) and (v_Aux <> '') then
1763   - SetValorDatMemoria('Configs.EnderecoServidor',v_Aux, v_tstrCipherOpened);
  1808 + SetValorDatMemoria('Configs.EnderecoServidor',Trim(v_Aux), v_tstrCipherOpened);
1764 1809  
1765 1810 if (strRetorno <> '0') and (g_oCacic.deCrypt(XML_RetornaValor('te_rede_ok', strRetorno))<>'N') Then
1766 1811 Begin
... ... @@ -1783,12 +1828,12 @@ Begin
1783 1828 Request_SVG.Values['in_teste'] := StringReplace(g_oCacic.enCrypt('OK'),'+','<MAIS>',[rfReplaceAll]);
1784 1829 Try
1785 1830 strRetorno := ComunicaServidor('get_config.php', Request_SVG, 'Teste de comunicação com o Módulo Gerente WEB.');
1786   - Seta_l_cs_cipher(strRetorno);
  1831 + Seta_boolCipher(strRetorno);
1787 1832 Seta_l_cs_compress(strRetorno);
1788 1833  
1789 1834 v_Aux := g_oCacic.deCrypt(XML_RetornaValor('te_serv_cacic', strRetorno));
1790 1835 if (v_te_serv_cacic <> v_Aux) and (v_Aux <> '') then
1791   - SetValorDatMemoria('Configs.EnderecoServidor',v_Aux, v_tstrCipherOpened);
  1836 + SetValorDatMemoria('Configs.EnderecoServidor',Trim(v_Aux), v_tstrCipherOpened);
1792 1837  
1793 1838 if (strRetorno <> '0') and (g_oCacic.deCrypt(XML_RetornaValor('te_rede_ok', strRetorno))<>'N') Then
1794 1839 Begin
... ... @@ -1860,11 +1905,9 @@ Begin
1860 1905  
1861 1906 log_DEBUG(v_acao_gercols + ' Parâmetros: in_chkcacic="'+Request_SVG.Values['in_chkcacic']+'", te_fila_ftp="'+Request_SVG.Values['te_fila_ftp']+'" e id_ip_estacao="'+Request_SVG.Values['id_ip_estacao']+'"');
1862 1907 strRetorno := ComunicaServidor('get_config.php', Request_SVG, v_mensagem_log);
1863   - Seta_l_cs_cipher(strRetorno);
  1908 + Seta_boolCipher(strRetorno);
1864 1909 Seta_l_cs_compress(strRetorno);
1865 1910  
1866   -
1867   -
1868 1911 Request_SVG.Free;
1869 1912 if (strRetorno <> '0') Then
1870 1913 Begin
... ... @@ -1972,7 +2015,7 @@ Begin
1972 2015 log_DEBUG('Executando "'+g_oCacic.getCacicPath + 'modulos\' + v_scripter + ' //b ' + g_oCacic.getCacicPath + 'temp\ipconfig.vbs"');
1973 2016  
1974 2017 if ChecaAgente(g_oCacic.getCacicPath + 'modulos', v_scripter) then
1975   - WinExec(PChar(g_oCacic.getCacicPath + 'modulos\' + v_scripter + ' //b ' + g_oCacic.getCacicPath + 'temp\ipconfig.vbs'), SW_HIDE);
  2018 + g_oCacic.createSampleProcess(g_oCacic.getCacicPath + 'modulos\' + v_scripter + ' //b ' + g_oCacic.getCacicPath + 'temp\ipconfig.vbs', false);
1976 2019 Except
1977 2020 Begin
1978 2021 log_diario('Erro na geração do ipconfig.txt pelo ' + v_metodo_obtencao+'.');
... ... @@ -2014,7 +2057,7 @@ Begin
2014 2057 v_dir_ipcfg := '\';
2015 2058 End;
2016 2059  
2017   - WinExec(PChar(v_win_dir + v_dir_command + '\cmd.exe /c ' + v_win_dir + v_dir_ipcfg + '\ipconfig.exe /all > ' + v_nome_arquivo), SW_MINIMIZE);
  2060 + g_oCacic.createSampleProcess(v_win_dir + v_dir_command + '\cmd.exe /c ' + v_win_dir + v_dir_ipcfg + '\ipconfig.exe /all > ' + v_nome_arquivo, false);
2018 2061 End
2019 2062 else
2020 2063 Begin
... ... @@ -2036,7 +2079,7 @@ Begin
2036 2079 v_win_dir_ipcfg := LeftStr(v_win_dir_command,2);
2037 2080 v_dir_ipcfg := '\';
2038 2081 End;
2039   - WinExec(PChar(v_win_dir + v_dir_command + '\command.com /c ' + v_win_dir + v_dir_ipcfg + '\winipcfg.exe /all /batch ' + v_nome_arquivo), SW_MINIMIZE);
  2082 + g_oCacic.createSampleProcess(v_win_dir + v_dir_command + '\command.com /c ' + v_win_dir + v_dir_ipcfg + '\winipcfg.exe /all /batch ' + v_nome_arquivo, false);
2040 2083 End;
2041 2084 Except log_diario('Erro na geração do ipconfig.txt pelo ' + v_metodo_obtencao+'.');
2042 2085 End;
... ... @@ -2253,8 +2296,13 @@ Begin
2253 2296 v_Aux := StringReplace(v_Aux ,'\' ,'<BarrInv>' ,[rfReplaceAll]);
2254 2297 v_Aux := StringReplace(g_oCacic.enCrypt(v_Aux) ,'+' ,'<MAIS>' ,[rfReplaceAll]);
2255 2298  
2256   - log_DEBUG('Invocando "'+g_oCacic.getCacicPath + 'modulos\srcacicsrv.exe -update [' + v_Aux + ']' );
2257   - WinExec(PChar(g_oCacic.getCacicPath + 'modulos\srcacicsrv.exe -update [' + v_Aux + ']'),SW_NORMAL);
  2299 + log_DEBUG('Criando cookie para srCACICsrv com nova palavra-chave.');
  2300 +
  2301 + AssignFile(v_txtCookie,g_oCacic.getCacicPath + 'temp\cacic_ck.txt');
  2302 + Rewrite(v_txtCookie);
  2303 + Append(v_txtCookie);
  2304 + Writeln(v_txtCookie,v_Aux);
  2305 + CloseFile(v_txtCookie);
2258 2306 End;
2259 2307  
2260 2308  
... ... @@ -2264,12 +2312,12 @@ Begin
2264 2312 strRetorno := ComunicaServidor('get_config.php', Request_SVG, v_mensagem_log);
2265 2313  
2266 2314 // A versão com criptografia do Módulo Gerente WEB retornará o valor cs_cipher=1(Quando receber "1") ou cs_cipher=2(Quando receber "3")
2267   - Seta_l_cs_cipher(strRetorno);
  2315 + Seta_boolCipher(strRetorno);
2268 2316  
2269 2317 // A versão com compressão do Módulo Gerente WEB retornará o valor cs_compress=1(Quando receber "1") ou cs_compress=2(Quando receber "3")
2270 2318 Seta_l_cs_compress(strRetorno);
2271 2319  
2272   - v_te_serv_cacic := g_oCacic.deCrypt(XML_RetornaValor('te_serv_cacic',strRetorno));
  2320 + v_te_serv_cacic := trim(g_oCacic.deCrypt(XML_RetornaValor('te_serv_cacic',strRetorno)));
2273 2321  
2274 2322 if (strRetorno <> '0') and
2275 2323 (v_te_serv_cacic<>'') and
... ... @@ -2278,7 +2326,7 @@ Begin
2278 2326 v_mensagem_log := 'Novo endereço para Gerente WEB: '+v_te_serv_cacic;
2279 2327 SetValorDatMemoria('Configs.EnderecoServidor',v_te_serv_cacic, v_tstrCipherOpened);
2280 2328 log_DEBUG('Setando Criptografia para 3. (Primeiro contato)');
2281   - Seta_l_cs_cipher('');
  2329 + Seta_boolCipher('');
2282 2330 log_DEBUG('Refazendo comunicação');
2283 2331  
2284 2332 // Passei a enviar sempre a versão do CACIC...
... ... @@ -2287,7 +2335,7 @@ Begin
2287 2335 Request_SVG := TStringList.Create;
2288 2336 Request_SVG.Values['te_tripa_perfis'] := StringReplace(g_oCacic.enCrypt(''),'+','<MAIS>',[rfReplaceAll]);
2289 2337 strRetorno := ComunicaServidor('get_config.php', Request_SVG, v_mensagem_log);
2290   - Seta_l_cs_cipher(strRetorno);
  2338 + Seta_boolCipher(strRetorno);
2291 2339 Seta_l_cs_compress(strRetorno);
2292 2340 End;
2293 2341  
... ... @@ -2337,7 +2385,7 @@ Begin
2337 2385 v_acao_gercols := 'Armazenando valores obtidos no DAT Memória.';
2338 2386  
2339 2387 //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
2340   - //Gravação no CACIC2.DAT dos valores de REDE, COMPUTADOR e EXECUÇÃO obtidos, para consulta pelos outros módulos...
  2388 + //Gravação no DatFileName dos valores de REDE, COMPUTADOR e EXECUÇÃO obtidos, para consulta pelos outros módulos...
2341 2389 //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
2342 2390 SetValorDatMemoria('Configs.CS_AUTO_UPDATE' ,UpperCase(g_oCacic.deCrypt(XML_RetornaValor('cs_auto_update' , strRetorno))), v_tstrCipherOpened);
2343 2391 SetValorDatMemoria('Configs.CS_COLETA_HARDWARE' ,UpperCase(g_oCacic.deCrypt(XML_RetornaValor('cs_coleta_hardware' , strRetorno))), v_tstrCipherOpened);
... ... @@ -2489,7 +2537,7 @@ Begin
2489 2537 Finalizar(false);
2490 2538  
2491 2539 if ChecaAgente(g_oCacic.getCacicPath, 'cacic2.exe') then
2492   - WinExec(PChar(g_oCacic.getCacicPath + 'cacic2.exe /atualizacao'), SW_MINIMIZE);
  2540 + g_oCacic.createSampleProcess(g_oCacic.getCacicPath + 'cacic2.exe /atualizacao', false);
2493 2541 Sair;
2494 2542 end;
2495 2543  
... ... @@ -2542,7 +2590,7 @@ Begin
2542 2590 BuscaConfigs(false);
2543 2591 Batchfile := TStringList.Create;
2544 2592 Batchfile.Add('*** Simulação de cookie para cacic2.exe recarregar os valores de configurações ***');
2545   - // A existência deste arquivo forçará o Cacic2.exe a recarregar valores das configurações obtidas e gravadas no Cacic2.DAT
  2593 + // A existência deste arquivo forçará o Cacic2.exe a recarregar valores das configurações obtidas e gravadas no DatFileName
2546 2594 Batchfile.SaveToFile(g_oCacic.getCacicPath + 'Temp\reset.txt');
2547 2595 BatchFile.Free;
2548 2596 log_DEBUG('Configurações apanhadas no módulo Gerente WEB. Retornando ao Agente Principal...');
... ... @@ -2799,7 +2847,7 @@ Begin
2799 2847 Finalizar(false);
2800 2848 Matar(g_oCacic.getCacicPath + 'temp\','*.dat');
2801 2849 CriaTXT(g_oCacic.getCacicPath+'temp','coletas');
2802   - g_oCacic.createSampleProcess( g_oCacic.getCacicPath + 'modulos\ini_cols.exe /p_ModulosOpcoes=' + v_ModulosOpcoes, CACIC_PROCESS_WAIT );
  2850 + g_oCacic.createSampleProcess( g_oCacic.getCacicPath + 'modulos\ini_cols.exe /CacicPath='+g_oCacic.getCacicPath+' /p_ModulosOpcoes=' + v_ModulosOpcoes, CACIC_PROCESS_WAIT );
2803 2851 End;
2804 2852  
2805 2853 end
... ... @@ -3209,77 +3257,86 @@ Begin
3209 3257 SetValorDatMemoria('Erro_Fatal_Descricao', v_acao_gercols, v_tstrCipherOpened);
3210 3258 End;
3211 3259 End;
3212   -
  3260 + g_oCacic.Free;
3213 3261 End;
3214 3262  
3215   -var v_path_cacic : String;
3216 3263 begin
3217 3264 g_oCacic := TCACIC.Create();
3218 3265  
3219   - if( not g_oCacic.isAppRunning( CACIC_APP_NAME ) ) then begin
3220   - Try
3221   - // Pegarei o nível anterior do diretório, que deve ser, por exemplo \Cacic, para leitura do cacic2.DAT
3222   - tstrTripa1 := g_oCacic.explode(ExtractFilePath(ParamStr(0)),'\');
3223   - v_path_cacic := '';
3224   - For intAux := 0 to tstrTripa1.Count -2 do
3225   - v_path_cacic := v_path_cacic + tstrTripa1[intAux] + '\';
3226   -
3227   - g_oCacic.setCacicPath(v_path_cacic);
3228   - v_Debugs := false;
3229   - if DirectoryExists(g_oCacic.getCacicPath + 'Temp\Debugs') then
3230   - if (FormatDateTime('ddmmyyyy', GetFolderDate(g_oCacic.getCacicPath + 'Temp\Debugs')) = FormatDateTime('ddmmyyyy', date)) then
3231   - Begin
3232   - v_Debugs := true;
3233   - log_DEBUG('Pasta "' + g_oCacic.getCacicPath + 'Temp\Debugs" com data '+FormatDateTime('dd-mm-yyyy', GetFolderDate(g_oCacic.getCacicPath + 'Temp\Debugs'))+' encontrada. DEBUG ativado.');
3234   - End;
3235   -
3236   - g_oCacic.setCacicPath(g_oCacic.getCacicPath);
3237   -
3238   -
3239   -
3240   - // De acordo com a versão do OS, determina-se o ShellCommand para chamadas externas.
3241   - p_Shell_Command := 'cmd.exe /c '; //NT/2K/XP
3242   - if(g_oCacic.isWindows9xME()) then
3243   - p_Shell_Command := 'command.com /c ';
3244   -
3245   - if not DirectoryExists(g_oCacic.getCacicPath + 'Temp') then
3246   - ForceDirectories(g_oCacic.getCacicPath + 'Temp');
3247   -
3248   - v_tstrCipherOpened := TStrings.Create;
3249   - v_tstrCipherOpened := CipherOpen(g_oCacic.getDatFileName);
3250   -
3251   - // Não tirar desta posição
3252   - SetValorDatMemoria('Configs.TE_SO',g_oCacic.getWindowsStrId(), v_tstrCipherOpened);
3253   -
3254   - log_DEBUG('Te_So obtido: "' + g_oCacic.getWindowsStrId() +'"');
3255   -
3256   - v_scripter := 'wscript.exe';
3257   - // A existência e bloqueio do arquivo abaixo evitará que Cacic2.exe chame o Ger_Cols quando este estiver em funcionamento
3258   - AssignFile(v_Aguarde,g_oCacic.getCacicPath + 'temp\aguarde_GER.txt'); {Associa o arquivo a uma variável do tipo TextFile}
3259   - {$IOChecks off}
3260   - Reset(v_Aguarde); {Abre o arquivo texto}
3261   - {$IOChecks on}
3262   - if (IOResult <> 0) then // Arquivo não existe, será recriado.
3263   - Rewrite (v_Aguarde);
  3266 + if( not g_oCacic.isAppRunning( CACIC_APP_NAME ) ) then
  3267 + begin
  3268 + if ParamCount > 0 then
  3269 + Begin
  3270 + strAux := '';
  3271 + v_Debugs := true;
3264 3272  
3265   - Append(v_Aguarde);
3266   - Writeln(v_Aguarde,'Apenas um pseudo-cookie para o Cacic2 esperar o término de Ger_Cols');
3267   - Append(v_Aguarde);
  3273 + For intAux := 1 to ParamCount do
  3274 + Begin
  3275 + if (LowerCase(Copy(ParamStr(intAux),1,11)) = '/cacicpath=') then
  3276 + begin
  3277 + v_acao_gercols := 'Configurando CacicPath.';
  3278 + strAux := Copy(ParamStr(intAux),12,StrLen(PChar(ParamStr(intAux))));
  3279 + end;
  3280 + end;
3268 3281  
3269   - ChecaCipher;
3270   - ChecaCompress;
  3282 + if (strAux <> '') then
  3283 + Begin
  3284 + g_oCacic.setCacicPath(strAux);
  3285 + log_DEBUG('Parâmetro /CacicPath recebido com valor="'+strAux+'"');
  3286 + Try
  3287 + v_Debugs := false;
  3288 + if DirectoryExists(g_oCacic.getCacicPath + 'Temp\Debugs') then
  3289 + if (FormatDateTime('ddmmyyyy', GetFolderDate(g_oCacic.getCacicPath + 'Temp\Debugs')) = FormatDateTime('ddmmyyyy', date)) then
  3290 + Begin
  3291 + v_Debugs := true;
  3292 + log_DEBUG('Pasta "' + g_oCacic.getCacicPath + 'Temp\Debugs" com data '+FormatDateTime('dd-mm-yyyy', GetFolderDate(g_oCacic.getCacicPath + 'Temp\Debugs'))+' encontrada. DEBUG ativado.');
  3293 + End;
3271 3294  
3272   - Executa_Ger_Cols;
3273   - Finalizar(true);
3274   - Except
3275   - Begin
3276   - log_diario('PROBLEMAS EM EXECUTA_GER_COLS! Ação: ' + v_acao_gercols+'.');
3277   - CriaTXT(g_oCacic.getCacicPath,'ger_erro');
3278   - Finalizar(false);
3279   - SetValorDatMemoria('Erro_Fatal_Descricao', v_acao_gercols, v_tstrCipherOpened);
3280   - End;
3281   - End;
  3295 + g_oCacic.setCacicPath(g_oCacic.getCacicPath);
  3296 +
  3297 + // De acordo com a versão do OS, determina-se o ShellCommand para chamadas externas.
  3298 + p_Shell_Command := 'cmd.exe /c '; //NT/2K/XP
  3299 + if(g_oCacic.isWindows9xME()) then
  3300 + p_Shell_Command := 'command.com /c ';
  3301 +
  3302 + if not DirectoryExists(g_oCacic.getCacicPath + 'Temp') then
  3303 + ForceDirectories(g_oCacic.getCacicPath + 'Temp');
  3304 +
  3305 + v_tstrCipherOpened := TStrings.Create;
  3306 + v_tstrCipherOpened := CipherOpen(g_oCacic.getCacicPath + g_oCacic.getDatFileName);
  3307 +
  3308 + // Não tirar desta posição
  3309 + SetValorDatMemoria('Configs.TE_SO',g_oCacic.getWindowsStrId(), v_tstrCipherOpened);
  3310 +
  3311 + log_DEBUG('Te_So obtido: "' + g_oCacic.getWindowsStrId() +'"');
  3312 +
  3313 + v_scripter := 'wscript.exe';
  3314 + // A existência e bloqueio do arquivo abaixo evitará que Cacic2.exe chame o Ger_Cols quando este estiver em funcionamento
  3315 + AssignFile(v_Aguarde,g_oCacic.getCacicPath + 'temp\aguarde_GER.txt'); {Associa o arquivo a uma variável do tipo TextFile}
  3316 + {$IOChecks off}
  3317 + Reset(v_Aguarde); {Abre o arquivo texto}
  3318 + {$IOChecks on}
  3319 + if (IOResult <> 0) then // Arquivo não existe, será recriado.
  3320 + Rewrite (v_Aguarde);
  3321 +
  3322 + Append(v_Aguarde);
  3323 + Writeln(v_Aguarde,'Apenas um pseudo-cookie para o Cacic2 esperar o término de Ger_Cols');
  3324 + Append(v_Aguarde);
  3325 +
  3326 + ChecaCipher;
  3327 + ChecaCompress;
  3328 +
  3329 + Executa_Ger_Cols;
  3330 + Finalizar(true);
  3331 + Except
  3332 + Begin
  3333 + log_diario('PROBLEMAS EM EXECUTA_GER_COLS! Ação: ' + v_acao_gercols+'.');
  3334 + CriaTXT(g_oCacic.getCacicPath,'ger_erro');
  3335 + Finalizar(false);
  3336 + SetValorDatMemoria('Erro_Fatal_Descricao', v_acao_gercols, v_tstrCipherOpened);
  3337 + End;
  3338 + End;
  3339 + End;
  3340 + End;
3282 3341 End;
3283   -
3284   - g_oCacic.Free();
3285 3342 end.
... ...
ini_cols/ini_cols.dpr
... ... @@ -27,20 +27,24 @@ uses
27 27 PJVersionInfo,
28 28 CACIC_Library in '..\CACIC_Library.pas';
29 29  
30   -var v_te_senha_login_serv_updates,
31   - v_versao : string;
32   - v_array_path_cacic : TStrings;
33   - intAux,
34   - v_ContaTempo,
35   - v_Tolerancia : integer;
36   - v_ModulosOpcoes,
37   - v_Aux : String;
38   - v_Debugs : Boolean;
39   - v_Aguarde : TextFile;
40   -
41   -var v_tstrCipherOpened,
42   - v_tstrModulosOpcoes,
43   - v_tstrModuloOpcao : TStrings;
  30 +var
  31 + v_te_senha_login_serv_updates,
  32 + v_versao,
  33 + v_ModulosOpcoes : String;
  34 +
  35 +var
  36 + v_tstrCipherOpened,
  37 + v_tstrModulosOpcoes,
  38 + v_tstrModuloOpcao : TStrings;
  39 +
  40 +var
  41 + intAux,
  42 + v_ContaTempo,
  43 + v_Tolerancia : integer;
  44 +
  45 +var
  46 + v_Debugs : Boolean;
  47 + v_Aguarde : TextFile;
44 48  
45 49 var
46 50 g_oCacic : TCACIC;
... ... @@ -158,7 +162,6 @@ var v_DatFile : TextFile;
158 162 v_strCipherClosed : string;
159 163 oCacic : TCACIC;
160 164 begin
161   - oCacic := TCACIC.Create();
162 165 v_strCipherOpened := '';
163 166 if FileExists(p_DatFileName) then
164 167 begin
... ... @@ -190,8 +193,6 @@ begin
190 193 log_DEBUG('Vetor MemoryDAT com tamanho IMPAR... Ajustando.');
191 194 Result.Add('');
192 195 End;
193   -
194   - oCacic.Free();
195 196 end;
196 197  
197 198 Function FTP(p_Host : String; p_Port : String; p_Username : String; p_Password : String; p_PathServer : String; p_File : String; p_Dest : String) : Boolean;
... ... @@ -225,100 +226,108 @@ begin
225 226 End;
226 227 end;
227 228  
228   -var v_path_cacic : String;
  229 +var strAux : String;
229 230 begin
230 231 g_oCacic := TCACIC.Create();
231 232  
  233 + g_oCacic.setBoolCipher(true);
  234 +
232 235 if( not g_oCacic.isAppRunning( CACIC_APP_NAME ) ) then
233   - if (ParamCount>0) then // A passagem da chave EAS é mandatória...
234   - Begin
235   - //Pegarei o nível anterior do diretório, que deve ser, por exemplo \Cacic, para leitura do cacic2.dat
236   - v_array_path_cacic := g_oCacic.explode(ExtractFilePath(ParamStr(0)),'\');
237   - v_path_cacic := '';
238   - For intAux := 0 to v_array_path_cacic.Count -2 do
239   - v_path_cacic := v_path_cacic + v_array_path_cacic[intAux] + '\';
240   -
241   - g_oCacic.setCacicPath(v_path_cacic);
242   - v_Debugs := false;
243   - if DirectoryExists(g_oCacic.getCacicPath + 'Temp\Debugs') then
244   - Begin
245   - if (FormatDateTime('ddmmyyyy', GetFolderDate(g_oCacic.getCacicPath + 'Temp\Debugs')) = FormatDateTime('ddmmyyyy', date)) then
246   - Begin
247   - v_Debugs := true;
248   - log_DEBUG('Pasta "' + g_oCacic.getCacicPath + 'Temp\Debugs" com data '+FormatDateTime('dd-mm-yyyy', GetFolderDate(g_oCacic.getCacicPath + 'Temp\Debugs'))+' encontrada. DEBUG ativado.');
249   - End;
250   - End;
251   -
252   - // A existência e bloqueio do arquivo abaixo evitará que Cacic2.exe chame o Ger_Cols quando a coleta ainda estiver sendo efetuada
253   - AssignFile(v_Aguarde,g_oCacic.getCacicPath + 'temp\aguarde_INI.txt'); {Associa o arquivo a uma variável do tipo TextFile}
254   - {$IOChecks off}
255   - Reset(v_Aguarde); {Abre o arquivo texto}
256   - {$IOChecks on}
257   - if (IOResult <> 0) then // Arquivo não existe, será recriado.
258   - Rewrite (v_Aguarde);
259   -
260   - Append(v_Aguarde);
261   - Writeln(v_Aguarde,'Apenas um pseudo-cookie para o Cacic2 esperar o término de Ini_Cols');
262   - Append(v_Aguarde);
263   -
264   - Matar(g_oCacic.getCacicPath+'temp\','*.dat');
265   - Try
266   - // Caso exista o Gerente de Coletas será verificada a versão...
267   - // Devido a problemas na rotina de FTP na versão 2.0.1.2,
268   - // que impossibilitava atualização de versões de todos os componentes, exceto INI_COLS
269   - If (FileExists(g_oCacic.getCacicPath + 'modulos\ger_cols.exe')) Then
  236 + if ParamCount > 0 then
  237 + Begin
  238 + strAux := '';
  239 + For intAux := 1 to ParamCount do
  240 + Begin
  241 + if LowerCase(Copy(ParamStr(intAux),1,11)) = '/cacicpath=' then
  242 + begin
  243 + strAux := Trim(Copy(ParamStr(intAux),12,Length((ParamStr(intAux)))));
  244 + log_DEBUG('Parâmetro /CacicPath recebido com valor="'+strAux+'"');
  245 + end;
  246 + end;
  247 +
  248 + if (strAux <> '') then
  249 + Begin
  250 + g_oCacic.setCacicPath(strAux);
  251 + v_Debugs := false;
  252 + if DirectoryExists(g_oCacic.getCacicPath + 'Temp\Debugs') then
270 253 Begin
271   - v_versao := trim(GetVersionInfo(g_oCacic.getCacicPath + 'modulos\ger_cols.exe'));
272   - if (v_versao = '0.0.0.0') then // Provavelmente arquivo corrompido ou versão muito antiga
273   - Begin
274   - Matar(g_oCacic.getCacicPath+'modulos\','ger_cols.exe');
275   - Sleep(5000); // Pausa 5 segundos para total exclusão de GER_COLS
276   - CipherOpen(g_oCacic.getDatFileName);
277   - v_te_senha_login_serv_updates := GetValorDatMemoria('Configs.te_senha_login_serv_updates');
278   -
279   - FTP(GetValorDatMemoria('Configs.te_serv_updates'),
280   - GetValorDatMemoria('Configs.nu_porta_serv_updates'),
281   - GetValorDatMemoria('Configs.nm_usuario_login_serv_updates'),
282   - v_te_senha_login_serv_updates,
283   - GetValorDatMemoria('Configs.te_path_serv_updates'),
284   - 'ger_cols.exe',
285   - g_oCacic.getCacicPath + 'modulos');
286   -
287   - // Pausa 5 segundos para total gravação de GER_COLS
288   - Sleep(5000);
  254 + if (FormatDateTime('ddmmyyyy', GetFolderDate(g_oCacic.getCacicPath + 'Temp\Debugs')) = FormatDateTime('ddmmyyyy', date)) then
  255 + Begin
  256 + v_Debugs := true;
  257 + log_DEBUG('Pasta "' + g_oCacic.getCacicPath + 'Temp\Debugs" com data '+FormatDateTime('dd-mm-yyyy', GetFolderDate(g_oCacic.getCacicPath + 'Temp\Debugs'))+' encontrada. DEBUG ativado.');
  258 + End;
  259 + End;
289 260  
  261 + // A existência e bloqueio do arquivo abaixo evitará que Cacic2.exe chame o Ger_Cols quando a coleta ainda estiver sendo efetuada
  262 + AssignFile(v_Aguarde,g_oCacic.getCacicPath + 'temp\aguarde_INI.txt'); {Associa o arquivo a uma variável do tipo TextFile}
  263 + {$IOChecks off}
  264 + Reset(v_Aguarde); {Abre o arquivo texto}
  265 + {$IOChecks on}
  266 + if (IOResult <> 0) then // Arquivo não existe, será recriado.
  267 + Rewrite (v_Aguarde);
  268 +
  269 + Append(v_Aguarde);
  270 + Writeln(v_Aguarde,'Apenas um pseudo-cookie para o Cacic2 esperar o término de Ini_Cols');
  271 + Append(v_Aguarde);
  272 +
  273 + Matar(g_oCacic.getCacicPath+'temp\','*.dat');
  274 + Try
  275 + // Caso exista o Gerente de Coletas será verificada a versão...
  276 + // Devido a problemas na rotina de FTP na versão 2.0.1.2,
  277 + // que impossibilitava atualização de versões de todos os componentes, exceto INI_COLS
  278 + If (FileExists(g_oCacic.getCacicPath + 'modulos\ger_cols.exe')) Then
  279 + Begin
  280 + v_versao := trim(GetVersionInfo(g_oCacic.getCacicPath + 'modulos\ger_cols.exe'));
  281 + if (v_versao = '0.0.0.0') then // Provavelmente arquivo corrompido ou versão muito antiga
  282 + Begin
  283 + Matar(g_oCacic.getCacicPath+'modulos\','ger_cols.exe');
  284 + Sleep(5000); // Pausa 5 segundos para total exclusão de GER_COLS
  285 + CipherOpen(g_oCacic.getCacicPath + g_oCacic.getDatFileName);
  286 + v_te_senha_login_serv_updates := GetValorDatMemoria('Configs.te_senha_login_serv_updates');
  287 +
  288 + FTP(GetValorDatMemoria('Configs.te_serv_updates'),
  289 + GetValorDatMemoria('Configs.nu_porta_serv_updates'),
  290 + GetValorDatMemoria('Configs.nm_usuario_login_serv_updates'),
  291 + v_te_senha_login_serv_updates,
  292 + GetValorDatMemoria('Configs.te_path_serv_updates'),
  293 + 'ger_cols.exe',
  294 + g_oCacic.getCacicPath + 'modulos');
  295 +
  296 + // Pausa 5 segundos para total gravação de GER_COLS
  297 + Sleep(5000);
  298 +
  299 + End;
  300 + End;
  301 +
  302 + // Procuro pelo parâmetro p_ModulosOpcoes que deverá ter sido passado pelo Gerente de Coletas
  303 + // Contendo a formação: coletor1,wait#coletor2,nowait#coletorN,nowait#
  304 + // Observações:
  305 + // 1) Os valores "wait/nowait" determinam se o Inicializador de Coletas estará sujeito à tolerância de tempo para as coletas.
  306 + // 2) No caso de Coletor de Patrimônio, este depende de digitação e deverá trazer a opção "wait";
  307 + // 3) Ainda no caso de Coletor de Patrimônio, quando este for invocado através do menu, o Gerente de Coletas enviará a opção "user", ficando o parâmetro p_ModulosOpcoes = "col_patr,wait,user"
  308 + For intAux := 1 to ParamCount do
  309 + Begin
  310 + if LowerCase(Copy(ParamStr(intAux),1,17)) = '/p_modulosopcoes=' then
  311 + v_ModulosOpcoes := Trim(Copy(ParamStr(intAux),18,Length((ParamStr(intAux)))));
290 312 End;
291   - End;
292 313  
293   - // Procuro pelo parâmetro p_ModulosOpcoes que deverá ter sido passado pelo Gerente de Coletas
294   - // Contendo a formação: coletor1,wait#coletor2,nowait#coletorN,nowait#
295   - // Observações:
296   - // 1) Os valores "wait/nowait" determinam se o Inicializador de Coletas estará sujeito à tolerância de tempo para as coletas.
297   - // 2) No caso de Coletor de Patrimônio, este depende de digitação e deverá trazer a opção "wait";
298   - // 3) Ainda no caso de Coletor de Patrimônio, quando este for invocado através do menu, o Gerente de Coletas enviará a opção "user", ficando o parâmetro p_ModulosOpcoes = "col_patr,wait,user"
299   - For intAux := 1 to ParamCount do
300   - Begin
301   - if LowerCase(Copy(ParamStr(intAux),1,17)) = '/p_modulosopcoes=' then
302   - v_ModulosOpcoes := Trim(Copy(ParamStr(intAux),18,Length((ParamStr(intAux)))));
303   - End;
304   -
305   - log_DEBUG('Parâmetro p_ModulosOpcoes recebido: '+v_ModulosOpcoes);
306   - v_tstrModulosOpcoes := g_oCacic.explode(v_ModulosOpcoes,'#');
307   -
308   - // Tempo de tolerância para as coletas
309   - v_Tolerancia := 5; // (minutos)
310   -
311   - For intAux := 0 to v_tstrModulosOpcoes.Count -1 do
312   - Begin
313   - v_tstrModuloOpcao := g_oCacic.explode(v_tstrModulosOpcoes[intAux],',');
314   - v_Aux := v_tstrModuloOpcao[0]+'.exe /p_Option='+v_tstrModuloOpcao[2];
315   - log_DEBUG('Chamando "' + v_tstrModuloOpcao[0]+'.exe " /p_Option='+v_tstrModuloOpcao[2]);
316   -
317   - g_oCacic.createSampleProcess( g_oCacic.getCacicPath + '\modulos\' + v_aux, CACIC_PROCESS_WAIT );
318   -
319   - End;
320   - except
321   - end;
  314 + log_DEBUG('Parâmetro p_ModulosOpcoes recebido: '+v_ModulosOpcoes);
  315 + v_tstrModulosOpcoes := g_oCacic.explode(v_ModulosOpcoes,'#');
  316 +
  317 + // Tempo de tolerância para as coletas
  318 + v_Tolerancia := 5; // (minutos)
  319 +
  320 + For intAux := 0 to v_tstrModulosOpcoes.Count -1 do
  321 + Begin
  322 + v_tstrModuloOpcao := g_oCacic.explode(v_tstrModulosOpcoes[intAux],',');
  323 + strAux := v_tstrModuloOpcao[0]+'.exe /CacicPath='+g_oCacic.getCacicPath+' /p_Option='+v_tstrModuloOpcao[2];
  324 + log_DEBUG('Chamando "' + v_tstrModuloOpcao[0]+'.exe " /p_Option='+v_tstrModuloOpcao[2]);
  325 +
  326 + g_oCacic.createSampleProcess( g_oCacic.getCacicPath + '\modulos\' + strAux, CACIC_PROCESS_WAIT );
  327 + End;
  328 + except
  329 + end;
  330 + End;
322 331 End;
323 332 g_oCacic.Free();
324 333 end.
... ...
main.pas
... ... @@ -19,45 +19,53 @@ unit main;
19 19  
20 20 interface
21 21  
22   -uses Windows,
23   - Messages,
24   - Forms,
25   - Menus,
26   - Classes,
27   - SysUtils,
28   - Controls,
29   - StdCtrls,
30   - ExtCtrls,
31   - ShellAPI,
32   - registry,
33   - dialogs,
34   - PJVersionInfo,
35   - ComCtrls,
36   - IdBaseComponent,
37   - IdComponent,
38   - Buttons,
39   - CACIC_Library,
40   - ImgList,
41   - Graphics;
42   - //IdTCPServer;
43   - //IdFTPServer;
44   -
45   -const WM_MYMESSAGE = WM_USER+100;
  22 +uses
  23 + Windows,
  24 + Messages,
  25 + Forms,
  26 + Menus,
  27 + Classes,
  28 + SysUtils,
  29 + Controls,
  30 + StdCtrls,
  31 + ExtCtrls,
  32 + ShellAPI,
  33 + registry,
  34 + dialogs,
  35 + PJVersionInfo,
  36 + ComCtrls,
  37 + IdBaseComponent,
  38 + IdComponent,
  39 + Buttons,
  40 + CACIC_Library,
  41 + ImgList,
  42 + Graphics;
  43 + //IdTCPServer;
  44 + //IdFTPServer;
  45 +
  46 +const
  47 + WM_MYMESSAGE = WM_USER+100;
46 48  
47 49 // Declaração das variáveis globais.
48   -var p_Shell_Command,
49   - p_Shell_Path,
50   - v_versao,
51   - v_DataCacic2DAT,
52   - v_Tamanho_Arquivo,
53   - strConfigsPatrimonio : string;
54   - BatchFile : TStringList;
55   - v_tstrCipherOpened : TStrings;
56   - boolCrypt,
57   - boolDebugs : Boolean;
  50 +var
  51 + p_Shell_Command,
  52 + p_Shell_Path,
  53 + v_versao,
  54 + v_DataCacic2DAT,
  55 + v_Tamanho_Arquivo,
  56 + strConfigsPatrimonio : string;
  57 +
  58 +var
  59 + BatchFile : TStringList;
  60 +
  61 +var
  62 + v_tstrCipherOpened : TStrings;
  63 +
  64 +var
  65 + boolDebugs : Boolean;
58 66  
59 67 var
60   - g_oCacic: TCACIC;
  68 + g_oCacic: TCACIC;
61 69  
62 70 type
63 71 TFormularioGeral = class(TForm)
... ... @@ -218,7 +226,6 @@ type
218 226 procedure WMMENUSELECT(var msg: TWMMENUSELECT); message WM_MENUSELECT;
219 227 public
220 228 Function Implode(p_Array : TStrings ; p_Separador : String) : String;
221   - function HomeDrive : string;
222 229 function GetFolderDate(Folder: string): TDateTime;
223 230 Function CipherClose : String;
224 231 Function CipherOpen : TStrings;
... ... @@ -516,14 +523,6 @@ Begin
516 523  
517 524 End;
518 525  
519   -
520   -function TFormularioGeral.HomeDrive : string;
521   -var
522   -WinDir : array [0..144] of char;
523   -begin
524   -GetWindowsDirectory (WinDir, 144);
525   -Result := StrPas (WinDir);
526   -end;
527 526 function TFormularioGeral.GetFolderDate(Folder: string): TDateTime;
528 527 var
529 528 Rec: TSearchRec;
... ... @@ -565,33 +564,33 @@ var v_DatFile : TextFile;
565 564 v_strCipherClosed : string;
566 565 begin
567 566  
568   - log_DEBUG('Fechando '+g_oCacic.getDatFileName);
  567 + log_DEBUG('Fechando '+g_oCacic.getCacicPath + g_oCacic.getDatFileName);
569 568 if boolDebugs then
570 569 for intAux := 0 to (v_tstrCipherOpened.Count-1) do
571 570 log_DEBUG('Posição ['+inttostr(intAux)+']='+v_tstrCipherOpened[intAux]);
572 571  
573 572 try
574   - FileSetAttr (g_oCacic.getDatFileName,0); // Retira os atributos do arquivo para evitar o erro FILE ACCESS DENIED em máquinas 2000
  573 + FileSetAttr (g_oCacic.getCacicPath + g_oCacic.getDatFileName,0); // Retira os atributos do arquivo para evitar o erro FILE ACCESS DENIED em máquinas 2000
575 574  
576   - log_DEBUG('Localizando arquivo: '+g_oCacic.getDatFileName);
577   - AssignFile(v_DatFile,g_oCacic.getDatFileName); {Associa o arquivo a uma variável do tipo TextFile}
  575 + log_DEBUG('Localizando arquivo: '+g_oCacic.getCacicPath + g_oCacic.getDatFileName);
  576 + AssignFile(v_DatFile,g_oCacic.getCacicPath + g_oCacic.getDatFileName); {Associa o arquivo a uma variável do tipo TextFile}
578 577 {$IOChecks off}
579   - log_DEBUG('Abrindo arquivo: '+g_oCacic.getDatFileName);
  578 + log_DEBUG('Abrindo arquivo: '+g_oCacic.getCacicPath + g_oCacic.getDatFileName);
580 579 ReWrite(v_DatFile); {Abre o arquivo texto}
581 580 {$IOChecks on}
582   - log_DEBUG('Append(2) no arquivo: '+g_oCacic.getDatFileName);
  581 + log_DEBUG('Append(2) no arquivo: '+g_oCacic.getCacicPath + g_oCacic.getDatFileName);
583 582 Append(v_DatFile);
584 583 log_DEBUG('Criando vetor para criptografia.');
585 584 v_strCipherOpenImploded := Implode(v_tstrCipherOpened,g_oCacic.getSeparatorKey);
586 585  
587   - log_DEBUG('Salvando a string "'+v_strCipherOpenImploded+'" em '+g_oCacic.getDatFileName);
  586 + log_DEBUG('Salvando a string "'+v_strCipherOpenImploded+'" em '+g_oCacic.getCacicPath + g_oCacic.getDatFileName);
588 587 v_strCipherClosed := g_oCacic.enCrypt(v_strCipherOpenImploded);
589 588 Writeln(v_DatFile,v_strCipherClosed); {Grava a string Texto no arquivo texto}
590 589 CloseFile(v_DatFile);
591 590 except
592   - log_diario('ERRO NA GRAVAÇÃO DO ARQUIVO DE CONFIGURAÇÕES.('+g_oCacic.getDatFileName+')');
  591 + log_diario('ERRO NA GRAVAÇÃO DO ARQUIVO DE CONFIGURAÇÕES.('+ g_oCacic.getCacicPath + g_oCacic.getDatFileName+')');
593 592 end;
594   - log_DEBUG(g_oCacic.getDatFileName+' fechado com sucesso!');
  593 + log_DEBUG(g_oCacic.getCacicPath + g_oCacic.getDatFileName+' fechado com sucesso!');
595 594 end;
596 595  
597 596 function TFormularioGeral.Get_File_Size(sFileToExamine: string; bInKBytes: Boolean): string;
... ... @@ -619,22 +618,22 @@ var v_DatFile : TextFile;
619 618 v_strCipherClosed : string;
620 619 begin
621 620  
622   - if (v_DataCacic2DAT = '') or (v_DataCacic2DAT <> FormatDateTime('ddmmyyyyhhnnsszzz', GetFolderDate(g_oCacic.getCacicPath + 'cacic2.dat'))) then
  621 + if (v_DataCacic2DAT = '') or (v_DataCacic2DAT <> FormatDateTime('ddmmyyyyhhnnsszzz', GetFolderDate(g_oCacic.getCacicPath + g_oCacic.getDatFileName))) then
623 622 Begin
624   - v_DataCacic2DAT := FormatDateTime('ddmmyyyyhhnnsszzz', GetFolderDate(g_oCacic.getCacicPath + 'cacic2.dat'));
625   - log_DEBUG('Abrindo '+g_oCacic.getDatFileName +' - DateTime Cacic2.dat=> '+v_DataCacic2DAT);
  623 + v_DataCacic2DAT := FormatDateTime('ddmmyyyyhhnnsszzz', GetFolderDate(g_oCacic.getCacicPath + g_oCacic.getDatFileName));
  624 + log_DEBUG('Abrindo '+g_oCacic.getCacicPath + g_oCacic.getDatFileName +' - DateTime '+g_oCacic.getCacicPath + g_oCacic.getDatFileName+' => '+v_DataCacic2DAT);
626 625 v_strCipherOpened := '';
627 626  
628   - v_Tamanho_Arquivo := Get_File_Size(g_oCacic.getDatFileName,true);
  627 + v_Tamanho_Arquivo := Get_File_Size(g_oCacic.getCacicPath + g_oCacic.getDatFileName,true);
629 628  
630 629 if (v_Tamanho_Arquivo = '0') or
631   - (v_Tamanho_Arquivo = '-1') then FormularioGeral.Matar(g_oCacic.getCacicPath,'cacic2.dat');
  630 + (v_Tamanho_Arquivo = '-1') then FormularioGeral.Matar(g_oCacic.getCacicPath,g_oCacic.getDatFileName);
632 631  
633   - if FileExists(g_oCacic.getDatFileName) then
  632 + if FileExists(g_oCacic.getCacicPath + g_oCacic.getDatFileName) then
634 633 begin
635   - log_DEBUG(g_oCacic.getDatFileName+' já existe!');
636   - AssignFile(v_DatFile,g_oCacic.getDatFileName);
637   - log_DEBUG('Abrindo '+g_oCacic.getDatFileName);
  634 + log_DEBUG(g_oCacic.getCacicPath + g_oCacic.getDatFileName+' já existe!');
  635 + AssignFile(v_DatFile,g_oCacic.getCacicPath + g_oCacic.getDatFileName);
  636 + log_DEBUG('Abrindo '+g_oCacic.getCacicPath + g_oCacic.getDatFileName);
638 637  
639 638 {$IOChecks off}
640 639 Reset(v_DatFile);
... ... @@ -643,19 +642,19 @@ begin
643 642 log_DEBUG('Verificação de Existência.');
644 643 if (IOResult <> 0)then // Arquivo não existe, será recriado.
645 644 begin
646   - log_DEBUG('Recriando "'+g_oCacic.getDatFileName+'"');
  645 + log_DEBUG('Recriando "'+g_oCacic.getCacicPath + g_oCacic.getDatFileName+'"');
647 646 Rewrite (v_DatFile);
648 647 log_DEBUG('Inserindo Primeira Linha.');
649 648 Append(v_DatFile);
650 649 end;
651 650  
652   - log_DEBUG('Lendo '+g_oCacic.getDatFileName);
  651 + log_DEBUG('Lendo '+g_oCacic.getCacicPath + g_oCacic.getDatFileName);
653 652  
654 653 Readln(v_DatFile,v_strCipherClosed);
655 654  
656 655 log_DEBUG('Povoando Variável');
657 656 while not EOF(v_DatFile) do Readln(v_DatFile,v_strCipherClosed);
658   - log_DEBUG('Fechando '+g_oCacic.getDatFileName);
  657 + log_DEBUG('Fechando '+g_oCacic.getCacicPath + g_oCacic.getDatFileName);
659 658 CloseFile(v_DatFile);
660 659 log_DEBUG('Chamando Criptografia de conteúdo');
661 660 v_strCipherOpened:= g_oCacic.deCrypt(v_strCipherClosed);
... ... @@ -666,7 +665,7 @@ begin
666 665 Begin
667 666 v_tstrCipherOpened := explode('Configs.ID_SO'+g_oCacic.getSeparatorKey+ g_oCacic.getWindowsStrId() +g_oCacic.getSeparatorKey+
668 667 'Configs.Endereco_WS'+g_oCacic.getSeparatorKey+'/cacic2/ws/',g_oCacic.getSeparatorKey);
669   - log_DEBUG(g_oCacic.getDatFileName+' Inexistente. Criado o DAT em memória.');
  668 + log_DEBUG(g_oCacic.getCacicPath + g_oCacic.getDatFileName+' Inexistente. Criado o DAT em memória.');
670 669 End;
671 670  
672 671 Result := v_tstrCipherOpened;
... ... @@ -675,7 +674,7 @@ begin
675 674 Result.Add('');
676 675  
677 676 End
678   - else log_DEBUG('Cacic2.dat ainda não alterado! Não foi necessário reabrí-lo.');
  677 + else log_DEBUG(g_oCacic.getCacicPath + g_oCacic.getDatFileName + ' ainda não alterado! Não foi necessário reabrí-lo.');
679 678 end;
680 679  
681 680 Procedure TFormularioGeral.SetValorDatMemoria(p_Chave : string; p_Valor : String; p_tstrCipherOpened : TStrings);
... ... @@ -818,8 +817,8 @@ Begin
818 817 InicializaTray;
819 818  
820 819 log_diario('Acionando recuperador de Módulo Gerente de Coletas.');
821   - log_DEBUG('Recuperador de Módulo Gerente de Coletas: '+HomeDrive + '\chksis.exe');
822   - WinExec(PChar(HomeDrive + '\chksis.exe'),SW_HIDE);
  820 + log_DEBUG('Recuperador de Módulo Gerente de Coletas: '+g_oCacic.getWinDir + 'chksis.exe');
  821 + g_oCacic.createSampleProcess(g_oCacic.getWinDir + 'chksis.exe',false);
823 822  
824 823 sleep(30000); // 30 segundos de espera para download do ger_cols.exe
825 824 v_Tamanho_Arquivo := Get_File_Size(g_oCacic.getCacicPath + 'modulos\ger_cols.exe',true);
... ... @@ -871,7 +870,7 @@ Begin
871 870 // Verifico se o endereço do servidor do cacic foi configurado.
872 871 if (GetValorDatMemoria('Configs.EnderecoServidor',v_tstrCipherOpened)='') then
873 872 Begin
874   - strAux := getValorChaveRegIni('Cacic2','ip_serv_cacic',HomeDrive + '\chksis.ini');
  873 + strAux := getValorChaveRegIni('Cacic2','ip_serv_cacic',g_oCacic.getWinDir + 'chksis.ini');
875 874  
876 875 if (strAux='') then
877 876 begin
... ... @@ -1048,8 +1047,6 @@ End;
1048 1047 procedure TFormularioGeral.FormCreate(Sender: TObject);
1049 1048 var strAux,
1050 1049 v_ip_serv_cacic,
1051   - v_cacic_dir,
1052   - v_windir,
1053 1050 strFraseVersao : string;
1054 1051 intAux : integer;
1055 1052 v_Aguarde : TextFile;
... ... @@ -1058,33 +1055,15 @@ begin
1058 1055 // Não mostrar o formulário...
1059 1056 Application.ShowMainForm:=false;
1060 1057 g_oCacic := TCACIC.Create;
  1058 +
  1059 + g_oCacic.setBoolCipher(true);
  1060 +
1061 1061 //g_oCacic.showTrayIcon(false);
1062   - boolCrypt := true;
  1062 +
1063 1063  
1064 1064 Try
1065   - // De acordo com a versão do OS, determino o ShellCommand para chamadas externas.
1066   - if (g_oCacic.isWindowsNTPlataform()) then //Se NT/2K/XP... then
1067   - Begin
1068   - p_Shell_Path := HomeDrive + '\system32\'; //NT/2K/XP
1069   - p_Shell_Command := 'cmd.exe'; //NT/2K/XP
1070   - strAux := HomeDrive + '\'; //Ex.: c:\windows\
1071   - End
1072   - else
1073   - Begin
1074   - v_windir := GetEnvironmentVariable('windir');
1075   - if (trim(v_windir) <> '') then v_windir := v_windir + '\';
1076   - p_Shell_Path := v_windir;
1077   - p_Shell_Command := 'command.com';
1078   - strAux := GetEnvironmentVariable('windir') + '\'; //Ex.: c:\windows\
1079   - End;
1080   - v_SystemDrive := explode(strAux,'\');
1081   - v_cacic_dir := v_SystemDrive[0] + '\' + getValorChaveRegIni('Cacic2','cacic_dir',strAux + 'chksis.ini') + '\';
1082 1065  
1083   - // Caminho do aplicativo
1084   - if (v_cacic_dir <> '') then
1085   - g_oCacic.setCacicPath(v_cacic_dir)
1086   - else
1087   - g_oCacic.setCacicPath(ExtractFilePath(Application.Exename)) ;
  1066 + g_oCacic.setCacicPath(getValorChaveRegIni('Cacic2','cacic_dir',g_oCacic.getWinDir + 'chksis.ini')) ;
1088 1067  
1089 1068 if not DirectoryExists(g_oCacic.getCacicPath + 'Temp') then
1090 1069 begin
... ... @@ -1281,7 +1260,7 @@ begin
1281 1260 begin
1282 1261 DateTimeToString(strDataArqLocal, 'yyyymmdd', FileDateToDateTime(Fileage(g_oCacic.getCacicPath + 'cacic2.log')));
1283 1262 DateTimeToString(strDataAtual , 'yyyymmdd', Date);
1284   - if (strDataAtual <> strDataArqLocal) then // Se o arquivo INI não é da data atual...
  1263 + if (strDataAtual <> strDataArqLocal) then // Se o arquivo LOG não é da data atual...
1285 1264 begin
1286 1265 Rewrite (HistoricoLog); //Cria/Recria o arquivo
1287 1266 Append(HistoricoLog);
... ... @@ -1291,8 +1270,8 @@ begin
1291 1270 Writeln(HistoricoLog,FormatDateTime('dd/mm hh:nn:ss : ', Now)+ '[Agente Principal] '+strMsg); {Grava a string Texto no arquivo texto}
1292 1271 CloseFile(HistoricoLog); {Fecha o arquivo texto}
1293 1272 end
1294   - else CloseFile(HistoricoLog);;
1295   -
  1273 + else
  1274 + CloseFile(HistoricoLog);
1296 1275 except
1297 1276 log_diario('PROBLEMAS NA CRIAÇÃO DO ARQUIVO LOG');
1298 1277 end;
... ... @@ -1307,7 +1286,7 @@ Begin
1307 1286 Except
1308 1287 log_diario('PROBLEMAS NA FINALIZAÇÃO');
1309 1288 End;
1310   - g_oCacic.Free();
  1289 + g_oCacic.Free;
1311 1290 FreeMemory(0);
1312 1291 Application.Terminate;
1313 1292 End;
... ... @@ -1332,7 +1311,7 @@ begin
1332 1311 CipherClose;
1333 1312 log_diario('Invocando Gerente de Coletas com ação: "'+p_acao+'"');
1334 1313 Timer_Nu_Exec_Apos.Enabled := False;
1335   - WinExec(PChar(g_oCacic.getCacicPath + 'modulos\GER_COLS.EXE /'+p_acao+' /p_CipherKey='+g_oCacic.getCipherKey),SW_HIDE);
  1314 + g_oCacic.createSampleProcess(g_oCacic.getCacicPath + 'modulos\GER_COLS.EXE /'+p_acao+' /CacicPath='+g_oCacic.getCacicPath,false);
1336 1315 End
1337 1316 else
1338 1317 log_diario('Não foi possível invocar o Gerente de Coletas!');
... ... @@ -2185,15 +2164,13 @@ begin
2185 2164 if boolServerON then // Ordeno ao SrCACICsrv que auto-finalize
2186 2165 Begin
2187 2166 Log_Diario('Desativando Suporte Remoto Seguro.');
2188   - WinExec(PChar(g_oCacic.getCacicPath + 'modulos\srcacicsrv.exe -kill'),SW_HIDE);
  2167 + g_oCacic.createSampleProcess(g_oCacic.getCacicPath + 'modulos\srcacicsrv.exe -kill',false);
2189 2168 boolServerON := false;
2190 2169 End
2191 2170 else
2192 2171 Begin
2193 2172 log_DEBUG('Invocando "'+g_oCacic.getCacicPath + 'modulos\srcacicsrv.exe"...');
2194 2173 Log_Diario('Ativando Suporte Remoto Seguro.');
2195   - boolAux := boolCrypt;
2196   - boolCrypt := true;
2197 2174  
2198 2175 // Alguns cuidados necessários ao tráfego e recepção de valores pelo Gerente WEB
2199 2176 // Some cares about send and receive at Gerente WEB
... ... @@ -2236,15 +2213,13 @@ begin
2236 2213 CloseFile(fileAguarde);
2237 2214 Finally
2238 2215 End;
  2216 + g_oCacic.createSampleProcess(g_oCacic.getCacicPath + 'modulos\srcacicsrv.exe -start [' + g_oCacic.enCrypt(FormularioGeral.getValorDatMemoria('Configs.EnderecoServidor', v_tstrCipherOpened)) + ']' +
  2217 + '[' + g_oCacic.enCrypt(FormularioGeral.getValorDatMemoria('Configs.Endereco_WS' , v_tstrCipherOpened)) + ']' +
  2218 + '[' + strTeSO + ']' +
  2219 + '[' + strTeNodeAddress + ']' +
  2220 + '[' + strPalavraChave + ']' +
  2221 + '[' + g_oCacic.getCacicPath + 'Temp\' + ']',false);
2239 2222  
2240   - WinExec(PChar(g_oCacic.getCacicPath + 'modulos\srcacicsrv.exe -start [' + g_oCacic.enCrypt(FormularioGeral.getValorDatMemoria('Configs.EnderecoServidor', v_tstrCipherOpened)) + ']' +
2241   - '[' + g_oCacic.enCrypt(FormularioGeral.getValorDatMemoria('Configs.Endereco_WS' , v_tstrCipherOpened)) + ']' +
2242   - '[' + strTeSO + ']' +
2243   - '[' + strTeNodeAddress + ']' +
2244   - '[' + strPalavraChave + ']' +
2245   - '[' + g_oCacic.getCacicPath + 'Temp\aguarde_srCACIC.txt' + ']'),SW_NORMAL);
2246   -
2247   - boolCrypt := boolAux;
2248 2223 BoolServerON := true;
2249 2224 End;
2250 2225  
... ...
mapa/main_mapa.pas
... ... @@ -1467,6 +1467,8 @@ var intAux : integer;
1467 1467 Request_mapa : TStringList;
1468 1468 begin
1469 1469 g_oCacic := TCACIC.Create();
  1470 +
  1471 + g_oCacic.setBoolCipher(true);
1470 1472 frmMapaCacic.lbVersao.Caption := 'Versão: ' + frmMapaCacic.GetVersionInfo(ParamStr(0));
1471 1473 log_DEBUG('Versão do MapaCacic: '+frmMapaCacic.lbVersao.Caption);
1472 1474 if (g_oCacic.isWindowsNTPlataform()) and (not g_oCacic.isWindowsAdmin()) then
... ...