<%@ Language="VBScript" %>
<%
'####################################
'#									#
'#		   阿江ASP探针 V1.8         #
'#             040606               #
'#  阿江守候 http://www.ajiang.net  #
'#	 电子邮件 info@ajiang.net		#
'#									#
'#    转载本程序时请保留这些信息    #
'#								    #
'####################################

' 使用输出缓冲区，避免在WIN2003显示过慢
Response.Buffer = true

' 声明待检测数组
Dim ObjTotest(30,4)

ObjTotest(0,0) = "MSWC.AdRotator"
ObjTotest(1,0) = "MSWC.BrowserType"
ObjTotest(2,0) = "MSWC.NextLink"
ObjTotest(3,0) = "MSWC.Tools"
ObjTotest(4,0) = "MSWC.Status"
ObjTotest(5,0) = "MSWC.Counters"
ObjTotest(6,0) = "IISSample.ContentRotator"
ObjTotest(7,0) = "IISSample.PageCounter"
ObjTotest(8,0) = "MSWC.PermissionChecker"
ObjTotest(9,0) = "Scripting.FileSystemObject"
	ObjTotest(9,1) = "(FSO 文本文件读写)"
ObjTotest(10,0) = "adodb.connection"
	ObjTotest(10,1) = "(ADO 数据对象)"
	
ObjTotest(11,0) = "SoftArtisans.FileUp"
	ObjTotest(11,1) = "(SA-FileUp 文件上传)"
ObjTotest(12,0) = "SoftArtisans.FileManager"
	ObjTotest(12,1) = "(SoftArtisans 文件管理)"
ObjTotest(13,0) = "LyfUpload.UploadFile"
	ObjTotest(13,1) = "(刘云峰的文件上传组件)"
ObjTotest(14,0) = "Persits.Upload.1"
	ObjTotest(14,1) = "(ASPUpload 文件上传)"
ObjTotest(15,0) = "w3.upload"
	ObjTotest(15,1) = "(Dimac 文件上传)"

ObjTotest(16,0) = "JMail.SmtpMail"
	ObjTotest(16,1) = "(Dimac JMail 邮件收发) <a href='http://www.ajiang.net'>中文手册下载</a>"
ObjTotest(17,0) = "CDONTS.NewMail"
	ObjTotest(17,1) = "(虚拟 SMTP 发信)"
ObjTotest(18,0) = "Persits.MailSender"
	ObjTotest(18,1) = "(ASPemail 发信)"
ObjTotest(19,0) = "SMTPsvg.Mailer"
	ObjTotest(19,1) = "(ASPmail 发信)"
ObjTotest(20,0) = "DkQmail.Qmail"
	ObjTotest(20,1) = "(dkQmail 发信)"
ObjTotest(21,0) = "Geocel.Mailer"
	ObjTotest(21,1) = "(Geocel 发信)"
ObjTotest(22,0) = "IISmail.Iismail.1"
	ObjTotest(22,1) = "(IISmail 发信)"
ObjTotest(23,0) = "SmtpMail.SmtpMail.1"
	ObjTotest(23,1) = "(SmtpMail 发信)"
	
ObjTotest(24,0) = "SoftArtisans.ImageGen"
	ObjTotest(24,1) = "(SA 的图像读写组件)"
ObjTotest(25,0) = "W3Image.Image"
	ObjTotest(25,1) = "(Dimac 的图像读写组件)"
ObjTotest(26,0) = "QuickWAP.WAP"
	ObjTotest(26,1) = "(WAP编程辅助组件2.x)"
ObjTotest(27,0) = "QWAP.Wap2005"
	ObjTotest(27,1) = "(WAP编程辅助组件)"
ObjTotest(28,0) = "QWAP.Wap20"
	ObjTotest(28,1) = "(WAP编程辅助组件)"
ObjTotest(29,0) = "QuickWAP.XML"
	ObjTotest(29,1) = "(WAP编程辅助组件)"	
public IsObj,VerObj,TestObj
public okOS,okCPUS,okCPU

'检查预查组件支持情况及版本

dim i
for i=0 to 29
	on error resume next
	IsObj=false
	VerObj=""
	'dim TestObj
	TestObj=""
	set TestObj=server.CreateObject(ObjTotest(i,0))
	If -2147221005 <> Err then		'感谢网友iAmFisher的宝贵建议
		IsObj = True
		VerObj = TestObj.version
		if VerObj="" or isnull(VerObj) then VerObj=TestObj.about
	end if
	ObjTotest(i,2)=IsObj
	ObjTotest(i,3)=VerObj
next

'检查组件是否被支持及组件版本的子程序
sub ObjTest(strObj)
	on error resume next
	IsObj=false
	VerObj=""
	TestObj=""
	set TestObj=server.CreateObject (strObj)
	If -2147221005 <> Err then		'感谢网友iAmFisher的宝贵建议
		IsObj = True
		VerObj = TestObj.version
		if VerObj="" or isnull(VerObj) then VerObj=TestObj.about
	end if	
End sub
%>
<HTML>
<HEAD>
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<TITLE>ASP探针V1.8－阿江http://www.ajiang.net</TITLE>
<link href="js/common.css" type="text/css" rel="stylesheet">
</HEAD>
<BODY>
<table width="100%" border="0" align=center cellpadding="2" cellspacing="1" bgcolor="#DEDFDE">
  <tr bgcolor="#f7f7f7"> 
    <td colspan="2" align="center"><strong>服 务 器 信 息</strong></td>
  </tr>
  <tr align="right" bgcolor="#FFFFFF"> 
    <td colspan="2">特别感谢<a href="http://www.ajiang.net" target="_blank">【阿江守候】</a>提供此探针程序！</td>
  </tr>
  <tr bgcolor="#FFFFFF"> 
    <td colspan="2" align="left"> &nbsp; <font color="#FF6600">是否支持ASP <br> &nbsp;&nbsp;&nbsp;&nbsp;出现以下情况即表示您的空间不支持ASP： 
      <br> &nbsp;&nbsp;&nbsp;&nbsp;1、访问本文件时提示下载。 <br> &nbsp;&nbsp;&nbsp;&nbsp;2、访问本文件时看到类似“&lt;%@ 
      Language="VBScript" %&gt;”的文字。 <br></td>
  </tr>
  <tr bgcolor="#FFFFFF"> 
    <td height="25" colspan="2" align="left"><div align="center"><strong>服务器的有关参数 
        </strong></div></td>
  </tr>
  <tr bgcolor="#FFFFFF"> 
    <td width="50%">服务器名</td>
    <td width="50%"><%=Request.ServerVariables("SERVER_NAME")%></td>
  </tr>
  <tr bgcolor="#FFFFFF"> 
    <td width="50%">服务器IP</td>
    <td width="50%" align="left"><%=Request.ServerVariables("LOCAL_ADDR")%></td>
  </tr>
  <tr bgcolor="#FFFFFF"> 
    <td width="50%">服务器端口</td>
    <td width="50%">&nbsp;<%=Request.ServerVariables("SERVER_PORT")%></td>
  </tr>
  <tr bgcolor="#FFFFFF"> 
    <td width="50%">服务器时间</td>
    <td width="50%">&nbsp;<%=now%></td>
  </tr>
  <tr bgcolor="#FFFFFF"> 
    <td width="50%">IIS版本</td>
    <td width="50%">&nbsp;<%=Request.ServerVariables("SERVER_SOFTWARE")%></td>
  </tr>
  <tr bgcolor="#FFFFFF"> 
    <td width="50%">脚本超时时间</td>
    <td width="50%">&nbsp;<%=Server.ScriptTimeout%> 秒</td>
  </tr>
  <tr bgcolor="#FFFFFF"> 
    <td width="50%">本文件路径</td>
    <td width="50%">&nbsp;<%=Request.ServerVariables("PATH_TRANSLATED")%></td>
  </tr>
  <tr bgcolor="#FFFFFF"> 
    <td width="50%">服务器解译引擎</td>
    <td width="50%">&nbsp;<%=ScriptEngine & "/"& ScriptEngineMajorVersion &"."&ScriptEngineMinorVersion&"."& ScriptEngineBuildVersion %></td>
  </tr>
  <%getsysinfo()  '获得服务器数据%>
  <tr bgcolor="#FFFFFF"> 
    <td width="50%">服务器CPU数量</td>
    <td width="50%">&nbsp;<%=okCPUS%> 个</td>
  </tr>
  <tr bgcolor="#FFFFFF"> 
    <td width="50%">服务器CPU详情</td>
    <td width="50%">&nbsp;<%=okCPU%></td>
  </tr>
  <tr bgcolor="#FFFFFF"> 
    <td width="50%">服务器操作系统</td>
    <td width="50%">&nbsp;<%=okOS%></td>
  </tr>
  <tr bgcolor="#f7f7f7"> 
    <td colspan="2" align="left"><div align="center"><strong>组件支持情况 
        <%
Dim strClass
	strClass = Trim(Request.Form("classname"))
	If "" <> strClass then
	Response.Write "<br>您指定的组件的检查结果："
	Dim Verobj1
	ObjTest(strClass)
	  If Not IsObj then 
		Response.Write "<br><font color=red>很遗憾，该服务器不支持 " & strclass & " 组件！</font>"
	  Else
		if VerObj="" or isnull(VerObj) then 
			Verobj1="无法取得该组件版本"
		Else
			Verobj1="该组件版本是：" & VerObj
		End If
		Response.Write "<br>恭喜！该服务器支持 " & strclass & " 组件。" & verobj1 & "</font>"
	  End If
	  Response.Write "<br>"
	end if
	%>
        </strong></div></td>
  </tr>
  <tr bgcolor="#FFFFFF"> 
    <td colspan="2" align="left">■ IIS自带的ASP组件 </td>
  </tr>
  <tr align=center bgcolor="#FFFFFF"> 
    <td>组 件 名 称</td>
    <td>支持及版本</td>
  </tr>
  <tr bgcolor="#FFFFFF" height="18"> 
    <%For i=0 to 10%>
    <td align=left bgcolor="#FFFFFF">&nbsp;<%=ObjTotest(i,0) & "<font color=#888888>&nbsp;" & ObjTotest(i,1)%></td>
    <td align=left bgcolor="#FFFFFF">&nbsp; 
      <%
		If Not ObjTotest(i,2) Then 
			Response.Write "<font color=red><b>×</b></font>"
		Else
			Response.Write "<font color=red><b>√</b></font> <a title='" & ObjTotest(i,3) & "'>" & left(ObjTotest(i,3),11) & "</a>"
		End If%>
    </td>
  </tr>
  <%next%>
  <tr bgcolor="#FFFFFF"> 
    <td colspan="2" align="left">■ 常见的文件上传和管理组件 </td>
  </tr>
  <tr align=center bgcolor="#FFFFFF"> 
    <td>组 件 名 称</td>
    <td>支持及版本</td>
  </tr>
  <%For i=11 to 15%>
  <tr bgcolor="#FFFFFF" height="18"> 
    <td align=left>&nbsp;<%=ObjTotest(i,0) & "<font color=#888888>&nbsp;" & ObjTotest(i,1)%></td>
    <td align=left>&nbsp; 
      <%
		If Not ObjTotest(i,2) Then 
			Response.Write "<font color=red><b>×</b></font>"
		Else
			Response.Write "<b>√</b></font> <a title='" & ObjTotest(i,3) & "'>" & left(ObjTotest(i,3),11) & "</a>"
		End If%>
    </td>
  </tr>
  <%next%>
  <tr bgcolor="#FFFFFF"> 
    <td colspan="2" align="left">■ 常见的收发邮件组件 </td>
  </tr>
  <tr align=center bgcolor="#FFFFFF"> 
    <td>组 件 名 称</td>
    <td>支持及版本</td>
  </tr>
  <%For i=16 to 23%>
  <tr bgcolor="#FFFFFF" height="18"> 
    <td align=left>&nbsp;<%=ObjTotest(i,0) & "<font color=#888888>&nbsp;" & ObjTotest(i,1)%></td>
    <td align=left>&nbsp; 
      <%
		If Not ObjTotest(i,2) Then 
			Response.Write "<font color=red><b>×</b></font>"
		Else
			Response.Write "<font color=red><b>√</b></font> <a title='" & ObjTotest(i,3) & "'>" & left(ObjTotest(i,3),11) & "</a>"
		End If%>
    </td>
  </tr>
  <%next%>
  <tr bgcolor="#FFFFFF"> 
    <td colspan="2" align="left">■ 图像处理组件</td>
  </tr>
  <tr align=center bgcolor="#FFFFFF"> 
    <td>组 件 名 称</td>
    <td>支持及版本</td>
  </tr>
  <%For i=24 to 25%>
  <tr bgcolor="#FFFFFF" height="18"> 
    <td align=left>&nbsp;<%=ObjTotest(i,0) & "<font color=#888888>&nbsp;" & ObjTotest(i,1)%></td>
    <td align=left>&nbsp; 
      <%
		If Not ObjTotest(i,2) Then 
			Response.Write "<font color=red><b>×</b></font>"
		Else
			Response.Write "<font color=red><b>√</b></font> <a title='" & ObjTotest(i,3) & "'>" & left(ObjTotest(i,3),11) & "</a>"
		End If%>
    </td>
  </tr>
  <%next%>
    <tr bgcolor="#FFFFFF"> 
    <td colspan="2" align="left"><p>■ QuickWAP组件</p>
      </td>
  </tr>
  <tr align=center bgcolor="#FFFFFF"> 
    <td>组 件 名 称</td>
    <td>支持及版本</td>
  </tr>
  <%For i=26 to 29%>
  <tr bgcolor="#FFFFFF" height="18"> 
    <td align=left>&nbsp;<%=ObjTotest(i,0) & "<font color=#888888>&nbsp;" & ObjTotest(i,1)%></td>
    <td align=left>&nbsp; 
      <%
		If Not ObjTotest(i,2) Then 
			Response.Write "<font color=red><b>×</b></font>"
		Else
			Response.Write "<font color=red><b>√</b></font> <a title='" & ObjTotest(i,3) & "'>" & left(ObjTotest(i,3),11) & "</a>"
		End If%>
    </td>
  </tr>
  <%next%>
  <tr bgcolor="#FFFFFF"> 
    <td colspan="2" align="left">■ 其他组件支持情况检测　 在下面的输入框中输入你要检测的组件的ProgId或ClassId。</td>
  </tr>
  <tr bgcolor="#FFFFFF"> 
    <td colspan="2" align="left"><table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" width="100%">
        <FORM action=<%=Request.ServerVariables("SCRIPT_NAME")%> method=post id=form1 name=form1>
          <tr height="18"> 
            <td height=30><div align="center"> 
                <input class="input_text" type=text value="" name="classname" size=60>
                <INPUT type=submit value=" 确　定 " class="input_submit" id=submit1 name=submit1>
                　　 
                <INPUT type=reset value=" 重　填 " class="input_submit" id=reset1 name=reset1>
              </div></td>
          </tr>
        </FORM>
      </table></td>
  </tr>
</table>

<br>
<table width="100%"  border="0" cellpadding="2" cellspacing="1" bgcolor="#DEDFDE">
  <tr bgcolor="#f7f7f7">
    <td colspan="6"><%
Response.Flush



if ObjTest("Scripting.FileSystemObject") then

	set fsoobj=server.CreateObject("Scripting.FileSystemObject")

%>磁盘相关测试</td>
  </tr>
  <tr bgcolor="#FFFFFF">
    <td colspan="6">■ 服务器磁盘信息 </td>
  </tr>
  <tr align=center bordercolor="#3F8805" bgcolor="#FFFFFF" height="18">
    <td width="16%">盘符和磁盘类型</td>
    <td width="16%">就绪</td>
    <td width="16%">卷标</td>
    <td width="16%">文件系统</td>
    <td width="16%">可用空间</td>
    <td width="16%">总空间</td>
  </tr>
  <%

	' 测试磁盘信息的想法来自“COCOON ASP 探针”
	
	set drvObj=fsoobj.Drives
	for each d in drvObj
%>
  <tr align=center bgcolor="#FFFFFF" height="18">
    <td align="right"><%=cdrivetype(d.DriveType) & " " & d.DriveLetter%>:</td>
    <%
	if d.DriveLetter = "A" then	'为防止影响服务器，不检查软驱
		Response.Write "<td></td><td></td><td></td><td></td><td></td>"
	else
%>
    <td><%=cIsReady(d.isReady)%></td>
    <td><%=d.VolumeName%></td>
    <td><%=d.FileSystem%></td>
    <td align="right"><%=cSize(d.FreeSpace)%></td>
    <td align="right"><%=cSize(d.TotalSize)%></td>
    <%
	end if
%>
  </tr>
<%
	next
%>
  <tr bgcolor="#FFFFFF">
    <td colspan="6">■ 当前文件夹信息
      <%

Response.Flush


	dPath = server.MapPath("./")
	set dDir = fsoObj.GetFolder(dPath)
	set dDrive = fsoObj.GetDrive(dDir.Drive)
%>
文件夹: <%=dPath%> </td>
  </tr>
  <tr bgcolor="#FFFFFF">
    <td align="center" bgcolor="#FFFFFF">已用空间</td>
    <td align="center" bgcolor="#FFFFFF">可用空间</td>
    <td align="center" bgcolor="#FFFFFF">文件夹数</td>
    <td align="center" bgcolor="#FFFFFF">文件数</td>
    <td colspan="2" align="center">创建时间</td>
  </tr>
  <tr bgcolor="#FFFFFF">
    <td align="center"><%=cSize(dDir.Size)%></td>
    <td align="center"><%=cSize(dDrive.AvailableSpace)%></td>
    <td align="center"><%=dDir.SubFolders.Count%></td>
    <td align="center"><%=dDir.Files.Count%></td>
    <td colspan="2" align="center"><%=dDir.DateCreated%></td>
  </tr>
  <tr bgcolor="#FFFFFF">
    <td colspan="6">■ 磁盘文件操作速度测试</td>
  </tr>
  <tr bgcolor="#FFFFFF">
    <td colspan="6"><%
Response.Flush


	' 测试文件读写的想法来自“迷城浪子”
	
	Response.Write "正在重复创建、写入和删除文本文件50次..."

	dim thetime3,tempfile,iserr

iserr=false
	t1=timer
	tempfile=server.MapPath("./") & "\aspchecktest.txt"
	for i=1 to 50
		Err.Clear

		set tempfileOBJ = FsoObj.CreateTextFile(tempfile,true)
		if Err <> 0 then
			Response.Write "创建文件错误！<br><br>"
			iserr=true
			Err.Clear
			exit for
		end if
		tempfileOBJ.WriteLine "Only for test. Ajiang ASPcheck"
		if Err <> 0 then
			Response.Write "写入文件错误！<br><br>"
			iserr=true
			Err.Clear
			exit for
		end if
		tempfileOBJ.close
		Set tempfileOBJ = FsoObj.GetFile(tempfile)
		tempfileOBJ.Delete 
		if Err <> 0 then
			Response.Write "删除文件错误！<br><br>"
			iserr=true
			Err.Clear
			exit for
		end if
		set tempfileOBJ=nothing
	next
	t2=timer
if iserr <> true then
	thetime3=cstr(int(( (t2-t1)*10000 )+0.5)/10)
	Response.Write "...已完成！<font color=red>" & thetime3 & "毫秒。</font><br>"
	Response.Flush

%>
    <%
end if

Response.Flush
	
	set fsoobj=nothing

end if%></td>
  </tr>
  <tr bgcolor="#FFFFFF">
    <td colspan="6">■ ASP脚本解释和运算速度测试</td>
  </tr>
  <tr bgcolor="#FFFFFF">
    <td colspan="6"><%
Response.Flush

	'感谢网际同学录 http://www.5719.net 推荐使用timer函数
	'因为只进行50万次计算，所以去掉了是否检测的选项而直接检测
	
	Response.Write "整数运算测试，正在进行50万次加法运算..."
	dim t1,t2,lsabc,thetime,thetime2
	t1=timer
	for i=1 to 500000
		lsabc= 1 + 1
	next
	t2=timer
	thetime=cstr(int(( (t2-t1)*10000 )+0.5)/10)
	Response.Write "...已完成！<font color=red>" & thetime & "毫秒。</font><br>"


	Response.Write "浮点运算测试，正在进行20万次开方运算..."
	t1=timer
	for i=1 to 200000
		lsabc= 2^0.5
	next
	t2=timer
	thetime2=cstr(int(( (t2-t1)*10000 )+0.5)/10)
	Response.Write "...已完成！<font color=red>" & thetime2 & "毫秒。</font><br>"
%>
</td>
  </tr>
</table>
</BODY>
</HTML>

<%
function cdrivetype(tnum)
    Select Case tnum
        Case 0: cdrivetype = "未知"
        Case 1: cdrivetype = "可移动磁盘"
        Case 2: cdrivetype = "本地硬盘"
        Case 3: cdrivetype = "网络磁盘"
        Case 4: cdrivetype = "CD-ROM"
        Case 5: cdrivetype = "RAM 磁盘"
    End Select
end function

function cIsReady(trd)
    Select Case trd
		case true: cIsReady="<b>√</b>"
		case false: cIsReady="<font color='red'><b>×</b>"
	End Select
end function

function cSize(tSize)
    if tSize>=1073741824 then
		cSize=int((tSize/1073741824)*1000)/1000 & " GB"
    elseif tSize>=1048576 then
    	cSize=int((tSize/1048576)*1000)/1000 & " MB"
    elseif tSize>=1024 then
		cSize=int((tSize/1024)*1000)/1000 & " KB"
	else
		cSize=tSize & "B"
	end if
end function

sub getsysinfo()
  on error resume next
  Set WshShell = server.CreateObject("WScript.Shell")
  Set WshSysEnv = WshShell.Environment("SYSTEM")
  okOS = cstr(WshSysEnv("OS"))
  okCPUS = cstr(WshSysEnv("NUMBER_OF_PROCESSORS"))
  okCPU = cstr(WshSysEnv("PROCESSOR_IDENTIFIER"))
  if isnull(okCPUS) then
    okCPUS = Request.ServerVariables("NUMBER_OF_PROCESSORS")
  elseif okCPUS="" then
    okCPUS = Request.ServerVariables("NUMBER_OF_PROCESSORS")
  end if
  if Request.ServerVariables("OS")="" then okOS=okOS & "(可能是 Windows Server 2003)"
end sub
%>