Antigen Manual Schedule

Antigen_Manual_Schedule.NoHost (WriteActionModuleType)

Schedules Manual Scan Task

Element properties:

TypeWriteActionModuleType
IsolationAny
AccessibilityInternal
RunAsDefault
InputTypeSystem.BaseData
Comment{FACA7077-55A5-47DE-8C3C-6802DC6B348B}

Member Modules:

ID Module Type TypeId RunAs 
RunScriptAction WriteAction System.Mom.BackwardCompatibility.NoHost.ScriptResponse Default

Overrideable Parameters:

IDParameterTypeSelectorDisplay NameDescription
Intervalstring$Config/Parameters/Interval$IntervalSpecifies repeat interval (once, weekly, daily, monthly)
ScanIDstring$Config/Parameters/ScanID$ScanIDID number for the Manual Scan Job
StartDaystring$Config/Parameters/StartDay$StartDayDay or date to start the scan (date or M,T,W,Th,F,S,Su)
StartTimestring$Config/Parameters/StartTime$StartTimeStart time of scheduled Manual Scan
TextLogstring$Config/Parameters/TextLog$TextLogText logging enabled / disabled

Source Code:

<WriteActionModuleType ID="Antigen_Manual_Schedule.NoHost" Accessibility="Internal" Comment="{FACA7077-55A5-47DE-8C3C-6802DC6B348B}">
<Configuration>
<IncludeSchemaTypes>
<SchemaType>MomBackwardCompatibility!System.Mom.BackwardCompatibility.AlertGenerationSchema</SchemaType>
</IncludeSchemaTypes>
<xsd:element xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="AlertGeneration" type="AlertGenerationType"/>
<xsd:element xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="InvokerType" type="xsd:integer"/>
<xsd:element xmlns:xsd="http://www.w3.org/2001/XMLSchema" name="Parameters" minOccurs="0">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="Interval" type="xsd:string" minOccurs="0"/>
<xsd:element name="ScanID" type="xsd:string" minOccurs="0"/>
<xsd:element name="StartDay" type="xsd:string" minOccurs="0"/>
<xsd:element name="StartTime" type="xsd:string" minOccurs="0"/>
<xsd:element name="TextLog" type="xsd:string" minOccurs="0"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</Configuration>
<OverrideableParameters>
<OverrideableParameter ID="Interval" Selector="$Config/Parameters/Interval$" ParameterType="string"/>
<OverrideableParameter ID="ScanID" Selector="$Config/Parameters/ScanID$" ParameterType="string"/>
<OverrideableParameter ID="StartDay" Selector="$Config/Parameters/StartDay$" ParameterType="string"/>
<OverrideableParameter ID="StartTime" Selector="$Config/Parameters/StartTime$" ParameterType="string"/>
<OverrideableParameter ID="TextLog" Selector="$Config/Parameters/TextLog$" ParameterType="string"/>
</OverrideableParameters>
<ModuleImplementation>
<Composite>
<MemberModules>
<WriteAction ID="RunScriptAction" TypeID="MomBackwardCompatibility!System.Mom.BackwardCompatibility.NoHost.ScriptResponse">
<AlertGeneration>$Config/AlertGeneration$</AlertGeneration>
<InvokerType>$Config/InvokerType$</InvokerType>
<Body><Script>

'*******************************************************************************************
'*
'* File Name:
'* ---------
'* AntigenManualSchedule.vbs
'* $Revision: 4 $
'*
'* Purpose:
'* --------
'* Makes a call to Antigenstarter.exe to trigger Manual Scan Schedule
'*
'* Parameters:
'* -----------
'* ScanID
'* Interval
'* StartDay
'* StartTime
'* TextLog
'*
'* Parameter definitions:
'* ----------------------
'*
'* 1. Interval =&gt; Defines the repeat Interval. Possible values monthly ; weekly ; daily ; once
'*
'* 2. StartDay =&gt; Defines the start day. Possible values M ; t ; W ; Th ; F ; S ; Su
'*
'* 3. TextLog =&gt; Defines whether this scripts logs entries to a text file under the local Antigen installation folder
'* Possible Values =&gt; true ; false
'*
'********************************************************************************************************

' Constant for controlling text file operations

Const FOR_READING = 1

' Constants registry

Const HIVE = "HKEY_LOCAL_MACHINE\"
Const REG_KEY = "SOFTWARE\Sybari Software\"

' msh 03-06-06 - added lcase
ScanIDParameter = ScriptContext.Parameters.Get("ScanID")
IntervalParameter = Lcase(ScriptContext.Parameters.Get("Interval"))
StartDayParameter = Lcase(ScriptContext.Parameters.Get("StartDay"))
StartTimeParameter = ScriptContext.Parameters.Get("StartTime")
TextLogParameter = ScriptContext.Parameters.Get("TextLog")

' Retrieve the local installation path of Antigen

AntigenInstallPath = RetrieveRegValue ("SOFTWARE\Sybari Software\Antigen For Exchange","InstalledPath", 1)

If IsNUll(AntigenInstallPath) Then
WriteMOMEvent "TASK ERROR: Unable to retrieve Antigen for Exchange installation path", 1
ScriptContext.Quit
End If

' Create Log folder under Antigen installation folder

If TextLogParameter = "true" then
CreateLogFolder()
End If

WriteLog "NULL"
WriteLog "Beginning Execution of Manual Scan Schedule Script"

If ScanIDParameter = "&lt;Enter Scan Job ID&gt;" Then
WriteLog "TASK ERROR: Scan Job ID not specified"
WriteMOMEvent "TASK ERROR: Scan Job ID not specified", 1
ScriptContext.Quit
End If

AtCommand = BuildATCommand(IntervalParameter, StartDayParameter, StartTimeParameter)

strParam = AtCommand &amp; " " &amp; """" &amp; AntigenInstallPath &amp; "\AntigenStarter.exe" &amp; """" &amp; " s" &amp; ScanIDParameter &amp; """"
strCommand = "at "

WriteLog "Manual Scan Job ID = " &amp; ScanIDParameter
WriteLog "Schedule Inteval = " &amp; IntervalParameter &amp; " @ " &amp; StartTimeParameter &amp; " on " &amp; StartDayParameter
WriteLog "Command: " &amp; strCommand &amp; strParam

iResult = ShellExecute(strCommand, strParam)

If iResult &lt;&gt; 0 Then
WriteLog "TASK ERROR: Invalid schedule parameters specified. Failed to schedule manual scan."
WriteMOMEvent "TASK ERROR: Invalid schedule parameters specified. Failed to schedule manual scan.", 1
End If

WriteLog "Scheduling of Manual Scan job complete"

'********************************************************************
'*
'* Function: BuildATCommand
'*
'* Purpose: Retrieves String Value from Registry
'*
'********************************************************************

Function BuildATCommand (Interval, StartDay, StartTime)

Select Case Interval
Case "monthly"
BuildATCommand = StartTime &amp; " /every:" &amp; StartDay
Case "weekly"
BuildATCommand = StartTime &amp; " /every:" &amp; StartDay
Case "daily"
BuildATCommand = StartTime &amp; " /every:" &amp; "M,T,W,Th,F,S,Su"
Case "once"
If StartDay = "today" then
BuildATCommand = StartTime
Else
BuildATCommand = StartTime &amp; " /next:" &amp; StartDay
End If
End Select

End Function

'********************************************************************
'*
'* Function: RetrieveRegValue
'*
'* Purpose: Retrieves String Value from Registry
'*
'********************************************************************


Function RetrieveRegValue (Key, strValueName, intValueType)

' intValueType -&gt; 1 = String Value
' -&gt; 2 = DWORD Value

const HKEY_LOCAL_MACHINE = &amp;H80000002
Dim strServerName
Dim objReg
Dim strRegValue


On Error Resume Next
Err.Clear
Set objReg=GetObject("winmgmts:\root\default:StdRegProv")
If Err.Number &lt;&gt; 0 Then
Err.Clear
strRegValue = NULL
Else

Select Case intValueType
Case 1
strErr = objReg.GetStringValue (HKEY_LOCAL_MACHINE, Key, strValueName, strRegValue)

Case 2
strErr = objReg.GetDWORDValue (HKEY_LOCAL_MACHINE, Key, strValueName, strRegValue)

End Select

' if reading the registry fails via wmi return error

If strErr &lt;&gt; 0 then
strRegValue = NULL
End If
End If

Set objReg = Nothing

RetrieveRegValue = strRegValue


End Function



'***********************************************************************
'*
'* Function: ShellExecute()
'*
'* Purpose: Sets up call to ANTUTIL for switching hooking mode
'*
'***********************************************************************

Function ShellExecute (Command, Parameter)
Dim bWaitOnReturn
Dim iReturn

bWaitOnReturn = true

set wshShell = CreateObject ("wscript.shell")

iReturn = wshShell.run(Command &amp; Parameter,,bWaitOnReturn)

WriteLog "Result: " &amp; iReturn

Set wshShell = Nothing

ShellExecute = iReturn

End Function


'***********************************************************************
'*
'* Function: CreateLogFolder()
'*
'* Purpose: Creates Log subfolder under Antigen
'*
'***********************************************************************

Function CreateLogFolder ()

Dim objFSO
set objFSO = CreateObject ("Scripting.FileSystemObject")

If objFSO.FolderExists(AntigenInstallPath &amp; "\MOMLogs") = 0 then
objFSO.CreateFolder(AntigenInstallPath &amp; "\MOMLogs")
End If

Set objFSO = Nothing

End Function


'***********************************************************************
'*
'* Function: WriteLog()
'*
'* Purpose: Writes script activity and errors to a log file
'*
'***********************************************************************


Function WriteLog (strLogText)

If TextLogParameter = "true" Then

Dim objfs
Dim objf

Dim strTimeStamp
On Error Resume Next
Err.Clear

Set objfs = CreateObject("Scripting.FileSystemObject")
Set objf = objfs.OpentextFile(AntigenInstallPath &amp; "\MOMLogs\" &amp; "Tasks.log", 8, False)


' If log file doesn't exist - create it
If Err.Number &lt;&gt; 0 Then
Set objf = objfs.CreatetextFile(AntigenInstallPath &amp; "\MOMLogs\" &amp; "Tasks.log", False)
Err.Clear
End If

If strLogText = "NULL" then
objf.WriteLine("")
Else
strTimeStamp = Date &amp; " " &amp; Time &amp; " "
objf.WriteLine(strTimeStamp &amp; strLogText)
End If
End If

Set objfs = Nothing
Set objf = Nothing

End Function


'***********************************************************************
'*
'* Function: WriteMOMEvent()
'*
'* Purpose: Writes events to MOM EventLog
'*
'***********************************************************************

Function WriteMOMEvent(EventMessage, EventType)

Dim objEvt
Set objEvt = ScriptContext.CreateEvent

objEvt.Message = EventMessage
objEvt.EventType = EventType
ScriptContext.Submit(objEvt)

set objEvt = Nothing

End Function</Script></Body>
<Language>VBScript</Language>
<Name>Antigen Manual Schedule</Name>
<Parameters>
<Parameter>
<Name>Interval</Name>
<Value>$Config/Parameters/Interval$</Value>
</Parameter>
<Parameter>
<Name>ScanID</Name>
<Value>$Config/Parameters/ScanID$</Value>
</Parameter>
<Parameter>
<Name>StartDay</Name>
<Value>$Config/Parameters/StartDay$</Value>
</Parameter>
<Parameter>
<Name>StartTime</Name>
<Value>$Config/Parameters/StartTime$</Value>
</Parameter>
<Parameter>
<Name>TextLog</Name>
<Value>$Config/Parameters/TextLog$</Value>
</Parameter>
</Parameters>
<ManagementPackId>[Microsoft.Antigen.v9,,1.0.0.1]</ManagementPackId>
</WriteAction>
</MemberModules>
<Composition>
<Node ID="RunScriptAction"/>
</Composition>
</Composite>
</ModuleImplementation>
<InputType>SystemLibrary!System.BaseData</InputType>
</WriteActionModuleType>