前言
之前有朋友「我也不知道是哪个不知名的网友了」找站长搭过一次 V2board
面板,也接触到了后端 XrayR,然后刚好目睹了脑残硬刚开源作者删库事件,虽然没有对外运营机场,但自己也偶尔需要爬墙头,索性就自个儿弄了个专用机场,关系户找来了也能给开个账号显得高大上!
也不知道是不是特别受照顾,私人专用机场都隔三差五被墙需要搬家,虽然只有 2 台节点服务器,但对咱这非专业人士需要维护劳动量也是巨大,每次改安装改配置都不能忍,索性就写了个脚本。
脚本功能虽然不完善,但好歹能用,经常见有人问起这啊那的,干脆把自用的这破程序放出来吧,有缘人自取。
恰饭广告
- 币圈必备:可以消费 USDC/USDT 的信用卡 - OneKey Card
- 币圈必备:可以消费 USDT 的预付信用卡 - Depay
实现功能
- 一键配置并安装 XrayR
- 自动获取面板上指定的节点信息
- 自动 CloudFlare 解析节点域名
- 每日自动更换节点端口
准备条件
脚本实现功能时,要求输入:
- V2board/Xboard 面板接口域名和通讯密钥:面板上设置
- V2board/Xboard 面板上指定的节点ID和类型
- V2board/Xboard 面板数据库信息
- CloudFlare 增删改域名解析权限 API Token:去 CloudFlare 控制台添加,具体方法查看 CloudFlare 帮助文档
因为信息都是固定的,n 年难得变一次,索性偷懒到底,弄个如下一键命令实现信息复用:
1 2 3 4 5 6 7
| export DB_Host="xx.xx.xx" export DB_Name="xx" export DB_User="xx" export DB_PWD="xx" export Api_Host="https://xx.xx.xx" export Api_Key="xx" export CF_TOKEN_DNS="xx-xx-xx"
|
Xshell 上添加个命令按钮,组合上面这一套命令放一起完成就可以,直接和下方的脚本一起组合到一个按钮里都行
每次运行 xrayR_for_V2board.sh
脚本前运行一遍上面的命令,就可以省去这部分的手动输入,最终就剩下输入节点 ID
和 类型
了。
使用
SSH 终端登录服务器,运行如下命令:
1 2
| apt install -y wget curl bash <(curl -Ls https://github.com/cdnf/shell/raw/master/proxy/xrayR_for_V2board.sh)
|
然后就能看到如下选择菜单,按提示完成后续的输入即可。
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| ====================================== Author: 金三将军 Version: 4.2.5 ======================================
1.安装XrayR 2.新增nodes 3.开启定期更换端口 4.开启系统Swap 9.卸载XrayR 0.退出
请输入数字选项:
|
选了开启定期更换端口功能后,会将自动更换端口脚本名称添加到系统命令,除每日自动任务运行外,也可以手动运行autoPort
命令即时更换。
1 2 3 4
| root@xx:~ /usr/bin/autoPort root@xx:~ 30 3 * * * root autoPort >> /dev/null 2>&1
|
支持自动解析和换端口
自动域名解析
和 3.开启定期更换端口
功能需要面板数据支持,所以需要在 V2board 面板节点接口 app\Http\Controllers\Server\UniProxyController.php
中额外添加如下信息返回:
1 2
| 'host' => $this->nodeInfo->host, 'port' => $this->nodeInfo->port,
|
最终代码:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
| public function config(Request $request) { switch ($this->nodeType) { case 'shadowsocks': $response = [ 'host' => $this->nodeInfo->host, 'port' => $this->nodeInfo->port, 'server_port' => $this->nodeInfo->server_port, 'cipher' => $this->nodeInfo->cipher, 'obfs' => $this->nodeInfo->obfs, 'obfs_settings' => $this->nodeInfo->obfs_settings ];
if ($this->nodeInfo->cipher === '2022-blake3-aes-128-gcm') { $response['server_key'] = Helper::getServerKey($this->nodeInfo->created_at, 16); } if ($this->nodeInfo->cipher === '2022-blake3-aes-256-gcm') { $response['server_key'] = Helper::getServerKey($this->nodeInfo->created_at, 32); } break; case 'vmess': $response = [ 'host' => $this->nodeInfo->host, 'port' => $this->nodeInfo->port, 'server_port' => $this->nodeInfo->server_port, 'network' => $this->nodeInfo->network, 'networkSettings' => $this->nodeInfo->networkSettings, 'tls' => $this->nodeInfo->tls ]; break; case 'trojan': $response = [ 'host' => $this->nodeInfo->host, 'port' => $this->nodeInfo->port, 'server_port' => $this->nodeInfo->server_port, 'server_name' => $this->nodeInfo->server_name, ]; break; case 'hysteria': $response = [ 'host' => $this->nodeInfo->host, 'port' => $this->nodeInfo->port, 'server_port' => $this->nodeInfo->server_port, 'server_name' => $this->nodeInfo->server_name, 'up_mbps' => $this->nodeInfo->up_mbps, 'down_mbps' => $this->nodeInfo->down_mbps, 'obfs' => Helper::getServerKey($this->nodeInfo->created_at, 16) ]; break; } }
|
后记
这是个不完善的 shell,所以有问题也是正常的。如果不爽,自己去改去完善。
为了这个脚本能称心如意,站长特意去钻研了 jq,有兴趣的可以参考:常用 linux jq 命令语法整理
本文标题:XrayR 后端一键对接 V2board 脚本
文章作者:凹凸曼
发布时间:2023-06-06
最后更新:2024-01-26
原始链接:https://sobaigu.com/xrayr-auto-shell-for-v2board.html
版权声明:转载请务必保留本文链接和注明内容来源,并自负版权等法律责任。