Share via


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: 6/30/2010