Network Management Firewall Rules Probe Base Module Type

System.NetworkManagement.FirewallRules.ProbeBase (ProbeActionModuleType)

This module manages Network Management Firewall Rules

Element properties:

TypeProbeActionModuleType
IsolationAny
AccessibilityInternal
RunAsDefault
OutputTypeSystem.PropertyBagData

Member Modules:

ID Module Type TypeId RunAs 
PassThrough ProbeAction System.PassThroughProbe Default
Script ProbeAction Microsoft.Windows.ScriptProbeAction Default

Source Code:

<ProbeActionModuleType ID="System.NetworkManagement.FirewallRules.ProbeBase" Accessibility="Internal" Batching="false" PassThrough="false">
<Configuration>
<xsd:element name="Action" type="xsd:string"/>
<xsd:element minOccurs="1" name="SnmpPort" type="xsd:integer"/>
<xsd:element minOccurs="1" name="TrapPort" type="xsd:integer"/>
<xsd:element name="TimeoutSeconds" type="xsd:int"/>
</Configuration>
<ModuleImplementation Isolation="Any">
<Composite>
<MemberModules>
<ProbeAction ID="PassThrough" TypeID="System!System.PassThroughProbe"/>
<ProbeAction ID="Script" TypeID="Windows!Microsoft.Windows.ScriptProbeAction">
<ScriptName>SystemNetworkManagementFirewallRules.vbs</ScriptName>
<Arguments>"$Config/Action$" "$Config/SnmpPort$" "$Config/TrapPort$" "%MOMROOT%MonitoringHost.exe"</Arguments>
<ScriptBody><Script>
'Copyright (c) Microsoft Corporation. All rights reserved.

'*************************************************************************
' $ScriptName: "SystemNetworkManagementFirewallRules" $
'
' Purpose: This script execute different Firewall Rules Actions.
'
' $File: SystemNetworkManagementFirewallRules.vbs $
'*************************************************************************

Option Explicit
SetLocale("en-us")

'Event Constants
Const EVENT_TYPE_SUCCESS = 0
Const EVENT_TYPE_ERROR = 1
Const EVENT_TYPE_WARNING = 2
Const EVENT_TYPE_INFORMATION = 4
'Other constants
Const SCRIPT_NAME = "SystemNetworkManagementFirewallRules"
' Event ID Constants
Const EVENTID_SUCCESS = 98
Const EVENTID_SCRIPT_ERROR = 3000
Const ScriptOpctionEnable = "2"
Const ScriptOpctionShowState = "3"
Const NET_FW_IP_PROTOCOL_ICMPv4 = 1
Const NET_FW_IP_PROTOCOL_UDP = 17

Dim fwPolicy2, strRuleState, oParams, oAPI
Dim strOpc, strSnmpPort, strTrapPort, strAppName
Dim ObjError, strMessageToUse

Set oAPI = CreateObject("Mom.ScriptAPI")

Set oParams = WScript.Arguments

if oParams.Count &lt; 4 then
strMessageToUse = "The script '" &amp; SCRIPT_NAME &amp; "' didn't execute successfully because some parameters were missing: Param Count(" &amp; CStr(oParams.Count) &amp; ")"
CreateEvent EVENTID_SUCCESS, EVENT_TYPE_INFORMATION, strMessageToUse
End if

strOpc = oParams(0)
strSnmpPort = oParams(1)
strTrapPort = oParams(2)
strAppName = oParams(3)

Set ObjError = New Error
On Error Resume Next

Set fwPolicy2 = CreateObject("HNetCfg.FwPolicy2")

ObjError.Save
On Error Goto 0

If ObjError.Number &lt;&gt; 0 Then
strMessageToUse = "Fail Creating FW Policy Object - Error Number: " &amp; ObjError.number &amp; " Error Details: " &amp; ObjError.Description
CreateEvent EVENTID_SUCCESS, EVENT_TYPE_INFORMATION, strMessageToUse
End If

call ExecuteRuleAction(strOpc, strAppName)
WScript.Quit

Sub ExecuteRuleAction(strOpc, strApplicationName)
Dim rule, RulesObject

set RulesObject = fwPolicy2.Rules

for each rule in RulesObject
if rule.ApplicationName=strApplicationName and (rule.Protocol=NET_FW_IP_PROTOCOL_ICMPv4 or (rule.Protocol=NET_FW_IP_PROTOCOL_UDP and (rule.RemotePorts=strSnmpPort or rule.LocalPorts=strSnmpPort or rule.LocalPorts=strTrapPort))) then
Select Case strOpc
Case ScriptOpctionEnable
strRuleState = EnableRule(rule)
WScript.Echo(strRuleState)

Case ScriptOpctionShowState
strRuleState = GetState(rule)
WScript.Echo(strRuleState)
End Select
end if
next
End Sub

Sub CreateEvent(lEventID, lEventType, strMessage)
oAPI.LogScriptEvent SCRIPT_NAME,lEventID, lEventType, strMessage
WScript.Echo(strMessage)
WScript.Quit
End Sub

Function GetState(ruleToCheck)
Dim strRuleState

if ruleToCheck.Enabled then
strRuleState = "Rule " &amp; ruleToCheck.Name &amp; " is Enabled"
else
strRuleState = "Rule " &amp; ruleToCheck.Name &amp; " is Disabled"
end if
GetState = strRuleState
End Function

Function EnableRule(ruleToEnable)
Dim bIsEnabled
Dim strRuleState
Dim ObjErr, strMessageToUse

Set ObjErr = New Error
On Error Resume Next

ruleToEnable.Enabled = true

ObjErr.Save
On Error Goto 0

If ObjErr.Number &lt;&gt; 0 Then
strMessageToUse = "Fail Enabling Rule " &amp; ruleToEnable.Name &amp; " - Error Number: " &amp; ObjErr.number &amp; " Error Details: " &amp; ObjErr.Description
CreateEvent EVENTID_SUCCESS, EVENT_TYPE_INFORMATION, strMessageToUse
End If

bIsEnabled = ruleToEnable.Enabled

ObjErr.Save
On Error Goto 0

If ObjErr.Number &lt;&gt; 0 Then
strMessageToUse = "Fail Enabling Rule " &amp; ruleToEnable.Name &amp; " - Error Number: " &amp; ObjErr.number &amp; " Error Details: " &amp; ObjErr.Description
CreateEvent EVENTID_SUCCESS, EVENT_TYPE_INFORMATION, strMessageToUse
End If

if bIsEnabled then
strRuleState = "Rule " &amp; ruleToEnable.Name &amp; " was Enabled Successfully"
else
strRuleState = "Fail to Enabled Rule " &amp; ruleToEnable.Name
end if
EnableRule = strRuleState
End Function

Class Error
Private m_lNumber
Private m_sSource
Private m_sDescription
Private m_sHelpContext
Private m_sHelpFile
Public Sub Save()
m_lNumber = Err.number
m_sSource = Err.Source
m_sDescription = Err.Description
m_sHelpContext = Err.HelpContext
m_sHelpFile = Err.helpfile
End Sub
Public Sub Raise()
Err.Raise m_lNumber, m_sSource, m_sDescription, m_sHelpFile, m_sHelpContext
End Sub
Public Sub Clear()
m_lNumber = 0
m_sSource = ""
m_sDescription = ""
m_sHelpContext = ""
m_sHelpFile = ""
End Sub
Public Default Property Get Number()
Number = m_lNumber
End Property
Public Property Get Source()
Source = m_sSource
End Property
Public Property Get Description()
Description = m_sDescription
End Property
Public Property Get HelpContext()
HelpContext = m_sHelpContext
End Property
Public Property Get HelpFile()
HelpFile = m_sHelpFile
End Property
End Class
</Script></ScriptBody>
<TimeoutSeconds>$Config/TimeoutSeconds$</TimeoutSeconds>
</ProbeAction>
</MemberModules>
<Composition>
<Node ID="Script">
<Node ID="PassThrough"/>
</Node>
</Composition>
</Composite>
</ModuleImplementation>
<OutputType>System!System.PropertyBagData</OutputType>
<TriggerOnly>true</TriggerOnly>
</ProbeActionModuleType>