mirror of
https://github.com/jonbranan/globalscape.git
synced 2024-10-19 13:37:05 -05:00
160 lines
5.4 KiB
Plaintext
160 lines
5.4 KiB
Plaintext
'This script is provided AS IS. Back up Server configuration before attempting to run.
|
|
'FILENAME: VFSCheck.vbs
|
|
'DATE: 31 JAN 2012
|
|
'USE: This will list all the folders of a site and display their corresponding physical paths.
|
|
'Notes: There is some logic for error checking, but I never got it to work correctly
|
|
' There is additional logic that will delete folders from VFS if they do not have a matching Physical path.
|
|
'**** run cmd "cscript (script location)****
|
|
'Modify the section "CONSTANTS/PARAMETERS
|
|
|
|
Set SFTPServer = WScript.CreateObject("SFTPCOMInterface.CIServer")
|
|
|
|
'Get File Object
|
|
Set objFSO = CreateObject("Scripting.FileSystemObject") 'Output file Object
|
|
Set objFSO2 = CreateObject("Scripting.FileSystemObject") 'Check foler existince object
|
|
Set objFSO3 = CreateObject("Scripting.FileSystemObject") 'Error Log
|
|
|
|
'Create/overwrite log file
|
|
Set objLogFile = objFSO.CreateTextFile("virtual_folders.txt", True)
|
|
'Set objErrorLogFile = objFSO3.CreateTextFile("virtual_folders_errors.log", True)
|
|
|
|
'On Error Resume Next 'Added Error Capture instructions for some steps beyond this point.
|
|
|
|
'CONSTANTS/PARAMETERS:
|
|
txtServer = "localhost"
|
|
txtPort = "1100"
|
|
txtAdminUserName = "test"
|
|
txtPassword = "test"
|
|
txtSiteName = "MySite"
|
|
'***WARNING BACKUP CONFIG FILES BEFORE MODIFYING THE NEXT LINE!!
|
|
delFlag="False" 'Set to True to actually delete the VFS entry from EFT. ***WARNING BACKUP CONFIG FILES BEFORE DOING THIS!!
|
|
|
|
objLogFile.WriteLine("VFS Path, Physical Path, Folder Status")
|
|
'objErrorLogFile.WriteLine("Folder, Error, Hex, Source, Description")
|
|
|
|
If Not Connect(txtServer, txtPort, txtAdminUserName, txtPassword) Then
|
|
WScript.Quit(0)
|
|
End If
|
|
|
|
set Sites=SFTPServer.Sites
|
|
SitesTotal = Sites.count
|
|
For iCount=0 to Sites.count - 1
|
|
Set Site = Sites.Item(iCount)
|
|
if LCase(Trim(Site.Name)) = LCase(Trim(txtSiteName)) then
|
|
exit for
|
|
End if
|
|
Next
|
|
|
|
'The following step was used for debugging.
|
|
'Msgbox Site.GetRootFolder()
|
|
|
|
'This step kicks off the whole process. I used "" as the root since the recursion logic adds the / to the path.
|
|
GetNextFolder "", Site
|
|
|
|
WScript.Echo "Done"
|
|
|
|
SFTPServer.Close
|
|
Set SFTPServer = nothing
|
|
|
|
Function GetNextFolder (CurrFolder,objSite)
|
|
CurrFolder = CurrFolder & "/"
|
|
folderList = objSite.GetFolderList(CurrFolder)
|
|
if Err.Number <> 0 Then
|
|
objLogFile.WriteLine(CurrFolder & ", " & ", ERROR-FOLDER NOT FOUND IN VFS")
|
|
DisplayErrorInfo CurrFolder
|
|
else
|
|
arVFolders = Split(folderlist, CRLF)
|
|
recurseFlag=0
|
|
For Each fl in arVFolders
|
|
WScript.Echo "Exporting info for folder: " & CurrFolder & fl
|
|
'if the folder name has " at the end of it there are additional folders and we need to recurse to next level
|
|
if instr(fl,chr(34)) > 0 then
|
|
'strip " from the folder path
|
|
fl = Left(fl,len(fl)-1)
|
|
'set flag to recurse
|
|
recurseFlag=1
|
|
End if
|
|
'strip of the EFT Virtual informaiton
|
|
f2 = fl
|
|
fl = StripVirtualPortion(fl)
|
|
'WScript.Echo "Exporting info for folder: " & CurrFolder & fl
|
|
'Get the physical path
|
|
StrPhysical = objSite.GetPhysicalPath(CurrFolder & fl)
|
|
IF objFSO2.FolderExists(strPhysical) THEN
|
|
folderStat = "The folder exists"
|
|
ELSE
|
|
folderStat = "Sorry this folder does not exist"
|
|
'If Delete Flag is set remove VFS Entries where Physical folder does not exist
|
|
if delFlag = "True" then
|
|
objSite.RemoveFolder(CurrFolder & fl)
|
|
folderStat = folderStat & " and has been removed from VFS"
|
|
recurseFlag = 0
|
|
end if
|
|
END IF
|
|
'output infomaion to logfile
|
|
objLogFile.WriteLine(CurrFolder & fl & ", " & StrPhysical & ", " & folderStat)
|
|
'if the recurseFlag is set, call GetNextFolder again.
|
|
if recurseFlag > 0 then
|
|
GetNextFolder CurrFolder & fl,objSite
|
|
End if
|
|
Next
|
|
'if Err.Number <> 0 Then
|
|
' objLogFile.WriteLine(CurrFolder & fl & ", " & ", ERROR-FOLDER NOT FOUND IN VFS")
|
|
' DisplayErrorInfo (CurrFolder & fl)
|
|
' folderStat = "ERROR-FOLDER NOT FOUND IN VFS"
|
|
' else
|
|
' IF objFSO2.FolderExists(strPhysical) THEN
|
|
' folderStat = "The folder exists"
|
|
' ELSE
|
|
' folderStat = "Sorry this folder does not exist"
|
|
' 'If Delete Flag is set remove VFS Entries where Physical folder does not exist
|
|
' if delFlag = "True" then
|
|
' objSite.RemoveFolder(CurrFolder & fl)
|
|
' end if
|
|
' END IF
|
|
' 'output infomaion to logfile
|
|
' End IF 'error2
|
|
end if 'No Error
|
|
End Function
|
|
|
|
Function StripVirtualPortion(ByVal sPath)
|
|
|
|
Dim iPos , sVirtualFolderPath,bIsVirtual
|
|
|
|
iPos = InStr(1, sPath, " - Virtual", 1 )
|
|
If ( iPos > 0 ) Then
|
|
'WScript.Echo "-->Stripping VIRTUAL portion of folder name"
|
|
sVirtualFolderPath = sPath
|
|
sPath = Left( sPath, iPos -1 )
|
|
End If
|
|
|
|
StripVirtualPortion = sPath
|
|
End Function
|
|
|
|
|
|
Function Connect (serverOrIpAddress, port, username, password)
|
|
|
|
On Error Resume Next
|
|
Err.Clear
|
|
|
|
SFTPServer.Connect serverOrIpAddress, port, username, password
|
|
|
|
If Err.Number <> 0 Then
|
|
WScript.Echo "Error connecting to '" & serverOrIpAddress & ":" & port & "' -- " & err.Description & " [" & CStr(err.Number) & "]", vbInformation, "Error"
|
|
Connect = False
|
|
Exit Function
|
|
End If
|
|
|
|
Connect = True
|
|
End Function
|
|
|
|
Sub DisplayErrorInfo (CurrFolder)
|
|
objErrorLogFile.WriteLine(CurrFolder & ", " & Err & ", " & Hex(Err) & ", " & Err.Source & ", " & Err.Description)
|
|
WScript.Echo "Folder : " & CurrFolder
|
|
WScript.Echo "Error: : " & Err
|
|
WScript.Echo "Error (hex) : &H" & Hex(Err)
|
|
WScript.Echo "Source : " & Err.Source
|
|
WScript.Echo "Description : " & Err.Description
|
|
Err.Clear
|
|
|
|
End Sub |