Esempio n. 1
0
        /// <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());
        }
Esempio n. 2
0
 /// <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);
     }
 }
Esempio n. 3
0
    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 />"));
        }
    }
Esempio n. 4
0
        /// <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());
        }
Esempio n. 5
0
        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);
        }
Esempio n. 6
0
    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&amp;id=" + id + "&amp;backurl=" + Utils.getPage(0) + ""), "1");
    }