%
Const QcomicFileExt="bmp|gif|jpeg|png|jpg|swf"
Dim Qcomic_setting,qcomic_code,qcomic_version
qcomic_version = "2.2"
If Dvbbs.qcomic_plus Then
Qcomic_setting = Split(Dvbbs.qcomic_plus_setting(), "||||")
qcomic_code=AuthCode(Request("code"), "DECODE", Qcomic_setting(3))
If instrrev(qcomic_code, "spassword="&Qcomic_setting(2))=0 Then
Response.Write "wrong password"
Response.End
End If
End If
If Request("action")="attach" Then
qcomic_do_attach(Request("info"))
End If
If Request("action")="network" Then
qcomic_do_network()
End If
If Request("action")="version" Then
qcomic_do_version()
End If
If Request("action")="proxy" Then
qcomic_do_proxy()
End If
Sub qcomic_do_attach(qcomic_info)
Dim qcomic_xml,objXML,tid,pid,qlength,i
'qcomic_xml = "3330baidu.gifbaidu1.gifhttp://www.baidu.com/img/logo-yy.gif1618baidu2.gifhttp://www.baidu.com/img/logo-yy.gif1618"
qcomic_xml = qcomic_info
Set objXML = Server.CreateObject("Microsoft.XMLDOM")
objXML.validateonparse = true
objXML.async=false
objXML.loadXML(qcomic_xml)
pid = Dvbbs.CheckNumeric(objXML.documentElement.childnodes(0).text)
tid = Dvbbs.CheckNumeric(objXML.documentElement.childnodes(1).text)
qlength=objXML.documentElement.getElementsByTagName("ditem").Length
If instrrev(qcomic_code, "pid="&pid)=0 Then
Response.Write "wrong password"
Response.End
End If
Redim delimgs(0, qlength-1)
For i=0 To qlength-1
delimgs(0,i)=objXML.documentElement.getElementsByTagName("ditem")(i).childnodes(0).text
Next
qlength=objXML.documentElement.getElementsByTagName("nitem").Length
Redim newimgs(2, qlength-1)
For i=0 To qlength-1
newimgs(0,i)=objXML.documentElement.getElementsByTagName("nitem")(i).childnodes(0).text
newimgs(1,i)=objXML.documentElement.getElementsByTagName("nitem")(i).childnodes(1).text
newimgs(2,i)=objXML.documentElement.getElementsByTagName("nitem")(i).childnodes(2).text
Next
Dim TotalUseTable,rs_,uid,uname,fid,topic,body,body_length,body_ubb,isupload
TotalUseTable = Dvbbs.NowUseBBS
Set rs_=Dvbbs.Execute("select BoardID,UserName,postuserid,Topic,Body,length,UbbList,isupload from "&TotalUseTable&" where AnnounceID="&pid)
If Not (rs_.Eof And rs_.Bof) Then
fid=rs_(0)
uname=rs_(1)
uid=rs_(2)
topic=rs_(3)
body=rs_(4)
body_length=rs_(5)
body_ubb=rs_(6)
isupload=rs_(7)
If instrrev(body_ubb, ",2,")=0 Then body_ubb = ",2"&body_ubb
End If
Set rs_=Nothing
Dim info_attaches,total,info_total,idx,fext,newid,FilePath,ChildFilePath
Set rs_=Dvbbs.Execute("SELECT F_OldName,F_ID,F_Filename FROM Dv_Upfile WHERE F_AnnounceID='"&tid&"|"&pid&"'")
If Not (rs_.Eof And rs_.Bof) Then
info_attaches = rs_.GetRows
info_total = Ubound(info_attaches, 2)
Else
info_total = -1
End If
Set rs_=Nothing
If info_total<>-1 Then
total=Ubound(delimgs, 2)
For i=0 To total
idx = qcomic_find_fname(info_attaches, delimgs(0,i), info_total)
Do While idx <> -1
call qcomic_delete_fname(info_attaches(1,idx), info_attaches(2,idx))
fext = qcomic_get_fext(delimgs(0,i))
body = Replace(body, "[upload="&fext&","&delimgs(0,i)&"]viewFile.asp?ID="&info_attaches(1,idx)&"[/upload]
", "")
idx = qcomic_find_fname(info_attaches, delimgs(0,i), idx-1)
Loop
Next
End If
'上传目录
FilePath = CreatePath(CheckFolder)
'不带系统上传目录的下级目录路径
ChildFilePath = Replace(FilePath,CheckFolder,"")
total=Ubound(newimgs, 2)
For i=0 To total
idx = qcomic_find_fname(info_attaches, newimgs(0,i), info_total)
If idx=-1 Then
newid = qcomic_insert_fname(newimgs(1,i),newimgs(0,i),newimgs(2,i),ChildFilePath,tid,pid,fid,uid,uname,topic)
If (newid<>-1) Then
fext = qcomic_get_fext(newimgs(0,i))
body = body & "[upload="&fext&","&newimgs(0,i)&"]viewFile.asp?ID="&newid&"[/upload]
"
End If
End If
Next
Set rs_=Dvbbs.Execute("SELECT F_OldName,F_ID,F_Filename FROM Dv_Upfile WHERE F_AnnounceID='"&tid&"|"&pid&"'")
If Not (rs_.Eof And rs_.Bof) Then
info_total = 0
Else
info_total = -1
End If
Set rs_=Nothing
body = Dvbbs.CheckStr(body)
body_ubb = Dvbbs.CheckStr(body_ubb)
If info_total<>-1 Then
Dvbbs.Execute("update "&TotalUseTable&" set isupload=1,Body='"&body&"',Length="&Len(body)&",Ubblist='"&body_ubb&"' where AnnounceID="&pid)
Else
Dvbbs.Execute("update "&TotalUseTable&" set isupload=0,Body='"&body&"',Length="&Len(body)&",Ubblist='"&body_ubb&"' where AnnounceID="&pid)
End If
Response.Write "ok"
Response.End
End Sub
Function qcomic_find_fname(arr, fname, idx)
Dim i
fname = Left(Dvbbs.Checkstr(fname),50)
For i=idx To 0 Step -1
If arr(0,i)=fname Then
qcomic_find_fname = i
Exit Function
End If
Next
qcomic_find_fname = -1
End Function
Function qcomic_get_fext(fname)
Dim pos
pos = instrrev(fname, ".")
qcomic_get_fext = Right(fname, Len(fname)-pos)
End Function
Sub qcomic_delete_fname(fid, fpath)
fid = Dvbbs.CheckNumeric(fid)
Dim objFSO,Filepath
Filepath = Dvbbs.Forum_Setting(76)&fpath
Set objFSO = Dvbbs.iCreateObject("Scripting.FileSystemObject")
If objFSO.FileExists(Server.MapPath(Filepath)) Then
objFSO.DeleteFile(Server.MapPath(Filepath))
End If
Dvbbs.Execute("Delete from Dv_Upfile Where F_ID="&fid)
End Sub
Function qcomic_insert_fname(furl,fname,fsize,ChildFilePath,tid,pid,fid,uid,uname,topic)
Dim http,imgcont,objStream,Filepath,fpath,fext,rs_,newid
fext=qcomic_get_fext(fname)
If InStr("|"&QcomicFileExt&"|","|"&fext&"|")=0 Then '非法文件后缀,程序中止。
Response.Write "wrong FileExt!"
Response.End
End If
fpath=ChildFilePath&FormatName(fext, fname)
Filepath = Dvbbs.Forum_Setting(76)&fpath
furl = Dvbbs.Checkstr(furl)
fname = Dvbbs.Checkstr(fname)
fsize = Dvbbs.CheckNumeric(fsize)
ChildFilePath = Dvbbs.Checkstr(ChildFilePath)
tid = Dvbbs.CheckNumeric(tid)
pid = Dvbbs.CheckNumeric(pid)
fid = Dvbbs.CheckNumeric(fid)
uid = Dvbbs.CheckNumeric(uid)
uname = Dvbbs.Checkstr(uname)
topic = Dvbbs.Checkstr(topic)
set http=server.createobject("MSXML2.XMLHTTP")
Http.open "GET",furl,false
Http.send()
imgcont=Http.responseBody
set http=nothing
Set objStream = Server.CreateObject("ado"&"db"&"."&"str"&"eam")
objStream.Type =1
objStream.Open
objstream.write imgcont
If objstream.Size=clng(fsize) Then
objstream.SaveToFile server.mappath(Filepath),2
Dvbbs.Execute("Insert into Dv_upFile (F_AnnounceID,F_BoardID,F_UserID,F_Username,F_Filename,F_Viewname,F_FileType,F_Type,F_FileSize,F_Flag,F_Readme,F_OldName) values ('"&tid&"|"&pid&"',"&fid&","&uid&",'"&uname&"','"&fpath&"','','"&fext&"',0,"&fsize&",4,'"&Left(topic,250)&"','"&Left(fname,50)&"')")
Set rs_=Dvbbs.Execute("Select top 1 F_ID From Dv_upFile order by F_ID desc")
newid=rs_(0)
rs_.Close
Set rs_=nothing
qcomic_insert_fname = newid
Else
qcomic_insert_fname = -1
End If
objstream.Close()
set objstream=nothing
End Function
Sub qcomic_do_network()
Dim XmlHttp,qcomic_stime,qcomic_etime
qcomic_stime = Now()
Set XmlHttp = CreateObject("Micro"&"soft"&"."&"XML"&"HTTP")
XmlHttp.Open "GET","http://comic.qihoo.com/dvbbs/ping.php",false
XmlHttp.setRequestHeader "Content-Type", "application/x-www-form-urlencoded"
XmlHttp.send()
Response.Write xmlhttp.responseText
qcomic_etime = Now()
Response.Write qcomic_stime & " ==== " & qcomic_etime
Response.End
End Sub
Sub qcomic_do_version()
Response.Write qcomic_version
Response.End
End Sub
Sub qcomic_do_proxy()
Dim pos,rurl,rhost
rurl = Request("url")
pos = instr(8, rurl, "/")
rhost = Left(rurl, pos)
If (instr(rhost, "qihoo.com")) Then
Response.Redirect Request("url")
Else
Response.Write "Wrong param"
End If
Response.End
End Sub
'读取上传目录
Function CheckFolder()
If Dvbbs.Forum_Setting(76)="" Or Dvbbs.Forum_Setting(76)="0" Then Dvbbs.Forum_Setting(76)="UploadFile/"
CheckFolder = Replace(Replace(Dvbbs.Forum_Setting(76),Chr(0),""),".","")
'在目录后加(/)
If Right(CheckFolder,1)<>"/" Then CheckFolder=CheckFolder&"/"
End Function
'按月份自动明名上传文件夹,需要FSO组件支持。
Function CreatePath(PathValue)
Dim objFSO,Fsofolder,uploadpath
'以年月创建上传文件夹,格式:2003-8
uploadpath = year(now) & "-" & month(now)
If Right(PathValue,1)<>"/" Then PathValue = PathValue&"/"
On Error Resume Next
Set objFSO = Dvbbs.iCreateObject("Scripting.FileSystemObject")
If objFSO.FolderExists(Server.MapPath(PathValue & uploadpath))=False Then
objFSO.CreateFolder Server.MapPath(PathValue & uploadpath)
End If
If Err.Number = 0 Then
CreatePath = PathValue & uploadpath & "/"
Else
CreatePath = PathValue
End If
Set objFSO = Nothing
End Function
'日期时间定义文件名
Function FormatName(Byval FileExt,Byval FileName)
Dim RanNum,TempStr
Randomize
RanNum = Int(90000*rnd)+10000
TempStr = Year(now) & Month(now) & Day(now) & Hour(now) & Minute(now) & Second(now) & RanNum & "." & FileExt
FormatName = TempStr
End Function
'Response.Write "zzz"
'http://localhost/dvbbs2/qcomic.asp?action=attach&code=DJNYGBHgCzoZb1J1rvKg4Oj6sh0J32Ct
'http://www.hbjjrb.com/Jishu/ASP/200704/17150.html
%>