<!--#include file="Admin.asp"-->
<!--#include file="cf.asp" -->
<!--#include file="conn.asp" -->

<title>数据库管理页面</title>
<link href=../include/css.css rel=stylesheet>
<meta NAME=GENERATOR Content="Microsoft FrontPage 3.0" CHARSET=GB2312>
<BODY leftmargin="0" bottommargin="0" rightmargin="0" topmargin="0" marginheight="0" marginwidth="0" bgcolor="#DDEEFF">
<%
dim action
action=trim(request("action"))

dim dbpath,bkfolder,bkdbname,fso,fso1

select case action
case "CompressData"		'压缩数据
	'if not supermaster or session("flag")="" then
	'	Errmsg=Errmsg+"<br>"+"<li>本页面为管理员专用，请<a href=admin_index.asp target=_top>登陆</a>后进入。<br><li>您没有管理本页面的权限。"
	'	call txl_error()
	'else
		dim tmprs
		dim allarticle
		dim Maxid
		dim topic,dateandtime,body
		call CompressData()

	'end if	

case "BackupData"		'备份数据
	'if not supermaster or session("flag")="" then
	'	Errmsg=Errmsg+"<br>"+"<li>本页面为管理员专用，请<a href=admin_index.asp target=_top>登陆</a>后进入。<br><li>您没有管理本页面的权限。"
	'	call txl_error()
	'else
		if request("act")="Backup" then
			call updata()
		else
			call BackupData()
		end if
	'end if

case "RestoreData"		'恢复数据
	dim backpath
	'if not supermaster or session("flag")="" then
	'	Errmsg=Errmsg+"<br>"+"<li>本页面为管理员专用，请<a href=admin_index.asp target=_top>登陆</a>后进入。<br><li>您没有管理本页面的权限。"
	'	call txl_error()
	'else
		if request("act")="Restore" then
			Dbpath=request.form("Dbpath")
			backpath=request.form("backpath")
			if dbpath="" then
			response.write "请输入您要恢复成的数据库全名"	
			else
			Dbpath=server.mappath(Dbpath)
			end if
			backpath=server.mappath(backpath)
		
			Set Fso=server.createobject("scripting.filesystemobject")
			if fso.fileexists(dbpath) then  					
			fso.copyfile Dbpath,Backpath
			response.write "成功恢复数据！"
			else
			response.write "备份目录下并无您的备份文件！"	
			end if
		else
		call RestoreData()
		end if
	'end if
case "seeserver"
	call seeserver()
case "dosql"
	call dosql()
case else
	response.Write "请选取相应的操作"
	'	Errmsg=Errmsg+"<br>"+"<li>选取相应的操作。"
	'	call txl_error()

end select

conn.close
set conn=nothing
response.write"</body></html>"

'====================恢复数据库=========================
sub RestoreData()
%>
<table border="0"  cellspacing="1" cellpadding="5" height="1" align=center width="95%" class="tableBorder">
<tr>
	<th height=25 >
   					&nbsp;&nbsp;<B>恢复论坛数据</B>( 需要FSO支持，FSO相关帮助请看微软网站 )
  					</th>
  				</tr>
				<form method="post" action="ADMIN_data.asp?action=RestoreData&act=Restore">
  				
  				<tr>
  					<td height=100 class="txlrow">
  						&nbsp;&nbsp;备份数据库路径(相对)：<input type=text size=30 name=DBpath value="DataBackup\OYAYA_Backup.MDB">
  						&nbsp;&nbsp;<BR>
  						&nbsp;&nbsp;目标数据库路径(相对)：<input type=text size=30 name=backpath value="<%=Db%>">
  						<BR>&nbsp;&nbsp;填写您当前使用的数据库路径，如不想覆盖当前文件，可自行命名（注意路径是否正确），然后修改conn.asp文件，如果目标文件名和当前使用数据库名一致的话，不需修改conn.asp文件<BR>
						&nbsp;&nbsp;<input type=submit value="恢复数据"> <br>
  						-----------------------------------------------------------------------------------------<br>
  						&nbsp;&nbsp;在上面填写本程序的数据库路径全名，本程序的默认备份数据库文件为DataBackup\OYAYA_Backup.MDB，请按照您的备份文件自行修改。<br>
  						&nbsp;&nbsp;您可以用这个功能来备份您的法规数据，以保证您的数据安全！<br>
  						&nbsp;&nbsp;注意：所有路径都是相对与程序空间根目录的相对路径</font>
  					</td>
  				</tr>	
  				</form>
  			</table>
<%
end sub

'====================备份数据库=========================
sub BackupData()
%>
	<table border="0"  cellspacing="1" cellpadding="5" height="1" align=center width="95%" class="tableBorder">
  				<tr>
  					<th height=25 >
  					&nbsp;&nbsp;<B>备份论坛数据</B>( 需要FSO支持，FSO相关帮助请看微软网站 )
  					</th>
  				</tr>
  				<form method="post" action="ADMIN_data.asp?action=BackupData&act=Backup">
  				<tr>
  					<td height=100 class="txlrow">
  						&nbsp;&nbsp;
						当前数据库路径(相对路径)：<input type=text size=30 name=DBpath value="<%=Db%>">
						<BR>
						&nbsp;&nbsp;
						备份数据库目录(相对路径)：<input type=text size=30 name=bkfolder value=Databackup>
						&nbsp;如目录不存在，程序将自动创建<BR>
						&nbsp;&nbsp;
						备份数据库名称(填写名称)：<input type=text size=30 name=bkDBname value=OYAYA_Backup.MDB>
						&nbsp;如备份目录有该文件，将覆盖，如没有，将自动创建<BR>
						&nbsp;&nbsp;<input type=submit value="确定"><br>
  						-----------------------------------------------------------------------------------------<br>
  						&nbsp;&nbsp;在上面填写本程序的数据库路径全名，本程序的默认数据库文件为Include\#oyaya#news.mdb，<B>请一定不能用默认名称命名备份数据库</B><br>
  						&nbsp;&nbsp;您可以用这个功能来备份您的法规数据，以保证您的数据安全！<br>
  						&nbsp;&nbsp;注意：所有路径都是相对与程序空间根目录的相对路径				</font>
  					</td>
  				</tr>	
  				</form>
  			</table>
<%
end sub

sub updata()
		Dbpath=request.form("Dbpath")
		Dbpath=server.mappath(Dbpath)
		bkfolder=request.form("bkfolder")
		bkdbname=request.form("bkdbname")
		Set Fso=server.createobject("scripting.filesystemobject")
		if fso.fileexists(dbpath) then
			If CheckDir(bkfolder) = True Then
			fso.copyfile dbpath,bkfolder& "\"& bkdbname
			else
			MakeNewsDir bkfolder
			fso.copyfile dbpath,bkfolder& "\"& bkdbname
			end if
			response.write "备份数据库成功，您备份的数据库路径为" &bkfolder& "\"& bkdbname
		Else
			response.write "找不到您所需要备份的文件。"
		End if
end sub
'------------------检查某一目录是否存在-------------------
Function CheckDir(FolderPath)
	folderpath=Server.MapPath(".")&"\"&folderpath
    Set fso1 = CreateObject("Scripting.FileSystemObject")
    If fso1.FolderExists(FolderPath) then
       '存在
       CheckDir = True
    Else
       '不存在
       CheckDir = False
    End if
    Set fso1 = nothing
End Function
'-------------根据指定名称生成目录-----------------------
Function MakeNewsDir(foldername)
	dim f
    Set fso1 = CreateObject("Scripting.FileSystemObject")
        Set f = fso1.CreateFolder(foldername)
        MakeNewsDir = True
    Set fso1 = nothing
End Function


'====================压缩数据库 =========================
sub CompressData()
%>
<table border="0"  cellspacing="1" cellpadding="5" height="1" align=center width="95%" class="tableBorder">
<form action="Admin_data.asp?action=CompressData" method="post">
<tr>
<td class="txlrow" height=25><b>注意：</b><br>输入数据库所在相对路径,并且输入数据库名称（正在使用中数据库不能压缩，请选择备份数据库进行压缩操作） </td>
</tr>
<tr>
<td class="txlrow">压缩数据库：<input name="dbpath" type="text" value="DataBackup\OYAYA_Backup.MDB" size="30">
&nbsp;
<input type="submit" value="开始压缩"></td>
</tr>
<tr>
<td class="txlrow"><input type="checkbox" name="boolIs97" value="True">如果使用 Access 97 数据库请选择
(默认为 Access 2000 数据库)<br><br></td>
</tr>
<form>
</table>
<%
dim dbpath,boolIs97
dbpath = request("dbpath")
boolIs97 = request("boolIs97")

If dbpath <> "" Then
dbpath = server.mappath(dbpath)
	response.write(CompactDB(dbpath,boolIs97))
End If

end sub

'=====================压缩参数=========================
Function CompactDB(dbPath, boolIs97)
Dim fso, Engine, strDBPath,JET_3X
strDBPath = left(dbPath,instrrev(DBPath,"\"))
Set fso = CreateObject("Scripting.FileSystemObject")

If fso.FileExists(dbPath) Then
Set Engine = CreateObject("JRO.JetEngine")

	If boolIs97 = "True" Then
		Engine.CompactDatabase "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & dbpath, _
		"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strDBPath & "temp.mdb;" _
		& "Jet OLEDB:Engine Type=" & JET_3X
	Else
		Engine.CompactDatabase "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & dbpath, _
		"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strDBPath & "temp.mdb"
	End If

fso.CopyFile strDBPath & "temp.mdb",dbpath
fso.DeleteFile(strDBPath & "temp.mdb")
Set fso = nothing
Set Engine = nothing

	CompactDB = "你的数据库, " & dbpath & ", 已经压缩成功!" & vbCrLf

Else
	CompactDB = "数据库名称或路径不正确. 请重试!" & vbCrLf
End If

End Function
%>                                                                        
<%sub seeserver()
Dim theInstalledObjects(17)
theInstalledObjects(0) = "MSWC.AdRotator"
theInstalledObjects(1) = "MSWC.BrowserType"
theInstalledObjects(2) = "MSWC.NextLink"
theInstalledObjects(3) = "MSWC.Tools"
theInstalledObjects(4) = "MSWC.Status"
theInstalledObjects(5) = "MSWC.Counters"
theInstalledObjects(6) = "IISSample.ContentRotator"
theInstalledObjects(7) = "IISSample.PageCounter"
theInstalledObjects(8) = "MSWC.PermissionChecker"
theInstalledObjects(9) = "Scripting.FileSystemObject"
theInstalledObjects(10) = "adodb.connection"
theInstalledObjects(11) = "SoftArtisans.FileUp"
theInstalledObjects(12) = "SoftArtisans.FileManager"
theInstalledObjects(13) = "JMail.SMTPMail"
theInstalledObjects(14) = "CDONTS.NewMail"
theInstalledObjects(15) = "Persits.MailSender"
theInstalledObjects(16) = "LyfUpload.UploadFile"
theInstalledObjects(17) = "Persits.Upload.1"
%>
<br><table width="95%" cellspacing="1" cellpadding="5" align=center bgcolor=999999>
<tr bgcolor=#ffcc00><td colspan="2"  height=25><b>服务器有关的变量</b></td></tr>
<tr bgcolor=#efefef><td valign=top>显示客户发出的所有HTTP标题</td><td><%=request.ServerVariables("All_Http")%></td></tr>
<tr bgcolor=#efefef><td valign=top>检取ISAPIDLL的metabase路径</td><td><%=request.ServerVariables("APPL_MD_PATH")%></td></tr>
<tr bgcolor=#efefef><td valign=top>显示站点物理路径</td><td><%=request.ServerVariables("APPL_PHYSICAL_PATH")%></td></tr>
<tr bgcolor=#efefef><td valign=top>路径信息</td><td><%=request.ServerVariables("PATH_INFO")%></td></tr>
<tr bgcolor=#efefef><td valign=top>显示请求机器IP地址</td><td><%=request.ServerVariables("REMOTE_ADDR")%></td></tr>
<tr bgcolor=#efefef><td valign=top>服务器IP地址</td><td><%=Request.ServerVariables("LOCAL_ADDR")%></td></tr>
<tr bgcolor=#efefef><td valign=top>显示执行SCRIPT的虚拟路径</td><td><%=request.ServerVariables("SCRIPT_NAME")%></td></tr>
<tr bgcolor=#efefef><td valign=top>返回服务器的主机名，DNS别名，或IP地址</td><td><%=request.ServerVariables("SERVER_NAME")%></td></tr>
<tr bgcolor=#efefef><td valign=top>返回服务器处理请求的端口</td><td><%=request.ServerVariables("SERVER_PORT")%></td></tr>
<tr bgcolor=#efefef><td valign=top>协议的名称和版本</td><td><%=request.ServerVariables("SERVER_PROTOCOL")%></td></tr>
<tr bgcolor=#efefef><td valign=top>服务器的名称和版本</td><td><%=request.ServerVariables("SERVER_SOFTWARE")%></td></tr>
<tr bgcolor=#efefef><td valign=top>服务器操作系统</td><td><%=Request.ServerVariables("OS")%></td></tr>
<tr bgcolor=#efefef><td valign=top>脚本超时时间</td><td><%=Server.ScriptTimeout%> 秒</td></tr>
<tr bgcolor=#efefef><td valign=top>服务器CPU数量</td><td><%=Request.ServerVariables("NUMBER_OF_PROCESSORS")%> 个</td></tr>
<tr bgcolor=#efefef><td valign=top width=30%>服务器解译引擎</td><td><%=ScriptEngine & "/"& ScriptEngineMajorVersion &"."&ScriptEngineMinorVersion&"."& ScriptEngineBuildVersion %></td></tr>
</table>
<br><table width="95%" cellspacing="1" cellpadding="5" align=center bgcolor=999999>
<tr bgcolor=#ffcc00><td colspan="3" height=25 ><b>组件支持情况</b></td></tr>
<tr><td colspan="3" height=25 bgcolor=#f8f8f8 ><b>－－IIS自带组件</td></tr>
<tr height=22 align=center bgcolor=#cccccc><td width="70%">组 件 名 称</td><td width="15%">支 持</td><td width="15%">不支持</td></tr>
<%dim i
For i=0 to 10
Response.Write "<TR bgcolor=#efefef align=center height=20><TD align=left>&nbsp;" & theInstalledObjects(i) & "<font color=#888888>&nbsp;"
select case i
case 9
Response.Write "(FSO 文本文件读写)"
case 10
Response.Write "(ACCESS 数据库)"
end select
Response.Write "</font></td>"
If Not IsObjInstalled(theInstalledObjects(i)) Then 
Response.Write "<td></td><td><font color=red><b>×</b></font></td>"
Else
Response.Write "<td><b>√</b></td><td></td>"
End If
Response.Write "</TR>" & vbCrLf
Next
%>
<tr><td colspan="3" height=25 bgcolor=#f8f8f8 ><b>－－其他常见组件</td></tr>
<tr height=22 align=center bgcolor=#cccccc><td width="70%">组 件 名 称</td><td width="15%">支 持</td><td width="15%">不支持</td></tr>
<% For i=11 to UBound(theInstalledObjects)
Response.Write "<TR align=center height=20 bgcolor=#efefef><TD align=left>&nbsp;" & theInstalledObjects(i) & "<font color=#888888>&nbsp;"
select case i
case 11
Response.Write "(SA-FileUp 文件上传)"
case 12
Response.Write "(SA-FM 文件管理)"
case 13
Response.Write "(JMail 邮件发送)"
case 14
Response.Write "(CDONTS 邮件发送 SMTP Service)"
case 15
Response.Write "(ASPEmail 邮件发送)"
case 16
Response.Write "(LyfUpload 文件上传)"
case 17
Response.Write "(ASPUpload 文件上传)"
end select
Response.Write "</font></td>"
If Not IsObjInstalled(theInstalledObjects(i)) Then 
Response.Write "<td></td><td><font color=red><b>×</b></font></td>"
Else
Response.Write "<td><b>√</b></td><td></td>"
End If
Response.Write "</TR>" & vbCrLf
Next
%>
</table>
<hr size=1 width=95%><br><br>
<%
end sub
Function IsObjInstalled(strClassString)
On Error Resume Next
IsObjInstalled = False
Err = 0
Dim xTestObj
Set xTestObj = Server.CreateObject(strClassString)
If 0 = Err Then IsObjInstalled = True
Set xTestObj = Nothing
Err = 0
End Function
%>
<%sub dosql()%>
<br>
<table width=95% cellspacing=1 cellpadding=5  align=center>
<tr ><td><p><b>SOL语句执行操作</b></p>
<p>注意：本操作仅限高级、对SQL编程比较熟悉的用户，您可以直接输入sql执行语句。

在操作前请慎重考虑您的执行语句是否正确和完整，执行后不可恢复。</p></td></tr>
<tr ><td>	
<%
if request("method") = "go" then
SQL_Statement=Request("SQL_Statement")
if SQL_Statement<>Empty then
On Error Resume Next 
conn.Execute(SQL_Statement)
if err.number="0" then
response.write "<br><center><font color=red>SQL命令执行成功！</font>"
'response.redirect"admin_data.asp?action=dosql"
else
response.write "<br><center>语句有问题，具体出错如下：<br><br><font color=red>"
response.write Err.Description
response.write "</font>"
err.clear
end if
end if
else
%>
<table cellspacing="3" cellpadding="0">
<tr><td width="100%" >
<Form Name=FormPst Method=Post Action="admin_data.asp?action=dosql&method=go">
<FieldSet><Legend>请输入SQL语句</Legend>
<br>指令：<Input type="text" name="SQL_Statement" Size=80><br> 
<p align=center><Input type="Submit" Value="送出">  <Input type="reset" Value="清除"><br><br></p>
</FieldSet>
</Form></td></tr></table>
<%end if%>
<%end sub%>
