/// <summary> /// txtの文字列がIPアドレスの形式をしていることを確認する。 /// </summary> /// <param name="txt">確認する文字列</param> /// <param name="required">入力が必須かどうか</param> /// <param name="fieldname">入力欄の名称</param> /// <param name="item">フォーム要素に対応するWebControl</param> /// <remarks> /// <para> /// 条件を満たさない時は m_validation_messageにエラーメッセージをセットする。 /// /// itemを指定しておくと、エラー時にそのitemのCssClassを"error"にする。 /// </para> /// </remarks> protected Ipaddr ValidateIpaddr(string txt, bool required, string fieldname, WebControl item) { if (txt == null) { txt = ""; } if (required && (txt == "")) { AddValidationMessage(string.Format(_("{0}は必須です。"), fieldname), item); goto fail; } Ipaddr a = new Ipaddr(txt); if (!a.IsCompleteOrNull()) { AddValidationMessage(string.Format(_("{0}はnnn.nnn.nnn.nnnの形式でなければいけません。"), fieldname), item); goto fail; } if (item != null) { item.RemoveCssClass("error"); } return(a); fail: if (item != null) { item.AddCssClass("error"); } return(new Ipaddr()); }
/// <summary> /// 接続許可ネットワークアドレス/ネットマスクを追加登録する /// </summary> /// <remarks> /// <para> /// 現在のところ、IPv4しか対応していない。1つでも接続許可ネットワーク /// アドレスを登録すると、IPv4以外のプロトコルでのアクセスは接続拒否 /// するようになる。 /// /// Loopbackアドレスからのアクセスは常に許可される。 /// </para> /// </remarks> public void AddAllowAddress(Ipaddr netaddr, Ipaddr netmask) { lock (m_allownetaddr) { m_allownetaddr.Add(netaddr); m_allownetmask.Add(netmask); } }
protected void Page_Load(object sender, EventArgs e) { Master.Title = "设置拒绝IP"; builder.Append(Out.Tab("", "")); string ac = Utils.GetRequest("ac", "all", 1, "", ""); ub xml = new ub(); Application.Remove("xml_wap"); //清缓存 xml.Reload(); //加载网站配置 if (Utils.ToSChinese(ac) == "确定修改") { string NoIP = Utils.GetRequest("NoIP", "post", 3, @"^[^\@]{1,15}(?:\@[^\@]{1,15}){0,1000}$", "IP段填写错误"); string NoIPMsg = Utils.GetRequest("NoIPMsg", "post", 2, @"^[^\^]{1,500}$", "提示信息限1-500字内"); string NoIPStat = Utils.GetRequest("NoIPStat", "post", 2, @"^[0-1]$", "状态选择错误"); string[] arrNoIP = NoIP.Split("@".ToCharArray()); for (int i = 0; i < arrNoIP.Length; i++) { if (!Ipaddr.IsIPAddress2(arrNoIP[i].ToString())) { Utils.Error("IP段填写错误", ""); } } xml.ds["SiteNoIP"] = NoIP; xml.ds["SiteNoIPMsg"] = NoIPMsg; xml.ds["SiteNoIPStat"] = NoIPStat; System.IO.File.WriteAllText(Server.MapPath("~/Controls/wap.xml"), xml.Post(xml.ds), System.Text.Encoding.UTF8); Utils.Success("设置拒绝IP", "设置拒绝IP成功,正在返回..", Utils.getUrl("iplock.aspx"), "1"); } else { builder.Append(Out.Div("title", "设置拒绝IP")); string strText = "IP(请用“@”作分隔):/,提示信息:/,状态:/"; string strName = "NoIP,NoIPMsg,NoIPStat"; string strType = "textarea,text,select"; string strValu = "" + xml.ds["SiteNoIP"] + "'" + xml.ds["SiteNoIPMsg"] + "'" + xml.ds["SiteNoIPStat"] + ""; string strEmpt = "true,true,0|启用|1|关闭"; string strIdea = "/"; string strOthe = "确定修改|reset,iplock.aspx,post,1,red|blue"; builder.Append(Out.wapform(strText, strName, strType, strValu, strEmpt, strIdea, strOthe)); builder.Append(Out.Tab("<div>", "<br />")); builder.Append("设置的IP在启用状态下将不允许访问网站,多个IP请用“@”作分隔。<br />示例:[email protected].*.*@202.31.97.*<br />如拒绝202.31.97.0-255整个IP段可以写成202.31.97.*<br />如果设置为空或关闭,将允许所有的IP都可以访问。"); builder.Append(Out.Tab("</div>", "")); builder.Append(Out.Tab("<div class=\"hr\"></div>", Out.Hr())); builder.Append(Out.Tab("<div>", "")); builder.Append("<a href=\"" + Utils.getUrl("default.aspx") + "\">系统服务中心</a><br />"); builder.Append(Out.Tab("</div><div class=\"title\"><a href=\"" + Utils.getUrl("../default.aspx") + "\">返回管理中心</a>", "<a href=\"" + Utils.getUrl("../default.aspx") + "\">返回管理中心</a>")); builder.Append(Out.Tab("</div>", "<br />")); } }
/// <summary> /// txtの文字列がネットマスク形式をしていることを確認する。 /// </summary> /// <param name="txt">確認する文字列</param> /// <param name="required">入力が必須かどうか</param> /// <param name="fieldname">入力欄の名称</param> /// <param name="item">フォーム要素に対応するWebControl</param> /// <remarks> /// <para> /// 条件を満たさない時は m_validation_messageにエラーメッセージをセットする。 /// /// itemを指定しておくと、エラー時にそのitemのCssClassを"error"にする。 /// </para> /// </remarks> protected Ipaddr ValidateNetmask(string txt, bool required, string fieldname, WebControl item) { Ipaddr a; if (String.IsNullOrEmpty(txt)) { if (required) { AddValidationMessage(string.Format(_("{0}は必須です。"), fieldname), item); goto fail; } else { a = new Ipaddr(); goto ok; } } if (txt.StartsWith("/")) { a = Ipaddr.GetNetmask(StringUtil.ToInt(txt.Substring(1))); } else { a = new Ipaddr(txt); } if (!a.IsCompleteOrNull()) { AddValidationMessage(string.Format(_("{0}は「nnn.nnn.nnn.nnn」の形式または「/マスクビット数」でなければいけません。"), fieldname), item); goto fail; } if (!a.IsNetmask()) { AddValidationMessage(string.Format(_("{0}がネットマスク形式になっていません。"), fieldname), item); goto fail; } ok: if (item != null) { item.RemoveCssClass("error"); } return(a); fail: if (item != null) { item.AddCssClass("error"); } return(new Ipaddr()); }
private bool checkRemoteAddress(IPAddress remote) { if (IPAddress.IsLoopback(remote)) { return(true); } if (remote.AddressFamily != AddressFamily.InterNetwork) { return(false); } Ipaddr ip = new Ipaddr(remote.GetAddressBytes(), 0, 4); for (int i = 0; i < m_allownetaddr.Count; i++) { if (Ipaddr.GetMasked(ip, m_allownetmask[i]) == m_allownetaddr[i]) { return(true); } } return(false); }
private void EditSavePage() { int TitleNum = Utils.ParseInt(ub.GetSub("DiaryTitleNum", xmlPath)); int ContentNum = Utils.ParseInt(ub.GetSub("DiaryContentNum", xmlPath)); int id = int.Parse(Utils.GetRequest("id", "post", 2, @"^[1-9]\d*$", "日记ID错误")); string Title = Utils.GetRequest("Title", "post", 2, @"^[^\^]{1," + TitleNum + "}$", "标题限1-" + TitleNum + "字"); string Content = Utils.GetRequest("Content", "post", 2, @"^[^\^]{1," + ContentNum + "}$", "请输入不超" + ContentNum + "的内容"); string Weather = Utils.GetRequest("Weather", "post", 2, @"^[^\^]{1,5}$", "天气限1-5字"); int UsID = int.Parse(Utils.GetRequest("UsID", "post", 2, @"^[1-9]\d*$", "用户ID错误")); string UsName = Utils.GetRequest("UsName", "post", 2, @"^[^\^]{1,50}$", "昵称不超50字"); int IsTop = int.Parse(Utils.GetRequest("IsTop", "post", 2, @"^[0-1]$", "置顶选择错误")); //int IsGood = int.Parse(Utils.GetRequest("IsGood", "post", 2, @"^[0-1]$", "精华选择错误")); int ReadNum = int.Parse(Utils.GetRequest("ReadNum", "post", 2, @"^[0-9]\d*$", "人气填写错误")); string AddUsIP = Utils.GetRequest("AddUsIP", "post", 1, "", ""); if (!Ipaddr.IsIPAddress(AddUsIP)) { Utils.Error("IP填写错误", ""); } DateTime AddTime = Utils.ParseTime(Utils.GetRequest("AddTime", "post", 2, DT.RegexTime, "添加时间填写出错")); BCW.Model.Diary model = new BCW.Model.Diary(); model.ID = id; model.Title = Title; model.Content = Content; model.Weather = Weather; model.UsID = UsID; model.UsName = UsName; model.IsTop = IsTop; model.IsGood = 0; model.ReadNum = ReadNum; model.AddUsIP = AddUsIP; model.AddTime = AddTime; new BCW.BLL.Diary().Update2(model); Utils.Success("编辑日记", "编辑日记成功..", Utils.getUrl("diary.aspx?act=edit&id=" + id + "&backurl=" + Utils.getPage(0) + ""), "1"); }