用户信息
帖子内容
1 楼
shadoweb
钻石会员
积分 1162
注册 2014-11-27
     
[免费]NET版JTBC添加模块IP访问权限

NET版JTBC添加模块IP访问权限

 

  1. 打开模块代码文件 模块\common\codefile\default.cs

  在代码

  public partial class module: jpage

下面添加

 

  private bool Check_IP()

  {

    bool pass = true;

    int tiponoff = cls.getNum(jt.itake("config.ip-on-off", "cfg"), 0);

    string tipon = jt.itake("config.ip-on", "cfg");

    string tUserIP = cls.getSafeString(request.ClientIP());

    if (tiponoff == 1) {

    object[] tArysAip = tipon.Split('|');//后台设置的多个用"|"分隔的IP格式成数组

    object[] tArysUip = tUserIP.Split('.');//用户的单个IP格式成数组

    if (tArysAip != null)

    {

      for (int tis = 0; tis < tArysAip.Length; tis ++)

      {

          pass = true;

              string tArysAipSub = (string)tArysAip[tis];//单个IP转成字符串

              object[] tArysSip = tArysAipSub.Split('.');//单个IP格式成数组

              if (tArysSip != null) {

              for (int ti = 0; ti < tArysSip.Length; ti ++)

              {

              if(tArysUip.Length == 4 && (string)tArysSip[ti] != (string)tArysUip[ti]) pass = false;//判断用户的IP是否在设置的IP中

              }

              if((string)tArysSip[0]==(string)tArysUip[0] && (string)tArysSip[1]==(string)tArysUip[1] && (string)tArysSip[2]==(string)tArysUip[2] && (string)tArysSip[3] == "*") pass = true;//IP段前三位相等

              }

              if(pass) break;//如果有权限,跳出循环判断

      }

    }

}

    return pass;

  }

 

  private string Module_Ip()

  {

    string tmpstr = "";

    tmpstr = jt.itake("default.ip", "tpl");

    string tUserIP = cls.getSafeString(request.ClientIP());

    tmpstr = tmpstr.Replace("{$ip}", tUserIP);

    tmpstr = jt.creplace(tmpstr);

    return tmpstr;

  }

 

 

 

 

  修改模块默认加载函数

 

  protected void Page_Load()

  {

    PageInit();

    ac.cntitle(jt.itake("default.channel_title", "lng"));

    string tmpstr = "";

    string tType = cls.getString(request.querystring("type"));

    if(Check_IP())

    {

    switch(tType)

    {

      case "list":

        tmpstr = Module_List();

        break;

      case "detail":

        tmpstr = Module_Detail();

        break;

      default:

        tmpstr = Module_Default();

        break;

    }

  }else{

tmpstr = Module_Ip();

  }

    PagePrint(tmpstr);

    PageClose();

  }

 

 

 

 

  2. 打开模板文件 模块\common\template\default.jtbc

  添加item节点一组

    <item>

      <name><![CDATA[ip]]></name>

      <tpl_default><![CDATA[{$=webHead("default_head")}

<div id="middle">

  <div id="middleContent">

        <table cellpadding="0" cellspacing="0" class="tablen">

          <tr>

            <td class="nav"><span>{$=inavigation()}</span></td>

          </tr>

          <tr>

            <td class="topic"><div>您的IP是{$ip},无权限访问</div></td>

          </tr>

          <tr>

            <td height="10"></td>

          </tr>

        </table>

    <div class="clear"></div>

  </div>

</div>

{$=webFoot("default_foot")}]]></tpl_default>

    </item>

 

 

  3. 打开配置文件 模块\common\config.jtbc

  在代码

    <item>

      <name><![CDATA[nuptype]]></name>

      <chinese><![CDATA[.bmp.jpg.gif.png]]></chinese>

    </item>

    下面添加

    <item>

      <name><![CDATA[ip-on-off]]></name>

      <chinese><![CDATA[1]]></chinese>

    </item>

    <item>

      <name><![CDATA[ip-on]]></name>

      <chinese><![CDATA[192.168.1.101|192.168.10.*|192.168.10.1]]></chinese>

    </item>

   

    4. 使用说明:

   

    配置文件中参数说明:

        ip-on-off 如果为1,则打开IP权限检测功能,如果为0,则关闭IP限制功能

        ip-on 此处填写允许访问的ip或ip段格式为192.168.1.101|192.168.10.*|192.168.10.1,

        其中可设置允许的单个ip和ip段,ip段格式为,前三位为数据,最后一位为*号.

        IP和IP段的数量不限制,顺序不限制,每个中间用英文|隔开即可.

        如果ip-on为空,则不允许任何ip访问.

       

    以上已测试过功能正常.

   

   

 

本帖由 shadoweb 于 2019-02-14 08:30:58 编辑过
2019-02-14 08:30:44 JTBC教程网 https://www.jtbc.com.cn/ 客服QQ858512104 微信 shadoweb
2 楼
tuotuo
钻石会员
积分 1448
注册 2008-03-21
     
回复: [免费]NET版JTBC添加模块IP访问权限

13年一个单子里也用到这个功能 当时写了一个函数




argIPuser : 用户当前ip
argIParg  : 预设的ip范围 

A、不限制:*或留空

B、IP段: 10.33.*.*;10.*.*.* 

C、IP范围:  10.12.11-18.*;10.16.15.8-20
 


   public static int toIPbool(string argIPuser, string argIParg)
    {
    int tbool = 0;
    string ipvar = argIPuser;
    string iparg = argIParg;
    string[] aryipvar = cls.split(ipvar,".");
    string[] aryiparg = cls.split(iparg,";");
    if (iparg != "*")
    {
      for (int tis = 0; tis < aryiparg.Length; tis ++)
      {
        string[] aryipargs = cls.split(aryiparg[tis],".");
        int vbool = 0;
        for (int ti = 0; ti < aryipargs.Length; ti ++)
        {
          if(aryipargs[ti] != "*")
          {
            string[] aryipargss = cls.split(aryipargs[ti],"-");
            if (aryipargss.Length > 1)
            {
              if(cls.getNum(aryipvar[ti],256) >= cls.getNum(aryipargss[0],255) && cls.getNum(aryipvar[ti],1) <= cls.getNum(aryipargss[1],0)) vbool = vbool + 1;
              else vbool = vbool + 0;
            } else {
              if(aryipvar[ti] == aryipargs[ti]) vbool = vbool + 1;
              else vbool = vbool + 0;
            }
          }
          else vbool = vbool + 1;
        }
        if(vbool == 4) tbool = 1;
      }
    }else tbool = 1;
    return tbool;
    }


本帖由 tuotuo 于 2019-09-05 13:10:41 编辑过
2019-02-17 15:04:37 来易网络科技 WWW.NONOUO.COM