diff --git a/.gitignore b/.gitignore
index 8bf37c4..895afc2 100644
--- a/.gitignore
+++ b/.gitignore
@@ -8,7 +8,6 @@
*.ilc
*.hlp
*.tds
-*.zip
*.db
*.htm
*.xls
diff --git a/AntiWebMiner.cbproj b/AntiWebMiner.cbproj
index 976f04a..0033fe5 100644
--- a/AntiWebMiner.cbproj
+++ b/AntiWebMiner.cbproj
@@ -19,17 +19,15 @@
true
+ rtl.lib;vcl.lib
true
vcl.bpi;rtl.bpi;bcbie.bpi;vclx.bpi;vclactnband.bpi;xmlrtl.bpi;bcbsmp.bpi;dbrtl.bpi;vcldb.bpi;vcldbx.bpi;bdertl.bpi;dsnap.bpi;dsnapcon.bpi;TeeUI.bpi;TeeDB.bpi;Tee.bpi;adortl.bpi;vclib.bpi;ibxpress.bpi;IndyCore.bpi;IndySystem.bpi;IndyProtocols.bpi;vclie.bpi;inet.bpi;inetdbbde.bpi;inetdbxpress.bpi;soaprtl.bpi;vclribbon.bpi;dbexpress.bpi;DbxCommonDriver.bpi;DataSnapIndy10ServerTransport.bpi;DataSnapProviderClient.bpi;DataSnapServer.bpi;DbxClientDriver.bpi;DBXInterBaseDriver.bpi;DBXMySQLDriver.bpi;dbxcds.bpi;DBXSybaseASEDriver.bpi;DBXSybaseASADriver.bpi;DBXOracleDriver.bpi;DBXMSSQLDriver.bpi;DBXInformixDriver.bpi;DBXDb2Driver.bpi;VclSmp.bpi;gbutton.bpi;ggrid.bpi;gsearch.bpi;metro.bpi;tmsd2009.bpi;wevent.bpi;tmsexd2009.bpi;tmswizd2009.bpi;tmsxlsd2009.bpi;pls2009.bpi;cefd.bpi
- rtl.bpi;vcl.bpi
CppVCLApplication
rtl.lib;vcl.lib
exe
<_TCHARMapping>wchar_t
JPHNE
NO_STRICT
- true
- true
C:\CBuilder5\Projects\AntiWebMiner;$(CG_BOOST_ROOT)\boost\tr1\tr1;$(BDS)\include;$(BDS)\include\dinkumware;$(BDS)\include\vcl;$(CG_BOOST_ROOT);C:\Program Files\tmsssoftware\TMS Component Pack\Builder2009;$(IncludePath)
C:\CBuilder5\Projects\AntiWebMiner;$(BDS)\lib\obj;$(BDS)\lib\psdk;C:\Program Files\tmsssoftware\TMS Component Pack\Builder2009;$(ILINK_LibraryPath)
false
@@ -61,12 +59,6 @@
None
-
- 0
-
-
- 3
-
main.h
@@ -75,6 +67,17 @@
1
+
+ 0
+
+
+ 3
+
+
+ vista_man.rc
+
+ 4
+
Base
@@ -158,6 +161,9 @@
CodeGear C++Builder Office 2000 Servers Package
CodeGear C++Builder Office XP Servers Package
+
+ C:\CBuilder5\Projects\AntiWebMiner\
+
12
diff --git a/AntiWebMiner.cpp b/AntiWebMiner.cpp
index 51035f8..46b1241 100644
--- a/AntiWebMiner.cpp
+++ b/AntiWebMiner.cpp
@@ -12,6 +12,7 @@ WINAPI _tWinMain(HINSTANCE, HINSTANCE, LPTSTR, int)
{
Application->Initialize();
Application->MainFormOnTaskBar = true;
+ Application->Title = "Anti-WebMiner";
Application->CreateForm(__classid(TfrmMain), &frmMain);
Application->Run();
}
diff --git a/AntiWebMiner.dsk b/AntiWebMiner.dsk
index 7d62b34..1f01782 100644
--- a/AntiWebMiner.dsk
+++ b/AntiWebMiner.dsk
@@ -12,18 +12,22 @@ File_9=TSourceModule,'C:\CBuilder5\Projects\vista_logon\visla\about.cpp',0,1,41,
[Modules]
Module0=C:\CBuilder5\Projects\AntiWebMiner\main.cpp
-Module1=C:\CBuilder5\Projects\AntiWebMiner\AntiWebMiner.cbproj
-Module2=C:\CBuilder5\Projects\AntiWebMiner\SSLCon.cpp
-Module3=C:\CBuilder5\Projects\AntiWebMiner\SSLCon.h
-Module4=C:\CBuilder5\Projects\AntiWebMiner\StdAfxs.h
-Module5=default.htm
-Count=6
+Module1=C:\CBuilder5\Projects\AntiWebMiner\vista_man.rc
+Module2=C:\CBuilder5\Projects\AntiWebMiner\AntiWebMiner.cbproj
+Module3=C:\CBuilder5\Projects\AntiWebMiner\SSLCon.cpp
+Module4=C:\CBuilder5\Projects\AntiWebMiner\SSLCon.h
+Module5=C:\CBuilder5\Projects\AntiWebMiner\StdAfxs.h
+Module6=default.htm
+Count=7
EditWindowCount=1
[C:\CBuilder5\Projects\AntiWebMiner\main.cpp]
ModuleType=TSourceModule
FormState=1
-FormOnTop=1
+FormOnTop=0
+
+[C:\CBuilder5\Projects\AntiWebMiner\vista_man.rc]
+ModuleType=TSourceModule
[C:\CBuilder5\Projects\AntiWebMiner\AntiWebMiner.cbproj]
ModuleType=TBaseProject
@@ -47,7 +51,7 @@ FormOnTop=0
ModuleType=TURLModule
[EditWindow0]
-ViewCount=7
+ViewCount=8
CurrentEditView=C:\CBuilder5\Projects\AntiWebMiner\main.cpp
View0=0
View1=1
@@ -56,6 +60,7 @@ View3=3
View4=4
View5=5
View6=6
+View7=7
PercentageSizes=1
Create=1
Visible=1
@@ -75,16 +80,16 @@ BorlandEditorCodeExplorer=BorlandEditorCodeExplorer@EditWindow0
TopPanelSize=0
LeftPanelSize=1891
LeftPanelClients=PropertyInspector,DockSite3
-LeftPanelData=00000800787800000000131000000000000001630700000000000001000000005C0E000009000000446F636B53697465330100000000931C00001100000050726F7065727479496E73706563746F72FFFFFFFF
+LeftPanelData=00000800A8A800000000900F00000000000001630700000000000001000000005C0E000009000000446F636B53697465330100000000AB1B00001100000050726F7065727479496E73706563746F72FFFFFFFF
RightPanelSize=2000
RightPanelClients=DockSite2,ToolForm
-RightPanelData=00000800181800000000131000000000000001D00700000000000001000000004412000009000000446F636B53697465320100000000931C000008000000546F6F6C466F726DFFFFFFFF
-BottomPanelSize=1574
+RightPanelData=00000800E8E800000000900F00000000000001D00700000000000001000000004412000009000000446F636B53697465320100000000AB1B000008000000546F6F6C466F726DFFFFFFFF
+BottomPanelSize=1806
BottomPanelClients=MessageView@EditWindow0,DockSite1
-BottomPanelData=00000800F8F80000000072450000000000000226060000000000000100000000B922000009000000446F636B53697465310100000000724500000B0000004D65737361676556696577FFFFFFFF
+BottomPanelData=00000800D8D80100000009000000446F636B53697465317245000000000000020E070000000000000100000000724500000B0000004D65737361676556696577FFFFFFFF
BottomMiddlePanelSize=0
BottomMiddlePanelClients=DockSite0
-BottomMiddelPanelData=00000800B8B80100000009000000446F636B53697465302C1900000000000000741B000000000000FFFFFFFF
+BottomMiddelPanelData=00000800F8F80100000009000000446F636B53697465302C1900000000000000741B000000000000FFFFFFFF
[View0]
CustomEditViewType=TWelcomePageView
@@ -97,12 +102,12 @@ CustomEditViewType=TDisassemblyEditView
CustomEditViewType=TEditView
Module=C:\CBuilder5\Projects\AntiWebMiner\main.cpp
CursorX=1
-CursorY=62
-TopLine=25
+CursorY=63
+TopLine=43
LeftCol=1
Elisions=
-Bookmarks={1,245,1}{2,47,1}
-EditViewName=Borland.FormDesignerView
+Bookmarks={0,494,17}{1,1221,37}{2,1073,43}
+EditViewName=C:\CBuilder5\Projects\AntiWebMiner\main.cpp
[View3]
CustomEditViewType=TEditView
@@ -117,6 +122,17 @@ EditViewName=C:\CBuilder5\Projects\AntiWebMiner\AntiWebMiner.cpp
[View4]
CustomEditViewType=TEditView
+Module=C:\CBuilder5\Projects\AntiWebMiner\vista_man.rc
+CursorX=9
+CursorY=1
+TopLine=1
+LeftCol=1
+Elisions=
+Bookmarks=
+EditViewName=C:\CBuilder5\Projects\AntiWebMiner\vista_man.rc
+
+[View5]
+CustomEditViewType=TEditView
Module=C:\CBuilder5\Projects\AntiWebMiner\SSLCon.cpp
CursorX=1
CursorY=300
@@ -126,7 +142,7 @@ Elisions=
Bookmarks=
EditViewName=C:\CBuilder5\Projects\AntiWebMiner\SSLCon.cpp
-[View5]
+[View6]
CustomEditViewType=TEditView
Module=C:\CBuilder5\Projects\AntiWebMiner\StdAfxs.h
CursorX=17
@@ -137,7 +153,7 @@ Elisions=
Bookmarks=
EditViewName=C:\CBuilder5\Projects\AntiWebMiner\StdAfxs.h
-[View6]
+[View7]
CustomEditViewType=TEditView
Module=C:\CBuilder5\Projects\AntiWebMiner\SSLCon.h
CursorX=24
@@ -163,19 +179,26 @@ Docked=1
State=0
Left=0
Top=0
-Width=4979
-Height=1173
+Width=3828
+Height=1413
MaxLeft=-1
MaxTop=-1
-ClientWidth=4979
-ClientHeight=1173
+ClientWidth=3828
+ClientHeight=1413
TBDockHeight=212
LRDockWidth=13604
Dockable=1
StayOnTop=0
[Breakpoints]
-Count=0
+Count=7
+Breakpoint0='C:\CBuilder5\Projects\AntiWebMiner\main.cpp',1406,'',0,1,'',1,0,0,'',1,'','','',0
+Breakpoint1='C:\CBuilder5\Projects\AntiWebMiner\main.cpp',1415,'',0,1,'',1,0,0,'',1,'','','',0
+Breakpoint2='C:\CBuilder5\Projects\AntiWebMiner\main.cpp',1426,'',0,1,'',1,0,0,'',1,'','','',0
+Breakpoint3='C:\CBuilder5\Projects\AntiWebMiner\main.cpp',494,'',0,1,'',1,0,0,'',1,'','','',0
+Breakpoint4='C:\CBuilder5\Projects\AntiWebMiner\main.cpp',63,'',0,1,'',1,0,0,'',1,'','','',0
+Breakpoint5='C:\CBuilder5\Projects\AntiWebMiner\main.cpp',1047,'',0,1,'',1,0,0,'',1,'','','',0
+Breakpoint6='C:\CBuilder5\Projects\AntiWebMiner\main.cpp',1073,'',0,1,'',1,0,0,'',1,'','','',0
[AddressBreakpoints]
Count=0
@@ -198,7 +221,7 @@ ClientWidth=10000
ClientHeight=9779
BottomPanelSize=8917
BottomPanelClients=EditWindow0
-BottomPanelData=0000080098980000000000000000000000000000000000000000000100000000000000000C0000004564697457696E646F775F30FFFFFFFF
+BottomPanelData=0000080028280000000000000000000000000000000000000000000100000000000000000C0000004564697457696E646F775F30FFFFFFFF
[ProjectManager]
PercentageSizes=1
@@ -228,11 +251,11 @@ State=0
Left=0
Top=528
Width=2000
-Height=2519
+Height=2279
MaxLeft=-1
MaxTop=-1
ClientWidth=2000
-ClientHeight=2519
+ClientHeight=2279
TBDockHeight=7019
LRDockWidth=2000
Dockable=1
@@ -268,12 +291,12 @@ Docked=1
State=0
Left=0
Top=0
-Width=4979
-Height=1173
+Width=3828
+Height=1413
MaxLeft=-1
MaxTop=-1
-ClientWidth=4979
-ClientHeight=1173
+ClientWidth=3828
+ClientHeight=1413
TBDockHeight=413
LRDockWidth=4953
Dockable=1
@@ -287,12 +310,12 @@ Docked=1
State=0
Left=0
Top=0
-Width=4979
-Height=1173
+Width=3828
+Height=1413
MaxLeft=-1
MaxTop=-1
-ClientWidth=4979
-ClientHeight=1173
+ClientWidth=3828
+ClientHeight=1413
TBDockHeight=212
LRDockWidth=7406
Dockable=1
@@ -310,12 +333,12 @@ Docked=1
State=0
Left=0
Top=0
-Width=4979
-Height=1173
+Width=3828
+Height=1413
MaxLeft=-1
MaxTop=-1
-ClientWidth=4979
-ClientHeight=1173
+ClientWidth=3828
+ClientHeight=1413
TBDockHeight=1538
LRDockWidth=3484
Dockable=1
@@ -329,12 +352,12 @@ Docked=1
State=0
Left=0
Top=0
-Width=4979
-Height=1173
+Width=3828
+Height=1413
MaxLeft=-1
MaxTop=-1
-ClientWidth=4979
-ClientHeight=1173
+ClientWidth=3828
+ClientHeight=1413
TBDockHeight=2058
LRDockWidth=3484
Dockable=1
@@ -452,11 +475,11 @@ State=0
Left=0
Top=420
Width=1891
-Height=3558
+Height=3317
MaxLeft=-1
MaxTop=-1
ClientWidth=1891
-ClientHeight=3558
+ClientHeight=3317
TBDockHeight=7019
LRDockWidth=1891
Dockable=1
@@ -465,8 +488,8 @@ SplitPos=111
[PropInspDesignerSelection]
ArrangeBy=Name
-SelectedItem=Name,Action
-ExpandedItems=MenuAnimation=0
+SelectedItem=Name,
+ExpandedItems=Anchors=0,Constraints=0,MenuAnimation=0,Font=0,ImageMargins=0,Margins=0
[ModelViewTool]
PercentageSizes=1
@@ -493,7 +516,7 @@ Create=1
Visible=0
Docked=1
State=0
-Left=-3801
+Left=-3982
Top=-102
Width=1844
Height=3144
@@ -514,12 +537,12 @@ Docked=1
State=0
Left=0
Top=0
-Width=4979
-Height=1173
+Width=3828
+Height=1413
MaxLeft=-1
MaxTop=-1
-ClientWidth=4979
-ClientHeight=1173
+ClientWidth=3828
+ClientHeight=1413
TBDockHeight=1548
LRDockWidth=8740
Dockable=1
@@ -556,15 +579,15 @@ Create=1
Visible=1
Docked=1
State=0
-Left=960
+Left=0
Top=23
-Width=5000
-Height=1413
+Width=10000
+Height=1654
MaxLeft=-1
MaxTop=-1
-ClientWidth=5000
-ClientHeight=1413
-TBDockHeight=1413
+ClientWidth=10000
+ClientHeight=1654
+TBDockHeight=1654
LRDockWidth=4328
Dockable=1
StayOnTop=0
@@ -620,23 +643,23 @@ HostDockSite=DockBottomPanel
DockSiteType=1
PercentageSizes=1
Create=1
-Visible=1
+Visible=0
Docked=1
State=0
-Left=0
+Left=960
Top=23
-Width=4979
-Height=1413
+Width=3828
+Height=1654
MaxLeft=-1
MaxTop=-1
-ClientWidth=4979
-ClientHeight=1413
-TBDockHeight=1413
+ClientWidth=3828
+ClientHeight=1654
+TBDockHeight=1654
LRDockWidth=3828
Dockable=1
StayOnTop=0
TabPosition=1
-ActiveTabID=WatchWindow
+ActiveTabID=DebugLogView
TabDockClients=DebugLogView,BreakpointWindow,ThreadStatusWindow,CallStackWindow,WatchWindow,LocalVarsWindow
[DockSite2]
diff --git a/AntiWebMiner.res b/AntiWebMiner.res
index bed960e..ec5a9b1 100644
Binary files a/AntiWebMiner.res and b/AntiWebMiner.res differ
diff --git a/LICENSE.TXT b/LICENSE.TXT
new file mode 100644
index 0000000..c7b774a
--- /dev/null
+++ b/LICENSE.TXT
@@ -0,0 +1,201 @@
+ Apache License
+ Version 2.0, January 2004
+ http://www.apache.org/licenses/
+
+ TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION
+
+ 1. Definitions.
+
+ "License" shall mean the terms and conditions for use, reproduction,
+ and distribution as defined by Sections 1 through 9 of this document.
+
+ "Licensor" shall mean the copyright owner or entity authorized by
+ the copyright owner that is granting the License.
+
+ "Legal Entity" shall mean the union of the acting entity and all
+ other entities that control, are controlled by, or are under common
+ control with that entity. For the purposes of this definition,
+ "control" means (i) the power, direct or indirect, to cause the
+ direction or management of such entity, whether by contract or
+ otherwise, or (ii) ownership of fifty percent (50%) or more of the
+ outstanding shares, or (iii) beneficial ownership of such entity.
+
+ "You" (or "Your") shall mean an individual or Legal Entity
+ exercising permissions granted by this License.
+
+ "Source" form shall mean the preferred form for making modifications,
+ including but not limited to software source code, documentation
+ source, and configuration files.
+
+ "Object" form shall mean any form resulting from mechanical
+ transformation or translation of a Source form, including but
+ not limited to compiled object code, generated documentation,
+ and conversions to other media types.
+
+ "Work" shall mean the work of authorship, whether in Source or
+ Object form, made available under the License, as indicated by a
+ copyright notice that is included in or attached to the work
+ (an example is provided in the Appendix below).
+
+ "Derivative Works" shall mean any work, whether in Source or Object
+ form, that is based on (or derived from) the Work and for which the
+ editorial revisions, annotations, elaborations, or other modifications
+ represent, as a whole, an original work of authorship. For the purposes
+ of this License, Derivative Works shall not include works that remain
+ separable from, or merely link (or bind by name) to the interfaces of,
+ the Work and Derivative Works thereof.
+
+ "Contribution" shall mean any work of authorship, including
+ the original version of the Work and any modifications or additions
+ to that Work or Derivative Works thereof, that is intentionally
+ submitted to Licensor for inclusion in the Work by the copyright owner
+ or by an individual or Legal Entity authorized to submit on behalf of
+ the copyright owner. For the purposes of this definition, "submitted"
+ means any form of electronic, verbal, or written communication sent
+ to the Licensor or its representatives, including but not limited to
+ communication on electronic mailing lists, source code control systems,
+ and issue tracking systems that are managed by, or on behalf of, the
+ Licensor for the purpose of discussing and improving the Work, but
+ excluding communication that is conspicuously marked or otherwise
+ designated in writing by the copyright owner as "Not a Contribution."
+
+ "Contributor" shall mean Licensor and any individual or Legal Entity
+ on behalf of whom a Contribution has been received by Licensor and
+ subsequently incorporated within the Work.
+
+ 2. Grant of Copyright License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ copyright license to reproduce, prepare Derivative Works of,
+ publicly display, publicly perform, sublicense, and distribute the
+ Work and such Derivative Works in Source or Object form.
+
+ 3. Grant of Patent License. Subject to the terms and conditions of
+ this License, each Contributor hereby grants to You a perpetual,
+ worldwide, non-exclusive, no-charge, royalty-free, irrevocable
+ (except as stated in this section) patent license to make, have made,
+ use, offer to sell, sell, import, and otherwise transfer the Work,
+ where such license applies only to those patent claims licensable
+ by such Contributor that are necessarily infringed by their
+ Contribution(s) alone or by combination of their Contribution(s)
+ with the Work to which such Contribution(s) was submitted. If You
+ institute patent litigation against any entity (including a
+ cross-claim or counterclaim in a lawsuit) alleging that the Work
+ or a Contribution incorporated within the Work constitutes direct
+ or contributory patent infringement, then any patent licenses
+ granted to You under this License for that Work shall terminate
+ as of the date such litigation is filed.
+
+ 4. Redistribution. You may reproduce and distribute copies of the
+ Work or Derivative Works thereof in any medium, with or without
+ modifications, and in Source or Object form, provided that You
+ meet the following conditions:
+
+ (a) You must give any other recipients of the Work or
+ Derivative Works a copy of this License; and
+
+ (b) You must cause any modified files to carry prominent notices
+ stating that You changed the files; and
+
+ (c) You must retain, in the Source form of any Derivative Works
+ that You distribute, all copyright, patent, trademark, and
+ attribution notices from the Source form of the Work,
+ excluding those notices that do not pertain to any part of
+ the Derivative Works; and
+
+ (d) If the Work includes a "NOTICE" text file as part of its
+ distribution, then any Derivative Works that You distribute must
+ include a readable copy of the attribution notices contained
+ within such NOTICE file, excluding those notices that do not
+ pertain to any part of the Derivative Works, in at least one
+ of the following places: within a NOTICE text file distributed
+ as part of the Derivative Works; within the Source form or
+ documentation, if provided along with the Derivative Works; or,
+ within a display generated by the Derivative Works, if and
+ wherever such third-party notices normally appear. The contents
+ of the NOTICE file are for informational purposes only and
+ do not modify the License. You may add Your own attribution
+ notices within Derivative Works that You distribute, alongside
+ or as an addendum to the NOTICE text from the Work, provided
+ that such additional attribution notices cannot be construed
+ as modifying the License.
+
+ You may add Your own copyright statement to Your modifications and
+ may provide additional or different license terms and conditions
+ for use, reproduction, or distribution of Your modifications, or
+ for any such Derivative Works as a whole, provided Your use,
+ reproduction, and distribution of the Work otherwise complies with
+ the conditions stated in this License.
+
+ 5. Submission of Contributions. Unless You explicitly state otherwise,
+ any Contribution intentionally submitted for inclusion in the Work
+ by You to the Licensor shall be under the terms and conditions of
+ this License, without any additional terms or conditions.
+ Notwithstanding the above, nothing herein shall supersede or modify
+ the terms of any separate license agreement you may have executed
+ with Licensor regarding such Contributions.
+
+ 6. Trademarks. This License does not grant permission to use the trade
+ names, trademarks, service marks, or product names of the Licensor,
+ except as required for reasonable and customary use in describing the
+ origin of the Work and reproducing the content of the NOTICE file.
+
+ 7. Disclaimer of Warranty. Unless required by applicable law or
+ agreed to in writing, Licensor provides the Work (and each
+ Contributor provides its Contributions) on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
+ implied, including, without limitation, any warranties or conditions
+ of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
+ PARTICULAR PURPOSE. You are solely responsible for determining the
+ appropriateness of using or redistributing the Work and assume any
+ risks associated with Your exercise of permissions under this License.
+
+ 8. Limitation of Liability. In no event and under no legal theory,
+ whether in tort (including negligence), contract, or otherwise,
+ unless required by applicable law (such as deliberate and grossly
+ negligent acts) or agreed to in writing, shall any Contributor be
+ liable to You for damages, including any direct, indirect, special,
+ incidental, or consequential damages of any character arising as a
+ result of this License or out of the use or inability to use the
+ Work (including but not limited to damages for loss of goodwill,
+ work stoppage, computer failure or malfunction, or any and all
+ other commercial damages or losses), even if such Contributor
+ has been advised of the possibility of such damages.
+
+ 9. Accepting Warranty or Additional Liability. While redistributing
+ the Work or Derivative Works thereof, You may choose to offer,
+ and charge a fee for, acceptance of support, warranty, indemnity,
+ or other liability obligations and/or rights consistent with this
+ License. However, in accepting such obligations, You may act only
+ on Your own behalf and on Your sole responsibility, not on behalf
+ of any other Contributor, and only if You agree to indemnify,
+ defend, and hold each Contributor harmless for any liability
+ incurred by, or claims asserted against, such Contributor by reason
+ of your accepting any such warranty or additional liability.
+
+ END OF TERMS AND CONDITIONS
+
+ APPENDIX: How to apply the Apache License to your work.
+
+ To apply the Apache License to your work, attach the following
+ boilerplate notice, with the fields enclosed by brackets "{}"
+ replaced with your own identifying information. (Don't include
+ the brackets!) The text should be enclosed in the appropriate
+ comment syntax for the file format. We also recommend that a
+ file or class name and description of purpose be included on the
+ same "printed page" as the copyright notice for easier
+ identification within third-party archives.
+
+ Copyright 2017 Greatis Software http://www.greatis.com
+
+ Licensed under the Apache License, Version 2.0 (the "License");
+ you may not use this file except in compliance with the License.
+ You may obtain a copy of the License at
+
+ http://www.apache.org/licenses/LICENSE-2.0
+
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
diff --git a/antiwebminesetup.zip b/antiwebminesetup.zip
new file mode 100644
index 0000000..a26ab31
Binary files /dev/null and b/antiwebminesetup.zip differ
diff --git a/images/antiminer.png b/images/antiminer.png
new file mode 100644
index 0000000..675476e
Binary files /dev/null and b/images/antiminer.png differ
diff --git a/images/antiminer16.png b/images/antiminer16.png
new file mode 100644
index 0000000..7bee25e
Binary files /dev/null and b/images/antiminer16.png differ
diff --git a/images/antiminer32.png b/images/antiminer32.png
new file mode 100644
index 0000000..735949a
Binary files /dev/null and b/images/antiminer32.png differ
diff --git a/images/error.png b/images/error.png
new file mode 100644
index 0000000..b15e12d
Binary files /dev/null and b/images/error.png differ
diff --git a/images/icons8-Delete-48.png b/images/icons8-Delete-48.png
new file mode 100644
index 0000000..00816b3
Binary files /dev/null and b/images/icons8-Delete-48.png differ
diff --git a/images/icons8-Download-48.png b/images/icons8-Download-48.png
new file mode 100644
index 0000000..2349d89
Binary files /dev/null and b/images/icons8-Download-48.png differ
diff --git a/images/icons8-Info-48.png b/images/icons8-Info-48.png
new file mode 100644
index 0000000..df8764d
Binary files /dev/null and b/images/icons8-Info-48.png differ
diff --git a/images/icons8-Ok-48.png b/images/icons8-Ok-48.png
new file mode 100644
index 0000000..599b740
Binary files /dev/null and b/images/icons8-Ok-48.png differ
diff --git a/images/icons8-Unavailable-48.png b/images/icons8-Unavailable-48.png
new file mode 100644
index 0000000..2ac9f2f
Binary files /dev/null and b/images/icons8-Unavailable-48.png differ
diff --git a/images/warning.png b/images/warning.png
new file mode 100644
index 0000000..3cc4292
Binary files /dev/null and b/images/warning.png differ
diff --git a/install.bat b/install.bat
new file mode 100644
index 0000000..eed6d38
--- /dev/null
+++ b/install.bat
@@ -0,0 +1,14 @@
+call code.bat C:\CBuilder5\Projects\AntiWebMiner\Debug\AntiWebMiner.exe
+copy C:\CBuilder5\Projects\AntiWebMiner\Debug\AntiWebMiner.exe D:\internet\greatis\new\antiwebminer
+copy C:\CBuilder5\Projects\AntiWebMiner\LICENSE.TXT D:\internet\greatis\new\antiwebminer
+copy C:\CBuilder5\Projects\AntiWebMiner\README.md D:\internet\greatis\new\antiwebminer
+copy C:\CBuilder5\Projects\AntiWebMiner\AntiWebMiner.ini D:\internet\greatis\new\antiwebminer
+copy C:\CBuilder5\Projects\AntiWebMiner\blacklist.txt D:\internet\greatis\new\antiwebminer
+
+"C:\Program Files\Inno Setup 554\Compil32.exe" /cc D:\internet\greatis\new\AntiWebMiner.iss
+call D:\internet\greatis\new\cert\verisign16\sha-256\1signright.bat D:\internet\greatis\new\AntiWebMineSetup.exe
+d:
+cd \internet\greatis\new
+zip antiwebminesetup.zip AntiWebMineSetup.exe
+copy antiwebminesetup.zip C:\CBuilder5\Projects\AntiWebMiner
+
diff --git a/main.cpp b/main.cpp
index 71b3e0f..68820ab 100644
--- a/main.cpp
+++ b/main.cpp
@@ -23,9 +23,9 @@ __fastcall TfrmMain::TfrmMain(TComponent* Owner)
LogFileName=ExtractFilePath(ParamStr(0))+"debug.log";
bDebugMode=true;
strHosts=new TStringList;
- sLocalBlackListVersion="";
-
+ sLocalBlackListVersion="0.0";
+ Caption=MAIN_LABEL+" "+MAIN_VERS;
if(bDebugMode)
{
try
@@ -136,7 +136,7 @@ bool __fastcall TfrmMain::ReadMainStatus()
}
else
{
- sCriticalError =constHosstCannotRead->Caption+" "+constSystemError->Caption+" "+SysErrorMessage(GetLastError());
+ sCriticalError =constHosstCannotRead->Caption+" "+constSystemError->Caption+": "+SysErrorMessage(GetLastError());
WriteLogMessage(sCriticalError);
DisplayStatus(DISP_FATAL_ERROR);
bResult= false;
@@ -1011,13 +1011,17 @@ int __fastcall GetInternetRequest(String sURL, String &sOutResult)
}
-void __fastcall TfrmMain::CheckUpdateBlackList()
+void __fastcall TfrmMain::CheckUpdates()
{
MSG Msg;
-
- FThread = new TSSLThread(true, URL_BLACKLIST);
+ String sURL=URL_BLACKLIST;
+ if(bCheckProgramUpdate)
+ {
+ sURL=URL_PROGRAM_VERSION;
+ }
+ FThread = new TSSLThread(true, sURL);
FThread->OnTerminate = ThreadDone;
FThread->Resume();
if(FThread)
@@ -1040,16 +1044,41 @@ void __fastcall TfrmMain::ThreadDone(TObject *Sender)
WriteLogMessage("Update thread finished. Returned (bytes): "+String(FThread->FResult.Length()));
int iResult=FThread->iResult;
+ if(bCheckProgramUpdate)
+ {
+ sRemoteProgramVersion=sGetVersionFromMemoryIni( FThread->FResult);
+
+ if(!IsLocalVersUptodate(sRemoteProgramVersion, MAIN_VERS))
+ {
+ DisplayStatus(DISP_FOUND_PROGRAM_UPDATES);
+
+ }
+ else
+ {
+ ReadMainStatus();
+ }
+ }
+ else
+ {
if( UpdateLocalBlackListFromRemote(FThread->FResult))
{
bNeedUpdateHosts=true;
- DisplayStatus(DISP_FOUND_UPDATES);
+ if(sHostsBlackListVersion.IsEmpty())
+ {
+ DisplayStatus(DISP_INSTALL_TO_HOSTS);
+ }
+ else
+ {
+ DisplayStatus(DISP_FOUND_UPDATES);
+ }
}
else
{
- ReadMainStatus();
+ // ReadMainStatus();
+ timProgramCheckUpdate->Enabled=true;
}
+ }
}
}
catch(...)
@@ -1068,6 +1097,21 @@ void __fastcall TfrmMain::DisplayStatus(int iStatus)
switch(iStatus)
{
+ case DISP_FATAL_ERROR: lblStatus->Caption= sCriticalError;
+ imgStatus->Picture->Assign(imgError->Picture);
+ btInstall->Enabled=false;
+
+ if(sHostsBlackListVersion.IsEmpty())
+ {
+ btUninstall->Enabled=false;
+ }
+ else
+ {
+ btUninstall->Enabled=true;
+ }
+
+
+ break;
case DISP_ALL_DONE:
lblStatus->Caption=constYourcomputerisprotected->Caption+"\n"+constDatabaseversion->Caption+": "+sHostsBlackListVersion;
if(iInstallDate>0)
@@ -1127,9 +1171,25 @@ void __fastcall TfrmMain::DisplayStatus(int iStatus)
case DISP_CHECK_UPDATE:
lblStatus->Caption=constCheckingforupdates->Caption;
DisplayPreloader(true);
+ break;
+ case DISP_CHECK_PROGRAM_UPDATE:
+ lblStatus->Caption=constCheckingforprogramsupdates->Caption;
+ DisplayPreloader(true);
+ break;
+ case DISP_FOUND_PROGRAM_UPDATES:
+ lblStatus->Caption=constFoundnewversion->Caption+": "+sRemoteProgramVersion+"\n"+constClickDownload->Caption;
+ imgStatus->Picture->Assign( imgDownload->Picture);
+ try
+ {
+ btDownload->Visible=true;
+ btDownload->SetFocus();
+ }
+ catch(...)
+ {
+ }
+ break;
- break;
}
}
@@ -1157,6 +1217,8 @@ bool bResult=false;
try
{
str->SaveToFile(sFile);
+ WriteLogMessage("New Blacklist was saved: "+sFile);
+ sLocalBlackListVersion= sRemoteBlackListVersion;
bResult=true;
}
catch(...)
@@ -1250,8 +1312,10 @@ __fastcall TSSLThread::TSSLThread(bool CreateSuspended, String URL)
void __fastcall TfrmMain::timUpdateTimer(TObject *Sender)
{
timUpdate->Enabled=false;
+
+ bCheckProgramUpdate=false;
DisplayStatus(DISP_CHECK_UPDATE);
- CheckUpdateBlackList();
+ CheckUpdates();
}
//---------------------------------------------------------------------------
@@ -1362,8 +1426,8 @@ void __fastcall TfrmMain::imgPreloaderClick(TObject *Sender)
if(FThread!=NULL)
{
FThread->Terminate();
- ReadMainStatus();
}
+ ReadMainStatus();
}
catch(...)
{
@@ -1371,3 +1435,57 @@ void __fastcall TfrmMain::imgPreloaderClick(TObject *Sender)
}
//---------------------------------------------------------------------------
+String __fastcall TfrmMain::sGetVersionFromMemoryIni(String sRemoteText)
+{
+TStringList *str=NULL;
+ String sResult;
+ try
+ {
+ str=new TStringList;
+ str->Text= sRemoteText;
+ sResult= sGetDBVersionFromStrings(str);
+ }
+ catch(...)
+ {
+
+ }
+
+ delete str;
+
+ return sResult;
+}
+
+void __fastcall TfrmMain::timProgramCheckUpdateTimer(TObject *Sender)
+{
+ timProgramCheckUpdate->Enabled=false;
+
+ bCheckProgramUpdate=true;
+ DisplayStatus(DISP_CHECK_UPDATE);
+ CheckUpdates();
+
+}
+//---------------------------------------------------------------------------
+
+void __fastcall TfrmMain::btDownloadClick(TObject *Sender)
+{
+ //
+ ShellExecute(NULL,L"open",L"https://github.com/greatis/Anti-WebMiner",NULL,NULL,SW_SHOW);
+}
+//---------------------------------------------------------------------------
+
+
+void __fastcall TfrmMain::btLicenseClick(TObject *Sender)
+{
+ String sLicense=ExtractFilePath(ParamStr(0))+"LICENSE.TXT";
+ ShellExecute(NULL,L"open",sLicense.t_str(),NULL,NULL,SW_SHOW);
+
+}
+//---------------------------------------------------------------------------
+
+void __fastcall TfrmMain::lblCopyrightClick(TObject *Sender)
+{
+ ShellExecute(NULL,L"open",L"http://www.greatis.com",NULL,NULL,SW_SHOW);
+
+}
+//---------------------------------------------------------------------------
+
diff --git a/main.dfm b/main.dfm
index e3e3310..ea0d543 100644
--- a/main.dfm
+++ b/main.dfm
@@ -4,7 +4,7 @@ object frmMain: TfrmMain
BorderIcons = [biSystemMenu, biMinimize]
BorderStyle = bsSingle
Caption = 'Anti-WebMiner'
- ClientHeight = 431
+ ClientHeight = 511
ClientWidth = 719
Color = clBtnFace
DoubleBuffered = True
@@ -18,13 +18,35 @@ object frmMain: TfrmMain
Position = poScreenCenter
PixelsPerInch = 96
TextHeight = 15
+ object lblCopyright: TLabel
+ Left = 0
+ Top = 388
+ Width = 719
+ Height = 30
+ Cursor = crHandPoint
+ Align = alBottom
+ Alignment = taRightJustify
+ AutoSize = False
+ Caption =
+ 'Free of charge. Apache License 2.0. Copyright 2017 Greatis Softw' +
+ 'are http://www.greatis.com '
+ Font.Charset = DEFAULT_CHARSET
+ Font.Color = clGrayText
+ Font.Height = -12
+ Font.Name = 'Segoe UI'
+ Font.Style = []
+ ParentFont = False
+ Layout = tlCenter
+ OnClick = lblCopyrightClick
+ ExplicitTop = 368
+ end
object pnlTop: TPanel
Left = 0
Top = 0
Width = 719
Height = 105
Align = alTop
- TabOrder = 4
+ TabOrder = 0
object imgIcon: TImage
Left = 16
Top = 16
@@ -108,11 +130,11 @@ object frmMain: TfrmMain
object lblSubHeader: TLabel
Left = 80
Top = 66
- Width = 451
+ Width = 446
Height = 15
Caption =
- 'Anti-WebMiner blocks the hosts with JS scripts, used for coin mi' +
- 'ning in web browser. '
+ 'Protects your PC against web coin miners (JS mining scripts exec' +
+ 'uted in the browser)'
end
object btMoreInfo: TButton
Left = 573
@@ -125,7 +147,7 @@ object frmMain: TfrmMain
end
end
object btInstall: TButton
- Left = 88
+ Left = 83
Top = 168
Width = 225
Height = 97
@@ -136,20 +158,20 @@ object frmMain: TfrmMain
Font.Name = 'Segoe UI'
Font.Style = []
ParentFont = False
- TabOrder = 0
+ TabOrder = 1
OnClick = btInstallClick
end
object pnlStatus: TPanel
Left = 0
- Top = 338
+ Top = 418
Width = 719
Height = 93
Align = alBottom
BevelOuter = bvNone
Color = clScrollBar
ParentBackground = False
- TabOrder = 3
- ExplicitTop = 400
+ TabOrder = 4
+ ExplicitTop = 398
object lblStatus: TLabel
Left = 99
Top = 16
@@ -199,6 +221,7 @@ object frmMain: TfrmMain
Top = 43
Width = 50
Height = 50
+ Cursor = crHandPoint
AutoSize = True
Picture.Data = {
0954474946496D61676547494638396132003200F7F400354A5F9AA4AF3E5266
@@ -1821,10 +1844,12 @@ object frmMain: TfrmMain
end
end
object pnlImages: TPanel
- Left = 472
- Top = 282
+ Left = 613
+ Top = 225
Width = 385
Height = 258
+ Color = clFuchsia
+ ParentBackground = False
TabOrder = 5
Visible = False
object imgInfo: TImage
@@ -1895,27 +1920,101 @@ object frmMain: TfrmMain
071871762FE50A621B6617001566C3EC92B88DAEFFD5C0B6561EE02F5CCDAF40
33AA8E2D0000000049454E44AE426082}
end
+ object imgDownload: TImage
+ Left = 21
+ Top = 168
+ Width = 48
+ Height = 48
+ AutoSize = True
+ Picture.Data = {
+ 0954506E67496D61676589504E470D0A1A0A0000000D49484452000000300000
+ 003008060000005702F987000001654944415478DAED98414EC33010456780AE
+ A944BBE7069413109F006E40901A891D1CA147805DA55422DCA03D81C3092837
+ 609F22857581C1668522D1403C716A346FD345E3CC7FAAFD25172170B0EB0022
+ D07580AD131826396DFABE4823D699222002DB26E01B11A812FC16120111080C
+ 11A812FC161201111001111081FA90639D01E239AB39D17D3153B11701CB20D1
+ 39029EB064077A58A52A6AB2B6B1403FD6FD5E0F72F38A23C7F84FEB354465A6
+ 4AAF029661A24766C3DB5F62BF5174A05713202A52B56C9AC1F9405909F39AC7
+ 66ABE9D8253C8B80E520D1F10EE0DD5FD67C005DBCA42A739DCD566946E2C648
+ 5CFD32FCAD097FCD3197B59307633D47C4D34DCF10D1623553675C335905EA9B
+ C9AD715A17F892B8D4877BEFB0AC36936D9CB75D189553F5CC39AF952B65B55E
+ 39EAD2AB80E57B3371358E57018B39D413FB690EEDA4AD19F2AF44D7FC5F81BA
+ 8B896F7EBA08898008B425100A22D035C10B7C029DFFB331F52AFAA400000000
+ 49454E44AE426082}
+ end
+ object imgError: TImage
+ Left = 70
+ Top = 16
+ Width = 48
+ Height = 48
+ AutoSize = True
+ Picture.Data = {
+ 0954506E67496D61676589504E470D0A1A0A0000000D49484452000000300000
+ 003008060000005702F987000002824944415478DAD5D84F6B13411806F077B2
+ 891AB2C5DCC49305F16C1452AF6B235E3CB4DF407A2C5EFC031EFD06524F8AE8
+ A114054FD2422F82D1F522D880D6B314F20D44DC5249DC8EB31B1A1CBAD9ECBC
+ F38C6EDE43D89DC0EEF3DB6CDED95941335EE27F072825E02068CDFFF64EACA9
+ 832F8F46644831DDF1C3DE6EE90151D06EC90ABD1742348F7D29E58AFFAEB75E
+ 5A406E78470818A05078070808C0283C18610D60850722AC0056E14108360012
+ 1E806001A0E12D11C60027E12D104600A7E19988C20093F0DEC5CB74EAE1136D
+ ECD7BD558ABF7E86230A014CAFBC35C0003115C0B96D208082885C00F79E8701
+ 0A2026026CFEB050C0144426C0BADB347C6A6C75B5A1FDA58EFA8878801CC431
+ 00AA5536DE7ED201D7AED81C6E22420320FBBC134006620C48978195DA17D424
+ E50C90542C2F1D2D4FC7809F9D854DB5B3843A8753805A63FBDDDE551DB0D8FE
+ 8E7C44700B20F2BB3B4203448B0B7DB5776E76019DF6BADABD0903246D54B5D3
+ 51FA68D446412589B6E6BA3BCB1A4006AD66E4D5FA82C469C449EA6A22ABA809
+ 2DA94335811DA8890C135EFEA8C6C3563DDCED6B80A4D236EA518840B80024E1
+ 454CC1DF2FC8B2273210025959E1330165444C0A3F118040883367A97AFD46BA
+ 1D7FFC40877BDFE0E173015688E461EEE5A6EA7573E321CED3E8B4F053015C44
+ 72E54FDE7FA08D0D379ED360E319347C21000751397F81EA4F5F686383C76B34
+ 7CFD0A1ABE308083487F855B77D3EDE19BED14800E6F04E0204CCB34BC31C025
+ 82139E057081E086670390089BF0560004C236BC35C00681080F017010A8F030
+ 800902191E0A288240878703F2102EC23B01A461D5F274DFAB3D222902296453
+ 9D26ACC683DB47CBC0D203FE65CD3CE00F6F37E440EC5D90CC0000000049454E
+ 44AE426082}
+ end
end
object btUninstall: TButton
- Left = 343
- Top = 224
- Width = 161
+ Left = 469
+ Top = 199
+ Width = 225
Height = 41
Caption = 'Uninstall'
- TabOrder = 2
+ TabOrder = 3
OnClick = btUninstallClick
end
object btUpdate: TButton
- Left = 343
- Top = 168
+ Left = 533
+ Top = 119
Width = 161
Height = 41
Caption = 'Check for Updates...'
- TabOrder = 1
+ TabOrder = 2
+ Visible = False
OnClick = mnCheckupdateClick
end
+ object btDownload: TButton
+ Left = 83
+ Top = 296
+ Width = 225
+ Height = 41
+ Caption = 'Download'
+ TabOrder = 6
+ Visible = False
+ OnClick = btDownloadClick
+ end
+ object btLicense: TButton
+ Left = 527
+ Top = 328
+ Width = 167
+ Height = 25
+ Caption = 'License Information...'
+ TabOrder = 7
+ OnClick = btLicenseClick
+ end
object timUpdate: TTimer
Enabled = False
+ Interval = 100
OnTimer = timUpdateTimer
Left = 656
end
@@ -1962,11 +2061,20 @@ object frmMain: TfrmMain
Caption = 'Checking for updates...'
end
object constNewdatabaseversion: TMenuItem
- Caption = 'Found new database version:'
+ Caption = 'Found new database version'
+ end
+ object constCheckingforprogramsupdates: TMenuItem
+ Caption = 'Checking for program'#39's updates...'
+ end
+ object constFoundnewversion: TMenuItem
+ Caption = 'Found new version'
+ end
+ object constClickDownload: TMenuItem
+ Caption = 'Click Download'
end
end
object MainMenu: TMainMenu
- Left = 608
+ Left = 496
Top = 8
object F1: TMenuItem
Caption = 'File'
@@ -2008,4 +2116,11 @@ object frmMain: TfrmMain
end
end
end
+ object timProgramCheckUpdate: TTimer
+ Enabled = False
+ Interval = 50
+ OnTimer = timProgramCheckUpdateTimer
+ Left = 656
+ Top = 64
+ end
end
diff --git a/main.h b/main.h
index 0d3308c..2943d92 100644
--- a/main.h
+++ b/main.h
@@ -74,6 +74,15 @@ class TfrmMain : public TForm
TMenuItem *constCheckingforupdates;
TButton *btMoreInfo;
TMenuItem *constNewdatabaseversion;
+ TTimer *timProgramCheckUpdate;
+ TMenuItem *constCheckingforprogramsupdates;
+ TMenuItem *constFoundnewversion;
+ TButton *btDownload;
+ TMenuItem *constClickDownload;
+ TImage *imgDownload;
+ TImage *imgError;
+ TLabel *lblCopyright;
+ TButton *btLicense;
void __fastcall timUpdateTimer(TObject *Sender);
void __fastcall mnExitClick(TObject *Sender);
void __fastcall mnUninstallClick(TObject *Sender);
@@ -85,6 +94,10 @@ class TfrmMain : public TForm
void __fastcall btUninstallClick(TObject *Sender);
void __fastcall btInstallClick(TObject *Sender);
void __fastcall imgPreloaderClick(TObject *Sender);
+ void __fastcall timProgramCheckUpdateTimer(TObject *Sender);
+ void __fastcall btDownloadClick(TObject *Sender);
+ void __fastcall btLicenseClick(TObject *Sender);
+ void __fastcall lblCopyrightClick(TObject *Sender);
private: // User declarations
TStringList *strHosts;
@@ -93,6 +106,7 @@ class TfrmMain : public TForm
String sRemoteBlackListVersion;
String sHostsBlackListVersion;
+ String sRemoteProgramVersion;
int iInstallDate; // date of install into Hosts
String sCriticalError;
@@ -100,6 +114,8 @@ class TfrmMain : public TForm
TSSLThread *FThread;
bool bNeedUpdateHosts;
+ bool bCheckProgramUpdate;
+
String __fastcall TfrmMain::sExpandEnvStrings(String sSource);
String __fastcall TfrmMain::sGetHostsPath();
String __fastcall TfrmMain::AddLastSlash(String sSource);
@@ -131,11 +147,12 @@ class TfrmMain : public TForm
String __fastcall TfrmMain::sGetBlackListVersion(String sFile);
bool __fastcall TfrmMain::IsLocalVersUptodate(String RemoteVers, String LocalVers);
- void __fastcall TfrmMain::CheckUpdateBlackList();
+ void __fastcall TfrmMain::CheckUpdates();
void __fastcall TfrmMain::ThreadDone(TObject *Sender);
String __fastcall TfrmMain::sGetDBVersionFromStrings(TStringList *str);
bool __fastcall TfrmMain::UpdateLocalBlackListFromRemote(String sRemoteText);
+ String __fastcall TfrmMain::sGetVersionFromMemoryIni(String sRemoteText);
// UI functions
@@ -168,13 +185,15 @@ void __fastcall WriteLogMessage(AnsiString sText);
#define BLACKLIST_DB String("blacklist.txt")
#define URL_BLACKLIST String("https://raw.githubusercontent.com/greatis/Anti-WebMiner/master/blacklist.txt")
-
+#define URL_PROGRAM_VERSION String("https://raw.githubusercontent.com/greatis/Anti-WebMiner/master/AntiWebMiner.ini")
#define DISP_ALL_DONE 0
#define DISP_INSTALL_TO_HOSTS 1
#define DISP_FOUND_UPDATES 2
#define DISP_NO_BLACKLIST 3
#define DISP_CHECK_UPDATE 4
+#define DISP_CHECK_PROGRAM_UPDATE 6
+#define DISP_FOUND_PROGRAM_UPDATES 76
#define DISP_FATAL_ERROR -1
diff --git a/vista_man.rc b/vista_man.rc
new file mode 100644
index 0000000..a6b2537
--- /dev/null
+++ b/vista_man.rc
@@ -0,0 +1 @@
+1 24 "xp.manifest"
\ No newline at end of file
diff --git a/xp.manifest b/xp.manifest
new file mode 100644
index 0000000..386fba5
--- /dev/null
+++ b/xp.manifest
@@ -0,0 +1,20 @@
+
+
+
+
+
+
+
+
+
+