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.
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
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.