日期:2009-12-20 浏览次数:20982 次
<%
'' Site validator 1.0.0
'' Very simple concept, run this script on your server, it records the file details to an
'' XML file which you download and store. Then, when you come back to make changes you can
'' run the XML file back through this script and it will tell you if any of the files have
'' been modified. Quite simple really.
'' Requires XML parser version 3 to work really. Also needs access to the FileSystemObject.
Dim objRequest, objFSO, sXML, objXML, objNode, objFile, lDifferences, sVersion, sDate
sVersion = "1.0.0"
Response.Expires = -1
Set objRequest = New ProxyRequest
if UCase(objRequest("action")) = "UPLOAD" then
Response.ContentType = "text/html"
%>
<HTML>
<HEAD>
<TITLE>ASPValidate, Site validator <%=sVersion%></TITLE>
</HEAD>
<BODY>
<h1>ASPValidate, Site validator <%=sVersion%></h1>
<h2>Author: Chris Read (<a href="mailtmrjolly@bigpond.net.au">Mail</a>, <a href="http://users.bigpond.net.au/mrjolly.">Web</a>)</h2>
<p>Validation results</p>
<%
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
Set objXML = Server.CreateObject("MSXML2.DOMDocument")
objXML.async = False
sXML = objRequest("xmlupload")
objXML.loadXML objRequest.ASCIIToUNICODE(sXML)
lDifferences = 0
'' Now we go through the XML entries and validate each one against that on the server
For Each objNode in objXML.documentElement.childNodes
on error resume next
Set objFile = objFSO.GetFile(objNode.getAttribute("path"))
if err.number <> 0 then
'' Problem with the file
Response.Write "<b>"
Response.Write objNode.getAttribute("path") & "<br>"
Response.Write "^^^^ FILE HAS BEEN REMOVED<br>"
Response.Write "</b>"
else
if CStr(objFile.DateLastModified) <> objNode.getAttribute("modified") or CStr(objFile.Size) <> objNode.getAttribute("size") then
Response.Write "<b>"
Response.Write objNode.getAttribute("path") & "<br>^^^^ Changed, "
Response.Write "original: " & objNode.getAttribute("modified") & " modified: " & objFile.DateLastModified & ", "
Response.Write "was " & objNode.getAttribute("size") & " bytes - now " & CStr(objFile.Size) & " bytes<br>"
Response.Write "</b>"
lDifferences = lDifferences + 1
elseif objRequest("view") <> "" then
Response.Write objNode.getAttribute("path") & "- File has not changed<br>"
end if
end if
on error goto 0
Next
if lDifferences = 0 then
Response.Write "<p>The site matches the last update</p>"
else
Response.Write "<p>" & lDifferences & " difference(s) detected in the above files</p>"
end if
%>
<a href="aspvalidate.asp">Back to the main page</a>
</BODY>
</HTML>
<%
Response.End
elseif UCase(objRequest.QueryString("action")) = "XML" then
Set objFSO = Server.CreateObject("Scripting.FileSystemObject")
sXML = "<?xml version=''1.0''?>" & vbCRLF
sXML = sXML & "<!-- Generated by Site Validator " & sVersion & " -->" & vbCRLF
sXML = sXML & "<!-- Author: Chris Read -->" & vbCRLF
sXML = sXML & "<site>" & vbCRLF
sXML = sXML & ProcessFolder(Server.MapPath("/"))
sXML = sXML & "</site>" & vbCRLF
sDate = Year(Date()) & "-" & Month(Date()) & "-" & Day(Date())
Response.ContentType = "text/xml"
Response.AddHeader "Content-Disposition","attachment; filename=site" & sDate & ".xml;"
Response.Write sXML
Response.End
else
Response.ContentType = "text/html"
%>
<HTML>
<HEAD>
<TITLE>ASPValidate, Site validator <%=sVersion%&