Importing Lists from Text Files

A list of items that you want to import into a collection can be stored in a text file. Then you can use the Add method of the applicable collection to add the items in the list as elements of the collection.

Adding a List of URLs to a URL Set

If you have a large list of URLs in a text file, you can use a text file to populate a URL set (an FPCURLSet collection) in the FPCURLSets collection for an array. This can be accomplished by reading each line of the text file into a string and calling the Add method of the URL set to add the string as an element of the collection. Then you can apply an access rule represented by an FPCPolicyRule object by adding the URL set to the objects referenced in the URLSets property of the access rule.

This Visual Basic Scripting Edition (VBScript) script creates a new URL set with the name specified by the user if a URL set with that name does not already exist and imports all the URLs listed in the specified text file to the new URL set. If the specified URL set already exists, the URLs in the text file are added without removing the existing URLs. In either case, duplicates are not added. Note that the text file must contain a list of URLs with each URL on a separate line.

Option Explicit
'Define the constants needed
Const Error_FileNotFound = &H80070002
Const ForReading = 1
Main(WScript.Arguments)
Sub Main(args)
	If(args.Count <> 2) Then
		Usage()
	End If
	AddUrlsToUrlSet args(0), args(1)
End Sub
Sub AddUrlsToUrlSet(fileName, urlSetName)
	' Create the root object.
	Dim root  ' The FPCLib.FPC root object
	Set root = CreateObject("FPC.Root")
	'Declare the other objects needed.
	Dim isaArray		' An FPCArray object
	Dim urlsets		 ' An FPCURLSets collection
	Dim urlset		' An FPCURLSet object
	Dim fso			 ' A FileSystem object
	Dim fileStream	' A TextStream object
	Dim textRead		' A string
	' Get references to the array object 
	' and the URL sets collection.
	Set isaArray = root.GetContainingArray()
	Set urlsets = isaArray.RuleElements.URLSets
	' Retrieve the specified URL set.
	On Error Resume Next
	Set urlset = urlsets.Item(urlSetName)
	If Err.Number = Error_FileNotFound Then
		WScript.Echo "The " & urlSetName & " URL set does not exist. Creating it ..."
		Set urlset = urlsets.Add(urlSetName)
	End If
	On Error GoTo 0
	Set fso = CreateObject("Scripting.FileSystemObject")
	Set fileStream = fso.OpenTextFile(fileName, ForReading)
	On Error Resume Next
	Do While fileStream.AtEndOfStream <> True
		textRead = fileStream.ReadLine
		If textRead <> "" Then
			Err.Clear
			urlset.Item textRead
			If Err.Number = Error_FileNotFound Then
				WScript.Echo "Adding " &  textRead 
				urlset.Add textRead
			End If
		End If
	Loop
	On Error GoTo 0
	' Save the changes.
	urlsets.Save
	WScript.Echo "Done!"
End Sub 
Sub Usage()
	WScript.Echo "Usage:" & VbCrLf _
		& "  " & WScript.ScriptName & " FileName UrlSetName" & VbCrLf _
		& "" & VbCrLf _
		& "  FileName - The name of the text file containing the list of URLs" & VbCrLf _
		& "  UrlSetName - The name of the URL set to which the list of URLs will be added" 
	WScript.Quit
End Sub

Assigning a List of Protocols to an Access Rule

You can maintain a list of protocols (names of FPCProtocolDefinition objects) in a text file that can be used to assign the list of protocols to one or more access rules. The protocols in the text file are assigned to an access rule by reading each line of the text file into a string and then calling the Add method of the collection of references (FPCRefs collection) stored in the SpecifiedProtocols property of the access rule to add a reference to the FPCProtocolDefinition object specified by the string to the collection.

This VBScript script removes any protocols assigned to the access rule specified by the user and then adds the protocols listed in the specified text file to the rule. Note that the text file must contain a list of protocols with the name of each protocol on a separate line.

Option Explicit
'Define the constants needed
Const Error_FileNotFound = &H80070002
Const fpcPolicyRuleAccess = 0
Const fpcSpecifiedProtocols = 1
Const ForReading = 1
Const fpcInclude = 0
Main(WScript.Arguments)
Sub Main(args)
	If(args.Count <> 2) Then
		Usage()
	End If
	AddProtocolsToRule args(0), args(1)
End Sub
Sub AddProtocolsToRule(fileName, ruleName)
	' Create the root object.
	Dim root  ' The FPCLib.FPC root object
	Set root = CreateObject("FPC.Root")
	'Declare the other objects needed.
	Dim isaArray			' An FPCArray object
	Dim rules			 ' An FPCPolicyRules collection
	Dim rule				' An FPCPolicyRule object
	Dim protocols		 ' An FPCProtocolDefinitions collection
	Dim specifiedProtocols  ' An FPCRefs collection
	Dim fso				 ' A FileSystem object
	Dim fileStream		' A TextStream object
	Dim textRead			' A String
	Dim I				 ' An Integer
	' Get references to the array object, the policy rules collection, 
	' and the protocol definitions collection.
	Set isaArray = root.GetContainingArray()
	Set rules = isaArray.ArrayPolicy.PolicyRules
	Set protocols = isaArray.RuleElements.ProtocolDefinitions
	' Retrieve the specified policy rule.
	On Error Resume Next
	Set rule = rules(ruleName)
	If err.Number = Error_FileNotFound Then
		WScript.Echo "The access rule " & ruleName & " could not be found."
		WScript.Quit
	End If
	Err.Clear
	On Error GoTo 0
	' Verify that the specified rule is an access rule.
	If rule.Type <> fpcPolicyRuleAccess Then
		WScript.Echo "The policy rule " & ruleName & " is not an access rule."
		WScript.Quit
	End If
	WScript.Echo "Configuring the rule to apply to a specified set of protocols ..."
	If rule.AccessProperties.ProtocolSelectionMethod <> fpcSpecifiedProtocols Then
		rule.AccessProperties.ProtocolSelectionMethod = fpcSpecifiedProtocols
	End If
	WScript.Echo "Retrieving the collection for storing the specified protocols ..."
	Set specifiedProtocols = rule.AccessProperties.SpecifiedProtocols
	If specifiedProtocols.Count > 0 Then
		WScript.Echo "Removing all protocols from the collection ..."
		specifiedProtocols.RemoveAll
	End If
	Set fso = CreateObject("Scripting.FileSystemObject")
	Set fileStream = fso.OpenTextFile(fileName, ForReading)
	Do While fileStream.AtEndOfStream <> True
		textRead = fileStream.ReadLine
		If textRead <> "" Then
		On Error Resume Next
		protocols.Item textRead
			If Err.Number = Error_FileNotFound Then
				WScript.Echo "The " &  textRead & " protocol is not defined in Forefront TMG."
				Err.Clear
			Else
				specifiedProtocols.Add textRead, fpcInclude
			End If
		End If
	Loop
	On Error GoTo 0
	' Save the changes to the access rule.
	rule.Save
	WScript.Echo "Done!"
End Sub 
Sub Usage()
	WScript.Echo "Usage:" & VbCrLf _
		& "  " & WScript.ScriptName & " FileName RuleName" & VbCrLf _
		& "" & VbCrLf _
		& "  FileName - The name of the text file containing the list of protocols" & VbCrLf _
		& "  RuleName - The name of the access rule to which the list of protocols will be added" 
	WScript.Quit
End Sub

Send comments about this topic to Microsoft

Build date: 11/30/2009

© 2008 Microsoft Corporation. All rights reserved.