Created
April 25, 2017 23:17
-
-
Save shalakolee/038fbd5b0de0c0ac370c66c3541653b0 to your computer and use it in GitHub Desktop.
Classic ASP Directory Browser
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<%@ Language=VBScript %> | |
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> | |
<% | |
' ***** Which Folder to Share? | |
' ********** ********** ********** | |
sDirectory = "/foldertoshare/" | |
' ********** ********** ********** | |
AllowExt = "all" | |
'AllowExt = "all" | |
' DenyExt overrides AllowExt | |
DenyExt = "asp, db, lnk" | |
' Top navigation separator | |
Const sChevron = ">" ' "/" | |
' Always display the navigation path? | |
Const bShowPath = True 'False | |
' Always display the root directory? | |
Const bShowRoot = False 'True | |
' Page font tag | |
Const sFont = "<font face=""Verdana, Arial, Helvetica"" size=""2"">" | |
' Column header font tag | |
Const sColFont = "<font face=""Verdana, Arial, Helvetica"" size=""2"" COLOR=""#FFFFFF"">" | |
' Column header color | |
Const TblHeader = "#BFBFBF" 'Grey | |
' Directory grid alternating colors | |
Const FileRow1 = "#b6cbeb" 'Dark Blue | |
Const FileRow2 = "#cadfff" 'Light Blue | |
Const FolderRow1 = "#EE933B" 'dark red | |
Const FolderRow2 = "#C78F57" 'Light light | |
' Some nice color pairs | |
'#91619b 'Dark Purple | |
'#be9cc5 'Light Purple | |
'#b6cbeb 'Dark Blue | |
'#cadfff 'Light Blue | |
'#879966 'Dark Green | |
'#c5e095 'Light Green | |
'#a7342a 'Dark Red | |
'#df867f 'Light Red | |
'#f8bc03 'Dark Yellow | |
'#f8e094 'Light Yellow | |
' ***** Begin Script | |
Dim sError | |
On Error Resume Next | |
sDirectory = trim(sDirectory) | |
If right(sDirectory,1) <> "/" Then sDirectory = sDirectory & "/" | |
' ***** Get subfolder from passed querystring | |
sDir = sDirectory & Request.querystring("dir") | |
sDir = trim(sDir) | |
If right(sDir,1) <> "/" Then sDir = sDir & "/" | |
' ***** Important! Make sure the subfolder path is in the shared folder. This keeps | |
' users from browsing directories outside of the shared. ie: dir=../ | |
' You may want to include some logging code if this happens, here we just | |
' put the user back into the default directory. | |
sFolder = Server.MapPath( sDir ) | |
sDirFolder = Server.MapPath( sDirectory ) | |
sSubFolder = right(sDir,len(sDir)-len(sDirectory)) | |
If instr( sFolder , sDirFolder ) = 0 Then | |
sFolder = sDirFolder | |
sSubFolder = "" | |
sError = sError & " Path not authorized;" | |
End If | |
' ***** Load the file system and navigate to our shared folder. | |
Set objFileObject = Server.CreateObject("Scripting.FileSystemObject") | |
Set objFolder = objFileObject.GetFolder( sFolder ) | |
' ***** Oops, missing or misspelled folder path. | |
If IsEmpty( objFolder ) Then | |
sFolder = sDirFolder | |
sSubFolder = "" | |
sDir = sDirectory | |
Set objFolder = objFileObject.GetFolder( sFolder ) | |
sError = sError & " Folder not found;" | |
End If | |
%> | |
<HTML><BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#000000" VLINK="#000000" topmargin="0" bottommargin="0" leftmargin="0" rightmargin="0"> | |
<TABLE BORDER=0 align="center" CELLPADDING=0 CELLSPACING=1 bgcolor="#f0f0f0" width="100%"> | |
<% ' ***** Feel free to edit the above table tag | |
' ***** Build path navigation | |
aNames = Split( sSubFolder , "/") | |
If bShowPath Then | |
If UBound( aNames ) > 0 Or bShowRoot Then %> | |
<TR BGCOLOR="#ffffff"> | |
<TD><%= sFont %> </font></TD> | |
<TD COLSPAN="4"><%= sFont %> | |
<B> <A HREF="<%= Request.ServerVariables("SCRIPT_NAME") %>"><%= Left(sDirectory,len(sDirectory)-1) %></A></B> | |
<% End If | |
For count = 0 to UBound( aNames ) -1 | |
aURL = aURL & aNames(count) & "/" | |
%> <%= sChevron %> <B><A HREF="<%= Request.ServerVariables("SCRIPT_NAME") %>?dir=<%= Server.URLEncode( aURL ) %>"><%= aNames(count) %></A></B><% | |
Next %></font></TD></TR><% | |
End If | |
For count = 0 to UBound( aNames ) -2 | |
aDirUp = aDirUp & aNames(count) & "/" | |
Next %> | |
<TR BGCOLOR="<%= TblHeader %>"> | |
<TD BGCOLOR="#ffffff"><A HREF="<%= Request.ServerVariables("SCRIPT_NAME") %>?dir=<%= Server.URLEncode( aDirUp ) %>"><font face="Wingdings" COLOR="<%= TblHeader %>">Ç</font></a></TD> | |
<TD><%= sColFont %> <B>Directory / Filename:</B> </FONT></TD> | |
<TD><%= sColFont %> <B>Size:</B> </FONT></TD> | |
<% | |
' ***** Iterate through the subfolders in our shared folder. | |
For Each objFile In objFolder.SubFolders | |
' ***** Alternate between these two row colors. | |
If iAlternate = 0 Then | |
response.write "<TR BGCOLOR=""" & FolderRow1 & """>" | |
iAlternate = 1 | |
Else | |
response.write "<TR BGCOLOR=""" & FolderRow2 & """>" | |
iAlternate = 0 | |
End If | |
' ***** Display folder with link to navigate | |
%> <TD align="center" BGCOLOR="<%= TblHeader %>"><font face="Wingdings" COLOR="#ffffff">0</font></TD> | |
<TD><%= sFont %> <A HREF="<%= Request.ServerVariables("SCRIPT_NAME") %>?dir=<%= Server.URLEncode( sSubFolder & objFile.Name )%>"><%= objFile.Name %></A> </font></TD> | |
<TD align="right"><%= sFont %> <%= ByteConversion( objFile.Size ) %> </font></TD> | |
</TR> | |
<% | |
' ***** Next Folder | |
NEXT | |
' ***** Iterate through the files in our shared folder / subfolder. | |
For Each objFile In objFolder.Files | |
sFileName = objFile.name | |
' ***** Only continue if it's a valid extension | |
If ( IsValidFile (sFileName) ) Then | |
' ***** Alternate between these two row colors. | |
' We'll use the same counter variable to continue alternating between | |
' the light / dark shade according to the previous folder row color. | |
If iAlternate = 0 Then | |
response.write "<TR BGCOLOR=""" & FileRow1 & """>" | |
iAlternate = 1 | |
Else | |
response.write "<TR BGCOLOR=""" & FileRow2 & """>" | |
iAlternate = 0 | |
End If | |
' ***** Display file with link to execute / dowload. | |
%> <TD align="center" BGCOLOR="<%= TblHeader %>"><font face="Wingdings" COLOR="#ffffff"><</font></TD> | |
<TD><%= sFont %> <A HREF="<%= sDir %><%= sFileName %>"><%= sFileName %></A> </font></TD> | |
<TD ALIGN=RIGHT><%= sFont %> <%= ByteConversion( objFile.Size ) %> </font></TD> | |
</TR><% | |
End If | |
' ***** Next File | |
NEXT | |
' ***** Clean up those nasty memory leaks | |
Set objFileObject = nothing | |
Set objFolder = nothing | |
' ***** Iterate through and approve extensions | |
Function IsValidFile(FileName) | |
If Not AllowExt <> "" or LCase( AllowExt ) = "all" Then | |
IsValidFile = True | |
Else | |
aAllowExt = Split( AllowExt & "," , ",") | |
IsValidFile = False | |
For iCnt = 0 to UBound( aAllowExt ) -1 | |
If right( FileName , len( FileName ) - InStrRev( FileName , "." ) ) = Trim(aAllowExt( iCnt )) Then IsValidFile = True | |
Next | |
End If | |
If DenyExt <> "" Then | |
aDenyExt = Split( DenyExt & "," , ",") | |
For iCnt = 0 to UBound( aDenyExt ) -1 | |
If right( FileName , len( FileName ) - InStrRev( FileName , "." ) ) = Trim(aDenyExt( iCnt )) Then IsValidFile = False | |
Next | |
End If | |
End Function | |
' ***** Display friendly byte size | |
Function ByteConversion(NumberOfBytes) | |
If NumberOfBytes < 1024 Then | |
sDisplayBytes = NumberOfBytes & " Bytes" | |
End If | |
If NumberOfBytes >= 1024 Then | |
sDisplayBytes = FormatNumber( NumberOfBytes / 1024, 2) & " KB" | |
End If | |
If NumberOfBytes > 1048576 Then | |
sDisplayBytes = FormatNumber( NumberOfBytes / 1048576, 2) & " MB" | |
End If | |
Response.Write sDisplayBytes | |
End Function | |
' ***** Did we encounter an Error? | |
If Err <> 0 or sError <> "" Then | |
response.write "<TR><TD bgcolor=""#ffffff"" colspan=""5""><font face=""Verdana, Arial, Helvetica"" color=""red"" size=""1"">ERROR: " & sError & space(1) & "ASP: " & Err.description & ";</font></TD></TR>" | |
End If | |
%> | |
<TR> | |
<TD align="right" bgcolor="#ffffff" colspan="5"><font face="Verdana, Arial, Helvetica" color="#BFBFBF" size="1">© 2003 shal187.wareZ</font></a></TD> | |
</TR> | |
</TABLE> | |
<script type="text/javascript"> | |
<!-- | |
document.write('<img src="/cgi-bin/axs/ax.pl?trans.gif&ref='); | |
document.write(document.referrer); | |
document.write('" height="1" width="1" alt="" />'); | |
// --> | |
</script><noscript> | |
<img src="/cgi-bin/axs/ax.pl?trans.gif" height="1" width="1" alt="" /> | |
</noscript> | |
</BODY></HTML> |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment