%@ Language=VBScript %>
<% Option Explicit %>
<%
'-------------------------------------------------------------------------
' folders.asp: Displays the drives and folders
'
' Copyright (c) Microsoft Corporation. All rights reserved.
'
' Date Description
' 16-Jan-2001 Creation date
' 26-Mar-2001 Modified date
'-------------------------------------------------------------------------
%>
<%
'-------------------------------------------------------------------------
' Global Variables
'-------------------------------------------------------------------------
Dim rc
Dim page
Dim tableIcon
'OTS page Search variables
Dim g_iSearchCol
Dim g_sSearchColValue
'OTS page paging variables
Dim g_bPagingInitialized
Dim g_bPageChangeRequested
Dim g_sPageAction
Dim g_iPageMin
Dim g_iPageMax
Dim g_iPageCurrent
'OTS page Sort variables
Dim g_bSortRequested
Dim g_iSortCol
Dim g_sSortSequence
Dim g_bSearchChanged
Dim g_strFirstColText 'Heading for first Column
Dim g_strSecondColText 'Heading for second colum
Dim g_strThirdColText 'Heading for third column
Dim g_strFourthColText 'Heading for fourth column
Dim g_strFifthColText 'name for fifth column
'SA_Traceout
Dim SOURCE_FILE
SOURCE_FILE = SA_GetScriptFileName()
Const CONST_GOUP = "GOUP"
Const CONST_FOLDERS_PER_PAGE = 100
Const CONST_WMI_PERFORMANCE_FLAG = 48
Const CONST_SHARE_MULTIPLE = "M"
Const CONST_SHARE_SINGLE = "S"
'Holds shares web site name
CONST CONST_SHARES ="Shares"
'-------------------------------------------------------------------------
' Form Variables
'-------------------------------------------------------------------------
Dim F_parent_Folder 'Getting the Parent Folder name
Dim F_strTaskType 'Task type(Goup or open)
Dim F_strNavigation 'Navigation variable
Dim F_strParent 'Parent key for goup function
'======================================================
' Entry point
'======================================================
F_strNavigation = Request.QueryString("navigation")
g_strSecondColText = L_COLUMN_MODIFIED_TEXT
g_strThirdColText = L_COLUMN_ATTRIBUTES_TEXT
g_strFourthColText = L_COLUMN_SHARED_TEXT
g_strFifthColText = "SHARE FORMAT"
'Displays the heading for the Drives
If F_strNavigation = "" Then
L_VOLUMESON_APPLIANCE_TEXT = L_VOLUMES_ON_APPLIANCE_TEXT
g_strSecondColText = L_TOTAL_SIZE_TEXT
g_strThirdColText = L_FREE_SPACE_TEXT
'tableIcon = "images/disks_32x32.gif"
g_strFirstColText = L_COLUMN_NAME_TEXT
Else
Dim arrVarReplacementStringsFolder(1)
arrVarReplacementStringsFolder(0) = GetParentDirectory()
L_FOLDERSPATH_TEXT = SA_GetLocString("foldermsg.dll", "40430066", arrVarReplacementStringsFolder)
L_VOLUMESON_APPLIANCE_TEXT = L_FOLDERSPATH_TEXT
'tableIcon = "images/folder_32x32.gif"
g_strFirstColText = L_COLUMN_FOLDERNAME
End if
tableIcon = "images/OpenFolderX16.gif"
' Create Page
rc = SA_CreatePage( L_VOLUMESON_APPLIANCE_TEXT, tableIcon, PT_AREA, page )
' Show page
rc = SA_ShowPage( page )
'-------------------------------------------------------------------------
'Function name: OnInitPage
'Description: Called to signal first time processing for this page. Use this method
' to do first time initialization tasks.
'Input Variables: PageIn,EventArg
'Output Variables: PageIn,EventArg
'Returns: TRUE to indicate initialization was successful. FALSE to indicate
' errors. Returning FALSE will cause the page to be abandoned.
'Global Variables: Out:None
' In:None
'-------------------------------------------------------------------------
Public Function OnInitPage(ByRef PageIn, ByRef EventArg)
Dim strHost 'hold host name
Call SA_TraceOut("SOURCE_FILE", "OnInitPage")
' Initialize variables
Call InitializeVariables()
' Disable automatic output back button for Folders page
Call SA_SetPageAttribute(pageIn, AUTO_BACKBUTTON, PAGEATTR_DISABLE)
strHost = GetComputerName() 'Get the system name
'Function call to update the text file for shares default page
Call GenSharesPage(strHost , GetWebSiteID(CONST_SHARES))
End Function
'-------------------------------------------------------------------------
'Function name: OnServeAreaPage
'Description: Called when the page needs to be served. Use this method to
' serve content.
'Input Variables: PageIn,EventArg
'Output Variables: PageIn,EventArg
'Returns: TRUE to indicate not problems occured. FALSE to indicate errors.
' Returning FALSE will cause the page to be abandoned.
'Global Variables: Out:None
' In:g_bSearchChanged, g_bPagingInitialized,g_iPageCurrent,
' g_strFirstColText,g_strSecondColText,g_strThirdColText,g_strFourthColText,
' g_sSearchColValue,g_iSearchCol, g_iPageMin, g_iPageMax,
' g_iSortCol,and g_sSortSequence
'-------------------------------------------------------------------------
Public Function OnServeAreaPage(ByRef PageIn, ByRef EventArg)
Dim table
Dim iColumnName
Dim iColumnSize
Dim iColumnSpace
Dim iColumnShare
Dim strDrivesFolders
Dim arrDrives
Dim nidx
Dim nCount
Dim arrPath
Dim strTempFolder
Dim strGOUPURL
Dim strUrlBase
Dim nReturnValue
Dim arrFolders
Dim strFolderName
Dim arrFolderName
'Variables for the display of Share Type
Dim strkey
Dim sharetype
Dim strShr
Dim arrDicItems
Dim strShrTypes
Dim strShrPath
Dim objDict 'Dictionary Object
Dim arrShareTypes
Dim strParentFolder
Dim strShareFormat ' Format of the shares of a folder (Single, or multiple or none)
Dim strShareName '
Dim arrShareNames
Dim strReturnToFolders
' Initialize variables
nCount = 0
iColumnName = 1
iColumnSize = 2
iColumnSpace = 3
iColumnShare = 4
Call SA_TraceOut("SOURCE_FILE", "OnServeAreaPage")
If F_parent_Folder <> "" then
table = OTS_CreateTable("", L_DESCRIPTION_HEADING2_TEXT)
Else
table = OTS_CreateTable("", L_DESCRIPTION_HEADING1_TEXT)
End If
If ( TRUE = g_bSearchChanged ) Then
' Need to recalculate the paging range
g_bPagingInitialized = FALSE
' Restarting on page #1
g_iPageCurrent = 1
End If
' Add columns to table
nReturnValue = AddColumnsToTable(table)
if nReturnValue = false then
Call SA_ServeFailurepage(L_OTS_ADDCOLOUMNFAIL_ERRORMESSAGE)
OnServeAreaPage = false
Exit function
end if
' Get rows of data for the table
'If F_parent_Folder is Null getting Drives
if F_parent_Folder = "" Then
strDrivesFolders=GetDrives
Else
'Else Geeting the Folders
strDrivesFolders=GetFolders
End If
'----------------------------------------------------------------------
'Start displaying the Shared Type
' Taking the instance of Dictionary Object to place all shares
' in Dictionay object.
set objDict=server.CreateObject("scripting.dictionary")
' Setting the property of Dictionary object to compare the shares in
' incase sensitive
objDict.CompareMode= vbTextCompare
' Add all shares to shares table
' Gets all windows shares with name,path and description and type
call GetCifsShares(objDict)
' Gets all unix shares with name,path and type
call GetNfsshares(objDict)
' Gets all Ftp shares with name,path and type
call GetFtpShares(objDict)
' Gets all Http shares with name,path and type
call GetHttpShares(objDict)
' Gets all netware shares with name,path and type
call GetNetWareShares(objDict)
' Gets all AppleTalk shares with name,path and type
call GetAppleTalkShares(objDict)
' Displaying all shares In Object Picker Control
arrDrives = split(strDrivesFolders,chr(1))
For nidx = 0 to ubound(arrDrives) - 1
'nCount = nCount + 1
arrPath= split(arrDrives(nidx),chr(2))
strShareName = ""
if F_parent_Folder = "" Then
arrPath(1) =arrpath(1)&"\"
End If
sharetype=""
For each strkey in objDict.Keys
strShrTypes=""
strShr=split(strKey,chr(1))
arrDicItems = split(objDict.Item(strKey),chr(1))
strShrTypes = arrDicItems(1)
'Checking for isarray or not
If Isarray(strShr) Then
'checking for the existence
If Ubound(strShr)=1 Then
strShrPath = strShr(1)
End If ' end of If Ubound(strShr)=1 Then
End If ' end of If Isarray(strShr) Then
if lcase(TRIM(arrPath(1))) = lcase(TRIM(strShrPath)) then
' Build list of all share names separated by "~"
If Isarray(strShr) and UBound(strShr) >= 0 Then
strShareName = strShareName & strShr(0) & chr(126)
End if
arrShareTypes = split(strShrTypes," ")
If Isarray(arrShareTypes) Then
If Ubound(arrShareTypes) >= 0 Then
For nCount=0 to UBound(arrShareTypes)
If Instr(sharetype,arrShareTypes(nCount)) = 0 then
sharetype = sharetype & " " & arrShareTypes(nCount)
End If
Next
End If
End If
end if
Next
' Retrieve the share names from the list
arrShareNames = split(strShareName, chr(126))
If IsArray(arrShareNames) and UBound(arrShareNames) > 1 then
' The selected folder entry has multiple share names
strShareFormat = CONST_SHARE_MULTIPLE
Else
' The selected folder entry either has a single share name or
' The selected folder entry does not have any share names
strShareFormat = CONST_SHARE_SINGLE
End If
arrFolderName = replace(arrPath(1),"\","/") & chr(1)& arrPath(3)& chr(1) & sharetype
' Add rows to the table
If ( Len( g_sSearchColValue ) <= 0 ) Then
nCount=nCount+1
' Verify that the current user part of the current page
If ( IsItemOnPage(nCount, g_iPageCurrent, CONST_FOLDERS_PER_PAGE) ) Then
Call OTS_AddTableRow( table,Array(arrFolderName,arrPath(0),arrPath(2),arrPath(3), sharetype, strShareFormat))
End If
' Search criteria blank, select all rows
Else
Select Case (g_iSearchCol)
Case iColumnName
If ( InStr(1, arrPath(0), g_sSearchColValue, 1) ) Then
nCount=nCount+1
If ( IsItemOnPage(nCount, g_iPageCurrent, CONST_FOLDERS_PER_PAGE) ) Then
Call OTS_AddTableRow( table, Array(arrFolderName,arrPath(0),arrPath(2),arrPath(3), sharetype, strShareFormat))
End If
End If
Case iColumnSize
If ( InStr(1,arrPath(2), g_sSearchColValue, 1) ) Then
nCount=nCount+1
If ( IsItemOnPage(nCount, g_iPageCurrent, CONST_FOLDERS_PER_PAGE) ) Then
Call OTS_AddTableRow( table, Array(arrFolderName,arrPath(0),arrPath(2),arrPath(3), sharetype, strShareFormat))
End If
End If
Case iColumnSpace
If ( InStr(1, arrPath(3), g_sSearchColValue, 1) ) Then
nCount=nCount+1
If ( IsItemOnPage(nCount, g_iPageCurrent, CONST_FOLDERS_PER_PAGE) ) Then
Call OTS_AddTableRow( table, Array(arrFolderName,arrPath(0),arrPath(2),arrPath(3), sharetype, strShareFormat))
End If
End If
Case iColumnShare
If ( InStr(1, sharetype, g_sSearchColValue, 1) ) Then
nCount=nCount+1
If ( IsItemOnPage(nCount, g_iPageCurrent, CONST_FOLDERS_PER_PAGE) ) Then
Call OTS_AddTableRow( table, Array(arrFolderName,arrPath(0),arrPath(2),arrPath(3), sharetype, strShareFormat))
End If
End If
Case Else
nCount=nCount+1
If ( IsItemOnPage(nCount, g_iPageCurrent, CONST_FOLDERS_PER_PAGE) ) Then
Call OTS_AddTableRow( table, Array(arrFolderName,arrPath(0),arrPath(2),arrPath(3), sharetype, strShareFormat))
End If
End Select
End If
Next
' Add Tasks to the table
nReturnValue= OTS_SetTableTasksTitle(table, L_SHARETASKTITLE_TEXT)
If nReturnValue <> OTS_ERR_SUCCESS or Err.number <> 0 Then
Call SA_ServeFailurepage(L_FAILEDTOADDTASKTITLE_ERRORMESSAGE)
OnServeAreaPage = false
Exit Function
End IF
If F_parent_Folder <> "" Then
strTempFolder = UnescapeChars(F_parent_Folder)
strTempFolder = replace(strTempFolder,"\","/")
arrFolders = split(strTempFolder, "/")
If IsArray(arrFolders) then
If Ubound(arrFolders) >= 0 then
strFolderName = arrFolders(1)
End if
End if
if strFolderName = "" or strFolderName = NULL then
' Drives OTS
strGOUPURL = "folders/folders.asp?mytasks=CONST_GOUP"
else
' Folders OTS
strGOUPURL = "folders/folders.asp?mytasks=CONST_GOUP&navigation=next"
end if
call SA_MungeURL(strGOUPURL,"parent",strTempFolder)
call SA_MungeURL(strGOUPURL,"Tab1",GetTab1())
call SA_MungeURL(strGOUPURL,"Tab2",GetTab2())
'If not top level, add task for going one level up
nReturnValue = OTS_AddTableTask( table, OTS_CreateTaskEx(L_COLUMN_GOUP_TEXT, _
L_UP_ROLLOVER_TEXT, _
strGOUPURL,_
OTS_PT_AREA, _
"OTS_TaskAlways" ) )
If nReturnValue <> OTS_ERR_SUCCESS or Err.number <> 0 Then
Call SA_ServeFailurepage(L_FAILEDTOADDTASK_ERRORMESSAGE)
OnServeAreaPage = false
Exit Function
End IF
'New task
strUrlBase = "folders/folder_new.asp"
call SA_MungeURL(strUrlBase,"parent", strTempFolder)
call SA_MungeURL(strUrlBase,"Tab1",GetTab1())
call SA_MungeURL(strUrlBase,"Tab2",GetTab2())
nReturnValue = OTS_AddTableTask( table, OTS_CreateTaskEx(L_SERVEAREABUTTON_NEW_TEXT, _
L_CREATE_ROLLOVER_TEXT, _
strUrlBase,_
OTS_PT_PROPERTY, _
"OTS_TaskAlways" ) )
If nReturnValue <> OTS_ERR_SUCCESS or Err.number <> 0 Then
Call SA_ServeFailurepage(L_FAILEDTOADDTASK_ERRORMESSAGE)
OnServeAreaPage = false
Exit Function
End IF
'Delete task
strUrlBase = "folders/folder_delete.asp"
call SA_MungeURL(strUrlBase,"parent", strTempFolder)
call SA_MungeURL(strUrlBase,"Tab1",GetTab1())
call SA_MungeURL(strUrlBase,"Tab2",GetTab2())
nReturnValue = OTS_AddTableTask( table, OTS_CreateTaskEx(L_SERVEAREABUTTON_DELETE_TEXT, _
L_DELETE_ROLLOVER_TEXT, _
strUrlBase,_
OTS_PT_PROPERTY, _
"OTS_TaskAny") )
If nReturnValue <> OTS_ERR_SUCCESS or Err.number <> 0 Then
Call SA_ServeFailurepage(L_FAILEDTOADDTASK_ERRORMESSAGE)
OnServeAreaPage = false
Exit Function
End IF
'Open task
strReturnToFolders = "folders/folders.asp"
Call SA_MungeURL(strReturnToFolders, "Tab1", GetTab1())
Call SA_MungeURL(strReturnToFolders, "Tab2", GetTab2())
Call SA_MungeURL(strReturnToFolders,"parent", strTempFolder)
strUrlBase = "folders/folders.asp?navigation=next"
call SA_MungeURL(strGOUPURL,"parent", strTempFolder)
call SA_MungeURL(strUrlBase,"Tab1",GetTab1())
call SA_MungeURL(strUrlBase,"Tab2",GetTab2())
call SA_MungeURL(strUrlBase, "ReturnURL", strReturnToFolders)
nReturnValue = OTS_AddTableTask( table, OTS_CreateTaskEx(L_SERVEAREABUTTON_OPEN_TEXT, _
L_OPEN_ROLLOVER_TEXT, _
strUrlBase,_
OTS_PT_AREA, _
"OTS_TaskOne") )
If nReturnValue <> OTS_ERR_SUCCESS or Err.number <> 0 Then
Call SA_ServeFailurepage(L_FAILEDTOADDTASK_ERRORMESSAGE)
OnServeAreaPage = false
Exit Function
End IF
'Properties task
strUrlBase = "folders/folder_prop.asp"
call SA_MungeURL(strUrlBase,"parent", strTempFolder)
call SA_MungeURL(strUrlBase,"Tab1",GetTab1())
call SA_MungeURL(strUrlBase,"Tab2",GetTab2())
nReturnValue = OTS_AddTableTask( table, OTS_CreateTaskEx(L_SERVEAREABUTTON_PROPERTIES_TEXT, _
L_PROPERTIES_ROLLOVER_TEXT, _
strUrlBase,_
OTS_PT_PROPERTY, _
"OTS_TaskAny") )
If nReturnValue <> OTS_ERR_SUCCESS or Err.number <> 0 Then
Call SA_ServeFailurepage(L_FAILEDTOADDTASK_ERRORMESSAGE)
OnServeAreaPage = false
Exit Function
End IF
'Share task
strUrlBase = "folders/folder_dispatch.asp?ParentPlugin=Folders"
call SA_MungeURL(strUrlBase,"parent", strTempFolder)
call SA_MungeURL(strUrlBase,"Tab1",GetTab1())
call SA_MungeURL(strUrlBase,"Tab2",GetTab2())
nReturnValue = OTS_AddTableTask( table, OTS_CreateTaskEx(L_SHARELINK_TEXT, _
L_SHARE_ROLLOVER_TEXT, _
strUrlBase,_
OTS_PT_AREA, _
"ShareTask") )
If nReturnValue <> OTS_ERR_SUCCESS or Err.number <> 0 Then
Call SA_ServeFailurepage(L_FAILEDTOADDTASK_ERRORMESSAGE)
OnServeAreaPage = false
Exit Function
End IF
'Mulitple Share task
strUrlBase = "Shares/shares.asp?ParentPlugin=Folders"
Call SA_MungeURL(strUrlBase,"parent",strTempFolder)
Call SA_MungeURL(strUrlBase,"Tab1",GetTab1())
Call SA_MungeURL(strUrlBase,"Tab2",GetTab2())
nReturnValue = OTS_AddTableTask( table, OTS_CreateTaskEx(L_MANAGESHARES_TEXT, _
L_MANAGE_SHARES_ROLLOVER_TXT, _
strUrlBase,_
OTS_PT_AREA, _
"OTS_TaskAlways") )
If nReturnValue <> OTS_ERR_SUCCESS or Err.number <> 0 Then
Call SA_ServeFailurepage(L_FAILEDTOADDTASK_ERRORMESSAGE)
OnServeAreaPage = false
Exit Function
End IF
else
'Open task
strReturnToFolders = "folders/folders.asp"
Call SA_MungeURL(strReturnToFolders, "Tab1", GetTab1())
Call SA_MungeURL(strReturnToFolders, "Tab2", GetTab2())
Call SA_MungeURL(strReturnToFolders,"parent", strTempFolder)
strUrlBase = "folders/folders.asp?navigation=next"
call SA_MungeURL(strGOUPURL,"parent", strTempFolder)
call SA_MungeURL(strUrlBase,"Tab1",GetTab1())
call SA_MungeURL(strUrlBase,"Tab2",GetTab2())
call SA_MungeURL(strUrlBase, "ReturnURL", strReturnToFolders)
nReturnValue = OTS_AddTableTask(table, OTS_CreateTaskEx(L_SERVEAREABUTTON_OPEN_TEXT, _
L_VOLUME_OPEN_ROLLOVERTEXT_TEXT, _
strUrlBase,_
OTS_PT_AREA, _
"OTS_TaskOne") )
If nReturnValue <> OTS_ERR_SUCCESS or Err.number <> 0 Then
Call SA_ServeFailurepage(L_FAILEDTOADDTASK_ERRORMESSAGE)
OnServeAreaPage = false
Exit Function
End IF
'Share task
strUrlBase = "folders/folder_dispatch.asp?ParentPlugin=Folders"
call SA_MungeURL(strUrlBase,"parent", strTempFolder)
call SA_MungeURL(strUrlBase,"Tab1",GetTab1())
call SA_MungeURL(strUrlBase,"Tab2",GetTab2())
nReturnValue = OTS_AddTableTask( table, OTS_CreateTaskEx(L_SHARELINK_TEXT, _
L_SHARELINK_ROLLOVER_TEXT, _
strUrlBase,_
OTS_PT_AREA, _
"ShareTask") )
If nReturnValue <> OTS_ERR_SUCCESS or Err.number <> 0 Then
Call SA_ServeFailurepage(L_FAILEDTOADDTASK_ERRORMESSAGE)
OnServeAreaPage = false
Exit Function
End IF
'Mulitple Share task
strUrlBase = "Shares/shares.asp?ParentPlugin=Folders"
Call SA_MungeURL(strUrlBase,"parent",strTempFolder)
Call SA_MungeURL(strUrlBase,"Tab1",GetTab1())
Call SA_MungeURL(strUrlBase,"Tab2",GetTab2())
nReturnValue = OTS_AddTableTask( table, OTS_CreateTaskEx(L_MANAGESHARES_TEXT, _
L_MANAGE_SHARES_ROLLOVER_TXT, _
strUrlBase,_
OTS_PT_AREA, _
"OTS_TaskAlways") )
If nReturnValue <> OTS_ERR_SUCCESS or Err.number <> 0 Then
Call SA_ServeFailurepage(L_FAILEDTOADDTASK_ERRORMESSAGE)
OnServeAreaPage = false
Exit Function
End IF
End If
' Enable sorting
Call OTS_EnablePaging(table, TRUE)
If ( FALSE = g_bPagingInitialized ) Then
g_iPageMin = 1
g_iPageMax = Int(nCount / CONST_FOLDERS_PER_PAGE )
If ( (nCount MOD CONST_FOLDERS_PER_PAGE) > 0 ) Then
g_iPageMax = g_iPageMax + 1
End If
g_iPageCurrent = 1
Call OTS_SetPagingRange(table, g_iPageMin, g_iPageMax, g_iPageCurrent)
End If
Call OTS_SortTable(table, g_iSortCol, g_sSortSequence, SA_RESERVED)
Call OTS_SetTableMultiSelection(table, true)
' Send table to the response stream
'
Call OTS_ServeTable(table)
' Required to retain the share format of the folder selected in the OTS
Response.Write("")
'custom task function to decide whether to disable the share task or not
Dim rows
Dim tasks
rows = ""
Call OTS_GetTableRows(Table, rows)
Call OTS_GetTableTasks(Table, tasks)
Call ServeCustomTaskFunction(tasks, rows)
Set objDict = Nothing
OnServeAreaPage = TRUE
End Function
'-------------------------------------------------------------------------
'Function name: OnSearchNotify()
'Description: Search notification event handler. When one or more columns are
' marked with the OTS_COL_SEARCH flag, the Web Framework fires
' this event in the following scenarios:
' 1) The user presses the search Go button.
' 2) The user requests a table column sort
' 3) The user presses either the page next or page previous buttons
'
' The EventArg indicates the source of this notification event which can
' be either a search change event (scenario 1) or a post back event
' (scenarios 2 or 3)
'
'Input Variables: PageIn,EventArg,sItem,sValue
'Output Variables: PageIn,EventArg,sItem,sValue
'Returns: Always returns TRUE
'Global Variables: Out:g_bSearchChanged,g_iSearchCol,g_sSearchColValue
' In:None
'-------------------------------------------------------------------------
Public Function OnSearchNotify(ByRef PageIn, _
ByRef EventArg, _
ByRef sItem, _
ByRef sValue )
OnSearchNotify = TRUE
Call SA_TraceOut("SOURCE_FILE", "OnSearchNotify() Change Event Fired sItem :" & sItem)
' User pressed the search GO button
'
If SA_IsChangeEvent(EventArg) Then
Call SA_TraceOut("SOURCE_FILE", "OnSearchNotify() Change Event Fired")
g_bSearchChanged = TRUE
g_iSearchCol = Int(sItem)
g_sSearchColValue = CStr(sValue)
'
' User clicked a column sort, OR clicked either the page next or page prev button
ElseIf SA_IsPostBackEvent(EventArg) Then
Call SA_TraceOut("SOURCE_FILE", "OnSearchNotify() Postback Event Fired")
g_bSearchChanged = FALSE
g_iSearchCol = Int(sItem)
g_sSearchColValue = CStr(sValue)
'
' Unknown event source
Else
Call SA_TraceOut("SOURCE_FILE", "Unrecognized Event in OnSearchNotify()")
End IF
End Function
'-------------------------------------------------------------------------
'Function name: OnPagingNotify()
'Description: Paging notification event handler. This event is triggered in one of
' the following scenarios:
'
' 1) The user presses either the page next or page previous buttons
' 2) The user presses the search Go button.
' 3) The user requests a table column sort
'
' The EventArg indicates the source of this notification event which can
' be either a paging change event (scenario 1) or a post back event
' (scenarios 2 or 3)
'
' The iPageCurrent argument indicates which page the user has requested.
' This is an integer value between iPageMin and iPageMax.
'
'
'Input Variables: PageIn,EventArg,sPageAction,iPageMin,iPageMax,iPageCurrent
'Output Variables: PageIn,EventArg,sPageAction,iPageMin,iPageMax,iPageCurrent
'Returns: Always returns TRUE
'Global Variables: Out:g_bPageChangeRequested,g_sPageAction,g_iPageMin,g_iPageMax
' g_iPageCurrent
' In:None
'-------------------------------------------------------------------------
Public Function OnPagingNotify(ByRef PageIn, _
ByRef EventArg, _
ByVal sPageAction, _
ByVal iPageMin, _
ByVal iPageMax, _
ByVal iPageCurrent )
OnPagingNotify = TRUE
g_bPagingInitialized = TRUE
Call SA_TraceOut("SOURCE_FILE:", "OnPagingNotify() Change Event FiredCurrentPage:" & iPageCurrent)
' User pressed either page next or page previous
If SA_IsChangeEvent(EventArg) Then
Call SA_TraceOut("SOURCE_FILE", "OnPagingNotify() Change Event Fired")
g_bPageChangeRequested = TRUE
g_sPageAction = CStr(sPageAction)
g_iPageMin = iPageMin
g_iPageMax = iPageMax
g_iPageCurrent = iPageCurrent
' User clicked a column sort OR the search GO button
ElseIf SA_IsPostBackEvent(EventArg) Then
Call SA_TraceOut("SOURCE_FILE", "OnPagingNotify() Postback Event Fired")
g_bPageChangeRequested = FALSE
g_sPageAction = CStr(sPageAction)
g_iPageMin = iPageMin
g_iPageMax = iPageMax
g_iPageCurrent = iPageCurrent
' Unknown event source
Else
Call SA_TraceOut("SOURCE_FILE", "Unrecognized Event in OnPagingNotify()")
End IF
End Function
'-------------------------------------------------------------------------
'Function name: OnSortNotify()
'Description: Sorting notification event handler. This event is triggered in one of
' the following scenarios:
'
' 1) The user presses the search Go button.
' 2) The user presses either the page next or page previous buttons
' 3) The user requests a table column sort
'
' The EventArg indicates the source of this notification event which can
' be either a sorting change event (scenario 1) or a post back event
' (scenarios 2 or 3)
'
' The sortCol argument indicated which column the user would like to sort
' and the sortSeq argument indicates the desired sort sequence which can
' be either ascending or descending.
'Input Variables: PageIn,EventArg,sortCol,sortSeq
'Output Variables: PageIn,EventArg,sortCol,sortSeq
'Returns: Always returns TRUE
'Global Variables: Out:g_bSearchChanged,g_iSortCol,g_sSortSequence
' In:None
'-------------------------------------------------------------------------
Public Function OnSortNotify(ByRef PageIn, _
ByRef EventArg, _
ByVal sortCol, _
ByVal sortSeq )
OnSortNotify = TRUE
' User pressed column sort
If SA_IsChangeEvent(EventArg) Then
Call SA_TraceOut("SOURCE_FILE", "OnSortNotify() Change Event Fired")
g_bSearchChanged=TRUE
g_iSortCol = Int(sortCol)
g_sSortSequence = sortSeq
' User presed the search GO button OR clicked either the page next or page prev button
ElseIf SA_IsPostBackEvent(EventArg) Then
Call SA_TraceOut("SOURCE_FILE", "OnSortNotify() Postback Event Fired")
g_iSortCol = sortCol
g_sSortSequence = sortSeq
g_bSortRequested = TRUE
' Unknown event source
Else
Call SA_TraceOut("SOURCE_FILE", "Unrecognized Event in OnSearchNotify()")
End IF
Call SA_TraceOut(SOURCE_FILE, "Sort col: " + CStr(sortCol) + " sequence: " + sortSeq)
End Function
'-------------------------------------------------------------------------
' Function name: AddColumnsToTable()
' Description: Add columns to table
' Input Variables: table object
' Output Variables: None
' Return Values: True/False
' Global Variables: g_(*), L_(*)
'-------------------------------------------------------------------------
Function AddColumnsToTable(table)
on error resume next
Err.Clear
Dim colFlags
Dim nReturnValue
AddColumnsToTable = false
colFlags = (OTS_COL_HIDDEN OR OTS_COL_KEY)
nReturnValue = OTS_AddTableColumn(table, OTS_CreateColumn( L_COLUMN_NAME_TEXT, "left", colFlags ))
If nReturnValue <> OTS_ERR_SUCCESS or Err.number <> 0 Then
Exit Function
End IF
'Name column
colFlags = (OTS_COL_SORT OR OTS_COL_SEARCH)
nReturnValue= OTS_AddTableColumn(table, OTS_CreateColumnEx( g_strFirstColText, "left", colFlags, 22 ))
If nReturnValue <> OTS_ERR_SUCCESS or Err.number <> 0 Then
Exit Function
End IF
'Size/Modified column
iColumnSize = 2
colFlags = (OTS_COL_SORT OR OTS_COL_SEARCH)
nReturnValue= OTS_AddTableColumn(table, OTS_CreateColumnEx(g_strSecondColText, "left", colFlags, 16 ))
If nReturnValue <> OTS_ERR_SUCCESS or Err.number <> 0 Then
Exit Function
End IF
'Space/Attribute column
iColumnSpace = 3
colFlags = (OTS_COL_SORT OR OTS_COL_SEARCH)
nReturnValue= OTS_AddTableColumn(table, OTS_CreateColumnEx(g_strThirdColText, "left", colFlags, 12 ))
If nReturnValue <> OTS_ERR_SUCCESS or Err.number <> 0 Then
Exit Function
End IF
'Shared column
iColumnShare = 4
colFlags = (OTS_COL_SEARCH)
nReturnValue= OTS_AddTableColumn(table, OTS_CreateColumnEx(g_strFourthColText, "left", colFlags, 12))
If nReturnValue <> OTS_ERR_SUCCESS or Err.number <> 0 Then
Exit Function
End IF
'Shared column format
colFlags = OTS_COL_HIDDEN
nReturnValue= OTS_AddTableColumn(table, OTS_CreateColumnEx(g_strFifthColText, "left", colFlags, 6))
If nReturnValue <> OTS_ERR_SUCCESS or Err.number <> 0 Then
Exit Function
End IF
AddColumnsToTable = true
End Function
'-------------------------------------------------------------------------
' Function name: GoUpInit()
' Description: Initializes the F_parent_Folder
' Input Variables: None
' Output Variables: None
' Return Values: None
' Global Variables: Out:F_parent_Folder
' In: L_FILESYSTEMOBJECTNOTCREATED_ERRORMESSAGE
'-------------------------------------------------------------------------
Function GoUpInit()
On Error Resume Next
Err.Clear
Dim objFolder
Set objFolder = Server.CreateObject("Scripting.FileSystemObject")
If Err.number <> 0 Then
Call SA_ServeFailurepage(L_FILESYSTEMOBJECTNOTCREATED_ERRORMESSAGE & "(" & Hex(Err.Number) & ")" )
End If
F_strParent = UnescapeChars(F_strParent)
F_strParent=replace(F_strParent,"/","\")
F_parent_Folder = F_strParent
'If the drive with ":" then add "\"
If Right(Trim(F_parent_Folder),1) = ":" Then
F_parent_Folder = F_parent_Folder & "\"
End if
'Getting the parent folder
F_parent_Folder = objFolder.GetParentFolderName(F_parent_Folder)
Set objFolder=Nothing
End Function
'-------------------------------------------------------------------------
' Function name: GetDrives
' Description: Gets All Drives from input the system
' Input Variables: WMI Folder ClassName
' Output Variables: None
' Return Values: Returns string with all Drives
' Global Variables: Out:None
' In: L_WMICONNECTIONFAILED_ERRORMESSAGE
' L_DISKCOLLECTION_ERRORMESSAGE
'-------------------------------------------------------------------------
Function GetDrives
On Error Resume Next
Err.Clear
Dim objService 'Service object
Dim objDriveCollection 'Drives collection
Dim objInstance 'Instances
Dim strLogicalDisks 'String holding all Drive letters
Dim strVolName 'Volume name
Dim L_LOCAL_DISK_TEXT
Dim arrVolname(1)
Dim strVol(1)
Dim strQuery
strLogicalDisks = ""
Set objService = GetWMIConnection(CONST_WMI_WIN32_NAMESPACE)
Set objDriveCollection = objService.InstancesOf("Win32_LogicalDisk", CONST_WMI_PERFORMANCE_FLAG)
If Err.Number <> 0 then
Call SA_ServeFailurepage(L_DISKCOLLECTION_ERRORMESSAGE & " (" & Hex(Err.Number) & ")")
End if
For Each objInstance in objDriveCollection
If objInstance.DriveType = 3 then
strVolName = objInstance.VolumeName
strVol(0) = Cstr(objInstance.DeviceId)
if strVolName = "" then
L_LOCAL_DISK_TEXT = SA_GetLocString("foldermsg.dll", "40430049", strVol)
strVolName = L_LOCAL_DISK_TEXT
else
strVolName = strVolName & " (" & objInstance.DeviceId & ")"
end if
strLogicalDisks = strLogicalDisks & strVolName & chr(2) & objInstance.DeviceId & chr(2) & _
GEtUNITS(objInstance.size,ConvertToUNITS(objInstance.size)) & chr(2) & _
GEtUNITS(objInstance.freespace,ConvertToUNITS(objInstance.freespace)) & chr(1)
End if
Next
GetDrives = strLogicalDisks
Set objService = Nothing
Set objDriveCollection = Nothing
Set objInstance = Nothing
End Function
'-------------------------------------------------------------------------
' Function name: GetFolders
' Description: Gets the Folders
' Input Variables: None
' Output Variables: None
' Return Values: Returns string with all Folders
' Global Variables: Out: F_parent_Folder
' In:L_FILESYSTEMOBJECTNOTCREATED_ERRORMESSAGE
' Out:F_parent_Folder
'-------------------------------------------------------------------------
Function GetFolders
On Error Resume Next
Err.Clear
Dim objFolder
Set objFolder = Server.CreateObject("Scripting.FileSystemObject")
If Err.number <> 0 Then
Call SA_ServeFailurepage( L_FILESYSTEMOBJECTNOTCREATED_ERRORMESSAGE & "(" & Hex(Err.Number) & ")" )
Exit Function
End If
If Right(Trim(F_parent_Folder),1) = ":" Then 'If the drive with ":" then add "\"
F_parent_Folder = F_parent_Folder & "\"
End if
GetFolders = SubFolds(objFolder) 'Getting the Subfolders
Set objFolder = Nothing
End Function
'-------------------------------------------------------------------------
' Function name: SubFolds
' Description: Gets the Folders and Sub Folders
' Input Variables: None
' Output Variables: None
' Return Values: Returns string with all sub Folders
' Global Variables: Out: F_parent_Folder
' In:L_FAILEDTOGETTHEFOLDER_ERRORMESSAGE
' In:L_FAILEDTOGETTHESUBFOLDER_ERRORMESSAGE
'-------------------------------------------------------------------------
Function SubFolds(objFolder)
On Error Resume Next
Err.Clear
Dim objSubFolder 'Object Sub Folder
Dim objFolders
Dim objSubFold 'Sub Folders
Dim strFolder 'Folders string
Dim strFoldType
strFolder = ""
Set objFolders = objFolder.GetFolder(F_parent_Folder) 'Getting the Folder
If Err.number <> 0 Then
SetErrMsg L_FAILEDTOGETTHEFOLDER_ERRORMESSAGE & "(" & Hex(Err.Number) & ")"
SubFolds = ""
Exit Function
End If
Set objSubFolder=objFolders.SubFolders 'Getting the Sub Folders
For Each objSubFold in objSubFolder
strFoldType=""
'Read only
If (objSubFold.Attributes and 1)=1 Then
strFoldType="R" & strFoldType
End If
'Hidden
If (objSubFold.Attributes and 2)=2 Then
strFoldType="H" & strFoldType
End If
'System folder
If (objSubFold.Attributes and 4)=4 Then
strFoldType="S" & strFoldType
End If
'Compressed
If (objSubFold.Attributes and 2048)=2048 Then
strFoldType="C" & strFoldType
End If
If (objSubFold.Attributes and 32)=32 Then
strFoldType="A" & strFoldType
End If
strFolder=strFolder&objSubFold.Name&chr(2)&objSubFold.path&chr(2)&objSubFold.DateLastModified&chr(2)&strFoldType&chr(1)
Next
SubFolds=strFolder
Set objSubFolder = Nothing
Set objFolders = Nothing
Set objSubFold = Nothing
End Function
'-------------------------------------------------------------------------
' Function name: ConvertToUNITS
' Description: serves in Converting the bytes in to KBs
' Input Variables: nSize
' Output Variables: None
' Return Values: ConvertToUNITS
' Global Variables: Out: None
' In:none
'-------------------------------------------------------------------------
Function ConvertToUNITS(nSize)
On Error Resume Next
Err.Clear
Dim nCount
Dim nTmp
'checking for the null or string value
If nSize="" OR Not Isnumeric(nSize) Then
nSize=0 'Initialize the value
End If
nTmp = nSize/1024
if clng(nTmp) > 1024 then
nCount = 1 + ConvertToUNITS(nTmp)
end if
ConvertToUNITS = nCount
End Function
'-------------------------------------------------------------------------
' Function name: GetUNITS
' Description: serves in Converting the bytes in to KB,MB,GB..
' Input Variables: None
' Output Variables: nSize,nCount
' Return Values: GetUNITS
' Global Variables: Out:None
' In:none
'-------------------------------------------------------------------------
Function GetUNITS(nSize,nCount)
On Error Resume Next
Err.Clear
Dim nTmp
Select case nCount
case 1:
nTmp = nSize/1024
if nTmp > 999 then
GetUNITS = formatNumber1(nTmp/1024) & " "+L_MB_TEXT
else
GetUNITS = formatNumber1(nTmp) & " "+L_KB_TEXT
end if
case 2:
nTmp = nSize/(1024*1024)
if nTmp > 999 then
GetUNITS = formatNumber1(nTmp/1024) & " " + L_GB_TEXT
else
GetUNITS = formatNumber1(nTmp) & " "+L_MB_TEXT
end if
case 3:
nTmp = nSize/(1024*1024*1024)
if nTmp > 999 then
GetUNITS = formatNumber1(nTmp/1024) & " "+L_TB_TEXT
else
GetUNITS = formatNumber1(nTmp) & " "+L_GB_TEXT
end if
case 4:
nTmp = nSize/(1024*1024*1024*1024)
GetUNITS = formatNumber1(nTmp) &" "+L_TB_TEXT
case else
Call SA_TraceOut(SA_GetScriptFileName(), "ISSUE: Folders.asp::GetUNITS() called with unexpected nCount parameter: " + CStr(nCount))
End select
end Function
'-------------------------------------------------------------------------
' Function name: formatNumber1
' Description: serves in formating the numbers
' Input Variables: nTmp
' Output Variables: none
' Return Values: formatNumber1
' Global Variables: Out: none
' In:none
'-------------------------------------------------------------------------
Function formatNumber1(nTmp)
On Error Resume Next
Err.Clear
Dim strTemp
strTemp = cstr(nTmp)
if instr(strTemp,".") > 3 then
strTemp = Left(strTemp,3)
else
strTemp = Left(strTemp,4)
end if
formatNumber1 = strTemp
End Function
'-------------------------------------------------------------------------
' Function name: IsItemOnPage
' Description: Help to determine whether a particular row belongs the particular page or not
' Input Variables: iCurrentItem,iCurrentPage, iItemsPerPage
' Output Variables: none
' Return Values: True/False
' Global Variables: Out: none
' In:none
'-------------------------------------------------------------------------
Private Function IsItemOnPage(ByVal iCurrentItem, iCurrentPage, iItemsPerPage)
Dim iLowerLimit
Dim iUpperLimit
iLowerLimit = ((iCurrentPage - 1) * iItemsPerPage )
iUpperLimit = iLowerLimit + iItemsPerPage + 1
If ( iCurrentItem > iLowerLimit AND iCurrentItem < iUpperLimit ) Then
IsItemOnPage = TRUE
Else
IsItemOnPage = FALSE
End If
End Function
'-------------------------------------------------------------------------
' Function name: InitializeVariables()
' Description: This is to initialize the variables
' Input Variables: None
' Output Variables: none
' Return Values: True/False
' Global Variables: Out: g_iPageCurrent,g_iSortCol,g_sSortSequence,F_parent_Folder
' F_strTaskType,F_strParent
' In:none
'-------------------------------------------------------------------------
Sub InitializeVariables()
Err.Clear
On error resume next
Dim intIndex
Dim itemKey
Dim arrPKey
g_iPageCurrent = 1
g_iSortCol = 1
g_sSortSequence = "A"
F_parent_Folder = ""
F_strTaskType = Request.QueryString("mytasks")
F_strParent = UnescapeChars(Request.QueryString("parent"))
If F_strNavigation <> "" then
If ( OTS_GetTableSelection("SA_DEFAULT", 1, itemKey) ) Then
arrPKey = split(itemKey, chr(1))
F_parent_Folder = UnescapeChars(arrPKey(0))
End If
End if
F_parent_Folder = replace(UnescapeChars(F_parent_Folder),"/","\")
Call SA_TraceOut("FOLDERS", "ParentAfterInit:" + F_parent_Folder)
IF F_strTaskType = "CONST_GOUP" Then
'initializes the correct value to F_parent_Folder
Call GoUpInit()
End If
End Sub
'-------------------------------------------------------------------------
' Function name: GetParentDirectory
' Description: Gets the parent dir to show in the title
' Input Variables: None
' Output Variables: None
' Return Values: Parent directory
' Global Variables: None
'-------------------------------------------------------------------------
Function GetParentDirectory
Dim strParent
Dim arrPKEY
Dim itemKey
strParent = ""
Call SA_StoreTableParameters()
If ( OTS_GetTableSelection("SA_DEFAULT", 1, itemKey) ) Then
arrPKey = split(itemKey, chr(1))
strParent = UnescapeChars(arrPKey(0))
End If
strParent = replace(UnescapeChars(strParent),"/","\")
Call SA_TraceOut("FOLDERS", "MyTask:" + Request.QueryString("mytasks"))
Call SA_TraceOut("FOLDERS", "ParentBeforeInit:" + strParent)
Call SA_TraceOut("FOLDERS", "Parent2:" + Request.QueryString("parent"))
if (Request.QueryString("mytasks") = "CONST_GOUP") then
Dim objFolder
Set objFolder = Server.CreateObject("Scripting.FileSystemObject")
If Err.number <> 0 Then
Call SA_ServeFailurepage(L_FILESYSTEMOBJECTNOTCREATED_ERRORMESSAGE & "(" & Hex(Err.Number) & ")" )
End If
strParent = UnescapeChars(Request.QueryString("parent"))
strParent = UnescapeChars(strParent)
strParent=replace(strParent,"/","\")
'If the drive with ":" then add "\"
If Right(Trim(strParent),1) = ":" Then
strParent = strParent & "\"
End if
'Getting the parent folder
strParent = objFolder.GetParentFolderName(strParent)
Set objFolder=Nothing
end if
GetParentDirectory = strParent
End Function
'---------------------------------------------------------------------
' Function: ServeCustomTaskFunction()
'
' Synopsis: Demonstrate how to emit client-side javascript code to dynamically
' enable OTS tasks.
'
' Arguments: [in] aTasks - Array of tasks added to the OTS table
' [in] aItems - Array of items added to the OTS table
'
' Returns: Nothing
'
'---------------------------------------------------------------------
Private Function ServeCustomTaskFunction(ByRef aTasks, ByRef aItems)
Call SA_TraceOut(SOURCE_FILE, "ServeCustomTaskFunction")
%>
<%
End Function
'-------------------------------------------------------------------------
' Function name: GenSharesPage
' Description: lists all shares
' Input Variables: strHostName -hostname
' strSharesSiteID -website ID
' Output Variables: None
' Returns:
' Global Variables:
'
'-------------------------------------------------------------------------
Sub GenSharesPage(strHostName,strSharesSiteID)
Err.Clear
On Error Resume Next
Dim strSharesFolder
Dim oFileSystemObject
Dim oSharesListFile
Set oFileSystemObject = Server.CreateObject("Scripting.FileSystemObject")
'strSharesFolder = oFileSystemObject.GetSpecialFolder(0).Drive & "\inetpub\shares"
strSharesFolder = GetSharesFolder()
Set oSharesListFile = oFileSystemObject.CreateTextFile( strSharesFolder + "\SharesList.txt", True, True)
Dim oWebVirtDir
Dim oWebRoot
Dim index
Dim urlAdmin, i, urlHTTPSAdmin
Dim nNumSites
nNumSites = 1000
Dim arrVroots()
ReDim arrVroots(nNumSites, 1 )
Set oWebRoot = GetObject( "IIS://" & strHostName & "/" & strSharesSiteID & "/root")
if (Err.Number) then
Call SA_TraceOut(SOURCE_FILE, "GenSharesPage:GetObject Failed with Error:"+Hex(Err.Number))
exit sub
end if
index = -1
For Each oWebVirtDir in oWebRoot
index = index + 1
if (index > nNumSites) then
Call SA_TraceOut(SOURCE_FILE, "GenSharesPage:Num Shares:"+nNumSites)
nNumSites = nNumSites + 1000
ReDim Preserve arrVroots(nNumSites, 1 )
end if
arrVroots( index, 0 ) = oWebVirtDir.Name
Next
Call SAQuickSort( arrVroots, 0, index, 1, 0 )
For i = 0 To index
oSharesListFile.Writeline(arrVroots( i, 0 ))
Next
oSharesListFile.Close
End Sub
'-------------------------------------------------------------------------
' Function name: GetWebSiteID
' Description: Get web site name
' Input Variables: strWebSiteNamee
' Output Variables: None
' Returns: website name
' Global Variables: IN:G_objHTTPService
'-------------------------------------------------------------------------
Function GetWebSiteID( strWebSiteName )
On Error Resume Next
Err.Clear
Dim strWMIpath 'hold query string for WMI
Dim objSiteCollection 'hold Sites collection
Dim objSite 'hold Site instance
'Build the query for WMI
strWMIpath = "select * from " & GetIISWMIProviderClassName("IIs_WebServerSetting") & " where servercomment =" & chr(34) & strWebSiteName & chr(34)
Set objSiteCollection = G_objHTTPService.ExecQuery(strWMIpath)
for each objSite in objSiteCollection
GetWebSiteID = objSite.Name
Exit For
Next
'Destroying dynamically created object
Set objSiteCollection = Nothing
End Function
%>