iisreverse-proxydirectory-browsing

How do you change or hide the server name from directory browsing in IIS


I am hosting a virtual directory behind a reverse proxy, and I'm enabling directory browsing on that virtual directory.

At the top of the directory browsing page it lists the server name and then the path to the folder from that domain. Because this is hosted behind a reverse proxy, the server domain listed is the local domain name that is only accessible behind the reverse proxy.

I would like to change or remove the server domain listing at the top of the page so that a local domain name isn't shown on the directory browsing page.

I've tried searching for information on this, but haven't found any documentation that allows you to change information listed at the top of the directory browsing page

Below is just an example to be clear about what I'm trying to change, but in my case, instead of localhost, the local domain name of the server is displayed. enter image description here


Solution

  • I ended up creating a custom ASP page following an example given here https://support.microsoft.com/en-us/help/224364/creating-a-directory-browsing-page-using-asp

    If using a custom ASP page, directory browsing needs to be disabled, and the Default.asp file placed in the folder that you want to be able to browse, and ASP functionality needs to be turned on for IIS.

    The relevant ASP code written in vb script is copied below from the linked article

    <%@LANGUAGE="VBSCRIPT"%>
    <%
       Option Explicit
       On Error Resume Next
    
       ' this section is optional - it just denies anonymous access
       If Request.ServerVariables("LOGON_USER")="" Then
          Response.Status = "401 Access Denied"
       End If
    
       ' declare variables
       Dim objFSO, objFolder
       Dim objCollection, objItem
    
       Dim strPhysicalPath, strTitle, strServerName
       Dim strPath, strTemp
       Dim strName, strFile, strExt, strAttr
       Dim intSizeB, intSizeK, intAttr, dtmDate
    
       ' declare constants
       Const vbReadOnly = 1
       Const vbHidden = 2
       Const vbSystem = 4
       Const vbVolume = 8
       Const vbDirectory = 16
       Const vbArchive = 32
       Const vbAlias = 64
       Const vbCompressed = 128
    
       ' don't cache the page
       Response.AddHeader "Pragma", "No-Cache"
       Response.CacheControl = "Private"
    
       ' get the current folder URL path
       strTemp = Mid(Request.ServerVariables("URL"),2)
       strPath = ""
    
       Do While Instr(strTemp,"/")
          strPath = strPath & Left(strTemp,Instr(strTemp,"/"))
          strTemp = Mid(strTemp,Instr(strTemp,"/")+1)      
       Loop
    
       strPath = "/" & strPath
    
       ' build the page title
       strServerName = UCase(Request.ServerVariables("SERVER_NAME"))
       strTitle = "Contents of the " & strPath & " folder"
    
       ' create the file system objects
       strPhysicalPath = Server.MapPath(strPath)
       Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
       Set objFolder = objFSO.GetFolder(strPhysicalPath)
    %>
    <html>
    <head>
    <title><%=strServerName%> - <%=strTitle%></title>
    <meta name="GENERATOR" content="The Mighty Hand of Bob">
    <style>
    BODY  { BACKGROUND: #cccccc; COLOR: #000000;
            FONT-FAMILY: Arial; FONT-SIZE: 10pt; }
    TABLE { BACKGROUND: #000000; COLOR: #ffffff; }
    TH    { BACKGROUND: #0000ff; COLOR: #ffffff; }
    TD    { BACKGROUND: #ffffff; COLOR: #000000; }
    TT    { FONT-FAMILY: Courier; FONT-SIZE: 11pt; }
    </style>
    </head>
    <body>
    
    <h1 align="center"><%=strServerName%><br><%=strTitle%></h1>
    <h4 align="center">Please choose a file/folder to view.</h4>
    
    <div align="center"><center>
    <table width="100%" border="0" cellspacing="1" cellpadding="2">
    <tr>
       <th align="left">Name</th>
       <th align="left">Bytes</th>
       <th align="left">KB</th>
       <th align="left">Attributes</th>
       <th align="left">Ext</th>
       <th align="left">Type</th>
       <th align="left">Date</th>
       <th align="left">Time</th>
    </tr>
    
    <%
       ''''''''''''''''''''''''''''''''''''''''
       ' output the folder list
       ''''''''''''''''''''''''''''''''''''''''
    
       Set objCollection = objFolder.SubFolders
    
       For Each objItem in objCollection
          strName = objItem.Name
          strAttr = MakeAttr(objItem.Attributes)      
          dtmDate = CDate(objItem.DateLastModified)
    %>
    <tr>
       <td align="left"><b><a href="<%=strName%>"><%=strName%></a></b></td>
       <td align="right">N/A</td>
       <td align="right">N/A</td>
       <td align="left"><tt><%=strAttr%></tt></td>
       <td align="left"><b><DIR></b></td>
       <td align="left"><b>Directory</b></td>
       <td align="left"><%=FormatDateTime(dtmDate,vbShortDate)%></td>
       <td align="left"><%=FormatDateTime(dtmDate,vbLongTime)%></td>
    </tr>
    <% Next %>
    
    <%
       ''''''''''''''''''''''''''''''''''''''''
       ' output the file list
       ''''''''''''''''''''''''''''''''''''''''
    
       Set objCollection = objFolder.Files
    
       For Each objItem in objCollection
          strName = objItem.Name
          strFile = Server.HTMLEncode(Lcase(strName))
    
          intSizeB = objItem.Size
          intSizeK = Int((intSizeB/1024) + .5)
          If intSizeK = 0 Then intSizeK = 1
    
          strAttr = MakeAttr(objItem.Attributes)
          strName = Ucase(objItem.ShortName)
          If Instr(strName,".") Then strExt = Right(strName,Len(strName)-Instr(strName,".")) Else strExt = ""
          dtmDate = CDate(objItem.DateLastModified)
    %>
    <tr>
       <td align="left"><a href="<%=strFile%>"><%=strFile%></a></td>
       <td align="right"><%=FormatNumber(intSizeB,0)%></td>
       <td align="right"><%=intSizeK%>K</td>
       <td align="left"><tt><%=strAttr%></tt></td>
       <td align="left"><%=strExt%></td>
       <td align="left"><%=objItem.Type%></td>
       <td align="left"><%=FormatDateTime(dtmDate,vbShortDate)%></td>
       <td align="left"><%=FormatDateTime(dtmDate,vbLongTime)%></td>
    </tr>
    <% Next %>
    
    </table>
    </center></div>
    
    </body>
    </html>
    <%
       Set objFSO = Nothing
       Set objFolder = Nothing
    
       ' this adds the IIf() function to VBScript
       Function IIf(i,j,k)
          If i Then IIf = j Else IIf = k
       End Function
    
       ' this function creates a string from the file atttributes
       Function MakeAttr(intAttr)
          MakeAttr = MakeAttr & IIf(intAttr And vbArchive,"A","-")
          MakeAttr = MakeAttr & IIf(intAttr And vbSystem,"S","-")
          MakeAttr = MakeAttr & IIf(intAttr And vbHidden,"H","-")
          MakeAttr = MakeAttr & IIf(intAttr And vbReadOnly,"R","-")
       End Function
    %>