Xml_Install.asp
上传用户:saigedz
上传日期:2019-10-14
资源大小:997k
文件大小:12k
源码类别:

中间件编程

开发平台:

HTML/CSS

  1. <%@ CODEPAGE=65001 %>
  2. <%
  3. '///////////////////////////////////////////////////////////////////////////////
  4. '// 插件应用:    1.8 Pre Terminator 及以上版本, 其它版本的Z-blog未知
  5. '// 插件制作:    haphic(http://haphic.com/)
  6. '// 备    注:    插件管理插件
  7. '// 最后修改:   2008-6-28
  8. '// 最后版本:    1.2
  9. '///////////////////////////////////////////////////////////////////////////////
  10. %>
  11. <% Option Explicit %>
  12. <% On Error Resume Next %>
  13. <% Response.Charset="UTF-8" %>
  14. <% Response.Buffer=True %>
  15. <% Server.ScriptTimeout=99999999 %>
  16. <!-- #include file="../../c_option.asp" -->
  17. <!-- #include file="../../function/c_function.asp" -->
  18. <!-- #include file="../../function/c_system_lib.asp" -->
  19. <!-- #include file="../../function/c_system_base.asp" -->
  20. <!-- #include file="../../function/c_system_plugin.asp" -->
  21. <!-- #include file="c_sapper.asp" -->
  22. <!-- #include file="../p_config.asp" -->
  23. <%
  24. Call System_Initialize()
  25. '检查非法链接
  26. Call CheckReference("")
  27. '检查权限
  28. If BlogUser.Level>1 Then Call ShowError(6)
  29. If CheckPluginState("PluginSapper")=False Then Call ShowError(48)
  30. BlogTitle = "从服务器安装插件"
  31. %><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  32. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="<%=ZC_BLOG_LANGUAGE%>" lang="<%=ZC_BLOG_LANGUAGE%>">
  33. <head>
  34. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  35. <meta http-equiv="Content-Language" content="<%=ZC_BLOG_LANGUAGE%>" />
  36. <meta name="robots" content="noindex,nofollow"/>
  37. <link rel="stylesheet" rev="stylesheet" href="../../CSS/admin.css" type="text/css" media="screen" />
  38. <link rel="stylesheet" rev="stylesheet" href="images/style.css" type="text/css" media="screen" />
  39. <title><%=BlogTitle%></title>
  40. </head>
  41. <body>
  42. <div id="divMain">
  43. <div class="Header">Plugin Sapper-插件安装 - 在线安装您选择的插件.</div>
  44. <%Call SapperMenu("0")%>
  45. <div id="divMain2">
  46. <div>
  47. <%
  48. Dim Install_Error
  49. Install_Error=0
  50. Dim Install_Url,Install_ID,Install_Pack,Install_Path,Install_Data
  51. Install_Url=Request.QueryString("url")
  52. Install_ID=Mid(Install_Url, InStrRev(Install_Url, "plugin=")+7)
  53. If Install_Url="" Then
  54. Response.Write "<p><font color=""red""> × 插件的下载地址为空.</font></p>"
  55. Install_Error=Install_Error+1
  56. Else
  57. '验证所要安装的插件是否存在
  58. Action=Request.QueryString("act")
  59. If Action<>"confirm" Then
  60. Response.Write "<p id=""loading"">正在验证更新, 请稍候...  如果长时间停止响应, 请 <a href=""javascript:window.location.reload();"" title=""点此重试"">[点此重试]</a></p>"
  61. Response.Flush
  62. Set objXmlVerChk=New PluginSapper_CheckVersionViaXML
  63. objXmlVerChk.XmlDataWeb=(getHTTPPage(Resource_URL & Install_ID & "/verchk.xml"))
  64. objXmlVerChk.XmlDataLocal=(LoadFromFile(BlogPath & "/PLUGIN/" & Install_ID & "/plugin.xml","utf-8"))
  65. If Action="update" Then
  66. If (LCase(objXmlVerChk.Item_ID_Web)=LCase(Install_ID)) Then
  67. Response.Write "<p class=""status-box"">您将对这个插件 <b>("& objXmlVerChk.Item_Name_Web &")</b> 进行修复或升级, 如果继续安装会将其<b>完全覆盖</b>. 请在继续前确认您已按插件说明对插件中进行必要备份.<br/><br/>"
  68. Response.Write "您当前插件版本为: <b>"& objXmlVerChk.Item_Version_Local &"</b>. 发布日期为: <b>"& objXmlVerChk.Item_PubDate_Local &"</b>. 最后修改日期为: <b>"& objXmlVerChk.Item_Modified_Local &"</b>.<br/>"
  69. Response.Write "将要安装的版本为: <b>"& objXmlVerChk.Item_Version_Web &"</b>. 发布日期为: <b>"& objXmlVerChk.Item_PubDate_Web &"</b>. 最后修改日期为: <b>"& objXmlVerChk.Item_Modified_Web &"</b><br/><br/>"
  70. If objXmlVerChk.Item_Url_Web<>Empty Then
  71. Response.Write "<a href="""& objXmlVerChk.Item_Url_Web &""" target=""_blank"" title=""查看插件的发布页面"">点此查看插件的发布信息!</a><br/><br/>"
  72. End If
  73. Response.Write objXmlVerChk.OutputResults & "<br/><br/>"
  74. Response.Write "<a href=""Xml_Install.asp?act=confirm&amp;url="& Server.URLEncode(Install_Url) &""" title=""继续安装"">[继续安装]</a> 或 <a href=""javascript:history.back(1);"" title=""返回上一页面"">[取消安装]</a><p>"
  75. Else
  76. Response.Write "<p class=""status-box"">对不起, 这个插件 <b>("& objXmlVerChk.Item_Name_Local &")</b> 不支持在线安装或升级, 请返回上一页. <br/><br/><a href=""javascript:history.back(1);"" title=""返回上一页面"">[返回上一页]</a><p>"
  77. End If
  78. Install_Error=Install_Error+1
  79. Else
  80. If (LCase(objXmlVerChk.Item_ID_Local)=LCase(Install_ID)) Then
  81. Response.Write "<p class=""status-box"">您已安装了这个插件 <b>("& objXmlVerChk.Item_Name_Local &")</b>, 如果继续安装会将其<b>完全覆盖</b>, 这可能会导致您对该插件的设置和操作及写入插件的信息等丢失, 是否继续安装?<br/><br/>"
  82. Response.Write "您当前插件版本为: <b>"& objXmlVerChk.Item_Version_Local &"</b>. 发布日期为: <b>"& objXmlVerChk.Item_PubDate_Local &"</b>. 最后修改日期为: <b>"& objXmlVerChk.Item_Modified_Local &"</b>.<br/>"
  83. Response.Write "将要安装的版本为: <b>"& objXmlVerChk.Item_Version_Web &"</b>. 发布日期为: <b>"& objXmlVerChk.Item_PubDate_Web &"</b>. 最后修改日期为: <b>"& objXmlVerChk.Item_Modified_Web &"</b><br/><br/>"
  84. If objXmlVerChk.Item_Url_Web<>Empty Then
  85. Response.Write "<a href="""& objXmlVerChk.Item_Url_Web &""" target=""_blank"" title=""查看插件的发布页面"">点此查看插件的发布信息!</a><br/><br/>"
  86. End If
  87. Response.Write objXmlVerChk.OutputResults & "<br/><br/>"
  88. Response.Write "<a href=""Xml_Install.asp?act=confirm&amp;url="& Server.URLEncode(Install_Url) &""" title=""继续安装"">[继续安装]</a> 或 <a href=""javascript:history.back(1);"" title=""返回上一页面"">[取消安装]</a><p>"
  89. Install_Error=Install_Error+1
  90. End If
  91. End If
  92. Set objXmlVerChk=Nothing
  93. Response.Write "<script language=""JavaScript"" type=""text/javascript"">document.getElementById('loading').style.display = 'none';</script>"
  94. If Install_Error<>0 Then Response.End
  95. End If
  96. Response.Write "<p id=""loading"">正在安装插件, 请稍候...  如果长时间停止响应, 请 <a href=""javascript:window.location.reload();"" title=""点此重试"">[点此重试]</a></p>"
  97. Response.Flush
  98. '下载安装插件
  99. Response.Write "<p class=""status-box"">正在下载 ZPI 插件安装包文件... <img id=""status"" align=""absmiddle"" src=""images/loading.gif"" /><p>"
  100. Response.Flush
  101. Install_Data = getHTTPPage(Install_Url)
  102. Install_Pack = BlogPath & "PLUGIN/Install.zpi"
  103. Install_Path = BlogPath & "PLUGIN/"
  104. If Install_Data = False Then
  105. Response.Write "<p><font color=""red""> × ZPI 文件下载失败.</font></p>"
  106. Install_Error=Install_Error+1
  107. Else
  108. Response.Write "<p><font color=""green""> √ ZPI 文件下载完成.</font></p>"
  109. End If
  110. Response.Write "<script language=""JavaScript"" type=""text/javascript"">document.getElementById('status').style.display = 'none';</script>"
  111. Response.Flush
  112. Call SaveToFile(Install_Pack,Install_Data,"utf-8",False)
  113. Response.Write "<p><font color=""green""> √ ZPI 文件 ""PLUGIN/Install.zpi"" 已被保存到您的空间内.</font></p>"
  114. Response.Flush
  115. Response.Write "<p class=""status-box"">ZPI 文件 ""PLUGIN/Install.zpi"" 正在解包安装...<p>"
  116. Response.Flush
  117. Dim objXmlVerChkFile
  118. Dim objNodeList
  119. Dim objFSO
  120. Dim objStream
  121. Dim i,j
  122. Set objXmlVerChkFile = Server.CreateObject("Microsoft.XMLDOM")
  123. objXmlVerChkFile.async = False
  124. objXmlVerChkFile.ValidateOnParse=False
  125. objXmlVerChkFile.load(Install_Pack)
  126. If objXmlVerChkFile.readyState<>4 Then
  127. Response.Write "<p><font color=""red""> × ZPI 文件未准备就绪, 无法解包.</font></p>"
  128. Install_Error=Install_Error+1
  129. Else
  130. If objXmlVerChkFile.parseError.errorCode <> 0 Then
  131. Response.Write "<p><font color=""red""> × ZPI 文件有错误, 无法解包.</font></p>"
  132. Install_Error=Install_Error+1
  133. Else
  134. Dim Pack_ver,Pack_Type,Pack_For,Pack_ID,Pack_Name
  135. Pack_Ver = objXmlVerChkFile.documentElement.SelectSingleNode("//root").getAttributeNode("version").value
  136. Pack_Type = objXmlVerChkFile.documentElement.selectSingleNode("//root").getAttributeNode("type").value
  137. Pack_For = objXmlVerChkFile.documentElement.selectSingleNode("//root").getAttributeNode("for").value
  138. Pack_ID = objXmlVerChkFile.documentElement.selectSingleNode("id").text
  139. Pack_Name = objXmlVerChkFile.documentElement.selectSingleNode("name").text
  140. If (CDbl(Pack_Ver) > CDbl(XML_Pack_Ver)) Then
  141. Response.Write "<p><font color=""red""> × ZPI 文件的 XML 版本为 "& Pack_Ver &", 而你的解包器版本为 "& XML_Pack_Ver &", 请升级您的 PluginSapper, 安装被中止.</font></p>"
  142. Install_Error=Install_Error+1
  143. ElseIf (LCase(Pack_Type) <> LCase(XML_Pack_Type)) Then
  144. Response.Write "<p><font color=""red""> × 不是 ZPI 文件, 而可能是 "& Pack_Type &", 安装被中止.</font></p>"
  145. Install_Error=Install_Error+1
  146. ElseIf (LCase(Pack_For) <> LCase(XML_Pack_Version)) Then
  147. Response.Write "<p><font color=""red""> × ZPI 文件版本不符合, 该版本可能是 "& Pack_For &", 安装被中止.</font></p>"
  148. Install_Error=Install_Error+1
  149. Else
  150. Response.Write "<blockquote><font color=""Teal"">"
  151. Set objNodeList = objXmlVerChkFile.documentElement.selectNodes("//folder/path")
  152. Set objFSO = CreateObject("Scripting.FileSystemObject")
  153. j=objNodeList.length-1
  154. For i=0 To j
  155. If objFSO.FolderExists(Install_Path & objNodeList(i).text)=False Then
  156. objFSO.CreateFolder(Install_Path & objNodeList(i).text)
  157. End If
  158. Response.Write "创建目录" & objNodeList(i).text & "<br/>"
  159. Response.Flush
  160. Next
  161. Set objFSO = Nothing
  162. Set objNodeList = Nothing
  163. Set objNodeList = objXmlVerChkFile.documentElement.selectNodes("//file/path")
  164. j=objNodeList.length-1
  165. For i=0 To j
  166. Set objStream = CreateObject("ADODB.Stream")
  167. With objStream
  168. .Type = 1
  169. .Open
  170. .Write objNodeList(i).nextSibling.nodeTypedvalue
  171. .SaveToFile Install_Path & objNodeList(i).text,2
  172. Response.Write "释放文件" & objNodeList(i).text & "<br/>"
  173. Response.Flush
  174. .Close
  175. End With
  176. Set objStream = Nothing
  177. Next
  178. Set objNodeList = Nothing
  179. Response.Write "</font></blockquote>"
  180. End If
  181. End If
  182. End If
  183. Set objXmlVerChkFile = Nothing
  184. If Err.Number<>0 Then Install_Error=Install_Error+1
  185. Err.Clear
  186. Response.Write "<p>"
  187. Install_Error = Install_Error + DeleteFile(BlogPath & "PLUGIN/" & "Install.zpi")
  188. Response.Write "</p>"
  189. If Install_Error = 0 Then
  190. Response.Write "<p>"
  191. Install_Error = Install_Error + DeleteFile(BlogPath & "PLUGIN/" & Pack_ID & "/verchk.xml")
  192. Response.Write "</p>"
  193. End If
  194. Response.Flush
  195. End If
  196. If Install_Error = 0 Then
  197. Response.Write "<p class=""status-box""> √ 插件安装完成. 如果您的浏览器没能自动跳转, 请 <a href=""PluginDetail.asp?Plugin=" & Server.URLEncode(Pack_ID) & "&amp;Pluginname=" & Server.URLEncode(Pack_Name) & """>[点击这里]</a>.</p>"
  198. Response.Write "<script>setTimeout(""self.location.href='PluginDetail.asp?Plugin=" & Server.URLEncode(Pack_ID) & "&Pluginname=" & Server.URLEncode(Pack_Name) & "'"",3000);</script>"
  199. Else
  200. Response.Write "<p class=""status-box""><font color=""red""> × 插件安装失败. "
  201. Response.Write "<a href=""javascript:window.location.reload();"" title=""返回上一个页面""><span>[点此重试]</span></a> 或 <a href=""Xml_List.asp"" title=""返回资源列表页""><span>[点此返回资源列表页]</span></a></font></p>"
  202. End If
  203. Response.Write "<script language=""JavaScript"" type=""text/javascript"">document.getElementById('loading').style.display = 'none';</script>"
  204. %>
  205. </div>
  206. </div>
  207. </div>
  208. </body>
  209. </html>
  210. <%
  211. Call System_Terminate()
  212. If Err.Number<>0 Then
  213. Call ShowError(0)
  214. End If
  215. %>