FirewallMonitor: added menuitem 'View > Windows Firewall' , Implemented [MS-FASP]: Firewall and Advanced Security Protocol Specification
git-svn-id: svn://svn.code.sf.net/p/processhacker/code@4993 21ef857c-d57f-4fe0-8362-d861dc6d29cd
@@ -12,6 +12,335 @@
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
#undef APSTUDIO_READONLY_SYMBOLS
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// English resources
|
||||
|
||||
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
|
||||
LANGUAGE LANG_ENGLISH, SUBLANG_NEUTRAL
|
||||
#pragma code_page(1252)
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Menu
|
||||
//
|
||||
|
||||
IDR_FW MENU
|
||||
BEGIN
|
||||
POPUP "Event"
|
||||
BEGIN
|
||||
MENUITEM "&Copy\aCtrl+C", ID_EVENT_COPY
|
||||
END
|
||||
END
|
||||
|
||||
IDR_FIREWALLMENU MENU
|
||||
BEGIN
|
||||
POPUP "Properties"
|
||||
BEGIN
|
||||
MENUITEM "Disable", ID_PROPERTIES_DISABLE, INACTIVE
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Cut", ID_PROPERTIES_CUT, INACTIVE
|
||||
MENUITEM "Copy", ID_PROPERTIES_COPY, INACTIVE
|
||||
MENUITEM "Delete", ID_PROPERTIES_DELETE, INACTIVE
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Properties", ID_PROPERTIES
|
||||
END
|
||||
END
|
||||
|
||||
IDR_MENUGENERAL MENU
|
||||
BEGIN
|
||||
POPUP "Options"
|
||||
BEGIN
|
||||
MENUITEM SEPARATOR
|
||||
MENUITEM "Exit", ID_OPTIONS_EXIT
|
||||
END
|
||||
END
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Dialog
|
||||
//
|
||||
|
||||
IDD_FIREWALL DIALOGEX 0, 0, 519, 276
|
||||
STYLE DS_SETFONT | DS_FIXEDSYS | WS_MINIMIZEBOX | WS_MAXIMIZEBOX | WS_POPUP | WS_CAPTION | WS_SYSMENU | WS_THICKFRAME
|
||||
CAPTION "Windows Firewall"
|
||||
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
||||
BEGIN
|
||||
DEFPUSHBUTTON "Close",ID_CLOSE,462,255,50,14
|
||||
CONTROL "",IDC_FIREWALL_LIST,"SysListView32",LVS_REPORT | LVS_SINGLESEL | LVS_ALIGNLEFT | WS_BORDER | WS_TABSTOP,120,18,392,234
|
||||
CONTROL "",IDC_TREE1,"SysTreeView32",TVS_HASBUTTONS | TVS_SHOWSELALWAYS | TVS_TRACKSELECT | TVS_FULLROWSELECT | WS_BORDER | WS_HSCROLL | WS_TABSTOP,7,18,108,234
|
||||
END
|
||||
|
||||
IDD_RULEGENERAL DIALOGEX 0, 0, 289, 249
|
||||
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Dialog"
|
||||
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
||||
BEGIN
|
||||
GROUPBOX "General",IDC_STATIC,6,6,276,110
|
||||
EDITTEXT IDC_EDIT1,54,32,222,12,ES_AUTOHSCROLL
|
||||
LTEXT "Name:",IDC_STATIC,54,20,22,8
|
||||
CONTROL "",IDC_STATIC,"Static",SS_BLACKFRAME,12,18,36,30
|
||||
EDITTEXT IDC_EDIT2,54,60,222,38,ES_AUTOHSCROLL
|
||||
LTEXT "Description:",IDC_STATIC,54,48,39,8
|
||||
CONTROL "Enabled",IDC_CHECK1,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,54,102,41,10
|
||||
CONTROL "Allow the connection",IDC_RADIO1,"Button",BS_AUTORADIOBUTTON,26,128,82,10
|
||||
CONTROL "Allow the connection if secure",IDC_RADIO2,"Button",BS_AUTORADIOBUTTON,26,141,111,10
|
||||
CONTROL "Block the connection",IDC_RADIO3,"Button",BS_AUTORADIOBUTTON,26,154,81,10
|
||||
END
|
||||
|
||||
IDD_RULEADVANCED DIALOGEX 0, 0, 289, 249
|
||||
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Dialog"
|
||||
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
||||
BEGIN
|
||||
GROUPBOX "Profiles",IDC_STATIC,6,6,276,66
|
||||
CONTROL "",IDC_STATIC,"Static",SS_BLACKFRAME,12,18,36,30
|
||||
LTEXT "Specify profiles to which this rule applies:",IDC_STATIC,54,18,138,8
|
||||
CONTROL "Domain",IDC_CHECK1,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,66,30,108,10
|
||||
CONTROL "Public",IDC_CHECK2,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,66,43,108,10
|
||||
CONTROL "Private",IDC_CHECK3,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,66,56,108,10
|
||||
GROUPBOX "Interfaces",IDC_STATIC,6,78,276,66
|
||||
CONTROL "",IDC_STATIC,"Static",SS_BLACKFRAME,12,90,36,30
|
||||
LTEXT "Specify interfaces to which this rule applies:",IDC_STATIC,54,90,144,8
|
||||
GROUPBOX "Edge Traversal",IDC_STATIC,6,150,276,90
|
||||
CONTROL "",IDC_STATIC,"Static",SS_BLACKFRAME,12,162,36,30
|
||||
COMBOBOX IDC_COMBO1,66,174,192,30,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
|
||||
LTEXT "Specify interfaces to which this rule applies:",IDC_STATIC,54,162,144,8
|
||||
COMBOBOX IDC_COMBO2,66,102,192,12,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
|
||||
END
|
||||
|
||||
IDD_RULEUSERS DIALOGEX 0, 0, 289, 249
|
||||
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Dialog"
|
||||
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
||||
BEGIN
|
||||
GROUPBOX "Authorized Users",IDC_STATIC,6,6,276,109
|
||||
GROUPBOX "Exceptions",IDC_STATIC,6,120,275,109
|
||||
CONTROL "Only allow connections from these users:",IDC_CHECK1,
|
||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,18,147,10
|
||||
CONTROL "",IDC_LIST1,"SysListView32",LVS_REPORT | LVS_ALIGNLEFT | WS_BORDER | WS_TABSTOP,12,30,210,78
|
||||
PUSHBUTTON "Add",IDC_BUTTON1,228,30,50,14
|
||||
PUSHBUTTON "Remove",IDC_BUTTON2,228,48,50,14
|
||||
CONTROL "Skip this rule for connections from these users:",IDC_CHECK2,
|
||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,132,166,10
|
||||
CONTROL "",IDC_LIST2,"SysListView32",LVS_REPORT | LVS_ALIGNLEFT | WS_BORDER | WS_TABSTOP,12,144,210,81
|
||||
PUSHBUTTON "Add",IDC_BUTTON3,228,144,50,14
|
||||
PUSHBUTTON "Remove",IDC_BUTTON4,228,162,50,14
|
||||
CONTROL "<a>Firewall Rule Properties Page: Users Tab</a>",IDC_SYSLINK1,
|
||||
"SysLink",WS_TABSTOP,6,234,132,12
|
||||
END
|
||||
|
||||
IDD_RULESCOPE DIALOGEX 0, 0, 289, 249
|
||||
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Dialog"
|
||||
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
||||
BEGIN
|
||||
GROUPBOX "Local IP Address",IDC_STATIC,6,6,276,109
|
||||
GROUPBOX "Exceptions",IDC_STATIC,6,120,275,109
|
||||
PUSHBUTTON "Add",IDC_BUTTON1,228,42,50,14
|
||||
PUSHBUTTON "Remove",IDC_BUTTON2,228,77,50,14
|
||||
PUSHBUTTON "Add",IDC_BUTTON3,228,156,50,14
|
||||
PUSHBUTTON "Remove",IDC_BUTTON4,228,192,50,14
|
||||
CONTROL "<a>Firewall Rule Properties Page: Scope Tab</a>",IDC_SYSLINK1,
|
||||
"SysLink",WS_TABSTOP,6,234,132,12
|
||||
CONTROL "Any IP Address",IDC_RADIO2,"Button",BS_AUTORADIOBUTTON,12,18,65,10
|
||||
CONTROL "These IP Address",IDC_RADIO3,"Button",BS_AUTORADIOBUTTON,12,30,72,10
|
||||
CONTROL "Any IP Address",IDC_RADIO4,"Button",BS_AUTORADIOBUTTON,12,132,65,10
|
||||
CONTROL "These IP Address",IDC_RADIO5,"Button",BS_AUTORADIOBUTTON,12,145,72,10
|
||||
PUSHBUTTON "Edit",IDC_BUTTON5,228,59,50,14
|
||||
PUSHBUTTON "Edit",IDC_BUTTON6,228,174,50,14
|
||||
LISTBOX IDC_LIST1,12,42,210,66,LBS_SORT | LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP
|
||||
LISTBOX IDC_LIST2,12,156,210,66,LBS_SORT | LBS_NOINTEGRALHEIGHT | WS_VSCROLL | WS_TABSTOP
|
||||
END
|
||||
|
||||
IDD_RULECOMPUTERS DIALOGEX 0, 0, 289, 249
|
||||
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Dialog"
|
||||
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
||||
BEGIN
|
||||
GROUPBOX "Authorized Computers",IDC_STATIC,6,6,276,109
|
||||
GROUPBOX "Exceptions",IDC_STATIC,6,120,275,109
|
||||
CONTROL "Only allow connections from these computers:",IDC_CHECK1,
|
||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,18,163,10
|
||||
CONTROL "",IDC_LIST1,"SysListView32",LVS_REPORT | LVS_ALIGNLEFT | WS_BORDER | WS_TABSTOP,12,30,210,78
|
||||
PUSHBUTTON "Add",IDC_BUTTON1,228,30,50,14
|
||||
PUSHBUTTON "Remove",IDC_BUTTON2,228,48,50,14
|
||||
CONTROL "Skip this rule for connections from these computers:",IDC_CHECK2,
|
||||
"Button",BS_AUTOCHECKBOX | WS_TABSTOP,12,132,182,10
|
||||
CONTROL "",IDC_LIST2,"SysListView32",LVS_REPORT | LVS_ALIGNLEFT | WS_BORDER | WS_TABSTOP,12,144,210,81
|
||||
PUSHBUTTON "Add",IDC_BUTTON3,228,144,50,14
|
||||
PUSHBUTTON "Remove",IDC_BUTTON4,228,162,50,14
|
||||
CONTROL "<a>Firewall Rule Properties Page: Computers Tab</a>",IDC_SYSLINK1,
|
||||
"SysLink",WS_TABSTOP,6,234,149,12
|
||||
END
|
||||
|
||||
IDD_RULEEXECUTABLE DIALOGEX 0, 0, 289, 249
|
||||
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Dialog"
|
||||
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
||||
BEGIN
|
||||
GROUPBOX "Programs",IDC_STATIC,6,6,276,54
|
||||
GROUPBOX "Services",IDC_STATIC,6,66,276,48
|
||||
CONTROL "All programs that meet the specified conditions",IDC_RADIO1,
|
||||
"Button",BS_AUTORADIOBUTTON,54,18,165,10
|
||||
CONTROL "This program:",IDC_RADIO2,"Button",BS_AUTORADIOBUTTON,54,30,60,10
|
||||
EDITTEXT IDC_EDIT1,66,42,156,14,ES_AUTOHSCROLL
|
||||
PUSHBUTTON "Browse",IDC_BUTTON1,228,42,50,14
|
||||
LTEXT "Specify the services to which this rule applies.",IDC_STATIC,54,78,148,8
|
||||
CONTROL "",IDC_STATIC,"Static",SS_BLACKFRAME,12,18,36,30
|
||||
CONTROL "",IDC_STATIC,"Static",SS_BLACKFRAME,12,78,36,30
|
||||
PUSHBUTTON "Customize",IDC_BUTTON2,54,90,50,14
|
||||
CONTROL "<a>Firewall Rule Properties Page: Programs and Services Tab</a>",IDC_SYSLINK1,
|
||||
"SysLink",WS_TABSTOP,6,234,186,12
|
||||
END
|
||||
|
||||
IDD_RULEPORTS DIALOGEX 0, 0, 289, 249
|
||||
STYLE DS_SETFONT | DS_MODALFRAME | DS_FIXEDSYS | WS_POPUP | WS_CAPTION | WS_SYSMENU
|
||||
CAPTION "Dialog"
|
||||
FONT 8, "MS Shell Dlg", 400, 0, 0x1
|
||||
BEGIN
|
||||
GROUPBOX "Protocols and Ports",IDC_STATIC,6,6,276,150
|
||||
CONTROL "",IDC_STATIC,"Static",SS_BLACKFRAME,12,18,36,30
|
||||
CONTROL "<a>Firewall Rule Properties Page: Protocols and Ports Tab</a>",IDC_SYSLINK1,
|
||||
"SysLink",WS_TABSTOP,6,234,186,12
|
||||
COMBOBOX IDC_COMBO1,114,18,156,30,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
|
||||
COMBOBOX IDC_COMBO2,114,54,156,30,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
|
||||
COMBOBOX IDC_COMBO3,114,108,156,30,CBS_DROPDOWNLIST | CBS_SORT | WS_VSCROLL | WS_TABSTOP
|
||||
EDITTEXT IDC_EDIT1,114,72,156,14,ES_AUTOHSCROLL
|
||||
EDITTEXT IDC_EDIT2,114,126,156,14,ES_AUTOHSCROLL
|
||||
LTEXT "Protocol Type:",IDC_STATIC,54,19,48,8
|
||||
LTEXT "Protocol Number:",IDC_STATIC,54,36,56,8
|
||||
LTEXT "Local Port:",IDC_STATIC,54,54,35,8
|
||||
LTEXT "Remote Port:",IDC_STATIC,54,108,44,8
|
||||
LTEXT "Example: 80,443, 5000-5010",IDC_STATIC,114,90,96,8
|
||||
LTEXT "Example: 80,443, 5000-5010",IDC_STATIC,114,144,96,8
|
||||
GROUPBOX "ICMP",IDC_STATIC,6,162,276,48
|
||||
LTEXT "Internet Control Message Protocol (ICMP) settings",IDC_STATIC,12,174,162,8
|
||||
PUSHBUTTON "Customize",IDC_BUTTON2,12,186,50,14
|
||||
END
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// DESIGNINFO
|
||||
//
|
||||
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
GUIDELINES DESIGNINFO
|
||||
BEGIN
|
||||
IDD_FIREWALL, DIALOG
|
||||
BEGIN
|
||||
LEFTMARGIN, 7
|
||||
RIGHTMARGIN, 512
|
||||
TOPMARGIN, 7
|
||||
BOTTOMMARGIN, 269
|
||||
END
|
||||
|
||||
IDD_RULEGENERAL, DIALOG
|
||||
BEGIN
|
||||
LEFTMARGIN, 7
|
||||
RIGHTMARGIN, 282
|
||||
TOPMARGIN, 7
|
||||
BOTTOMMARGIN, 242
|
||||
END
|
||||
|
||||
IDD_RULEADVANCED, DIALOG
|
||||
BEGIN
|
||||
LEFTMARGIN, 7
|
||||
RIGHTMARGIN, 282
|
||||
TOPMARGIN, 7
|
||||
BOTTOMMARGIN, 242
|
||||
END
|
||||
|
||||
IDD_RULEUSERS, DIALOG
|
||||
BEGIN
|
||||
LEFTMARGIN, 7
|
||||
RIGHTMARGIN, 282
|
||||
TOPMARGIN, 7
|
||||
BOTTOMMARGIN, 242
|
||||
END
|
||||
|
||||
IDD_RULESCOPE, DIALOG
|
||||
BEGIN
|
||||
LEFTMARGIN, 7
|
||||
RIGHTMARGIN, 282
|
||||
TOPMARGIN, 7
|
||||
BOTTOMMARGIN, 242
|
||||
END
|
||||
|
||||
IDD_RULECOMPUTERS, DIALOG
|
||||
BEGIN
|
||||
LEFTMARGIN, 7
|
||||
RIGHTMARGIN, 282
|
||||
TOPMARGIN, 7
|
||||
BOTTOMMARGIN, 242
|
||||
END
|
||||
|
||||
IDD_RULEEXECUTABLE, DIALOG
|
||||
BEGIN
|
||||
LEFTMARGIN, 7
|
||||
RIGHTMARGIN, 282
|
||||
TOPMARGIN, 7
|
||||
BOTTOMMARGIN, 242
|
||||
END
|
||||
|
||||
IDD_RULEPORTS, DIALOG
|
||||
BEGIN
|
||||
LEFTMARGIN, 7
|
||||
RIGHTMARGIN, 282
|
||||
TOPMARGIN, 7
|
||||
BOTTOMMARGIN, 242
|
||||
END
|
||||
END
|
||||
#endif // APSTUDIO_INVOKED
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Dialog Info
|
||||
//
|
||||
|
||||
IDD_RULEADVANCED DLGINIT
|
||||
BEGIN
|
||||
IDC_COMBO2, 0x403, 19, 0
|
||||
0x6f4c, 0x6163, 0x206c, 0x7241, 0x6165, 0x4e20, 0x7465, 0x6f77, 0x6b72,
|
||||
"\000"
|
||||
IDC_COMBO2, 0x403, 14, 0
|
||||
0x6552, 0x6f6d, 0x6574, 0x4120, 0x6363, 0x7365, 0x0073,
|
||||
0
|
||||
END
|
||||
|
||||
#endif // English resources
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// English (United States) resources
|
||||
|
||||
#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
|
||||
LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
|
||||
#pragma code_page(1252)
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Icon
|
||||
//
|
||||
|
||||
// Icon with lowest ID value placed first to ensure application icon
|
||||
// remains consistent on all systems.
|
||||
IDI_FIREWALLICON ICON "resources\\firewall.ico"
|
||||
IDI_ICONHOME ICON "resources\\home.ico"
|
||||
IDI_HOMEICON ICON "resources\\home2.ico"
|
||||
IDI_ICONPUBLIC ICON "resources\\public.ico"
|
||||
IDI_WFICON ICON "resources\\wfirewall.ico"
|
||||
IDI_ICONWORK ICON "resources\\work.ico"
|
||||
IDI_ICONINBOUND ICON "resources\\inbound.ico"
|
||||
IDI_ICONMONITOR ICON "resources\\monitor.ico"
|
||||
IDI_ICONOUTBOUND ICON "resources\\outbound.ico"
|
||||
#endif // English (United States) resources
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
// English (Australia) resources
|
||||
|
||||
@@ -83,20 +412,6 @@ BEGIN
|
||||
END
|
||||
END
|
||||
|
||||
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
//
|
||||
// Menu
|
||||
//
|
||||
|
||||
IDR_FW MENU
|
||||
BEGIN
|
||||
POPUP "Event"
|
||||
BEGIN
|
||||
MENUITEM "&Copy\aCtrl+C", ID_EVENT_COPY
|
||||
END
|
||||
END
|
||||
|
||||
#endif // English (Australia) resources
|
||||
/////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
@@ -170,12 +170,23 @@
|
||||
</Link>
|
||||
</ItemDefinitionGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="fwdialog.c" />
|
||||
<ClCompile Include="fwtab.c" />
|
||||
<ClCompile Include="main.c" />
|
||||
<ClCompile Include="monitor.c" />
|
||||
<ClCompile Include="fw.c" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="CHANGELOG.txt" />
|
||||
<None Include="resources\firewall.ico" />
|
||||
<None Include="resources\home.ico" />
|
||||
<None Include="resources\home2.ico" />
|
||||
<None Include="resources\inbound.ico" />
|
||||
<None Include="resources\monitor.ico" />
|
||||
<None Include="resources\outbound.ico" />
|
||||
<None Include="resources\public.ico" />
|
||||
<None Include="resources\wfirewall.ico" />
|
||||
<None Include="resources\work.ico" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ResourceCompile Include="FirewallMonitor.rc" />
|
||||
@@ -184,6 +195,7 @@
|
||||
<ClInclude Include="fwtabp.h" />
|
||||
<ClInclude Include="fwmon.h" />
|
||||
<ClInclude Include="resource.h" />
|
||||
<ClInclude Include="wf.h" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||
<ImportGroup Label="ExtensionTargets">
|
||||
|
||||
@@ -13,6 +13,9 @@
|
||||
<UniqueIdentifier>{67DA6AB6-F800-4c08-8B7A-83BB121AAD01}</UniqueIdentifier>
|
||||
<Extensions>rc;ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe;resx;tiff;tif;png;wav</Extensions>
|
||||
</Filter>
|
||||
<Filter Include="Resource Files\icons">
|
||||
<UniqueIdentifier>{479e3232-66c7-4bb6-9a23-68e80f37e9b4}</UniqueIdentifier>
|
||||
</Filter>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClCompile Include="main.c">
|
||||
@@ -24,14 +27,42 @@
|
||||
<ClCompile Include="monitor.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="fwdialog.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
<ClCompile Include="fw.c">
|
||||
<Filter>Source Files</Filter>
|
||||
</ClCompile>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="CHANGELOG.txt" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ResourceCompile Include="FirewallMonitor.rc">
|
||||
<Filter>Resource Files</Filter>
|
||||
</ResourceCompile>
|
||||
<None Include="resources\firewall.ico">
|
||||
<Filter>Resource Files\icons</Filter>
|
||||
</None>
|
||||
<None Include="resources\home.ico">
|
||||
<Filter>Resource Files\icons</Filter>
|
||||
</None>
|
||||
<None Include="resources\home2.ico">
|
||||
<Filter>Resource Files\icons</Filter>
|
||||
</None>
|
||||
<None Include="resources\inbound.ico">
|
||||
<Filter>Resource Files\icons</Filter>
|
||||
</None>
|
||||
<None Include="resources\monitor.ico">
|
||||
<Filter>Resource Files\icons</Filter>
|
||||
</None>
|
||||
<None Include="resources\outbound.ico">
|
||||
<Filter>Resource Files\icons</Filter>
|
||||
</None>
|
||||
<None Include="resources\public.ico">
|
||||
<Filter>Resource Files\icons</Filter>
|
||||
</None>
|
||||
<None Include="resources\wfirewall.ico">
|
||||
<Filter>Resource Files\icons</Filter>
|
||||
</None>
|
||||
<None Include="resources\work.ico">
|
||||
<Filter>Resource Files\icons</Filter>
|
||||
</None>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ClInclude Include="resource.h">
|
||||
@@ -43,5 +74,13 @@
|
||||
<ClInclude Include="fwtabp.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
<ClInclude Include="wf.h">
|
||||
<Filter>Header Files</Filter>
|
||||
</ClInclude>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ResourceCompile Include="FirewallMonitor.rc">
|
||||
<Filter>Resource Files</Filter>
|
||||
</ResourceCompile>
|
||||
</ItemGroup>
|
||||
</Project>
|
||||
@@ -0,0 +1,439 @@
|
||||
#include "fwmon.h"
|
||||
#include "wf.h"
|
||||
|
||||
static BOOLEAN IsFwApiInitialized = FALSE;
|
||||
static BOOLEAN IsFwApiConnectivityLost = FALSE;
|
||||
static HMODULE FwApiLibraryHandle = NULL;
|
||||
static FW_POLICY_STORE_HANDLE PolicyStoreHandles[4];
|
||||
|
||||
#define MAIN_POLICY_STORE PolicyStoreHandles[0]
|
||||
#define GPRSOP_POLICY_STORE PolicyStoreHandles[1]
|
||||
#define DYNAMIC_POLICY_STORE PolicyStoreHandles[2]
|
||||
#define DEFAULT_POLICY_STORE PolicyStoreHandles[3]
|
||||
|
||||
static POLICYSTORE pcProfiles[] =
|
||||
{
|
||||
{ FW_STORE_TYPE_LOCAL, FW_POLICY_ACCESS_RIGHT_READ_WRITE, FALSE },
|
||||
{ FW_STORE_TYPE_GP_RSOP, FW_POLICY_ACCESS_RIGHT_READ, FALSE },
|
||||
{ FW_STORE_TYPE_DYNAMIC, FW_POLICY_ACCESS_RIGHT_READ, FALSE },
|
||||
{ FW_STORE_TYPE_DEFAULTS, FW_POLICY_ACCESS_RIGHT_READ, FALSE }
|
||||
};
|
||||
|
||||
static POLICYSTORE gpoProfiles[] =
|
||||
{
|
||||
{ FW_STORE_TYPE_GPO, FW_POLICY_ACCESS_RIGHT_READ_WRITE, FALSE },
|
||||
{ FW_STORE_TYPE_INVALID, FW_POLICY_ACCESS_RIGHT_INVALID, FALSE },
|
||||
{ FW_STORE_TYPE_INVALID, FW_POLICY_ACCESS_RIGHT_INVALID, FALSE },
|
||||
{ FW_STORE_TYPE_DEFAULTS, FW_POLICY_ACCESS_RIGHT_READ, TRUE }
|
||||
};
|
||||
|
||||
static _FWOpenPolicyStore FWOpenPolicyStore_I = NULL;
|
||||
static _FWClosePolicyStore FWClosePolicyStore_I = NULL;
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
static _FWRestoreDefaults FWRestoreDefaults_I = NULL;
|
||||
static _FWGetGlobalConfig FWGetGlobalConfig_I = NULL;
|
||||
static _FWSetGlobalConfig FWSetGlobalConfig_I = NULL;
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
static _FWAddFirewallRule FWAddFirewallRule_I = NULL;
|
||||
static _FWSetFirewallRule FWSetFirewallRule_I = NULL;
|
||||
static _FWDeleteFirewallRule FWDeleteFirewallRule_I = NULL;
|
||||
static _FWDeleteAllFirewallRules FWDeleteAllFirewallRules_I = NULL;
|
||||
static _FWEnumFirewallRules FWEnumFirewallRules_I = NULL;
|
||||
static _FWVerifyFirewallRule FWVerifyFirewallRule_I = NULL;
|
||||
static _FWFreeFirewallRules FWFreeFirewallRules_I = NULL;
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
static _FWGetConfig FWGetConfig_I = NULL;
|
||||
static _FWSetConfig FWSetConfig_I = NULL;
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
static _FWAddConnectionSecurityRule FWAddConnectionSecurityRule_I = NULL;
|
||||
static _FWSetConnectionSecurityRule FWSetConnectionSecurityRule_I = NULL;
|
||||
static _FWDeleteConnectionSecurityRule FWDeleteConnectionSecurityRule_I = NULL;
|
||||
static _FWDeleteAllConnectionSecurityRules FWDeleteAllConnectionSecurityRules_I = NULL;
|
||||
static _FWEnumConnectionSecurityRules FWEnumConnectionSecurityRules_I = NULL;
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
static _FWAddAuthenticationSet FWAddAuthenticationSet_I = NULL;
|
||||
static _FWSetAuthenticationSet FWSetAuthenticationSet_I = NULL;
|
||||
static _FWDeleteAuthenticationSet FWDeleteAuthenticationSet_I = NULL;
|
||||
static _FWDeleteAllAuthenticationSets FWDeleteAllAuthenticationSets_I = NULL;
|
||||
static _FWEnumAuthenticationSets FWEnumAuthenticationSets_I = NULL;
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
static _FWAddCryptoSet FWAddCryptoSet_I = NULL;
|
||||
static _FWSetCryptoSet FWSetCryptoSet_I = NULL;
|
||||
static _FWDeleteCryptoSet FWDeleteCryptoSet_I = NULL;
|
||||
static _FWDeleteAllCryptoSets FWDeleteAllCryptoSets_I = NULL;
|
||||
static _FWEnumCryptoSets FWEnumCryptoSets_I = NULL;
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
static _FWEnumPhase1SAs FWEnumPhase1SAs_I = NULL;
|
||||
static _FWEnumPhase2SAs FWEnumPhase2SAs_I = NULL;
|
||||
static _FWDeletePhase1SAs FWDeletePhase1SAs_I = NULL;
|
||||
static _FWDeletePhase2SAs FWDeletePhase2SAs_I = NULL;
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
static _FWEnumProducts FWEnumProducts_I = NULL;
|
||||
static _FWFreeProducts FWFreeProducts_I = NULL;
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
static _FWAddMainModeRule FWAddMainModeRule_I = NULL;
|
||||
static _FWSetMainModeRule FWSetMainModeRule_I = NULL;
|
||||
static _FWDeleteMainModeRule FWDeleteMainModeRule_I = NULL;
|
||||
static _FWDeleteAllMainModeRules FWDeleteAllMainModeRules_I = NULL;
|
||||
static _FWEnumMainModeRules FWEnumMainModeRules_I = NULL;
|
||||
static _FWFreeMainModeRules FWFreeMainModeRules_I = NULL;
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
static _FWQueryFirewallRules FWQueryFirewallRules_I = NULL;
|
||||
static _FWQueryConnectionSecurityRules FWQueryConnectionSecurityRules_I = NULL;
|
||||
static _FWQueryMainModeRules FWQueryMainModeRules_I = NULL;
|
||||
static _FWQueryAuthenticationSets FWQueryAuthenticationSets_I = NULL;
|
||||
static _FWQueryCryptoSets FWQueryCryptoSets_I = NULL;
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
static _FWEnumNetworks FWEnumNetworks_I = NULL;
|
||||
static _FWFreeNetworks FWFreeNetworks_I = NULL;
|
||||
static _FWEnumAdapters FWEnumAdapters_I = NULL;
|
||||
static _FWFreeAdapters FWFreeAdapters_I = NULL;
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
static _FWStatusMessageFromStatusCode FWStatusMessageFromStatusCode_I = NULL;
|
||||
static _FWExportPolicy FWExportPolicy_I = NULL;
|
||||
static _FWImportPolicy FWImportPolicy_I = NULL;
|
||||
static _FWRestoreGPODefaults FWRestoreGPODefaults_I = NULL;
|
||||
static _FwIsGroupPolicyEnforced FwIsGroupPolicyEnforced_I = NULL;
|
||||
static _FWChangeNotificationCreate FWChangeNotificationCreate_I = NULL;
|
||||
static _FWChangeNotificationDestroy FWChangeNotificationDestroy_I = NULL;
|
||||
///////////////////////////////////////////////////////////////////////////////////////////////////////////
|
||||
|
||||
|
||||
VOID BuildQueryForDirection(FW_QUERY query, FW_DIRECTION direction)
|
||||
{
|
||||
FW_MATCH_VALUE fw_match_value = { 0 };
|
||||
|
||||
FW_QUERY_CONDITION fw_query_conditionArray[1];
|
||||
// FW_QUERY_CONDITION fw_query_conditionArray2[1];
|
||||
|
||||
// fw_query_conditionArray[0] = { 0 };
|
||||
fw_query_conditionArray[0].matchKey = FW_MATCH_KEY_DIRECTION;
|
||||
fw_query_conditionArray[0].matchType = FW_MATCH_TYPE_EQUAL;
|
||||
|
||||
fw_match_value.type = FW_DATA_TYPE_UINT32;
|
||||
//fw_match_value.data = new FW_MATCH_VALUE_DATA();
|
||||
|
||||
if (direction != FW_DIR_BOTH)
|
||||
{
|
||||
query.dwNumEntries = 1;
|
||||
// fw_match_value.data.uInt32 = (uint) direction;
|
||||
//fw_query_conditionArray[0].matchValue = fw_match_value;
|
||||
}
|
||||
// else
|
||||
// {
|
||||
// query.dwNumEntries = 2;
|
||||
// fw_match_value.data.uInt32 = 1;
|
||||
// fw_query_conditionArray[0].matchValue = fw_match_value;
|
||||
// fw_query_conditionArray2 = new FW_QUERY_CONDITION[1];
|
||||
// fw_query_conditionArray2[0].matchKey = FW_MATCH_KEY.FW_MATCH_KEY_DIRECTION;
|
||||
// fw_query_conditionArray2[0].matchType = FW_MATCH_TYPE.FW_MATCH_TYPE_EQUAL;
|
||||
// fw_match_value = new FW_MATCH_VALUE();
|
||||
// fw_match_value.type = FW_DATA_TYPE.FW_DATA_TYPE_UINT32;
|
||||
// fw_match_value.data = new FW_MATCH_VALUE_DATA();
|
||||
// fw_match_value.data.uInt32 = 2;
|
||||
// fw_query_conditionArray2[0].matchValue = fw_match_value;
|
||||
// }
|
||||
// FW_QUERY_CONDITIONS[] fw_query_conditionsArray = new FW_QUERY_CONDITIONS[query.dwNumEntries];
|
||||
// fw_query_conditionsArray[0].dwNumEntries = 1;
|
||||
// GCHandle item = GCHandle.Alloc(fw_query_conditionArray, GCHandleType.Pinned);
|
||||
// fw_query_conditionsArray[0].pAndedConditions = Marshal.UnsafeAddrOfPinnedArrayElement(fw_query_conditionArray, 0);
|
||||
// gchandles.Add(item);
|
||||
// if (direction == FW_DIRECTION.FW_DIR_BOTH)
|
||||
// {
|
||||
// fw_query_conditionsArray[1].dwNumEntries = 1;
|
||||
// item = GCHandle.Alloc(fw_query_conditionArray2, GCHandleType.Pinned);
|
||||
// fw_query_conditionsArray[1].pAndedConditions = Marshal.UnsafeAddrOfPinnedArrayElement(fw_query_conditionArray2, 0);
|
||||
// gchandles.Add(item);
|
||||
// }
|
||||
// item = GCHandle.Alloc(fw_query_conditionsArray, GCHandleType.Pinned);
|
||||
// query.pORConditions = Marshal.UnsafeAddrOfPinnedArrayElement(fw_query_conditionsArray, 0);
|
||||
// gchandles.Add(item);
|
||||
}
|
||||
|
||||
|
||||
|
||||
BOOLEAN IsFirewallApiInitialized(
|
||||
VOID
|
||||
)
|
||||
{
|
||||
return IsFwApiInitialized;
|
||||
}
|
||||
|
||||
BOOLEAN InitializeFirewallApi(
|
||||
VOID
|
||||
)
|
||||
{
|
||||
int index = 0;
|
||||
|
||||
// Check if Vista+ ??
|
||||
|
||||
if (FwApiLibraryHandle) // already initialized...
|
||||
return TRUE;
|
||||
|
||||
FwApiLibraryHandle = LoadLibraryW(L"FirewallAPI.dll");
|
||||
|
||||
if (!FwApiLibraryHandle)
|
||||
return FALSE;
|
||||
|
||||
// Missing FwAlloc/FwFree and various FwFreexxx and other functions....
|
||||
|
||||
FWOpenPolicyStore_I = (_FWOpenPolicyStore)GetProcAddress(FwApiLibraryHandle, "FWOpenPolicyStore");
|
||||
FWClosePolicyStore_I = (_FWClosePolicyStore)GetProcAddress(FwApiLibraryHandle, "FWClosePolicyStore");
|
||||
|
||||
FWRestoreDefaults_I = (_FWRestoreDefaults)GetProcAddress(FwApiLibraryHandle, "FWRestoreDefaults");
|
||||
FWGetGlobalConfig_I = (_FWGetGlobalConfig)GetProcAddress(FwApiLibraryHandle, "FWGetGlobalConfig");
|
||||
FWSetGlobalConfig_I = (_FWSetGlobalConfig)GetProcAddress(FwApiLibraryHandle, "FWSetGlobalConfig");
|
||||
|
||||
FWAddFirewallRule_I = (_FWAddFirewallRule)GetProcAddress(FwApiLibraryHandle, "FWAddFirewallRule");
|
||||
FWSetFirewallRule_I = (_FWSetFirewallRule)GetProcAddress(FwApiLibraryHandle, "FWSetFirewallRule");
|
||||
FWDeleteFirewallRule_I = (_FWDeleteFirewallRule)GetProcAddress(FwApiLibraryHandle, "FWDeleteFirewallRule");
|
||||
FWDeleteAllFirewallRules_I = (_FWDeleteAllFirewallRules)GetProcAddress(FwApiLibraryHandle, "FWDeleteAllFirewallRules");
|
||||
FWEnumFirewallRules_I = (_FWEnumFirewallRules)GetProcAddress(FwApiLibraryHandle, "FWEnumFirewallRules");
|
||||
FWVerifyFirewallRule_I = (_FWVerifyFirewallRule)GetProcAddress(FwApiLibraryHandle, "FWVerifyFirewallRule");
|
||||
FWFreeFirewallRules_I = (_FWFreeFirewallRules)GetProcAddress(FwApiLibraryHandle, "FWFreeFirewallRules");
|
||||
|
||||
FWGetConfig_I = (_FWGetConfig)GetProcAddress(FwApiLibraryHandle, "FWGetConfig");
|
||||
FWSetConfig_I = (_FWSetConfig)GetProcAddress(FwApiLibraryHandle, "FWSetConfig");
|
||||
|
||||
FWAddConnectionSecurityRule_I = (_FWAddConnectionSecurityRule)GetProcAddress(FwApiLibraryHandle, "FWAddConnectionSecurityRule");
|
||||
FWSetConnectionSecurityRule_I = (_FWSetConnectionSecurityRule)GetProcAddress(FwApiLibraryHandle, "FWSetConnectionSecurityRule");
|
||||
FWDeleteConnectionSecurityRule_I = (_FWDeleteConnectionSecurityRule)GetProcAddress(FwApiLibraryHandle, "FWDeleteConnectionSecurityRule");
|
||||
FWDeleteAllConnectionSecurityRules_I = (_FWDeleteAllConnectionSecurityRules)GetProcAddress(FwApiLibraryHandle, "FWDeleteAllConnectionSecurityRules");
|
||||
FWEnumConnectionSecurityRules_I = (_FWEnumConnectionSecurityRules)GetProcAddress(FwApiLibraryHandle, "FWEnumConnectionSecurityRules");
|
||||
|
||||
FWAddAuthenticationSet_I = (_FWAddAuthenticationSet)GetProcAddress(FwApiLibraryHandle, "FWAddAuthenticationSet");
|
||||
FWSetAuthenticationSet_I = (_FWSetAuthenticationSet)GetProcAddress(FwApiLibraryHandle, "FWSetAuthenticationSet");
|
||||
FWDeleteAuthenticationSet_I = (_FWDeleteAuthenticationSet)GetProcAddress(FwApiLibraryHandle, "FWOpenPolicyStore");
|
||||
FWDeleteAllAuthenticationSets_I = (_FWDeleteAllAuthenticationSets)GetProcAddress(FwApiLibraryHandle, "FWDeleteAllAuthenticationSets");
|
||||
FWEnumConnectionSecurityRules_I = (_FWEnumConnectionSecurityRules)GetProcAddress(FwApiLibraryHandle, "FWEnumConnectionSecurityRules");
|
||||
|
||||
FWAddCryptoSet_I = (_FWAddCryptoSet)GetProcAddress(FwApiLibraryHandle, "FWAddCryptoSet");
|
||||
FWSetCryptoSet_I = (_FWSetCryptoSet)GetProcAddress(FwApiLibraryHandle, "FWSetCryptoSet");
|
||||
FWDeleteCryptoSet_I = (_FWDeleteCryptoSet)GetProcAddress(FwApiLibraryHandle, "FWDeleteCryptoSet");
|
||||
FWDeleteAllCryptoSets_I = (_FWDeleteAllCryptoSets)GetProcAddress(FwApiLibraryHandle, "FWDeleteAllCryptoSets");
|
||||
FWEnumCryptoSets_I = (_FWEnumCryptoSets)GetProcAddress(FwApiLibraryHandle, "FWEnumCryptoSets");
|
||||
|
||||
FWEnumPhase1SAs_I = (_FWEnumPhase1SAs)GetProcAddress(FwApiLibraryHandle, "FWEnumPhase1SAs");
|
||||
FWEnumPhase2SAs_I = (_FWEnumPhase2SAs)GetProcAddress(FwApiLibraryHandle, "FWEnumPhase2SAs");
|
||||
FWDeletePhase1SAs_I = (_FWDeletePhase1SAs)GetProcAddress(FwApiLibraryHandle, "FWDeletePhase1SAs");
|
||||
FWDeletePhase2SAs_I = (_FWDeletePhase2SAs)GetProcAddress(FwApiLibraryHandle, "FWDeletePhase2SAs");
|
||||
|
||||
FWEnumProducts_I = (_FWEnumProducts)GetProcAddress(FwApiLibraryHandle, "FWEnumProducts");
|
||||
FWFreeProducts_I = (_FWFreeProducts)GetProcAddress(FwApiLibraryHandle, "FWFreeProducts");
|
||||
|
||||
FWStatusMessageFromStatusCode_I = (_FWStatusMessageFromStatusCode)GetProcAddress(FwApiLibraryHandle, "FWStatusMessageFromStatusCode");
|
||||
FWExportPolicy_I = (_FWExportPolicy)GetProcAddress(FwApiLibraryHandle, "FWExportPolicy");
|
||||
FWImportPolicy_I = (_FWImportPolicy)GetProcAddress(FwApiLibraryHandle, "FWImportPolicy");
|
||||
FWRestoreGPODefaults_I = (_FWRestoreGPODefaults)GetProcAddress(FwApiLibraryHandle, "FWRestoreGPODefaults");
|
||||
FwIsGroupPolicyEnforced_I = (_FwIsGroupPolicyEnforced)GetProcAddress(FwApiLibraryHandle, "FwIsGroupPolicyEnforced");
|
||||
FWChangeNotificationCreate_I = (_FWChangeNotificationCreate)GetProcAddress(FwApiLibraryHandle, "FWChangeNotificationCreate");
|
||||
FWChangeNotificationDestroy_I = (_FWChangeNotificationDestroy)GetProcAddress(FwApiLibraryHandle, "FWChangeNotificationDestroy");
|
||||
|
||||
for (index = 0; index < 4; index++)
|
||||
{
|
||||
FWOpenPolicyStore_I(
|
||||
FW_SEVEN_BINARY_VERSION,
|
||||
NULL,
|
||||
pcProfiles[index].StoreType,
|
||||
pcProfiles[index].AccessRight,
|
||||
FW_POLICY_STORE_FLAGS_NONE,
|
||||
&PolicyStoreHandles[index]
|
||||
);
|
||||
}
|
||||
|
||||
IsFwApiInitialized = TRUE;
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
VOID FreeFirewallApi(
|
||||
VOID
|
||||
)
|
||||
{
|
||||
if (FWClosePolicyStore_I)
|
||||
{
|
||||
ULONG i;
|
||||
|
||||
for (i = 0; i < _countof(PolicyStoreHandles); i++)
|
||||
{
|
||||
FWClosePolicyStore_I(PolicyStoreHandles[i]);
|
||||
PolicyStoreHandles[i] = NULL;
|
||||
}
|
||||
}
|
||||
|
||||
FWOpenPolicyStore_I = NULL;
|
||||
FWClosePolicyStore_I = NULL;
|
||||
FWRestoreDefaults_I = NULL;
|
||||
FWGetGlobalConfig_I = NULL;
|
||||
FWSetGlobalConfig_I = NULL;
|
||||
|
||||
if (FwApiLibraryHandle)
|
||||
{
|
||||
FreeLibrary(FwApiLibraryHandle);
|
||||
FwApiLibraryHandle = NULL;
|
||||
}
|
||||
|
||||
IsFwApiInitialized = FALSE;
|
||||
}
|
||||
|
||||
BOOLEAN ValidateFirewallConnectivity(
|
||||
ULONG returnValue
|
||||
)
|
||||
{
|
||||
if (!IsFwApiConnectivityLost && ((returnValue == 6) || (returnValue == 0x6b5)))
|
||||
{
|
||||
IsFwApiConnectivityLost = TRUE;
|
||||
//ShowWarning( InvalidPolicyHandles or RpcConnection );
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
BOOLEAN FwIsGroupPolicyEnforced(
|
||||
__in PWCHAR wszMachine,
|
||||
__in FW_PROFILE_TYPE Profiles
|
||||
)
|
||||
{
|
||||
BOOLEAN isEnforced = FALSE;
|
||||
|
||||
ValidateFirewallConnectivity(FwIsGroupPolicyEnforced_I(NULL, Profiles, &isEnforced));
|
||||
|
||||
return (isEnforced == TRUE);
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
VOID FwStatusMessageFromStatusCode(
|
||||
__in FW_RULE_STATUS code
|
||||
)
|
||||
{
|
||||
ULONG pcchMsg = 0;
|
||||
|
||||
FWStatusMessageFromStatusCode_I(code, NULL, &pcchMsg);
|
||||
}
|
||||
|
||||
VOID EnumerateFirewallRules(
|
||||
__in FW_POLICY_STORE Store,
|
||||
__in FW_PROFILE_TYPE Type,
|
||||
__in FW_DIRECTION Direction,
|
||||
__in PFW_WALK_RULES Callback,
|
||||
__in PVOID Context
|
||||
)
|
||||
{
|
||||
UINT32 uRuleCount = 0;
|
||||
ULONG result = 0;
|
||||
FW_POLICY_STORE_HANDLE storeHandle = NULL;
|
||||
PFW_RULE2_0 pRules = NULL;
|
||||
|
||||
switch (Store)
|
||||
{
|
||||
case FW_POLICY_STORE_MAIN:
|
||||
storeHandle = MAIN_POLICY_STORE;
|
||||
break;
|
||||
case FW_POLICY_STORE_GPRSOP:
|
||||
storeHandle = GPRSOP_POLICY_STORE;
|
||||
break;
|
||||
case FW_POLICY_STORE_DYNAMIC:
|
||||
storeHandle = DYNAMIC_POLICY_STORE;
|
||||
break;
|
||||
case FW_POLICY_STORE_DEFAULT:
|
||||
default:
|
||||
storeHandle = DEFAULT_POLICY_STORE;
|
||||
break;
|
||||
}
|
||||
|
||||
result = FWEnumFirewallRules_I(
|
||||
storeHandle,
|
||||
FW_RULE_STATUS_CLASS_ALL,
|
||||
Type,
|
||||
FW_ENUM_RULES_FLAG_INCLUDE_METADATA | FW_ENUM_RULES_FLAG_RESOLVE_NAME | FW_ENUM_RULES_FLAG_RESOLVE_DESCRIPTION | FW_ENUM_RULES_FLAG_RESOLVE_APPLICATION,
|
||||
&uRuleCount,
|
||||
&pRules
|
||||
);
|
||||
|
||||
if (ValidateFirewallConnectivity(result))
|
||||
{
|
||||
while (pRules != NULL && (pRules = pRules->pNext))
|
||||
{
|
||||
if (Direction == FW_DIR_BOTH)
|
||||
{
|
||||
if (!Callback || !Callback(pRules, Context))
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
if (pRules->Direction == Direction)
|
||||
{
|
||||
if (!Callback || !Callback(pRules, Context))
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
FWFreeFirewallRules_I(pRules);
|
||||
}
|
||||
|
||||
//FW_PROFILE_TYPE_CURRENT
|
||||
//result = FWEnumFirewallRules_I(DYNAMIC_POLICY_STORE, wFilteredByStatus, FW_PROFILE_TYPE_CURRENT, wFlags, &NumRules, &pRule);
|
||||
|
||||
// internal void Reload(string[] ruleIdFilter)
|
||||
//{
|
||||
// uint num;
|
||||
// IntPtr ptr;
|
||||
// FW_QUERY fw_query;
|
||||
// List<IntPtr> idBuffer = new List<IntPtr>();
|
||||
// this.Rules = new List<FirewallRule>();
|
||||
// FW_ENUM_RULES_FLAGS fw_enum_rules_flags = FW_ENUM_RULES_FLAGS.FW_ENUM_RULES_FLAG_NONE;
|
||||
// if (this.resolveKeywords)
|
||||
// {
|
||||
// fw_enum_rules_flags = (FW_ENUM_RULES_FLAGS) ((ushort) (fw_enum_rules_flags | (FW_ENUM_RULES_FLAGS.FW_ENUM_RULES_FLAG_RESOLVE_APPLICATION | FW_ENUM_RULES_FLAGS.FW_ENUM_RULES_FLAG_RESOLVE_DESCRIPTION | FW_ENUM_RULES_FLAGS.FW_ENUM_RULES_FLAG_RESOLVE_NAME)));
|
||||
// }
|
||||
// if (this.resolveGPOName)
|
||||
// {
|
||||
// fw_enum_rules_flags = (FW_ENUM_RULES_FLAGS) ((ushort) (fw_enum_rules_flags | FW_ENUM_RULES_FLAGS.FW_ENUM_RULES_FLAG_RESOLVE_GPO_NAME));
|
||||
// }
|
||||
// if (this.onlyEffective)
|
||||
// {
|
||||
// fw_enum_rules_flags = (FW_ENUM_RULES_FLAGS) ((ushort) (fw_enum_rules_flags | FW_ENUM_RULES_FLAGS.FW_ENUM_RULES_FLAG_EFFECTIVE));
|
||||
// }
|
||||
// fw_query.dwNumEntries = 0;
|
||||
// fw_query.pORConditions = IntPtr.Zero;
|
||||
// fw_query.Status = this.onlyStatusOK ? (FW_RULE_STATUS.FW_RULE_STATUS_OK | FW_RULE_STATUS.FW_RULE_STATUS_PARTIALLY_IGNORED) : ((FW_RULE_STATUS) (-65536));
|
||||
// fw_query.wSchemaVersion = 0x20a;
|
||||
// List<GCHandle> gchandles = new List<GCHandle>();
|
||||
// if (this.direction != FW_DIRECTION.FW_DIR_INVALID)
|
||||
// {
|
||||
// FwRuleUtilities.BuildQuery(ref fw_query, this.direction, ref ruleIdFilter, ref idBuffer, ref gchandles);
|
||||
// }
|
||||
// IntPtr ptr2 = Marshal.AllocCoTaskMem(Marshal.SizeOf(typeof(FW_QUERY)));
|
||||
// uint num3 = 0;
|
||||
// try
|
||||
// {
|
||||
// Marshal.StructureToPtr(fw_query, ptr2, false);
|
||||
// num3 = FirewallRuleAPI.FWQueryFirewallRules(this.policyHandle, ptr2, (ushort) fw_enum_rules_flags, out num, out ptr);
|
||||
// }
|
||||
// finally
|
||||
// {
|
||||
// Marshal.FreeCoTaskMem(ptr2);
|
||||
// FwRuleUtilities.FreeIntPtrs(ref idBuffer);
|
||||
// FwRuleUtilities.FreeGCHandles(gchandles.ToArray());
|
||||
// }
|
||||
// if (num3 == 0)
|
||||
// {
|
||||
// IntPtr pNext = ptr;
|
||||
// for (int i = 0; i < num; i++)
|
||||
// {
|
||||
// FW_RULE fw_rule = (FW_RULE) Marshal.PtrToStructure(pNext, typeof(FW_RULE));
|
||||
// pNext = fw_rule.pNext;
|
||||
// FirewallRule item = FirewallRuleFromFWRule(fw_rule);
|
||||
// this.Rules.Add(item);
|
||||
// }
|
||||
// FirewallRuleAPI.FWFreeFirewallRules(ptr);
|
||||
// }
|
||||
//}
|
||||
//
|
||||
}
|
||||
@@ -0,0 +1,745 @@
|
||||
#include "fwmon.h"
|
||||
#include "wf.h"
|
||||
|
||||
#include <Shellapi.h>
|
||||
|
||||
#define NUMBER_OF_CONTROLS 3
|
||||
#define NUMBER_OF_BUTTONS 7
|
||||
#define NUMBER_OF_SEPARATORS 2
|
||||
|
||||
#define TVITEM_OVERVIEW 0
|
||||
#define TVITEM_MONITOR 1
|
||||
|
||||
#define TVITEM_PRIVATEPROFILE 2
|
||||
#define TVITEM_PRIVATEINBOUND 3
|
||||
#define TVITEM_PRIVATEOUTBOUND 4
|
||||
|
||||
#define TVITEM_PUBLICPROFILE 6
|
||||
#define TVITEM_PUBLICINBOUND 7
|
||||
#define TVITEM_PUBLICOUTBOUND 8
|
||||
|
||||
#define TVITEM_STANDARDPROFILE 10
|
||||
#define TVITEM_STANDARDINBOUND 11
|
||||
#define TVITEM_STANDARDOUTBOUND 12
|
||||
|
||||
#define TVITEM_DOMAINPROFILE 14
|
||||
#define TVITEM_DOMAININBOUND 15
|
||||
#define TVITEM_DOMAINOUTBOUND 16
|
||||
|
||||
HWND TextboxHandle = NULL;
|
||||
ULONG StatusMask = 0;
|
||||
ULONG IdRangeBase = 0;
|
||||
ULONG ToolBarIdRangeBase = 0;
|
||||
ULONG ToolBarIdRangeEnd = 0;
|
||||
|
||||
static INT_PTR CALLBACK SettingsDlgProc(
|
||||
__in HWND hwndDlg,
|
||||
__in UINT uMsg,
|
||||
__in WPARAM wParam,
|
||||
__in LPARAM lParam
|
||||
)
|
||||
{
|
||||
PFIREWALL_CONTEXT context;
|
||||
|
||||
if (uMsg == WM_INITDIALOG)
|
||||
{
|
||||
context = (PFIREWALL_CONTEXT)lParam;
|
||||
SetProp(hwndDlg, L"Context", (HANDLE)context);
|
||||
}
|
||||
else
|
||||
{
|
||||
context = (PFIREWALL_CONTEXT)GetProp(hwndDlg, L"Context");
|
||||
|
||||
if (uMsg == WM_DESTROY)
|
||||
RemoveProp(hwndDlg, L"Context");
|
||||
}
|
||||
|
||||
if (!context)
|
||||
return FALSE;
|
||||
|
||||
switch (uMsg)
|
||||
{
|
||||
case WM_INITDIALOG:
|
||||
{
|
||||
PhCenterWindow(hwndDlg, (IsWindowVisible(GetParent(hwndDlg)) && !IsIconic(GetParent(hwndDlg))) ? GetParent(hwndDlg) : NULL);
|
||||
}
|
||||
break;
|
||||
case WM_COMMAND:
|
||||
{
|
||||
switch (LOWORD(wParam))
|
||||
{
|
||||
case IDCANCEL:
|
||||
EndDialog(hwndDlg, IDCANCEL);
|
||||
break;
|
||||
case IDOK:
|
||||
EndDialog(hwndDlg, IDOK);
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
static INT CALLBACK MainPropSheet_Callback(
|
||||
__in HWND hwndDlg,
|
||||
__in UINT uMsg,
|
||||
__inout LPARAM lParam
|
||||
)
|
||||
{
|
||||
switch (uMsg)
|
||||
{
|
||||
case PSCB_INITIALIZED:
|
||||
{
|
||||
// load our application icon, it'll be shared with Windows, do not free.
|
||||
HANDLE hbicon = LoadImageW(
|
||||
(HINSTANCE)PluginInstance->DllBase,
|
||||
MAKEINTRESOURCE(IDI_FIREWALLICON),
|
||||
IMAGE_ICON,
|
||||
GetSystemMetrics(SM_CXICON),
|
||||
GetSystemMetrics(SM_CYICON),
|
||||
LR_SHARED
|
||||
);
|
||||
|
||||
// property sheets only set the ICON_SMALL, set our ICON_BIG for Taskbar/alt-tab previews.
|
||||
SendMessageW(hwndDlg, WM_SETICON, ICON_BIG, (LPARAM)hbicon);
|
||||
}
|
||||
break;
|
||||
case PSCB_PRECREATE:
|
||||
// Add some missing Window styles to the PropertySheet.
|
||||
((LPDLGTEMPLATE)lParam)->style |= WS_MINIMIZEBOX;
|
||||
break;
|
||||
case PSCB_BUTTONPRESSED:
|
||||
{
|
||||
switch (lParam)
|
||||
{
|
||||
case PSBTN_FINISH:
|
||||
case PSBTN_OK:
|
||||
case PSBTN_APPLYNOW:
|
||||
case PSBTN_CANCEL:
|
||||
break;
|
||||
}
|
||||
} break;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
|
||||
BOOLEAN CALLBACK WfAddRules1(
|
||||
__in PFW_RULE2_0 FwRule,
|
||||
__in PVOID Context
|
||||
)
|
||||
{
|
||||
PFIREWALL_CONTEXT context = (PFIREWALL_CONTEXT)Context;
|
||||
|
||||
INT lvItemIndex = PhAddListViewItem(context->ListViewHandle, MAXINT, FwRule->wszName, (PVOID)FwRule);
|
||||
|
||||
if (FwRule->wszLocalApplication)
|
||||
{
|
||||
HICON icon = PhGetFileShellIcon(FwRule->wszLocalApplication, L".exe", TRUE);
|
||||
|
||||
// Icon
|
||||
if (icon)
|
||||
{
|
||||
INT imageIndex = ImageList_AddIcon(ListView_GetImageList(context->ListViewHandle, LVSIL_SMALL), icon);
|
||||
PhSetListViewItemImageIndex(context->ListViewHandle, lvItemIndex, imageIndex);
|
||||
DestroyIcon(icon);
|
||||
}
|
||||
else
|
||||
{
|
||||
PhSetListViewItemImageIndex(context->ListViewHandle, lvItemIndex, 0);
|
||||
}
|
||||
}
|
||||
|
||||
if (FwRule->wszEmbeddedContext)
|
||||
{
|
||||
WCHAR szSubitemText[260];
|
||||
|
||||
swprintf_s(
|
||||
szSubitemText,
|
||||
_countof(szSubitemText),
|
||||
L"%s",
|
||||
FwRule->wszEmbeddedContext
|
||||
);
|
||||
|
||||
//SHGetLocalizedName(FwRule->wszEmbeddedContext, FwRule->wszEmbeddedContext, cch, &tt);
|
||||
|
||||
ListView_SetItemText(context->ListViewHandle, lvItemIndex, 1, szSubitemText);
|
||||
|
||||
}
|
||||
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
static NTSTATUS FWRulesEnumThreadStart(
|
||||
__in PVOID Parameter
|
||||
)
|
||||
{
|
||||
PFIREWALL_CONTEXT context = (PFIREWALL_CONTEXT)Parameter;
|
||||
|
||||
if (InitializeFirewallApi())
|
||||
{
|
||||
EnumerateFirewallRules(FW_POLICY_STORE_DYNAMIC, context->Flags, context->Direction, WfAddRules1, context);
|
||||
}
|
||||
|
||||
return STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
|
||||
HTREEITEM TreeViewAddItem(
|
||||
HWND hTreeView,
|
||||
HTREEITEM hParent,
|
||||
LPWSTR lpText,
|
||||
INT Image,
|
||||
INT SelectedImage,
|
||||
LPARAM param
|
||||
)
|
||||
{
|
||||
TV_INSERTSTRUCTW Insert = { 0 };
|
||||
|
||||
Insert.item.mask = TVIF_TEXT | TVIF_PARAM | TVIF_IMAGE | TVIF_SELECTEDIMAGE;
|
||||
Insert.hInsertAfter = TVI_LAST;
|
||||
Insert.hParent = hParent;
|
||||
Insert.item.lParam = param;
|
||||
Insert.item.iSelectedImage = SelectedImage;
|
||||
Insert.item.iImage = Image;
|
||||
Insert.item.pszText = lpText;
|
||||
|
||||
return TreeView_InsertItem(hTreeView, &Insert);
|
||||
}
|
||||
|
||||
INT_PTR CALLBACK FirewallDlgProc(
|
||||
__in HWND hwndDlg,
|
||||
__in UINT uMsg,
|
||||
__in WPARAM wParam,
|
||||
__in LPARAM lParam
|
||||
)
|
||||
{
|
||||
PFIREWALL_CONTEXT context;
|
||||
|
||||
if (uMsg == WM_INITDIALOG)
|
||||
{
|
||||
context = (PFIREWALL_CONTEXT)lParam;
|
||||
SetProp(hwndDlg, L"Context", (HANDLE)context);
|
||||
}
|
||||
else
|
||||
{
|
||||
context = (PFIREWALL_CONTEXT)GetProp(hwndDlg, L"Context");
|
||||
|
||||
if (uMsg == WM_DESTROY)
|
||||
RemoveProp(hwndDlg, L"Context");
|
||||
}
|
||||
|
||||
if (!context)
|
||||
return FALSE;
|
||||
|
||||
switch (uMsg)
|
||||
{
|
||||
case WM_INITDIALOG:
|
||||
{
|
||||
TV_INSERTSTRUCTW Insert = { 0 };
|
||||
HTREEITEM root = NULL;
|
||||
|
||||
{
|
||||
ULONG idIndex = 0;
|
||||
ULONG imageIndex = 0;
|
||||
|
||||
IdRangeBase = PhPluginReserveIds(NUMBER_OF_CONTROLS + NUMBER_OF_BUTTONS);
|
||||
ToolBarIdRangeBase = IdRangeBase + NUMBER_OF_CONTROLS;
|
||||
ToolBarIdRangeEnd = ToolBarIdRangeBase + NUMBER_OF_BUTTONS;
|
||||
|
||||
// Create the rebar.
|
||||
context->ReBarHandle = CreateWindowExW(
|
||||
WS_EX_TOOLWINDOW,
|
||||
REBARCLASSNAME,
|
||||
NULL,
|
||||
WS_CHILD | WS_BORDER | WS_VISIBLE | WS_CLIPSIBLINGS | WS_CLIPCHILDREN | CCS_NODIVIDER | CCS_TOP | RBS_DBLCLKTOGGLE | RBS_VARHEIGHT,
|
||||
0, 0, 0, 0,
|
||||
hwndDlg,
|
||||
NULL,
|
||||
(HINSTANCE)PluginInstance->DllBase,
|
||||
NULL
|
||||
);
|
||||
// Create the toolbar.
|
||||
context->ToolBarHandle = CreateWindowExW(
|
||||
0,
|
||||
TOOLBARCLASSNAME,
|
||||
NULL,
|
||||
WS_CHILD | CCS_NORESIZE | CCS_NODIVIDER | TBSTYLE_FLAT | TBSTYLE_LIST | TBSTYLE_TOOLTIPS | TBSTYLE_TRANSPARENT,
|
||||
0, 0, 0, 0,
|
||||
context->ReBarHandle,
|
||||
(HMENU)(IdRangeBase),
|
||||
(HINSTANCE)PluginInstance->DllBase,
|
||||
NULL
|
||||
);
|
||||
// Create the searchbox
|
||||
TextboxHandle = CreateWindowExW(
|
||||
0,
|
||||
WC_EDIT,
|
||||
NULL,
|
||||
WS_CHILD | WS_VISIBLE | WS_BORDER,
|
||||
0, 0, 0, 0,
|
||||
context->ReBarHandle,
|
||||
(HMENU)(IdRangeBase + 1),
|
||||
(HINSTANCE)PluginInstance->DllBase,
|
||||
NULL
|
||||
);
|
||||
|
||||
// Set the toolbar struct size.
|
||||
SendMessage(context->ToolBarHandle, TB_BUTTONSTRUCTSIZE, sizeof(TBBUTTON), 0);
|
||||
// Set the extended toolbar styles.
|
||||
SendMessage(context->ToolBarHandle, TB_SETEXTENDEDSTYLE, 0, TBSTYLE_EX_DOUBLEBUFFER | TBSTYLE_EX_MIXEDBUTTONS | TBSTYLE_EX_HIDECLIPPEDBUTTONS);
|
||||
|
||||
// Add the rebar controls and attach our windows.
|
||||
{
|
||||
REBARINFO ri = { sizeof(REBARINFO) };
|
||||
REBARBANDINFO rBandInfo = { sizeof(REBARBANDINFO) };
|
||||
|
||||
rBandInfo.fMask = RBBIM_STYLE | RBBIM_ID | RBBIM_CHILD | RBBIM_CHILDSIZE | RBBIM_SIZE;
|
||||
rBandInfo.fStyle = RBBS_HIDETITLE | RBBS_NOGRIPPER | RBBS_FIXEDSIZE;
|
||||
|
||||
//no imagelist to attach to rebar
|
||||
SendMessage(context->ReBarHandle, RB_SETBARINFO, 0, (LPARAM)&ri);
|
||||
|
||||
// Get the toolbar size and add the toolbar.
|
||||
rBandInfo.wID = (IdRangeBase + 1);
|
||||
rBandInfo.cyMinChild = HIWORD(SendMessage(context->ToolBarHandle, TB_GETBUTTONSIZE, 0, 0)) + 2; // Height
|
||||
rBandInfo.hwndChild = context->ToolBarHandle;
|
||||
SendMessage(context->ReBarHandle, RB_INSERTBAND, -1, (LPARAM)&rBandInfo);
|
||||
|
||||
// Add the textbox, slightly smaller than the toolbar.
|
||||
rBandInfo.wID = (IdRangeBase + 2);
|
||||
rBandInfo.cxMinChild = 180;
|
||||
rBandInfo.cyMinChild -= 5;
|
||||
rBandInfo.hwndChild = TextboxHandle;
|
||||
SendMessage(context->ReBarHandle, RB_INSERTBAND, -1, (LPARAM)&rBandInfo);
|
||||
}
|
||||
|
||||
// Set Searchbox control font.
|
||||
SendMessage(TextboxHandle, WM_SETFONT, (WPARAM)PhApplicationFont, FALSE);
|
||||
Edit_SetCueBannerText(TextboxHandle, L"Search Firewall");
|
||||
|
||||
{
|
||||
TBBUTTON tbButtonArray[] =
|
||||
{
|
||||
{ I_IMAGENONE, ToolBarIdRangeBase + (idIndex++), TBSTATE_ENABLED, BTNS_AUTOSIZE | BTNS_SHOWTEXT | BTNS_DROPDOWN, { 0 }, 0, (INT_PTR)L" Firewall" },
|
||||
{ I_IMAGENONE, ToolBarIdRangeBase + (idIndex++), TBSTATE_ENABLED, BTNS_AUTOSIZE | BTNS_SHOWTEXT | BTNS_DROPDOWN, { 0 }, 0, (INT_PTR)L" View" },
|
||||
{ I_IMAGENONE, ToolBarIdRangeBase + (idIndex++), TBSTATE_ENABLED, BTNS_AUTOSIZE | BTNS_SHOWTEXT | BTNS_DROPDOWN, { 0 }, 0, (INT_PTR)L" Tools" },
|
||||
{ I_IMAGENONE, ToolBarIdRangeBase + (idIndex++), TBSTATE_ENABLED, BTNS_AUTOSIZE | BTNS_SHOWTEXT | BTNS_DROPDOWN, { 0 }, 0, (INT_PTR)L" Help" }
|
||||
};
|
||||
|
||||
// Add the buttons to the toolbar.
|
||||
SendMessage(context->ToolBarHandle, TB_ADDBUTTONS, _countof(tbButtonArray), (LPARAM)tbButtonArray);
|
||||
}
|
||||
}
|
||||
|
||||
context->TreeViewHandle = GetDlgItem(hwndDlg, IDC_TREE1);
|
||||
context->ListViewHandle = GetDlgItem(hwndDlg, IDC_FIREWALL_LIST);
|
||||
|
||||
PhSetControlTheme(context->ListViewHandle, L"explorer");
|
||||
PhSetListViewStyle(context->ListViewHandle, FALSE, FALSE);
|
||||
PhSetExtendedListView(context->ListViewHandle);
|
||||
|
||||
PhSetControlTheme(context->TreeViewHandle, L"explorer");
|
||||
TreeView_SetExtendedStyle(
|
||||
context->TreeViewHandle,
|
||||
TVS_EX_DOUBLEBUFFER,
|
||||
TVS_EX_DOUBLEBUFFER
|
||||
);
|
||||
|
||||
ListView_SetImageList(context->ListViewHandle, ImageList_Create(20, 20, ILC_COLOR32 | ILC_MASK, 0, 1), LVSIL_SMALL);
|
||||
ListView_SetImageList(context->ListViewHandle, ImageList_Create(32, 32, ILC_COLOR32 | ILC_MASK, 0, 1), LVSIL_NORMAL);
|
||||
TreeView_SetImageList(context->TreeViewHandle, ImageList_Create(22, 22, ILC_COLOR32 | ILC_MASK, 0, 1), TVSIL_NORMAL);
|
||||
|
||||
PhInitializeLayoutManager(&context->LayoutManager, hwndDlg);
|
||||
PhAddLayoutItem(&context->LayoutManager, context->ReBarHandle, NULL, PH_ANCHOR_LEFT | PH_ANCHOR_TOP | PH_ANCHOR_RIGHT);
|
||||
PhAddLayoutItem(&context->LayoutManager, context->TreeViewHandle, NULL, PH_ANCHOR_LEFT | PH_ANCHOR_TOP | PH_ANCHOR_BOTTOM);
|
||||
PhAddLayoutItem(&context->LayoutManager, context->ListViewHandle, NULL, PH_ANCHOR_ALL);
|
||||
PhAddLayoutItem(&context->LayoutManager, GetDlgItem(hwndDlg, ID_CLOSE), NULL, PH_ANCHOR_BOTTOM | PH_ANCHOR_RIGHT);
|
||||
|
||||
{
|
||||
HICON hIcon;
|
||||
|
||||
hIcon = LoadImage(
|
||||
(HINSTANCE)PluginInstance->DllBase,
|
||||
MAKEINTRESOURCE(IDI_WFICON),//IDI_FIREWALLICON),
|
||||
IMAGE_ICON,
|
||||
24,
|
||||
24,
|
||||
LR_CREATEDIBSECTION | LR_SHARED
|
||||
);
|
||||
|
||||
ImageList_AddIcon(TreeView_GetImageList(context->TreeViewHandle, TVSIL_NORMAL), hIcon);
|
||||
DestroyIcon(hIcon);
|
||||
|
||||
hIcon = LoadImage(
|
||||
(HINSTANCE)PluginInstance->DllBase,
|
||||
MAKEINTRESOURCE(IDI_ICONMONITOR),
|
||||
IMAGE_ICON,
|
||||
24,
|
||||
24,
|
||||
LR_CREATEDIBSECTION | LR_SHARED
|
||||
);
|
||||
|
||||
ImageList_AddIcon(TreeView_GetImageList(context->TreeViewHandle, TVSIL_NORMAL), hIcon);
|
||||
DestroyIcon(hIcon);
|
||||
|
||||
hIcon = LoadImage(
|
||||
(HINSTANCE)PluginInstance->DllBase,
|
||||
MAKEINTRESOURCE(IDI_FIREWALLICON),
|
||||
IMAGE_ICON,
|
||||
24,
|
||||
24,
|
||||
LR_CREATEDIBSECTION | LR_SHARED
|
||||
);
|
||||
|
||||
ImageList_AddIcon(TreeView_GetImageList(context->TreeViewHandle, TVSIL_NORMAL), hIcon);
|
||||
DestroyIcon(hIcon);
|
||||
|
||||
hIcon = LoadImage(
|
||||
(HINSTANCE)PluginInstance->DllBase,
|
||||
MAKEINTRESOURCE(IDI_ICONWORK),
|
||||
IMAGE_ICON,
|
||||
24,
|
||||
24,
|
||||
LR_CREATEDIBSECTION | LR_SHARED
|
||||
);
|
||||
|
||||
ImageList_AddIcon(TreeView_GetImageList(context->TreeViewHandle, TVSIL_NORMAL), hIcon);
|
||||
DestroyIcon(hIcon);
|
||||
|
||||
hIcon = LoadImage(
|
||||
(HINSTANCE)PluginInstance->DllBase,
|
||||
MAKEINTRESOURCE(IDI_ICONPUBLIC),
|
||||
IMAGE_ICON,
|
||||
24,
|
||||
24,
|
||||
LR_CREATEDIBSECTION | LR_SHARED
|
||||
);
|
||||
|
||||
ImageList_AddIcon(TreeView_GetImageList(context->TreeViewHandle, TVSIL_NORMAL), hIcon);
|
||||
DestroyIcon(hIcon);
|
||||
}
|
||||
|
||||
|
||||
TreeViewAddItem(context->TreeViewHandle, NULL, L"Overview", 0, 0, TVITEM_OVERVIEW);
|
||||
TreeViewAddItem(context->TreeViewHandle, NULL, L"Monitoring", 1, 1, TVITEM_MONITOR);
|
||||
|
||||
root = TreeViewAddItem(context->TreeViewHandle, NULL, L"Inbound", 2, 2, 0);
|
||||
TreeViewAddItem(context->TreeViewHandle, root, L"Private", 2, 2, TVITEM_PRIVATEINBOUND);
|
||||
TreeViewAddItem(context->TreeViewHandle, root, L"Public", 2, 2, TVITEM_PUBLICINBOUND);
|
||||
TreeViewAddItem(context->TreeViewHandle, root, L"Standard", 2, 2, TVITEM_STANDARDINBOUND);
|
||||
root = TreeViewAddItem(context->TreeViewHandle, root, L"Domain", 2, 2, TVITEM_DOMAININBOUND);
|
||||
|
||||
TreeView_EnsureVisible(context->TreeViewHandle, root);
|
||||
|
||||
root = TreeViewAddItem( context->TreeViewHandle, NULL, L"Outbound", 3, 3, 1);
|
||||
TreeViewAddItem(context->TreeViewHandle, root, L"Private", 3, 3, TVITEM_PRIVATEINBOUND);
|
||||
TreeViewAddItem(context->TreeViewHandle, root, L"Public", 3, 3, TVITEM_PUBLICOUTBOUND);
|
||||
TreeViewAddItem(context->TreeViewHandle, root, L"Standard", 3, 3, TVITEM_STANDARDOUTBOUND);
|
||||
root = TreeViewAddItem(context->TreeViewHandle, root, L"Domain", 3, 3, TVITEM_DOMAINOUTBOUND);
|
||||
|
||||
TreeView_EnsureVisible(context->TreeViewHandle, root);
|
||||
|
||||
root = TreeViewAddItem(context->TreeViewHandle, NULL, L"Security Rules", 4, 4, 2);
|
||||
TreeViewAddItem(context->TreeViewHandle, root, L"Private", 4, 4, 0);
|
||||
TreeViewAddItem(context->TreeViewHandle, root, L"Public", 4, 4, 0);
|
||||
TreeViewAddItem(context->TreeViewHandle, root, L"Standard", 4, 4, 0);
|
||||
TreeViewAddItem(context->TreeViewHandle, root, L"Domain", 4, 4, 0);
|
||||
|
||||
PhAddListViewColumn(context->ListViewHandle, 0, 0, 0, LVCFMT_LEFT, 400, L"Name");
|
||||
PhAddListViewColumn(context->ListViewHandle, 1, 1, 1, LVCFMT_LEFT, 150, L"Group");
|
||||
|
||||
//SendMessage(context->ReBarHandle, RB_SETWINDOWTHEME, 0, (LPARAM)L"Media"); //Media/Communications/BrowserTabBar/Help
|
||||
//SendMessage(context->ToolBarHandle, TB_SETWINDOWTHEME, 0, (LPARAM)L"Media"); //Media/Communications/BrowserTabBar/Help
|
||||
|
||||
SetFocus(context->TreeViewHandle);
|
||||
PhCenterWindow(hwndDlg, PhMainWndHandle);
|
||||
}
|
||||
break;
|
||||
case WM_SIZE:
|
||||
{
|
||||
PhLayoutManagerLayout(&context->LayoutManager);
|
||||
}
|
||||
break;
|
||||
case WM_COMMAND:
|
||||
{
|
||||
switch (LOWORD(wParam))
|
||||
{
|
||||
case ID_PROPERTIES:
|
||||
{
|
||||
#define MAX_NUMPAGES 7
|
||||
UINT nPages = 0;
|
||||
PROPSHEETPAGEW pSheetPage = { sizeof(PROPSHEETPAGEW) };
|
||||
HPROPSHEETPAGE pSheetPageHandles[MAX_NUMPAGES] = { 0 };
|
||||
|
||||
pSheetPage.dwFlags = PSP_DEFAULT | PSP_USETITLE;
|
||||
pSheetPage.hInstance = (HINSTANCE)PluginInstance->DllBase;
|
||||
pSheetPage.lParam = (LPARAM)context;
|
||||
|
||||
pSheetPage.pszTitle = L"General";
|
||||
pSheetPage.pszTemplate = MAKEINTRESOURCE(IDD_RULEGENERAL);
|
||||
pSheetPage.pfnDlgProc = SettingsDlgProc;
|
||||
pSheetPageHandles[nPages++] = CreatePropertySheetPageW(&pSheetPage);
|
||||
|
||||
pSheetPage.pszTitle = L"Advanced";
|
||||
pSheetPage.pszTemplate = MAKEINTRESOURCE(IDD_RULEADVANCED);
|
||||
pSheetPage.pfnDlgProc = SettingsDlgProc;
|
||||
pSheetPageHandles[nPages++] = CreatePropertySheetPageW(&pSheetPage);
|
||||
|
||||
pSheetPage.pszTitle = L"Scope";
|
||||
pSheetPage.pszTemplate = MAKEINTRESOURCE(IDD_RULESCOPE);
|
||||
pSheetPage.pfnDlgProc = SettingsDlgProc;
|
||||
pSheetPageHandles[nPages++] = CreatePropertySheetPageW(&pSheetPage);
|
||||
|
||||
pSheetPage.pszTitle = L"Users";
|
||||
pSheetPage.pszTemplate = MAKEINTRESOURCE(IDD_RULEUSERS);
|
||||
pSheetPage.pfnDlgProc = SettingsDlgProc;
|
||||
pSheetPageHandles[nPages++] = CreatePropertySheetPageW(&pSheetPage);
|
||||
|
||||
pSheetPage.pszTitle = L"Computers";
|
||||
pSheetPage.pszTemplate = MAKEINTRESOURCE(IDD_RULECOMPUTERS);
|
||||
pSheetPage.pfnDlgProc = SettingsDlgProc;
|
||||
pSheetPageHandles[nPages++] = CreatePropertySheetPageW(&pSheetPage);
|
||||
|
||||
pSheetPage.pszTitle = L"Programs and Services";
|
||||
pSheetPage.pszTemplate = MAKEINTRESOURCE(IDD_RULEEXECUTABLE);
|
||||
pSheetPage.pfnDlgProc = SettingsDlgProc;
|
||||
pSheetPageHandles[nPages++] = CreatePropertySheetPageW(&pSheetPage);
|
||||
|
||||
pSheetPage.pszTitle = L"Protocols and Ports";
|
||||
pSheetPage.pszTemplate = MAKEINTRESOURCE(IDD_RULEPORTS);
|
||||
pSheetPage.pfnDlgProc = SettingsDlgProc;
|
||||
pSheetPageHandles[nPages++] = CreatePropertySheetPageW(&pSheetPage);
|
||||
|
||||
|
||||
{
|
||||
// Create the property sheet
|
||||
PROPSHEETHEADERW psh = { sizeof(PROPSHEETHEADERW) };
|
||||
psh.dwFlags = PSH_USECALLBACK | PSH_USEICONID;
|
||||
psh.pszIcon = MAKEINTRESOURCE(IDI_FIREWALLICON);
|
||||
psh.pszCaption = L"Rule Properties";
|
||||
psh.hwndParent = hwndDlg;
|
||||
psh.hInstance = (HINSTANCE)PluginInstance->DllBase;
|
||||
psh.nPages = nPages;
|
||||
psh.phpage = pSheetPageHandles;
|
||||
psh.pfnCallback = MainPropSheet_Callback;
|
||||
|
||||
PropertySheetW(&psh);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case IDCANCEL:
|
||||
case ID_CLOSE:
|
||||
{
|
||||
FreeFirewallApi();
|
||||
EndDialog(hwndDlg, IDOK);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case WM_NOTIFY:
|
||||
{
|
||||
LPNMHDR data = (LPNMHDR)lParam;
|
||||
|
||||
switch (data->code)
|
||||
{
|
||||
case TVN_SELCHANGING:
|
||||
{
|
||||
if (data->hwndFrom == context->TreeViewHandle)
|
||||
{
|
||||
LPNMTREEVIEW pnkd = (LPNMTREEVIEW)lParam;
|
||||
INT index = (INT)pnkd->itemNew.lParam;
|
||||
|
||||
ListView_DeleteAllItems(context->ListViewHandle);
|
||||
ImageList_RemoveAll(ListView_GetImageList(context->ListViewHandle, LVSIL_SMALL));
|
||||
//FW_PROFILE_TYPE_INVALID = 0,
|
||||
//FW_PROFILE_TYPE_DOMAIN = 0x001,
|
||||
//FW_PROFILE_TYPE_STANDARD = 0x002,
|
||||
//FW_PROFILE_TYPE_PRIVATE = FW_PROFILE_TYPE_STANDARD,
|
||||
//FW_PROFILE_TYPE_PUBLIC = 0x004,
|
||||
//FW_PROFILE_TYPE_ALL = 0x7FFFFFFF,
|
||||
// FW_PROFILE_TYPE_CURRENT = 0x80000000,
|
||||
//FW_PROFILE_TYPE_NONE = FW_PROFILE_TYPE_CURRENT + 1
|
||||
|
||||
switch (index)
|
||||
{
|
||||
case TVITEM_PRIVATEPROFILE:
|
||||
{
|
||||
context->Flags = FW_PROFILE_TYPE_PRIVATE;
|
||||
context->Direction = FW_DIR_BOTH;
|
||||
}
|
||||
break;
|
||||
case TVITEM_PRIVATEINBOUND:
|
||||
{
|
||||
context->Flags = FW_PROFILE_TYPE_PRIVATE;
|
||||
context->Direction = FW_DIR_IN;
|
||||
}
|
||||
break;
|
||||
case TVITEM_PRIVATEOUTBOUND:
|
||||
{
|
||||
context->Flags = FW_PROFILE_TYPE_PRIVATE;
|
||||
context->Direction = FW_DIR_OUT;
|
||||
}
|
||||
break;
|
||||
case TVITEM_PUBLICPROFILE:
|
||||
{
|
||||
context->Flags = FW_PROFILE_TYPE_PUBLIC;
|
||||
context->Direction = FW_DIR_BOTH;
|
||||
}
|
||||
break;
|
||||
case TVITEM_PUBLICINBOUND:
|
||||
{
|
||||
context->Flags = FW_PROFILE_TYPE_PUBLIC;
|
||||
context->Direction = FW_DIR_IN;
|
||||
}
|
||||
break;
|
||||
case TVITEM_PUBLICOUTBOUND:
|
||||
{
|
||||
context->Flags = FW_PROFILE_TYPE_PUBLIC;
|
||||
context->Direction = FW_DIR_OUT;
|
||||
}
|
||||
break;
|
||||
case TVITEM_STANDARDPROFILE:
|
||||
{
|
||||
context->Flags = FW_PROFILE_TYPE_STANDARD;
|
||||
context->Direction = FW_DIR_BOTH;
|
||||
}
|
||||
break;
|
||||
case TVITEM_STANDARDINBOUND:
|
||||
{
|
||||
context->Flags = FW_PROFILE_TYPE_STANDARD;
|
||||
context->Direction = FW_DIR_IN;
|
||||
}
|
||||
break;
|
||||
case TVITEM_STANDARDOUTBOUND:
|
||||
{
|
||||
context->Flags = FW_PROFILE_TYPE_STANDARD;
|
||||
context->Direction = FW_DIR_OUT;
|
||||
}
|
||||
break;
|
||||
case TVITEM_DOMAINPROFILE:
|
||||
{
|
||||
context->Flags = FW_PROFILE_TYPE_DOMAIN;
|
||||
context->Direction = FW_DIR_BOTH;
|
||||
}
|
||||
break;
|
||||
case TVITEM_DOMAININBOUND:
|
||||
{
|
||||
context->Flags = FW_PROFILE_TYPE_DOMAIN;
|
||||
context->Direction = FW_DIR_IN;
|
||||
}
|
||||
break;
|
||||
case TVITEM_DOMAINOUTBOUND:
|
||||
{
|
||||
context->Flags = FW_PROFILE_TYPE_DOMAIN;
|
||||
context->Direction = FW_DIR_OUT;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
{
|
||||
context->Flags = FW_PROFILE_TYPE_NONE;
|
||||
context->Direction = FW_DIR_INVALID;
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
PhCreateThread(0, FWRulesEnumThreadStart, context);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case NM_DBLCLK:
|
||||
{
|
||||
//if (data->hwndFrom == hListView)
|
||||
//{
|
||||
// LPNMITEMACTIVATE lpnmitem = (LPNMITEMACTIVATE) lParam;
|
||||
// LPORIGINCONTENT content = ListViewGetlParam(lpnmitem->iItem);
|
||||
|
||||
// PWCHAR itemPath = content->CdKey;
|
||||
|
||||
// if (itemPath != NULL)
|
||||
// {
|
||||
// INT ItemIndex = ListView_GetNextItem(hListView, -1, LVNI_FOCUSED);
|
||||
// }
|
||||
|
||||
//// if (IS_INSTALLED_ENUM(SelectedEnumType))
|
||||
//// ShowInstalledAppInfo(-1);
|
||||
//// if (IS_AVAILABLE_ENUM(SelectedEnumType))
|
||||
//// ShowAvailableAppInfo(-1);
|
||||
//}
|
||||
}
|
||||
break;
|
||||
case TBN_DROPDOWN:
|
||||
{
|
||||
#define lpnm ((LPNMHDR)lParam)
|
||||
#define lpnmTB ((LPNMTOOLBAR)lParam)
|
||||
|
||||
if (lpnmTB->iItem == 1)
|
||||
{
|
||||
|
||||
// Get the coordinates of the button.
|
||||
RECT rc;
|
||||
HMENU hMenuLoaded;
|
||||
HMENU hPopupMenu;
|
||||
TPMPARAMS tpm = { sizeof(TPMPARAMS) };
|
||||
|
||||
SendMessage(lpnmTB->hdr.hwndFrom, TB_GETRECT, (WPARAM)lpnmTB->iItem, (LPARAM)&rc);
|
||||
|
||||
// Convert to screen coordinates.
|
||||
MapWindowPoints(lpnmTB->hdr.hwndFrom, HWND_DESKTOP, (LPPOINT)&rc, 2);
|
||||
|
||||
// Get the menu.
|
||||
hMenuLoaded = LoadMenu((HINSTANCE)PluginInstance->DllBase, MAKEINTRESOURCE(IDR_MENUGENERAL));
|
||||
|
||||
// Get the submenu for the first menu item.
|
||||
hPopupMenu = GetSubMenu(hMenuLoaded, 0);
|
||||
|
||||
// Set up the pop-up menu.
|
||||
// In case the toolbar is too close to the bottom of the screen,
|
||||
// set rcExclude equal to the button rectangle and the menu will appear above
|
||||
// the button, and not below it.
|
||||
|
||||
tpm.rcExclude = rc;
|
||||
|
||||
// Show the menu and wait for input.
|
||||
// If the user selects an item, its WM_COMMAND is sent.
|
||||
|
||||
TrackPopupMenuEx(
|
||||
hPopupMenu,
|
||||
TPM_LEFTALIGN | TPM_LEFTBUTTON | TPM_VERTICAL,
|
||||
rc.left,
|
||||
rc.bottom,
|
||||
hwndDlg,
|
||||
&tpm
|
||||
);
|
||||
|
||||
DestroyMenu(hMenuLoaded);
|
||||
}
|
||||
}
|
||||
break;
|
||||
case NM_RCLICK:
|
||||
{
|
||||
if (data->hwndFrom == context->ListViewHandle)
|
||||
{
|
||||
POINT pt;
|
||||
|
||||
HMENU hPopupMenu = GetSubMenu(LoadMenuW((HINSTANCE)PluginInstance->DllBase, MAKEINTRESOURCEW(IDR_FIREWALLMENU)), 0);
|
||||
|
||||
GetCursorPos(&pt);
|
||||
|
||||
SetForegroundWindow(context->ListViewHandle);
|
||||
TrackPopupMenu(hPopupMenu, 0, pt.x, pt.y, 0, hwndDlg, NULL);
|
||||
|
||||
DestroyMenu(hPopupMenu);
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
return FALSE;
|
||||
}
|
||||
@@ -1,14 +1,34 @@
|
||||
#ifndef FWMON_H
|
||||
#define FWMON_H
|
||||
|
||||
#define STRICT
|
||||
#define WIN32_LEAN_AND_MEAN
|
||||
#define CINTERFACE
|
||||
#define COBJMACROS
|
||||
#undef __cplusplus
|
||||
|
||||
#include <phdk.h>
|
||||
|
||||
#include "wf.h"
|
||||
#include "resource.h"
|
||||
|
||||
extern PPH_PLUGIN PluginInstance;
|
||||
|
||||
#define SETTING_PREFIX L"ProcessHacker.FirewallMonitor."
|
||||
#define SETTING_NAME_FW_TREE_LIST_COLUMNS (SETTING_PREFIX L"FwTreeListColumns")
|
||||
#define SETTING_NAME_FW_TREE_LIST_SORT (SETTING_PREFIX L"FwTreeListSort")
|
||||
|
||||
typedef struct _FIREWALL_CONTEXT
|
||||
{
|
||||
HWND ListViewHandle;
|
||||
HWND TreeViewHandle;
|
||||
HWND ReBarHandle;
|
||||
HWND ToolBarHandle;
|
||||
FW_PROFILE_TYPE Flags;
|
||||
FW_DIRECTION Direction;
|
||||
PH_LAYOUT_MANAGER LayoutManager;
|
||||
} FIREWALL_CONTEXT, *PFIREWALL_CONTEXT;
|
||||
|
||||
typedef struct _FW_EVENT_ITEM
|
||||
{
|
||||
LARGE_INTEGER Time;
|
||||
@@ -64,4 +84,11 @@ VOID SaveSettingsFwTreeList(
|
||||
VOID
|
||||
);
|
||||
|
||||
INT_PTR CALLBACK FirewallDlgProc(
|
||||
__in HWND hwndDlg,
|
||||
__in UINT uMsg,
|
||||
__in WPARAM wParam,
|
||||
__in LPARAM lParam
|
||||
);
|
||||
|
||||
#endif
|
||||
|
||||
@@ -23,6 +23,7 @@
|
||||
|
||||
#include "fwmon.h"
|
||||
#include "resource.h"
|
||||
#define FIREWALL_MENUITEM 1
|
||||
|
||||
VOID NTAPI LoadCallback(
|
||||
__in_opt PVOID Parameter,
|
||||
@@ -44,11 +45,17 @@ VOID NTAPI MainWindowShowingCallback(
|
||||
__in_opt PVOID Context
|
||||
);
|
||||
|
||||
VOID NTAPI MenuItemCallback(
|
||||
__in_opt PVOID Parameter,
|
||||
__in_opt PVOID Context
|
||||
);
|
||||
|
||||
PPH_PLUGIN PluginInstance;
|
||||
PH_CALLBACK_REGISTRATION PluginLoadCallbackRegistration;
|
||||
PH_CALLBACK_REGISTRATION PluginUnloadCallbackRegistration;
|
||||
PH_CALLBACK_REGISTRATION PluginShowOptionsCallbackRegistration;
|
||||
PH_CALLBACK_REGISTRATION MainWindowShowingCallbackRegistration;
|
||||
PH_CALLBACK_REGISTRATION PluginMenuItemCallbackRegistration;
|
||||
|
||||
LOGICAL DllMain(
|
||||
__in HINSTANCE Instance,
|
||||
@@ -90,6 +97,12 @@ LOGICAL DllMain(
|
||||
NULL,
|
||||
&PluginShowOptionsCallbackRegistration
|
||||
);
|
||||
PhRegisterCallback(
|
||||
PhGetPluginCallback(PluginInstance, PluginCallbackMenuItem),
|
||||
MenuItemCallback,
|
||||
NULL,
|
||||
&PluginMenuItemCallbackRegistration
|
||||
);
|
||||
|
||||
PhRegisterCallback(
|
||||
PhGetGeneralCallback(GeneralCallbackMainWindowShowing),
|
||||
@@ -99,13 +112,13 @@ LOGICAL DllMain(
|
||||
);
|
||||
|
||||
{
|
||||
static PH_SETTING_CREATE settings[] =
|
||||
PH_SETTING_CREATE settings[] =
|
||||
{
|
||||
{ StringSettingType, SETTING_NAME_FW_TREE_LIST_COLUMNS, L"" },
|
||||
{ IntegerPairSettingType, SETTING_NAME_FW_TREE_LIST_SORT, L"0,2" }
|
||||
};
|
||||
|
||||
PhAddSettings(settings, sizeof(settings) / sizeof(PH_SETTING_CREATE));
|
||||
PhAddSettings(settings, _countof(settings));
|
||||
}
|
||||
}
|
||||
break;
|
||||
@@ -119,7 +132,10 @@ VOID NTAPI LoadCallback(
|
||||
__in_opt PVOID Context
|
||||
)
|
||||
{
|
||||
NOTHING;
|
||||
INITCOMMONCONTROLSEX icex = { sizeof(INITCOMMONCONTROLSEX) };
|
||||
icex.dwICC = ICC_COOL_CLASSES | ICC_BAR_CLASSES;
|
||||
|
||||
InitCommonControlsEx(&icex);
|
||||
}
|
||||
|
||||
VOID NTAPI UnloadCallback(
|
||||
@@ -143,5 +159,35 @@ VOID NTAPI MainWindowShowingCallback(
|
||||
__in_opt PVOID Context
|
||||
)
|
||||
{
|
||||
InitializeFwTab();
|
||||
//InitializeFwTab();
|
||||
PhPluginAddMenuItem(PluginInstance, PH_MENU_ITEM_LOCATION_VIEW, NULL, FIREWALL_MENUITEM, L"Windows Firewall", NULL);
|
||||
}
|
||||
|
||||
VOID NTAPI MenuItemCallback(
|
||||
__in_opt PVOID Parameter,
|
||||
__in_opt PVOID Context
|
||||
)
|
||||
{
|
||||
PPH_PLUGIN_MENU_ITEM menuItem = (PPH_PLUGIN_MENU_ITEM)Parameter;
|
||||
|
||||
if (menuItem != NULL)
|
||||
{
|
||||
switch (menuItem->Id)
|
||||
{
|
||||
case FIREWALL_MENUITEM:
|
||||
{
|
||||
PFIREWALL_CONTEXT context = PhAllocate(sizeof(FIREWALL_CONTEXT));
|
||||
ZeroMemory(context, sizeof(FIREWALL_CONTEXT));
|
||||
|
||||
DialogBoxParam(
|
||||
(HINSTANCE)PluginInstance->DllBase,
|
||||
MAKEINTRESOURCE(IDD_DIALOG1),
|
||||
NULL,
|
||||
FirewallDlgProc,
|
||||
(LPARAM)context
|
||||
);
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -22,10 +22,7 @@
|
||||
|
||||
#include "fwmon.h"
|
||||
#include <Winsock2.h>
|
||||
#ifndef INCLUDED_FWPMU
|
||||
#define INCLUDED_FWPMU
|
||||
#include <fwpmu.h>
|
||||
#endif
|
||||
|
||||
PH_CALLBACK_DECLARE(FwItemAddedEvent);
|
||||
PH_CALLBACK_DECLARE(FwItemModifiedEvent);
|
||||
@@ -35,7 +32,7 @@ PH_CALLBACK_DECLARE(FwItemsUpdatedEvent);
|
||||
HANDLE EngineHandle;
|
||||
HANDLE EventHandle;
|
||||
|
||||
VOID CALLBACK DropEventCallback(__inout VOID* pContext, __in const FWPM_NET_EVENT* pEvent)
|
||||
VOID CALLBACK DropEventCallback(__inout PVOID pContext, __in const FWPM_NET_EVENT* pEvent)
|
||||
{
|
||||
SYSTEMTIME st;
|
||||
FILETIME ft;
|
||||
@@ -311,8 +308,6 @@ VOID StopFwMonitor(
|
||||
VOID
|
||||
)
|
||||
{
|
||||
FWP_VALUE0 value = { 0 };
|
||||
|
||||
if (EventHandle)
|
||||
{
|
||||
FwpmNetEventUnsubscribe(
|
||||
@@ -325,13 +320,17 @@ VOID StopFwMonitor(
|
||||
|
||||
if (EngineHandle)
|
||||
{
|
||||
FWP_VALUE0 value = { 0 };
|
||||
|
||||
value.type = FWP_UINT32;
|
||||
value.uint32 = 0;
|
||||
|
||||
// Disable collection of NetEvents
|
||||
FwpmEngineSetOption(EngineHandle,
|
||||
FwpmEngineSetOption(
|
||||
EngineHandle,
|
||||
FWPM_ENGINE_COLLECT_NET_EVENTS,
|
||||
&value);
|
||||
&value
|
||||
);
|
||||
|
||||
FwpmEngineClose(EngineHandle);
|
||||
|
||||
|
||||
@@ -4,15 +4,71 @@
|
||||
//
|
||||
#define IDR_MENU1 101
|
||||
#define IDR_FW 101
|
||||
#define IDD_DIALOG1 102
|
||||
#define IDD_FIREWALL 102
|
||||
#define IDI_FIREWALLICON 103
|
||||
#define IDD_RULEGENERAL 104
|
||||
#define IDR_FIREWALLMENU 105
|
||||
#define IDI_ICONHOME 106
|
||||
#define IDI_HOMEICON 107
|
||||
#define IDI_ICONPUBLIC 108
|
||||
#define IDI_WFICON 109
|
||||
#define IDI_ICONWORK 110
|
||||
#define IDI_ICONINBOUND 111
|
||||
#define IDI_ICONMONITOR 112
|
||||
#define IDI_ICONOUTBOUND 113
|
||||
#define IDD_DIALOG2 114
|
||||
#define IDD_RULEADVANCED 114
|
||||
#define IDR_MENU2 115
|
||||
#define IDR_MENUGENERAL 115
|
||||
#define IDD_RULEUSERS 117
|
||||
#define IDD_DIALOG3 118
|
||||
#define IDD_RULESCOPE 118
|
||||
#define IDD_RULECOMPUTERS 119
|
||||
#define IDD_RULEEXECUTABLE 120
|
||||
#define IDD_RULEPORTS 121
|
||||
#define IDC_FIREWALL_LIST 1001
|
||||
#define IDC_TREE1 1002
|
||||
#define IDC_EDIT1 1003
|
||||
#define IDC_EDIT2 1004
|
||||
#define IDC_CHECK1 1005
|
||||
#define IDC_RADIO1 1006
|
||||
#define IDC_CHECK2 1006
|
||||
#define IDC_RADIO2 1007
|
||||
#define ID_CLOSE 1007
|
||||
#define IDC_RADIO3 1008
|
||||
#define IDC_CHECK3 1008
|
||||
#define IDC_RADIO4 1009
|
||||
#define IDC_RADIO5 1010
|
||||
#define IDC_COMBO1 1013
|
||||
#define IDC_COMBO2 1014
|
||||
#define IDC_LIST1 1014
|
||||
#define IDC_BUTTON1 1015
|
||||
#define IDC_COMBO3 1015
|
||||
#define IDC_BUTTON2 1016
|
||||
#define IDC_LIST2 1017
|
||||
#define IDC_BUTTON3 1018
|
||||
#define IDC_BUTTON4 1019
|
||||
#define IDC_SYSLINK1 1020
|
||||
#define IDC_BUTTON5 1021
|
||||
#define IDC_BUTTON6 1022
|
||||
#define ID_EVENT_COPY 40001
|
||||
#define ID_PROPERTIES_EDIT 40002
|
||||
#define ID_PROPERTIES_DELETE 40003
|
||||
#define ID_PROPERTIES_PROPERTIES 40004
|
||||
#define ID_PROPERTIES_DISABLE 40005
|
||||
#define ID_PROPERTIES_CUT 40006
|
||||
#define ID_PROPERTIES_COPY 40007
|
||||
#define ID_PROPERTIES 40008
|
||||
#define ID_OPTIONS_EXIT 40009
|
||||
|
||||
// Next default values for new objects
|
||||
//
|
||||
#ifdef APSTUDIO_INVOKED
|
||||
#ifndef APSTUDIO_READONLY_SYMBOLS
|
||||
#define _APS_NEXT_RESOURCE_VALUE 102
|
||||
#define _APS_NEXT_COMMAND_VALUE 40002
|
||||
#define _APS_NEXT_CONTROL_VALUE 1001
|
||||
#define _APS_NEXT_RESOURCE_VALUE 122
|
||||
#define _APS_NEXT_COMMAND_VALUE 40010
|
||||
#define _APS_NEXT_CONTROL_VALUE 1022
|
||||
#define _APS_NEXT_SYMED_VALUE 101
|
||||
#endif
|
||||
#endif
|
||||
|
||||
|
After Width: | Height: | Size: 25 KiB |
|
After Width: | Height: | Size: 25 KiB |
|
After Width: | Height: | Size: 111 KiB |
|
After Width: | Height: | Size: 2.8 KiB |
|
After Width: | Height: | Size: 9.9 KiB |
|
After Width: | Height: | Size: 2.8 KiB |
|
After Width: | Height: | Size: 29 KiB |
|
After Width: | Height: | Size: 229 KiB |
|
After Width: | Height: | Size: 116 KiB |