Commit 004d4bae9706fbf6edd7288f9708a10577ce453a
1 parent
0f8c3887
Exists in
master
Implementacao de controles para uso do srCACIC - Suporte Remoto, adequacoes ao f…
…uncionamento do agente principal como servico, correcoes diversas. git-svn-id: http://svn.softwarepublico.gov.br/svn/cacic/cacic/trunk/agente-windows@759 fecfc0c7-e812-0410-ae72-849f08638ee7
Showing
44 changed files
with
1773 additions
and
399 deletions
Show diff stats
CACIC_Library.pas
... | ... | @@ -47,7 +47,7 @@ unit CACIC_Library; |
47 | 47 | interface |
48 | 48 | |
49 | 49 | uses |
50 | - Windows, SysUtils, StrUtils; | |
50 | + Windows, SysUtils, StrUtils, md5; | |
51 | 51 | |
52 | 52 | type |
53 | 53 | |
... | ... | @@ -96,6 +96,7 @@ type |
96 | 96 | function isWindowsAdmin(): Boolean; |
97 | 97 | function createSampleProcess(p_cmd: string; p_wait: boolean ): boolean; |
98 | 98 | procedure showTrayIcon(p_visible:boolean); |
99 | + function GetFileHash(strFileName : String) : String; | |
99 | 100 | end; |
100 | 101 | |
101 | 102 | {*------------------------------------------------------------------------------ |
... | ... | @@ -531,6 +532,19 @@ begin |
531 | 532 | end; |
532 | 533 | |
533 | 534 | {*------------------------------------------------------------------------------ |
535 | + Para cálculo de HASH de determinado arquivo. | |
536 | + | |
537 | + @autor: Anderson Peterle | |
538 | + @param p_strFileName - Nome do arquivo para extração do HashCode | |
539 | +-------------------------------------------------------------------------------} | |
540 | +function TCACIC_Windows.GetFileHash(strFileName : String) : String; | |
541 | +Begin | |
542 | + Result := 'Arquivo "'+strFileName+'" Inexistente!'; | |
543 | + if (FileExists(strFileName)) then | |
544 | + Result := MD5Print(MD5File(strFileName)); | |
545 | +End; | |
546 | + | |
547 | +{*------------------------------------------------------------------------------ | |
534 | 548 | Mostra ou oculta o cacic na "systray" do windows |
535 | 549 | |
536 | 550 | @autor: Diversos - compilado de vários exemplos obtidos na internet | ... | ... |
cacic2.res
No preview for this file type
No preview for this file type
No preview for this file type
... | ... | @@ -0,0 +1,35 @@ |
1 | +-$A8 | |
2 | +-$B- | |
3 | +-$C+ | |
4 | +-$D+ | |
5 | +-$E- | |
6 | +-$F- | |
7 | +-$G+ | |
8 | +-$H+ | |
9 | +-$I+ | |
10 | +-$J+ | |
11 | +-$K- | |
12 | +-$L+ | |
13 | +-$M- | |
14 | +-$N+ | |
15 | +-$O+ | |
16 | +-$P+ | |
17 | +-$Q- | |
18 | +-$R- | |
19 | +-$S- | |
20 | +-$T- | |
21 | +-$U- | |
22 | +-$V+ | |
23 | +-$W- | |
24 | +-$X+ | |
25 | +-$YD | |
26 | +-$Z1 | |
27 | +-cg | |
28 | +-AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; | |
29 | +-H+ | |
30 | +-W+ | |
31 | +-M | |
32 | +-$M16384,1048576 | |
33 | +-K$00400000 | |
34 | +-LE"e:\arquivos de programas\borland\delphi7\Projects\Bpl" | |
35 | +-LN"e:\arquivos de programas\borland\delphi7\Projects\Bpl" | ... | ... |
... | ... | @@ -0,0 +1,136 @@ |
1 | +[FileVersion] | |
2 | +Version=7.0 | |
3 | +[Compiler] | |
4 | +A=8 | |
5 | +B=0 | |
6 | +C=1 | |
7 | +D=1 | |
8 | +E=0 | |
9 | +F=0 | |
10 | +G=1 | |
11 | +H=1 | |
12 | +I=1 | |
13 | +J=1 | |
14 | +K=0 | |
15 | +L=1 | |
16 | +M=0 | |
17 | +N=1 | |
18 | +O=1 | |
19 | +P=1 | |
20 | +Q=0 | |
21 | +R=0 | |
22 | +S=0 | |
23 | +T=0 | |
24 | +U=0 | |
25 | +V=1 | |
26 | +W=0 | |
27 | +X=1 | |
28 | +Y=1 | |
29 | +Z=1 | |
30 | +ShowHints=1 | |
31 | +ShowWarnings=1 | |
32 | +UnitAliases=WinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE; | |
33 | +NamespacePrefix= | |
34 | +SymbolDeprecated=1 | |
35 | +SymbolLibrary=1 | |
36 | +SymbolPlatform=1 | |
37 | +UnitLibrary=1 | |
38 | +UnitPlatform=1 | |
39 | +UnitDeprecated=1 | |
40 | +HResultCompat=1 | |
41 | +HidingMember=1 | |
42 | +HiddenVirtual=1 | |
43 | +Garbage=1 | |
44 | +BoundsError=1 | |
45 | +ZeroNilCompat=1 | |
46 | +StringConstTruncated=1 | |
47 | +ForLoopVarVarPar=1 | |
48 | +TypedConstVarPar=1 | |
49 | +AsgToTypedConst=1 | |
50 | +CaseLabelRange=1 | |
51 | +ForVariable=1 | |
52 | +ConstructingAbstract=1 | |
53 | +ComparisonFalse=1 | |
54 | +ComparisonTrue=1 | |
55 | +ComparingSignedUnsigned=1 | |
56 | +CombiningSignedUnsigned=1 | |
57 | +UnsupportedConstruct=1 | |
58 | +FileOpen=1 | |
59 | +FileOpenUnitSrc=1 | |
60 | +BadGlobalSymbol=1 | |
61 | +DuplicateConstructorDestructor=1 | |
62 | +InvalidDirective=1 | |
63 | +PackageNoLink=1 | |
64 | +PackageThreadVar=1 | |
65 | +ImplicitImport=1 | |
66 | +HPPEMITIgnored=1 | |
67 | +NoRetVal=1 | |
68 | +UseBeforeDef=1 | |
69 | +ForLoopVarUndef=1 | |
70 | +UnitNameMismatch=1 | |
71 | +NoCFGFileFound=1 | |
72 | +MessageDirective=1 | |
73 | +ImplicitVariants=1 | |
74 | +UnicodeToLocale=1 | |
75 | +LocaleToUnicode=1 | |
76 | +ImagebaseMultiple=1 | |
77 | +SuspiciousTypecast=1 | |
78 | +PrivatePropAccessor=1 | |
79 | +UnsafeType=1 | |
80 | +UnsafeCode=1 | |
81 | +UnsafeCast=1 | |
82 | +[Linker] | |
83 | +MapFile=0 | |
84 | +OutputObjs=0 | |
85 | +ConsoleApp=1 | |
86 | +DebugInfo=0 | |
87 | +RemoteSymbols=0 | |
88 | +MinStackSize=16384 | |
89 | +MaxStackSize=1048576 | |
90 | +ImageBase=4194304 | |
91 | +ExeDescription= | |
92 | +[Directories] | |
93 | +OutputDir= | |
94 | +UnitOutputDir= | |
95 | +PackageDLLOutputDir= | |
96 | +PackageDCPOutputDir= | |
97 | +SearchPath= | |
98 | +Packages=vcl;rtl;vclx;indy;inet;xmlrtl;vclie;inetdbbde;inetdbxpress;dbrtl;dsnap;dsnapcon;vcldb;soaprtl;VclSmp;dbexpress;dbxcds;inetdb;bdertl;vcldbx;webdsnap;websnap;adortl;ibxpress;teeui;teedb;tee;dss;visualclx;visualdbclx;vclactnband;vclshlctrls;IntrawebDB_50_70;Intraweb_50_70;Rave50CLX;Rave50VCL;dclOfficeXP;MSICS_D7_Rtl;PJVersion;FileSecurity;Jcl;JclVcl;JvCoreD7R;JvSystemD7R;JvStdCtrlsD7R;JvAppFrmD7R;JvBandsD7R;JvDBD7R;JvDlgsD7R;JvBDED7R;JvCmpD7R;JvCryptD7R;JvCtrlsD7R;JvCustomD7R;JvDockingD7R;JvDotNetCtrlsD7R;JvEDID7R;JvGlobusD7R;JvHMID7R;JvInterpreterD7R;JvJansD7R;JvManagedThreadsD7R;JvMMD7R;JvNetD7R;JvPageCompsD7R;JvPluginD7R;JvPrintPreviewD7R;JvRuntimeDesignD7R;JvTimeFrameworkD7R;JvValidatorsD7R;JvWizardD7R;JvXPCtrlsD7R | |
99 | +Conditionals= | |
100 | +DebugSourceDirs= | |
101 | +UsePackages=0 | |
102 | +[Parameters] | |
103 | +RunParams= | |
104 | +HostApplication= | |
105 | +Launcher= | |
106 | +UseLauncher=0 | |
107 | +DebugCWD= | |
108 | +[Language] | |
109 | +ActiveLang= | |
110 | +ProjectLang= | |
111 | +RootDir=E:\NTService\ | |
112 | +[Version Info] | |
113 | +IncludeVerInfo=1 | |
114 | +AutoIncBuild=0 | |
115 | +MajorVer=2 | |
116 | +MinorVer=4 | |
117 | +Release=0 | |
118 | +Build=758 | |
119 | +Debug=0 | |
120 | +PreRelease=0 | |
121 | +Special=0 | |
122 | +Private=0 | |
123 | +DLL=0 | |
124 | +Locale=11274 | |
125 | +CodePage=1252 | |
126 | +[Version Info Keys] | |
127 | +CompanyName=Dataprev - Empresa de TI da Prev Social | |
128 | +FileDescription=CACICservice - Módulo Serviço para Sustentação do Agente Principal | |
129 | +FileVersion=2.4.0.758 | |
130 | +InternalName= | |
131 | +LegalCopyright= | |
132 | +LegalTrademarks= | |
133 | +OriginalFilename= | |
134 | +ProductName= | |
135 | +ProductVersion=2.4.0.758 | |
136 | +Comments= | ... | ... |
... | ... | @@ -0,0 +1,29 @@ |
1 | +(** | |
2 | +--------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
3 | +Copyright 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Dataprev - Empresa de Tecnologia e Informações da Previdência Social, Brasil | |
4 | + | |
5 | +Este arquivo é parte do programa CACIC - Configurador Automático e Coletor de Informações Computacionais | |
6 | + | |
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 | +publicada pela Fundação do Software Livre (FSF); na versão 2 da Licença, ou (na sua opinião) qualquer versão. | |
9 | + | |
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 | +MERCADO ou APLICAÇÃO EM PARTICULAR. Veja a Licença Pública Geral GNU para maiores detalhes. | |
12 | + | |
13 | +Você deve ter recebido uma cópia da Licença Pública Geral GNU, sob o título "LICENCA.txt", junto com este programa, se não, escreva para a Fundação do Software | |
14 | +Livre(FSF) Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA | |
15 | +--------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
16 | +*) | |
17 | +program CACICsvc; | |
18 | + | |
19 | +uses | |
20 | + SvcMgr, | |
21 | + CACICsvcMain in 'CACICsvcMain.pas' {CACICservice: TService}; | |
22 | + | |
23 | +{$R *.RES} | |
24 | + | |
25 | +begin | |
26 | + Application.Initialize; | |
27 | + Application.CreateForm(TCACICservice, CACICservice); | |
28 | + Application.Run; | |
29 | +end. | ... | ... |
No preview for this file type
No preview for this file type
... | ... | @@ -0,0 +1,29 @@ |
1 | +(** | |
2 | +--------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
3 | +Copyright 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Dataprev - Empresa de Tecnologia e Informações da Previdência Social, Brasil | |
4 | + | |
5 | +Este arquivo é parte do programa CACIC - Configurador Automático e Coletor de Informações Computacionais | |
6 | + | |
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 | +publicada pela Fundação do Software Livre (FSF); na versão 2 da Licença, ou (na sua opinião) qualquer versão. | |
9 | + | |
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 | +MERCADO ou APLICAÇÃO EM PARTICULAR. Veja a Licença Pública Geral GNU para maiores detalhes. | |
12 | + | |
13 | +Você deve ter recebido uma cópia da Licença Pública Geral GNU, sob o título "LICENCA.txt", junto com este programa, se não, escreva para a Fundação do Software | |
14 | +Livre(FSF) Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA | |
15 | +--------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
16 | +*) | |
17 | +program CACICsvc; | |
18 | + | |
19 | +uses | |
20 | + SvcMgr, | |
21 | + CACICsvcMain in 'CACICsvcMain.pas' {CACICservice: TService}; | |
22 | + | |
23 | +{$R *.RES} | |
24 | + | |
25 | +begin | |
26 | + Application.Initialize; | |
27 | + Application.CreateForm(TCACICservice, CACICservice); | |
28 | + Application.Run; | |
29 | +end. | ... | ... |
No preview for this file type
No preview for this file type
... | ... | @@ -0,0 +1,20 @@ |
1 | +object CACICservice: TCACICservice | |
2 | + OldCreateOrder = False | |
3 | + DisplayName = 'CACICservice' | |
4 | + Interactive = True | |
5 | + AfterInstall = ServiceAfterInstall | |
6 | + OnExecute = ServiceExecute | |
7 | + OnStart = ServiceStart | |
8 | + OnStop = ServiceStop | |
9 | + Left = 192 | |
10 | + Top = 107 | |
11 | + Height = 375 | |
12 | + Width = 544 | |
13 | + object Timer_CHKsis: TTimer | |
14 | + Enabled = False | |
15 | + Interval = 60000 | |
16 | + OnTimer = Timer_CHKsisTimer | |
17 | + Left = 464 | |
18 | + Top = 16 | |
19 | + end | |
20 | +end | ... | ... |
... | ... | @@ -0,0 +1,239 @@ |
1 | +(** | |
2 | +--------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
3 | +Copyright 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Dataprev - Empresa de Tecnologia e Informações da Previdência Social, Brasil | |
4 | + | |
5 | +Este arquivo é parte do programa CACIC - Configurador Automático e Coletor de Informações Computacionais | |
6 | + | |
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 | +publicada pela Fundação do Software Livre (FSF); na versão 2 da Licença, ou (na sua opinião) qualquer versão. | |
9 | + | |
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 | +MERCADO ou APLICAÇÃO EM PARTICULAR. Veja a Licença Pública Geral GNU para maiores detalhes. | |
12 | + | |
13 | +Você deve ter recebido uma cópia da Licença Pública Geral GNU, sob o título "LICENCA.txt", junto com este programa, se não, escreva para a Fundação do Software | |
14 | +Livre(FSF) Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA | |
15 | +--------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
16 | +*) | |
17 | +unit CACICsvcMain; | |
18 | + | |
19 | +interface | |
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; | |
32 | + | |
33 | +type | |
34 | + TCACICservice = class(TService) | |
35 | + Timer_CHKsis: TTimer; | |
36 | + procedure ServiceExecute(Sender: TService); | |
37 | + procedure ServiceStart(Sender: TService; var Started: Boolean); | |
38 | + procedure ServiceAfterInstall(Sender: TService); | |
39 | + procedure Timer_CHKsisTimer(Sender: TObject); | |
40 | + procedure ServiceStop(Sender: TService; var Stopped: Boolean); | |
41 | + private | |
42 | + | |
43 | + { Internal Start & Stop methods } | |
44 | + function HomeDrive : string; | |
45 | + function GetValorChaveRegIni(p_Secao, p_Chave, p_File : String): String; | |
46 | + function GetAppPath: String; | |
47 | + procedure doSaveLog(Msg : String); | |
48 | + Procedure WMEndSession(var Msg : TWMEndSession) ; message WM_ENDSESSION; | |
49 | + procedure ExecutaCACIC; | |
50 | + public | |
51 | + { Public declarations } | |
52 | + | |
53 | + function GetServiceController: TServiceController; override; | |
54 | + end; | |
55 | + | |
56 | +var | |
57 | + CACICservice: TCACICservice; | |
58 | + | |
59 | +implementation | |
60 | + | |
61 | +{$R *.DFM} | |
62 | +procedure TCACICservice.WMEndSession(var Msg : TWMEndSession) ; | |
63 | +begin | |
64 | + if Msg.EndSession = TRUE then | |
65 | + doSaveLog('Windows finalizado em ' + FormatDateTime('c', Now)) ; | |
66 | + inherited; | |
67 | + Application.Free; | |
68 | +end; | |
69 | +// Funções Auxiliares | |
70 | +function TCACICservice.GetValorChaveRegIni(p_Secao, p_Chave, p_File : String): String; | |
71 | +//Para buscar do Arquivo INI... | |
72 | +// Marreta devido a limitações do KERNEL w9x no tratamento de arquivos texto e suas seções | |
73 | +//function GetValorChaveRegIni(p_SectionName, p_KeyName, p_IniFileName : String) : String; | |
74 | +var | |
75 | + FileText : TStringList; | |
76 | + i, j, v_Size_Section, v_Size_Key : integer; | |
77 | + v_SectionName, v_KeyName : string; | |
78 | + begin | |
79 | +//doSaveLog('GetVCRini: Secao: '+p_Secao+' Chave: '+p_Chave+' File: '+p_File); | |
80 | + Result := ''; | |
81 | + v_SectionName := '[' + p_Secao + ']'; | |
82 | + v_Size_Section := strLen(PChar(v_SectionName)); | |
83 | + v_KeyName := p_Chave + '='; | |
84 | + v_Size_Key := strLen(PChar(v_KeyName)); | |
85 | + FileText := TStringList.Create; | |
86 | + try | |
87 | + FileText.LoadFromFile(p_File); | |
88 | + For i := 0 To FileText.Count - 1 Do | |
89 | + Begin | |
90 | + if (LowerCase(Trim(PChar(Copy(FileText[i],1,v_Size_Section)))) = LowerCase(Trim(PChar(v_SectionName)))) then | |
91 | + Begin | |
92 | + For j := i to FileText.Count - 1 Do | |
93 | + Begin | |
94 | + if (LowerCase(Trim(PChar(Copy(FileText[j],1,v_Size_Key)))) = LowerCase(Trim(PChar(v_KeyName)))) then | |
95 | + Begin | |
96 | + Result := PChar(Copy(FileText[j],v_Size_Key + 1,strLen(PChar(FileText[j]))-v_Size_Key)); | |
97 | + Break; | |
98 | + End; | |
99 | + End; | |
100 | + End; | |
101 | + if (Result <> '') then break; | |
102 | + End; | |
103 | + finally | |
104 | + FileText.Free; | |
105 | + end; | |
106 | + end; | |
107 | + | |
108 | +function TCACICservice.GetAppPath: String; | |
109 | +Var | |
110 | + Test : String; | |
111 | + Res : Longint; | |
112 | + CurSize : Longint; | |
113 | +begin | |
114 | + CurSize := 1024; | |
115 | + SetLength(Test, CurSize); | |
116 | + Res := GetModuleFilename(GetModuleHandle(nil), PChar(test), CurSize); | |
117 | + If (res > curSize) then | |
118 | + begin | |
119 | + CurSize := res + 10; | |
120 | + SetLength(Test, CurSize); | |
121 | + Res := GetModuleFilename(GetModuleHandle(nil), PChar(test), CurSize); | |
122 | + end; | |
123 | + Setlength(Test, Res); | |
124 | + test := ExtractFileDir(Test); | |
125 | + if (test[Length(test)] = '\') or (test[Length(test)]='/') then | |
126 | + SetLength(Test, Length(test) - 1); | |
127 | + Result := test; | |
128 | +end; | |
129 | + | |
130 | +function TCACICservice.HomeDrive : string; | |
131 | +var WinDir : array [0..144] of char; | |
132 | +begin | |
133 | + GetWindowsDirectory (WinDir, 144); | |
134 | + Result := StrPas (WinDir); | |
135 | +end; | |
136 | + | |
137 | +procedure TCACICservice.doSaveLog(Msg : String); | |
138 | +var fLog: textfile; | |
139 | +begin | |
140 | + AssignFile(fLog, HomeDrive + '\CACICsvc.log'); | |
141 | + if FileExists(HomeDrive + '\CACICsvc.log') then | |
142 | + Append(fLog) | |
143 | + else | |
144 | + Rewrite(fLog); | |
145 | + Writeln(fLog,FormatDateTime('dd/mm hh:nn:ss ', Now) + '[CACICsvc] : ' +msg); | |
146 | + CloseFile(fLog); | |
147 | +End; | |
148 | + | |
149 | +procedure ServiceController(CtrlCode: DWord); stdcall; | |
150 | +begin | |
151 | + CACICservice.Controller(CtrlCode); | |
152 | +end; | |
153 | + | |
154 | +function TCACICservice.GetServiceController: TServiceController; | |
155 | +begin | |
156 | + Result := ServiceController; | |
157 | +end; | |
158 | + | |
159 | +procedure TCACICservice.ServiceExecute(Sender: TService); | |
160 | +begin | |
161 | + doSaveLog('TCACICservice.ServiceExecute'); | |
162 | + | |
163 | + { Loop while service is active in SCM } | |
164 | + While NOT Terminated do | |
165 | + Begin | |
166 | + { Process Service Requests } | |
167 | + ServiceThread.ProcessRequests( False ); | |
168 | + { Allow system some time } | |
169 | + Sleep(1); | |
170 | + End; | |
171 | +end; | |
172 | + | |
173 | +procedure TCACICservice.ServiceStart(Sender: TService; var Started: Boolean); | |
174 | +begin | |
175 | + | |
176 | + Started := true; | |
177 | + | |
178 | + ExecutaCACIC; | |
179 | + | |
180 | + Timer_CHKsis.Interval := 60000; | |
181 | + Timer_CHKsis.Enabled := true; | |
182 | + | |
183 | + While not Terminated do | |
184 | + Sleep(250); | |
185 | + | |
186 | + | |
187 | +end; | |
188 | + | |
189 | +procedure TCACICservice.ExecutaCACIC; | |
190 | +Begin | |
191 | + | |
192 | + strHomeDrive := MidStr(HomeDrive,1,3); //x:\ | |
193 | + strCacicDir := strHomeDrive + GetValorChaveRegIni('Cacic2', 'cacic_dir', GetAppPath + '\chksis.ini'); | |
194 | + | |
195 | + DeleteFile(strCacicDir + '\aguarde_CACIC.txt'); | |
196 | + Sleep(3000); | |
197 | + | |
198 | + // Se o arquivo indicador de execução não existir... | |
199 | + if not (FileExists(strCacicDir + '\aguarde_CACIC.txt')) then | |
200 | + Begin | |
201 | + // Executo o CHKsis, verificando a estrutura do sistema | |
202 | + Try | |
203 | + WinEXEC(PChar(HomeDrive + '\chksis.exe'),sw_HIDE); | |
204 | + Except | |
205 | + End; | |
206 | + | |
207 | + While not (FileExists(strCacicDir + '\cacic2.exe')) do | |
208 | + Sleep(5000); // Espero 5 segundos... | |
209 | + End; | |
210 | + | |
211 | + | |
212 | + // Executo o Agente Principal do CACIC | |
213 | + Try | |
214 | + WinEXEC(PChar(strCacicDir + '\cacic2.exe'),sw_hide); | |
215 | + Except | |
216 | + End; | |
217 | +End; | |
218 | + | |
219 | +procedure TCACICservice.ServiceAfterInstall(Sender: TService); | |
220 | + | |
221 | +begin | |
222 | + ServiceStart(nil,boolStarted); | |
223 | +end; | |
224 | + | |
225 | +procedure TCACICservice.Timer_CHKsisTimer(Sender: TObject); | |
226 | +begin | |
227 | + ExecutaCACIC; | |
228 | + | |
229 | + // Verificações diversas | |
230 | + | |
231 | +end; | |
232 | + | |
233 | +procedure TCACICservice.ServiceStop(Sender: TService; | |
234 | + var Stopped: Boolean); | |
235 | +begin | |
236 | + Stopped := true; | |
237 | +end; | |
238 | + | |
239 | +end. | ... | ... |
No preview for this file type
... | ... | @@ -0,0 +1,20 @@ |
1 | +object CACICservice: TCACICservice | |
2 | + OldCreateOrder = False | |
3 | + DisplayName = 'CACICservice' | |
4 | + Interactive = True | |
5 | + AfterInstall = ServiceAfterInstall | |
6 | + OnExecute = ServiceExecute | |
7 | + OnStart = ServiceStart | |
8 | + OnStop = ServiceStop | |
9 | + Left = 192 | |
10 | + Top = 107 | |
11 | + Height = 375 | |
12 | + Width = 544 | |
13 | + object Timer_CHKsis: TTimer | |
14 | + Enabled = False | |
15 | + Interval = 60000 | |
16 | + OnTimer = Timer_CHKsisTimer | |
17 | + Left = 464 | |
18 | + Top = 16 | |
19 | + end | |
20 | +end | ... | ... |
... | ... | @@ -0,0 +1,234 @@ |
1 | +(** | |
2 | +--------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
3 | +Copyright 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009 Dataprev - Empresa de Tecnologia e Informações da Previdência Social, Brasil | |
4 | + | |
5 | +Este arquivo é parte do programa CACIC - Configurador Automático e Coletor de Informações Computacionais | |
6 | + | |
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 | +publicada pela Fundação do Software Livre (FSF); na versão 2 da Licença, ou (na sua opinião) qualquer versão. | |
9 | + | |
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 | +MERCADO ou APLICAÇÃO EM PARTICULAR. Veja a Licença Pública Geral GNU para maiores detalhes. | |
12 | + | |
13 | +Você deve ter recebido uma cópia da Licença Pública Geral GNU, sob o título "LICENCA.txt", junto com este programa, se não, escreva para a Fundação do Software | |
14 | +Livre(FSF) Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA | |
15 | +--------------------------------------------------------------------------------------------------------------------------------------------------------------- | |
16 | +*) | |
17 | +unit CACICsvcMain; | |
18 | + | |
19 | +interface | |
20 | + | |
21 | +uses | |
22 | + Windows, Messages, SysUtils, Classes, SvcMgr,strutils, ExtCtrls; | |
23 | + | |
24 | +var strHomeDrive, | |
25 | + strCacicDir : String; | |
26 | + boolStarted : boolean; | |
27 | + | |
28 | +type | |
29 | + TCACICservice = class(TService) | |
30 | + Timer_CHKsis: TTimer; | |
31 | + procedure ServiceExecute(Sender: TService); | |
32 | + procedure ServiceStart(Sender: TService; var Started: Boolean); | |
33 | + procedure ServiceAfterInstall(Sender: TService); | |
34 | + procedure Timer_CHKsisTimer(Sender: TObject); | |
35 | + procedure ServiceStop(Sender: TService; var Stopped: Boolean); | |
36 | + private | |
37 | + | |
38 | + { Internal Start & Stop methods } | |
39 | + function HomeDrive : string; | |
40 | + function GetValorChaveRegIni(p_Secao, p_Chave, p_File : String): String; | |
41 | + function GetAppPath: String; | |
42 | + procedure doSaveLog(Msg : String); | |
43 | + Procedure WMEndSession(var Msg : TWMEndSession) ; message WM_ENDSESSION; | |
44 | + procedure ExecutaCACIC; | |
45 | + public | |
46 | + { Public declarations } | |
47 | + | |
48 | + function GetServiceController: TServiceController; override; | |
49 | + end; | |
50 | + | |
51 | +var | |
52 | + CACICservice: TCACICservice; | |
53 | + | |
54 | +implementation | |
55 | + | |
56 | +{$R *.DFM} | |
57 | +procedure TCACICservice.WMEndSession(var Msg : TWMEndSession) ; | |
58 | +begin | |
59 | + if Msg.EndSession = TRUE then | |
60 | + doSaveLog('Windows finalizado em ' + FormatDateTime('c', Now)) ; | |
61 | + inherited; | |
62 | + Application.Free; | |
63 | +end; | |
64 | +// Funções Auxiliares | |
65 | +function TCACICservice.GetValorChaveRegIni(p_Secao, p_Chave, p_File : String): String; | |
66 | +//Para buscar do Arquivo INI... | |
67 | +// Marreta devido a limitações do KERNEL w9x no tratamento de arquivos texto e suas seções | |
68 | +//function GetValorChaveRegIni(p_SectionName, p_KeyName, p_IniFileName : String) : String; | |
69 | +var | |
70 | + FileText : TStringList; | |
71 | + i, j, v_Size_Section, v_Size_Key : integer; | |
72 | + v_SectionName, v_KeyName : string; | |
73 | + begin | |
74 | +//doSaveLog('GetVCRini: Secao: '+p_Secao+' Chave: '+p_Chave+' File: '+p_File); | |
75 | + Result := ''; | |
76 | + v_SectionName := '[' + p_Secao + ']'; | |
77 | + v_Size_Section := strLen(PChar(v_SectionName)); | |
78 | + v_KeyName := p_Chave + '='; | |
79 | + v_Size_Key := strLen(PChar(v_KeyName)); | |
80 | + FileText := TStringList.Create; | |
81 | + try | |
82 | + FileText.LoadFromFile(p_File); | |
83 | + For i := 0 To FileText.Count - 1 Do | |
84 | + Begin | |
85 | + if (LowerCase(Trim(PChar(Copy(FileText[i],1,v_Size_Section)))) = LowerCase(Trim(PChar(v_SectionName)))) then | |
86 | + Begin | |
87 | + For j := i to FileText.Count - 1 Do | |
88 | + Begin | |
89 | + if (LowerCase(Trim(PChar(Copy(FileText[j],1,v_Size_Key)))) = LowerCase(Trim(PChar(v_KeyName)))) then | |
90 | + Begin | |
91 | + Result := PChar(Copy(FileText[j],v_Size_Key + 1,strLen(PChar(FileText[j]))-v_Size_Key)); | |
92 | + Break; | |
93 | + End; | |
94 | + End; | |
95 | + End; | |
96 | + if (Result <> '') then break; | |
97 | + End; | |
98 | + finally | |
99 | + FileText.Free; | |
100 | + end; | |
101 | + end; | |
102 | + | |
103 | +function TCACICservice.GetAppPath: String; | |
104 | +Var | |
105 | + Test : String; | |
106 | + Res : Longint; | |
107 | + CurSize : Longint; | |
108 | +begin | |
109 | + CurSize := 1024; | |
110 | + SetLength(Test, CurSize); | |
111 | + Res := GetModuleFilename(GetModuleHandle(nil), PChar(test), CurSize); | |
112 | + If (res > curSize) then | |
113 | + begin | |
114 | + CurSize := res + 10; | |
115 | + SetLength(Test, CurSize); | |
116 | + Res := GetModuleFilename(GetModuleHandle(nil), PChar(test), CurSize); | |
117 | + end; | |
118 | + Setlength(Test, Res); | |
119 | + test := ExtractFileDir(Test); | |
120 | + if (test[Length(test)] = '\') or (test[Length(test)]='/') then | |
121 | + SetLength(Test, Length(test) - 1); | |
122 | + Result := test; | |
123 | +end; | |
124 | + | |
125 | +function TCACICservice.HomeDrive : string; | |
126 | +var WinDir : array [0..144] of char; | |
127 | +begin | |
128 | + GetWindowsDirectory (WinDir, 144); | |
129 | + Result := StrPas (WinDir); | |
130 | +end; | |
131 | + | |
132 | +procedure TCACICservice.doSaveLog(Msg : String); | |
133 | +var fLog: textfile; | |
134 | +begin | |
135 | + AssignFile(fLog, HomeDrive + '\CACICsvc.log'); | |
136 | + if FileExists(HomeDrive + '\CACICsvc.log') then | |
137 | + Append(fLog) | |
138 | + else | |
139 | + Rewrite(fLog); | |
140 | + Writeln(fLog,FormatDateTime('dd/mm hh:nn:ss ', Now) + '[CACICsvc] : ' +msg); | |
141 | + CloseFile(fLog); | |
142 | +End; | |
143 | + | |
144 | +procedure ServiceController(CtrlCode: DWord); stdcall; | |
145 | +begin | |
146 | + CACICservice.Controller(CtrlCode); | |
147 | +end; | |
148 | + | |
149 | +function TCACICservice.GetServiceController: TServiceController; | |
150 | +begin | |
151 | + Result := ServiceController; | |
152 | +end; | |
153 | + | |
154 | +procedure TCACICservice.ServiceExecute(Sender: TService); | |
155 | +begin | |
156 | + doSaveLog('TCACICservice.ServiceExecute'); | |
157 | + | |
158 | + { Loop while service is active in SCM } | |
159 | + While NOT Terminated do | |
160 | + Begin | |
161 | + { Process Service Requests } | |
162 | + ServiceThread.ProcessRequests( False ); | |
163 | + { Allow system some time } | |
164 | + Sleep(1); | |
165 | + End; | |
166 | +end; | |
167 | + | |
168 | +procedure TCACICservice.ServiceStart(Sender: TService; var Started: Boolean); | |
169 | +begin | |
170 | + | |
171 | + Started := true; | |
172 | + | |
173 | + ExecutaCACIC; | |
174 | + | |
175 | + Timer_CHKsis.Interval := 60000; | |
176 | + Timer_CHKsis.Enabled := true; | |
177 | + | |
178 | + While not Terminated do | |
179 | + Sleep(250); | |
180 | + | |
181 | + | |
182 | +end; | |
183 | + | |
184 | +procedure TCACICservice.ExecutaCACIC; | |
185 | +Begin | |
186 | + | |
187 | + strHomeDrive := MidStr(HomeDrive,1,3); //x:\ | |
188 | + strCacicDir := strHomeDrive + GetValorChaveRegIni('Cacic2', 'cacic_dir', GetAppPath + '\chksis.ini'); | |
189 | + | |
190 | + DeleteFile(strCacicDir + '\aguarde_CACIC.txt'); | |
191 | + Sleep(3000); | |
192 | + | |
193 | + // Se o arquivo indicador de execução não existir... | |
194 | + if not (FileExists(strCacicDir + '\aguarde_CACIC.txt')) then | |
195 | + Begin | |
196 | + // Executo o CHKsis, verificando a estrutura do sistema | |
197 | + Try | |
198 | + WinEXEC(PChar(HomeDrive + '\chksis.exe'),sw_HIDE); | |
199 | + Except | |
200 | + End; | |
201 | + | |
202 | + While not (FileExists(strCacicDir + '\cacic2.exe')) do | |
203 | + Sleep(5000); // Espero 5 segundos... | |
204 | + End; | |
205 | + | |
206 | + | |
207 | + // Executo o Agente Principal do CACIC | |
208 | + Try | |
209 | + WinEXEC(PChar(strCacicDir + '\cacic2.exe'),sw_hide); | |
210 | + Except | |
211 | + End; | |
212 | +End; | |
213 | + | |
214 | +procedure TCACICservice.ServiceAfterInstall(Sender: TService); | |
215 | + | |
216 | +begin | |
217 | + ServiceStart(nil,boolStarted); | |
218 | +end; | |
219 | + | |
220 | +procedure TCACICservice.Timer_CHKsisTimer(Sender: TObject); | |
221 | +begin | |
222 | + ExecutaCACIC; | |
223 | + | |
224 | + // Verificações diversas | |
225 | + | |
226 | +end; | |
227 | + | |
228 | +procedure TCACICservice.ServiceStop(Sender: TService; | |
229 | + var Stopped: Boolean); | |
230 | +begin | |
231 | + Stopped := true; | |
232 | +end; | |
233 | + | |
234 | +end. | ... | ... |
No preview for this file type
... | ... | @@ -0,0 +1,66 @@ |
1 | +(* | |
2 | + A Windows NT Service Thread | |
3 | + =========================== | |
4 | + | |
5 | + Author Kim Sandell | |
6 | + Email: kim.sandell@nsftele.com | |
7 | +*) | |
8 | +unit CACICsvcThread; | |
9 | + | |
10 | +interface | |
11 | + | |
12 | +uses | |
13 | + Windows, Messages, SysUtils, Classes; | |
14 | + | |
15 | + | |
16 | +type | |
17 | + TNTServiceThread = Class(TThread) | |
18 | + private | |
19 | + { Private declarations } | |
20 | + Public | |
21 | + { Public declarations } | |
22 | + Interval : Integer; | |
23 | + | |
24 | + Procedure Execute; Override; | |
25 | + Published | |
26 | + { Published declarations } | |
27 | + End; | |
28 | + | |
29 | +implementation | |
30 | + | |
31 | +{ TNTServiceThread } | |
32 | + | |
33 | +procedure TNTServiceThread.Execute; | |
34 | +var TimeOut : integer; | |
35 | +begin | |
36 | + // Do NOT free on termination - The Serivce frees the Thread | |
37 | + FreeOnTerminate := False; | |
38 | + | |
39 | + // Set Interval | |
40 | + TimeOut := Interval * 4; | |
41 | + | |
42 | + // Main Loop | |
43 | + Try | |
44 | + While Not Terminated do | |
45 | + Begin | |
46 | + // Decrement timeout | |
47 | + Dec( TimeOut ); | |
48 | + | |
49 | + If (TimeOut=0) then | |
50 | + Begin | |
51 | + // Reset timer | |
52 | + TimeOut := Interval * 4; | |
53 | + | |
54 | + End; | |
55 | + // Wait 1/4th of a second | |
56 | + Sleep(250); | |
57 | + End; | |
58 | + Except | |
59 | + On E:Exception do ; // TODO: Exception logging... | |
60 | + End; | |
61 | + // Terminate the Thread - This signals Terminated=True | |
62 | + Terminate; | |
63 | + | |
64 | +end; | |
65 | + | |
66 | +end. | ... | ... |
... | ... | @@ -0,0 +1,202 @@ |
1 | +(* | |
2 | + A Windows NT Service Thread | |
3 | + =========================== | |
4 | + | |
5 | + Author Kim Sandell | |
6 | + Email: kim.sandell@nsftele.com | |
7 | +*) | |
8 | +unit CACICsvcThread; | |
9 | + | |
10 | +interface | |
11 | + | |
12 | +uses | |
13 | + Windows, Messages, SysUtils, Classes, StrUtils; | |
14 | + | |
15 | +var strHomeDrive, | |
16 | + strCacicDir : String; | |
17 | + | |
18 | +type | |
19 | + TNTServiceThread = Class(TThread) | |
20 | + private | |
21 | + { Private declarations } | |
22 | + function HomeDrive : string; | |
23 | + function GetValorChaveRegIni(p_Secao, p_Chave, p_File : String): String; | |
24 | + function GetAppPath: String; | |
25 | + procedure doSaveLog(Msg : String); | |
26 | + function CreateProcessSimple(sExecutableFilePath : string ) : String; | |
27 | + Public | |
28 | + { Public declarations } | |
29 | + Interval : Integer; | |
30 | + | |
31 | + Procedure Execute; Override; | |
32 | + Published | |
33 | + { Published declarations } | |
34 | + End; | |
35 | + | |
36 | +implementation | |
37 | + | |
38 | +{ TNTServiceThread } | |
39 | +// Funções Auxiliares | |
40 | +function TNTServiceThread.GetValorChaveRegIni(p_Secao, p_Chave, p_File : String): String; | |
41 | +//Para buscar do Arquivo INI... | |
42 | +// Marreta devido a limitações do KERNEL w9x no tratamento de arquivos texto e suas seções | |
43 | +//function GetValorChaveRegIni(p_SectionName, p_KeyName, p_IniFileName : String) : String; | |
44 | +var | |
45 | + FileText : TStringList; | |
46 | + i, j, v_Size_Section, v_Size_Key : integer; | |
47 | + v_SectionName, v_KeyName : string; | |
48 | + begin | |
49 | +//doSaveLog('GetVCRini: Secao: '+p_Secao+' Chave: '+p_Chave+' File: '+p_File); | |
50 | + Result := ''; | |
51 | + v_SectionName := '[' + p_Secao + ']'; | |
52 | + v_Size_Section := strLen(PChar(v_SectionName)); | |
53 | + v_KeyName := p_Chave + '='; | |
54 | + v_Size_Key := strLen(PChar(v_KeyName)); | |
55 | + FileText := TStringList.Create; | |
56 | + try | |
57 | + FileText.LoadFromFile(p_File); | |
58 | + For i := 0 To FileText.Count - 1 Do | |
59 | + Begin | |
60 | + if (LowerCase(Trim(PChar(Copy(FileText[i],1,v_Size_Section)))) = LowerCase(Trim(PChar(v_SectionName)))) then | |
61 | + Begin | |
62 | + For j := i to FileText.Count - 1 Do | |
63 | + Begin | |
64 | + if (LowerCase(Trim(PChar(Copy(FileText[j],1,v_Size_Key)))) = LowerCase(Trim(PChar(v_KeyName)))) then | |
65 | + Begin | |
66 | + Result := PChar(Copy(FileText[j],v_Size_Key + 1,strLen(PChar(FileText[j]))-v_Size_Key)); | |
67 | + Break; | |
68 | + End; | |
69 | + End; | |
70 | + End; | |
71 | + if (Result <> '') then break; | |
72 | + End; | |
73 | + finally | |
74 | + FileText.Free; | |
75 | + end; | |
76 | + end; | |
77 | + | |
78 | +function TNTServiceThread.GetAppPath: String; | |
79 | +Var | |
80 | + Test : String; | |
81 | + Res : Longint; | |
82 | + CurSize : Longint; | |
83 | +begin | |
84 | + CurSize := 1024; | |
85 | + SetLength(Test, CurSize); | |
86 | + Res := GetModuleFilename(GetModuleHandle(nil), PChar(test), CurSize); | |
87 | + If (res > curSize) then | |
88 | + begin | |
89 | + CurSize := res + 10; | |
90 | + SetLength(Test, CurSize); | |
91 | + Res := GetModuleFilename(GetModuleHandle(nil), PChar(test), CurSize); | |
92 | + end; | |
93 | + Setlength(Test, Res); | |
94 | + test := ExtractFileDir(Test); | |
95 | + if (test[Length(test)] = '\') or (test[Length(test)]='/') then | |
96 | + SetLength(Test, Length(test) - 1); | |
97 | + Result := test; | |
98 | +end; | |
99 | + | |
100 | +function TNTServiceThread.HomeDrive : string; | |
101 | +var WinDir : array [0..144] of char; | |
102 | +begin | |
103 | + GetWindowsDirectory (WinDir, 144); | |
104 | + Result := StrPas (WinDir); | |
105 | +end; | |
106 | + | |
107 | +procedure TNTServiceThread.doSaveLog(Msg : String); | |
108 | +var fLog: textfile; | |
109 | +begin | |
110 | + AssignFile(fLog, strHomeDrive + 'CACICsvc.log'); | |
111 | + if FileExists(strHomeDrive + 'CACICsvc.log') then | |
112 | + Append(fLog) | |
113 | + else | |
114 | + Rewrite(fLog); | |
115 | + Writeln(fLog,FormatDateTime('dd/mm hh:nn:ss ', Now) + '[CACICsvc] : ' +msg); | |
116 | + CloseFile(fLog); | |
117 | +End; | |
118 | + | |
119 | +function TNTServiceThread.CreateProcessSimple(sExecutableFilePath : string ) : string; | |
120 | +var | |
121 | + pi: TProcessInformation; | |
122 | + si: TStartupInfo; | |
123 | +begin | |
124 | + FillMemory( @si, sizeof( si ), 0 ); | |
125 | + si.cb := sizeof( si ); | |
126 | + | |
127 | + CreateProcess( | |
128 | + Nil, | |
129 | + PChar( sExecutableFilePath ), | |
130 | + Nil, Nil, False, | |
131 | + NORMAL_PRIORITY_CLASS, Nil, Nil, | |
132 | + si, pi ); | |
133 | + | |
134 | + // "after calling code" such as | |
135 | + // the code to wait until the | |
136 | + // process is done should go here | |
137 | + | |
138 | + CloseHandle( pi.hProcess ); | |
139 | + CloseHandle( pi.hThread ); | |
140 | +end; | |
141 | + | |
142 | +procedure TNTServiceThread.Execute; | |
143 | +begin | |
144 | + strHomeDrive := MidStr(HomeDrive,1,3); //x:\ | |
145 | + doSaveLog('strHomeDrive: '+strHomeDrive); | |
146 | + | |
147 | + strCacicDir := strHomeDrive + GetValorChaveRegIni('Cacic2', 'cacic_dir', GetAppPath + '\chksis.ini'); | |
148 | + doSaveLog('strCacicDir: '+strCacicDir); | |
149 | + | |
150 | + // Executo o CHKsis, verificando a estrutura do sistema | |
151 | + Try | |
152 | + CreateProcessSimple(PChar(HomeDrive + '\chksis.exe')); | |
153 | + Except | |
154 | + End; | |
155 | + | |
156 | + While not (FileExists(strCacicDir + '\cacic2.exe')) do | |
157 | + Sleep(5000); // Espero 5 segundos... | |
158 | + | |
159 | + // Executo o Agente Principal do CACIC | |
160 | + Try | |
161 | + doSaveLog('Executarei "'+strCacicDir + '\cacic2.exe"'); | |
162 | + CreateProcessSimple(PChar(strCacicDir + '\cacic2.exe')); | |
163 | + Except | |
164 | + End; | |
165 | + | |
166 | + While not Terminated do | |
167 | + Sleep(250); | |
168 | + | |
169 | + { | |
170 | + // Do NOT free on termination - The Serivce frees the Thread | |
171 | + FreeOnTerminate := False; | |
172 | + | |
173 | + // Set Interval | |
174 | + TimeOut := Interval * 4; | |
175 | + | |
176 | + // Main Loop | |
177 | + Try | |
178 | + While Not Terminated do | |
179 | + Begin | |
180 | + // Decrement timeout | |
181 | + Dec( TimeOut ); | |
182 | + | |
183 | + If (TimeOut=0) then | |
184 | + Begin | |
185 | + // Reset timer | |
186 | + TimeOut := Interval * 4; | |
187 | + | |
188 | + // Beep once per x seconds | |
189 | + Beep; | |
190 | + End; | |
191 | + // Wait 1/4th of a second | |
192 | + Sleep(250); | |
193 | + End; | |
194 | + Except | |
195 | + On E:Exception do ; // TODO: Exception logging... | |
196 | + End; | |
197 | + // Terminate the Thread - This signals Terminated=True | |
198 | + Terminate; | |
199 | + } | |
200 | +end; | |
201 | + | |
202 | +end. | ... | ... |
No preview for this file type
chkcacic/FormConfig.dfm
... | ... | @@ -4,7 +4,7 @@ object Configs: TConfigs |
4 | 4 | BorderIcons = [] |
5 | 5 | BorderStyle = bsSingle |
6 | 6 | Caption = 'Configura'#231#245'es do CHKCACIC' |
7 | - ClientHeight = 382 | |
7 | + ClientHeight = 367 | |
8 | 8 | ClientWidth = 490 |
9 | 9 | Color = clBtnFace |
10 | 10 | Font.Charset = DEFAULT_CHARSET |
... | ... | @@ -29,7 +29,7 @@ object Configs: TConfigs |
29 | 29 | Font.Style = [fsBold] |
30 | 30 | ParentFont = False |
31 | 31 | TabOrder = 3 |
32 | - object Label1: TLabel | |
32 | + object lbMensagemNaoAplicavel: TLabel | |
33 | 33 | Left = 265 |
34 | 34 | Top = 25 |
35 | 35 | Width = 200 |
... | ... | @@ -57,7 +57,7 @@ object Configs: TConfigs |
57 | 57 | end |
58 | 58 | object Memo_te_instala_informacoes_extras: TMemo |
59 | 59 | Left = 9 |
60 | - Top = 65 | |
60 | + Top = 66 | |
61 | 61 | Width = 462 |
62 | 62 | Height = 144 |
63 | 63 | Color = clInactiveBorder | ... | ... |
chkcacic/FormConfig.pas
... | ... | @@ -31,7 +31,7 @@ type |
31 | 31 | Label_ip_serv_cacic: TLabel; |
32 | 32 | Label_cacic_dir: TLabel; |
33 | 33 | gbOpcional: TGroupBox; |
34 | - Label1: TLabel; | |
34 | + lbMensagemNaoAplicavel: TLabel; | |
35 | 35 | Label_te_instala_informacoes_extras: TLabel; |
36 | 36 | Button_Gravar: TButton; |
37 | 37 | Memo_te_instala_informacoes_extras: TMemo; | ... | ... |
chkcacic/chkcacic.res
No preview for this file type
chkcacic/main.dfm
chkcacic/main.pas
... | ... | @@ -81,9 +81,10 @@ uses Windows, |
81 | 81 | NTFileSecurity, |
82 | 82 | IdFTP, |
83 | 83 | Tlhelp32, |
84 | - dialogs, | |
85 | 84 | ExtCtrls, |
86 | - CACIC_Library; | |
85 | + CACIC_Library, | |
86 | + WinSvc, | |
87 | + dialogs; | |
87 | 88 | |
88 | 89 | var v_ip_serv_cacic, |
89 | 90 | v_cacic_dir, |
... | ... | @@ -137,7 +138,6 @@ Function ChecaVersoesAgentes(p_strNomeAgente : String) : integer; // 2.2.0.16 |
137 | 138 | Function Explode(Texto, Separador : String) : TStrings; |
138 | 139 | Function FindWindowByTitle(WindowTitle: string): Hwnd; |
139 | 140 | Function FTP(p_Host : String; p_Port : String; p_Username : String; p_Password : String; p_PathServer : String; p_File : String; p_Dest : String) : Boolean; |
140 | -function Get_File_Size(sFileToExamine: string): integer; // 2.2.0.31 | |
141 | 141 | function GetFolderDate(Folder: string): TDateTime; |
142 | 142 | function GetNetworkUserName : String; // 2.2.0.32 |
143 | 143 | Function GetRootKey(strRootKey: String): HKEY; |
... | ... | @@ -152,6 +152,9 @@ Function SetValorChaveRegEdit(Chave: String; Dado: Variant): Variant; |
152 | 152 | Function SetValorChaveRegIni(p_Secao, p_Chave, p_Valor, p_File : String): String; |
153 | 153 | Function RemoveCaracteresEspeciais(Texto : String) : String; |
154 | 154 | Function VerFmt(const MS, LS: DWORD): string; |
155 | +function ServiceStart(sService : string ) : boolean; | |
156 | +function ServiceRunning(sMachine, sService: PChar): Boolean; | |
157 | +function ServiceStopped(sMachine, sService: PChar): Boolean; | |
155 | 158 | |
156 | 159 | type |
157 | 160 | TForm1 = class(TForm) |
... | ... | @@ -172,6 +175,130 @@ uses FormConfig; |
172 | 175 | |
173 | 176 | {$R *.dfm} |
174 | 177 | |
178 | +function ServiceGetStatus(sMachine, sService: PChar): DWORD; | |
179 | + {******************************************} | |
180 | + {*** Parameters: ***} | |
181 | + {*** sService: specifies the name of the service to open | |
182 | + {*** sMachine: specifies the name of the target computer | |
183 | + {*** ***} | |
184 | + {*** Return Values: ***} | |
185 | + {*** -1 = Error opening service ***} | |
186 | + {*** 1 = SERVICE_STOPPED ***} | |
187 | + {*** 2 = SERVICE_START_PENDING ***} | |
188 | + {*** 3 = SERVICE_STOP_PENDING ***} | |
189 | + {*** 4 = SERVICE_RUNNING ***} | |
190 | + {*** 5 = SERVICE_CONTINUE_PENDING ***} | |
191 | + {*** 6 = SERVICE_PAUSE_PENDING ***} | |
192 | + {*** 7 = SERVICE_PAUSED ***} | |
193 | + {******************************************} | |
194 | +var | |
195 | + SCManHandle, SvcHandle: SC_Handle; | |
196 | + SS: TServiceStatus; | |
197 | + dwStat: DWORD; | |
198 | +begin | |
199 | + dwStat := 0; | |
200 | + // Open service manager handle. | |
201 | + LogDEBUG('Executando OpenSCManager.SC_MANAGER_CONNECT'); | |
202 | + SCManHandle := OpenSCManager(sMachine, nil, SC_MANAGER_CONNECT); | |
203 | + if (SCManHandle > 0) then | |
204 | + begin | |
205 | + LogDEBUG('Executando OpenService.SERVICE_QUERY_STATUS'); | |
206 | + SvcHandle := OpenService(SCManHandle, sService, SERVICE_QUERY_STATUS); | |
207 | + // if Service installed | |
208 | + if (SvcHandle > 0) then | |
209 | + begin | |
210 | + LogDEBUG('O serviço "'+ sService +'" já está instalado.'); | |
211 | + // SS structure holds the service status (TServiceStatus); | |
212 | + if (QueryServiceStatus(SvcHandle, SS)) then | |
213 | + dwStat := ss.dwCurrentState; | |
214 | + CloseServiceHandle(SvcHandle); | |
215 | + end; | |
216 | + CloseServiceHandle(SCManHandle); | |
217 | + end; | |
218 | + Result := dwStat; | |
219 | +end; | |
220 | + | |
221 | +// start service | |
222 | +// | |
223 | +// return TRUE if successful | |
224 | +// | |
225 | +// sService | |
226 | +// service name, ie: Alerter | |
227 | +// | |
228 | +function ServiceStart(sService : string ) : boolean; | |
229 | +var schm, | |
230 | + schs : SC_Handle; | |
231 | + | |
232 | + ss : TServiceStatus; | |
233 | + psTemp : PChar; | |
234 | + dwChkP : DWord; | |
235 | +begin | |
236 | + ss.dwCurrentState := 0; | |
237 | + | |
238 | + logDEBUG('Executando Service Start'); | |
239 | + | |
240 | + // connect to the service control manager | |
241 | + schm := OpenSCManager(Nil,Nil,SC_MANAGER_CONNECT); | |
242 | + | |
243 | + // if successful... | |
244 | + if(schm > 0)then | |
245 | + begin | |
246 | + // open a handle to the specified service | |
247 | + schs := OpenService(schm,PChar(sService),SERVICE_START or SERVICE_QUERY_STATUS); | |
248 | + | |
249 | + // if successful... | |
250 | + if(schs > 0)then | |
251 | + begin | |
252 | + logDEBUG('Open Service OK'); | |
253 | + psTemp := Nil; | |
254 | + if(StartService(schs,0,psTemp)) then | |
255 | + begin | |
256 | + logDEBUG('Entrando em Start Service'); | |
257 | + // check status | |
258 | + if(QueryServiceStatus(schs,ss))then | |
259 | + begin | |
260 | + while(SERVICE_RUNNING <> ss.dwCurrentState)do | |
261 | + begin | |
262 | + // dwCheckPoint contains a value that the service increments periodically | |
263 | + // to report its progress during a lengthy operation. | |
264 | + dwChkP := ss.dwCheckPoint; | |
265 | + | |
266 | + // wait a bit before checking status again | |
267 | + // dwWaitHint is the estimated amount of time the calling program should wait before calling | |
268 | + // QueryServiceStatus() again idle events should be handled here... | |
269 | + | |
270 | + Sleep(ss.dwWaitHint); | |
271 | + | |
272 | + if(not QueryServiceStatus(schs,ss))then | |
273 | + begin | |
274 | + break; | |
275 | + end; | |
276 | + | |
277 | + if(ss.dwCheckPoint < dwChkP)then | |
278 | + begin | |
279 | + // QueryServiceStatus didn't increment dwCheckPoint as it should have. | |
280 | + // avoid an infinite loop by breaking | |
281 | + break; | |
282 | + end; | |
283 | + end; | |
284 | + end | |
285 | + else | |
286 | + logDEBUG('Oops! Problema com StartService!'); | |
287 | + end; | |
288 | + | |
289 | + // close service handle | |
290 | + CloseServiceHandle(schs); | |
291 | + end; | |
292 | + | |
293 | + // close service control manager handle | |
294 | + CloseServiceHandle(schm); | |
295 | + end | |
296 | + else | |
297 | + Configs.Memo_te_instala_informacoes_extras.Lines.Add('Oops! Problema com o Service Control Manager!'); | |
298 | + // return TRUE if the service status is running | |
299 | + Result := SERVICE_RUNNING = ss.dwCurrentState; | |
300 | +end; | |
301 | + | |
175 | 302 | function GetNetworkUserName : String; |
176 | 303 | // Gets the name of the user currently logged into the network on |
177 | 304 | // the local PC |
... | ... | @@ -282,6 +409,10 @@ begin |
282 | 409 | except |
283 | 410 | //Erro na gravação do log! |
284 | 411 | end; |
412 | + try | |
413 | + Configs.Memo_te_instala_informacoes_extras.Lines.Add(strMsg); | |
414 | + except | |
415 | + end; | |
285 | 416 | end; |
286 | 417 | |
287 | 418 | procedure LogDebug(p_msg:string); |
... | ... | @@ -730,7 +861,7 @@ begin |
730 | 861 | LogDebug('FTP: UserName => "'+p_Username+'"'); |
731 | 862 | IdFTP.Username := p_Username; |
732 | 863 | |
733 | - LogDebug('FTP: PassWord => "'+p_Password+'"'); | |
864 | + LogDebug('FTP: PassWord => "**********"'); | |
734 | 865 | IdFTP.Password := p_Password; |
735 | 866 | |
736 | 867 | LogDebug('FTP: PathServer => "'+p_PathServer+'"'); |
... | ... | @@ -755,18 +886,18 @@ begin |
755 | 886 | IdFTP.ChangeDir(p_PathServer); |
756 | 887 | Try |
757 | 888 | LogDebug('Iniciando FTP de "'+p_Dest + '\' + p_File+'"'); |
758 | - LogDebug('Size de "'+p_File+'" Antes do FTP => '+IntToSTR(IdFTP.Size(p_File))); | |
889 | + LogDebug('HashCode de "'+p_File+'" Antes do FTP => '+g_oCacic.GetFileHash(p_File)); | |
759 | 890 | IdFTP.Get(p_File, p_Dest + '\' + p_File, True, True); |
760 | - LogDebug('Size de "'+p_Dest + '\' + p_File +'" Após o FTP => '+IntToSTR(Get_File_Size(p_Dest + '\' + p_File))); | |
891 | + LogDebug('HashCode de "'+p_Dest + '\' + p_File +'" Após o FTP => '+g_oCacic.GetFileHash(p_Dest + '\' + p_File)); | |
761 | 892 | Finally |
762 | - LogDebug('Size de "'+p_Dest + '\' + p_File +'" Após o FTP em Finally => '+IntToStr(Get_File_Size(p_Dest + '\' + p_File))); | |
893 | + LogDebug('HashCode de "'+p_Dest + '\' + p_File +'" Após o FTP em Finally => '+g_oCacic.GetFileHash(p_Dest + '\' + p_File)); | |
763 | 894 | IdFTP.Disconnect; |
764 | 895 | IdFTP.Free; |
765 | 896 | result := true; |
766 | 897 | End; |
767 | 898 | Except |
768 | 899 | Begin |
769 | - LogDebug('Oops! Problemas Sem Início de Operação...'); | |
900 | + LogDebug('Oops! Problemas Sem Início de FTP...'); | |
770 | 901 | result := false; |
771 | 902 | End; |
772 | 903 | end; |
... | ... | @@ -1025,14 +1156,14 @@ end; |
1025 | 1156 | |
1026 | 1157 | function Posso_Rodar_CACIC : boolean; |
1027 | 1158 | Begin |
1159 | + result := false; | |
1160 | + | |
1161 | + // 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'); | |
1163 | + | |
1028 | 1164 | // Se o aguarde_CACIC.txt existir é porque refere-se a uma versão mais atual: 2.2.0.20 ou maior |
1029 | - if (FileExists(g_oCacic.getCacicPath() + '\aguarde_CACIC.txt')) then | |
1030 | - Begin | |
1031 | - // Se eu conseguir matar o arquivo abaixo é porque não há outra sessão deste agente aberta... (POG? Nããão! :) ) | |
1032 | - Matar(v_cacic_dir,'aguarde_CACIC.txt'); | |
1033 | - if (not (FileExists(v_cacic_dir + 'aguarde_CACIC.txt'))) then | |
1034 | - result := true; | |
1035 | - End; | |
1165 | + if not (FileExists(g_oCacic.getCacicPath() + '\aguarde_CACIC.txt')) then | |
1166 | + result := true; | |
1036 | 1167 | End; |
1037 | 1168 | function GetFolderDate(Folder: string): TDateTime; |
1038 | 1169 | var |
... | ... | @@ -1055,75 +1186,57 @@ begin |
1055 | 1186 | end; |
1056 | 1187 | end; |
1057 | 1188 | |
1058 | -function Get_File_Size(sFileToExamine: string): integer; | |
1059 | -var | |
1060 | - SearchRec: TSearchRec; | |
1061 | - sgPath: string; | |
1062 | - inRetval, I1: Integer; | |
1063 | -begin | |
1064 | - sgPath := ExpandFileName(sFileToExamine); | |
1065 | - try | |
1066 | - inRetval := FindFirst(ExpandFileName(sFileToExamine), faAnyFile, SearchRec); | |
1067 | - if inRetval = 0 then | |
1068 | - I1 := SearchRec.Size | |
1069 | - else | |
1070 | - I1 := -1; | |
1071 | - finally | |
1072 | - SysUtils.FindClose(SearchRec); | |
1073 | - end; | |
1074 | - Result := I1; | |
1075 | -end; | |
1076 | - | |
1077 | -procedure verifyAndGet(strModuleName, | |
1078 | - strDestinationFolderName, | |
1079 | - strServUpdates, | |
1080 | - strPortaServUpdates, | |
1081 | - strNomeUsuarioLoginServUpdates, | |
1082 | - strSenhaLoginServUpdates, | |
1083 | - strPathServUpdates, | |
1084 | - strExibeInformacoes : String); | |
1085 | - var intFileSize : integer; | |
1189 | +procedure verifyAndGet(p_strModuleName, | |
1190 | + p_strFileHash, | |
1191 | + p_strDestinationFolderName, | |
1192 | + p_strServUpdates, | |
1193 | + p_strPortaServUpdates, | |
1194 | + p_strNomeUsuarioLoginServUpdates, | |
1195 | + p_strSenhaLoginServUpdates, | |
1196 | + p_strPathServUpdates, | |
1197 | + p_strExibeInformacoes : String); | |
1198 | + var v_strFileHash : String; | |
1086 | 1199 | Begin |
1087 | 1200 | |
1088 | 1201 | // Verifico validade do Módulo e mato-o em caso negativo. |
1089 | - intFileSize := Get_File_Size(strDestinationFolderName + '\'+strModuleName); | |
1202 | + v_strFileHash := g_oCacic.GetFileHash(p_strDestinationFolderName + '\'+p_strModuleName); | |
1090 | 1203 | |
1091 | - LogDebug('verifyAndGet - intFileSize de "'+strDestinationFolderName + '\'+strModuleName+'": ' + IntToStr(intFileSize)); | |
1204 | + LogDebug('verifyAndGet - strFileHash de "'+p_strDestinationFolderName + '\'+p_strModuleName+'": ' + v_strFileHash); | |
1092 | 1205 | |
1093 | - If (intFileSize <= 0) then | |
1094 | - Matar(strDestinationFolderName, strModuleName); | |
1206 | + If (v_strFileHash <> p_strFileHash) then | |
1207 | + Matar(p_strDestinationFolderName, p_strModuleName); | |
1095 | 1208 | |
1096 | - If not FileExists(strDestinationFolderName + '\'+strModuleName) Then | |
1209 | + If not FileExists(p_strDestinationFolderName + '\'+p_strModuleName) Then | |
1097 | 1210 | Begin |
1098 | - if (FileExists(ExtractFilePath(Application.Exename) + '\modulos\'+strModuleName)) then | |
1211 | + if (FileExists(ExtractFilePath(Application.Exename) + '\modulos\'+p_strModuleName)) then | |
1099 | 1212 | Begin |
1100 | - LogDiario('Copiando '+strModuleName+' de '+ExtractFilePath(Application.Exename)+'modulos\'); | |
1101 | - CopyFile(PChar(ExtractFilePath(Application.Exename) + 'modulos\'+strModuleName), PChar(strDestinationFolderName + '\'+strModuleName),false); | |
1102 | - FileSetAttr (PChar(strDestinationFolderName + '\' + strModuleName),0); // Retira os atributos do arquivo para evitar o erro FILE ACCESS DENIED | |
1213 | + LogDiario('Copiando '+p_strModuleName+' de '+ExtractFilePath(Application.Exename)+'modulos\'); | |
1214 | + CopyFile(PChar(ExtractFilePath(Application.Exename) + 'modulos\'+p_strModuleName), PChar(p_strDestinationFolderName + '\'+p_strModuleName),false); | |
1215 | + FileSetAttr (PChar(p_strDestinationFolderName + '\' + p_strModuleName),0); // Retira os atributos do arquivo para evitar o erro FILE ACCESS DENIED | |
1103 | 1216 | End |
1104 | 1217 | else |
1105 | 1218 | begin |
1106 | 1219 | Try |
1107 | - if not FTP(strServUpdates, | |
1108 | - strPortaServUpdates, | |
1109 | - strNomeUsuarioLoginServUpdates, | |
1110 | - strSenhaLoginServUpdates, | |
1111 | - strPathServUpdates, | |
1112 | - strModuleName, | |
1113 | - strDestinationFolderName) and (strExibeInformacoes = 'S') then | |
1114 | - MessageDLG(#13#10+'ATENÇÃO! Não foi possível efetuar FTP para "'+strDestinationFolderName + '\'+strModuleName+'".'+#13#10+'Verifique o Servidor de Updates.',mtError,[mbOK],0); | |
1220 | + if not FTP(p_strServUpdates, | |
1221 | + p_strPortaServUpdates, | |
1222 | + p_strNomeUsuarioLoginServUpdates, | |
1223 | + p_strSenhaLoginServUpdates, | |
1224 | + p_strPathServUpdates, | |
1225 | + p_strModuleName, | |
1226 | + p_strDestinationFolderName) then | |
1227 | + Configs.Memo_te_instala_informacoes_extras.Lines.add(#13#10+'ATENÇÃO! Não foi possível efetuar FTP para "'+p_strDestinationFolderName + '\'+p_strModuleName+'".'+#13#10+'Verifique o Servidor de Updates.'); | |
1115 | 1228 | Except |
1116 | - LogDebug('FTP de "'+ strDestinationFolderName + '\' + strModuleName+'" Interrompido.'); | |
1229 | + LogDebug('FTP de "'+ p_strDestinationFolderName + '\' + p_strModuleName+'" Interrompido.'); | |
1117 | 1230 | End; |
1118 | 1231 | |
1119 | - if not FileExists(strDestinationFolderName + '\' + strModuleName) Then | |
1232 | + if not FileExists(p_strDestinationFolderName + '\' + p_strModuleName) Then | |
1120 | 1233 | Begin |
1121 | - LogDebug('Problemas Efetuando Download de '+ strDestinationFolderName + '\' + strModuleName+' (FTP)'); | |
1234 | + LogDebug('Problemas Efetuando Download de '+ p_strDestinationFolderName + '\' + p_strModuleName+' (FTP)'); | |
1122 | 1235 | LogDebug('Conexão:'); |
1123 | - LogDebug(strServUpdates+', '+strPortaServUpdates+', '+strNomeUsuarioLoginServUpdates+', '+strSenhaLoginServUpdates+', '+strPathServUpdates); | |
1236 | + LogDebug(p_strServUpdates+', '+p_strPortaServUpdates+', '+p_strNomeUsuarioLoginServUpdates+', '+p_strSenhaLoginServUpdates+', '+p_strPathServUpdates); | |
1124 | 1237 | End |
1125 | 1238 | else |
1126 | - LogDiario('Download Concluído de "'+strModuleName+'" (FTP)'); | |
1239 | + LogDiario('Download Concluído de "'+p_strModuleName+'" (FTP)'); | |
1127 | 1240 | end; |
1128 | 1241 | End; |
1129 | 1242 | End; |
... | ... | @@ -1131,6 +1244,7 @@ procedure verifyAndGet(strModuleName, |
1131 | 1244 | procedure chkcacic; |
1132 | 1245 | var bool_configura, |
1133 | 1246 | bool_ExistsAutoRun, |
1247 | + bool_ArquivoINI, | |
1134 | 1248 | bool_CommandLine : boolean; |
1135 | 1249 | |
1136 | 1250 | v_te_serv_updates, |
... | ... | @@ -1143,10 +1257,8 @@ var bool_configura, |
1143 | 1257 | strAux, |
1144 | 1258 | strDataHoraCACIC2_INI, |
1145 | 1259 | strDataHoraGERCOLS_INI, |
1146 | - strDataHoraSRCACICSRV_INI, | |
1147 | 1260 | strDataHoraCACIC2_FIM, |
1148 | - strDataHoraGERCOLS_FIM, | |
1149 | - strDataHoraSRCACICSRV_FIM : String; | |
1261 | + strDataHoraGERCOLS_FIM : String; | |
1150 | 1262 | |
1151 | 1263 | Request_Config : TStringList; |
1152 | 1264 | v_array_modulos : TStrings; |
... | ... | @@ -1155,6 +1267,8 @@ var bool_configura, |
1155 | 1267 | intDownload_CACIC2, |
1156 | 1268 | intDownload_GER_COLS, |
1157 | 1269 | intAux : integer; |
1270 | + | |
1271 | + wordServiceStatus : DWORD; | |
1158 | 1272 | begin |
1159 | 1273 | strDataHoraCACIC2_INI := ''; |
1160 | 1274 | strDataHoraCACIC2_FIM := ''; |
... | ... | @@ -1163,6 +1277,7 @@ begin |
1163 | 1277 | v_te_instala_frase_sucesso := 'INSTALAÇÃO/ATUALIZAÇÃO EFETUADA COM SUCESSO!'; |
1164 | 1278 | v_te_instala_frase_insucesso := '***** INSTALAÇÃO/ATUALIZAÇÃO NÃO EFETUADA COM SUCESSO *****'; |
1165 | 1279 | bool_CommandLine := false; |
1280 | + bool_ArquivoINI := FileExists(ExtractFilePath(Application.Exename) + '\chkcacic.ini'); | |
1166 | 1281 | |
1167 | 1282 | Try |
1168 | 1283 | v_home_drive := MidStr(HomeDrive,1,3); //x:\ |
... | ... | @@ -1200,9 +1315,11 @@ begin |
1200 | 1315 | //v_cacic_dir := 'Cacic'; |
1201 | 1316 | //v_exibe_informacoes := 'N'; // Manter o "N", pois, esse mesmo ChkCacic será colocado em NetLogons! |
1202 | 1317 | |
1318 | + // Se a chamada ao chkCACIC não passou parâmetros de IP do Servidor nem Pasta Padrão... | |
1319 | + // Obs.: Normalmente a chamada com passagem de parâmetros é feita por script em servidor de domínio, para automatização do processo | |
1203 | 1320 | if not bool_CommandLine then |
1204 | 1321 | Begin |
1205 | - If not (FileExists(ExtractFilePath(Application.Exename) + '\chkcacic.ini')) then | |
1322 | + If not bool_ArquivoINI then | |
1206 | 1323 | Begin |
1207 | 1324 | LogDiario('Abrindo formulário de configurações'); |
1208 | 1325 | CriaFormConfigura; |
... | ... | @@ -1228,14 +1345,51 @@ begin |
1228 | 1345 | End; |
1229 | 1346 | End; |
1230 | 1347 | |
1348 | + LogDebug('Tipo de Drive: '+intToStr(GetDriveType(nil))); | |
1349 | + | |
1350 | + if not (GetDriveType(nil) = DRIVE_REMOTE) then | |
1351 | + Begin | |
1352 | + CriaFormConfigura; | |
1353 | + Configs.Visible := true; | |
1354 | + | |
1355 | + Configs.gbObrigatorio.BringToFront; | |
1356 | + Configs.gbOpcional.BringToFront; | |
1357 | + | |
1358 | + Configs.Label_ip_serv_cacic.BringToFront; | |
1359 | + Configs.Edit_ip_serv_cacic.Text := v_ip_serv_cacic; | |
1360 | + Configs.Edit_ip_serv_cacic.ReadOnly := true; | |
1361 | + Configs.Edit_ip_serv_cacic.BringToFront; | |
1362 | + | |
1363 | + Configs.Label_cacic_dir.BringToFront; | |
1364 | + Configs.Edit_cacic_dir.Text := v_cacic_dir; | |
1365 | + Configs.Edit_cacic_dir.ReadOnly := true; | |
1366 | + configs.Edit_cacic_dir.BringToFront; | |
1367 | + | |
1368 | + Configs.Label_te_instala_informacoes_extras.Visible := false; | |
1369 | + | |
1370 | + Configs.ckboxExibeInformacoes.Checked := true; | |
1371 | + Configs.ckboxExibeInformacoes.Visible := false; | |
1372 | + | |
1373 | + Configs.Height := 357; | |
1374 | + Configs.lbMensagemNaoAplicavel.Visible := false; | |
1375 | + | |
1376 | + Configs.Memo_te_instala_informacoes_extras.Clear; | |
1377 | + Configs.Memo_te_instala_informacoes_extras.Top := 15; | |
1378 | + Configs.Memo_te_instala_informacoes_extras.Height := 196; | |
1379 | + | |
1380 | + Configs.gbObrigatorio.Caption := 'Configuração'; | |
1381 | + Configs.gbObrigatorio.Visible := true; | |
1382 | + | |
1383 | + Configs.gbOpcional.Caption := 'Andamento da Instalação/Atualização'; | |
1384 | + Configs.gbOpcional.Visible := true; | |
1385 | + | |
1386 | + Configs.Refresh; | |
1387 | + Configs.Show; | |
1388 | + End; | |
1389 | + | |
1231 | 1390 | // Verifica se o S.O. é NT Like e se o Usuário está com privilégio administrativo... |
1232 | - if (g_oCacic.isWindowsNTPlataform()) and (not g_oCacic.isWindowsAdmin()) then begin // Se NT/2000/XP/... | |
1233 | - if (v_exibe_informacoes = 'S') then | |
1234 | - MessageDLG(#13#10+'ATENÇÃO! Essa aplicação requer execução com nível administrativo.',mtError,[mbOK],0); | |
1235 | - LogDiario('Sem Privilégios: Necessário ser administrador "local" da estação'); | |
1236 | - ComunicaInsucesso('0'); // O indicador "0" (zero) sinalizará falta de privilégio na estação | |
1237 | - end | |
1238 | - else begin | |
1391 | + if (g_oCacic.isWindowsNTPlataform()) and (g_oCacic.isWindowsAdmin()) then | |
1392 | + Begin | |
1239 | 1393 | LogDebug(':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::'); |
1240 | 1394 | LogDebug(':::::::::::::: OBTENDO VALORES DO "chkcacic.ini" ::::::::::::::'); |
1241 | 1395 | LogDebug(':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::'); |
... | ... | @@ -1261,8 +1415,8 @@ begin |
1261 | 1415 | Try |
1262 | 1416 | Begin |
1263 | 1417 | // Liberando as conexões de Saída para o FTP |
1264 | - SetValorChaveRegEdit('HKEY_LOCAL//_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\FirewallRules\FTP-Out-TCP','v2.0|Action=Allow|Active=TRUE|Dir=Out|Protocol=6|Profile=Private|App=C:\\windows\\system32\\ftp.exe|Name=Programa de transferência de arquivos|Desc=Programa de transferência de arquivos|Edge=FALSE|'); | |
1265 | - SetValorChaveRegEdit('HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\SharedAccess\Parameters\FirewallPolicy\FirewallRules\FTP-Out-UDP','v2.0|Action=Allow|Active=TRUE|Dir=Out|Protocol=17|Profile=Private|App=C:\\windows\\system32\\ftp.exe|Name=Programa de transferência de arquivos|Desc=Programa de transferência de arquivos|Edge=FALSE|'); | |
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|'); | |
1266 | 1420 | |
1267 | 1421 | // Liberando as conexões de Saída para o Ger_Cols |
1268 | 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|'); |
... | ... | @@ -1303,6 +1457,7 @@ begin |
1303 | 1457 | LogDiario('Abrindo formulário de configurações'); |
1304 | 1458 | bool_configura := false; |
1305 | 1459 | CriaFormConfigura; |
1460 | + | |
1306 | 1461 | Configs.Edit_ip_serv_cacic.text := v_ip_serv_cacic; |
1307 | 1462 | Configs.Edit_cacic_dir.text := v_cacic_dir; |
1308 | 1463 | if v_exibe_informacoes = 'S' then |
... | ... | @@ -1352,7 +1507,7 @@ begin |
1352 | 1507 | Response_Config := TStringStream.Create(''); |
1353 | 1508 | |
1354 | 1509 | Try |
1355 | - LogDiario('Iniciando comunicação com '+'http://' + v_ip_serv_cacic + '/cacic2/ws/get_config.php'); | |
1510 | + LogDiario('Iniciando comunicação com Servidor Gerente WEB do CACIC'); | |
1356 | 1511 | IdHTTP1 := TIdHTTP.Create(IdHTTP1); |
1357 | 1512 | idHTTP1.AllowCookies := true; |
1358 | 1513 | idHTTP1.ASCIIFilter := false; |
... | ... | @@ -1372,7 +1527,7 @@ begin |
1372 | 1527 | idHTTP1.Request.ContentType := 'text/html'; |
1373 | 1528 | idHTTP1.SendBufferSize := 32768; |
1374 | 1529 | idHTTP1.Tag := 0; |
1375 | - | |
1530 | + | |
1376 | 1531 | IdHTTP1.Post('http://' + v_ip_serv_cacic + '/cacic2/ws/get_config.php', Request_Config, Response_Config); |
1377 | 1532 | idHTTP1.Disconnect; |
1378 | 1533 | idHTTP1.Free; |
... | ... | @@ -1396,13 +1551,11 @@ begin |
1396 | 1551 | LogDebug('------------------------------'); |
1397 | 1552 | LogDebug('Cacic2 - Agente do Systray.........: '+XML_RetornaValor('CACIC2', v_retorno)); |
1398 | 1553 | LogDebug('Ger_Cols - Gerente de Coletas........: '+XML_RetornaValor('GER_COLS', v_retorno)); |
1399 | - LogDebug('SrCACIC - Suporte Remoto Seguro.....: '+XML_RetornaValor('SRCACICSRV', v_retorno)); | |
1400 | 1554 | LogDebug('ChkSis - Verificador de Integridade: '+XML_RetornaValor('CHKSIS', v_retorno)); |
1401 | 1555 | LogDebug(':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::'); |
1402 | 1556 | Except |
1403 | 1557 | Begin |
1404 | - if v_exibe_informacoes = 'S' then | |
1405 | - MessageDLG(#13#10+'ATENÇÃO! Não foi possível estabelecer comunicação com o módulo Gerente WEB em "'+v_ip_serv_cacic+'".',mtError,[mbOK],0); | |
1558 | + Configs.Memo_te_instala_informacoes_extras.Lines.Add(#13#10+'ATENÇÃO! Não foi possível estabelecer comunicação com o módulo Gerente WEB em "'+v_ip_serv_cacic+'".'); | |
1406 | 1559 | LogDiario('**********************************************************'); |
1407 | 1560 | LogDiario('Oops! Não Foi Possível Comunicar com o Módulo Gerente WEB!'); |
1408 | 1561 | LogDiario('**********************************************************'); |
... | ... | @@ -1493,64 +1646,64 @@ begin |
1493 | 1646 | Matar(Dir + '\modulos\', 'ger_cols.exe'); |
1494 | 1647 | End; |
1495 | 1648 | |
1496 | - // Verificação de versão do srcacicsrv.exe e exclusão em caso de versão antiga/diferente da atual | |
1497 | - If (FileExists(Dir + '\modulos\srcacicsrv.exe')) Then | |
1498 | - Begin | |
1499 | - // Pego as informações de dia/mês/ano/horas/minutos/segundos/milésimos que identificam o agente SrCACIC | |
1500 | - strDataHoraSRCACICSRV_INI := FormatDateTime('ddmmyyyyhhnnsszzz', GetFolderDate(Dir + '\modulos\srcacicsrv.exe')); | |
1649 | + // 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 | |
1651 | + Begin | |
1652 | + intAux := ChecaVersoesAgentes(HomeDrive + '\chksis.exe'); | |
1653 | + // 0 => Arquivo de versões ou informação inexistente | |
1654 | + // 1 => Versões iguais | |
1655 | + // 2 => Versões diferentes | |
1656 | + if (intAux = 0) then | |
1657 | + Begin | |
1658 | + v_versao_local := StringReplace(trim(GetVersionInfo(HomeDrive + '\chksis.exe')),'.','',[rfReplaceAll]); | |
1659 | + v_versao_remota := StringReplace(XML_RetornaValor('CHKSIS' , v_retorno),'0103','',[rfReplaceAll]); | |
1660 | + End; | |
1501 | 1661 | |
1502 | - intAux := ChecaVersoesAgentes(Dir + '\modulos\srcacicsrv.exe'); | |
1503 | - // 0 => Arquivo de versões ou informação inexistente | |
1504 | - // 1 => Versões iguais | |
1505 | - // 2 => Versões diferentes | |
1506 | - if (intAux = 0) then | |
1507 | - Begin | |
1508 | - v_versao_local := StringReplace(trim(GetVersionInfo(Dir + '\modulos\srcacicsrv.exe')),'.','',[rfReplaceAll]); | |
1509 | - v_versao_remota := StringReplace(XML_RetornaValor('SRCACICSRV' , v_retorno),'0103','',[rfReplaceAll]); | |
1510 | - End; | |
1662 | + if (intAux = 2) or // Caso haja diferença na comparação de versões com "versoes_agentes.ini"... | |
1663 | + (v_versao_local ='0000') then // Provavelmente versão muito antiga ou corrompida | |
1664 | + Matar(HomeDrive,'chksis.exe'); | |
1665 | + End; | |
1511 | 1666 | |
1512 | - if (intAux = 2) or // Caso haja diferença na comparação de versões com "versoes_agentes.ini"... | |
1513 | - (v_versao_local ='0000') then // Provavelmente versão muito antiga ou corrompida | |
1514 | - Matar(Dir + '\modulos\', 'srcacicsrv.exe'); | |
1515 | - End; | |
1667 | + // Tento detectar o ChkSis.EXE e copio ou faço FTP caso não exista | |
1668 | + verifyAndGet('chksis.exe', | |
1669 | + XML_RetornaValor('CHKSIS_HASH', v_retorno), | |
1670 | + HomeDrive, | |
1671 | + v_te_serv_updates, | |
1672 | + v_nu_porta_serv_updates, | |
1673 | + v_nm_usuario_login_serv_updates, | |
1674 | + v_te_senha_login_serv_updates, | |
1675 | + v_te_path_serv_updates, | |
1676 | + v_exibe_informacoes); | |
1516 | 1677 | |
1678 | + // Tento detectar o ChkSis.INI e crio-o caso necessário | |
1679 | + If not FileExists(HomeDrive + '\chksis.ini') Then | |
1680 | + 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 | |
1684 | + end; | |
1517 | 1685 | |
1518 | - // Verificação de versão do chksis.exe e exclusão em caso de versão antiga/diferente da atual | |
1519 | - If (FileExists(HomeDrive + '\chksis.exe')) Then | |
1520 | - Begin | |
1521 | - intAux := ChecaVersoesAgentes(HomeDrive + '\chksis.exe'); | |
1522 | - // 0 => Arquivo de versões ou informação inexistente | |
1523 | - // 1 => Versões iguais | |
1524 | - // 2 => Versões diferentes | |
1525 | - if (intAux = 0) then | |
1526 | - Begin | |
1527 | - v_versao_local := StringReplace(trim(GetVersionInfo(HomeDrive + '\chksis.exe')),'.','',[rfReplaceAll]); | |
1528 | - v_versao_remota := StringReplace(XML_RetornaValor('CHKSIS' , v_retorno),'0103','',[rfReplaceAll]); | |
1529 | - End; | |
1530 | 1686 | |
1531 | - if (intAux = 2) or // Caso haja diferença na comparação de versões com "versoes_agentes.ini"... | |
1532 | - (v_versao_local ='0000') then // Provavelmente versão muito antiga ou corrompida | |
1533 | - Matar(HomeDrive,'chksis.exe'); | |
1687 | + // Verificação de existência do CacicSvc.exe | |
1688 | + If (g_oCacic.isWindowsNTPlataform()) then | |
1689 | + Begin | |
1690 | + // Tento detectar o CACICsvc.EXE e copio ou faço FTP caso não exista | |
1691 | + verifyAndGet('cacicsvc.exe', | |
1692 | + XML_RetornaValor('CACICSVC_HASH', v_retorno), | |
1693 | + HomeDrive, | |
1694 | + v_te_serv_updates, | |
1695 | + v_nu_porta_serv_updates, | |
1696 | + v_nm_usuario_login_serv_updates, | |
1697 | + v_te_senha_login_serv_updates, | |
1698 | + v_te_path_serv_updates, | |
1699 | + v_exibe_informacoes); | |
1700 | + | |
1701 | + // O CACICsvc usará o arquivo de configurações \Windows\chksis.ini | |
1702 | + | |
1703 | + //LogDebug('reCriando '+HomeDrive + '\cacicsvc.ini'); | |
1704 | + //GravaIni(HomeDrive + '\cacicsvc.ini'); | |
1534 | 1705 | End; |
1535 | 1706 | |
1536 | - // Tento detectar o ChkSis.EXE e copio ou faço FTP caso não exista | |
1537 | - verifyAndGet('chksis.exe', | |
1538 | - HomeDrive, | |
1539 | - v_te_serv_updates, | |
1540 | - v_nu_porta_serv_updates, | |
1541 | - v_nm_usuario_login_serv_updates, | |
1542 | - v_te_senha_login_serv_updates, | |
1543 | - v_te_path_serv_updates, | |
1544 | - v_exibe_informacoes); | |
1545 | - | |
1546 | - // Tento detectar o ChkSis.INI e crio-o caso necessário | |
1547 | - If not FileExists(HomeDrive + '\chksis.ini') Then | |
1548 | - begin | |
1549 | - LogDebug('Criando '+HomeDrive + '\chksis.ini'); | |
1550 | - GravaIni(HomeDrive + '\chksis.ini'); | |
1551 | - FileSetAttr ( PChar(HomeDrive + '\chksis.ini'),0); // Retira os atributos do arquivo para evitar o erro FILE ACCESS DENIED em máquinas 2000 | |
1552 | - end; | |
1553 | - | |
1554 | 1707 | // Tento detectar o cacic2.INI e crio-o caso necessário |
1555 | 1708 | If not FileExists(Dir + '\cacic2.ini') Then |
1556 | 1709 | begin |
... | ... | @@ -1564,6 +1717,7 @@ begin |
1564 | 1717 | |
1565 | 1718 | // Tento detectar o Agente Principal e copio ou faço FTP caso não exista |
1566 | 1719 | verifyAndGet('cacic2.exe', |
1720 | + XML_RetornaValor('CACIC2_HASH', v_retorno), | |
1567 | 1721 | Dir, |
1568 | 1722 | v_te_serv_updates, |
1569 | 1723 | v_nu_porta_serv_updates, |
... | ... | @@ -1573,6 +1727,7 @@ begin |
1573 | 1727 | v_exibe_informacoes); |
1574 | 1728 | |
1575 | 1729 | verifyAndGet('ger_cols.exe', |
1730 | + XML_RetornaValor('GER_COLS_HASH', v_retorno), | |
1576 | 1731 | Dir + '\modulos', |
1577 | 1732 | v_te_serv_updates, |
1578 | 1733 | v_nu_porta_serv_updates, |
... | ... | @@ -1581,16 +1736,7 @@ begin |
1581 | 1736 | v_te_path_serv_updates, |
1582 | 1737 | v_exibe_informacoes); |
1583 | 1738 | |
1584 | - verifyAndGet('srcacicsrv.exe', | |
1585 | - Dir + '\modulos', | |
1586 | - v_te_serv_updates, | |
1587 | - v_nu_porta_serv_updates, | |
1588 | - v_nm_usuario_login_serv_updates, | |
1589 | - v_te_senha_login_serv_updates, | |
1590 | - v_te_path_serv_updates, | |
1591 | - v_exibe_informacoes); | |
1592 | - | |
1593 | - // Caso exista a pasta "modulos", copio todos os executáveis para a pasta Cacic\modulos, exceto cacic2.exe, ger_cols.exe, srcacicsrv.exe e chksis.exe | |
1739 | + // Caso exista a pasta "modulos", copio todos os executáveis para a pasta Cacic\modulos, exceto cacic2.exe, ger_cols.exe e chksis.exe | |
1594 | 1740 | if (v_modulos <> '') then |
1595 | 1741 | Begin |
1596 | 1742 | v_array_modulos := explode(v_modulos,'#'); |
... | ... | @@ -1598,7 +1744,6 @@ begin |
1598 | 1744 | Begin |
1599 | 1745 | if (v_array_modulos[intAux]<>'cacic2.exe') and |
1600 | 1746 | (v_array_modulos[intAux]<>'ger_cols.exe') and |
1601 | - (v_array_modulos[intAux]<>'srcacicsrv.exe') and | |
1602 | 1747 | (v_array_modulos[intAux]<>'chksis.exe') then |
1603 | 1748 | Begin |
1604 | 1749 | LogDiario('Copiando '+v_array_modulos[intAux]+' de '+ExtractFilePath(Application.Exename)+'modulos\'); |
... | ... | @@ -1614,6 +1759,7 @@ begin |
1614 | 1759 | |
1615 | 1760 | // Tento detectar (de novo) o ChkSis.EXE e copio ou faço FTP caso não exista |
1616 | 1761 | verifyAndGet('chksis.exe', |
1762 | + XML_RetornaValor('CHKSIS_HASH', v_retorno), | |
1617 | 1763 | HomeDrive, |
1618 | 1764 | v_te_serv_updates, |
1619 | 1765 | v_nu_porta_serv_updates, |
... | ... | @@ -1624,6 +1770,7 @@ begin |
1624 | 1770 | |
1625 | 1771 | // Tento detectar (de novo) o Agente Principal e copio ou faço FTP caso não exista |
1626 | 1772 | verifyAndGet('cacic2.exe', |
1773 | + XML_RetornaValor('CACIC2_HASH', v_retorno), | |
1627 | 1774 | Dir, |
1628 | 1775 | v_te_serv_updates, |
1629 | 1776 | v_nu_porta_serv_updates, |
... | ... | @@ -1633,6 +1780,7 @@ begin |
1633 | 1780 | v_exibe_informacoes); |
1634 | 1781 | |
1635 | 1782 | verifyAndGet('ger_cols.exe', |
1783 | + XML_RetornaValor('GER_COLS_HASH', v_retorno), | |
1636 | 1784 | Dir + '\modulos', |
1637 | 1785 | v_te_serv_updates, |
1638 | 1786 | v_nu_porta_serv_updates, |
... | ... | @@ -1641,20 +1789,16 @@ begin |
1641 | 1789 | v_te_path_serv_updates, |
1642 | 1790 | v_exibe_informacoes); |
1643 | 1791 | |
1644 | - verifyAndGet('srcacicsrv.exe', | |
1645 | - Dir + '\modulos', | |
1646 | - v_te_serv_updates, | |
1647 | - v_nu_porta_serv_updates, | |
1648 | - v_nm_usuario_login_serv_updates, | |
1649 | - v_te_senha_login_serv_updates, | |
1650 | - v_te_path_serv_updates, | |
1651 | - v_exibe_informacoes); | |
1652 | 1792 | |
1793 | + { | |
1653 | 1794 | if ((intWinVer <> 0) and (intWinVer >= 8)) or |
1654 | 1795 | (abstraiCSD(v_te_so) >= 250) then // Se >= WinXP... |
1796 | + } | |
1797 | + | |
1798 | + if (g_oCacic.isWindowsNTPlataform) then | |
1655 | 1799 | Begin |
1656 | 1800 | Try |
1657 | - // Acrescento o ChkSis e o Ger_Cols às exceções do FireWall nativo... | |
1801 | + // Acrescento o Ger_Cols e srCacicSrv às exceções do FireWall nativo... | |
1658 | 1802 | |
1659 | 1803 | {chksis} |
1660 | 1804 | LogDebug('Inserindo "'+HomeDrive + '\chksis" nas exceções do FireWall!'); |
... | ... | @@ -1674,15 +1818,24 @@ begin |
1674 | 1818 | |
1675 | 1819 | LogDebug('Gravando registros para auto-execução'); |
1676 | 1820 | |
1677 | - // Crio a chave/valor cacic2 para autoexecução do Cacic, caso não exista esta chave/valor | |
1678 | - // Crio a chave/valor chksis para autoexecução do ChkSIS, caso não exista esta chave/valor | |
1679 | - SetValorChaveRegEdit('HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\CheckSystemRoutine', HomeDrive + '\chksis.exe'); | |
1821 | + // Somente para S.O. NOT NT LIKE | |
1822 | + if NOT (g_oCacic.isWindowsNTPlataform) then | |
1823 | + Begin | |
1824 | + // Crio a chave/valor cacic2 para autoexecução do Cacic, caso não exista esta chave/valor | |
1825 | + // Crio a chave/valor chksis para autoexecução do ChkSIS, caso não exista esta chave/valor | |
1826 | + SetValorChaveRegEdit('HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\CheckSystemRoutine', HomeDrive + '\chksis.exe'); | |
1680 | 1827 | |
1681 | - bool_ExistsAutoRun := false; | |
1682 | - if (GetValorChaveRegEdit('HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\cacic2')=Dir + '\cacic2.exe') then | |
1683 | - bool_ExistsAutoRun := true | |
1828 | + bool_ExistsAutoRun := false; | |
1829 | + if (GetValorChaveRegEdit('HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\cacic2')=Dir + '\cacic2.exe') then | |
1830 | + bool_ExistsAutoRun := true | |
1831 | + else | |
1832 | + SetValorChaveRegEdit('HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\cacic2', Dir + '\cacic2.exe'); | |
1833 | + End | |
1684 | 1834 | else |
1685 | - SetValorChaveRegEdit('HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\cacic2', Dir + '\cacic2.exe'); | |
1835 | + Begin | |
1836 | + DelValorReg('HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\cacic2'); | |
1837 | + DelValorReg('HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\CheckSystemRoutine'); | |
1838 | + End; | |
1686 | 1839 | |
1687 | 1840 | // Igualo as chaves ip_serv_cacic dos arquivos chksis.ini e cacic2.ini! |
1688 | 1841 | SetValorDatMemoria('Configs.EnderecoServidor', v_ip_serv_cacic); |
... | ... | @@ -1707,24 +1860,21 @@ begin |
1707 | 1860 | strDataHoraGERCOLS_FIM := FormatDateTime('ddmmyyyyhhnnsszzz', GetFolderDate(Dir + '\modulos\ger_cols.exe')); |
1708 | 1861 | LogDebug('Inicial => "' + strDataHoraGERCOLS_INI + '" Final => "' + strDataHoraGERCOLS_FIM + '"'); |
1709 | 1862 | |
1710 | - LogDebug('Resgatando informações para identificação de alteração do agente SRCACIC'); | |
1711 | - strDataHoraSRCACICSRV_FIM := FormatDateTime('ddmmyyyyhhnnsszzz', GetFolderDate(Dir + '\modulos\srcacicsrv.exe')); | |
1712 | - LogDebug('Inicial => "' + strDataHoraSRCACICSRV_INI + '" Final => "' + strDataHoraSRCACICSRV_FIM + '"'); | |
1713 | - | |
1714 | 1863 | // Caso o Cacic tenha sido baixado executo-o com parâmetro de configuração de servidor |
1715 | 1864 | if ((strDataHoraCACIC2_INI <> strDataHoraCACIC2_FIM) OR |
1716 | 1865 | (strDataHoraGERCOLS_INI <> strDataHoraGERCOLS_FIM)) then |
1717 | 1866 | Begin |
1718 | 1867 | v_te_texto_janela_instalacao := v_te_instala_informacoes_extras; |
1719 | - if (GetValorChaveRegEdit('HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\cacic2')=Dir + '\cacic2.exe') then | |
1868 | + | |
1869 | + if (GetValorChaveRegEdit('HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\cacic2')=Dir + '\cacic2.exe') and | |
1870 | + (not g_oCacic.isWindowsNTPlataform()) or | |
1871 | + (g_oCacic.isWindowsNTPlataform()) then | |
1720 | 1872 | Begin |
1721 | - if (v_exibe_informacoes = 'S') then | |
1722 | - MessageDlg(#13#10+#13#10+'Sistema CACIC'+#13#10+#13#10+v_te_instala_frase_sucesso+#13#10+#13#10+#13#10 + '======================================================' + #13#10 + v_te_texto_janela_instalacao+ #13#10 +'======================================================',mtInformation,[mbok],0); | |
1873 | + configs.Memo_te_instala_informacoes_extras.Lines.Add(#13#10+#13#10+'Sistema CACIC'+#13#10+#13#10+v_te_instala_frase_sucesso); | |
1723 | 1874 | End |
1724 | 1875 | else |
1725 | 1876 | Begin |
1726 | - if (v_exibe_informacoes = 'S') then | |
1727 | - MessageDlg(#13#10+#13#10+'Sistema CACIC'+#13#10+#13#10+v_te_instala_frase_insucesso+#13#10+#13#10+#13#10 + '======================================================' + #13#10 + v_te_texto_janela_instalacao+ #13#10 +'======================================================',mtInformation,[mbok],0); | |
1877 | + Configs.Memo_te_instala_informacoes_extras.Lines.Add(#13#10+#13#10+'Sistema CACIC'+#13#10+#13#10+v_te_instala_frase_insucesso); | |
1728 | 1878 | ComunicaInsucesso('1'); // O indicador "1" sinalizará que não foi devido a privilégio na estação |
1729 | 1879 | End; |
1730 | 1880 | End |
... | ... | @@ -1735,25 +1885,76 @@ begin |
1735 | 1885 | not bool_ExistsAutoRun or |
1736 | 1886 | (strDataHoraCACIC2_INI <> strDataHoraCACIC2_FIM) then |
1737 | 1887 | Begin |
1738 | - LogDebug('Executando '+Dir + '\cacic2.exe /ip_serv_cacic=' + v_ip_serv_cacic); | |
1739 | - | |
1740 | - // Caso tenha havido download de agentes principais, executar coletas imediatamente... | |
1741 | - if (strDataHoraCACIC2_INI <> strDataHoraCACIC2_FIM) then | |
1742 | - WinExec(PChar(Dir + '\cacic2.exe /ip_serv_cacic=' + v_ip_serv_cacic+ ' /execute'), SW_HIDE) | |
1888 | + // Se não for plataforma NT executo o agente principal | |
1889 | + if not (g_oCacic.isWindowsNTPlataform()) then | |
1890 | + Begin | |
1891 | + LogDebug('Executando '+Dir + '\cacic2.exe /ip_serv_cacic=' + v_ip_serv_cacic); | |
1892 | + if (strDataHoraCACIC2_INI <> strDataHoraCACIC2_FIM) then | |
1893 | + WinExec(PChar(Dir + '\cacic2.exe /ip_serv_cacic=' + v_ip_serv_cacic+ ' /execute'), SW_HIDE) | |
1894 | + else | |
1895 | + WinExec(PChar(Dir + '\cacic2.exe /ip_serv_cacic=' + v_ip_serv_cacic ), SW_HIDE); | |
1896 | + End | |
1743 | 1897 | else |
1744 | - WinExec(PChar(Dir + '\cacic2.exe /ip_serv_cacic=' + v_ip_serv_cacic ), SW_HIDE); | |
1898 | + Begin | |
1899 | + | |
1900 | + {*** 1 = SERVICE_STOPPED ***} | |
1901 | + {*** 2 = SERVICE_START_PENDING ***} | |
1902 | + {*** 3 = SERVICE_STOP_PENDING ***} | |
1903 | + {*** 4 = SERVICE_RUNNING ***} | |
1904 | + {*** 5 = SERVICE_CONTINUE_PENDING ***} | |
1905 | + {*** 6 = SERVICE_PAUSE_PENDING ***} | |
1906 | + {*** 7 = SERVICE_PAUSED ***} | |
1907 | + | |
1908 | + // Verifico se o serviço está instalado/rodando,etc. | |
1909 | + wordServiceStatus := ServiceGetStatus(nil,'cacicservice'); | |
1910 | + if (wordServiceStatus = 0) then | |
1911 | + Begin | |
1912 | + // Instalo e Habilito o serviço | |
1913 | + LogDiario('Instalando CACICservice...'); | |
1914 | + WinExec(PChar(HomeDrive + '\cacicsvc.exe -install'), SW_NORMAL); | |
1915 | + End | |
1916 | + else if ((wordServiceStatus < 4) or | |
1917 | + (wordServiceStatus > 4)) then | |
1918 | + Begin | |
1919 | + LogDiario('Iniciando CACICservice'); | |
1920 | + WinExec(PChar(HomeDrive + '\cacicsvc.exe -start'), SW_NORMAL); | |
1921 | + End | |
1922 | + else | |
1923 | + LogDiario('Não instalei o CACICservice. Já está rodando...'); | |
1924 | + End; | |
1745 | 1925 | End |
1746 | 1926 | else |
1747 | 1927 | LogDebug('Chave de Auto-Execução já existente ou Execução já iniciada...'); |
1928 | + End | |
1929 | + else | |
1930 | + Begin // Se NT/2000/XP/... | |
1931 | + if (v_exibe_informacoes = 'S') and not bool_CommandLine then | |
1932 | + MessageDLG(#13#10+'ATENÇÃO! Essa aplicação requer execução com nível administrativo.',mtError,[mbOK],0); | |
1933 | + LogDiario('Sem Privilégios: Necessário ser administrador "local" da estação'); | |
1934 | + ComunicaInsucesso('0'); // O indicador "0" (zero) sinalizará falta de privilégio na estação | |
1748 | 1935 | End; |
1749 | 1936 | Except |
1750 | 1937 | LogDiario('Falha na Instalação/Atualização'); |
1751 | 1938 | End; |
1939 | + | |
1940 | + Application.Terminate; | |
1941 | + { | |
1942 | + Considerando-se que o objeto se libera ao fim da aplicação | |
1752 | 1943 | try |
1753 | 1944 | g_oCacic.Free(); |
1754 | 1945 | except |
1755 | 1946 | end; |
1756 | - Application.Terminate; | |
1947 | + } | |
1948 | +end; | |
1949 | + | |
1950 | +function ServiceRunning(sMachine, sService: PChar): Boolean; | |
1951 | +begin | |
1952 | + Result := SERVICE_RUNNING = ServiceGetStatus(sMachine, sService); | |
1953 | +end; | |
1954 | + | |
1955 | +function ServiceStopped(sMachine, sService: PChar): Boolean; | |
1956 | +begin | |
1957 | + Result := SERVICE_STOPPED = ServiceGetStatus(sMachine, sService); | |
1757 | 1958 | end; |
1758 | 1959 | |
1759 | 1960 | function FindWindowByTitle(WindowTitle: string): Hwnd; |
... | ... | @@ -1855,7 +2056,6 @@ end; |
1855 | 2056 | procedure TForm1.FS_SetSecurity(p_Target : String); |
1856 | 2057 | var intAux : integer; |
1857 | 2058 | v_FS_Security : TNTFileSecurity; |
1858 | - boolFound : boolean; | |
1859 | 2059 | begin |
1860 | 2060 | v_FS_Security := TNTFileSecurity.Create(nil); |
1861 | 2061 | v_FS_Security.FileName := ''; | ... | ... |
chksis/chksis.dpr
... | ... | @@ -842,7 +842,7 @@ begin |
842 | 842 | v_DatFileName := Dir + '\cacic2.dat'; |
843 | 843 | |
844 | 844 | // Verifico existência dos dois principais objetos |
845 | - If (not FileExists(Dir + '\cacic2.exe')) or (not FileExists(Dir + '\modulos\ger_cols.exe')) or (not FileExists(Dir + '\modulos\srcacicsrv.exe')) Then | |
845 | + If (not FileExists(Dir + '\cacic2.exe')) or (not FileExists(Dir + '\modulos\ger_cols.exe')) Then | |
846 | 846 | Begin |
847 | 847 | // Busco as configurações para acesso ao ambiente FTP - Updates |
848 | 848 | Request_Config := TStringList.Create; |
... | ... | @@ -876,7 +876,6 @@ begin |
876 | 876 | log_diario('------------------------------'); |
877 | 877 | log_diario('Cacic2 - Agente do Systray.........: '+XML_RetornaValor('CACIC2', v_retorno)); |
878 | 878 | log_diario('Ger_Cols - Gerente de Coletas........: '+XML_RetornaValor('GER_COLS', v_retorno)); |
879 | - log_diario('SrCACIC - Suporte Remoto Seguro.....: '+XML_RetornaValor('SRCACICSRV', v_retorno)); | |
880 | 879 | log_diario('ChkSis - Verificador de Integridade: '+XML_RetornaValor('CHKSIS', v_retorno)); |
881 | 880 | log_diario(':::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::'); |
882 | 881 | |
... | ... | @@ -924,81 +923,47 @@ begin |
924 | 923 | |
925 | 924 | End; |
926 | 925 | |
927 | - // Verificação de versão do srcacic.exe e exclusão em caso de versão antiga | |
928 | - If (FileExists(Dir + '\modulos\srcacicsrv.exe')) Then | |
929 | - Begin | |
930 | - intAux := ChecaVersoesAgentes(Dir + '\modulos\srcacicsrv.exe'); | |
931 | - // 0 => Arquivo de versões ou informação inexistente | |
932 | - // 1 => Versões iguais | |
933 | - // 2 => Versões diferentes | |
934 | - if (intAux = 0) then | |
935 | - Begin | |
936 | - v_versao_local := StringReplace(trim(GetVersionInfo(Dir + '\modulos\srcacicsrv.exe')),'.','',[rfReplaceAll]); | |
937 | - v_versao_remota := StringReplace(XML_RetornaValor('SRCACICSRV' , v_retorno),'0103','',[rfReplaceAll]); | |
938 | - End; | |
939 | - | |
940 | - if (intAux = 2) or // Caso haja diferença na comparação de versões com "versoes_agentes.ini"... | |
941 | - (v_versao_local ='0000') then // Provavelmente versão muito antiga ou corrompida | |
942 | - Matar(Dir + '\modulos\', 'srcacicsrv.exe'); | |
943 | 926 | |
944 | - End; | |
927 | + // Tento detectar o Agente Principal e faço FTP caso não exista | |
928 | + If not FileExists(Dir + '\cacic2.exe') Then | |
929 | + begin | |
930 | + log_diario('Fazendo FTP de cacic2.exe a partir de ' + v_te_serv_updates + '/' + | |
931 | + v_nu_porta_serv_updates+'/'+ | |
932 | + v_nm_usuario_login_serv_updates + '/' + | |
933 | + v_te_path_serv_updates + ' para a pasta ' + Dir); | |
934 | + FTP(v_te_serv_updates, | |
935 | + v_nu_porta_serv_updates, | |
936 | + v_nm_usuario_login_serv_updates, | |
937 | + v_te_senha_login_serv_updates, | |
938 | + v_te_path_serv_updates, | |
939 | + 'cacic2.exe', | |
940 | + Dir); | |
941 | + bool_download_CACIC2 := true; | |
942 | + end; | |
945 | 943 | |
946 | - // Tento detectar o Agente Principal e faço FTP caso não exista | |
947 | - If not FileExists(Dir + '\cacic2.exe') Then | |
948 | - begin | |
949 | - log_diario('Fazendo FTP de cacic2.exe a partir de ' + v_te_serv_updates + '/' + | |
944 | + // Tento detectar o Gerente de Coletas e faço FTP caso não exista | |
945 | + If (not FileExists(Dir + '\modulos\ger_cols.exe')) Then | |
946 | + begin | |
947 | + log_diario('Fazendo FTP de ger_cols.exe a partir de ' + v_te_serv_updates + '/' + | |
950 | 948 | v_nu_porta_serv_updates+'/'+ |
951 | 949 | v_nm_usuario_login_serv_updates + '/' + |
952 | - v_te_path_serv_updates + ' para a pasta ' + Dir); | |
953 | - FTP(v_te_serv_updates, | |
954 | - v_nu_porta_serv_updates, | |
955 | - v_nm_usuario_login_serv_updates, | |
956 | - v_te_senha_login_serv_updates, | |
957 | - v_te_path_serv_updates, | |
958 | - 'cacic2.exe', | |
959 | - Dir); | |
960 | - bool_download_CACIC2 := true; | |
961 | - end; | |
962 | - | |
963 | - // Tento detectar o Gerente de Coletas e faço FTP caso não exista | |
964 | - If (not FileExists(Dir + '\modulos\ger_cols.exe')) Then | |
965 | - begin | |
966 | - log_diario('Fazendo FTP de ger_cols.exe a partir de ' + v_te_serv_updates + '/' + | |
967 | - v_nu_porta_serv_updates+'/'+ | |
968 | - v_nm_usuario_login_serv_updates + '/' + | |
969 | - v_te_path_serv_updates + ' para a pasta ' + Dir + '\modulos'); | |
970 | - | |
971 | - FTP(v_te_serv_updates, | |
972 | - v_nu_porta_serv_updates, | |
973 | - v_nm_usuario_login_serv_updates, | |
974 | - v_te_senha_login_serv_updates, | |
975 | - v_te_path_serv_updates, | |
976 | - 'ger_cols.exe', | |
977 | - Dir + '\modulos'); | |
978 | - end; | |
979 | - | |
980 | - // Tento detectar o Suporte Remoto Seguro e faço FTP caso não exista | |
981 | - If (not FileExists(Dir + '\modulos\srcacicsrv.exe')) Then | |
982 | - begin | |
983 | - log_diario('Fazendo FTP de srcacicsrv.exe a partir de ' + v_te_serv_updates + '/' + | |
984 | - v_nu_porta_serv_updates+'/'+ | |
985 | - v_nm_usuario_login_serv_updates + '/' + | |
986 | - v_te_path_serv_updates + ' para a pasta ' + Dir + '\modulos'); | |
987 | - | |
988 | - FTP(v_te_serv_updates, | |
989 | - v_nu_porta_serv_updates, | |
990 | - v_nm_usuario_login_serv_updates, | |
991 | - v_te_senha_login_serv_updates, | |
992 | - v_te_path_serv_updates, | |
993 | - 'srcacicsrv.exe', | |
994 | - Dir + '\modulos'); | |
995 | - end; | |
950 | + v_te_path_serv_updates + ' para a pasta ' + Dir + '\modulos'); | |
951 | + | |
952 | + FTP(v_te_serv_updates, | |
953 | + v_nu_porta_serv_updates, | |
954 | + v_nm_usuario_login_serv_updates, | |
955 | + v_te_senha_login_serv_updates, | |
956 | + v_te_path_serv_updates, | |
957 | + 'ger_cols.exe', | |
958 | + Dir + '\modulos'); | |
959 | + end; | |
960 | + | |
996 | 961 | |
997 | 962 | End; |
998 | 963 | |
999 | 964 | // 5 segundos para espera de possível FTP... |
1000 | 965 | Sleep(5000); |
1001 | - | |
966 | + { | |
1002 | 967 | Try |
1003 | 968 | // Crio a chave/valor chksis para autoexecução do Cacic, caso não exista esta chave/valor |
1004 | 969 | log_diario('Setando chave HLM../Run com ' + HomeDrive + '\chksis.exe'); |
... | ... | @@ -1006,6 +971,7 @@ begin |
1006 | 971 | Except |
1007 | 972 | End; |
1008 | 973 | |
974 | + | |
1009 | 975 | bool_ExistsAutoRun := false; |
1010 | 976 | if (GetValorChaveRegEdit('HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Run\cacic2')=Dir + '\cacic2.exe') then |
1011 | 977 | bool_ExistsAutoRun := true |
... | ... | @@ -1018,7 +984,7 @@ begin |
1018 | 984 | Except |
1019 | 985 | End; |
1020 | 986 | End; |
1021 | - | |
987 | + } | |
1022 | 988 | // Caso o Cacic tenha sido baixado executo-o com parâmetro de configuração de servidor |
1023 | 989 | if Posso_Rodar_CACIC or not bool_ExistsAutoRun then |
1024 | 990 | Begin |
... | ... | @@ -1030,7 +996,6 @@ begin |
1030 | 996 | else |
1031 | 997 | WinExec(PChar(Dir + '\cacic2.exe /ip_serv_cacic=' + v_ip_serv_cacic ), SW_HIDE); |
1032 | 998 | End; |
1033 | - log_diario('Não Executei. Chave de AutoExecução já existente...'); | |
1034 | 999 | end; |
1035 | 1000 | |
1036 | 1001 | const | ... | ... |
chksis/chksis.res
No preview for this file type
col_anvi/col_anvi.res
No preview for this file type
col_comp/col_comp.res
No preview for this file type
col_hard/col_hard.res
No preview for this file type
col_moni/col_moni.res
No preview for this file type
col_patr/col_patr.res
No preview for this file type
col_soft/col_soft.res
No preview for this file type
col_undi/col_undi.res
No preview for this file type
ger_cols/ger_cols.dpr
... | ... | @@ -67,7 +67,7 @@ var p_path_cacic, |
67 | 67 | v_DatFileName, |
68 | 68 | v_ResultCompress, |
69 | 69 | v_ResultUnCompress, |
70 | - v_te_so : string; | |
70 | + g_te_so : string; | |
71 | 71 | |
72 | 72 | var v_Aguarde : TextFile; |
73 | 73 | |
... | ... | @@ -1177,19 +1177,16 @@ Begin |
1177 | 1177 | strAux := 'A.B.C.D'; // Apenas para forçar que o Gerente extraia via _SERVER[REMOTE_ADDR] |
1178 | 1178 | |
1179 | 1179 | // Tratamentos de valores para tráfego POST: |
1180 | - // v_te_so => transformar ' ' em <ESPACE> Razão: o mmcrypt se perde quando encontra ' ' (espaço) | |
1181 | - v_te_so := StringReplace(v_te_so,' ','<ESPACE>',[rfReplaceAll]); | |
1182 | - | |
1183 | 1180 | v_AuxRequest.Values['te_node_address'] := StringReplace(EnCrypt(GetValorDatMemoria('TcpIp.TE_NODE_ADDRESS' , v_tstrCipherOpened),l_cs_compress),'+','<MAIS>',[rfReplaceAll]); |
1184 | - v_AuxRequest.Values['id_so'] := StringReplace(EnCrypt(g_oCacic.getWindowsStrId() , l_cs_compress),'+','<MAIS>',[rfReplaceAll]); | |
1185 | - v_AuxRequest.Values['te_so'] := StringReplace(EnCrypt(v_te_so ,l_cs_compress),'+','<MAIS>',[rfReplaceAll]); | |
1181 | + v_AuxRequest.Values['id_so'] := StringReplace(EnCrypt(g_oCacic.getWindowsStrId() ,l_cs_compress),'+','<MAIS>',[rfReplaceAll]); | |
1182 | + v_AuxRequest.Values['te_so'] := StringReplace(EnCrypt(g_te_so ,l_cs_compress),'+','<MAIS>',[rfReplaceAll]); | |
1186 | 1183 | v_AuxRequest.Values['te_ip'] := StringReplace(EnCrypt(strAux ,l_cs_compress),'+','<MAIS>',[rfReplaceAll]); |
1187 | 1184 | v_AuxRequest.Values['id_ip_rede'] := StringReplace(EnCrypt(GetValorDatMemoria('TcpIp.ID_IP_REDE' , v_tstrCipherOpened),l_cs_compress),'+','<MAIS>',[rfReplaceAll]); |
1188 | 1185 | v_AuxRequest.Values['te_workgroup'] := StringReplace(EnCrypt(GetValorDatMemoria('TcpIp.TE_WORKGROUP' , v_tstrCipherOpened),l_cs_compress),'+','<MAIS>',[rfReplaceAll]); |
1189 | 1186 | v_AuxRequest.Values['te_nome_computador']:= StringReplace(EnCrypt(GetValorDatMemoria('TcpIp.TE_NOME_COMPUTADOR', v_tstrCipherOpened),l_cs_compress),'+','<MAIS>',[rfReplaceAll]); |
1190 | - v_AuxRequest.Values['id_ip_estacao'] := StringReplace(EnCrypt(GetIP,l_cs_compress),'+','<MAIS>',[rfReplaceAll]); | |
1191 | - v_AuxRequest.Values['te_versao_cacic'] := StringReplace(EnCrypt(getVersionInfo(p_path_cacic + 'cacic2.exe'),l_cs_compress),'+','<MAIS>',[rfReplaceAll]); | |
1192 | - v_AuxRequest.Values['te_versao_gercols'] := StringReplace(EnCrypt(getVersionInfo(ParamStr(0)),l_cs_compress),'+','<MAIS>',[rfReplaceAll]); | |
1187 | + v_AuxRequest.Values['id_ip_estacao'] := StringReplace(EnCrypt(GetIP ,l_cs_compress),'+','<MAIS>',[rfReplaceAll]); | |
1188 | + v_AuxRequest.Values['te_versao_cacic'] := StringReplace(EnCrypt(getVersionInfo(p_path_cacic + 'cacic2.exe') ,l_cs_compress),'+','<MAIS>',[rfReplaceAll]); | |
1189 | + v_AuxRequest.Values['te_versao_gercols'] := StringReplace(EnCrypt(getVersionInfo(ParamStr(0)) ,l_cs_compress),'+','<MAIS>',[rfReplaceAll]); | |
1193 | 1190 | |
1194 | 1191 | v_Endereco_WS := GetValorDatMemoria('Configs.Endereco_WS', v_tstrCipherOpened); |
1195 | 1192 | v_Endereco_Servidor := GetValorDatMemoria('Configs.EnderecoServidor', v_tstrCipherOpened); |
... | ... | @@ -1243,7 +1240,7 @@ Begin |
1243 | 1240 | |
1244 | 1241 | if v_Debugs then |
1245 | 1242 | Begin |
1246 | - Log_Debug('te_so => '+v_te_so); | |
1243 | + Log_Debug('te_so => '+g_te_so); | |
1247 | 1244 | Log_Debug('Valores de REQUEST para envio ao Gerente WEB:'); |
1248 | 1245 | for intAux := 0 to v_AuxRequest.count -1 do |
1249 | 1246 | Log_Debug('#'+inttostr(intAux)+': '+v_AuxRequest[intAux]); |
... | ... | @@ -1267,9 +1264,11 @@ Begin |
1267 | 1264 | log_diario('Endereço: ' + strEndereco); |
1268 | 1265 | log_diario('Mensagem: ' + Response_CS.DataString); |
1269 | 1266 | result := '0'; |
1267 | + setValorDatMemoria('Configs.ConexaoOK','N',v_tstrCipherOpened); | |
1270 | 1268 | end |
1271 | 1269 | Else |
1272 | 1270 | Begin |
1271 | + setValorDatMemoria('Configs.ConexaoOK','S',v_tstrCipherOpened); | |
1273 | 1272 | result := Response_CS.DataString; |
1274 | 1273 | end; |
1275 | 1274 | Response_CS.Free; |
... | ... | @@ -2081,9 +2080,12 @@ Begin |
2081 | 2080 | Ver_UPD(StringReplace(v_scripter,'.exe','',[rfReplaceAll]),'Interpretador VBS' ,p_path_cacic + 'modulos\','',false); |
2082 | 2081 | Ver_UPD('chksis' ,'Verificador de Integridade do Sistema',PegaWinDir(nil)+'\' ,'',false); |
2083 | 2082 | |
2083 | + // O módulo de Suporte Remoto é opcional, através da opção Administração / Módulos | |
2084 | + { | |
2084 | 2085 | log_diario('Verificando nova versão para módulo Suporte Remoto Seguro.'); |
2085 | 2086 | // Caso encontre nova versão de srCACICsrv esta será gravada em modulos. |
2086 | 2087 | Ver_UPD('srcacicsrv','Suporte Remoto Seguro',p_path_cacic + 'modulos\','',false); |
2088 | + } | |
2087 | 2089 | |
2088 | 2090 | // Verifico existência do chksis.ini |
2089 | 2091 | if not (FileExists(PegaWinDir(nil) + 'chksis.ini')) then |
... | ... | @@ -2423,6 +2425,25 @@ Begin |
2423 | 2425 | strAux := GeraPalavraChave; |
2424 | 2426 | |
2425 | 2427 | SetValorDatMemoria('Configs.te_palavra_chave',strAux, v_tstrCipherOpened); |
2428 | + | |
2429 | + // Verifico se srCACIC está em execução e em caso positivo entrego a chave atualizada | |
2430 | + Matar(p_path_cacic+'Temp\','aguarde_SRCACIC.txt'); | |
2431 | + sleep(2000); | |
2432 | + if (FileExists(p_path_cacic + 'Temp\aguarde_SRCACIC.txt')) then | |
2433 | + Begin | |
2434 | + // Alguns cuidados necessários ao tráfego e recepção de valores pelo Gerente WEB | |
2435 | + // Some cares about send and receive at Gerente WEB | |
2436 | + v_Aux := StringReplace(strAux ,' ' ,'<ESPACE>' ,[rfReplaceAll]); | |
2437 | + v_Aux := StringReplace(v_Aux ,'"' ,'<AD>' ,[rfReplaceAll]); | |
2438 | + v_Aux := StringReplace(v_Aux ,'''','<AS>' ,[rfReplaceAll]); | |
2439 | + v_Aux := StringReplace(v_Aux ,'\' ,'<BarrInv>' ,[rfReplaceAll]); | |
2440 | + v_Aux := StringReplace(EnCrypt(v_Aux,l_cs_compress) ,'+' ,'<MAIS>' ,[rfReplaceAll]); | |
2441 | + | |
2442 | + log_DEBUG('Invocando "'+p_path_cacic + 'modulos\srcacicsrv.exe -update [' + v_Aux + ']' ); | |
2443 | + WinExec(PChar(p_path_cacic + 'modulos\srcacicsrv.exe -update [' + v_Aux + ']'),SW_NORMAL); | |
2444 | + End; | |
2445 | + | |
2446 | + | |
2426 | 2447 | Request_SVG.Values['te_palavra_chave'] := EnCrypt(strAux,l_cs_compress); |
2427 | 2448 | v_te_serv_cacic := GetValorDatMemoria('Configs.EnderecoServidor', v_tstrCipherOpened); |
2428 | 2449 | |
... | ... | @@ -2512,6 +2533,7 @@ Begin |
2512 | 2533 | SetValorDatMemoria('Configs.CS_COLETA_COMPARTILHAMENTOS' ,UpperCase(DeCrypt(XML_RetornaValor('cs_coleta_compart' , strRetorno),true)), v_tstrCipherOpened); |
2513 | 2534 | SetValorDatMemoria('Configs.CS_COLETA_UNID_DISC' ,UpperCase(DeCrypt(XML_RetornaValor('cs_coleta_unid_disc' , strRetorno),true)), v_tstrCipherOpened); |
2514 | 2535 | SetValorDatMemoria('Configs.CS_COLETA_PATRIMONIO' ,UpperCase(DeCrypt(XML_RetornaValor('cs_coleta_patrimonio' , strRetorno),true)), v_tstrCipherOpened); |
2536 | + SetValorDatMemoria('Configs.CS_SUPORTE_REMOTO' ,UpperCase(DeCrypt(XML_RetornaValor('cs_suporte_remoto' , strRetorno),true)), v_tstrCipherOpened); | |
2515 | 2537 | SetValorDatMemoria('Configs.DT_VERSAO_CACIC2_DISPONIVEL' ,DeCrypt(XML_RetornaValor('dt_versao_cacic2_disponivel' , strRetorno),true) , v_tstrCipherOpened); |
2516 | 2538 | SetValorDatMemoria('Configs.TE_HASH_CACIC2' ,DeCrypt(XML_RetornaValor('te_hash_cacic2' , strRetorno),true) , v_tstrCipherOpened); |
2517 | 2539 | SetValorDatMemoria('Configs.DT_VERSAO_GER_COLS_DISPONIVEL' ,DeCrypt(XML_RetornaValor('dt_versao_ger_cols_disponivel' , strRetorno),true) , v_tstrCipherOpened); |
... | ... | @@ -2746,9 +2768,13 @@ Begin |
2746 | 2768 | // Caso encontre nova versão de Ger_Cols esta será gravada em temp e ocorrerá o autoupdate. |
2747 | 2769 | Ver_UPD('ger_cols','Gerente de Coletas',p_path_cacic + 'modulos\','Temp',false); |
2748 | 2770 | |
2749 | - log_diario('Verificando nova versão para módulo Suporte Remoto Seguro.'); | |
2750 | - // Caso encontre nova versão de srCACICsrv esta será gravada em modulos. | |
2751 | - Ver_UPD('srcacicsrv','Suporte Remoto Seguro',p_path_cacic + 'modulos\','Modulos',false); | |
2771 | + // O módulo de Suporte Remoto é opcional... | |
2772 | + if (GetValorDatMemoria('Configs.CS_SUPORTE_REMOTO' , v_tstrCipherOpened) = 'S') then | |
2773 | + Begin | |
2774 | + log_diario('Verificando nova versão para módulo Suporte Remoto Seguro.'); | |
2775 | + // Caso encontre nova versão de srCACICsrv esta será gravada em modulos. | |
2776 | + Ver_UPD('srcacicsrv','Suporte Remoto Seguro',p_path_cacic + 'modulos\','Modulos',false); | |
2777 | + End; | |
2752 | 2778 | |
2753 | 2779 | if (FileExists(p_path_cacic + 'Temp\ger_cols.exe')) or |
2754 | 2780 | (FileExists(p_path_cacic + 'Temp\cacic2.exe')) then |
... | ... | @@ -3359,7 +3385,7 @@ Begin |
3359 | 3385 | else begin |
3360 | 3386 | // Atualiza a data de última coleta |
3361 | 3387 | SetValorDatMemoria('Configs.DT_HR_ULTIMA_COLETA',FormatDateTime('YYYYmmddHHnnss', Now), v_tstrCipherOpened); |
3362 | - log_diario('Todos os dados coletados foram enviados ao Gerente WEB.'); | |
3388 | + log_diario('Os dados coletados - e não redundantes - foram enviados ao Gerente WEB.'); | |
3363 | 3389 | end; |
3364 | 3390 | end; |
3365 | 3391 | Except |
... | ... | @@ -3387,11 +3413,6 @@ begin |
3387 | 3413 | For intAux := 0 to tstrTripa1.Count -2 do |
3388 | 3414 | p_path_cacic := p_path_cacic + tstrTripa1[intAux] + '\'; |
3389 | 3415 | |
3390 | - g_oCacic.setCacicPath(p_path_cacic); | |
3391 | - | |
3392 | - // Obtem a string de identificação do SO (v_te_so), para uso nas comunicações com o Gerente WEB. | |
3393 | - v_te_so := g_oCacic.getWindowsStrId(); | |
3394 | - | |
3395 | 3416 | v_Debugs := false; |
3396 | 3417 | if DirectoryExists(p_path_cacic + 'Temp\Debugs') then |
3397 | 3418 | if (FormatDateTime('ddmmyyyy', GetFolderDate(p_path_cacic + 'Temp\Debugs')) = FormatDateTime('ddmmyyyy', date)) then |
... | ... | @@ -3400,6 +3421,8 @@ begin |
3400 | 3421 | log_DEBUG('Pasta "' + p_path_cacic + 'Temp\Debugs" com data '+FormatDateTime('dd-mm-yyyy', GetFolderDate(p_path_cacic + 'Temp\Debugs'))+' encontrada. DEBUG ativado.'); |
3401 | 3422 | End; |
3402 | 3423 | |
3424 | + g_oCacic.setCacicPath(p_path_cacic); | |
3425 | + | |
3403 | 3426 | For intAux := 1 to ParamCount do |
3404 | 3427 | if LowerCase(Copy(ParamStr(intAux),1,13)) = '/p_cipherkey=' then |
3405 | 3428 | Begin |
... | ... | @@ -3429,8 +3452,13 @@ begin |
3429 | 3452 | v_tstrCipherOpened := TStrings.Create; |
3430 | 3453 | v_tstrCipherOpened := CipherOpen(v_DatFileName); |
3431 | 3454 | |
3455 | + // Obtem a string de identificação do SO (g_te_so), para uso nas comunicações com o Gerente WEB. | |
3456 | + g_te_so := g_oCacic.getWindowsStrId(); | |
3457 | + | |
3432 | 3458 | // Não tirar desta posição |
3433 | - SetValorDatMemoria('Configs.ID_SO',g_oCacic.getWindowsStrId(), v_tstrCipherOpened); | |
3459 | + SetValorDatMemoria('Configs.ID_SO',g_te_so, v_tstrCipherOpened); | |
3460 | + | |
3461 | + log_DEBUG('Te_So obtido: "' + g_te_so +'"'); | |
3434 | 3462 | |
3435 | 3463 | v_scripter := 'wscript.exe'; |
3436 | 3464 | // A existência e bloqueio do arquivo abaixo evitará que Cacic2.exe chame o Ger_Cols quando este estiver em funcionamento | ... | ... |
ger_cols/ger_cols.res
No preview for this file type
ini_cols/ini_cols.res
No preview for this file type
main.dfm
1 | 1 | object FormularioGeral: TFormularioGeral |
2 | - Left = 300 | |
3 | - Top = 107 | |
2 | + Left = 301 | |
3 | + Top = 108 | |
4 | 4 | HorzScrollBar.Visible = False |
5 | 5 | VertScrollBar.Visible = False |
6 | 6 | BiDiMode = bdLeftToRight |
... | ... | @@ -143,10 +143,10 @@ object FormularioGeral: TFormularioGeral |
143 | 143 | TextHeight = 13 |
144 | 144 | object Panel3: TPanel |
145 | 145 | Left = 648 |
146 | - Top = 3 | |
146 | + Top = -1 | |
147 | 147 | Width = 68 |
148 | - Height = 593 | |
149 | - Color = clCaptionText | |
148 | + Height = 597 | |
149 | + Color = clGray | |
150 | 150 | TabOrder = 3 |
151 | 151 | object pnVersao: TPanel |
152 | 152 | Left = 6 |
... | ... | @@ -168,8 +168,8 @@ object FormularioGeral: TFormularioGeral |
168 | 168 | object bt_Fechar_Infos_Gerais: TBitBtn |
169 | 169 | Left = 6 |
170 | 170 | Top = 252 |
171 | - Width = 60 | |
172 | - Height = 27 | |
171 | + Width = 61 | |
172 | + Height = 33 | |
173 | 173 | Caption = 'Fechar' |
174 | 174 | Font.Charset = DEFAULT_CHARSET |
175 | 175 | Font.Color = clWindowText |
... | ... | @@ -1339,9 +1339,9 @@ object FormularioGeral: TFormularioGeral |
1339 | 1339 | end |
1340 | 1340 | object Panel1: TPanel |
1341 | 1341 | Left = 645 |
1342 | - Top = 2 | |
1342 | + Top = 0 | |
1343 | 1343 | Width = 5 |
1344 | - Height = 591 | |
1344 | + Height = 597 | |
1345 | 1345 | Color = clGreen |
1346 | 1346 | TabOrder = 1 |
1347 | 1347 | end |
... | ... | @@ -1367,11 +1367,11 @@ object FormularioGeral: TFormularioGeral |
1367 | 1367 | Left = 674 |
1368 | 1368 | Top = 2 |
1369 | 1369 | end |
1370 | - object PopupMenu1: TPopupMenu | |
1370 | + object Popup_Menu_Contexto: TPopupMenu | |
1371 | 1371 | MenuAnimation = [maLeftToRight, maRightToLeft, maTopToBottom, maBottomToTop] |
1372 | - OnPopup = PopupMenu1Popup | |
1372 | + OnPopup = Popup_Menu_ContextoPopup | |
1373 | 1373 | Left = 674 |
1374 | - Top = 58 | |
1374 | + Top = 86 | |
1375 | 1375 | object Mnu_LogAtividades: TMenuItem |
1376 | 1376 | Caption = 'Log de Atividades' |
1377 | 1377 | OnClick = ExibirLogAtividades |
... | ... | @@ -1401,4 +1401,154 @@ object FormularioGeral: TFormularioGeral |
1401 | 1401 | OnClick = Sair |
1402 | 1402 | end |
1403 | 1403 | end |
1404 | + object Timer_InicializaTray: TTimer | |
1405 | + Interval = 60000 | |
1406 | + OnTimer = Timer_InicializaTrayTimer | |
1407 | + Left = 674 | |
1408 | + Top = 58 | |
1409 | + end | |
1410 | + object imgList_Icones: TImageList | |
1411 | + ShareImages = True | |
1412 | + Left = 674 | |
1413 | + Top = 114 | |
1414 | + Bitmap = { | |
1415 | + 494C010103000400040010001000FFFFFFFFFF10FFFFFFFFFFFFFFFF424D3600 | |
1416 | + 0000000000003600000028000000400000001000000001002000000000000010 | |
1417 | + 00000000000000000000000000000000000000000000021C7800000000000000 | |
1418 | + 0000000000000000000000000000000000000000000000000000000000000000 | |
1419 | + 0000000000000000000000125B000000000000000000C0C4D7FF000000000000 | |
1420 | + 00001E1E1EFF0000000000000000000000000000000000000000000000000000 | |
1421 | + 00000000000000000000F0F1F5FF0000000000000000C0C4D7FF000000000000 | |
1422 | + 0000000000000000000000000000000000000000000000000000000000000000 | |
1423 | + 00000000000000000000F0F1F5FF000000000000000000000000000000000000 | |
1424 | + 0000000000000000000000000000000000000000000000000000000000000000 | |
1425 | + 000000000000000000000000000000000000000000000032FD00000000000000 | |
1426 | + 0000000000000000000000000000000000000000000000000000000000000000 | |
1427 | + 000000000000000000000032FD0000000000404B7BFF0032FDFF000000000000 | |
1428 | + 00001E1E1EFFB9B9B9FF00000000000000000000000000000000000000000000 | |
1429 | + 000000000000405EDCFF002BDCFF00000000404B7BFF0032FDFF000000000000 | |
1430 | + 00000000000000000000000000001E1E1EFF1E1E1EFF1E1E1EFF000000000000 | |
1431 | + 000000000000405EDCFF002BDCFF000000000000000000000000000000000000 | |
1432 | + 0000000000000000000000000000000000000000000000000000000000000000 | |
1433 | + 000000000000000000000000000000000000305159000032FD00163886000000 | |
1434 | + 0000000000000000000000000000000000000000000000000000000000000000 | |
1435 | + 000000000000163886000032FD001E333A000C32A8FF0131F6FFC0C7E3FF0000 | |
1436 | + 00001E1E1EFF1E1E1EFFC0C0C0FF000000000000000000000000000000000000 | |
1437 | + 000000000000032FDBFF002EF0FFC0C3CCFF0C32A8FF0131F6FFC0C7E3FF0000 | |
1438 | + 000000000000000000001E1E1EFF0000FFFF0000FFFF1E1E1EFF000000000000 | |
1439 | + 000000000000032FDBFF002EF0FFC0C3CCFF0000000000000000000000000000 | |
1440 | + 0000000000000000000000000000000000000000000000000000000000000000 | |
1441 | + 00000000000000000000000000000000000083DADC009DFFFE0083DADC000000 | |
1442 | + 00000000000025375E005078C900679AFE00679AFE004B71BB00000000000000 | |
1443 | + 00000000000092F3F3009DFFFE005F9DA00098F8F7FF6AB1B3FFB8D3D3FF0000 | |
1444 | + 00001E1E1EFF62F6FFFF1E1E1EFF2E4065FFAFBFDEFFD0D7E8FF000000000000 | |
1445 | + 000000000000A6FCFCFF88E3E3FFD7E9EAFF98F8F7FF6AB1B3FFB8D3D3FF0000 | |
1446 | + 000000000000CCD2DDFF1E1E1EFF0000FFFF0000FFFF1E1E1EFF000000000000 | |
1447 | + 000000000000A6FCFCFF88E3E3FFD7E9EAFF0000000000000000000000000000 | |
1448 | + 0000000000000000000000000000000000000000000000000000000000000000 | |
1449 | + 0000000000000000000000000000000000001126080098FDFC0030554500354F | |
1450 | + 85006DA2FF00679AFE00679AFE0039558E004262A400679AFE00679AFE006DA2 | |
1451 | + FF0000000000345951008FEEEB0011211100487E6AFF9BFEFDFFA8B9B8FFD2DB | |
1452 | + EEFF1E1E1EFF4AE9F4FF5EEDFFFF1E1E1EFF5074B9FF679AFEFF6BA0FFFF3B59 | |
1453 | + 95FF000000008FE6E7FF8AE5E4FFC4C9C6FF487E6AFF9BFEFDFFA8B9B8FFD2DB | |
1454 | + EEFF689CFAFF679AFEFF6394F3FF2F4673FF334C7DFF679AFEFF6BA0FFFF3B59 | |
1455 | + 95FF000000008FE6E7FF8AE5E4FFC4C9C6FF0000000000000000000000000000 | |
1456 | + 0000000000000000000000000000000000000000000000000000000000000000 | |
1457 | + 0000000000000000000000000000000000000000000070E136001D2C49002EB8 | |
1458 | + E700679AFE00679AFE002A3F6900679AFE00679AFE002F477700679AFE00679A | |
1459 | + FE002EB8E7001E333A0070E1360000000000587251FF51A42AFF41639EFF5097 | |
1460 | + E8FF1E1E1EFF45E8F2FF5EEAFFFF5FEEFFFF1E1E1EFF4F72B0FF679AFEFF6498 | |
1461 | + FAFF4B93DFFF468F25FF61C330FF00000000587251FF51A42AFF41639EFF5097 | |
1462 | + E8FF679AFEFF679AFEFF1E1E1EFF0000FFFF0000FFFF1E1E1EFF679AFEFF6498 | |
1463 | + FAFF4B93DFFF468F25FF61C330FF000000000000000000000000000000000000 | |
1464 | + 0000000000000000000000000000000000000000000000000000000000000000 | |
1465 | + 000000000000000000000000000000000000000000004262A400679AFE0030C0 | |
1466 | + F00030C0F0006494F800679AFE00679AFE00679AFE00679AFE005F91F0002EB8 | |
1467 | + E70030C8F9006DA2FF004B71BB0000000000D2D2D4FF2F5B1EFF3FA2E2FF3F99 | |
1468 | + D9FF42A0E3FF1E1E1EFF5EEAFFFF5EEAFFFF61F2FFFF1E1E1EFF4E72B8FF33B5 | |
1469 | + E9FF33B9EDFF36577FFFA3AEB5FF00000000D2D2D4FF2F5B1EFF3FA2E2FF3F99 | |
1470 | + D9FF42A0E3FF679AFEFF1E1E1EFF0000FFFF0000FFFF1E1E1EFF5F95F3FF33B5 | |
1471 | + E9FF33B9EDFF36577FFFA3AEB5FF000000000000000000000000000000000000 | |
1472 | + 0000000000000000000000000000000000000000000000000000000000000000 | |
1473 | + 000000000000000000000000000000000000679AFE00679AFE00679AFE00679A | |
1474 | + FE005F91F000679AFE00679AFE00679AFE00679AFE00679AFE00679AFE005690 | |
1475 | + E600679AFE00679AFE00679AFE005A88E2006090EEFF679AFEFF679AFEFF40A1 | |
1476 | + E1FF5C93EFFF1E1E1EFF5FEDFFFF5EEAFFFF5EEAFFFF60F1FFFF1E1E1EFF2C8D | |
1477 | + B1FF6498FAFF679AFEFF679AFEFFCBD0DAFF6090EEFF679AFEFF679AFEFF40A1 | |
1478 | + E1FF5C93EFFF679AFEFF1E1E1EFF0000FFFF0000FFFF1E1E1EFF679AFEFF38B0 | |
1479 | + EAFF6498FAFF679AFEFF679AFEFFCBD0DAFF0000000000000000000000000000 | |
1480 | + 0000000000000000000000000000000000000000000000000000000000000000 | |
1481 | + 0000000000000000000000000000000000004262A400679AFE00679AFE00679A | |
1482 | + FE005A88E2005078C9004262A400679AFE00679AFE005781D9004B71BB005781 | |
1483 | + D900679AFE00679AFE00679AFE004669B0006597F9FF679AFEFF679AFEFF1E1E | |
1484 | + 1EFF55EBFFFF55EAFFFF5EEAFFFF1E1E1EFF1E1E1EFF1E1E1EFF1E1E1EFF1E1E | |
1485 | + 1EFF5F8DE7FF679AFEFF679AFEFF526385FF6597F9FF679AFEFF679AFEFF679A | |
1486 | + FEFF6394F6FF6090EFFF1E1E1EFF0000FFFF0000FFFF0000FFFF1E1E1EFF6395 | |
1487 | + F7FF679AFEFF679AFEFF679AFEFF526385FF0000000000000000000000000000 | |
1488 | + 0000000000000000000000000000000000000000000000000000000000000000 | |
1489 | + 000000000000000000000000000000000000000000003D5C99005E8DE900679A | |
1490 | + FE00679AFE00679AFE00679AFE00679AFE00679AFE00679AFE00679AFE00679A | |
1491 | + FE00679AFE005A88E20025375E000000000004070BFF6190F0FF6698FCFF1E1E | |
1492 | + 1EFF4FE9F5FF5EEAFFFF5EEAFFFF5FEEFFFF1E1E1EFF1E1E1EFF1E1E1EFF1E1E | |
1493 | + 1EFF1E1E1EFF6496F7FF263A5EFFD0D0D0FF04070BFF6190F0FF6698FCFF679A | |
1494 | + FEFF6BA0FFFF679AFEFF679AFEFF2F4F90FF0000FFFF0000FFFF0000FFFF1E1E | |
1495 | + 1EFF6699FDFF6496F7FF263A5EFFD0D0D0FF0000000000000000000000000000 | |
1496 | + 0000000000000000000000000000000000000000000000000000000000000000 | |
1497 | + 0000000000000000000000000000000000000000000000000000000000000000 | |
1498 | + 0000000000000000000000000000000000000000000000000000000000000000 | |
1499 | + 000000000000000000000000000000000000404040FF000000FF000000FF0203 | |
1500 | + 03FF034F5EFF5EEBFFFF5EEAFFFF5EEAFFFF23E2F8FF1F2228FF0F1626FF0206 | |
1501 | + 0CFF000000FF000000FF000000FF00000000404040FF000000FF000000FF0203 | |
1502 | + 03FF0000FFFF0000FFFF1E1E1EFF476BB2FF2A3F6AFF0000FFFF0000FFFF1E1E | |
1503 | + 1EFF000000FF000000FF000000FF000000000000000000000000000000000000 | |
1504 | + 0000000000000000000000000000000000000000000000000000000000000000 | |
1505 | + 0000000000000000000000000000000000000000000000092E00000724000007 | |
1506 | + 2400000724000007240000072400000724000007240000072400000724000007 | |
1507 | + 2400000724000007240000092E000000000000000000000109FF000109FF0001 | |
1508 | + 09FF1E1E1EFF5AEFFDFF5EEAFFFF5EEAFFFF5EEAFFFF149DADFF0D0D0EFF0001 | |
1509 | + 09FF000109FF000109FF000105FF0000000000000000000109FF000109FF0001 | |
1510 | + 09FF0000FFFF0000FFFF1E1E1EFF1E1E1EFF000109FF1E1E1EFF0000FFFF1E1E | |
1511 | + 1EFF000109FF000109FF000105FF000000000000000000000000000000000000 | |
1512 | + 0000000000000000000000000000000000000000000000000000000000000000 | |
1513 | + 00000000000000000000000000000000000000000000000000004DBCB1004DBC | |
1514 | + B1004DBCB1004DBCB1004DBCB1004DBCB1004DBCB1004DBCB1004DBCB1004DBC | |
1515 | + B1004DBCB1004DBCB1000000000000000000000000001B3C7DFF144486FF1444 | |
1516 | + 86FF1E1E1EFF0AA2B7FF5EEAFFFF5EEAFFFF5EEAFFFF5EEAFFFF10353AFF1E1E | |
1517 | + 1EFF144486FF134081FFD0D2E0FF00000000000000001B3C7DFF144486FF1444 | |
1518 | + 86FF0000FFFF0000FFFF0000FFFF1E1E1EFF1E1E1EFF0000FFFF0000FFFF1E1E | |
1519 | + 1EFF1E1E1EFF134081FFD0D2E0FF000000000000000000000000000000000000 | |
1520 | + 0000000000000000000000000000000000000000000000000000000000000000 | |
1521 | + 0000000000000000000000000000000000000000000000000000296355002757 | |
1522 | + BC006DC1830027636C00325B7F0034662900113562003C6C960060B150001247 | |
1523 | + A1005693AB0000000000000000000000000000000000000000005E8A57FF061C | |
1524 | + 62FF355B54FF1D311FFF5DEEFFFF5EEAFFFF5EEAFFFF5EEAFFFF2AC4D5FF1D1F | |
1525 | + 1CFF0B165DFFE9FAF5FF000000000000000000000000000000005E8A57FF061C | |
1526 | + 62FF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF0000FFFF1E1E | |
1527 | + 1EFF1E1E1EFFE9FAF5FF00000000000000000000000000000000000000000000 | |
1528 | + 0000000000000000000000000000000000000000000000000000000000000000 | |
1529 | + 00000000000000000000000000000000000000000000000000001854B8006ABD | |
1530 | + FE006ECE4F000B3AB70073C1D4005AB32B000333EE0089E9FF006BD335000026 | |
1531 | + C10077C7CB004E9F2A00000000000000000000000000D0D7F5FF54AE4DFF1946 | |
1532 | + E0FF88ECB6FF418E54FF54F0FFFF5EEAFFFF5EEAFFFF5EEAFFFF5EEAFFFF1768 | |
1533 | + 74FF1E1E1EFF78D39AFF000000000000000000000000D0D7F5FF54AE4DFF1946 | |
1534 | + E0FF5FA87CFF1E1E1EFF1E1E1EFF1E1E1EFF1E1E1EFF1E1E1EFF1E1E1EFF1E1E | |
1535 | + 1EFF1E1E1EFF78D39AFF00000000000000000000000000000000000000000000 | |
1536 | + 0000000000000000000000000000000000000000000000000000000000000000 | |
1537 | + 0000000000000000000000000000000000000000000000000000000000000000 | |
1538 | + 000075CD91003B855B000000000000000000000000000000000063B55900205C | |
1539 | + 8E000000000000000000000000000000000000000000000000006BC061FF1E4A | |
1540 | + CFFF77CBC0FF639D64FF1E1E1EFF1E1E1EFF1E1E1EFF1E1E1EFF1E1E1EFF1E1E | |
1541 | + 1EFF555555FF1E1E1EFF000000000000000000000000000000006BC061FF1E4A | |
1542 | + CFFF77CBC0FF639D64FF1E1E1EFF1E1E1EFF1E1E1EFF1E1E1EFF1E1E1EFF1E1E | |
1543 | + 1EFF557FEFFF88E1B9FF00000000000000000000000000000000000000000000 | |
1544 | + 0000000000000000000000000000000000000000000000000000000000000000 | |
1545 | + 000000000000000000000000000000000000424D3E000000000000003E000000 | |
1546 | + 2800000040000000100000000100010000000000800000000000000000000000 | |
1547 | + 000000000000000000000000FFFFFF00BFFDB7FDBFFD0000BFFD33F93E390000 | |
1548 | + 1FF811F81C380000183810381838000000080008000800008001000100010000 | |
1549 | + 8001000100010000000000000000000000000000000000000001000000000000 | |
1550 | + 80010001000100008001800180010000C003800180010000C007C003C0030000 | |
1551 | + C003800380030000F3CFC003C003000000000000000000000000000000000000 | |
1552 | + 000000000000} | |
1553 | + end | |
1404 | 1554 | end | ... | ... |
main.pas
... | ... | @@ -37,8 +37,11 @@ uses Windows, |
37 | 37 | DCPbase64, |
38 | 38 | ComCtrls, |
39 | 39 | IdBaseComponent, |
40 | - IdComponent, Buttons, | |
41 | - CACIC_Library; | |
40 | + IdComponent, | |
41 | + Buttons, | |
42 | + CACIC_Library, | |
43 | + ImgList, | |
44 | + Graphics; | |
42 | 45 | //IdTCPServer; |
43 | 46 | //IdFTPServer; |
44 | 47 | |
... | ... | @@ -49,16 +52,16 @@ var p_path_cacic, |
49 | 52 | p_path_cacic_ini, |
50 | 53 | p_Shell_Command, |
51 | 54 | p_Shell_Path, |
52 | - v_versao : string; | |
53 | - BatchFile : TStringList; | |
55 | + v_versao, | |
56 | + g_te_so, | |
54 | 57 | v_CipherKey, |
55 | 58 | v_SeparatorKey, |
56 | 59 | v_IV, |
57 | 60 | v_DatFileName, |
58 | 61 | v_DataCacic2DAT, |
59 | 62 | v_Tamanho_Arquivo, |
60 | - v_te_so, | |
61 | 63 | strConfigsPatrimonio : string; |
64 | + BatchFile : TStringList; | |
62 | 65 | v_tstrCipherOpened : TStrings; |
63 | 66 | boolCrypt, |
64 | 67 | boolDebugs : Boolean; |
... | ... | @@ -106,7 +109,7 @@ type |
106 | 109 | Pn_Linha5_TCPIP: TPanel; |
107 | 110 | Timer_Nu_Intervalo: TTimer; |
108 | 111 | Timer_Nu_Exec_Apos: TTimer; |
109 | - PopupMenu1: TPopupMenu; | |
112 | + Popup_Menu_Contexto: TPopupMenu; | |
110 | 113 | Mnu_LogAtividades: TMenuItem; |
111 | 114 | Mnu_Configuracoes: TMenuItem; |
112 | 115 | Mnu_ExecutarAgora: TMenuItem; |
... | ... | @@ -161,6 +164,8 @@ type |
161 | 164 | Panel3: TPanel; |
162 | 165 | pnVersao: TPanel; |
163 | 166 | bt_Fechar_Infos_Gerais: TBitBtn; |
167 | + Timer_InicializaTray: TTimer; | |
168 | + imgList_Icones: TImageList; | |
164 | 169 | procedure RemoveIconesMortos; |
165 | 170 | procedure ChecaCONFIGS; |
166 | 171 | procedure CriaFormSenha(Sender: TObject); |
... | ... | @@ -178,6 +183,7 @@ type |
178 | 183 | procedure Mnu_InfosPatrimoniaisClick(Sender: TObject); |
179 | 184 | procedure HabilitaTCP; |
180 | 185 | procedure HabilitaPatrimonio; |
186 | + procedure HabilitaSuporteRemoto; | |
181 | 187 | procedure Matar(v_dir,v_files: string); |
182 | 188 | Procedure DelValorReg(Chave: String); |
183 | 189 | |
... | ... | @@ -198,13 +204,13 @@ type |
198 | 204 | const AUsername, APassword: String; var AAuthenticated: Boolean); |
199 | 205 | } |
200 | 206 | procedure Mnu_SuporteRemotoClick(Sender: TObject); |
201 | -// procedure StartVNCServer; | |
202 | - procedure PopupMenu1Popup(Sender: TObject); | |
207 | + procedure Popup_Menu_ContextoPopup(Sender: TObject); | |
208 | + procedure Timer_InicializaTrayTimer(Sender: TObject); | |
203 | 209 | private |
204 | 210 | ShutdownEmExecucao : Boolean; |
205 | 211 | IsMenuOpen : Boolean; |
206 | 212 | NotifyStruc : TNotifyIconData; {Estrutura do tray icon} |
207 | - procedure InicializaTray(v_Hint:string); | |
213 | + procedure InicializaTray; | |
208 | 214 | procedure Finaliza; |
209 | 215 | procedure VerificaDebugs; |
210 | 216 | procedure MontaVetoresPatrimonio(p_strConfigs : String); |
... | ... | @@ -220,7 +226,6 @@ type |
220 | 226 | // Shutdown do Windows e "derrubar" o Cacic. |
221 | 227 | procedure WMQueryEndSession(var Msg : TWMQueryEndSession); Message WM_QUERYENDSESSION; |
222 | 228 | procedure WMMENUSELECT(var msg: TWMMENUSELECT); message WM_MENUSELECT; |
223 | - function GetFileHash(strFileName : String) : String; | |
224 | 229 | public |
225 | 230 | Function Implode(p_Array : TStrings ; p_Separador : String) : String; |
226 | 231 | function HomeDrive : string; |
... | ... | @@ -239,15 +244,6 @@ type |
239 | 244 | |
240 | 245 | var FormularioGeral : TFormularioGeral; |
241 | 246 | boolServerON : Boolean; |
242 | - handleStartServerThreadID, | |
243 | - handleStartVNCThreadID, | |
244 | - handleCacicRC : THandle; | |
245 | - dwordStartServerID, | |
246 | - dwordStartVNCID : dword; | |
247 | - procStartServer : procedure; stdcall; | |
248 | - procStopServer : procedure; stdcall; | |
249 | - threadCacicRC : TThread; | |
250 | - | |
251 | 247 | |
252 | 248 | // Some constants that are dependant on the cipher being used |
253 | 249 | // Assuming MCRYPT_RIJNDAEL_128 (i.e., 128bit blocksize, 256bit keysize) |
... | ... | @@ -260,7 +256,7 @@ implementation |
260 | 256 | {$R *.dfm} |
261 | 257 | |
262 | 258 | Uses StrUtils, Inifiles, frmConfiguracoes, frmSenha, frmLog, |
263 | - Math,md5,LibXmlParser,WinVNC; | |
259 | + Math,LibXmlParser,WinVNC; | |
264 | 260 | |
265 | 261 | // Estruturas de dados para armazenar os itens da uon1, uon1a e uon2 |
266 | 262 | type |
... | ... | @@ -291,16 +287,6 @@ var VetorUON1 : TVetorUON1; |
291 | 287 | VetorUON1a : TVetorUON1a; |
292 | 288 | VetorUON2 : TVetorUON2; |
293 | 289 | |
294 | -// Para cálculo de HASH de determinado arquivo. | |
295 | -// Objetivo principal: Verificar autenticidade de agentes quando em trabalho cooperativo | |
296 | -// Anderson Peterle - Dataprev/ES - 08/Maio/2008 | |
297 | -function TFormularioGeral.GetFileHash(strFileName : String) : String; | |
298 | -Begin | |
299 | - Result := 'Arquivo "'+strFileName+'" Inexistente!'; | |
300 | - if (FileExists(strFileName)) then | |
301 | - Result := MD5Print(MD5File(strFileName)); | |
302 | -End; | |
303 | - | |
304 | 290 | // Pad a string with zeros so that it is a multiple of size |
305 | 291 | function TFormularioGeral.PadWithZeros(const str : string; size : integer) : string; |
306 | 292 | var |
... | ... | @@ -930,7 +916,6 @@ end; |
930 | 916 | |
931 | 917 | // Verifico a existência do Gerente de Coletas, caso não exista, o chksis.exe fará download! |
932 | 918 | function TFormularioGeral.ChecaGERCOLS : boolean; |
933 | -var strFraseVersao : String; | |
934 | 919 | Begin |
935 | 920 | Result := true; |
936 | 921 | |
... | ... | @@ -945,11 +930,8 @@ Begin |
945 | 930 | |
946 | 931 | Matar(p_path_cacic + 'modulos\','ger_cols.exe'); |
947 | 932 | |
948 | - strFraseVersao := 'CACIC V:' + getVersionInfo(ParamStr(0)); | |
949 | - if not (getValorDatMemoria('TcpIp.TE_IP',v_tstrCipherOpened) = '') then | |
950 | - strFraseVersao := strFraseVersao + #13#10 + 'IP: '+getValorDatMemoria('TcpIp.TE_IP',v_tstrCipherOpened); | |
933 | + InicializaTray; | |
951 | 934 | |
952 | - InicializaTray(strFraseVersao); | |
953 | 935 | log_diario('Acionando recuperador de Módulo Gerente de Coletas.'); |
954 | 936 | log_DEBUG('Recuperador de Módulo Gerente de Coletas: '+HomeDrive + '\chksis.exe'); |
955 | 937 | WinExec(PChar(HomeDrive + '\chksis.exe'),SW_HIDE); |
... | ... | @@ -959,7 +941,7 @@ Begin |
959 | 941 | if not(v_Tamanho_Arquivo = '0') and not(v_Tamanho_Arquivo = '-1') then |
960 | 942 | Begin |
961 | 943 | log_diario('Módulo Gerente de Coletas RECUPERADO COM SUCESSO!'); |
962 | - InicializaTray(''); | |
944 | + InicializaTray; | |
963 | 945 | Result := True; |
964 | 946 | End |
965 | 947 | else |
... | ... | @@ -1099,6 +1081,13 @@ Begin |
1099 | 1081 | if (getValorDatMemoria('Configs.CS_COLETA_PATRIMONIO',v_tstrCipherOpened) = 'S') then Mnu_InfosPatrimoniais.Enabled := True; |
1100 | 1082 | End; |
1101 | 1083 | |
1084 | +procedure TFormularioGeral.HabilitaSuporteRemoto; | |
1085 | +Begin | |
1086 | + // Desabilita/Habilita a opção de Suporte Remoto | |
1087 | + Mnu_SuporteRemoto.Enabled := False; | |
1088 | + if (getValorDatMemoria('Configs.CS_SUPORTE_REMOTO',v_tstrCipherOpened) = 'S') then Mnu_SuporteRemoto.Enabled := True; | |
1089 | +End; | |
1090 | + | |
1102 | 1091 | |
1103 | 1092 | //Para buscar do Arquivo INI... |
1104 | 1093 | // Marreta devido a limitações do KERNEL w9x no tratamento de arquivos texto e suas seções |
... | ... | @@ -1184,7 +1173,7 @@ begin |
1184 | 1173 | // Não mostrar o formulário... |
1185 | 1174 | Application.ShowMainForm:=false; |
1186 | 1175 | g_oCacic := TCACIC.Create; |
1187 | - g_oCacic.showTrayIcon(false); | |
1176 | + //g_oCacic.showTrayIcon(false); | |
1188 | 1177 | boolCrypt := true; |
1189 | 1178 | |
1190 | 1179 | Try |
... | ... | @@ -1329,12 +1318,7 @@ begin |
1329 | 1318 | log_diario('PROBLEMAS SETANDO VARIÁVEIS GLOBAIS!'); |
1330 | 1319 | End; |
1331 | 1320 | |
1332 | - // Envia o ícone para a bandeja com HINT mostrando Versão... | |
1333 | - strFraseVersao := 'CACIC v:' + getVersionInfo(ParamStr(0)); | |
1334 | - if not (getValorDatMemoria('TcpIp.TE_IP',v_tstrCipherOpened) = '') then | |
1335 | - strFraseVersao := strFraseVersao + char(13) + char(10) + 'IP: '+ getValorDatMemoria('TcpIp.TE_IP',v_tstrCipherOpened); | |
1336 | - pnVersao.Caption := 'V. ' + getVersionInfo(ParamStr(0)); | |
1337 | - InicializaTray(strFraseVersao); | |
1321 | + InicializaTray; | |
1338 | 1322 | CipherClose; |
1339 | 1323 | End |
1340 | 1324 | else |
... | ... | @@ -1391,6 +1375,8 @@ Begin |
1391 | 1375 | // Desabilita/Habilita a opção de Informações Gerais |
1392 | 1376 | HabilitaTCP; |
1393 | 1377 | |
1378 | + // Desabilita/Habilita a opção de Suporte Remoto | |
1379 | + HabilitaSuporteRemoto; | |
1394 | 1380 | Except |
1395 | 1381 | log_diario('PROBLEMAS NA INICIALIZAÇÃO (1)'); |
1396 | 1382 | End; |
... | ... | @@ -1515,6 +1501,8 @@ begin |
1515 | 1501 | |
1516 | 1502 | CipherOpen; |
1517 | 1503 | |
1504 | + SetValorDatMemoria('Configs.TE_SO',g_te_so,v_tstrCipherOpened); | |
1505 | + | |
1518 | 1506 | try |
1519 | 1507 | if FindCmdLineSwitch('execute', True) or |
1520 | 1508 | FindCmdLineSwitch('atualizacao', True) or |
... | ... | @@ -1546,7 +1534,7 @@ begin |
1546 | 1534 | intContaExec := 2; |
1547 | 1535 | |
1548 | 1536 | // Muda HINT |
1549 | - InicializaTray(''); | |
1537 | + InicializaTray; | |
1550 | 1538 | |
1551 | 1539 | // Loop para possível necessidade de updates de Agente Principal e/ou Gerente de Coletas |
1552 | 1540 | For intAux := intContaExec to 2 do |
... | ... | @@ -1575,11 +1563,14 @@ begin |
1575 | 1563 | Invoca_GerCols(nil,'coletas'); |
1576 | 1564 | sleep(3000); // Pausa para início do Gerente de Coletas e criação do arquivo temp\aguarde_GER.txt |
1577 | 1565 | |
1578 | - // Pausas de 10 segundos para o caso de ser(em) baixada(s) nova(s) versão(ões) de Ger_Cols e/ou Cacic2. | |
1566 | + InicializaTray; | |
1567 | + | |
1568 | + // Pausas de 15 segundos para o caso de ser(em) baixada(s) nova(s) versão(ões) de Ger_Cols e/ou Cacic2. | |
1579 | 1569 | while not Pode_Coletar do |
1580 | 1570 | Begin |
1581 | 1571 | log_DEBUG('Aguardando mais 15 segundos...'); |
1582 | 1572 | sleep(15000); |
1573 | + InicializaTray; | |
1583 | 1574 | End; |
1584 | 1575 | Mnu_InfosPatrimoniais.Caption := v_Aux1; |
1585 | 1576 | Mnu_InfosTCP.Caption := v_Aux2; |
... | ... | @@ -1633,6 +1624,9 @@ begin |
1633 | 1624 | // Desabilita/Habilita a opção de Informações de TCP/IP |
1634 | 1625 | HabilitaTCP; |
1635 | 1626 | |
1627 | + // Desabilita/Habilita a opção de Suporte Remoto | |
1628 | + HabilitaSuporteRemoto; | |
1629 | + | |
1636 | 1630 | // Para evitar uma reexecução de Ger_Cols sem necessidade... |
1637 | 1631 | intContaExec := 3; |
1638 | 1632 | End; |
... | ... | @@ -1692,12 +1686,8 @@ begin |
1692 | 1686 | |
1693 | 1687 | End; |
1694 | 1688 | End; |
1695 | - // Volta a mostrar a versão no HINT... | |
1696 | - strFraseVersao := 'CACIC V:' + getVersionInfo(ParamStr(0)); | |
1697 | - if not (getValorDatMemoria('TcpIp.TE_IP',v_tstrCipherOpened) = '') then | |
1698 | - strFraseVersao := strFraseVersao + #13#10 + 'IP: '+getValorDatMemoria('TcpIp.TE_IP',v_tstrCipherOpened); | |
1699 | 1689 | |
1700 | - InicializaTray(strFraseVersao); | |
1690 | + InicializaTray; | |
1701 | 1691 | |
1702 | 1692 | except |
1703 | 1693 | log_diario('PROBLEMAS AO TENTAR ATIVAR COLETAS.'); |
... | ... | @@ -1768,35 +1758,77 @@ end; |
1768 | 1758 | // Todo o código deste ponto em diante está relacionado às rotinas de |
1769 | 1759 | // de inclusão do ícone do programa na bandeja do sistema |
1770 | 1760 | //======================================================================= |
1771 | -procedure TFormularioGeral.InicializaTray(v_Hint:string); | |
1761 | +procedure TFormularioGeral.InicializaTray; | |
1762 | +var Icon : TIcon; | |
1763 | + v_intStatus : integer; | |
1764 | + v_strHint : String; | |
1765 | +const NORMAL = 0; | |
1766 | + OCUPADO = 1; | |
1767 | + DESCONFIGURADO = 2; | |
1772 | 1768 | begin |
1769 | + Icon := TIcon.Create; | |
1773 | 1770 | |
1774 | - {Estrutura do tray icon sendo criada.} | |
1775 | - NotifyStruc.cbSize := SizeOf(NotifyStruc); | |
1776 | - NotifyStruc.Wnd := Handle; | |
1777 | - NotifyStruc.uID := 1; | |
1778 | - NotifyStruc.uFlags := NIF_ICON or NIF_TIP or NIF_MESSAGE; | |
1779 | - NotifyStruc.uCallbackMessage := WM_MYMESSAGE; {User defined message} | |
1780 | - NotifyStruc.hIcon := Application.Icon.Handle; | |
1771 | + // Monto a frase a ser colocada no Hint | |
1772 | + v_strHint := 'CACIC v:' + getVersionInfo(ParamStr(0)); | |
1773 | + if not (getValorDatMemoria('TcpIp.TE_IP',v_tstrCipherOpened) = '') then | |
1774 | + v_strHint := v_strHint + char(13) + char(10); | |
1775 | + v_strHint := v_strHint + 'IP: '+ getValorDatMemoria('TcpIp.TE_IP',v_tstrCipherOpened); | |
1781 | 1776 | |
1782 | - if (v_Hint = '') then | |
1783 | - v_Hint := 'Aguarde...'; | |
1777 | + // Mostro a versão no painel de Informações Gerais | |
1778 | + pnVersao.Caption := 'V. ' + getVersionInfo(ParamStr(0)); | |
1784 | 1779 | |
1785 | - log_DEBUG('Setando o HINT do Systray para: "'+v_Hint+'"'); | |
1780 | + // Estrutura do tray icon sendo criada. | |
1781 | + NotifyStruc.cbSize := SizeOf(NotifyStruc); | |
1782 | + NotifyStruc.Wnd := Handle; | |
1783 | + NotifyStruc.uID := 1; | |
1784 | + NotifyStruc.uFlags := NIF_ICON or NIF_TIP or NIF_MESSAGE; | |
1785 | + NotifyStruc.uCallbackMessage := WM_MYMESSAGE; //User defined message | |
1786 | + | |
1787 | + // Tento apagar os arquivos indicadores de ações de coletas | |
1788 | + FormularioGeral.Matar(p_path_cacic+'temp\','aguarde_GER.txt'); | |
1789 | + FormularioGeral.Matar(p_path_cacic+'temp\','aguarde_INI.txt'); | |
1786 | 1790 | |
1787 | - // Atualiza o conteúdo do tip da bandeja | |
1788 | - StrPCopy(NotifyStruc.szTip, v_Hint); | |
1791 | + v_intStatus := NORMAL; | |
1789 | 1792 | |
1790 | - if (getValorDatMemoria('Configs.IN_EXIBE_BANDEJA',v_tstrCipherOpened) <> 'N') Then | |
1793 | + // Caso os indicadores de ações de coletas não existam, ativo o ícone normal/desconectado... | |
1794 | + if not FileExists(p_path_cacic+'temp\aguarde_GER.txt') and | |
1795 | + not FileExists(p_path_cacic+'temp\aguarde_INI.txt') then | |
1791 | 1796 | Begin |
1792 | - Shell_NotifyIcon(NIM_ADD, @NotifyStruc); | |
1797 | + if not (FormularioGeral.getValorDatMemoria('Configs.ConexaoOK',v_tstrCipherOpened)='S') then | |
1798 | + Begin | |
1799 | + v_strHint := v_strHint + ' SERVIDOR NÃO ENCONTRADO!'; | |
1800 | + v_intStatus := DESCONFIGURADO; | |
1801 | + End; | |
1793 | 1802 | End |
1794 | - else | |
1803 | + else | |
1795 | 1804 | Begin |
1796 | - Shell_NotifyIcon(HIDE_WINDOW,@NotifyStruc); | |
1797 | - Shell_NotifyIcon(NIM_Delete,@NotifyStruc); | |
1805 | + v_intStatus := OCUPADO; | |
1806 | + v_strHint := 'Aguarde...'; | |
1798 | 1807 | End; |
1799 | - Shell_NotifyIcon(nim_Modify,@NotifyStruc); | |
1808 | + | |
1809 | + imgList_Icones.GetIcon(v_intStatus,Icon); | |
1810 | + | |
1811 | + NotifyStruc.hIcon := Icon.Handle; | |
1812 | + | |
1813 | + log_DEBUG('Setando o HINT do Systray para: "'+v_strHint+'"'); | |
1814 | + | |
1815 | + // Atualiza o conteúdo do tip da bandeja | |
1816 | + StrPCopy(NotifyStruc.szTip, v_strHint); | |
1817 | + | |
1818 | + if (getValorDatMemoria('Configs.IN_EXIBE_BANDEJA',v_tstrCipherOpened) <> 'N') Then | |
1819 | + Begin | |
1820 | + Shell_NotifyIcon(NIM_ADD, @NotifyStruc); | |
1821 | + End | |
1822 | + else | |
1823 | + Begin | |
1824 | + Shell_NotifyIcon(HIDE_WINDOW,@NotifyStruc); | |
1825 | + Shell_NotifyIcon(NIM_Delete,@NotifyStruc); | |
1826 | + End; | |
1827 | + Shell_NotifyIcon(nim_Modify,@NotifyStruc); | |
1828 | + | |
1829 | + Application.ProcessMessages; | |
1830 | + | |
1831 | + Icon.Free; | |
1800 | 1832 | end; |
1801 | 1833 | |
1802 | 1834 | procedure TFormularioGeral.WMSysCommand; |
... | ... | @@ -1817,9 +1849,13 @@ begin |
1817 | 1849 | Mnu_InfosPatrimoniais.Enabled := False; |
1818 | 1850 | // Habilita a opção de menu caso a coleta de patrimonio esteja habilitado. |
1819 | 1851 | HabilitaPatrimonio; |
1852 | + | |
1853 | + // Habilita a opção de menu caso o suporte remoto esteja habilitado. | |
1854 | + HabilitaSuporteRemoto; | |
1855 | + | |
1820 | 1856 | SetForegroundWindow(Handle); |
1821 | 1857 | GetCursorPos(Posicao); |
1822 | - PopupMenu1.Popup(Posicao.X, Posicao.Y); | |
1858 | + Popup_Menu_Contexto.Popup(Posicao.X, Posicao.Y); | |
1823 | 1859 | end; |
1824 | 1860 | |
1825 | 1861 | end; |
... | ... | @@ -2235,7 +2271,7 @@ begin |
2235 | 2271 | (strCmd = 'Exit') then |
2236 | 2272 | AResponseinfo.ContentText := 'OK' |
2237 | 2273 | else |
2238 | - AResponseinfo.ContentText := 'COMANDO NÃO PERMITIDO!'; | |
2274 | + AResponseinfo.ContentText := 'COMANDO NÃO RECONHECIDO!'; | |
2239 | 2275 | End |
2240 | 2276 | else |
2241 | 2277 | AResponseinfo.ContentText := 'ACESSO NÃO PERMITIDO!'; |
... | ... | @@ -2276,7 +2312,6 @@ begin |
2276 | 2312 | End |
2277 | 2313 | else |
2278 | 2314 | Begin |
2279 | - GetWinVer; | |
2280 | 2315 | log_DEBUG('Invocando "'+p_path_cacic + 'modulos\srcacicsrv.exe"...'); |
2281 | 2316 | Log_Diario('Ativando Suporte Remoto Seguro.'); |
2282 | 2317 | boolAux := boolCrypt; |
... | ... | @@ -2291,7 +2326,7 @@ begin |
2291 | 2326 | strPalavraChave := StringReplace(strPalavraChave,'\' ,'<BarrInv>' ,[rfReplaceAll]); |
2292 | 2327 | strPalavraChave := StringReplace(EnCrypt(strPalavraChave),'+','<MAIS>',[rfReplaceAll]); |
2293 | 2328 | |
2294 | - strTeSO := StringReplace(v_te_so ,' ' ,'<ESPACE>' ,[rfReplaceAll]); | |
2329 | + strTeSO := StringReplace(FormularioGeral.getValorDatMemoria('Configs.TE_SO', v_tstrCipherOpened),' ','<ESPACE>',[rfReplaceAll]); | |
2295 | 2330 | strTeSO := StringReplace(EnCrypt(strTeSO),'+','<MAIS>',[rfReplaceAll]); |
2296 | 2331 | |
2297 | 2332 | strTeNodeAddress := StringReplace(FormularioGeral.getValorDatMemoria('TcpIp.TE_NODE_ADDRESS' , v_tstrCipherOpened),' ','<ESPACE>' ,[rfReplaceAll]); |
... | ... | @@ -2333,48 +2368,13 @@ begin |
2333 | 2368 | BoolServerON := true; |
2334 | 2369 | End; |
2335 | 2370 | |
2336 | - { | |
2337 | - //handleCacicRC := LoadLibrary('modulos\cacicrc.dll'); | |
2338 | - threadCacicRC := WinVNCThread.Create(false); | |
2339 | - | |
2340 | -// if (handleCacicRC > 0) then | |
2341 | - if (threadCacicRC.Handle > 0) then | |
2342 | - Begin | |
2343 | - //procStartServer := GetProcAddress(handleCacicRC,'StartServer'); | |
2344 | - WinVNCThread.Synchronize(threadCacicRC,StartVNCServer); | |
2345 | - if not boolServerON then | |
2346 | - begin | |
2347 | - handleStartVNCThreadID := CreateThread(nil, 0, @TFormularioGeral.StartVNCServer, nil, 0, dwordStartVNCID); | |
2348 | - if (handleStartVNCThreadID <> 0) then | |
2349 | - boolServerON := true; | |
2350 | - end | |
2351 | - else | |
2352 | - begin | |
2353 | - procStopServer := GetProcAddress(handleCacicRC,'StopServer'); | |
2354 | - procStopServer; | |
2355 | - TerminateThread(dwordStartServerID, 0); | |
2356 | - TerminateThread(handleStartServerThreadID, 0); | |
2357 | - FreeProcInstance(@procStartServer); | |
2358 | - FreeProcInstance(@procStopServer); | |
2359 | - FreeLibrary(handleCacicRC); | |
2360 | - boolServerON := false; | |
2361 | - end; | |
2362 | - End | |
2363 | - else | |
2364 | - MessageBox(0, 'Não foi possivel carregar a biblioteca de acesso remoto!', 'Erro', MB_ICONERROR); | |
2365 | - | |
2366 | - } | |
2367 | -end; | |
2368 | -{ | |
2369 | -procedure TFormularioGeral.StartVNCServer; | |
2370 | -begin | |
2371 | - handleStartServerThreadID := CreateThread(nil, 0, @procStartServer, nil, 0, dwordStartServerID); | |
2372 | 2371 | end; |
2373 | -} | |
2374 | -procedure TFormularioGeral.PopupMenu1Popup(Sender: TObject); | |
2372 | + | |
2373 | +procedure TFormularioGeral.Popup_Menu_ContextoPopup(Sender: TObject); | |
2375 | 2374 | begin |
2376 | 2375 | VerificaDebugs; |
2377 | - if FileExists(p_path_cacic + 'modulos\srcacicsrv.exe') then | |
2376 | + if (getValorDatMemoria('Configs.CS_SUPORTE_REMOTO',v_tstrCipherOpened) = 'S') and | |
2377 | + (FileExists(p_path_cacic + 'modulos\srcacicsrv.exe')) then | |
2378 | 2378 | Mnu_SuporteRemoto.Enabled := true |
2379 | 2379 | else |
2380 | 2380 | Mnu_SuporteRemoto.Enabled := false; |
... | ... | @@ -2391,4 +2391,11 @@ begin |
2391 | 2391 | |
2392 | 2392 | end; |
2393 | 2393 | |
2394 | +procedure TFormularioGeral.Timer_InicializaTrayTimer(Sender: TObject); | |
2395 | +begin | |
2396 | + Timer_InicializaTray.Enabled := false; | |
2397 | + InicializaTray; | |
2398 | + Timer_InicializaTray.Enabled := true; | |
2399 | +end; | |
2400 | + | |
2394 | 2401 | end. | ... | ... |
mapa/mapacacic.res
No preview for this file type
testacrypt/testacrypt.res
No preview for this file type
vaca/vaca.res
No preview for this file type
vacon/vacon.res
No preview for this file type