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

127 lines
3 KiB
Plaintext

<%@ LANGUAGE = VBScript %>
<% Option Explicit %>
<!-- #include file="directives.inc" -->
<%
' Script to clone settings from one node to another.
' Assumes nodes are the same type.
' If a site is cloned, only the Site type properties will be cloned.
' The Root node should be cloned separately, for maximum flexibility in the script.
' Parameters:
' sFromNode - ADSpath of the node to clone settings from
' sToNode - ADSpath of the node to clone settings to
' aProperties - A string array containing property names indicating settings to clone
'
' Notes: some properties will not work generically, and must be special cased.
' currently, this works for single valued properties only.
Dim SpecProps
SpecProps = "GRANTBYDEFAULT"
Dim sFromNode, sToNode
Dim oFromNode, oToNode
Dim aProperties
Dim props, sProp
Dim bWroteData
sFromNode = Request("sFromNode")
sToNode = Request("sToNode")
'#IFDEF _DEBUG
Response.write Request.Querystring()& "<BR>"
Response.write "From Node:" & sFromNode & "<BR>"
Response.write "To Node:" & sToNode & "<BR>"
'#ENDDEF _DEBUG
props = Request("prop")
aProperties = split(props,",")
Set oFromNode=GetObject(sFromNode)
Set oToNode=GetObject(sToNode)
'#IFDEF _DEBUG
Response.write oToNode.ADsPath & "<BR>"
Response.write oFromNode.ADsPath & "<BR>"
For each sProp in aProperties
sProp = trim(sProp)
Response.write sProp & "<BR>"
Response.write "To Node Start Val" &oToNode.Get(sProp) & "<BR>"
Response.write "From Node Start Val" & oFromNode.Get(sProp) & "<BR>"
Next
Response.write "<P>"
'#ENDDEF _DEBUG
For each sProp in aProperties
sProp = trim(sProp)
bWroteData = writeProp(oToNode, sProp, oFromNode.Get(sProp))
'#IFDEF _DEBUG
if not bWroteData then
Response.write sProp & "<BR>"
Response.write "Old To Node" &oToNode.Get(sProp) & "<BR>"
Response.write "Old From Node" & oFromNode.Get(sProp) & "<BR>"
end if
Response.write "<P>"
'#ENDDEF _DEBUG
Next
'#IFDEF _DEBUG
Response.write "Error:" & err & "<BR>"
'#ENDDEF_DEBUG
oToNode.SetInfo
'#IFDEF _DEBUG
Response.write "Error:" & err & "<BR>"
For each sProp in aProperties
sProp = trim(sProp)
Response.write sProp & "<BR>"
Response.write "To Node" &oToNode.Get(sProp) & "<BR>"
Response.write "From Node" & oFromNode.Get(sProp) & "<BR>"
Next
Response.write "<P>"
'#ENDDEF _DEBUG
' this is basically the same function (writeStdProp)
' that lives in iiput.asp, however
' we ALWAYS write the value if we are setting with templates,
' even if it is inheriting the same values...
Function writeProp(thisobj, key, newval)
On Error Resume Next
dim curval,value
curval=thisobj.Get(key)
if typename(newval) <> typename(curval) then
Select Case typename(curval)
Case "Boolean"
value = (UCase(newval) = "TRUE")
Case "Long"
value = cLng(newval)
Case Else
value = newval
End Select
else
value = newval
end if
thisobj.Put key, (value)
writeProp = True
'#IFDEF _DEBUG
if err <> 0 then
Response.write err
end if
'#ENDDEF _DEBUG
End Function
%>