|
楼主 |
发表于 2012-6-25 01:05:41
|
显示全部楼层
本帖最后由 ccxxzz 于 2012-6-25 01:24 编辑
关于特殊拨号软件的控制模式,未使用特殊拨号软件的或者是路由拨号的用户,直接转降速处理;
给出路由拨号用户或者正常拨号用户的 提醒警告:
WEB中C#代码
using System;
using System.Configuration;
using System.Data;
//using System.Linq;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.HtmlControls;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
//using System.Xml.Linq;
using xnzyradius.sql;
public partial class userinfor : System.Web.UI.Page
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
userip.Text = GetClientIp();
AdoSql readuserbyip = new AdoSql();
DataTable readuserbyipt = readuserbyip.readuserbyip(GetClientIp());
try
{
username.Text = readuserbyipt.Rows[0]["user_name"].ToString();
userpass.Text = readuserbyipt.Rows[0]["user_password"].ToString();
}
catch
{
//
}
}
}
public static string GetClientIp() //得到客户的IP地址
{
string l_ret = string.Empty;
if (!string.IsNullOrEmpty(System.Web.HttpContext.Current.Request.ServerVariables["HTTP_VIA"]))
l_ret = Convert.ToString(System.Web.HttpContext.Current.Request.ServerVariables["HTTP_X_FORWARDED_FOR"]);
if (string.IsNullOrEmpty(l_ret))
l_ret = Convert.ToString(System.Web.HttpContext.Current.Request.ServerVariables["REMOTE_ADDR"]);
return l_ret;
}
}
网页代码:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="userinfor.aspx.cs" Inherits="userinfor" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>用户警告信息</title>
<style type="text/css">
.style1
{
width: 100%;
}
.style2
{
color: #CC3300;
font-weight: bold;
}
</style>
</head>
<body style="text-align: center">
<form id="form1" runat="server">
<div>
<table class="style1" style="width: 400px">
<tr>
<td align="right" class="style2" colspan="2" style="text-align: center" height="31">
<u>用户警告信息</u></td>
</tr>
<tr>
<td align="right" width="200">
用户IP:</td>
<td align="left" width="190">
<aspabel ID="userip" runat="server" ForeColor="#CC3300"></aspabel>
</td>
</tr>
<tr>
<td align="right" width="200">
用户帐户:</td>
<td align="left" width="190">
<aspabel ID="username" runat="server" ForeColor="#CC3300"></asp:Label>
</td>
</tr>
<tr>
<td align="right" width="200">
用户密码:</td>
<td align="left" width="190">
<asp:Label ID="userpass" runat="server" ForeColor="#CC3300"></asp:Label>
</td>
</tr>
<tr>
<td colspan="2">
请使用我们的专用拨号软件:<b><a href="pppoeclient.exe">下载</a></b></td>
</tr>
</table>
</div>
</form>
</body>
</html>
如何用C#WEB中判断用户是否在某一个IP段的范围,可使用我写的判断函数:
private static int ipaddressnumber(string userip)
{
//string [] tmpip = userip.Split(".");
string[] tmpip = userip.Split(new char[] { '.' });
return Convert.ToInt32(tmpip[0]) * 256 * 256 * 256 + Convert.ToInt32(tmpip[1]) * 256 * 256 + Convert.ToInt32(tmpip[2]) * 256 + Convert.ToInt32(tmpip[3]);
}
在核心RADIUS里面我是这么处理的:
InvalidRouterUser=2mpool
InvalidRouterUserRate=00655360001310720065536000131072
(我这里使用的是MA5200专业BRAS设备的接入认证;控制速度是CLASSS属性!)
在代码里面这么用DELPHI写:
if (Controlpass<>'')and(KillUserMode=0)and(acountado.FieldByName('user_router_if').AsBoolean) then
userjiami:=Controlpass+acountado.FieldByName('user_password').AsString
else
userjiami:=acountado.FieldByName('user_password').AsString;
考虑到PPPOE模式不能加入特殊字符密码加密,只支持PPPOE特殊密码加密;
为了让正常拨号的也能访问网络:
if _Password(acountado.FieldByName('user_password').AsString)and(not (acountado.FieldByName('user_stat').AsBoolean)) then
begin //路由用户,但是密码正确的
userframeip:='';
userpool:=InvalidRouterUser;//路由用户或者正常拨号用户,没有使用专用拨号,直接给出降速 地址池 和 速度
userrate:=InvalidRouterUserRate;
usersessiontime:=FormatFloat('#',(acountado.FieldByName('user_enddate').AsDateTime -now)*86400); //正常用户的session设置
userInterim:=inttostr(AccountingInterim);
if (rad_attr.UserName)<>'QQ17384771' then logoitem.Items.Add('限速认证:'+format('%20s',[rad_attr.UserName])+' 路由用户!'+FormatDateTime(' 时间: mm月dd日hh:mm',now))
}
实际验证:
那么把 正常拨号(路由拨号) 、特殊拨号分开;给出不用特殊拨号的用户给出安全提示,并给出警告信息;使用特殊拨号的用户正常进行各种网络交互,把用户对于上特殊拨号软件的不满,降低到最低限度,也可让ISP利益的最大化;你要上路由,我就给你降速处理!
|
-
|