update: v2ray char to vmess

This commit is contained in:
v2board 2023-02-15 14:53:13 +08:00
parent f062e57a81
commit 0cbb44cdea
30 changed files with 100 additions and 88 deletions

View File

@ -5,7 +5,7 @@ namespace App\Http\Controllers\Admin\Server;
use App\Models\Plan;
use App\Models\ServerShadowsocks;
use App\Models\ServerTrojan;
use App\Models\ServerV2ray;
use App\Models\ServerVmess;
use App\Models\ServerGroup;
use App\Models\User;
use App\Services\ServerService;
@ -65,7 +65,7 @@ class GroupController extends Controller
}
}
$servers = ServerV2ray::all();
$servers = ServerVmess::all();
foreach ($servers as $server) {
if (in_array($request->input('id'), $server->group_id)) {
abort(500, '该组已被节点所使用,无法删除');

View File

@ -2,7 +2,7 @@
namespace App\Http\Controllers\Admin\Server;
use App\Models\ServerV2ray;
use App\Models\ServerVmess;
use App\Models\ServerShadowsocks;
use App\Models\ServerTrojan;
use App\Services\ServerService;
@ -32,8 +32,8 @@ class ManageController extends Controller
abort(500, '保存失败');
}
break;
case 'v2ray':
if (!ServerV2ray::find($v['value'])->update(['sort' => $v['sort']])) {
case 'vmess':
if (!ServerVmess::find($v['value'])->update(['sort' => $v['sort']])) {
DB::rollBack();
abort(500, '保存失败');
}

View File

@ -2,21 +2,21 @@
namespace App\Http\Controllers\Admin\Server;
use App\Http\Requests\Admin\ServerV2raySave;
use App\Http\Requests\Admin\ServerV2rayUpdate;
use App\Http\Requests\Admin\ServerVmessSave;
use App\Http\Requests\Admin\ServerVmessUpdate;
use App\Services\ServerService;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Models\ServerV2ray;
use App\Models\ServerVmess;
class V2rayController extends Controller
class VmessController extends Controller
{
public function save(ServerV2raySave $request)
public function save(ServerVmessSave $request)
{
$params = $request->validated();
if ($request->input('id')) {
$server = ServerV2ray::find($request->input('id'));
$server = ServerVmess::find($request->input('id'));
if (!$server) {
abort(500, '服务器不存在');
}
@ -30,7 +30,7 @@ class V2rayController extends Controller
]);
}
if (!ServerV2ray::create($params)) {
if (!ServerVmess::create($params)) {
abort(500, '创建失败');
}
@ -42,7 +42,7 @@ class V2rayController extends Controller
public function drop(Request $request)
{
if ($request->input('id')) {
$server = ServerV2ray::find($request->input('id'));
$server = ServerVmess::find($request->input('id'));
if (!$server) {
abort(500, '节点ID不存在');
}
@ -52,13 +52,13 @@ class V2rayController extends Controller
]);
}
public function update(ServerV2rayUpdate $request)
public function update(ServerVmessUpdate $request)
{
$params = $request->only([
'show',
]);
$server = ServerV2ray::find($request->input('id'));
$server = ServerVmess::find($request->input('id'));
if (!$server) {
abort(500, '该服务器不存在');
@ -76,12 +76,12 @@ class V2rayController extends Controller
public function copy(Request $request)
{
$server = ServerV2ray::find($request->input('id'));
$server = ServerVmess::find($request->input('id'));
$server->show = 0;
if (!$server) {
abort(500, '服务器不存在');
}
if (!ServerV2ray::create($server->toArray())) {
if (!ServerVmess::create($server->toArray())) {
abort(500, '复制失败');
}

View File

@ -10,7 +10,7 @@ use App\Services\ServerService;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Models\ServerGroup;
use App\Models\ServerV2ray;
use App\Models\ServerVmess;
use App\Models\Plan;
use App\Models\User;
use App\Models\Ticket;
@ -99,8 +99,9 @@ class StatController extends Controller
{
$servers = [
'shadowsocks' => ServerShadowsocks::where('parent_id', null)->get()->toArray(),
'v2ray' => ServerV2ray::where('parent_id', null)->get()->toArray(),
'trojan' => ServerTrojan::where('parent_id', null)->get()->toArray()
'v2ray' => ServerVmess::where('parent_id', null)->get()->toArray(),
'trojan' => ServerTrojan::where('parent_id', null)->get()->toArray(),
'vmess' => ServerVmess::where('parent_id', null)->get()->toArray()
];
$startAt = strtotime('-1 day', strtotime(date('Y-m-d')));
$endAt = strtotime(date('Y-m-d'));

View File

@ -9,7 +9,7 @@ use App\Utils\CacheKey;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Models\ServerGroup;
use App\Models\ServerV2ray;
use App\Models\ServerVmess;
use App\Models\Plan;
use App\Models\User;
use App\Models\Ticket;

View File

@ -42,7 +42,7 @@ class AppController extends Controller
array_push($proxy, Protocols\Clash::buildShadowsocks($user['uuid'], $item));
array_push($proxies, $item['name']);
}
if ($item['type'] === 'v2ray') {
if ($item['type'] === 'vmess') {
array_push($proxy, Protocols\Clash::buildVmess($user['uuid'], $item));
array_push($proxies, $item['name']);
}

View File

@ -49,7 +49,7 @@ class Clash
array_push($proxy, self::buildShadowsocks($user['uuid'], $item));
array_push($proxies, $item['name']);
}
if ($item['type'] === 'v2ray') {
if ($item['type'] === 'vmess') {
array_push($proxy, self::buildVmess($user['uuid'], $item));
array_push($proxies, $item['name']);
}

View File

@ -40,7 +40,7 @@ class ClashMeta
array_push($proxy, self::buildShadowsocks($user['uuid'], $item));
array_push($proxies, $item['name']);
}
if ($item['type'] === 'v2ray') {
if ($item['type'] === 'vmess') {
array_push($proxy, self::buildVmess($user['uuid'], $item));
array_push($proxies, $item['name']);
}

View File

@ -22,7 +22,7 @@ class Passwall
$uri = '';
foreach ($servers as $item) {
if ($item['type'] === 'v2ray') {
if ($item['type'] === 'vmess') {
$uri .= self::buildVmess($user['uuid'], $item);
}
if ($item['type'] === 'shadowsocks') {

View File

@ -25,7 +25,7 @@ class QuantumultX
if ($item['type'] === 'shadowsocks') {
$uri .= self::buildShadowsocks($user['uuid'], $item);
}
if ($item['type'] === 'v2ray') {
if ($item['type'] === 'vmess') {
$uri .= self::buildVmess($user['uuid'], $item);
}
if ($item['type'] === 'trojan') {

View File

@ -22,7 +22,7 @@ class SSRPlus
$uri = '';
foreach ($servers as $item) {
if ($item['type'] === 'v2ray') {
if ($item['type'] === 'vmess') {
$uri .= self::buildVmess($user['uuid'], $item);
}
if ($item['type'] === 'shadowsocks') {

View File

@ -21,7 +21,7 @@ class SagerNet
$uri = '';
foreach ($servers as $item) {
if ($item['type'] === 'v2ray') {
if ($item['type'] === 'vmess') {
$uri .= self::buildVmess($user['uuid'], $item);
}
if ($item['type'] === 'shadowsocks') {

View File

@ -32,7 +32,7 @@ class Shadowrocket
if ($item['type'] === 'shadowsocks') {
$uri .= self::buildShadowsocks($user['uuid'], $item);
}
if ($item['type'] === 'v2ray') {
if ($item['type'] === 'vmess') {
$uri .= self::buildVmess($user['uuid'], $item);
}
if ($item['type'] === 'trojan') {

View File

@ -47,7 +47,7 @@ class Stash
array_push($proxy, self::buildShadowsocks($user['uuid'], $item));
array_push($proxies, $item['name']);
}
if ($item['type'] === 'v2ray') {
if ($item['type'] === 'vmess') {
array_push($proxy, self::buildVmess($user['uuid'], $item));
array_push($proxies, $item['name']);
}

View File

@ -41,7 +41,7 @@ class Surfboard
// [Proxy Group]
$proxyGroup .= $item['name'] . ', ';
}
if ($item['type'] === 'v2ray') {
if ($item['type'] === 'vmess') {
// [Proxy]
$proxies .= self::buildVmess($user['uuid'], $item);
// [Proxy Group]

View File

@ -41,7 +41,7 @@ class Surge
// [Proxy Group]
$proxyGroup .= $item['name'] . ', ';
}
if ($item['type'] === 'v2ray') {
if ($item['type'] === 'vmess') {
// [Proxy]
$proxies .= self::buildVmess($user['uuid'], $item);
// [Proxy Group]

View File

@ -24,7 +24,7 @@ class V2rayN
$uri = '';
foreach ($servers as $item) {
if ($item['type'] === 'v2ray') {
if ($item['type'] === 'vmess') {
$uri .= self::buildVmess($user['uuid'], $item);
}
if ($item['type'] === 'shadowsocks') {

View File

@ -22,7 +22,7 @@ class V2rayNG
$uri = '';
foreach ($servers as $item) {
if ($item['type'] === 'v2ray') {
if ($item['type'] === 'vmess') {
$uri .= self::buildVmess($user['uuid'], $item);
}
if ($item['type'] === 'shadowsocks') {

View File

@ -8,7 +8,7 @@ use App\Utils\CacheKey;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Models\User;
use App\Models\ServerV2ray;
use App\Models\ServerVmess;
use App\Models\ServerLog;
use Illuminate\Support\Facades\DB;
use Illuminate\Support\Facades\Log;
@ -37,11 +37,11 @@ class DeepbworkController extends Controller
{
ini_set('memory_limit', -1);
$nodeId = $request->input('node_id');
$server = ServerV2ray::find($nodeId);
$server = ServerVmess::find($nodeId);
if (!$server) {
abort(500, 'fail');
}
Cache::put(CacheKey::get('SERVER_V2RAY_LAST_CHECK_AT', $server->id), time(), 3600);
Cache::put(CacheKey::get('SERVER_VMESS_LAST_CHECK_AT', $server->id), time(), 3600);
$serverService = new ServerService();
$users = $serverService->getAvailableUsers($server->group_id);
$result = [];
@ -69,7 +69,7 @@ class DeepbworkController extends Controller
public function submit(Request $request)
{
// Log::info('serverSubmitData:' . $request->input('node_id') . ':' . file_get_contents('php://input'));
$server = ServerV2ray::find($request->input('node_id'));
$server = ServerVmess::find($request->input('node_id'));
if (!$server) {
return response([
'ret' => 0,
@ -78,13 +78,13 @@ class DeepbworkController extends Controller
}
$data = file_get_contents('php://input');
$data = json_decode($data, true);
Cache::put(CacheKey::get('SERVER_V2RAY_ONLINE_USER', $server->id), count($data), 3600);
Cache::put(CacheKey::get('SERVER_V2RAY_LAST_PUSH_AT', $server->id), time(), 3600);
Cache::put(CacheKey::get('SERVER_VMESS_ONLINE_USER', $server->id), count($data), 3600);
Cache::put(CacheKey::get('SERVER_VMESS_LAST_PUSH_AT', $server->id), time(), 3600);
$userService = new UserService();
foreach ($data as $item) {
$u = $item['u'];
$d = $item['d'];
$userService->trafficFetch($u, $d, $item['user_id'], $server->toArray(), 'v2ray');
$userService->trafficFetch($u, $d, $item['user_id'], $server->toArray(), 'vmess');
}
return response([
@ -112,7 +112,7 @@ class DeepbworkController extends Controller
private function getV2RayConfig(int $nodeId, int $localPort)
{
$server = ServerV2ray::find($nodeId);
$server = ServerVmess::find($nodeId);
if (!$server) {
abort(500, '节点不存在');
}
@ -129,7 +129,7 @@ class DeepbworkController extends Controller
return $json;
}
private function setDns(ServerV2ray $server, object $json)
private function setDns(ServerVmess $server, object $json)
{
if ($server->dnsSettings) {
$dns = $server->dnsSettings;
@ -142,7 +142,7 @@ class DeepbworkController extends Controller
}
}
private function setNetwork(ServerV2ray $server, object $json)
private function setNetwork(ServerVmess $server, object $json)
{
if ($server->networkSettings) {
switch ($server->network) {
@ -171,7 +171,7 @@ class DeepbworkController extends Controller
}
}
private function setRule(ServerV2ray $server, object $json)
private function setRule(ServerVmess $server, object $json)
{
$domainRules = array_filter(explode(PHP_EOL, config('v2board.server_v2ray_domain')));
$protocolRules = array_filter(explode(PHP_EOL, config('v2board.server_v2ray_protocol')));
@ -211,7 +211,7 @@ class DeepbworkController extends Controller
}
}
private function setTls(ServerV2ray $server, object $json)
private function setTls(ServerVMess $server, object $json)
{
if ((int)$server->tls) {
$tlsSettings = $server->tlsSettings;

View File

@ -9,7 +9,7 @@ use App\Utils\Helper;
use Illuminate\Http\Request;
use App\Http\Controllers\Controller;
use App\Models\ServerShadowsocks;
use App\Models\ServerV2ray;
use App\Models\ServerVmess;
use App\Models\ServerTrojan;
use Illuminate\Support\Facades\Cache;
@ -30,6 +30,7 @@ class UniProxyController extends Controller
abort(500, 'token is error');
}
$this->nodeType = $request->input('node_type');
if ($this->nodeType === 'v2ray') $this->nodeType = 'vmess';
$this->nodeId = $request->input('node_id');
$this->serverService = new ServerService();
$this->nodeInfo = $this->serverService->getServer($this->nodeId, $this->nodeType);
@ -92,7 +93,7 @@ class UniProxyController extends Controller
$response['server_key'] = Helper::getShadowsocksServerKey($this->nodeInfo->created_at, 32);
}
break;
case 'v2ray':
case 'vmess':
$response = [
'server_port' => $this->nodeInfo->server_port,
'network' => $this->nodeInfo->network,

View File

@ -8,7 +8,7 @@ use App\Services\UserService;
use App\Utils\CacheKey;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Cache;
use App\Models\ServerV2ray;
use App\Models\ServerVmess;
use App\Models\ServerLog;
use App\Models\User;

View File

@ -4,7 +4,7 @@ namespace App\Http\Requests\Admin;
use Illuminate\Foundation\Http\FormRequest;
class ServerV2raySave extends FormRequest
class ServerVmessSave extends FormRequest
{
/**
* Get the validation rules that apply to the request.

View File

@ -4,7 +4,7 @@ namespace App\Http\Requests\Admin;
use Illuminate\Foundation\Http\FormRequest;
class ServerV2rayUpdate extends FormRequest
class ServerVmessUpdate extends FormRequest
{
/**
* Get the validation rules that apply to the request.

View File

@ -45,14 +45,14 @@ class AdminRoute
$router->post('viewConfig', 'Admin\\Server\\TrojanController@viewConfig');
});
$router->group([
'prefix' => 'server/v2ray'
'prefix' => 'server/vmess'
], function ($router) {
$router->get ('fetch', 'Admin\\Server\\V2rayController@fetch');
$router->post('save', 'Admin\\Server\\V2rayController@save');
$router->post('drop', 'Admin\\Server\\V2rayController@drop');
$router->post('update', 'Admin\\Server\\V2rayController@update');
$router->post('copy', 'Admin\\Server\\V2rayController@copy');
$router->post('sort', 'Admin\\Server\\V2rayController@sort');
$router->get ('fetch', 'Admin\\Server\\VmessController@fetch');
$router->post('save', 'Admin\\Server\\VmessController@save');
$router->post('drop', 'Admin\\Server\\VmessController@drop');
$router->post('update', 'Admin\\Server\\VmessController@update');
$router->post('copy', 'Admin\\Server\\VmessController@copy');
$router->post('sort', 'Admin\\Server\\VmessController@sort');
});
$router->group([
'prefix' => 'server/shadowsocks'

View File

@ -4,7 +4,7 @@ namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class ServerV2ray extends Model
class ServerVmess extends Model
{
protected $table = 'v2_server_v2ray';
protected $dateFormat = 'U';

View File

@ -6,7 +6,7 @@ use App\Models\ServerLog;
use App\Models\ServerRoute;
use App\Models\ServerShadowsocks;
use App\Models\User;
use App\Models\ServerV2ray;
use App\Models\ServerVmess;
use App\Models\ServerTrojan;
use App\Utils\CacheKey;
use App\Utils\Helper;
@ -15,24 +15,24 @@ use Illuminate\Support\Facades\Cache;
class ServerService
{
public function getAvailableV2ray(User $user):array
public function getAvailableVmess(User $user):array
{
$servers = [];
$model = ServerV2ray::orderBy('sort', 'ASC');
$v2ray = $model->get();
foreach ($v2ray as $key => $v) {
$model = ServerVmess::orderBy('sort', 'ASC');
$vmess = $model->get();
foreach ($vmess as $key => $v) {
if (!$v['show']) continue;
$v2ray[$key]['type'] = 'v2ray';
if (!in_array($user->group_id, $v2ray[$key]['group_id'])) continue;
if (strpos($v2ray[$key]['port'], '-') !== false) {
$v2ray[$key]['port'] = Helper::randomPort($v2ray[$key]['port']);
$vmess[$key]['type'] = 'vmess';
if (!in_array($user->group_id, $vmess[$key]['group_id'])) continue;
if (strpos($vmess[$key]['port'], '-') !== false) {
$vmess[$key]['port'] = Helper::randomPort($vmess[$key]['port']);
}
if ($v2ray[$key]['parent_id']) {
$v2ray[$key]['last_check_at'] = Cache::get(CacheKey::get('SERVER_V2RAY_LAST_CHECK_AT', $v2ray[$key]['parent_id']));
if ($vmess[$key]['parent_id']) {
$vmess[$key]['last_check_at'] = Cache::get(CacheKey::get('SERVER_VMESS_LAST_CHECK_AT', $vmess[$key]['parent_id']));
} else {
$v2ray[$key]['last_check_at'] = Cache::get(CacheKey::get('SERVER_V2RAY_LAST_CHECK_AT', $v2ray[$key]['id']));
$vmess[$key]['last_check_at'] = Cache::get(CacheKey::get('SERVER_VMESS_LAST_CHECK_AT', $vmess[$key]['id']));
}
$servers[] = $v2ray[$key]->toArray();
$servers[] = $vmess[$key]->toArray();
}
@ -87,7 +87,7 @@ class ServerService
{
$servers = array_merge(
$this->getAvailableShadowsocks($user),
$this->getAvailableV2ray($user),
$this->getAvailableVmess($user),
$this->getAvailableTrojan($user)
);
$tmp = array_column($servers, 'sort');
@ -160,13 +160,13 @@ class ServerService
return $servers;
}
public function getAllV2ray()
public function getAllVMess()
{
$servers = ServerV2ray::orderBy('sort', 'ASC')
$servers = ServerVmess::orderBy('sort', 'ASC')
->get()
->toArray();
foreach ($servers as $k => $v) {
$servers[$k]['type'] = 'v2ray';
$servers[$k]['type'] = 'vmess';
}
return $servers;
}
@ -203,7 +203,7 @@ class ServerService
{
$servers = array_merge(
$this->getAllShadowsocks(),
$this->getAllV2ray(),
$this->getAllVMess(),
$this->getAllTrojan()
);
$this->mergeData($servers);
@ -227,8 +227,8 @@ class ServerService
public function getServer($serverId, $serverType)
{
switch ($serverType) {
case 'v2ray':
return ServerV2ray::find($serverId);
case 'vmess':
return ServerVmess::find($serverId);
case 'shadowsocks':
return ServerShadowsocks::find($serverId);
case 'trojan':

View File

@ -7,9 +7,9 @@ class CacheKey
CONST KEYS = [
'EMAIL_VERIFY_CODE' => '邮箱验证码',
'LAST_SEND_EMAIL_VERIFY_TIMESTAMP' => '最后一次发送邮箱验证码时间',
'SERVER_V2RAY_ONLINE_USER' => '节点在线用户',
'SERVER_V2RAY_LAST_CHECK_AT' => '节点最后检查时间',
'SERVER_V2RAY_LAST_PUSH_AT' => '节点最后推送时间',
'SERVER_VMESS_ONLINE_USER' => '节点在线用户',
'SERVER_VMESS_LAST_CHECK_AT' => '节点最后检查时间',
'SERVER_VMESS_LAST_PUSH_AT' => '节点最后推送时间',
'SERVER_TROJAN_ONLINE_USER' => 'trojan节点在线用户',
'SERVER_TROJAN_LAST_CHECK_AT' => 'trojan节点最后检查时间',
'SERVER_TROJAN_LAST_PUSH_AT' => 'trojan节点最后推送时间',

View File

@ -30,7 +30,7 @@ class Helper
public static function generateOrderNo(): string
{
$randomChar = rand(10000, 99999);
$randomChar = mt_rand(10000, 99999);
return date('YmdHms') . $randomChar;
}

View File

@ -134,7 +134,8 @@ CREATE TABLE `v2_order` (
`paid_at` int(11) DEFAULT NULL,
`created_at` int(11) NOT NULL,
`updated_at` int(11) NOT NULL,
PRIMARY KEY (`id`)
PRIMARY KEY (`id`),
UNIQUE KEY `trade_no` (`trade_no`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
@ -163,11 +164,11 @@ CREATE TABLE `v2_plan` (
`group_id` int(11) NOT NULL,
`transfer_enable` int(11) NOT NULL,
`speed_limit` int(11) DEFAULT NULL,
`name` varchar(255) CHARACTER SET utf8mb4 NOT NULL,
`name` varchar(255) NOT NULL,
`show` tinyint(1) NOT NULL DEFAULT '0',
`sort` int(11) DEFAULT NULL,
`renew` tinyint(1) NOT NULL DEFAULT '1',
`content` text CHARACTER SET utf8mb4,
`content` text,
`month_price` int(11) DEFAULT NULL,
`quarter_price` int(11) DEFAULT NULL,
`half_year_price` int(11) DEFAULT NULL,
@ -181,7 +182,7 @@ CREATE TABLE `v2_plan` (
`created_at` int(11) NOT NULL,
`updated_at` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
DROP TABLE IF EXISTS `v2_server_group`;
@ -397,4 +398,4 @@ CREATE TABLE `v2_user` (
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
-- 2022-12-15 05:24:08
-- 2023-02-15 06:46:53

View File

@ -642,3 +642,12 @@ CREATE TABLE `v2_server_route` (
ALTER TABLE `v2_server_route`
CHANGE `match` `match` text COLLATE 'utf8mb4_general_ci' NOT NULL AFTER `remarks`;
ALTER TABLE `v2_order`
ADD UNIQUE `trade_no` (`trade_no`);
ALTER TABLE `v2_plan`
CHANGE `content` `content` text COLLATE 'utf8mb4_general_ci' NULL AFTER `renew`;
ALTER TABLE `v2_plan`
COLLATE 'utf8mb4_general_ci';