<% if session ("WinMyDNSUserName")="" then response.redirect "index.asp" response.end end if %> WinMyDNS管理

 

 

 

 

 

 

 

 

 

 

 


<%response.write SafeRequest("Mesg")%>
<% act=SafeRequest("act") ID= SafeRequest("ID") if ID<>"" then set rsd = conn.execute("select * from soa where ID="&ID) origin=rsd("origin") username=rsd("username") if session("WinMyDNSUserName")<>username and session("WinMyDNSIsAdmin")<>"Y" then PopMsg "对不起,您没有管理该域名的权限" end if rsd.close end if select case act case "add_pre" call Add_Pre() case "edit_pre" call Edit_Pre() case "add" if session("WinMyDNSIsAdmin")<>"Y" then set rsn = conn.execute("select count(*) from soa where [username]='"&session("WinMyDNSUserName")&"' ") soanum=rsn(0) if soanum>=session("WinMyDNSsoanum") then PopMsg "对不起,最多只能添加["&session("WinMyDNSsoanum")&"]个域名" rsn.close if instr(SafeRequest("origin"),"in-addr.arpa") then PopMsg "对不起,只有管理员才能添加反向解析" end if if SafeRequest("origin")="" then PopMsg "错误:域名不能为空" origin=SafeRequest("origin")&"." origin=replace(origin,"..",".") topdate=SafeRequest("topdate") enddate=SafeRequest("enddate") if topdate="" then topdate = date() if enddate="" then enddate = dateadd("yyyy",50,date()) if checkDomain(origin) <>0 then PopMsg "错误:请输入合法的域名" set rss=conn.execute("select * from soa where origin='"&origin&"' or origin='"&origin&".' ") if not rss.eof then PopMsg "错误:域名["&origin&"]已存在" rss.close '如果已存在abc.com的域名,不允许加入www.abc.com一类的域名 if session("WinMyDNSIsAdmin")<>"Y" then origin_t = origin do while instr(origin_t,".") origin_t = mid(origin_t,instr(origin_t,".")+1) set rss=conn.execute("select * from soa where origin='"&origin_t&"' or origin='"&origin_t&".' ") if not rss.eof then PopMsg "错误:已存在域名["&origin_t&"]" response.end end if rss.close loop end if conn.execute ("insert into soa (origin,ns,mbox,Serial,refresh,retry,expire,minimum,ttl,[username],yn,topdate,enddate) values ('"&origin&"','"&origin&"','"&origin&"',1,900,600,86400,3600,3600,'"&SafeRequest("username")&"','"&SafeRequest("yn")&"','"&topdate&"','"&enddate&"')") Mesg = "操作成功" response.redirect "DNS.asp?Mesg="&server.urlencode("操作成功") 'call List() case "edit" origin=SafeRequest("origin")&"." origin=replace(origin,"..",".") topdate=SafeRequest("topdate") enddate=SafeRequest("enddate") if topdate="" then topdate = date() if enddate="" then enddate = dateadd("yyyy",50,date()) conn.execute ("update soa set origin='"&origin&"', serial=(serial+1),[username]='"&SafeRequest("username")&"',yn='"&SafeRequest("yn")&"',topdate='"&topdate&"',enddate='"&enddate&"' where ID="&ID) Mesg = "操作成功" 'call List() response.redirect "DNS.asp?Mesg="&server.urlencode("操作成功") case "del" conn.execute (" delete from rr where [zone]="&SafeRequest("ID")) conn.execute (" delete from soa where id="&SafeRequest("ID")) 'Mesg = "操作成功" 'call List() response.redirect "DNS.asp?Mesg="&server.urlencode("操作成功") case "add_R" if session("WinMyDNSIsAdmin")<>"Y" then set rsn = conn.execute("select count(*) from rr where [zone]="&ID&" ") 'response.write "select count(*) from rr where zone=(select zone from rr where ID="&ID&") " 'response.end rrnum=rsn(0) if rrnum>=session("WinMyDNSrrnum") then PopMsg "对不起,最多只能添加["&session("WinMyDNSrrnum")&"]条记录" rsn.close end if if SafeRequest("rrtype")="A" then if checkIP(SafeRequest("rrdata")) <>0 then PopMsg "错误:请输入合法的IP" elseif SafeRequest("rrtype")="CNAME" then if checkDomain(SafeRequest("rrdata")) <>0 then PopMsg "错误:请输入合法的域名" elseif SafeRequest("rrtype")="MX" then if checkDomain(SafeRequest("rrdata")) <>0 then PopMsg "错误:请输入合法的域名" elseif SafeRequest("rrtype")="SRV" then if checkSrv(SafeRequest("rrdata")) <>0 then PopMsg "错误:请输入合法SRV参数值,格式是:srv域名:端口号,如:srv.winmydns.com:801" end if set rst=conn.execute("select a.*,b.netname from rr a left join net b on a.netid=b.id where [zone]="&SafeRequest("ID")&" and netid="&SafeRequest("netid")&" and name='"&SafeRequest("rrname")&"' and type='"&SafeRequest("rrtype")&"' order by a.aux desc " ) if not rst.eof then balance=rst("balance") rst.close if balance="" then balance="0" conn.execute("insert into rr ([zone],name,type,data,aux,ttl,netid,balance) values ("&SafeRequest("ID")&",'"&SafeRequest("rrname")&"','"&SafeRequest("rrtype")&"','"&SafeRequest("rrdata")&"','"&SafeRequest("rraux")&"',"&SafeRequest("rrttl")&","&SafeRequest("netid")&",'"&balance&"') ") conn.execute ("update soa set serial=(serial+1) where ID="&ID) 'Mesg = "操作成功" 'Query_R response.redirect "DNS.asp?act=query_R&ID="&ID&"&Mesg="&server.urlencode("操作成功") case "edit_R" if SafeRequest("rrtype")="A" then if checkIP(SafeRequest("rrdata")) <>0 then PopMsg "错误:请输入合法的IP" elseif SafeRequest("rrtype")="CNAME" then if checkDomain(SafeRequest("rrdata")) <>0 then PopMsg "错误:请输入合法的域名" elseif SafeRequest("rrtype")="MX" then if checkDomain(SafeRequest("rrdata")) <>0 then PopMsg "错误:请输入合法的域名" elseif SafeRequest("rrtype")="SRV" then if checkSrv(SafeRequest("rrdata")) <>0 then PopMsg "错误:请输入合法SRV参数值,格式是:srv域名:端口号,如:srv.winmydns.com:801" end if conn.execute("update rr set data='"&SafeRequest("rrdata")&"',aux="&SafeRequest("rraux")&",ttl="&SafeRequest("rrttl")&",netid="&SafeRequest("netid")&" where ID="&SafeRequest("rrID")&" ") conn.execute ("update soa set serial=(serial+1) where ID="&ID) Mesg = "操作成功" 'Query_R response.redirect "DNS.asp?act=query_R&ID="&ID&"&Mesg="&server.urlencode("操作成功") case "del_R" conn.execute("delete from rr where ID="&SafeRequest("rrID")&" ") conn.execute ("update soa set serial=(serial+1) where ID="&ID) Mesg = "操作成功" 'Query_R response.redirect "DNS.asp?act=query_R&ID="&ID&"&Mesg="&server.urlencode("操作成功") case "add_pre_R" Add_Pre_R 'response.end case "edit_pre_R" Edit_Pre_R 'response.end case "query" Query 'response.end case "query_R" Query_R 'response.end case "balance_R" balance_R case "balance_Set" rrID=SafeRequestInt("rrID") ID=SafeRequestInt("ID") balance=SafeRequestInt("balance") set rs=conn.execute("select a.*,b.netname from rr a left join net b on a.netid=b.id where a.ID="&SafeRequest("rrID")&" ") if rs.eof then PopErr "记录不存在" netid=rs("netid") name=rs("name") rrtype=rs("type") rs.close rrID=SafeRequestInt("rrID") balance=SafeRequestInt("balance") set rs=conn.execute("select a.*,b.netname from rr a left join net b on a.netid=b.id where [zone]="&ID&" and netid="&netid&" and name='"&name&"' and type='"&rrtype&"' order by a.aux desc " ) i=0 do while not rs.eof conn.execute("update rr set balance='"&balance&"',aux="&SafeRequestInt("aux_"&rs("ID"))&" where ID="&rs("ID")&" ") rs.movenext loop rs.close conn.execute ("update soa set serial=(serial+1) where ID="&ID) response.redirect "DNS.asp?act=query_R&ID="&ID&"&Mesg="&server.urlencode("操作成功") case "add_URL" set rsu=conn.execute("select origin from soa where ID="&ID) domain=rsu("origin") if mid(domain,len(domain)-1,1) ="." then domain=mid(domain,0,len(domain-1)) rrname=SafeRequest("rrname") if rrname<>"" then domain=rrname&"."&domain if session("WinMyDNSIsAdmin")<>"Y" then set rsn = conn.execute("select count(*) from URL where [domain]='"&domain&"' ") rrnum=rsn(0) if rrnum>=session("WinMyDNSrrnum") then PopMsg "对不起,最多只能添加["&session("WinMyDNSrrnum")&"]条记录" rsn.close end if conn.execute("insert into url ([domain],[url],urltype,netid) values ('"&domain&"','"&SafeRequest("rrdata")&"','"&SafeRequest("urltype")&"',"&SafeRequest("netid")&") ") 'Query_R response.redirect "DNS.asp?act=query_R&ID="&ID&"&Mesg="&server.urlencode("操作成功") case "edit_URL" conn.execute("update url set url='"&SafeRequest("rrdata")&"',urltype="&SafeRequest("urltype")&",netid="&SafeRequest("netid")&" where ID="&SafeRequest("rrID")&" ") Mesg = "操作成功" 'Query_R response.redirect "DNS.asp?act=query_R&ID="&ID&"&Mesg="&server.urlencode("操作成功") case "del_URL" conn.execute("delete from url where ID="&SafeRequest("rrID")&" ") Mesg = "操作成功" 'Query_R response.redirect "DNS.asp?act=query_R&ID="&ID&"&Mesg="&server.urlencode("操作成功") case else call List end select sub List() sdomain=SafeRequest("sdomain") sql = "select * from soa where origin like'%"&sdomain&"%' " '不是管理员,只能管理自已的域名 if session("WinMyDNSIsAdmin")<>"Y" then sql = sql & " and [username]='"&session("WinMyDNSUserName")&"' " end if sql = sql& " order by origin " set rs=server.createobject("adodb.recordset") rs.open sql,conn,1,1 if not rs.eof then if not isempty(SafeRequest("page")) then if IsNumeric(SafeRequest("page")) = True then pagecount=cint(SafeRequest("page")) else pagecount=1 end if else pagecount=1 end if PageSize = SafeRequest("PageSize") if PageSize="" or not IsNumeric(PageSize) then PageSize = "100" end if rs.pagesize=PageSize if pagecount>rs.pagecount or pagecount<=0 then pagecount=1 end if if not rs.eof then rs.AbsolutePage=pagecount end if if session("WinMyDNSIsAdmin")<>"Y" then sql_soa="select count(*) from soa where [username]='"&session("WinMyDNSUserName")&"'" sql_rr="select count(*) from rr where zone in (select id from soa where [username]='"&session("WinMyDNSUserName")&"') " else sql_soa="select count(*) from soa " sql_rr="select count(*) from rr " end if set rsa1=conn.execute(sql_soa) set rsa2=conn.execute(sql_rr) all_zone = rsa1(0) all_rr = rsa2(0) rsa1.close rsa2.close %> <%=SafeRequest("Mesg")%>
共有域名 [<%=all_zone%>] 个,解析记录数 [<%=all_rr%>] 条

<% i=1 do while not rs.eof yn = rs("yn") if isnull(yn) then yn="1" %> "> <% i=i+1 rs.movenext if i>rs.PageSize then exit do loop %>
DNS区域管理
域  名:    每页  条记录    
序号 域名 状态 开始时间 到期时间 会员名 修改 删除 解析
<%=i+(pagecount-1)*PageSize%>  <%=rs("origin")%> <% if yn<>"0" then response.write "正常" else response.write "暂停" end if %>  <%=rs("topdate")%>  <%=rs("enddate")%>  <%=rs("username")%> " onClick="return window.confirm('该操作结果不可恢复,你确实要删除该域名及其所有解析吗?')">删 除 ">解析
添加 " maxlength="50" size="12" readonly="true" onfocus="setday(this)"> " maxlength="50" size="10">    
<% URL = "DNS.asp?sdomain="&sdomain&"&PageSize="&PageSize call PrintPage(pagecount, rs, URL) rs.close set rs=nothing %>


说明:
1、可以添加正向域名区域,如要添加一个www.abc.com指向到192.168.1.1,域名必须填写abc.com,然后在域名解析里,添加了一个主机名是"www",类选择"A",IP填"192.168.1.1"的解析即可。 <%if session("WinMyDNSIsAdmin")="Y" then %>
2、也可以添加反向解析区域,注意区域格式如下:如要添加192.168.1.158指向到mail.winmydns.com的反向区域,域名必须填写:1.168.192.in-addr.arpa,然后在域名解析里,添加一个主机名为"158",类型选择"PTR",网址填"mail.winmydns.com"的解析即可. <%end if%>
<% end sub sub PrintPage(pagecount, rs, URL) if rs.pagecount > 0 then %>
<%=pagecount%>/<%=rs.pagecount%>  <%if cint(pagecount) > 1 then%> &page=<%=(cint(pagecount)-1)%>>〖上一页〗 <%else%> 〖上一页〗 <%end if%> <%if cint(pagecount) < rs.pagecount then%> &page=<%=(cint(pagecount)+1)%>>〖下一页〗 <%else%> 〖下一页〗 <%end if%> 转到第
<% end if end sub '查询A记录 Function Query_R() %> <% i = 0 'set rs=conn.execute("select a.*,b.netname,h.status from rr a left join net b on a.netid=b.id left join hostcheck h on a.data=h.ip where a.[zone]="&ID&" order by a.type,a.name,b.netname " ) set rs=conn.execute("select a.*,b.netname from rr a left join net b on a.netid=b.id where [zone]="&ID&" order by type,name,netname " ) do while not rs.eof %> "> "> "> <% i = i + 1 rs.movenext loop %>
DNS解析-[<%=origin%>]-[域名列表]
序号 主机名 类型 参数值 优先级 TTL 解析组 编 辑 删 除 负载均衡
<%=i+1%> <%=rs("name")%>  <%=rs("type")%>  <%=rs("data")%> <% if rs("type")="A" then set rsip=conn.execute("select * from hostcheck where ip='"&rs("data")&"' ") if not rsip.eof then if rsip("status")="Y" then response.write " [正常]" elseif rsip("status")="N" then response.write " [宕机]" end if end if rsip.close end if %>   <%=rs("aux")%>  <%=rs("ttl")%>  <% if rs("netid")<>"" and not isnull(rs("netid")) then set rsn=conn.execute("select * from [net] where ID="&rs("netid")) if not rsn.eof then response.write rsn("netname") else response.write "默认解析" end if rsn.close else response.write "默认解析" end if %> " onclick="return window.confirm('该操作结果不可恢复,你确实要删除该解析记录吗?')">删 除 " >负载均衡
添加    



<% set rsu=conn.execute("select origin from soa where ID="&ID) domain=rsu("origin") if mid(domain,len(domain)-1,1) ="." then domain=mid(domain,0,len(domain-1)) rsu.close i = 0 set rs=conn.execute("select * from url where [domain] ='"&domain&"' or [domain] like '%."&domain&"' order by [domain] " ) do while not rs.eof %> "> "> <% i = i + 1 rs.movenext loop %>
URL转发管理-[<%=origin%>]-[域名列表]
序号 主机名 转发类型 转发地址 解析组 编 辑 删 除
<%=i+1%>  <% domaint = rs("domain") if domaint = domain then response.write " " else response.write replace(domaint,"."&domain,"") end if %> <%if rs("urltype") then response.write "隐性转发" else response.write "显性转发" end if %> <%=rs("url")%>  <% if rs("netid")<>"" and not isnull(rs("netid")) then set rsn=conn.execute("select * from [net] where ID="&rs("netid")) if not rsn.eof then response.write rsn("netname") else response.write "默认解析" end if rsn.close else response.write "默认解析" end if %> " onclick="return window.confirm('该操作结果不可恢复,你确实要删除该解析记录吗?')">删 除
添加  



说明:
1、主机名:填入www,mail等不包括域名的主机名。如要解析一条www.winmydns.com的记录,只要在主机名中输入www;为空表示解析winmydns.com这类不带前缀的域名。

2、参数值:填写IP或其它相关参数。其中A记录填写IP地址;AAAA记录填写IPV6的地址;MX/CNAME/NS/PTR记录填写域名;TXT记录填写文本内容;SRV记录填写的格式是"域名:端口",如"srv.winmydns:801"。

3、优先级:只对MX/SRV记录有用。如果有多条相同的主记录,请填写不同的优先级数字,数字小的优先级高。

4、TTL:表示该条记录的有效时间,以秒为单为。TTL值越小表示您修改该记录时,生效的时候越快;一般建议填写600,对于动态域名或宕机检测一类的动态刷新要求比较高的,建议填写120至180之间。

5、解析组:表示该条记录针对某一个网络组有效。默认解析表示不属于联通或电信的网络,将会被解析到默认组指定的地址。

6、做URL转发解析,先按WinMyDNS安装说明搭建好URL转发服务器。同时做完转发解析后,必须同时做一个A或CNAME解析,指向到URL服务器的地址IP才能生效。
<% ENd FUnction%> <%function balance_R() rrID=SafeRequestInt("rrID") ID=SafeRequestInt("ID") set rs=conn.execute("select a.*,b.netname from rr a left join net b on a.netid=b.id where a.ID="&SafeRequest("rrID")&" ") if rs.eof then PopErr "记录不存在" netid=rs("netid") name=rs("name") rrtype=rs("type") rs.close %>
<% set rs=conn.execute("select a.*,b.netname from rr a left join net b on a.netid=b.id where [zone]="&ID&" and netid="&netid&" and name='"&name&"' and type='"&rrtype&"' order by a.aux desc " ) i=0 do while not rs.eof balance=rs("balance") %> <% i=i+1 rs.movenext loop %> <% end function %>
负载均衡管理-[<%=origin%>]-[域名列表]
序号 主机名 类型 参数值 解析组 优先级
<%=i+1%> <%=rs("name")%>  <%=rs("type")%>  <%=rs("data")%>  <%if rs("netname")="" or isnull(rs("netname")) then response.write "默认解析" else response.write rs("netname") end if%>  " size="6" maxlength="8" value="<%=rs("aux")%>">
当前负载均衡模式: <% if balance="1" then response.write "备份模式" elseif balance="2" then response.write "自动模式" else response.write "常规模式" end if %> ==>  
负载均衡模式说明:

A) 常规模式:按优先级百份比分配,优先级数字大的记录被解析到的次数多。

B) 备份模式:只解析到优先级数字最大的记录,当优先级数字最大的IP宕机时,解析到优先级数字次大的记录。

C) 自动模式:解析到所有记录上,由客户端自行选择使用哪个IP。