去评论
dz插件网

关于SSpanel-uim面板的经验

婷姐
2024/01/26 08:05:16
今日无事,看到有人分享最新的sspanel-uim面板的搭建,因此自己想试试。

之前尝试搭建过,但节点的订阅下发一直有问题,具体如下:

下发的节点端口一直为用户管理中用户的连接端口

今天看搭建的视频发现其搭建的节点端口下发正确,于是又去尝试,但还是发现端口仍为用户端口,并不是自定义配置中的 node_port,因此发现只有ss节点是这样(我只用ss中转不用vmss等)。

搜索相关issue也发现有人提过类似的问题,但并未得到有效答案,回答好像是认为ss的单端口多用户影响性能,并不是ss协议的一部分。

寻找issue没能解决因此只能尝试自己摸索。

手动添加节点后我发现节点可以通,因此可以确定仅仅是订阅下发过程中下发的信息有误。

之前在一个群里看到过有人发过这么一段代码,貌似是解决这个问题:

SubController.php 99行和395行:
  1. 'port' => (int) $node_custom_config['offset_port_user'] ?? $user->port,

当时顺手转发了,但是今天再看已经没有了相关代码,所以我将 SubController.php 中的代码给了 GPT,他解释后发现了一个 Subscribe::getContent 方法,之后找到了 Subscribe 类,在这个类中找到了不同节点类型对应的php文件名,最后找到了ss的订阅内容下发代码。

在代码中发现节点的端口确实是下发的用户端口,好在开发者已经给出了解决代码,其他类型节点的端口下发都是对应的 node_port ,因此就参照其他类型节点的代码修改了下发的端口,终于解决了。

给出位置供有需要的朋友参考:
  1. 在 SSPanel-Uim/src/Services/Subscribe 目录下

除 base.php Trojan.php V2ray.php之外的文件都需要修改
  1. foreach ($nodes_raw as $node_raw) {上边这行代码后添加下面这一行:$node_custom_config = json_decode($node_raw->custom_config, true);
  1. if ((int) $node_raw->sort === 0) {上边这一行后添加如下:$ss_port = $node_custom_config['offset_port_user'] ?? ($node_custom_config['offset_port_node'] ?? $user->port);

这里是指按照 offset_port_user、offset_port_node、用户端口的顺序加载端口
然后将下一行 $links 开头的代码中 的 $user->port 改为 $ss_port

总结:v2board更简单,ChatGPT很厉害。