14 replace_Mod - starjun/starjun.github.io GitHub Wiki

replace_Mod response内容替换模块

该模块是整个访问控制规则的 第14步 用于配置返回内容的替换

[
    {
        "state": "on",
        # 该条规则开关(on/off)
        "uri": ["^/api/ip_dict$","jio"],
        # uri规则;第一个参数:匹配内容,第二个:匹配方式,正则匹配
        "hostname": ["101.200.122.200",""],
        # host规则;第一个参数:匹配内容,第二个:匹配方式,字符串等于
        "replace_list":
        # 替换规则列表
            [
             ["deny","","denyFUCK"],
             # 第一条替换规则;第一个参数:需要替换的字符串;第二个:匹配方式,字符串等于;第三个:替换的字符串
             ["allow","","allowPASS"],
             ["lzcaptcha\\?key='\\s*\\+ key","jio","lzcaptcha?keY='+key+'&keytoken=@token@'"]
             # 第三条替换规则;第三参数中的@token@表示动态生成的token
            ]
    },
    ... # 下一条规则
]

上面的例子表示,规则启用,host为passport.game.com,url是正则匹配,匹配成功则进行返回内容替换

1:将"联合"替换为"联合FUCK"

2:将"登录"替换为"登录POSS"

3:通过正则进行匹配(ngx.re.gsub)其中@token@表示动态替换为服务器生成的一个唯一随机字符串

state:表示是否启用规则

hostname:表示匹配的host

uri:表示匹配的uri

replace_list:表示替换列表
   参数1 ==> 被替换内容;
   参数2 ==> 匹配模式(正则、字符串)如例子中前2个替换列表就是字符串匹配,使用""即可,不能没有;   
   参数3 ==> 被替换的内容

数据请求样式

URI: http://%ip:%port/api/v2/config_dict

查询操作:

[id 默认是空 表示查询所有;id 支持 点分查询 EG:1.state 表示查询第一条规则的state]

1:查询所有

GET/POST querystring:
 action=get&mod=replace_Mod

2:查询指定id (支持子节点查询,eg: 1@state)

GET/POST querystring:  
   action=get&mod=replace_Mod&id=1
   action=get&mod=replace_Mod&id=1@state

设置操作:

1:修改整体

GET/POST querystring:
   action=set&mod=replace_Mod&value=
[
    {
        "state": "on",
        "uri": ["^/api/ip_dict$","jio"],
        "hostname": ["101.200.122.200",""],
        "replace_list":
            [
             ["deny","","denyFUCK"],
             ["allow","","allowPASS"],
             ["lzcaptcha\\?key='\\s*\\+ key","jio","lzcaptcha?keY='+key+'&keytoken=@token@'"]
            ]
    }
]

2:修改单个

GET/POST querystring:
   action=set&mod=replace_Mod&id=1&value_type=json&value=
{
        "state": "on",
        "uri": ["^/api/ip_dict$","jio"],
        "hostname": ["101.200.122.200",""],
        "replace_list":
            [
             ["deny","","denyFUCK"],
             ["allow","","allowPASS"],
             ["lzcaptcha\\?key='\\s*\\+ key","jio","lzcaptcha?keY='+key+'&keytoken=@token@'"]
            ]
 }

删除操作:

1:删除单个

GET/POST querystring: 
   action=del&mod=replace_Mod&id=1

添加操作:

1:删除单个

GET/POST querystring: 
   action=add&mod=replace_Mod&value=
{
        "state": "on",
        "uri": ["^/api/ip_dict$","jio"],
        "hostname": ["101.200.122.200",""],
        "replace_list":
            [
             ["deny","","denyFUCK"],
             ["allow","","allowPASS"],
             ["lzcaptcha\\?key='\\s*\\+ key","jio","lzcaptcha?keY='+key+'&keytoken=@token@'"]
            ]
 }

返回消息:

   服务器失败:http code ~= 200
   服务器成功:{code="ok/error",msg=...}
   code = error ,执行状态错误,msg 为错误内容