mirror of
https://github.com/v2board/v2board.git
synced 2025-06-16 06:37:53 +08:00
update: add hysteria
This commit is contained in:
@ -2,6 +2,7 @@
|
||||
|
||||
namespace App\Services;
|
||||
|
||||
use App\Models\ServerHysteria;
|
||||
use App\Models\ServerLog;
|
||||
use App\Models\ServerRoute;
|
||||
use App\Models\ServerShadowsocks;
|
||||
@ -61,6 +62,28 @@ class ServerService
|
||||
return $servers;
|
||||
}
|
||||
|
||||
public function getAvailableHysteria(User $user)
|
||||
{
|
||||
$availableServers = [];
|
||||
$model = ServerHysteria::orderBy('sort', 'ASC');
|
||||
$servers = $model->get()->keyBy('id');
|
||||
foreach ($servers as $key => $v) {
|
||||
if (!$v['show']) continue;
|
||||
$servers[$key]['type'] = 'hysteria';
|
||||
$servers[$key]['last_check_at'] = Cache::get(CacheKey::get('SERVER_HYSTERIA_LAST_CHECK_AT', $v['id']));
|
||||
if (!in_array($user->group_id, $v['group_id'])) continue;
|
||||
if (strpos($v['port'], '-') !== false) {
|
||||
$servers[$key]['port'] = Helper::randomPort($v['port']);
|
||||
}
|
||||
if (isset($servers[$v['parent_id']])) {
|
||||
$servers[$key]['last_check_at'] = Cache::get(CacheKey::get('SERVER_HYSTERIA_LAST_CHECK_AT', $v['parent_id']));
|
||||
$servers[$key]['created_at'] = $servers[$v['parent_id']]['created_at'];
|
||||
}
|
||||
$availableServers[] = $servers[$key]->toArray();
|
||||
}
|
||||
return $availableServers;
|
||||
}
|
||||
|
||||
public function getAvailableShadowsocks(User $user)
|
||||
{
|
||||
$servers = [];
|
||||
@ -88,7 +111,8 @@ class ServerService
|
||||
$servers = array_merge(
|
||||
$this->getAvailableShadowsocks($user),
|
||||
$this->getAvailableVmess($user),
|
||||
$this->getAvailableTrojan($user)
|
||||
$this->getAvailableTrojan($user),
|
||||
$this->getAvailableHysteria($user)
|
||||
);
|
||||
$tmp = array_column($servers, 'sort');
|
||||
array_multisort($tmp, SORT_ASC, $servers);
|
||||
@ -182,6 +206,17 @@ class ServerService
|
||||
return $servers;
|
||||
}
|
||||
|
||||
public function getAllHysteria()
|
||||
{
|
||||
$servers = ServerHysteria::orderBy('sort', 'ASC')
|
||||
->get()
|
||||
->toArray();
|
||||
foreach ($servers as $k => $v) {
|
||||
$servers[$k]['type'] = 'hysteria';
|
||||
}
|
||||
return $servers;
|
||||
}
|
||||
|
||||
private function mergeData(&$servers)
|
||||
{
|
||||
foreach ($servers as $k => $v) {
|
||||
@ -204,7 +239,8 @@ class ServerService
|
||||
$servers = array_merge(
|
||||
$this->getAllShadowsocks(),
|
||||
$this->getAllVMess(),
|
||||
$this->getAllTrojan()
|
||||
$this->getAllTrojan(),
|
||||
$this->getAllHysteria()
|
||||
);
|
||||
$this->mergeData($servers);
|
||||
$tmp = array_column($servers, 'sort');
|
||||
@ -233,6 +269,8 @@ class ServerService
|
||||
return ServerShadowsocks::find($serverId);
|
||||
case 'trojan':
|
||||
return ServerTrojan::find($serverId);
|
||||
case 'hysteria':
|
||||
return ServerHysteria::find($serverId);
|
||||
default:
|
||||
return false;
|
||||
}
|
||||
|
Reference in New Issue
Block a user