Skip to content

Conversation

@IAMouMeng
Copy link
Contributor

The original router interface does not support obtaining the rule list. A new ListRule has been added, which can obtain the ruleTag List. The returned information is as follows

[tag:"ruleA" ruleTag:"Block_xxx_com" tag:"ruleB" ruleTag:"OutToA"]

@IAMouMeng IAMouMeng changed the title grpc api add ListRule() Add grpc api ListRule() support Jan 19, 2026
@Fangliding
Copy link
Member

新增api需要像 #3189 一样提供 xray api 命令作为调用示范以及便捷使用

@IAMouMeng
Copy link
Contributor Author

IAMouMeng commented Jan 19, 2026

It has been added and tested successfully

virtual-machine:~/xray# ./xray api
xray api provides tools to manipulate Xray via its API.

Usage:

        xray api <command> [arguments]

The commands are:

        restartlogger          Restart the logger
        stats                  Retrieve statistics
        statsquery             Query statistics
        statssys               Retrieve system statistics
        bi                     Retrieve balancer information
        bo                     Override balancer
        adi                    Add inbounds
        ado                    Add outbounds
        rmi                    Remove inbounds
        rmo                    Remove outbounds
        lsi                    List inbounds
        lso                    List outbounds
        adu                    Add users to inbounds
        rmu                    Remove users from inbounds
        inbounduser            Retrieve inbound user(s)
        inboundusercount       Retrieve inbound user count
        adrules                Add routing rules
        rmrules                Remove routing rules by ruleTag
        lsrules                List routing rules
        sib                    Block connections by source IP
        statsonline            Retrieve the online session count for a user
        statsonlineiplist      Retrieve a user's online IP addresses and access times
        statsgetallonlineusers Retrieve array of all online users

Use "xray help api <command>" for more information about a command.
virtual-machine:~/xray# ./xray api lsrules
{
    "rules": [
        {
            "ruleTag": "BlockIP",
            "tag": "blackhole"
        },
        {
            "tag": "direct"
        }
    ]
}

@majorcheng
Copy link

除了list rules,能modify rules吗

@IAMouMeng
Copy link
Contributor Author

IAMouMeng commented Jan 22, 2026

modify rules

编辑规则 可以通过AddRule方法 ShouldAppend 为 false 即可

	routerConfig := conf.RouterConfig{
		RuleList: ruleList,
	}

	config, err := routerConfig.Build()
	if err != nil {
		return
	}
	_, err = x.routerService.AddRule(ctx, &routingService.AddRuleRequest{
		Config:       serial.ToTypedMessage(config),
		ShouldAppend: false,
	})

@IAMouMeng
Copy link
Contributor Author

新增api需要像 #3189 一样提供 xray api 命令作为调用示范以及便捷使用

已经实现 提交上去了

@majorcheng
Copy link

这个好 ,经常需要调整rules但是不想重启xray

@RPRX
Copy link
Member

RPRX commented Jan 23, 2026

为啥新增的 command 不像 adrules 和 rmrules 一样叫 lsrules 而是 lsr?应当先保持一致

@IAMouMeng
Copy link
Contributor Author

IAMouMeng commented Jan 23, 2026 via email

@RPRX
Copy link
Member

RPRX commented Jan 23, 2026

为啥不参照另外两个,改一下,半个小时后要发版了

@IAMouMeng
Copy link
Contributor Author

为啥不参照另外两个,改一下,半个小时后要发版了

已修正

@RPRX
Copy link
Member

RPRX commented Jan 23, 2026

List Rules 需要参考另外两个改为 List routing rules

还有这个不止能列出带 ruleTag 的吧

@IAMouMeng
Copy link
Contributor Author

List Rules 需要参考另外两个改为 List routing rules

还有这个不止能列出带 ruleTag 的吧

ListRule最终会走到下面的方法

func (r *Router) ListRule() []routing.Route {
	r.mu.Lock()
	defer r.mu.Unlock()
	ruleList := make([]routing.Route, 0)
	for _, rule := range r.rules {
		ruleList = append(ruleList, &Route{
			outboundTag: rule.Tag,
			ruleTag:     rule.RuleTag,
		})
	}
	return ruleList
}

type Route struct {
	routing.Context
	outboundGroupTags []string
	outboundTag       string
	ruleTag           string
}

如果需要获取其他的信息需要改动的地方比较多

@RPRX
Copy link
Member

RPRX commented Jan 23, 2026

我的意思是 ruleTag 为空的也会列出吧,看起来会

@RPRX
Copy link
Member

RPRX commented Jan 23, 2026

Long 也需要改为 List routing rules in Xray.,然后更新一下 #5569 (comment)

@IAMouMeng IAMouMeng changed the title Add grpc api ListRule() support List routing rules in Xray. Jan 23, 2026
@RPRX
Copy link
Member

RPRX commented Jan 23, 2026

啊这,不是改 PR title,我是指 description

@IAMouMeng
Copy link
Contributor Author

啊这,不是改 PR title,我是指 description

哦不好意思我刚没太理解你说的long是什么意思哈哈

@RPRX RPRX changed the title List routing rules in Xray. API: Add ListRule() for routing Jan 23, 2026
@IAMouMeng
Copy link
Contributor Author

啊这,不是改 PR title,我是指 description

稍等 先别合并 我推错了个文件上去

@RPRX
Copy link
Member

RPRX commented Jan 23, 2026

尽快

@IAMouMeng
Copy link
Contributor Author

尽快

可以了

@RPRX RPRX merged commit 59dc2ce into XTLS:main Jan 23, 2026
@majorcheng
Copy link

默认只列了outboundTag, balancerTag是不是也考虑一下

@RPRX
Copy link
Member

RPRX commented Jan 23, 2026

默认只列了outboundTag, balancerTag是不是也考虑一下

这下以后稳定版本真的不想合 new feature 了

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants