windows-nt/Source/XPSP1/NT/inetsrv/iis/img/htmla/iicache.asp
2020-09-26 16:20:57 +08:00

249 lines
5.7 KiB
Plaintext

<%@ LANGUAGE = VBScript %>
<% 'Option Explicit %>
<!-- #include file="directives.inc" -->
<!--#include file="iicache.str"-->
<!--#include file="iiaspstr.inc"-->
<%
'Call this page with a query string of ?sname=machinename
'example: http://larad01/iis/iicnct.asp?sname=larad01
On Error Resume Next
Dim path, sname, scripttimeout, FileSystem, quote, errd, currentADsObj, lastobj
Dim newid, topid, firstid, currentid, numNewItems
'This script can take a _long_ time to execute,
'as we may be dealing with thousands of items
'to add to our JScript object.
'save our current script timeout value & set to a much longer value...
scripttimeout = Server.ScriptTimeOut
Server.ScriptTimeOut = 2000
Set FileSystem=CreateObject("Scripting.FileSystemObject")
path=Request.QueryString("sname")
quote=chr(34)
errd=False
if (len(path) <> 0) then
Set currentADsObj=GetObject(path)
if err <> 0 then
errd=True
end if
end if
lastobj = ""
%>
<HTML>
<HEAD>
<SCRIPT LANGUAGE="JavaScript">
var theList=top.title.nodeList;
<%
if errd=0 then
newid=Request.QueryString("Nextid")
firstid=newid
if firstid="" then
firstid=0
end if
currentid=Request.QueryString("currentid")
if currentid="" then
currentid=firstid
newid=newid + 1
end if
numNewItems=0
if (len(path) <> 0) then
%>theList[<%= currentid %>].isCached=true;<%
%>theList[<%= currentid %>].open=true;<%
addObject currentADsObj,currentid,"vdir"
if Instr(currentADsObj.KeyType, "VirtualDir") <> 0 then
addDirs currentADsObj.Path, currentADsObj.ADsPath, currentid, "dir"
end if
end if
Server.ScriptTimeOut = scripttimeout
end if
Sub addObject(Container, parentid, vtype)
On Error Resume Next
Dim thisname, isApp, thisid, thisstate
Dim approot, thisroot
if err.number <> 0 then
errd = true
else
For Each Child In Container
if Instr(Child.KeyType, "VirtualDir") <> 0 then
thisid=newid
thisname=Child.Name
thisstate=2
isApp = False
approot=LCase(Child.AppRoot)
if len(approot) <> 0 then
thisroot = LCase(Child.ADsPath)
approot = Mid(approot,Instr(approot,"w3svc/")+1)
thisroot = Mid(thisroot,Instr(thisroot,"w3svc/")+1)
if Right(approot,1) = "/" then
thisroot = thisroot & "/"
end if
if thisroot=approot then
isApp = True
end if
end if
if UCase(thisname) <> "ROOT" then
SetJscriptObj thisname, Child.ADsPath, parentid, vtype, thisstate, Child.Path, isApp
numNewItems=numNewItems + 1
addObject Child, thisid, "vdir"
addDirs Child.Path, Child.ADsPath, thisid, "dir"
else
addObject Child, parentid, "vdir"
addDirs Child.Path, Child.ADsPath, parentid, "dir"
end if
end if
Next
end if
End Sub
Sub addDirs(path, adspath, parentid, vtype)
Dim thisid, thisname, thisstate, thisadspath, i, f
if Instr(UCase(adspath),"W3SVC") <> 0 then
if path <> "" then
if Left(path,2) <> "\\" then
if FileSystem.FolderExists(path) then
Set f=FileSystem.GetFolder(path)
For Each i In f.SubFolders
thisid=newid
thisstate=2
thisadspath = adspath & "/" & i.Name
SetJscriptObj i.Name,thisadspath, parentid, vtype, thisstate,i,False
numNewItems=numNewItems + 1
if err=0 then
addDirs i, thisadspath, thisid, "dir"
end if
Next
end if
end if
end if
end if
End Sub
Sub SetJscriptObj(caption, path, parentid,vtype,state, fspath,isApp)
%>
theList[<%= newid %>]=theList[<%= parentid %>].addNode(new top.title.listObj(<%= newid %>,"<%= sJSLiteral(caption) %>","<%= sJSLiteral(path) %>","<%= vtype %>",<%= state %>));
theList[<%= parentid %>].isCached=true;
theList[<%= newid %>].isCached=true;
<% if isApp then %>
theList[<%= newid %>].icon = top.title.Global.imagedir + "app";
theList[<%= newid %>].isApp = true;
<% end if %>
theList[<%= newid %>].fspath="<%= replace(fspath,"\","\\") %>";
<%
newid=newid + 1
End Sub
' we need to insert the whole group into the correct place In the array.
' since we Set the first entry (machine) to the exisitng place In the array,
' the Next level In the hierarchy (vservers) will be pointing to the correct
' parent ids. However, the following level (vdirs, and below) will be pointing
' to the parent ids as they existed at the bottom of the array, before the
' move, and will need to be adjusted.
%>
<% if errd=0 then %>
gVars=top.title.Global;
var item=<%= firstid %>;
currentid=<%= currentid %>;
if (currentid !=item){
x=currentid + 1;
//correct the id on the "new" objects
for (var i=item; i < theList.length; i++) {
theList[i].id=x;
if (theList[i].parent !=currentid){
theList[i].parent=theList[i].parent - (item - (currentid + 1));
}
x++;
}
//move the following records "down" the array
for (var i=currentid + 1; i < item;i++){
theList[i].id=theList[i].id + <%= numNewItems %>;
if (theList[i].parent >currentid){
theList[i].parent=theList[i].parent + <%= numNewItems %>;
}
}
}
//and re-sort.
theList[0].sortList();
theList[0].markTerms();
if (theList.length==1){
gVars.selId=0;
theList[0].selected=true;
}
else{
theList[gVars.selId].selected=false;
gVars.selId=<%= currentid %>;
theList[<%= currentid %>].selected=true;
}
top.body.list.location.href="iisrvls.asp"
<% else %>
alert("<%= L_CNCTERR_TEXT %> (<%= err %>)");
<% end if %>
top.body.iisstatus.location="iistat.asp"
</SCRIPT>
<% if err <> 0 then %>
<% Response.write "err: " & err.description %><BR>
<% Response.write "currentcontainer: " & currentADsObj.ADsPath %><BR>
<% Response.write " " & currentADsObj.KeyType %><BR>
<% Response.write "Err Container:" & lastobj %><BR>
<% end if %>
</HEAD>
<BODY>
</BODY>
</HTML>