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

中间件编程

开发平台:

HTML/CSS

  1. <%
  2. '///////////////////////////////////////////////////////////////////////////////
  3. '// 插件应用:    1.8 Pre Terminator 及以上版本, 其它版本的Z-blog未知
  4. '// 插件制作:    haphic(http://haphic.com/)
  5. '// 备    注:    插件管理插件
  6. '// 最后修改:   2008-6-28
  7. '// 最后版本:    1.2
  8. '///////////////////////////////////////////////////////////////////////////////
  9. '注册插件
  10. Call RegisterPlugin("PluginSapper","ActivePlugin_PluginSapper")
  11. Function ActivePlugin_PluginSapper() 
  12. '加上二级菜单项
  13. Call Add_Response_Plugin("Response_Plugin_PluginMng_SubMenu",MakeSubMenu("获得更多插件","../plugin/PluginSapper/Xml_List.asp","m-left",False))
  14. Call Add_Response_Plugin("Response_Plugin_PluginMng_SubMenu",MakeSubMenu("从本地安装插件","../plugin/PluginSapper/Xml_Upload.asp","m-left",False))
  15. Call Add_Response_Plugin("Response_Plugin_PluginMng_SubMenu",MakeSubMenu("插件管理扩展","../plugin/PluginSapper/PluginList.asp","m-left",False))
  16. 'Action_Plugin_Admin_End
  17. Call Add_Action_Plugin("Action_Plugin_Admin_End","Call PluginSapper_AutoChk()")
  18. 'Action_Plugin_PlugInMng_Begin
  19. Call Add_Action_Plugin("Action_Plugin_Admin_Begin","Call PluginSapper_NewVersionFound()")
  20. End Function
  21. '卸载插件
  22. Function UnInstallPlugin_PluginSapper()
  23. Call SetBlogHint_Custom("? 提示:您已停用 Plugin Sapper, 这样将无法使用 ZPI 文件安装插件.")
  24. End Function
  25. Function PluginSapper_NewVersionFound()
  26. On Error Resume Next
  27. Dim fso, f, f1, fc, s
  28. s=False
  29. Set fso = CreateObject("Scripting.FileSystemObject")
  30. Set f = fso.GetFolder(BlogPath & "/PLUGIN/")
  31. Set fc = f.SubFolders
  32. For Each f1 in fc
  33. If fso.FileExists(BlogPath & "/PLUGIN/" & f1.name & "/" & "verchk.xml") Then s=True
  34. Next
  35. Set fso = Nothing
  36. If s Then
  37. If Request.QueryString("act")="PlugInMng" Then
  38. Call SetBlogHint_Custom("? 提示:您安装的插件发现了可用更新, <a href="""& ZC_BLOG_HOST &"PLUGIN/PluginSapper/Xml_ChkVer.asp"">[请点击这里查看].</a>")
  39. End If
  40. If Request.QueryString("act")="SiteInfo" Then
  41. Call Add_Response_Plugin("Response_Plugin_SiteInfo_SubMenu",MakeSubMenu("<font color=""red"">!! 发现插件的可用更新</font>","../PLUGIN/PluginSapper/Xml_ChkVer.asp","m-left",False))
  42. End If
  43. End If
  44. End Function
  45. Function PluginSapper_AutoChk()
  46. On Error Resume Next
  47. Dim fso, f, f1, fc, s, t, n, e
  48. Dim objXmlVerChk
  49. Dim Resource_URL
  50. Resource_URL="http://download.rainbowsoft.org/Plugins/"
  51. n=BlogPath & "/PLUGIN/PluginSapper/Export/log.txt"
  52. s=LoadFromFile(n,"utf-8")
  53. If s="" Then
  54. e=True
  55. t="2008-6-18 6:18:25"
  56. Else
  57. e=False
  58. t=PluginSapper_GetFileDatetime(n)
  59. End if
  60. If DateDiff("n",t,Now())>133 Then
  61. Set fso = CreateObject("Scripting.FileSystemObject")
  62. Set f = fso.GetFolder(BlogPath & "/PLUGIN/")
  63. Set fc = f.SubFolders
  64. For Each f1 in fc
  65. Set objXmlVerChk=New PluginSapper_CheckVersionViaXML
  66. If fso.FileExists(BlogPath & "/PLUGIN/" & f1.name & "/" & "Plugin.xml") Then
  67. objXmlVerChk.XmlDataLocal=(LoadFromFile(BlogPath & "/PLUGIN/" & f1.name & "/plugin.xml","utf-8"))
  68. If LCase(f1.name)=LCase(s) Then
  69. objXmlVerChk.XmlDataWeb=(PluginSapper_getHTTPPage(Resource_URL & f1.name & "/verchk.xml"))
  70. If objXmlVerChk.UpdateNeeded Then
  71. Call SaveToFile(BlogPath & "/PLUGIN/" & f1.name & "/verchk.xml",objXmlVerChk.strXmlDataWeb,"utf-8",False)
  72. Else
  73. fso.DeleteFile(BlogPath & "/PLUGIN/" & f1.name & "/verchk.xml")
  74. End If
  75. e=True
  76. Else
  77. If e=True Then
  78. e=False
  79. Call SaveToFile(n,f1.name,"utf-8",False)
  80. Set objXmlVerChk=Nothing
  81. Exit For
  82. End If
  83. End If
  84. End If
  85. Set objXmlVerChk=Nothing
  86. Next
  87. If e=True Then
  88. Call fso.DeleteFile(n)
  89. End If
  90. Set fso = nothing
  91. Err.Clear
  92. End If
  93. End Function
  94. '*********************************************************
  95. ' 目的:    取得目标文件的修改时间
  96. '*********************************************************
  97. Function PluginSapper_GetFileDatetime(ByVal strFullFileName)
  98. On Error Resume Next
  99. Dim objFSO,objFolder
  100. Set objFSO = CreateObject("Scripting.FileSystemObject")
  101. If objFSO.FileExists(strFullFileName) Then
  102.     Set objFolder = objFSO.GetFile(strFullFileName)
  103. PluginSapper_GetFileDatetime = objFolder.DateLastModified
  104. set objFolder = nothing
  105. End If
  106. set objFSO = nothing
  107. If Err Then
  108. PluginSapper_GetFileDatetime = False
  109. Err.Clear
  110. End If
  111. End Function
  112. '*********************************************************
  113. ' 目的:    取得目标网页的html代码
  114. '*********************************************************
  115. Function PluginSapper_getHTTPPage(url)
  116. On Error Resume Next
  117. Dim Http,ServerConn
  118. Dim j
  119. For j=0 To 2
  120. Set Http=server.createobject("Msxml2.ServerXMLHTTP")
  121. Http.setTimeouts 5*1000,5*1000,4*1000,10*1000
  122. Http.open "GET",url,False
  123. Http.send()
  124. If Err Then
  125. Err.Clear
  126. Set http = Nothing
  127. ServerConn = False
  128. else
  129. ServerConn = true
  130. End If
  131. If ServerConn Then
  132. Exit For
  133. End If
  134. next
  135. If ServerConn = False Then
  136. PluginSapper_getHTTPPage = False
  137. Exit Function
  138. End If
  139. If http.Status=200 Then
  140. PluginSapper_getHTTPPage = Http.ResponseText
  141. Else
  142. PluginSapper_getHTTPPage = False
  143. End If
  144. Set http=Nothing
  145. End Function
  146. '*********************************************************
  147. ' 目的:    校验版本信息类
  148. '*********************************************************
  149. Class PluginSapper_CheckVersionViaXML
  150. Public strXmlDataWeb
  151. Public strXmlDataLocal
  152. Public Item_ID_Web
  153. Public Item_Name_Web
  154. Public Item_Url_Web
  155. Public Item_Version_Web
  156. Public Item_PubDate_Web
  157. Public Item_Modified_Web
  158. Public Item_ID_Local
  159. Public Item_Name_Local
  160. Public Item_Url_Local
  161. Public Item_Version_Local
  162. Public Item_PubDate_Local
  163. Public Item_Modified_Local
  164. Public Property Let XmlDataWeb(ByVal strXmlData) 
  165. Call LoadXmlData(strXmlData,"web")
  166. strXmlDataWeb=strXmlData
  167. End Property
  168. Public Property Let XmlDataLocal(ByVal strXmlData) 
  169. Call LoadXmlData(strXmlData,"local")
  170. strXmlDataLocal=strXmlData
  171. End Property
  172. Public Property Get UpdateNeeded    '逻辑待定
  173. On Error Resume Next
  174. If Item_PubDate_Web="Undefine" Then Item_PubDate_Web="2008-1-1"    '为旧版插件无此节点而定义, 否则会判断失误.
  175. If Item_PubDate_Local="Undefine" Then Item_PubDate_Local="2008-1-1"    '为旧版插件无此节点而定义, 否则会判断失误.
  176. If (DateDiff("d",Item_PubDate_Web,Item_PubDate_Local)>0 Or DateDiff("d",Item_Modified_Web,Item_Modified_Local)>0) Then
  177. UpdateNeeded=False
  178. ElseIf Item_Version_Web<>Item_Version_Local Or Item_PubDate_Local<>Item_PubDate_Web Or Item_Modified_Local<>Item_Modified_Web Then
  179. UpdateNeeded=True
  180. Else
  181. UpdateNeeded=False
  182. End If
  183. If (Item_ID_Web<>Item_ID_Local) Then UpdateNeeded=False
  184. Call ExportLog()
  185. End Property
  186. Public Property Get OutputResults
  187. If UpdateNeeded=True Then
  188. OutputResults="Plugin Sapper 认为: 该插件<font color=""red""><b>需要</b></font>升级."
  189. Else
  190. OutputResults="Plugin Sapper 认为: 该插件<font color=""green""><b>不需要</b></font>升级."
  191. End If
  192. End Property
  193. Private Function ExportLog()
  194. On Error Resume Next
  195. If Item_ID_Web="" Or Item_ID_Local="" Then Exit Function
  196. If UpdateNeeded=True Then
  197. Call CreateFile(BlogPath & "/PLUGIN/" & Item_ID_Web & "/verchk.xml",strXmlDataWeb,"utf-8")
  198. Call DeleteFile(BlogPath & "/PLUGIN/" & Item_ID_Web & "/error.log")
  199. ElseIf strXmlDataWeb=False Then
  200. Call CreateFile(BlogPath & "/PLUGIN/" & Item_ID_Local & "/error.log","Online-Support = "&strXmlDataWeb,"utf-8")
  201. Call DeleteFile(BlogPath & "/PLUGIN/" & Item_ID_Local & "/verchk.xml")
  202. Else
  203. Call DeleteFile(BlogPath & "/PLUGIN/" & Item_ID_Web & "/verchk.xml")
  204. Call DeleteFile(BlogPath & "/PLUGIN/" & Item_ID_Web & "/error.log")
  205. End If
  206. End Function
  207. Private Function DeleteFile(ByVal strFileName)
  208. On Error Resume Next
  209. Dim fso
  210. Set fso = Server.CreateObject("Scripting.FileSystemObject")
  211. fso.DeleteFile(strFileName)
  212. Set fso = Nothing
  213. Err.Clear
  214. End Function
  215. Private Function CreateFile(ByVal strFileName,ByVal strContent,ByVal strCharset)
  216. On Error Resume Next
  217. Dim objStream
  218. Set objStream = Server.CreateObject("ADODB.Stream")
  219. With objStream
  220. .Type = 2 'adTypeBinary=1, adTypeText=2
  221. .Mode = 3 'adModeReadWrite=3, adModeRead=1
  222. .Open
  223. .Charset = strCharset
  224. .Position = objStream.Size
  225. .WriteText = strContent
  226. .SaveToFile strFileName,2 'adSaveCreateNotExist=1, adSaveCreateOverWrite=2
  227. .Close
  228. End With
  229. Set objStream = Nothing
  230. Err.Clear
  231. End Function
  232. Private Function LoadXmlData(ByVal strXmlData,ByVal strLocation)
  233. On Error Resume Next
  234. LoadXmlData=False
  235. Dim objXmlFile
  236. Set objXmlFile=Server.CreateObject("Microsoft.XMLDOM")
  237. objXmlFile.async = False
  238. objXmlFile.ValidateOnParse=False
  239. objXmlFile.loadXML(strXmlData)
  240. If objXmlFile.readyState=4 Then
  241. If objXmlFile.parseError.errorCode = 0 Then
  242. If strLocation="web" Then
  243. Item_ID_Web=objXmlFile.documentElement.selectSingleNode("id").text
  244. Item_Name_Web=objXmlFile.documentElement.selectSingleNode("name").text
  245. Item_Url_Web=objXmlFile.documentElement.selectSingleNode("url").text
  246. Item_Version_Web=objXmlFile.documentElement.selectSingleNode("version").text
  247. Item_PubDate_Web=objXmlFile.documentElement.selectSingleNode("pubdate").text
  248. Item_Modified_Web=objXmlFile.documentElement.selectSingleNode("modified").text
  249. If Item_Version_Web="" Then Item_Version_Web="Undefine"
  250. If Item_PubDate_Web="" Then Item_PubDate_Web="Undefine"
  251. If Item_Modified_Web="" Then Item_Modified_Web="Undefine"
  252. ElseIf strLocation="local" Then
  253. Item_ID_Local=objXmlFile.documentElement.selectSingleNode("id").text
  254. Item_Name_Local=objXmlFile.documentElement.selectSingleNode("name").text
  255. Item_Url_Local=objXmlFile.documentElement.selectSingleNode("url").text
  256. Item_Version_Local=objXmlFile.documentElement.selectSingleNode("version").text
  257. Item_PubDate_Local=objXmlFile.documentElement.selectSingleNode("pubdate").text
  258. Item_Modified_Local=objXmlFile.documentElement.selectSingleNode("modified").text
  259. If Item_Version_Local="" Then Item_Version_Local="Undefine"
  260. If Item_PubDate_Local="" Then Item_PubDate_Local="Undefine"
  261. If Item_Modified_Local="" Then Item_Modified_Local="Undefine"
  262. End If
  263. LoadXmlData=True
  264. End If
  265. End If
  266. Set objXmlFile=Nothing
  267. Err.Clear
  268. End Function
  269. Private Sub Class_Initialize()
  270. Item_ID_Web=Empty : Item_ID_Local=Empty
  271. Item_Version_Web=Empty : Item_Version_Local=Empty
  272. Item_PubDate_Web=Empty : Item_PubDate_Local=Empty
  273. Item_Modified_Web=Empty : Item_Modified_Local=Empty
  274. End Sub
  275. End Class
  276. '*********************************************************
  277. %>