Chapter 10: IIS FTP Site Operations Code
Querying the ServerComment Property Using a VBScript Active Server Page
Dim Site Dim ServerName Dim Index ServerName = "IIS_Server_Name" Index = Site_Index_Integer Set Site = GetObject("IIS://" & ServerName & "/MSFTPSVC/" & Index) Response.Write Site.ServerComment
Setting a New Value for the ServerComment Property Using a VBScript Active Server Page
Dim Site Dim ServerName Dim Index Dim NewServerComment ServerName = "IIS_Server_Name" Index = Site_Index_Integer NewServerComment = "New_Server_Comment_String" Set Site = GetObject("IIS://" & ServerName & "/MSFTPSVC/" & Index) Site.ServerComment = NewServerComment Site.SetInfo
Querying ServerBindings Using a VBScript Active Server Page
Dim Site Dim ServerName Dim SiteIndex ServerName = "IIS_Server_Name" SiteIndex = Site_Index_Value Set Site = GetObject("IIS://" & ServerName & "/MSFTPSVC/" & SiteIndex) For Each Binding In Site.ServerBindings Response.Write Binding & "<BR>" Next
Setting ServerBindings Using a VBScript Active Server Page
Dim Site Dim ServerName Dim SiteIndex Dim NewBindingArray Dim IPAddress Dim TCPPort ServerName = "IIS_Server_Name" SiteIndex = Site_Index_Value IPAddress = "xxx.xxx.xxx.xxx" TCPPort = TCP_Port_Number NewBindingArray = Array(IPAddress & ":" & TCPPort& ":") Set Site = GetObject("IIS://" & ServerName & "/MSFTPSVC/" & SiteIndex) Site.ServerBindings = NewBindingArray Site.SetInfo
Querying Maximum Connections Using a VBScript Active Server Page
Dim Site Dim ServerName Dim Index Dim RetVal ServerName = "IIS_Server_Name" Index = Site_Index Set Site = GetObject("IIS://" & ServerName & "/MSFTPSVC/" & Index) RetVal = Site.MaxConnections Response.Write RetVal
Setting Maximum Connections Using a VBScript Active Server Page
Dim Site Dim ServerName Dim Index Dim NewMaxConnections ServerName = "IIS_Server_Name" Index = Site_Index NewMaxConnections = Maximum_Number_of_Connections Set Site = GetObject("IIS://" & ServerName & "/MSFTPSVC/" & Index) Site.MaxConnections = NewMaxConnections Site.SetInfo
Querying Connection Timeout Using a VBScript Active Server Page
Dim Site Dim ServerName Dim Index Dim RetVal ServerName = "IIS_Server_Name" Index = Site_Index Set Site = GetObject("IIS://" & ServerName & "/MSFTPSVC/" & Index) RetVal = Site.ConnectionTimeout Response.Write RetVal
Setting Connection Timeout Using a VBScript Active Server Page
Dim Site Dim ServerName Dim Index Dim ConnectionTimeout ServerName = "IIS_Server_Name" Index = Site_Index_Value NewConnectionTimeout = Connection_Timeout_in_Seconds Set Site = GetObject("IIS://" & ServerName & "/MSFTPSVC/" & Index) Site.ConnectionTimeout = NewConnectionTimeout Site.SetInfo
Querying AllowAnonymous Using a VBScript Active Server Page
Dim Site Dim ServerName Dim SiteIndex ServerName = "IIS_Server_Name" SiteIndex = Site_Index_Value Set Site = GetObject("IIS://" & ServerName & "/MSFTPSVC/" & SiteIndex) Response.Write Site.AllowAnonymous
Setting AllowAnonymous Using a VBScript Active Server Page
Dim Site Dim ServerName Dim SiteIndex ServerName = "IIS_Server_Name" SiteIndex = Site_Index_Value Set Site = GetObject("IIS://" & ServerName & "/MSFTPSVC/" & SiteIndex) Site.AllowAnonymous = False Site.SetInfo
Querying Anonymous User Credentials Using a VBScript Active Server Page
Dim Site Dim ServerName Dim SiteIndex ServerName = "IIS_Server_Name" SiteIndex = Site_Index_Value Set Site = GetObject("IIS://" & ServerName & "/MSFTPSVC/" & SiteIndex) Response.Write Site.AnonymousUsername & "<BR>" Response.Write Site.AnonymousUserPass & "<BR>" Response.Write Site.AnonymousPasswordSync
Setting Anonymous User Credentials Using a VBScript Active Server Page
Dim Site Dim ServerName Dim SiteIndex Dim AnonymousUserName Dim AnonymousUserPassword ServerName = "IIS_Server_Name" SiteIndex = Site_Index_Value AnonymousUserName = "Username_for_Anonymous_FTP_Access" AnonymousUserPassword = "Password_for_Anonymous_User_Account" Set Site = GetObject("IIS://" & ServerName & "/MSFTPSVC/" & SiteIndex) Site.AnonymousUsername = AnonymousUserName Site.AnonymousUserPass = AnonymousUserPassword Site.AnonymousPasswordSync = True Site.SetInfo
Querying AnonymousOnly Using a VBScript Active Server Page
Dim Site Dim ServerName Dim SiteIndex ServerName = "IIS_Server_Name" SiteIndex = Site_Index_Value Set Site = GetObject("IIS://" & ServerName & "/MSFTPSVC/" & SiteIndex) Response.Write Site.AnonymousOnly
Setting AnonymousOnly Using a VBScript Active Server Page
Dim Site Dim ServerName Dim SiteIndex ServerName = "IIS_Server_Name" SiteIndex = Site_Index_Value Set Site = GetObject("IIS://" & ServerName & "/MSFTPSVC/" & SiteIndex) Site.AnonymousOnly = True Site.SetInfo
Querying Operators Using a VBScript Active Server Page
Dim Site Dim ServerName Dim SiteIndex ServerName = "IIS_Server_Name" SiteIndex = Site_Index_Value Set Site = GetObject("IIS://" & ServerName & "/MSFTPSVC/" & SiteIndex) Set SecurityDescriptor = Site.AdminAcl Set DiscretionaryAcl = SecurityDescriptor.DiscretionaryAcl For Each Item In DiscretionaryAcl If Item.AccessMask = 11 Or Item.AccessMask = 262315 Then Response.Write Item.Trustee & "<BR>" End If Next
Creating a New Operator Using a VBScript Active Server Page
Dim Site Dim ACE Dim DiscretionaryACL Dim ServerName Dim SiteIndex Dim NewOperator ServerName = "IIS_Server_Name" SiteIndex = Site_Index_Value NewOperator = "New_Operator_in_Format_Domain\Username" Set Site = GetObject("IIS://" & ServerName & "/MSFTPSVC/" & SiteIndex) Set SecurityDescriptor = Site.AdminACL Set DiscretionaryACL = SecurityDescriptor.DiscretionaryACL Set ACE = CreateObject("AccessControlEntry") ACE.Trustee = NewOperator ACE.AccessMask = 11 DiscretionaryACL.AddAce ACE SecurityDescriptor.DiscretionaryACL = DiscretionaryACL Site.AdminACL = SecurityDescriptor Site.SetInfo
Querying Current Greeting Message Using a VBScript Active Server Page
Dim Site Dim ServerName Dim SiteIndex ServerName = "IIS_Server_Name" SiteIndex = Site_Index_Value Set Site = GetObject("IIS://" & ServerName & "/MSFTPSVC/" & SiteIndex) For Each MessageLine in Site.GreetingMessage Response.Write MessageLine & "<BR>" Next
Setting New Greeting Message Using a VBScript Active Server Page
Dim Site Dim ServerName Dim SiteIndex ServerName = "IIS_Server_Name" SiteIndex = Site_Index_Value Set Site = GetObject("IIS://" & ServerName & "/MSFTPSVC/" & SiteIndex) Site.GreetingMessage = Array("Greeting_Line_1","Greeting_Line_2","Greeting_Line_3") Site.SetInfo
Querying Current Exit Message Using a VBScript Active Server Page
Dim Site Dim ServerName Dim SiteIndex ServerName = "IIS_Server_Name" SiteIndex = Site_Index_Value Set Site = GetObject("IIS://" & ServerName & "/MSFTPSVC/" & SiteIndex) Response.Write Site.ExitMessage
Setting New Exit Message Using a VBScript Active Server Page
Dim Site Dim ServerName Dim SiteIndex Dim NewExitMessageString ServerName = "IIS_Server_Name" SiteIndex = Site_Index_Value NewExitMessageString = "FTP_Session_Termination_Text" Set Site = GetObject("IIS://" & ServerName & "/MSFTPSVC/" & SiteIndex) Site.ExitMessage = NewExitMessageString Site.SetInfo
Querying Current Maximum Connections Message Using a VBScript Active Server Page
Dim Site Dim ServerName Dim SiteIndex ServerName = "IIS_Server_Name" SiteIndex = Site_Index_Value Set Site = GetObject("IIS://" & ServerName & "/MSFTPSVC/" & SiteIndex) Response.Write Site.MaxClientsMessage
Setting New Current Maximum Connections Message Using a VBScript Active Server Page
Dim Site Dim ServerName Dim SiteIndex Dim MaxConnectionsString ServerName = "IIS_Server_Name" SiteIndex = Site_Index_Value MaxConnectionsString = "String_Passed_To_Client_When_Maximum_Connections_Reached" Set Site = GetObject("IIS://" & ServerName & "/MSFTPSVC/" & SiteIndex) Site.MaxClientsMessage = MaxConnectionsString Site.SetInfo
Querying the Local Path Property for an FTP Site's Root Virtual Directory Using a VBScript Active Server Page
Dim VirtualDirectory Dim ServerName Dim Index Dim RetVal ServerName = "IIS_Server_Name" Index = Site_Index_Value Set VirtualDirectory = GetObject("IIS://" & ServerName & "/MSFTPSVC/" & Index & "/ROOT") RetVal = VirtualDirectory.Path Response.Write RetVal
Modifying the Local Path Property for an FTP Site's Root Virtual Directory Using a VBScript Active Server Page
Dim VirtualDirectory Dim ServerName Dim Index Dim NewVirtualDirPath ServerName = "IIS_Server_Name" Index = Site_Index_Value NewVirtualDirPath = "New_Path_for_Site" Set VirtualDirectory = GetObject("IIS://" & ServerName & "/MSFTPSVC/" & Index & "/ROOT") VirtualDirectory.Path = NewVirtualDirPath VirtualDirectory.SetInfo
Querying the Remote Path Property and UNC Connection Information for a Site's Root Virtual Directory Using a VBScript Active Server Page
Dim VirtualDirectory Dim ServerName Dim Index Dim RetVal ServerName = "IIS_Server_Name" Index = Site_Index_Value Set VirtualDirectory = GetObject("IIS://" & ServerName & "/MSFTPSVC/" & Index & "/ROOT") Response.Write VirtualDirectory.Path & "<BR>" Response.Write VirtualDirectory.UNCUserName & "<BR>" Response.Write VirtualDirectory.UNCPassword
Modifying the Remote Path Property for a Site's Root Virtual Directory Using a VBScript Active Server Page
Dim VirtualDirectory Dim ServerName Dim Index Dim NewVirtualDirPath Dim NewVirtualDirUser Dim NewVirtualDirPassword ServerName = "IIS_Server_Name" Index = Site_Index_Value NewVirtualDirPath = "New_Path_for_Site" NewVirtualDirUser = "UNC_Credentials_Used_To_Establish_Connection" NewVirtualDirPassword = "UNC_Credentials_Used_To_Establish_Connection" Set VirtualDirectory = GetObject("IIS://" & ServerName & "/MSFTPSVC/" & Index & "/ROOT") VirtualDirectory.Path = NewVirtualDirPath VirtualDirectory.UNCUserName = NewVirtualDirUser VirtualDirectory.UNCPassword = NewVirtualDirPassword VirtualDirectory.SetInfo
Querying Directory Access Permissions and Logging Status Using a VBScript Active Server Page
Dim VirtualDirectory Dim ServerName Dim Index Dim RetVal ServerName = "IIS_Server_Name" Index = Site_Index_Value Set VirtualDirectory = GetObject("IIS://" & ServerName & "/MSFTPSVC/" & Index & "/ROOT") Response.Write "Read:" & VirtualDirectory.AccessRead & "<BR>" Response.Write "Write:" & VirtualDirectory.AccessWrite & "<BR>" Response.Write "Logging Disabled: " & virtualDirectory.DontLog
Setting Directory Access Permissions and Logging Using a VBScript Active Server Page
Dim VirtualDirectory Dim ServerName Dim Index Dim RetVal ServerName = "IIS_Server_Name" Index = Site_Index_Value Set VirtualDirectory = GetObject("IIS://" & ServerName & "/MSFTPSVC/" & Index & "/ROOT") VirtualDirectory.AccessRead = True VirtualDirectory.AccessWrite = True VirtualDirectory.DontLog = False VirtualDirectory.SetInfo
Querying Directory Listing Style Using a VBScript Active Server Page
Dim VirtualDirectory Dim ServerName Dim Index ServerName = "IIS_Server_Name" Index = Site_Index_Value Set VirtualDirectory = GetObject("IIS://" & ServerName & "/MSFTPSVC/" & Index) Response.Write VirtualDirectory.MSDOSDirOutput
Setting Directory Listing Style Using a VBScript Active Server Page
Dim VirtualDirectory Dim ServerName Dim Index ServerName = "IIS_Server_Name" Index = Site_Index_Value Set VirtualDirectory = GetObject("IIS://" & ServerName & "/MSFTPSVC/" & Index) VirtualDirectory.MSDOSDirOutput = False VirtualDirectory.SetInfo
Querying Current IP Address Restrictions Using a VBScript Active Server Page
Dim Site Dim ServerName Dim SiteIndex Dim IPSecurity ServerName = "IIS_Server_Name" SiteIndex = Site_Index_Value Set Site = GetObject("IIS://" & ServerName & "/MSFTPSVC/" & SiteIndex & "/ROOT") Set IPSecurity = Site.IPSecurity If IPSecurity.GrantByDefault Then Response.Write "All addresses will be allowed, except as follows:" & "<BR>" For Each Entry In IPSecurity.IPDeny If InStr(1, Entry, "255.255.255.255") Then Response.Write "Denied IP: " & Replace(Entry, ", 255.255.255.255", "") & "<BR>" Else Response.Write "Denied Subnet: " & Entry & "<BR>" End If Next For Each Entry In IPSecurity.DomainDeny Response.Write "Denied Domain: " & Entry & "<BR>" Next Else Response.Write "All addresses will be blocked, except as follows:" & "<BR>" For Each Entry In IPSecurity.IPGrant If InStr(1, Entry, "255.255.255.255") Then Response.Write "Allowed IP: " & Replace(Entry, ", 255.255.255.255", "") & "<BR>" Else Response.Write "Allowed Subnet: " & Entry & "<BR>" End If Next For Each Entry In IPSecurity.DomainGrant Response.Write "Allowed Domain: " & Entry & "<BR>" Next End If
Setting New IP Address Restrictions Using a VBScript Active Server Page
Dim Site Dim ServerName Dim SiteIndex Dim IPSecurity Dim IPAddress Dim IPSubnet Dim Domain Dim ActionType ServerName = SiteIndex = Site_Index_Value IPAddress = "xxx.xxx.xxx.xxx" IPSubnet = "xxx.xxx.xxx.xxx" Domain = "DNS_Domain.Name" ActionType = "GRANTIP" 'ActionType = "GRANTSUBNET" 'ActionType = "GRANTDOMAIN" 'ActionType = "DENYIP" 'ActionType = "DENYSUBNET" 'ActionType = "DENYDOMAIN" Select Case ActionType Case "GRANTIP" Set Site = GetObject("IIS://" & ServerName & "/MSFTPSVC/" & SiteIndex & "/ROOT") Set IPSecurity = Site.IPSecurity IPSecurity.GrantByDefault = False Site.IPSecurity = IPSecurity Site.SetInfo IPSecurity.IPGrant = Array(IPAddress & ", 255.255.255.255") Site.IPSecurity = IPSecurity Site.SetInfo Case "GRANTSUBNET" Set Site = GetObject("IIS://" & ServerName & "/MSFTPSVC/" & SiteIndex & "/ROOT") Set IPSecurity = Site.IPSecurity IPSecurity.GrantByDefault = False IPSecurity.IPGrant = Array(IPAddress & ", " & IPSubnet) Site.IPSecurity = IPSecurity Site.SetInfo Case "GRANTDOMAIN" Set Site = GetObject("IIS://" & ServerName & "/MSFTPSVC/" & SiteIndex & "/ROOT") Set IPSecurity = Site.IPSecurity IPSecurity.GrantByDefault = False IPSecurity.DomainGrant = Array(Domain) Site.IPSecurity = IPSecurity Site.SetInfo Case "DENYIP" Set Site = GetObject("IIS://" & ServerName & "/MSFTPSVC/" & SiteIndex & /ROOT") Set IPSecurity = Site.IPSecurity IPSecurity.GrantByDefault = True IPSecurity.IPDeny = Array(IPAddress & ", 255.255.255.255") Site.IPSecurity = IPSecurity Site.SetInfo Case "DENYSUBNET" Set Site = GetObject("IIS://" & ServerName & "/MSFTPSVC/" & SiteIndex & "/ROOT") Set IPSecurity = Site.IPSecurity IPSecurity.GrantByDefault = True IPSecurity.IPDeny = Array(IPAddress & ", " & IPSubnet) Site.IPSecurity = IPSecurity Site.SetInfo Case "DENYDOMAIN" Set Site = GetObject("IIS://" & ServerName & "/MSFTPSVC/" & SiteIndex & "/ROOT") Set IPSecurity = Site.IPSecurity IPSecurity.GrantByDefault = True IPSecurity.DomainDeny = Array(Domain) Site.IPSecurity = IPSecurity Site.SetInfo End Select