mirror of
https://github.com/v2board/v2board.git
synced 2025-03-15 07:04:43 +08:00
Merge branch 'dev' of github.com:wyx2685/v2board into dev
This commit is contained in:
commit
24205f60f5
@ -14,7 +14,7 @@ DB_USERNAME=root
|
|||||||
DB_PASSWORD=123456
|
DB_PASSWORD=123456
|
||||||
|
|
||||||
BROADCAST_DRIVER=log
|
BROADCAST_DRIVER=log
|
||||||
CACHE_DRIVER=file
|
CACHE_DRIVER=redis
|
||||||
QUEUE_CONNECTION=redis
|
QUEUE_CONNECTION=redis
|
||||||
SESSION_DRIVER=redis
|
SESSION_DRIVER=redis
|
||||||
SESSION_LIFETIME=120
|
SESSION_LIFETIME=120
|
||||||
|
@ -4,12 +4,9 @@ namespace App\Console\Commands;
|
|||||||
|
|
||||||
use App\Models\StatServer;
|
use App\Models\StatServer;
|
||||||
use App\Models\StatUser;
|
use App\Models\StatUser;
|
||||||
use App\Models\User;
|
|
||||||
use App\Services\StatisticalService;
|
use App\Services\StatisticalService;
|
||||||
use Illuminate\Console\Command;
|
use Illuminate\Console\Command;
|
||||||
use App\Models\Order;
|
|
||||||
use App\Models\Stat;
|
use App\Models\Stat;
|
||||||
use App\Models\CommissionLog;
|
|
||||||
use Illuminate\Support\Facades\DB;
|
use Illuminate\Support\Facades\DB;
|
||||||
|
|
||||||
class V2boardStatistics extends Command
|
class V2boardStatistics extends Command
|
||||||
@ -50,82 +47,94 @@ class V2boardStatistics extends Command
|
|||||||
$this->statUser();
|
$this->statUser();
|
||||||
$this->statServer();
|
$this->statServer();
|
||||||
$this->stat();
|
$this->stat();
|
||||||
$this->info('耗时' . (microtime(true) - $startAt));
|
info('统计任务执行完毕。耗时:' . (microtime(true) - $startAt) / 1000);
|
||||||
}
|
}
|
||||||
|
|
||||||
private function statServer()
|
private function statServer()
|
||||||
{
|
{
|
||||||
$createdAt = time();
|
try {
|
||||||
$recordAt = strtotime('-1 day', strtotime(date('Y-m-d')));
|
DB::beginTransaction();
|
||||||
$statService = new StatisticalService();
|
$createdAt = time();
|
||||||
$statService->setStartAt($recordAt);
|
$recordAt = strtotime('-1 day', strtotime(date('Y-m-d')));
|
||||||
$statService->setServerStats();
|
$statService = new StatisticalService();
|
||||||
$stats = $statService->getStatServer();
|
$statService->setStartAt($recordAt);
|
||||||
DB::beginTransaction();
|
$statService->setServerStats();
|
||||||
foreach ($stats as $stat) {
|
$stats = $statService->getStatServer();
|
||||||
if (!StatServer::insert([
|
foreach ($stats as $stat) {
|
||||||
'server_id' => $stat['server_id'],
|
if (!StatServer::insert([
|
||||||
'server_type' => $stat['server_type'],
|
'server_id' => $stat['server_id'],
|
||||||
'u' => $stat['u'],
|
'server_type' => $stat['server_type'],
|
||||||
'd' => $stat['d'],
|
'u' => $stat['u'],
|
||||||
'created_at' => $createdAt,
|
'd' => $stat['d'],
|
||||||
'updated_at' => $createdAt,
|
'created_at' => $createdAt,
|
||||||
'record_type' => 'd',
|
'updated_at' => $createdAt,
|
||||||
'record_at' => $recordAt
|
'record_type' => 'd',
|
||||||
])) {
|
'record_at' => $recordAt
|
||||||
DB::rollback();
|
])) {
|
||||||
throw new \Exception('stat server fail');
|
throw new \Exception('stat server fail');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
DB::commit();
|
||||||
|
$statService->clearStatServer();
|
||||||
|
} catch (\Exception $e) {
|
||||||
|
DB::rollback();
|
||||||
|
\Log::error($e->getMessage(), ['exception' => $e]);
|
||||||
}
|
}
|
||||||
DB::commit();
|
|
||||||
$statService->clearStatServer();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private function statUser()
|
private function statUser()
|
||||||
{
|
{
|
||||||
$createdAt = time();
|
try {
|
||||||
$recordAt = strtotime('-1 day', strtotime(date('Y-m-d')));
|
DB::beginTransaction();
|
||||||
$statService = new StatisticalService();
|
$createdAt = time();
|
||||||
$statService->setStartAt($recordAt);
|
$recordAt = strtotime('-1 day', strtotime(date('Y-m-d')));
|
||||||
$statService->setUserStats();
|
$statService = new StatisticalService();
|
||||||
$stats = $statService->getStatUser();
|
$statService->setStartAt($recordAt);
|
||||||
DB::beginTransaction();
|
$statService->setUserStats();
|
||||||
foreach ($stats as $stat) {
|
$stats = $statService->getStatUser();
|
||||||
if (!StatUser::insert([
|
foreach ($stats as $stat) {
|
||||||
'user_id' => $stat['user_id'],
|
if (!StatUser::insert([
|
||||||
'u' => $stat['u'],
|
'user_id' => $stat['user_id'],
|
||||||
'd' => $stat['d'],
|
'u' => $stat['u'],
|
||||||
'server_rate' => $stat['server_rate'],
|
'd' => $stat['d'],
|
||||||
'created_at' => $createdAt,
|
'server_rate' => $stat['server_rate'],
|
||||||
'updated_at' => $createdAt,
|
'created_at' => $createdAt,
|
||||||
'record_type' => 'd',
|
'updated_at' => $createdAt,
|
||||||
'record_at' => $recordAt
|
'record_type' => 'd',
|
||||||
])) {
|
'record_at' => $recordAt
|
||||||
DB::rollback();
|
])) {
|
||||||
throw new \Exception('stat user fail');
|
throw new \Exception('stat user fail');
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
DB::commit();
|
||||||
|
$statService->clearStatUser();
|
||||||
|
} catch (\Exception $e) {
|
||||||
|
DB::rollback();
|
||||||
|
\Log::error($e->getMessage(), ['exception' => $e]);
|
||||||
}
|
}
|
||||||
DB::commit();
|
|
||||||
$statService->clearStatUser();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private function stat()
|
private function stat()
|
||||||
{
|
{
|
||||||
$endAt = strtotime(date('Y-m-d'));
|
try {
|
||||||
$startAt = strtotime('-1 day', $endAt);
|
$endAt = strtotime(date('Y-m-d'));
|
||||||
$statisticalService = new StatisticalService();
|
$startAt = strtotime('-1 day', $endAt);
|
||||||
$statisticalService->setStartAt($startAt);
|
$statisticalService = new StatisticalService();
|
||||||
$statisticalService->setEndAt($endAt);
|
$statisticalService->setStartAt($startAt);
|
||||||
$data = $statisticalService->generateStatData();
|
$statisticalService->setEndAt($endAt);
|
||||||
$data['record_at'] = $startAt;
|
$data = $statisticalService->generateStatData();
|
||||||
$data['record_type'] = 'd';
|
$data['record_at'] = $startAt;
|
||||||
$statistic = Stat::where('record_at', $startAt)
|
$data['record_type'] = 'd';
|
||||||
->where('record_type', 'd')
|
$statistic = Stat::where('record_at', $startAt)
|
||||||
->first();
|
->where('record_type', 'd')
|
||||||
if ($statistic) {
|
->first();
|
||||||
$statistic->update($data);
|
if ($statistic) {
|
||||||
return;
|
$statistic->update($data);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Stat::create($data);
|
||||||
|
} catch (\Exception $e) {
|
||||||
|
\Log::error($e->getMessage(), ['exception' => $e]);
|
||||||
}
|
}
|
||||||
Stat::create($data);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,13 +1,13 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Http\Controllers\Admin;
|
namespace App\Http\Controllers\V1\Admin;
|
||||||
|
|
||||||
|
use App\Http\Controllers\Controller;
|
||||||
use App\Http\Requests\Admin\ConfigSave;
|
use App\Http\Requests\Admin\ConfigSave;
|
||||||
use App\Jobs\SendEmailJob;
|
use App\Jobs\SendEmailJob;
|
||||||
use App\Services\TelegramService;
|
use App\Services\TelegramService;
|
||||||
use Illuminate\Http\Request;
|
|
||||||
use App\Utils\Dict;
|
use App\Utils\Dict;
|
||||||
use App\Http\Controllers\Controller;
|
use Illuminate\Http\Request;
|
||||||
use Illuminate\Support\Facades\Artisan;
|
use Illuminate\Support\Facades\Artisan;
|
||||||
use Illuminate\Support\Facades\File;
|
use Illuminate\Support\Facades\File;
|
||||||
use Illuminate\Support\Facades\Mail;
|
use Illuminate\Support\Facades\Mail;
|
@ -1,15 +1,13 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Http\Controllers\Admin;
|
namespace App\Http\Controllers\V1\Admin;
|
||||||
|
|
||||||
use App\Http\Requests\Admin\CouponSave;
|
|
||||||
use App\Http\Requests\Admin\CouponGenerate;
|
|
||||||
use App\Models\Plan;
|
|
||||||
use App\Models\User;
|
|
||||||
use Illuminate\Http\Request;
|
|
||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
|
use App\Http\Requests\Admin\CouponGenerate;
|
||||||
|
use App\Http\Requests\Admin\CouponSave;
|
||||||
use App\Models\Coupon;
|
use App\Models\Coupon;
|
||||||
use App\Utils\Helper;
|
use App\Utils\Helper;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
use Illuminate\Support\Facades\DB;
|
use Illuminate\Support\Facades\DB;
|
||||||
|
|
||||||
class CouponController extends Controller
|
class CouponController extends Controller
|
@ -1,12 +1,12 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Http\Controllers\Admin;
|
namespace App\Http\Controllers\V1\Admin;
|
||||||
|
|
||||||
|
use App\Http\Controllers\Controller;
|
||||||
use App\Http\Requests\Admin\KnowledgeSave;
|
use App\Http\Requests\Admin\KnowledgeSave;
|
||||||
use App\Http\Requests\Admin\KnowledgeSort;
|
use App\Http\Requests\Admin\KnowledgeSort;
|
||||||
use App\Models\Knowledge;
|
use App\Models\Knowledge;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use App\Http\Controllers\Controller;
|
|
||||||
use Illuminate\Support\Facades\DB;
|
use Illuminate\Support\Facades\DB;
|
||||||
|
|
||||||
class KnowledgeController extends Controller
|
class KnowledgeController extends Controller
|
@ -1,11 +1,11 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Http\Controllers\Admin;
|
namespace App\Http\Controllers\V1\Admin;
|
||||||
|
|
||||||
use App\Http\Requests\Admin\NoticeSave;
|
|
||||||
use Illuminate\Http\Request;
|
|
||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
|
use App\Http\Requests\Admin\NoticeSave;
|
||||||
use App\Models\Notice;
|
use App\Models\Notice;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
use Illuminate\Support\Facades\Cache;
|
use Illuminate\Support\Facades\Cache;
|
||||||
|
|
||||||
class NoticeController extends Controller
|
class NoticeController extends Controller
|
@ -1,19 +1,19 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Http\Controllers\Admin;
|
namespace App\Http\Controllers\V1\Admin;
|
||||||
|
|
||||||
|
use App\Http\Controllers\Controller;
|
||||||
use App\Http\Requests\Admin\OrderAssign;
|
use App\Http\Requests\Admin\OrderAssign;
|
||||||
use App\Http\Requests\Admin\OrderUpdate;
|
|
||||||
use App\Http\Requests\Admin\OrderFetch;
|
use App\Http\Requests\Admin\OrderFetch;
|
||||||
|
use App\Http\Requests\Admin\OrderUpdate;
|
||||||
use App\Models\CommissionLog;
|
use App\Models\CommissionLog;
|
||||||
|
use App\Models\Order;
|
||||||
|
use App\Models\Plan;
|
||||||
|
use App\Models\User;
|
||||||
use App\Services\OrderService;
|
use App\Services\OrderService;
|
||||||
use App\Services\UserService;
|
use App\Services\UserService;
|
||||||
use App\Utils\Helper;
|
use App\Utils\Helper;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use App\Http\Controllers\Controller;
|
|
||||||
use App\Models\Order;
|
|
||||||
use App\Models\User;
|
|
||||||
use App\Models\Plan;
|
|
||||||
use Illuminate\Support\Facades\DB;
|
use Illuminate\Support\Facades\DB;
|
||||||
|
|
||||||
class OrderController extends Controller
|
class OrderController extends Controller
|
@ -1,13 +1,13 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Http\Controllers\Admin;
|
namespace App\Http\Controllers\V1\Admin;
|
||||||
|
|
||||||
|
use App\Http\Controllers\Controller;
|
||||||
use App\Http\Requests\Admin\PaymentSave;
|
use App\Http\Requests\Admin\PaymentSave;
|
||||||
|
use App\Models\Payment;
|
||||||
use App\Services\PaymentService;
|
use App\Services\PaymentService;
|
||||||
use App\Utils\Helper;
|
use App\Utils\Helper;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use App\Http\Controllers\Controller;
|
|
||||||
use App\Models\Payment;
|
|
||||||
use Illuminate\Support\Facades\DB;
|
use Illuminate\Support\Facades\DB;
|
||||||
|
|
||||||
class PaymentController extends Controller
|
class PaymentController extends Controller
|
@ -1,16 +1,16 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Http\Controllers\Admin;
|
namespace App\Http\Controllers\V1\Admin;
|
||||||
|
|
||||||
|
use App\Http\Controllers\Controller;
|
||||||
use App\Http\Requests\Admin\PlanSave;
|
use App\Http\Requests\Admin\PlanSave;
|
||||||
use App\Http\Requests\Admin\PlanSort;
|
use App\Http\Requests\Admin\PlanSort;
|
||||||
use App\Http\Requests\Admin\PlanUpdate;
|
use App\Http\Requests\Admin\PlanUpdate;
|
||||||
|
use App\Models\Order;
|
||||||
|
use App\Models\Plan;
|
||||||
|
use App\Models\User;
|
||||||
use App\Services\PlanService;
|
use App\Services\PlanService;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use App\Http\Controllers\Controller;
|
|
||||||
use App\Models\Plan;
|
|
||||||
use App\Models\Order;
|
|
||||||
use App\Models\User;
|
|
||||||
use Illuminate\Support\Facades\DB;
|
use Illuminate\Support\Facades\DB;
|
||||||
|
|
||||||
class PlanController extends Controller
|
class PlanController extends Controller
|
@ -1,16 +1,14 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Http\Controllers\Admin\Server;
|
namespace App\Http\Controllers\V1\Admin\Server;
|
||||||
|
|
||||||
|
use App\Http\Controllers\Controller;
|
||||||
use App\Models\Plan;
|
use App\Models\Plan;
|
||||||
use App\Models\ServerShadowsocks;
|
|
||||||
use App\Models\ServerTrojan;
|
|
||||||
use App\Models\ServerVmess;
|
|
||||||
use App\Models\ServerGroup;
|
use App\Models\ServerGroup;
|
||||||
|
use App\Models\ServerVmess;
|
||||||
use App\Models\User;
|
use App\Models\User;
|
||||||
use App\Services\ServerService;
|
use App\Services\ServerService;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use App\Http\Controllers\Controller;
|
|
||||||
|
|
||||||
class GroupController extends Controller
|
class GroupController extends Controller
|
||||||
{
|
{
|
@ -1,14 +1,10 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Http\Controllers\Admin\Server;
|
namespace App\Http\Controllers\V1\Admin\Server;
|
||||||
|
|
||||||
use App\Http\Requests\Admin\ServerVmessSave;
|
|
||||||
use App\Http\Requests\Admin\ServerVmessUpdate;
|
|
||||||
use App\Models\ServerHysteria;
|
|
||||||
use App\Services\ServerService;
|
|
||||||
use Illuminate\Http\Request;
|
|
||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
use App\Models\ServerVmess;
|
use App\Models\ServerHysteria;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
|
||||||
class HysteriaController extends Controller
|
class HysteriaController extends Controller
|
||||||
{
|
{
|
@ -1,10 +1,10 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Http\Controllers\Admin\Server;
|
namespace App\Http\Controllers\V1\Admin\Server;
|
||||||
|
|
||||||
|
use App\Http\Controllers\Controller;
|
||||||
use App\Services\ServerService;
|
use App\Services\ServerService;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use App\Http\Controllers\Controller;
|
|
||||||
use Illuminate\Support\Facades\DB;
|
use Illuminate\Support\Facades\DB;
|
||||||
|
|
||||||
class ManageController extends Controller
|
class ManageController extends Controller
|
@ -1,14 +1,10 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Http\Controllers\Admin\Server;
|
namespace App\Http\Controllers\V1\Admin\Server;
|
||||||
|
|
||||||
use App\Http\Requests\Admin\ServerShadowsocksSave;
|
|
||||||
use App\Http\Requests\Admin\ServerShadowsocksUpdate;
|
|
||||||
use App\Models\ServerRoute;
|
|
||||||
use App\Models\ServerShadowsocks;
|
|
||||||
use App\Services\ServerService;
|
|
||||||
use Illuminate\Http\Request;
|
|
||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
|
use App\Models\ServerRoute;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
|
||||||
class RouteController extends Controller
|
class RouteController extends Controller
|
||||||
{
|
{
|
@ -1,13 +1,12 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Http\Controllers\Admin\Server;
|
namespace App\Http\Controllers\V1\Admin\Server;
|
||||||
|
|
||||||
|
use App\Http\Controllers\Controller;
|
||||||
use App\Http\Requests\Admin\ServerShadowsocksSave;
|
use App\Http\Requests\Admin\ServerShadowsocksSave;
|
||||||
use App\Http\Requests\Admin\ServerShadowsocksUpdate;
|
use App\Http\Requests\Admin\ServerShadowsocksUpdate;
|
||||||
use App\Models\ServerShadowsocks;
|
use App\Models\ServerShadowsocks;
|
||||||
use App\Services\ServerService;
|
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use App\Http\Controllers\Controller;
|
|
||||||
|
|
||||||
class ShadowsocksController extends Controller
|
class ShadowsocksController extends Controller
|
||||||
{
|
{
|
@ -1,13 +1,13 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Http\Controllers\Admin\Server;
|
namespace App\Http\Controllers\V1\Admin\Server;
|
||||||
|
|
||||||
|
use App\Http\Controllers\Controller;
|
||||||
use App\Http\Requests\Admin\ServerTrojanSave;
|
use App\Http\Requests\Admin\ServerTrojanSave;
|
||||||
use App\Http\Requests\Admin\ServerTrojanUpdate;
|
use App\Http\Requests\Admin\ServerTrojanUpdate;
|
||||||
|
use App\Models\ServerTrojan;
|
||||||
use App\Services\ServerService;
|
use App\Services\ServerService;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use App\Http\Controllers\Controller;
|
|
||||||
use App\Models\ServerTrojan;
|
|
||||||
|
|
||||||
class TrojanController extends Controller
|
class TrojanController extends Controller
|
||||||
{
|
{
|
119
app/Http/Controllers/V1/Admin/Server/VlessController.php
Normal file
119
app/Http/Controllers/V1/Admin/Server/VlessController.php
Normal file
@ -0,0 +1,119 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Controllers\V1\Admin\Server;
|
||||||
|
|
||||||
|
use App\Http\Controllers\Controller;
|
||||||
|
use App\Models\ServerVless;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
use ParagonIE_Sodium_Compat as SodiumCompat;
|
||||||
|
use App\Utils\Helper;
|
||||||
|
|
||||||
|
class VlessController extends Controller
|
||||||
|
{
|
||||||
|
public function save(Request $request)
|
||||||
|
{
|
||||||
|
$params = $request->validate([
|
||||||
|
'group_id' => 'required',
|
||||||
|
'route_id' => 'nullable|array',
|
||||||
|
'name' => 'required',
|
||||||
|
'parent_id' => 'nullable|integer',
|
||||||
|
'host' => 'required',
|
||||||
|
'port' => 'required',
|
||||||
|
'server_port' => 'required',
|
||||||
|
'tls' => 'required|in:0,1,2',
|
||||||
|
'tls_settings' => 'nullable|array',
|
||||||
|
'flow' => 'nullable|in:xtls-rprx-vision',
|
||||||
|
'network' => 'required',
|
||||||
|
'network_settings' => 'nullable|array',
|
||||||
|
'tags' => 'nullable|array',
|
||||||
|
'rate' => 'required',
|
||||||
|
'show' => 'nullable|in:0,1',
|
||||||
|
'sort' => 'nullable'
|
||||||
|
]);
|
||||||
|
|
||||||
|
if (isset($params['tls']) && (int)$params['tls'] === 2) {
|
||||||
|
$keyPair = SodiumCompat::crypto_box_keypair();
|
||||||
|
$params['tls_settings'] = $params['tls_settings'] ?? [];
|
||||||
|
if (!isset($params['tls_settings']['public_key'])) {
|
||||||
|
$params['tls_settings']['public_key'] = Helper::base64EncodeUrlSafe(SodiumCompat::crypto_box_publickey($keyPair));
|
||||||
|
}
|
||||||
|
if (!isset($params['tls_settings']['private_key'])) {
|
||||||
|
$params['tls_settings']['private_key'] = Helper::base64EncodeUrlSafe(SodiumCompat::crypto_box_secretkey($keyPair));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($request->input('id')) {
|
||||||
|
$server = ServerVless::find($request->input('id'));
|
||||||
|
if (!$server) {
|
||||||
|
abort(500, '服务器不存在');
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
$server->update($params);
|
||||||
|
} catch (\Exception $e) {
|
||||||
|
abort(500, '保存失败');
|
||||||
|
}
|
||||||
|
return response([
|
||||||
|
'data' => true
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!ServerVless::create($params)) {
|
||||||
|
abort(500, '创建失败');
|
||||||
|
}
|
||||||
|
|
||||||
|
return response([
|
||||||
|
'data' => true
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function drop(Request $request)
|
||||||
|
{
|
||||||
|
if ($request->input('id')) {
|
||||||
|
$server = ServerVless::find($request->input('id'));
|
||||||
|
if (!$server) {
|
||||||
|
abort(500, '节点ID不存在');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return response([
|
||||||
|
'data' => $server->delete()
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function update(Request $request)
|
||||||
|
{
|
||||||
|
$params = $request->validate([
|
||||||
|
'show' => 'nullable|in:0,1',
|
||||||
|
]);
|
||||||
|
|
||||||
|
$server = ServerVless::find($request->input('id'));
|
||||||
|
|
||||||
|
if (!$server) {
|
||||||
|
abort(500, '该服务器不存在');
|
||||||
|
}
|
||||||
|
try {
|
||||||
|
$server->update($params);
|
||||||
|
} catch (\Exception $e) {
|
||||||
|
abort(500, '保存失败');
|
||||||
|
}
|
||||||
|
|
||||||
|
return response([
|
||||||
|
'data' => true
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function copy(Request $request)
|
||||||
|
{
|
||||||
|
$server = ServerVless::find($request->input('id'));
|
||||||
|
$server->show = 0;
|
||||||
|
if (!$server) {
|
||||||
|
abort(500, '服务器不存在');
|
||||||
|
}
|
||||||
|
if (!ServerVless::create($server->toArray())) {
|
||||||
|
abort(500, '复制失败');
|
||||||
|
}
|
||||||
|
|
||||||
|
return response([
|
||||||
|
'data' => true
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
}
|
@ -1,13 +1,12 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Http\Controllers\Admin\Server;
|
namespace App\Http\Controllers\V1\Admin\Server;
|
||||||
|
|
||||||
|
use App\Http\Controllers\Controller;
|
||||||
use App\Http\Requests\Admin\ServerVmessSave;
|
use App\Http\Requests\Admin\ServerVmessSave;
|
||||||
use App\Http\Requests\Admin\ServerVmessUpdate;
|
use App\Http\Requests\Admin\ServerVmessUpdate;
|
||||||
use App\Services\ServerService;
|
|
||||||
use Illuminate\Http\Request;
|
|
||||||
use App\Http\Controllers\Controller;
|
|
||||||
use App\Models\ServerVmess;
|
use App\Models\ServerVmess;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
|
||||||
class VmessController extends Controller
|
class VmessController extends Controller
|
||||||
{
|
{
|
@ -1,97 +1,25 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Http\Controllers\Admin;
|
namespace App\Http\Controllers\V1\Admin;
|
||||||
|
|
||||||
|
use App\Http\Controllers\Controller;
|
||||||
use App\Models\CommissionLog;
|
use App\Models\CommissionLog;
|
||||||
|
use App\Models\Order;
|
||||||
use App\Models\ServerShadowsocks;
|
use App\Models\ServerShadowsocks;
|
||||||
use App\Models\ServerTrojan;
|
use App\Models\ServerTrojan;
|
||||||
use App\Models\StatUser;
|
|
||||||
use App\Services\ServerService;
|
|
||||||
use App\Services\StatisticalService;
|
|
||||||
use Illuminate\Http\Request;
|
|
||||||
use App\Http\Controllers\Controller;
|
|
||||||
use App\Models\ServerGroup;
|
|
||||||
use App\Models\ServerVmess;
|
use App\Models\ServerVmess;
|
||||||
use App\Models\Plan;
|
|
||||||
use App\Models\User;
|
|
||||||
use App\Models\Ticket;
|
|
||||||
use App\Models\Order;
|
|
||||||
use App\Models\Stat;
|
use App\Models\Stat;
|
||||||
use App\Models\StatServer;
|
use App\Models\StatServer;
|
||||||
|
use App\Models\StatUser;
|
||||||
|
use App\Models\Ticket;
|
||||||
|
use App\Models\User;
|
||||||
|
use App\Services\StatisticalService;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
use Illuminate\Support\Facades\Cache;
|
use Illuminate\Support\Facades\Cache;
|
||||||
use Illuminate\Support\Facades\DB;
|
use Illuminate\Support\Facades\DB;
|
||||||
|
|
||||||
class StatController extends Controller
|
class StatController extends Controller
|
||||||
{
|
{
|
||||||
public function getStat(Request $request)
|
|
||||||
{
|
|
||||||
$params = $request->validate([
|
|
||||||
'start_at' => '',
|
|
||||||
'end_at' => ''
|
|
||||||
]);
|
|
||||||
|
|
||||||
if (isset($params['start_at']) && isset($params['end_at'])) {
|
|
||||||
$stats = Stat::where('record_at', '>=', $params['start_at'])
|
|
||||||
->where('record_at', '<', $params['end_at'])
|
|
||||||
->get()
|
|
||||||
->makeHidden(['record_at', 'created_at', 'updated_at', 'id', 'record_type'])
|
|
||||||
->toArray();
|
|
||||||
} else {
|
|
||||||
$statisticalService = new StatisticalService();
|
|
||||||
return [
|
|
||||||
'data' => $statisticalService->generateStatData()
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
$stats = array_reduce($stats, function($carry, $item) {
|
|
||||||
foreach($item as $key => $value) {
|
|
||||||
if(isset($carry[$key]) && $carry[$key]) {
|
|
||||||
$carry[$key] += $value;
|
|
||||||
} else {
|
|
||||||
$carry[$key] = $value;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
return $carry;
|
|
||||||
}, []);
|
|
||||||
|
|
||||||
return [
|
|
||||||
'data' => $stats
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
public function getStatRecord(Request $request)
|
|
||||||
{
|
|
||||||
$request->validate([
|
|
||||||
'type' => 'required|in:paid_total,commission_total,register_count',
|
|
||||||
'start_at' => '',
|
|
||||||
'end_at' => ''
|
|
||||||
]);
|
|
||||||
|
|
||||||
$statisticalService = new StatisticalService();
|
|
||||||
$statisticalService->setStartAt($request->input('start_at'));
|
|
||||||
$statisticalService->setEndAt($request->input('end_at'));
|
|
||||||
return [
|
|
||||||
'data' => $statisticalService->getStatRecord($request->input('type'))
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
public function getRanking(Request $request)
|
|
||||||
{
|
|
||||||
$request->validate([
|
|
||||||
'type' => 'required|in:server_traffic_rank,user_consumption_rank,invite_rank',
|
|
||||||
'start_at' => '',
|
|
||||||
'end_at' => '',
|
|
||||||
'limit' => 'nullable|integer'
|
|
||||||
]);
|
|
||||||
|
|
||||||
$statisticalService = new StatisticalService();
|
|
||||||
$statisticalService->setStartAt($request->input('start_at'));
|
|
||||||
$statisticalService->setEndAt($request->input('end_at'));
|
|
||||||
return [
|
|
||||||
'data' => $statisticalService->getRanking($request->input('type'), $request->input('limit') ?? 20)
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
public function getOverride(Request $request)
|
public function getOverride(Request $request)
|
||||||
{
|
{
|
||||||
return [
|
return [
|
@ -1,10 +1,11 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Http\Controllers\Admin;
|
namespace App\Http\Controllers\V1\Admin;
|
||||||
|
|
||||||
|
use App\Http\Controllers\Controller;
|
||||||
|
use App\Models\Log as LogModel;
|
||||||
use App\Utils\CacheKey;
|
use App\Utils\CacheKey;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use App\Http\Controllers\Controller;
|
|
||||||
use Illuminate\Support\Facades\Cache;
|
use Illuminate\Support\Facades\Cache;
|
||||||
use Illuminate\Support\Facades\DB;
|
use Illuminate\Support\Facades\DB;
|
||||||
use Illuminate\Support\Facades\Http;
|
use Illuminate\Support\Facades\Http;
|
||||||
@ -101,5 +102,18 @@ class SystemController extends Controller
|
|||||||
return $master->status === 'paused';
|
return $master->status === 'paused';
|
||||||
})->count();
|
})->count();
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
|
public function getSystemLog(Request $request) {
|
||||||
|
$current = $request->input('current') ? $request->input('current') : 1;
|
||||||
|
$pageSize = $request->input('page_size') >= 10 ? $request->input('page_size') : 10;
|
||||||
|
$builder = LogModel::orderBy('created_at', 'DESC')
|
||||||
|
->setFilterAllowKeys('level');
|
||||||
|
$total = $builder->count();
|
||||||
|
$res = $builder->forPage($current, $pageSize)
|
||||||
|
->get();
|
||||||
|
return response([
|
||||||
|
'data' => $res,
|
||||||
|
'total' => $total
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
}
|
@ -1,12 +1,12 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Http\Controllers\Admin;
|
namespace App\Http\Controllers\V1\Admin;
|
||||||
|
|
||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
use App\Services\ThemeService;
|
use App\Services\ThemeService;
|
||||||
use Illuminate\Support\Facades\File;
|
|
||||||
use Illuminate\Support\Facades\Artisan;
|
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
|
use Illuminate\Support\Facades\Artisan;
|
||||||
|
use Illuminate\Support\Facades\File;
|
||||||
|
|
||||||
class ThemeController extends Controller
|
class ThemeController extends Controller
|
||||||
{
|
{
|
@ -1,14 +1,13 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Http\Controllers\Admin;
|
namespace App\Http\Controllers\V1\Admin;
|
||||||
|
|
||||||
use App\Jobs\SendEmailJob;
|
|
||||||
use App\Services\TicketService;
|
|
||||||
use Illuminate\Http\Request;
|
|
||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
use App\Models\Ticket;
|
use App\Models\Ticket;
|
||||||
use App\Models\User;
|
|
||||||
use App\Models\TicketMessage;
|
use App\Models\TicketMessage;
|
||||||
|
use App\Models\User;
|
||||||
|
use App\Services\TicketService;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
use Illuminate\Support\Facades\Cache;
|
use Illuminate\Support\Facades\Cache;
|
||||||
use Illuminate\Support\Facades\DB;
|
use Illuminate\Support\Facades\DB;
|
||||||
|
|
@ -1,19 +1,18 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Http\Controllers\Admin;
|
namespace App\Http\Controllers\V1\Admin;
|
||||||
|
|
||||||
|
use App\Http\Controllers\Controller;
|
||||||
use App\Http\Requests\Admin\UserFetch;
|
use App\Http\Requests\Admin\UserFetch;
|
||||||
use App\Http\Requests\Admin\UserGenerate;
|
use App\Http\Requests\Admin\UserGenerate;
|
||||||
use App\Http\Requests\Admin\UserSendMail;
|
use App\Http\Requests\Admin\UserSendMail;
|
||||||
use App\Http\Requests\Admin\UserUpdate;
|
use App\Http\Requests\Admin\UserUpdate;
|
||||||
use App\Jobs\SendEmailJob;
|
use App\Jobs\SendEmailJob;
|
||||||
|
use App\Models\Plan;
|
||||||
|
use App\Models\User;
|
||||||
use App\Services\AuthService;
|
use App\Services\AuthService;
|
||||||
use App\Services\UserService;
|
|
||||||
use App\Utils\Helper;
|
use App\Utils\Helper;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use App\Http\Controllers\Controller;
|
|
||||||
use App\Models\User;
|
|
||||||
use App\Models\Plan;
|
|
||||||
use Illuminate\Support\Facades\DB;
|
use Illuminate\Support\Facades\DB;
|
||||||
|
|
||||||
class UserController extends Controller
|
class UserController extends Controller
|
@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Http\Controllers\Client;
|
namespace App\Http\Controllers\V1\Client;
|
||||||
|
|
||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
use App\Services\ServerService;
|
use App\Services\ServerService;
|
||||||
@ -39,15 +39,15 @@ class AppController extends Controller
|
|||||||
'chacha20-ietf-poly1305'
|
'chacha20-ietf-poly1305'
|
||||||
])
|
])
|
||||||
) {
|
) {
|
||||||
array_push($proxy, Protocols\Clash::buildShadowsocks($user['uuid'], $item));
|
array_push($proxy, \App\Protocols\Clash::buildShadowsocks($user['uuid'], $item));
|
||||||
array_push($proxies, $item['name']);
|
array_push($proxies, $item['name']);
|
||||||
}
|
}
|
||||||
if ($item['type'] === 'vmess') {
|
if ($item['type'] === 'vmess') {
|
||||||
array_push($proxy, Protocols\Clash::buildVmess($user['uuid'], $item));
|
array_push($proxy, \App\Protocols\Clash::buildVmess($user['uuid'], $item));
|
||||||
array_push($proxies, $item['name']);
|
array_push($proxies, $item['name']);
|
||||||
}
|
}
|
||||||
if ($item['type'] === 'trojan') {
|
if ($item['type'] === 'trojan') {
|
||||||
array_push($proxy, Protocols\Clash::buildTrojan($user['uuid'], $item));
|
array_push($proxy, \App\Http\Controllers\V1\Client\Protocols\Clash::buildTrojan($user['uuid'], $item));
|
||||||
array_push($proxies, $item['name']);
|
array_push($proxies, $item['name']);
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,13 +1,13 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Http\Controllers\Client;
|
namespace App\Http\Controllers\V1\Client;
|
||||||
|
|
||||||
use App\Http\Controllers\Client\Protocols\General;
|
|
||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
|
use App\Protocols\General;
|
||||||
use App\Services\ServerService;
|
use App\Services\ServerService;
|
||||||
|
use App\Services\UserService;
|
||||||
use App\Utils\Helper;
|
use App\Utils\Helper;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use App\Services\UserService;
|
|
||||||
|
|
||||||
class ClientController extends Controller
|
class ClientController extends Controller
|
||||||
{
|
{
|
||||||
@ -24,8 +24,8 @@ class ClientController extends Controller
|
|||||||
$servers = $serverService->getAvailableServers($user);
|
$servers = $serverService->getAvailableServers($user);
|
||||||
$this->setSubscribeInfoToServers($servers, $user);
|
$this->setSubscribeInfoToServers($servers, $user);
|
||||||
if ($flag) {
|
if ($flag) {
|
||||||
foreach (array_reverse(glob(app_path('Http//Controllers//Client//Protocols') . '/*.php')) as $file) {
|
foreach (array_reverse(glob(app_path('Protocols') . '/*.php')) as $file) {
|
||||||
$file = 'App\\Http\\Controllers\\Client\\Protocols\\' . basename($file, '.php');
|
$file = 'App\\Protocols\\' . basename($file, '.php');
|
||||||
$class = new $file($user, $servers);
|
$class = new $file($user, $servers);
|
||||||
if (strpos($flag, $class->flag) !== false) {
|
if (strpos($flag, $class->flag) !== false) {
|
||||||
die($class->handle());
|
die($class->handle());
|
@ -1,9 +1,9 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Http\Controllers\Guest;
|
namespace App\Http\Controllers\V1\Guest;
|
||||||
|
|
||||||
use App\Utils\Dict;
|
|
||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
|
use App\Utils\Dict;
|
||||||
use Illuminate\Support\Facades\Http;
|
use Illuminate\Support\Facades\Http;
|
||||||
|
|
||||||
class CommController extends Controller
|
class CommController extends Controller
|
@ -1,13 +1,13 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Http\Controllers\Guest;
|
namespace App\Http\Controllers\V1\Guest;
|
||||||
|
|
||||||
|
use App\Http\Controllers\Controller;
|
||||||
use App\Models\Order;
|
use App\Models\Order;
|
||||||
use App\Services\OrderService;
|
use App\Services\OrderService;
|
||||||
use App\Services\PaymentService;
|
use App\Services\PaymentService;
|
||||||
use App\Services\TelegramService;
|
use App\Services\TelegramService;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use App\Http\Controllers\Controller;
|
|
||||||
|
|
||||||
class PaymentController extends Controller
|
class PaymentController extends Controller
|
||||||
{
|
{
|
@ -1,10 +1,10 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Http\Controllers\Guest;
|
namespace App\Http\Controllers\V1\Guest;
|
||||||
|
|
||||||
use Illuminate\Http\Request;
|
|
||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
use App\Models\Plan;
|
use App\Models\Plan;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
|
||||||
class PlanController extends Controller
|
class PlanController extends Controller
|
||||||
{
|
{
|
@ -1,10 +1,10 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Http\Controllers\Guest;
|
namespace App\Http\Controllers\V1\Guest;
|
||||||
|
|
||||||
|
use App\Http\Controllers\Controller;
|
||||||
use App\Services\TelegramService;
|
use App\Services\TelegramService;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use App\Http\Controllers\Controller;
|
|
||||||
|
|
||||||
class TelegramController extends Controller
|
class TelegramController extends Controller
|
||||||
{
|
{
|
@ -1,21 +1,21 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Http\Controllers\Passport;
|
namespace App\Http\Controllers\V1\Passport;
|
||||||
|
|
||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
use App\Http\Requests\Passport\AuthRegister;
|
|
||||||
use App\Http\Requests\Passport\AuthForget;
|
use App\Http\Requests\Passport\AuthForget;
|
||||||
use App\Http\Requests\Passport\AuthLogin;
|
use App\Http\Requests\Passport\AuthLogin;
|
||||||
|
use App\Http\Requests\Passport\AuthRegister;
|
||||||
use App\Jobs\SendEmailJob;
|
use App\Jobs\SendEmailJob;
|
||||||
use App\Services\AuthService;
|
use App\Models\InviteCode;
|
||||||
use Illuminate\Http\Request;
|
|
||||||
use Illuminate\Support\Facades\Cache;
|
|
||||||
use App\Models\Plan;
|
use App\Models\Plan;
|
||||||
use App\Models\User;
|
use App\Models\User;
|
||||||
use App\Models\InviteCode;
|
use App\Services\AuthService;
|
||||||
use App\Utils\Helper;
|
|
||||||
use App\Utils\Dict;
|
|
||||||
use App\Utils\CacheKey;
|
use App\Utils\CacheKey;
|
||||||
|
use App\Utils\Dict;
|
||||||
|
use App\Utils\Helper;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
use Illuminate\Support\Facades\Cache;
|
||||||
use ReCaptcha\ReCaptcha;
|
use ReCaptcha\ReCaptcha;
|
||||||
|
|
||||||
class AuthController extends Controller
|
class AuthController extends Controller
|
||||||
@ -286,7 +286,11 @@ class AuthController extends Controller
|
|||||||
|
|
||||||
public function forget(AuthForget $request)
|
public function forget(AuthForget $request)
|
||||||
{
|
{
|
||||||
|
$forgetRequestLimitKey = CacheKey::get('FORGET_REQUEST_LIMIT', $request->input('email'));
|
||||||
|
$forgetRequestLimit = (int)Cache::get($forgetRequestLimitKey);
|
||||||
|
if ($forgetRequestLimit >= 3) abort(500, __('Reset failed, Please try again later'));
|
||||||
if ((string)Cache::get(CacheKey::get('EMAIL_VERIFY_CODE', $request->input('email'))) !== (string)$request->input('email_code')) {
|
if ((string)Cache::get(CacheKey::get('EMAIL_VERIFY_CODE', $request->input('email'))) !== (string)$request->input('email_code')) {
|
||||||
|
Cache::put($forgetRequestLimitKey, $forgetRequestLimit ? $forgetRequestLimit + 1 : 1, 300);
|
||||||
abort(500, __('Incorrect email verification code'));
|
abort(500, __('Incorrect email verification code'));
|
||||||
}
|
}
|
||||||
$user = User::where('email', $request->input('email'))->first();
|
$user = User::where('email', $request->input('email'))->first();
|
@ -1,18 +1,18 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Http\Controllers\Passport;
|
namespace App\Http\Controllers\V1\Passport;
|
||||||
|
|
||||||
use App\Http\Requests\Passport\CommSendEmailVerify;
|
|
||||||
use Illuminate\Http\Request;
|
|
||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
use Illuminate\Http\Exceptions\HttpResponseException;
|
use App\Http\Requests\Passport\CommSendEmailVerify;
|
||||||
use Illuminate\Support\Facades\Mail;
|
|
||||||
use App\Utils\Helper;
|
|
||||||
use Illuminate\Support\Facades\Cache;
|
|
||||||
use App\Jobs\SendEmailJob;
|
use App\Jobs\SendEmailJob;
|
||||||
use App\Models\InviteCode;
|
use App\Models\InviteCode;
|
||||||
use App\Utils\Dict;
|
use App\Models\User;
|
||||||
use App\Utils\CacheKey;
|
use App\Utils\CacheKey;
|
||||||
|
use App\Utils\Dict;
|
||||||
|
use Illuminate\Http\Exceptions\HttpResponseException;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
use Illuminate\Support\Facades\Cache;
|
||||||
|
use Illuminate\Support\Facades\Mail;
|
||||||
use ReCaptcha\ReCaptcha;
|
use ReCaptcha\ReCaptcha;
|
||||||
|
|
||||||
class CommController extends Controller
|
class CommController extends Controller
|
@ -1,19 +1,16 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Http\Controllers\Server;
|
namespace App\Http\Controllers\V1\Server;
|
||||||
|
|
||||||
|
use App\Http\Controllers\Controller;
|
||||||
|
use App\Models\ServerVmess;
|
||||||
use App\Services\ServerService;
|
use App\Services\ServerService;
|
||||||
use App\Services\StatisticalService;
|
|
||||||
use App\Services\UserService;
|
use App\Services\UserService;
|
||||||
use App\Utils\CacheKey;
|
use App\Utils\CacheKey;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use App\Http\Controllers\Controller;
|
use Illuminate\Support\Facades\Cache;
|
||||||
use App\Models\User;
|
|
||||||
use App\Models\ServerVmess;
|
|
||||||
use App\Models\ServerLog;
|
|
||||||
use Illuminate\Support\Facades\DB;
|
use Illuminate\Support\Facades\DB;
|
||||||
use Illuminate\Support\Facades\Log;
|
use Illuminate\Support\Facades\Log;
|
||||||
use Illuminate\Support\Facades\Cache;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* V2ray Aurora
|
* V2ray Aurora
|
@ -1,14 +1,13 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Http\Controllers\Server;
|
namespace App\Http\Controllers\V1\Server;
|
||||||
|
|
||||||
|
use App\Http\Controllers\Controller;
|
||||||
use App\Models\ServerShadowsocks;
|
use App\Models\ServerShadowsocks;
|
||||||
use App\Services\ServerService;
|
use App\Services\ServerService;
|
||||||
use App\Services\StatisticalService;
|
|
||||||
use App\Services\UserService;
|
use App\Services\UserService;
|
||||||
use App\Utils\CacheKey;
|
use App\Utils\CacheKey;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use App\Http\Controllers\Controller;
|
|
||||||
use Illuminate\Support\Facades\Cache;
|
use Illuminate\Support\Facades\Cache;
|
||||||
|
|
||||||
/*
|
/*
|
@ -1,19 +1,16 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Http\Controllers\Server;
|
namespace App\Http\Controllers\V1\Server;
|
||||||
|
|
||||||
|
use App\Http\Controllers\Controller;
|
||||||
|
use App\Models\ServerTrojan;
|
||||||
use App\Services\ServerService;
|
use App\Services\ServerService;
|
||||||
use App\Services\StatisticalService;
|
|
||||||
use App\Services\UserService;
|
use App\Services\UserService;
|
||||||
use App\Utils\CacheKey;
|
use App\Utils\CacheKey;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use App\Http\Controllers\Controller;
|
use Illuminate\Support\Facades\Cache;
|
||||||
use App\Models\User;
|
|
||||||
use App\Models\ServerTrojan;
|
|
||||||
use App\Models\ServerLog;
|
|
||||||
use Illuminate\Support\Facades\DB;
|
use Illuminate\Support\Facades\DB;
|
||||||
use Illuminate\Support\Facades\Log;
|
use Illuminate\Support\Facades\Log;
|
||||||
use Illuminate\Support\Facades\Cache;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Tidal Lab Trojan
|
* Tidal Lab Trojan
|
@ -1,17 +1,13 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Http\Controllers\Server;
|
namespace App\Http\Controllers\V1\Server;
|
||||||
|
|
||||||
|
use App\Http\Controllers\Controller;
|
||||||
use App\Services\ServerService;
|
use App\Services\ServerService;
|
||||||
use App\Services\StatisticalService;
|
|
||||||
use App\Services\UserService;
|
use App\Services\UserService;
|
||||||
use App\Utils\CacheKey;
|
use App\Utils\CacheKey;
|
||||||
use App\Utils\Helper;
|
use App\Utils\Helper;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use App\Http\Controllers\Controller;
|
|
||||||
use App\Models\ServerShadowsocks;
|
|
||||||
use App\Models\ServerVmess;
|
|
||||||
use App\Models\ServerTrojan;
|
|
||||||
use Illuminate\Support\Facades\Cache;
|
use Illuminate\Support\Facades\Cache;
|
||||||
|
|
||||||
class UniProxyController extends Controller
|
class UniProxyController extends Controller
|
||||||
@ -115,6 +111,16 @@ class UniProxyController extends Controller
|
|||||||
'obfs' => Helper::getServerKey($this->nodeInfo->created_at, 16)
|
'obfs' => Helper::getServerKey($this->nodeInfo->created_at, 16)
|
||||||
];
|
];
|
||||||
break;
|
break;
|
||||||
|
case "vless":
|
||||||
|
$response = [
|
||||||
|
'server_port' => $this->nodeInfo->server_port,
|
||||||
|
'network' => $this->nodeInfo->network,
|
||||||
|
'network_settings' => $this->nodeInfo->network_settings,
|
||||||
|
'tls' => $this->nodeInfo->tls,
|
||||||
|
'flow' => $this->nodeInfo->flow,
|
||||||
|
'tls_settings' => $this->nodeInfo->tls_settings
|
||||||
|
];
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
$response['base_config'] = [
|
$response['base_config'] = [
|
||||||
'push_interval' => (int)config('v2board.server_push_interval', 60),
|
'push_interval' => (int)config('v2board.server_push_interval', 60),
|
@ -1,11 +1,11 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Http\Controllers\Staff;
|
namespace App\Http\Controllers\V1\Staff;
|
||||||
|
|
||||||
use App\Http\Requests\Admin\NoticeSave;
|
|
||||||
use Illuminate\Http\Request;
|
|
||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
|
use App\Http\Requests\Admin\NoticeSave;
|
||||||
use App\Models\Notice;
|
use App\Models\Notice;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
use Illuminate\Support\Facades\Cache;
|
use Illuminate\Support\Facades\Cache;
|
||||||
|
|
||||||
class NoticeController extends Controller
|
class NoticeController extends Controller
|
@ -1,15 +1,11 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Http\Controllers\Staff;
|
namespace App\Http\Controllers\V1\Staff;
|
||||||
|
|
||||||
use App\Http\Requests\Admin\PlanSave;
|
|
||||||
use App\Http\Requests\Admin\PlanSort;
|
|
||||||
use App\Http\Requests\Admin\PlanUpdate;
|
|
||||||
use Illuminate\Http\Request;
|
|
||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
use App\Models\Plan;
|
use App\Models\Plan;
|
||||||
use App\Models\Order;
|
|
||||||
use App\Models\User;
|
use App\Models\User;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
use Illuminate\Support\Facades\DB;
|
use Illuminate\Support\Facades\DB;
|
||||||
|
|
||||||
class PlanController extends Controller
|
class PlanController extends Controller
|
@ -1,12 +1,12 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Http\Controllers\Staff;
|
namespace App\Http\Controllers\V1\Staff;
|
||||||
|
|
||||||
use App\Services\TicketService;
|
|
||||||
use Illuminate\Http\Request;
|
|
||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
use App\Models\Ticket;
|
use App\Models\Ticket;
|
||||||
use App\Models\TicketMessage;
|
use App\Models\TicketMessage;
|
||||||
|
use App\Services\TicketService;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
|
||||||
class TicketController extends Controller
|
class TicketController extends Controller
|
||||||
{
|
{
|
@ -1,14 +1,14 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Http\Controllers\Staff;
|
namespace App\Http\Controllers\V1\Staff;
|
||||||
|
|
||||||
|
use App\Http\Controllers\Controller;
|
||||||
use App\Http\Requests\Admin\UserSendMail;
|
use App\Http\Requests\Admin\UserSendMail;
|
||||||
use App\Http\Requests\Staff\UserUpdate;
|
use App\Http\Requests\Staff\UserUpdate;
|
||||||
use App\Jobs\SendEmailJob;
|
use App\Jobs\SendEmailJob;
|
||||||
use Illuminate\Http\Request;
|
|
||||||
use App\Http\Controllers\Controller;
|
|
||||||
use App\Models\User;
|
|
||||||
use App\Models\Plan;
|
use App\Models\Plan;
|
||||||
|
use App\Models\User;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
|
||||||
class UserController extends Controller
|
class UserController extends Controller
|
||||||
{
|
{
|
@ -1,11 +1,11 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Http\Controllers\User;
|
namespace App\Http\Controllers\V1\User;
|
||||||
|
|
||||||
|
use App\Http\Controllers\Controller;
|
||||||
use App\Models\Payment;
|
use App\Models\Payment;
|
||||||
use App\Utils\Dict;
|
use App\Utils\Dict;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use App\Http\Controllers\Controller;
|
|
||||||
|
|
||||||
class CommController extends Controller
|
class CommController extends Controller
|
||||||
{
|
{
|
@ -1,11 +1,10 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Http\Controllers\User;
|
namespace App\Http\Controllers\V1\User;
|
||||||
|
|
||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
use App\Services\CouponService;
|
use App\Services\CouponService;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use App\Models\Coupon;
|
|
||||||
|
|
||||||
class CouponController extends Controller
|
class CouponController extends Controller
|
||||||
{
|
{
|
@ -1,14 +1,14 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Http\Controllers\User;
|
namespace App\Http\Controllers\V1\User;
|
||||||
|
|
||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
use App\Models\CommissionLog;
|
use App\Models\CommissionLog;
|
||||||
use Illuminate\Http\Request;
|
|
||||||
use App\Models\User;
|
|
||||||
use App\Models\Order;
|
|
||||||
use App\Models\InviteCode;
|
use App\Models\InviteCode;
|
||||||
|
use App\Models\Order;
|
||||||
|
use App\Models\User;
|
||||||
use App\Utils\Helper;
|
use App\Utils\Helper;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
|
||||||
class InviteController extends Controller
|
class InviteController extends Controller
|
||||||
{
|
{
|
@ -1,13 +1,13 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Http\Controllers\User;
|
namespace App\Http\Controllers\V1\User;
|
||||||
|
|
||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
|
use App\Models\Knowledge;
|
||||||
use App\Models\User;
|
use App\Models\User;
|
||||||
use App\Services\UserService;
|
use App\Services\UserService;
|
||||||
use App\Utils\Helper;
|
use App\Utils\Helper;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use App\Models\Knowledge;
|
|
||||||
|
|
||||||
class KnowledgeController extends Controller
|
class KnowledgeController extends Controller
|
||||||
{
|
{
|
@ -1,11 +1,10 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Http\Controllers\User;
|
namespace App\Http\Controllers\V1\User;
|
||||||
|
|
||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
use Illuminate\Http\Request;
|
|
||||||
use App\Models\Notice;
|
use App\Models\Notice;
|
||||||
use App\Utils\Helper;
|
use Illuminate\Http\Request;
|
||||||
|
|
||||||
class NoticeController extends Controller
|
class NoticeController extends Controller
|
||||||
{
|
{
|
@ -1,29 +1,28 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Http\Controllers\User;
|
namespace App\Http\Controllers\V1\User;
|
||||||
|
|
||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
use App\Http\Requests\User\OrderSave;
|
use App\Http\Requests\User\OrderSave;
|
||||||
use App\Models\CommissionLog;
|
use App\Models\Order;
|
||||||
use App\Models\Payment;
|
use App\Models\Payment;
|
||||||
|
use App\Models\Plan;
|
||||||
|
use App\Models\User;
|
||||||
use App\Services\CouponService;
|
use App\Services\CouponService;
|
||||||
use App\Services\OrderService;
|
use App\Services\OrderService;
|
||||||
use App\Services\PaymentService;
|
use App\Services\PaymentService;
|
||||||
use App\Services\PlanService;
|
use App\Services\PlanService;
|
||||||
use App\Services\UserService;
|
use App\Services\UserService;
|
||||||
|
use App\Utils\Helper;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use Illuminate\Support\Facades\Cache;
|
use Illuminate\Support\Facades\Cache;
|
||||||
use Illuminate\Support\Facades\DB;
|
use Illuminate\Support\Facades\DB;
|
||||||
use App\Models\Order;
|
|
||||||
use App\Models\Plan;
|
|
||||||
use App\Models\User;
|
|
||||||
use App\Utils\Helper;
|
|
||||||
use Omnipay\Omnipay;
|
|
||||||
use Stripe\Stripe;
|
|
||||||
use Stripe\Source;
|
|
||||||
use Library\BitpayX;
|
use Library\BitpayX;
|
||||||
use Library\MGate;
|
|
||||||
use Library\Epay;
|
use Library\Epay;
|
||||||
|
use Library\MGate;
|
||||||
|
use Omnipay\Omnipay;
|
||||||
|
use Stripe\Source;
|
||||||
|
use Stripe\Stripe;
|
||||||
|
|
||||||
class OrderController extends Controller
|
class OrderController extends Controller
|
||||||
{
|
{
|
@ -1,12 +1,12 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Http\Controllers\User;
|
namespace App\Http\Controllers\V1\User;
|
||||||
|
|
||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
|
use App\Models\Plan;
|
||||||
use App\Models\User;
|
use App\Models\User;
|
||||||
use App\Services\PlanService;
|
use App\Services\PlanService;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use App\Models\Plan;
|
|
||||||
use Illuminate\Support\Facades\DB;
|
use Illuminate\Support\Facades\DB;
|
||||||
|
|
||||||
class PlanController extends Controller
|
class PlanController extends Controller
|
@ -1,18 +1,13 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Http\Controllers\User;
|
namespace App\Http\Controllers\V1\User;
|
||||||
|
|
||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
|
use App\Models\User;
|
||||||
use App\Services\ServerService;
|
use App\Services\ServerService;
|
||||||
use App\Services\UserService;
|
use App\Services\UserService;
|
||||||
use App\Utils\CacheKey;
|
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use Illuminate\Support\Facades\Cache;
|
use Illuminate\Support\Facades\Cache;
|
||||||
use App\Models\ServerVmess;
|
|
||||||
use App\Models\ServerLog;
|
|
||||||
use App\Models\User;
|
|
||||||
|
|
||||||
use App\Utils\Helper;
|
|
||||||
use Illuminate\Support\Facades\DB;
|
use Illuminate\Support\Facades\DB;
|
||||||
|
|
||||||
class ServerController extends Controller
|
class ServerController extends Controller
|
@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Http\Controllers\User;
|
namespace App\Http\Controllers\V1\User;
|
||||||
|
|
||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
use App\Models\StatUser;
|
use App\Models\StatUser;
|
@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Http\Controllers\User;
|
namespace App\Http\Controllers\V1\User;
|
||||||
|
|
||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
use App\Models\User;
|
use App\Models\User;
|
@ -1,18 +1,17 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Http\Controllers\User;
|
namespace App\Http\Controllers\V1\User;
|
||||||
|
|
||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
use App\Http\Requests\User\TicketSave;
|
use App\Http\Requests\User\TicketSave;
|
||||||
use App\Http\Requests\User\TicketWithdraw;
|
use App\Http\Requests\User\TicketWithdraw;
|
||||||
use App\Jobs\SendTelegramJob;
|
use App\Models\Ticket;
|
||||||
|
use App\Models\TicketMessage;
|
||||||
use App\Models\User;
|
use App\Models\User;
|
||||||
use App\Services\TelegramService;
|
use App\Services\TelegramService;
|
||||||
use App\Services\TicketService;
|
use App\Services\TicketService;
|
||||||
use App\Utils\Dict;
|
use App\Utils\Dict;
|
||||||
use Illuminate\Http\Request;
|
use Illuminate\Http\Request;
|
||||||
use App\Models\Ticket;
|
|
||||||
use App\Models\TicketMessage;
|
|
||||||
use Illuminate\Support\Facades\DB;
|
use Illuminate\Support\Facades\DB;
|
||||||
|
|
||||||
class TicketController extends Controller
|
class TicketController extends Controller
|
@ -1,20 +1,20 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Http\Controllers\User;
|
namespace App\Http\Controllers\V1\User;
|
||||||
|
|
||||||
use App\Http\Controllers\Controller;
|
use App\Http\Controllers\Controller;
|
||||||
|
use App\Http\Requests\User\UserChangePassword;
|
||||||
use App\Http\Requests\User\UserTransfer;
|
use App\Http\Requests\User\UserTransfer;
|
||||||
use App\Http\Requests\User\UserUpdate;
|
use App\Http\Requests\User\UserUpdate;
|
||||||
use App\Http\Requests\User\UserChangePassword;
|
use App\Models\Order;
|
||||||
|
use App\Models\Plan;
|
||||||
|
use App\Models\Ticket;
|
||||||
|
use App\Models\User;
|
||||||
use App\Services\AuthService;
|
use App\Services\AuthService;
|
||||||
use App\Services\UserService;
|
use App\Services\UserService;
|
||||||
use App\Utils\CacheKey;
|
use App\Utils\CacheKey;
|
||||||
use Illuminate\Http\Request;
|
|
||||||
use App\Models\User;
|
|
||||||
use App\Models\Plan;
|
|
||||||
use App\Models\Ticket;
|
|
||||||
use App\Utils\Helper;
|
use App\Utils\Helper;
|
||||||
use App\Models\Order;
|
use Illuminate\Http\Request;
|
||||||
use Illuminate\Support\Facades\Cache;
|
use Illuminate\Support\Facades\Cache;
|
||||||
|
|
||||||
class UserController extends Controller
|
class UserController extends Controller
|
92
app/Http/Controllers/V2/Admin/StatController.php
Normal file
92
app/Http/Controllers/V2/Admin/StatController.php
Normal file
@ -0,0 +1,92 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Http\Controllers\V2\Admin;
|
||||||
|
|
||||||
|
use App\Http\Controllers\Controller;
|
||||||
|
use App\Models\CommissionLog;
|
||||||
|
use App\Models\Order;
|
||||||
|
use App\Models\ServerShadowsocks;
|
||||||
|
use App\Models\ServerTrojan;
|
||||||
|
use App\Models\ServerVmess;
|
||||||
|
use App\Models\Stat;
|
||||||
|
use App\Models\StatServer;
|
||||||
|
use App\Models\StatUser;
|
||||||
|
use App\Models\Ticket;
|
||||||
|
use App\Models\User;
|
||||||
|
use App\Services\StatisticalService;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
use Illuminate\Support\Facades\Cache;
|
||||||
|
use Illuminate\Support\Facades\DB;
|
||||||
|
|
||||||
|
class StatController extends Controller
|
||||||
|
{
|
||||||
|
public function override(Request $request)
|
||||||
|
{
|
||||||
|
$params = $request->validate([
|
||||||
|
'start_at' => '',
|
||||||
|
'end_at' => ''
|
||||||
|
]);
|
||||||
|
|
||||||
|
if (isset($params['start_at']) && isset($params['end_at'])) {
|
||||||
|
$stats = Stat::where('record_at', '>=', $params['start_at'])
|
||||||
|
->where('record_at', '<', $params['end_at'])
|
||||||
|
->get()
|
||||||
|
->makeHidden(['record_at', 'created_at', 'updated_at', 'id', 'record_type'])
|
||||||
|
->toArray();
|
||||||
|
} else {
|
||||||
|
$statisticalService = new StatisticalService();
|
||||||
|
return [
|
||||||
|
'data' => $statisticalService->generateStatData()
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
$stats = array_reduce($stats, function($carry, $item) {
|
||||||
|
foreach($item as $key => $value) {
|
||||||
|
if(isset($carry[$key]) && $carry[$key]) {
|
||||||
|
$carry[$key] += $value;
|
||||||
|
} else {
|
||||||
|
$carry[$key] = $value;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $carry;
|
||||||
|
}, []);
|
||||||
|
|
||||||
|
return [
|
||||||
|
'data' => $stats
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
public function record(Request $request)
|
||||||
|
{
|
||||||
|
$request->validate([
|
||||||
|
'type' => 'required|in:paid_total,commission_total,register_count',
|
||||||
|
'start_at' => '',
|
||||||
|
'end_at' => ''
|
||||||
|
]);
|
||||||
|
|
||||||
|
$statisticalService = new StatisticalService();
|
||||||
|
$statisticalService->setStartAt($request->input('start_at'));
|
||||||
|
$statisticalService->setEndAt($request->input('end_at'));
|
||||||
|
return [
|
||||||
|
'data' => $statisticalService->getStatRecord($request->input('type'))
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
public function ranking(Request $request)
|
||||||
|
{
|
||||||
|
$request->validate([
|
||||||
|
'type' => 'required|in:server_traffic_rank,user_consumption_rank,invite_rank',
|
||||||
|
'start_at' => '',
|
||||||
|
'end_at' => '',
|
||||||
|
'limit' => 'nullable|integer'
|
||||||
|
]);
|
||||||
|
|
||||||
|
$statisticalService = new StatisticalService();
|
||||||
|
$statisticalService->setStartAt($request->input('start_at'));
|
||||||
|
$statisticalService->setEndAt($request->input('end_at'));
|
||||||
|
return [
|
||||||
|
'data' => $statisticalService->getRanking($request->input('type'), $request->input('limit') ?? 20)
|
||||||
|
];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,144 +0,0 @@
|
|||||||
<?php
|
|
||||||
namespace App\Http\Routes;
|
|
||||||
|
|
||||||
use Illuminate\Contracts\Routing\Registrar;
|
|
||||||
|
|
||||||
class AdminRoute
|
|
||||||
{
|
|
||||||
public function map(Registrar $router)
|
|
||||||
{
|
|
||||||
$router->group([
|
|
||||||
'prefix' => config('v2board.secure_path', config('v2board.frontend_admin_path', hash('crc32b', config('app.key')))),
|
|
||||||
'middleware' => ['admin', 'log']
|
|
||||||
], function ($router) {
|
|
||||||
// Config
|
|
||||||
$router->get ('/config/fetch', 'Admin\\ConfigController@fetch');
|
|
||||||
$router->post('/config/save', 'Admin\\ConfigController@save');
|
|
||||||
$router->get ('/config/getEmailTemplate', 'Admin\\ConfigController@getEmailTemplate');
|
|
||||||
$router->get ('/config/getThemeTemplate', 'Admin\\ConfigController@getThemeTemplate');
|
|
||||||
$router->post('/config/setTelegramWebhook', 'Admin\\ConfigController@setTelegramWebhook');
|
|
||||||
$router->post('/config/testSendMail', 'Admin\\ConfigController@testSendMail');
|
|
||||||
// Plan
|
|
||||||
$router->get ('/plan/fetch', 'Admin\\PlanController@fetch');
|
|
||||||
$router->post('/plan/save', 'Admin\\PlanController@save');
|
|
||||||
$router->post('/plan/drop', 'Admin\\PlanController@drop');
|
|
||||||
$router->post('/plan/update', 'Admin\\PlanController@update');
|
|
||||||
$router->post('/plan/sort', 'Admin\\PlanController@sort');
|
|
||||||
// Server
|
|
||||||
$router->get ('/server/group/fetch', 'Admin\\Server\\GroupController@fetch');
|
|
||||||
$router->post('/server/group/save', 'Admin\\Server\\GroupController@save');
|
|
||||||
$router->post('/server/group/drop', 'Admin\\Server\\GroupController@drop');
|
|
||||||
$router->get ('/server/route/fetch', 'Admin\\Server\\RouteController@fetch');
|
|
||||||
$router->post('/server/route/save', 'Admin\\Server\\RouteController@save');
|
|
||||||
$router->post('/server/route/drop', 'Admin\\Server\\RouteController@drop');
|
|
||||||
$router->get ('/server/manage/getNodes', 'Admin\\Server\\ManageController@getNodes');
|
|
||||||
$router->post('/server/manage/sort', 'Admin\\Server\\ManageController@sort');
|
|
||||||
$router->group([
|
|
||||||
'prefix' => 'server/trojan'
|
|
||||||
], function ($router) {
|
|
||||||
$router->get ('fetch', 'Admin\\Server\\TrojanController@fetch');
|
|
||||||
$router->post('save', 'Admin\\Server\\TrojanController@save');
|
|
||||||
$router->post('drop', 'Admin\\Server\\TrojanController@drop');
|
|
||||||
$router->post('update', 'Admin\\Server\\TrojanController@update');
|
|
||||||
$router->post('copy', 'Admin\\Server\\TrojanController@copy');
|
|
||||||
$router->post('sort', 'Admin\\Server\\TrojanController@sort');
|
|
||||||
$router->post('viewConfig', 'Admin\\Server\\TrojanController@viewConfig');
|
|
||||||
});
|
|
||||||
$router->group([
|
|
||||||
'prefix' => 'server/vmess'
|
|
||||||
], function ($router) {
|
|
||||||
$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'
|
|
||||||
], function ($router) {
|
|
||||||
$router->get ('fetch', 'Admin\\Server\\ShadowsocksController@fetch');
|
|
||||||
$router->post('save', 'Admin\\Server\\ShadowsocksController@save');
|
|
||||||
$router->post('drop', 'Admin\\Server\\ShadowsocksController@drop');
|
|
||||||
$router->post('update', 'Admin\\Server\\ShadowsocksController@update');
|
|
||||||
$router->post('copy', 'Admin\\Server\\ShadowsocksController@copy');
|
|
||||||
$router->post('sort', 'Admin\\Server\\ShadowsocksController@sort');
|
|
||||||
});
|
|
||||||
$router->group([
|
|
||||||
'prefix' => 'server/hysteria'
|
|
||||||
], function ($router) {
|
|
||||||
$router->get ('fetch', 'Admin\\Server\\HysteriaController@fetch');
|
|
||||||
$router->post('save', 'Admin\\Server\\HysteriaController@save');
|
|
||||||
$router->post('drop', 'Admin\\Server\\HysteriaController@drop');
|
|
||||||
$router->post('update', 'Admin\\Server\\HysteriaController@update');
|
|
||||||
$router->post('copy', 'Admin\\Server\\HysteriaController@copy');
|
|
||||||
$router->post('sort', 'Admin\\Server\\HysteriaController@sort');
|
|
||||||
});
|
|
||||||
// Order
|
|
||||||
$router->get ('/order/fetch', 'Admin\\OrderController@fetch');
|
|
||||||
$router->post('/order/update', 'Admin\\OrderController@update');
|
|
||||||
$router->post('/order/assign', 'Admin\\OrderController@assign');
|
|
||||||
$router->post('/order/paid', 'Admin\\OrderController@paid');
|
|
||||||
$router->post('/order/cancel', 'Admin\\OrderController@cancel');
|
|
||||||
$router->post('/order/detail', 'Admin\\OrderController@detail');
|
|
||||||
// User
|
|
||||||
$router->get ('/user/fetch', 'Admin\\UserController@fetch');
|
|
||||||
$router->post('/user/update', 'Admin\\UserController@update');
|
|
||||||
$router->get ('/user/getUserInfoById', 'Admin\\UserController@getUserInfoById');
|
|
||||||
$router->post('/user/generate', 'Admin\\UserController@generate');
|
|
||||||
$router->post('/user/dumpCSV', 'Admin\\UserController@dumpCSV');
|
|
||||||
$router->post('/user/sendMail', 'Admin\\UserController@sendMail');
|
|
||||||
$router->post('/user/ban', 'Admin\\UserController@ban');
|
|
||||||
$router->post('/user/resetSecret', 'Admin\\UserController@resetSecret');
|
|
||||||
$router->post('/user/setInviteUser', 'Admin\\UserController@setInviteUser');
|
|
||||||
// Stat
|
|
||||||
$router->get ('/stat/getStat', 'Admin\\StatController@getStat');
|
|
||||||
$router->get ('/stat/getOverride', 'Admin\\StatController@getOverride');
|
|
||||||
$router->get ('/stat/getServerLastRank', 'Admin\\StatController@getServerLastRank');
|
|
||||||
$router->get ('/stat/getOrder', 'Admin\\StatController@getOrder');
|
|
||||||
$router->get ('/stat/getStatUser', 'Admin\\StatController@getStatUser');
|
|
||||||
$router->get ('/stat/getRanking', 'Admin\\StatController@getRanking');
|
|
||||||
$router->get ('/stat/getStatRecord', 'Admin\\StatController@getStatRecord');
|
|
||||||
// Notice
|
|
||||||
$router->get ('/notice/fetch', 'Admin\\NoticeController@fetch');
|
|
||||||
$router->post('/notice/save', 'Admin\\NoticeController@save');
|
|
||||||
$router->post('/notice/update', 'Admin\\NoticeController@update');
|
|
||||||
$router->post('/notice/drop', 'Admin\\NoticeController@drop');
|
|
||||||
$router->post('/notice/show', 'Admin\\NoticeController@show');
|
|
||||||
// Ticket
|
|
||||||
$router->get ('/ticket/fetch', 'Admin\\TicketController@fetch');
|
|
||||||
$router->post('/ticket/reply', 'Admin\\TicketController@reply');
|
|
||||||
$router->post('/ticket/close', 'Admin\\TicketController@close');
|
|
||||||
// Coupon
|
|
||||||
$router->get ('/coupon/fetch', 'Admin\\CouponController@fetch');
|
|
||||||
$router->post('/coupon/generate', 'Admin\\CouponController@generate');
|
|
||||||
$router->post('/coupon/drop', 'Admin\\CouponController@drop');
|
|
||||||
$router->post('/coupon/show', 'Admin\\CouponController@show');
|
|
||||||
// Knowledge
|
|
||||||
$router->get ('/knowledge/fetch', 'Admin\\KnowledgeController@fetch');
|
|
||||||
$router->get ('/knowledge/getCategory', 'Admin\\KnowledgeController@getCategory');
|
|
||||||
$router->post('/knowledge/save', 'Admin\\KnowledgeController@save');
|
|
||||||
$router->post('/knowledge/show', 'Admin\\KnowledgeController@show');
|
|
||||||
$router->post('/knowledge/drop', 'Admin\\KnowledgeController@drop');
|
|
||||||
$router->post('/knowledge/sort', 'Admin\\KnowledgeController@sort');
|
|
||||||
// Payment
|
|
||||||
$router->get ('/payment/fetch', 'Admin\\PaymentController@fetch');
|
|
||||||
$router->get ('/payment/getPaymentMethods', 'Admin\\PaymentController@getPaymentMethods');
|
|
||||||
$router->post('/payment/getPaymentForm', 'Admin\\PaymentController@getPaymentForm');
|
|
||||||
$router->post('/payment/save', 'Admin\\PaymentController@save');
|
|
||||||
$router->post('/payment/drop', 'Admin\\PaymentController@drop');
|
|
||||||
$router->post('/payment/show', 'Admin\\PaymentController@show');
|
|
||||||
$router->post('/payment/sort', 'Admin\\PaymentController@sort');
|
|
||||||
// System
|
|
||||||
$router->get ('/system/getSystemStatus', 'Admin\\SystemController@getSystemStatus');
|
|
||||||
$router->get ('/system/getQueueStats', 'Admin\\SystemController@getQueueStats');
|
|
||||||
$router->get ('/system/getQueueWorkload', 'Admin\\SystemController@getQueueWorkload');
|
|
||||||
$router->get ('/system/getQueueMasters', '\\Laravel\\Horizon\\Http\\Controllers\\MasterSupervisorController@index');
|
|
||||||
$router->get ('/system/getSystemLog', 'Admin\\SystemController@getSystemLog');
|
|
||||||
// Theme
|
|
||||||
$router->get ('/theme/getThemes', 'Admin\\ThemeController@getThemes');
|
|
||||||
$router->post('/theme/saveThemeConfig', 'Admin\\ThemeController@saveThemeConfig');
|
|
||||||
$router->post('/theme/getThemeConfig', 'Admin\\ThemeController@getThemeConfig');
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,25 +0,0 @@
|
|||||||
<?php
|
|
||||||
namespace App\Http\Routes;
|
|
||||||
|
|
||||||
use Illuminate\Contracts\Routing\Registrar;
|
|
||||||
|
|
||||||
class PassportRoute
|
|
||||||
{
|
|
||||||
public function map(Registrar $router)
|
|
||||||
{
|
|
||||||
$router->group([
|
|
||||||
'prefix' => 'passport'
|
|
||||||
], function ($router) {
|
|
||||||
// Auth
|
|
||||||
$router->post('/auth/register', 'Passport\\AuthController@register');
|
|
||||||
$router->post('/auth/login', 'Passport\\AuthController@login');
|
|
||||||
$router->get ('/auth/token2Login', 'Passport\\AuthController@token2Login');
|
|
||||||
$router->post('/auth/forget', 'Passport\\AuthController@forget');
|
|
||||||
$router->post('/auth/getQuickLoginUrl', 'Passport\\AuthController@getQuickLoginUrl');
|
|
||||||
$router->post('/auth/loginWithMailLink', 'Passport\\AuthController@loginWithMailLink');
|
|
||||||
// Comm
|
|
||||||
$router->post('/comm/sendEmailVerify', 'Passport\\CommController@sendEmailVerify');
|
|
||||||
$router->post('/comm/pv', 'Passport\\CommController@pv');
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,32 +0,0 @@
|
|||||||
<?php
|
|
||||||
namespace App\Http\Routes;
|
|
||||||
|
|
||||||
use Illuminate\Contracts\Routing\Registrar;
|
|
||||||
|
|
||||||
class StaffRoute
|
|
||||||
{
|
|
||||||
public function map(Registrar $router)
|
|
||||||
{
|
|
||||||
$router->group([
|
|
||||||
'prefix' => 'staff',
|
|
||||||
'middleware' => 'staff'
|
|
||||||
], function ($router) {
|
|
||||||
// Ticket
|
|
||||||
$router->get ('/ticket/fetch', 'Staff\\TicketController@fetch');
|
|
||||||
$router->post('/ticket/reply', 'Staff\\TicketController@reply');
|
|
||||||
$router->post('/ticket/close', 'Staff\\TicketController@close');
|
|
||||||
// User
|
|
||||||
$router->post('/user/update', 'Staff\\UserController@update');
|
|
||||||
$router->get ('/user/getUserInfoById', 'Staff\\UserController@getUserInfoById');
|
|
||||||
$router->post('/user/sendMail', 'Staff\\UserController@sendMail');
|
|
||||||
$router->post('/user/ban', 'Staff\\UserController@ban');
|
|
||||||
// Plan
|
|
||||||
$router->get ('/plan/fetch', 'Staff\\PlanController@fetch');
|
|
||||||
// Notice
|
|
||||||
$router->get ('/notice/fetch', 'Admin\\NoticeController@fetch');
|
|
||||||
$router->post('/notice/save', 'Admin\\NoticeController@save');
|
|
||||||
$router->post('/notice/update', 'Admin\\NoticeController@update');
|
|
||||||
$router->post('/notice/drop', 'Admin\\NoticeController@drop');
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,64 +0,0 @@
|
|||||||
<?php
|
|
||||||
namespace App\Http\Routes;
|
|
||||||
|
|
||||||
use Illuminate\Contracts\Routing\Registrar;
|
|
||||||
|
|
||||||
class UserRoute
|
|
||||||
{
|
|
||||||
public function map(Registrar $router)
|
|
||||||
{
|
|
||||||
$router->group([
|
|
||||||
'prefix' => 'user',
|
|
||||||
'middleware' => 'user'
|
|
||||||
], function ($router) {
|
|
||||||
// User
|
|
||||||
$router->get ('/resetSecurity', 'User\\UserController@resetSecurity');
|
|
||||||
$router->get ('/info', 'User\\UserController@info');
|
|
||||||
$router->post('/changePassword', 'User\\UserController@changePassword');
|
|
||||||
$router->post('/update', 'User\\UserController@update');
|
|
||||||
$router->get ('/getSubscribe', 'User\\UserController@getSubscribe');
|
|
||||||
$router->get ('/getStat', 'User\\UserController@getStat');
|
|
||||||
$router->get ('/checkLogin', 'User\\UserController@checkLogin');
|
|
||||||
$router->post('/transfer', 'User\\UserController@transfer');
|
|
||||||
$router->post('/getQuickLoginUrl', 'User\\UserController@getQuickLoginUrl');
|
|
||||||
$router->get ('/getActiveSession', 'User\\UserController@getActiveSession');
|
|
||||||
$router->post('/removeActiveSession', 'User\\UserController@removeActiveSession');
|
|
||||||
// Order
|
|
||||||
$router->post('/order/save', 'User\\OrderController@save');
|
|
||||||
$router->post('/order/checkout', 'User\\OrderController@checkout');
|
|
||||||
$router->get ('/order/check', 'User\\OrderController@check');
|
|
||||||
$router->get ('/order/detail', 'User\\OrderController@detail');
|
|
||||||
$router->get ('/order/fetch', 'User\\OrderController@fetch');
|
|
||||||
$router->get ('/order/getPaymentMethod', 'User\\OrderController@getPaymentMethod');
|
|
||||||
$router->post('/order/cancel', 'User\\OrderController@cancel');
|
|
||||||
// Plan
|
|
||||||
$router->get ('/plan/fetch', 'User\\PlanController@fetch');
|
|
||||||
// Invite
|
|
||||||
$router->get ('/invite/save', 'User\\InviteController@save');
|
|
||||||
$router->get ('/invite/fetch', 'User\\InviteController@fetch');
|
|
||||||
$router->get ('/invite/details', 'User\\InviteController@details');
|
|
||||||
// Notice
|
|
||||||
$router->get ('/notice/fetch', 'User\\NoticeController@fetch');
|
|
||||||
// Ticket
|
|
||||||
$router->post('/ticket/reply', 'User\\TicketController@reply');
|
|
||||||
$router->post('/ticket/close', 'User\\TicketController@close');
|
|
||||||
$router->post('/ticket/save', 'User\\TicketController@save');
|
|
||||||
$router->get ('/ticket/fetch', 'User\\TicketController@fetch');
|
|
||||||
$router->post('/ticket/withdraw', 'User\\TicketController@withdraw');
|
|
||||||
// Server
|
|
||||||
$router->get ('/server/fetch', 'User\\ServerController@fetch');
|
|
||||||
// Coupon
|
|
||||||
$router->post('/coupon/check', 'User\\CouponController@check');
|
|
||||||
// Telegram
|
|
||||||
$router->get ('/telegram/getBotInfo', 'User\\TelegramController@getBotInfo');
|
|
||||||
// Comm
|
|
||||||
$router->get ('/comm/config', 'User\\CommController@config');
|
|
||||||
$router->Post('/comm/getStripePublicKey', 'User\\CommController@getStripePublicKey');
|
|
||||||
// Knowledge
|
|
||||||
$router->get ('/knowledge/fetch', 'User\\KnowledgeController@fetch');
|
|
||||||
$router->get ('/knowledge/getCategory', 'User\\KnowledgeController@getCategory');
|
|
||||||
// Stat
|
|
||||||
$router->get ('/stat/getTrafficLog', 'User\\StatController@getTrafficLog');
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
|
143
app/Http/Routes/V1/AdminRoute.php
Normal file
143
app/Http/Routes/V1/AdminRoute.php
Normal file
@ -0,0 +1,143 @@
|
|||||||
|
<?php
|
||||||
|
namespace App\Http\Routes\V1;
|
||||||
|
|
||||||
|
use Illuminate\Contracts\Routing\Registrar;
|
||||||
|
|
||||||
|
class AdminRoute
|
||||||
|
{
|
||||||
|
public function map(Registrar $router)
|
||||||
|
{
|
||||||
|
$router->group([
|
||||||
|
'prefix' => config('v2board.secure_path', config('v2board.frontend_admin_path', hash('crc32b', config('app.key')))),
|
||||||
|
'middleware' => ['admin', 'log'],
|
||||||
|
], function ($router) {
|
||||||
|
// Config
|
||||||
|
$router->get ('/config/fetch', 'V1\\Admin\\ConfigController@fetch');
|
||||||
|
$router->post('/config/save', 'V1\\Admin\\ConfigController@save');
|
||||||
|
$router->get ('/config/getEmailTemplate', 'V1\\Admin\\ConfigController@getEmailTemplate');
|
||||||
|
$router->get ('/config/getThemeTemplate', 'V1\\Admin\\ConfigController@getThemeTemplate');
|
||||||
|
$router->post('/config/setTelegramWebhook', 'V1\\Admin\\ConfigController@setTelegramWebhook');
|
||||||
|
$router->post('/config/testSendMail', 'V1\\Admin\\ConfigController@testSendMail');
|
||||||
|
// Plan
|
||||||
|
$router->get ('/plan/fetch', 'V1\\Admin\\PlanController@fetch');
|
||||||
|
$router->post('/plan/save', 'V1\\Admin\\PlanController@save');
|
||||||
|
$router->post('/plan/drop', 'V1\\Admin\\PlanController@drop');
|
||||||
|
$router->post('/plan/update', 'V1\\Admin\\PlanController@update');
|
||||||
|
$router->post('/plan/sort', 'V1\\Admin\\PlanController@sort');
|
||||||
|
// Server
|
||||||
|
$router->get ('/server/group/fetch', 'V1\\Admin\\Server\\GroupController@fetch');
|
||||||
|
$router->post('/server/group/save', 'V1\\Admin\\Server\\GroupController@save');
|
||||||
|
$router->post('/server/group/drop', 'V1\\Admin\\Server\\GroupController@drop');
|
||||||
|
$router->get ('/server/route/fetch', 'V1\\Admin\\Server\\RouteController@fetch');
|
||||||
|
$router->post('/server/route/save', 'V1\\Admin\\Server\\RouteController@save');
|
||||||
|
$router->post('/server/route/drop', 'V1\\Admin\\Server\\RouteController@drop');
|
||||||
|
$router->get ('/server/manage/getNodes', 'V1\\Admin\\Server\\ManageController@getNodes');
|
||||||
|
$router->post('/server/manage/sort', 'V1\\Admin\\Server\\ManageController@sort');
|
||||||
|
$router->group([
|
||||||
|
'prefix' => 'server/trojan'
|
||||||
|
], function ($router) {
|
||||||
|
$router->post('save', 'V1\\Admin\\Server\\TrojanController@save');
|
||||||
|
$router->post('drop', 'V1\\Admin\\Server\\TrojanController@drop');
|
||||||
|
$router->post('update', 'V1\\Admin\\Server\\TrojanController@update');
|
||||||
|
$router->post('copy', 'V1\\Admin\\Server\\TrojanController@copy');
|
||||||
|
});
|
||||||
|
$router->group([
|
||||||
|
'prefix' => 'server/vmess'
|
||||||
|
], function ($router) {
|
||||||
|
$router->post('save', 'V1\\Admin\\Server\\VmessController@save');
|
||||||
|
$router->post('drop', 'V1\\Admin\\Server\\VmessController@drop');
|
||||||
|
$router->post('update', 'V1\\Admin\\Server\\VmessController@update');
|
||||||
|
$router->post('copy', 'V1\\Admin\\Server\\VmessController@copy');
|
||||||
|
});
|
||||||
|
$router->group([
|
||||||
|
'prefix' => 'server/shadowsocks'
|
||||||
|
], function ($router) {
|
||||||
|
$router->post('save', 'V1\\Admin\\Server\\ShadowsocksController@save');
|
||||||
|
$router->post('drop', 'V1\\Admin\\Server\\ShadowsocksController@drop');
|
||||||
|
$router->post('update', 'V1\\Admin\\Server\\ShadowsocksController@update');
|
||||||
|
$router->post('copy', 'V1\\Admin\\Server\\ShadowsocksController@copy');
|
||||||
|
});
|
||||||
|
$router->group([
|
||||||
|
'prefix' => 'server/hysteria'
|
||||||
|
], function ($router) {
|
||||||
|
$router->post('save', 'V1\\Admin\\Server\\HysteriaController@save');
|
||||||
|
$router->post('drop', 'V1\\Admin\\Server\\HysteriaController@drop');
|
||||||
|
$router->post('update', 'V1\\Admin\\Server\\HysteriaController@update');
|
||||||
|
$router->post('copy', 'V1\\Admin\\Server\\HysteriaController@copy');
|
||||||
|
});
|
||||||
|
$router->group([
|
||||||
|
'prefix' => 'server/vless'
|
||||||
|
], function ($router) {
|
||||||
|
$router->post('save', 'V1\\Admin\\Server\\VlessController@save');
|
||||||
|
$router->post('drop', 'V1\\Admin\\Server\\VlessController@drop');
|
||||||
|
$router->post('update', 'V1\\Admin\\Server\\VlessController@update');
|
||||||
|
$router->post('copy', 'V1\\Admin\\Server\\VlessController@copy');
|
||||||
|
});
|
||||||
|
// Order
|
||||||
|
$router->get ('/order/fetch', 'V1\\Admin\\OrderController@fetch');
|
||||||
|
$router->post('/order/update', 'V1\\Admin\\OrderController@update');
|
||||||
|
$router->post('/order/assign', 'V1\\Admin\\OrderController@assign');
|
||||||
|
$router->post('/order/paid', 'V1\\Admin\\OrderController@paid');
|
||||||
|
$router->post('/order/cancel', 'V1\\Admin\\OrderController@cancel');
|
||||||
|
$router->post('/order/detail', 'V1\\Admin\\OrderController@detail');
|
||||||
|
// User
|
||||||
|
$router->get ('/user/fetch', 'V1\\Admin\\UserController@fetch');
|
||||||
|
$router->post('/user/update', 'V1\\Admin\\UserController@update');
|
||||||
|
$router->get ('/user/getUserInfoById', 'V1\\Admin\\UserController@getUserInfoById');
|
||||||
|
$router->post('/user/generate', 'V1\\Admin\\UserController@generate');
|
||||||
|
$router->post('/user/dumpCSV', 'V1\\Admin\\UserController@dumpCSV');
|
||||||
|
$router->post('/user/sendMail', 'V1\\Admin\\UserController@sendMail');
|
||||||
|
$router->post('/user/ban', 'V1\\Admin\\UserController@ban');
|
||||||
|
$router->post('/user/resetSecret', 'V1\\Admin\\UserController@resetSecret');
|
||||||
|
$router->post('/user/setInviteUser', 'V1\\Admin\\UserController@setInviteUser');
|
||||||
|
// Stat
|
||||||
|
$router->get ('/stat/getStat', 'V1\\Admin\\StatController@getStat');
|
||||||
|
$router->get ('/stat/getOverride', 'V1\\Admin\\StatController@getOverride');
|
||||||
|
$router->get ('/stat/getServerLastRank', 'V1\\Admin\\StatController@getServerLastRank');
|
||||||
|
$router->get ('/stat/getOrder', 'V1\\Admin\\StatController@getOrder');
|
||||||
|
$router->get ('/stat/getStatUser', 'V1\\Admin\\StatController@getStatUser');
|
||||||
|
$router->get ('/stat/getRanking', 'V1\\Admin\\StatController@getRanking');
|
||||||
|
$router->get ('/stat/getStatRecord', 'V1\\Admin\\StatController@getStatRecord');
|
||||||
|
// Notice
|
||||||
|
$router->get ('/notice/fetch', 'V1\\Admin\\NoticeController@fetch');
|
||||||
|
$router->post('/notice/save', 'V1\\Admin\\NoticeController@save');
|
||||||
|
$router->post('/notice/update', 'V1\\Admin\\NoticeController@update');
|
||||||
|
$router->post('/notice/drop', 'V1\\Admin\\NoticeController@drop');
|
||||||
|
$router->post('/notice/show', 'V1\\Admin\\NoticeController@show');
|
||||||
|
// Ticket
|
||||||
|
$router->get ('/ticket/fetch', 'V1\\Admin\\TicketController@fetch');
|
||||||
|
$router->post('/ticket/reply', 'V1\\Admin\\TicketController@reply');
|
||||||
|
$router->post('/ticket/close', 'V1\\Admin\\TicketController@close');
|
||||||
|
// Coupon
|
||||||
|
$router->get ('/coupon/fetch', 'V1\\Admin\\CouponController@fetch');
|
||||||
|
$router->post('/coupon/generate', 'V1\\Admin\\CouponController@generate');
|
||||||
|
$router->post('/coupon/drop', 'V1\\Admin\\CouponController@drop');
|
||||||
|
$router->post('/coupon/show', 'V1\\Admin\\CouponController@show');
|
||||||
|
// Knowledge
|
||||||
|
$router->get ('/knowledge/fetch', 'V1\\Admin\\KnowledgeController@fetch');
|
||||||
|
$router->get ('/knowledge/getCategory', 'V1\\Admin\\KnowledgeController@getCategory');
|
||||||
|
$router->post('/knowledge/save', 'V1\\Admin\\KnowledgeController@save');
|
||||||
|
$router->post('/knowledge/show', 'V1\\Admin\\KnowledgeController@show');
|
||||||
|
$router->post('/knowledge/drop', 'V1\\Admin\\KnowledgeController@drop');
|
||||||
|
$router->post('/knowledge/sort', 'V1\\Admin\\KnowledgeController@sort');
|
||||||
|
// Payment
|
||||||
|
$router->get ('/payment/fetch', 'V1\\Admin\\PaymentController@fetch');
|
||||||
|
$router->get ('/payment/getPaymentMethods', 'V1\\Admin\\PaymentController@getPaymentMethods');
|
||||||
|
$router->post('/payment/getPaymentForm', 'V1\\Admin\\PaymentController@getPaymentForm');
|
||||||
|
$router->post('/payment/save', 'V1\\Admin\\PaymentController@save');
|
||||||
|
$router->post('/payment/drop', 'V1\\Admin\\PaymentController@drop');
|
||||||
|
$router->post('/payment/show', 'V1\\Admin\\PaymentController@show');
|
||||||
|
$router->post('/payment/sort', 'V1\\Admin\\PaymentController@sort');
|
||||||
|
// System
|
||||||
|
$router->get ('/system/getSystemStatus', 'V1\\Admin\\SystemController@getSystemStatus');
|
||||||
|
$router->get ('/system/getQueueStats', 'V1\\Admin\\SystemController@getQueueStats');
|
||||||
|
$router->get ('/system/getQueueWorkload', 'V1\\Admin\\SystemController@getQueueWorkload');
|
||||||
|
$router->get ('/system/getQueueMasters', '\\Laravel\\Horizon\\Http\\Controllers\\MasterSupervisorController@index');
|
||||||
|
$router->get ('/system/getSystemLog', 'V1\\Admin\\SystemController@getSystemLog');
|
||||||
|
// Theme
|
||||||
|
$router->get ('/theme/getThemes', 'V1\\Admin\\ThemeController@getThemes');
|
||||||
|
$router->post('/theme/saveThemeConfig', 'V1\\Admin\\ThemeController@saveThemeConfig');
|
||||||
|
$router->post('/theme/getThemeConfig', 'V1\\Admin\\ThemeController@getThemeConfig');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
@ -1,5 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
namespace App\Http\Routes;
|
namespace App\Http\Routes\V1;
|
||||||
|
|
||||||
use Illuminate\Contracts\Routing\Registrar;
|
use Illuminate\Contracts\Routing\Registrar;
|
||||||
|
|
||||||
@ -12,10 +12,10 @@ class ClientRoute
|
|||||||
'middleware' => 'client'
|
'middleware' => 'client'
|
||||||
], function ($router) {
|
], function ($router) {
|
||||||
// Client
|
// Client
|
||||||
$router->get('/subscribe', 'Client\\ClientController@subscribe');
|
$router->get('/subscribe', 'V1\\Client\\ClientController@subscribe');
|
||||||
// App
|
// App
|
||||||
$router->get('/app/getConfig', 'Client\\AppController@getConfig');
|
$router->get('/app/getConfig', 'V1\\Client\\AppController@getConfig');
|
||||||
$router->get('/app/getVersion', 'Client\\AppController@getVersion');
|
$router->get('/app/getVersion', 'V1\\Client\\AppController@getVersion');
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
@ -1,5 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
namespace App\Http\Routes;
|
namespace App\Http\Routes\V1;
|
||||||
|
|
||||||
use Illuminate\Contracts\Routing\Registrar;
|
use Illuminate\Contracts\Routing\Registrar;
|
||||||
|
|
||||||
@ -11,13 +11,13 @@ class GuestRoute
|
|||||||
'prefix' => 'guest'
|
'prefix' => 'guest'
|
||||||
], function ($router) {
|
], function ($router) {
|
||||||
// Plan
|
// Plan
|
||||||
$router->get ('/plan/fetch', 'Guest\\PlanController@fetch');
|
$router->get ('/plan/fetch', 'V1\\Guest\\PlanController@fetch');
|
||||||
// Telegram
|
// Telegram
|
||||||
$router->post('/telegram/webhook', 'Guest\\TelegramController@webhook');
|
$router->post('/telegram/webhook', 'V1\\Guest\\TelegramController@webhook');
|
||||||
// Payment
|
// Payment
|
||||||
$router->match(['get', 'post'], '/payment/notify/{method}/{uuid}', 'Guest\\PaymentController@notify');
|
$router->match(['get', 'post'], '/payment/notify/{method}/{uuid}', 'V1\\Guest\\PaymentController@notify');
|
||||||
// Comm
|
// Comm
|
||||||
$router->get ('/comm/config', 'Guest\\CommController@config');
|
$router->get ('/comm/config', 'V1\\Guest\\CommController@config');
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
25
app/Http/Routes/V1/PassportRoute.php
Normal file
25
app/Http/Routes/V1/PassportRoute.php
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
<?php
|
||||||
|
namespace App\Http\Routes\V1;
|
||||||
|
|
||||||
|
use Illuminate\Contracts\Routing\Registrar;
|
||||||
|
|
||||||
|
class PassportRoute
|
||||||
|
{
|
||||||
|
public function map(Registrar $router)
|
||||||
|
{
|
||||||
|
$router->group([
|
||||||
|
'prefix' => 'passport'
|
||||||
|
], function ($router) {
|
||||||
|
// Auth
|
||||||
|
$router->post('/auth/register', 'V1\\Passport\\AuthController@register');
|
||||||
|
$router->post('/auth/login', 'V1\\Passport\\AuthController@login');
|
||||||
|
$router->get ('/auth/token2Login', 'V1\\Passport\\AuthController@token2Login');
|
||||||
|
$router->post('/auth/forget', 'V1\\Passport\\AuthController@forget');
|
||||||
|
$router->post('/auth/getQuickLoginUrl', 'V1\\Passport\\AuthController@getQuickLoginUrl');
|
||||||
|
$router->post('/auth/loginWithMailLink', 'V1\\Passport\\AuthController@loginWithMailLink');
|
||||||
|
// Comm
|
||||||
|
$router->post('/comm/sendEmailVerify', 'V1\\Passport\\CommController@sendEmailVerify');
|
||||||
|
$router->post('/comm/pv', 'V1\\Passport\\CommController@pv');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
@ -1,5 +1,5 @@
|
|||||||
<?php
|
<?php
|
||||||
namespace App\Http\Routes;
|
namespace App\Http\Routes\V1;
|
||||||
|
|
||||||
use Illuminate\Contracts\Routing\Registrar;
|
use Illuminate\Contracts\Routing\Registrar;
|
||||||
|
|
||||||
@ -11,7 +11,7 @@ class ServerRoute
|
|||||||
'prefix' => 'server'
|
'prefix' => 'server'
|
||||||
], function ($router) {
|
], function ($router) {
|
||||||
$router->any('/{class}/{action}', function($class, $action) {
|
$router->any('/{class}/{action}', function($class, $action) {
|
||||||
$ctrl = \App::make("\\App\\Http\\Controllers\\Server\\" . ucfirst($class) . "Controller");
|
$ctrl = \App::make("\\App\\Http\\Controllers\\V1\\Server\\" . ucfirst($class) . "Controller");
|
||||||
return \App::call([$ctrl, $action]);
|
return \App::call([$ctrl, $action]);
|
||||||
});
|
});
|
||||||
});
|
});
|
32
app/Http/Routes/V1/StaffRoute.php
Normal file
32
app/Http/Routes/V1/StaffRoute.php
Normal file
@ -0,0 +1,32 @@
|
|||||||
|
<?php
|
||||||
|
namespace App\Http\Routes\V1;
|
||||||
|
|
||||||
|
use Illuminate\Contracts\Routing\Registrar;
|
||||||
|
|
||||||
|
class StaffRoute
|
||||||
|
{
|
||||||
|
public function map(Registrar $router)
|
||||||
|
{
|
||||||
|
$router->group([
|
||||||
|
'prefix' => 'staff',
|
||||||
|
'middleware' => 'staff'
|
||||||
|
], function ($router) {
|
||||||
|
// Ticket
|
||||||
|
$router->get ('/ticket/fetch', 'V1\\Staff\\TicketController@fetch');
|
||||||
|
$router->post('/ticket/reply', 'V1\\Staff\\TicketController@reply');
|
||||||
|
$router->post('/ticket/close', 'V1\\Staff\\TicketController@close');
|
||||||
|
// User
|
||||||
|
$router->post('/user/update', 'V1\\Staff\\UserController@update');
|
||||||
|
$router->get ('/user/getUserInfoById', 'V1\\Staff\\UserController@getUserInfoById');
|
||||||
|
$router->post('/user/sendMail', 'V1\\Staff\\UserController@sendMail');
|
||||||
|
$router->post('/user/ban', 'V1\\Staff\\UserController@ban');
|
||||||
|
// Plan
|
||||||
|
$router->get ('/plan/fetch', 'V1\\Staff\\PlanController@fetch');
|
||||||
|
// Notice
|
||||||
|
$router->get ('/notice/fetch', 'V1\\Admin\\NoticeController@fetch');
|
||||||
|
$router->post('/notice/save', 'V1\\Admin\\NoticeController@save');
|
||||||
|
$router->post('/notice/update', 'V1\\Admin\\NoticeController@update');
|
||||||
|
$router->post('/notice/drop', 'V1\\Admin\\NoticeController@drop');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
64
app/Http/Routes/V1/UserRoute.php
Normal file
64
app/Http/Routes/V1/UserRoute.php
Normal file
@ -0,0 +1,64 @@
|
|||||||
|
<?php
|
||||||
|
namespace App\Http\Routes\V1;
|
||||||
|
|
||||||
|
use Illuminate\Contracts\Routing\Registrar;
|
||||||
|
|
||||||
|
class UserRoute
|
||||||
|
{
|
||||||
|
public function map(Registrar $router)
|
||||||
|
{
|
||||||
|
$router->group([
|
||||||
|
'prefix' => 'user',
|
||||||
|
'middleware' => 'user'
|
||||||
|
], function ($router) {
|
||||||
|
// User
|
||||||
|
$router->get ('/resetSecurity', 'V1\\User\\UserController@resetSecurity');
|
||||||
|
$router->get ('/info', 'V1\\User\\UserController@info');
|
||||||
|
$router->post('/changePassword', 'V1\\User\\UserController@changePassword');
|
||||||
|
$router->post('/update', 'V1\\User\\UserController@update');
|
||||||
|
$router->get ('/getSubscribe', 'V1\\User\\UserController@getSubscribe');
|
||||||
|
$router->get ('/getStat', 'V1\\User\\UserController@getStat');
|
||||||
|
$router->get ('/checkLogin', 'V1\\User\\UserController@checkLogin');
|
||||||
|
$router->post('/transfer', 'V1\\User\\UserController@transfer');
|
||||||
|
$router->post('/getQuickLoginUrl', 'V1\\User\\UserController@getQuickLoginUrl');
|
||||||
|
$router->get ('/getActiveSession', 'V1\\User\\UserController@getActiveSession');
|
||||||
|
$router->post('/removeActiveSession', 'V1\\User\\UserController@removeActiveSession');
|
||||||
|
// Order
|
||||||
|
$router->post('/order/save', 'V1\\User\\OrderController@save');
|
||||||
|
$router->post('/order/checkout', 'V1\\User\\OrderController@checkout');
|
||||||
|
$router->get ('/order/check', 'V1\\User\\OrderController@check');
|
||||||
|
$router->get ('/order/detail', 'V1\\User\\OrderController@detail');
|
||||||
|
$router->get ('/order/fetch', 'V1\\User\\OrderController@fetch');
|
||||||
|
$router->get ('/order/getPaymentMethod', 'V1\\User\\OrderController@getPaymentMethod');
|
||||||
|
$router->post('/order/cancel', 'V1\\User\\OrderController@cancel');
|
||||||
|
// Plan
|
||||||
|
$router->get ('/plan/fetch', 'V1\\User\\PlanController@fetch');
|
||||||
|
// Invite
|
||||||
|
$router->get ('/invite/save', 'V1\\User\\InviteController@save');
|
||||||
|
$router->get ('/invite/fetch', 'V1\\User\\InviteController@fetch');
|
||||||
|
$router->get ('/invite/details', 'V1\\User\\InviteController@details');
|
||||||
|
// Notice
|
||||||
|
$router->get ('/notice/fetch', 'V1\\User\\NoticeController@fetch');
|
||||||
|
// Ticket
|
||||||
|
$router->post('/ticket/reply', 'V1\\User\\TicketController@reply');
|
||||||
|
$router->post('/ticket/close', 'V1\\User\\TicketController@close');
|
||||||
|
$router->post('/ticket/save', 'V1\\User\\TicketController@save');
|
||||||
|
$router->get ('/ticket/fetch', 'V1\\User\\TicketController@fetch');
|
||||||
|
$router->post('/ticket/withdraw', 'V1\\User\\TicketController@withdraw');
|
||||||
|
// Server
|
||||||
|
$router->get ('/server/fetch', 'V1\\User\\ServerController@fetch');
|
||||||
|
// Coupon
|
||||||
|
$router->post('/coupon/check', 'V1\\User\\CouponController@check');
|
||||||
|
// Telegram
|
||||||
|
$router->get ('/telegram/getBotInfo', 'V1\\User\\TelegramController@getBotInfo');
|
||||||
|
// Comm
|
||||||
|
$router->get ('/comm/config', 'V1\\User\\CommController@config');
|
||||||
|
$router->Post('/comm/getStripePublicKey', 'V1\\User\\CommController@getStripePublicKey');
|
||||||
|
// Knowledge
|
||||||
|
$router->get ('/knowledge/fetch', 'V1\\User\\KnowledgeController@fetch');
|
||||||
|
$router->get ('/knowledge/getCategory', 'V1\\User\\KnowledgeController@getCategory');
|
||||||
|
// Stat
|
||||||
|
$router->get ('/stat/getTrafficLog', 'V1\\User\\StatController@getTrafficLog');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
20
app/Http/Routes/V2/AdminRoute.php
Normal file
20
app/Http/Routes/V2/AdminRoute.php
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
<?php
|
||||||
|
namespace App\Http\Routes\V2;
|
||||||
|
|
||||||
|
use Illuminate\Contracts\Routing\Registrar;
|
||||||
|
|
||||||
|
class AdminRoute
|
||||||
|
{
|
||||||
|
public function map(Registrar $router)
|
||||||
|
{
|
||||||
|
$router->group([
|
||||||
|
'prefix' => config('v2board.secure_path', config('v2board.frontend_admin_path', hash('crc32b', config('app.key')))),
|
||||||
|
'middleware' => ['admin', 'log'],
|
||||||
|
], function ($router) {
|
||||||
|
// Stat
|
||||||
|
$router->get ('/stat/override', 'V2\\Admin\\StatController@override');
|
||||||
|
$router->get ('/stat/record', 'V2\\Admin\\StatController@record');
|
||||||
|
$router->get ('/stat/ranking', 'V2\\Admin\\StatController@ranking');
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
@ -42,7 +42,7 @@ class OrderHandleJob implements ShouldQueue
|
|||||||
switch ($this->order->status) {
|
switch ($this->order->status) {
|
||||||
// cancel
|
// cancel
|
||||||
case 0:
|
case 0:
|
||||||
if ($this->order->created_at <= (time() - 1800)) {
|
if ($this->order->created_at <= (time() - 3600 * 2)) {
|
||||||
$orderService->cancel();
|
$orderService->cancel();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
@ -6,6 +6,7 @@ use Illuminate\Database\Eloquent\Model;
|
|||||||
|
|
||||||
class Log extends Model
|
class Log extends Model
|
||||||
{
|
{
|
||||||
|
use \App\Scope\FilterScope;
|
||||||
protected $table = 'v2_log';
|
protected $table = 'v2_log';
|
||||||
protected $dateFormat = 'U';
|
protected $dateFormat = 'U';
|
||||||
protected $guarded = ['id'];
|
protected $guarded = ['id'];
|
||||||
|
21
app/Models/ServerVless.php
Executable file
21
app/Models/ServerVless.php
Executable file
@ -0,0 +1,21 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Models;
|
||||||
|
|
||||||
|
use Illuminate\Database\Eloquent\Model;
|
||||||
|
|
||||||
|
class ServerVless extends Model
|
||||||
|
{
|
||||||
|
protected $table = 'v2_server_vless';
|
||||||
|
protected $dateFormat = 'U';
|
||||||
|
protected $guarded = ['id'];
|
||||||
|
protected $casts = [
|
||||||
|
'created_at' => 'timestamp',
|
||||||
|
'updated_at' => 'timestamp',
|
||||||
|
'group_id' => 'array',
|
||||||
|
'route_id' => 'array',
|
||||||
|
'tls_settings' => 'array',
|
||||||
|
'network_settings' => 'array',
|
||||||
|
'tags' => 'array'
|
||||||
|
];
|
||||||
|
}
|
@ -1,8 +1,7 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Http\Controllers\Client\Protocols;
|
namespace App\Protocols;
|
||||||
|
|
||||||
use App\Utils\Dict;
|
|
||||||
use phpDocumentor\Reflection\Types\Self_;
|
use phpDocumentor\Reflection\Types\Self_;
|
||||||
use Symfony\Component\Yaml\Yaml;
|
use Symfony\Component\Yaml\Yaml;
|
||||||
|
|
@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Http\Controllers\Client\Protocols;
|
namespace App\Protocols;
|
||||||
|
|
||||||
use App\Utils\Helper;
|
use App\Utils\Helper;
|
||||||
use Symfony\Component\Yaml\Yaml;
|
use Symfony\Component\Yaml\Yaml;
|
@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Http\Controllers\Client\Protocols;
|
namespace App\Protocols;
|
||||||
|
|
||||||
|
|
||||||
use App\Utils\Helper;
|
use App\Utils\Helper;
|
@ -1,8 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Http\Controllers\Client\Protocols;
|
namespace App\Protocols;
|
||||||
|
|
||||||
use App\Utils\Helper;
|
|
||||||
|
|
||||||
class Loon
|
class Loon
|
||||||
{
|
{
|
@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Http\Controllers\Client\Protocols;
|
namespace App\Protocols;
|
||||||
|
|
||||||
|
|
||||||
class Passwall
|
class Passwall
|
@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Http\Controllers\Client\Protocols;
|
namespace App\Protocols;
|
||||||
|
|
||||||
|
|
||||||
class QuantumultX
|
class QuantumultX
|
@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Http\Controllers\Client\Protocols;
|
namespace App\Protocols;
|
||||||
|
|
||||||
|
|
||||||
class SSRPlus
|
class SSRPlus
|
@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Http\Controllers\Client\Protocols;
|
namespace App\Protocols;
|
||||||
|
|
||||||
class SagerNet
|
class SagerNet
|
||||||
{
|
{
|
@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Http\Controllers\Client\Protocols;
|
namespace App\Protocols;
|
||||||
|
|
||||||
use App\Utils\Helper;
|
use App\Utils\Helper;
|
||||||
|
|
@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Http\Controllers\Client\Protocols;
|
namespace App\Protocols;
|
||||||
|
|
||||||
class Shadowsocks
|
class Shadowsocks
|
||||||
{
|
{
|
@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Http\Controllers\Client\Protocols;
|
namespace App\Protocols;
|
||||||
|
|
||||||
use Symfony\Component\Yaml\Yaml;
|
use Symfony\Component\Yaml\Yaml;
|
||||||
|
|
@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Http\Controllers\Client\Protocols;
|
namespace App\Protocols;
|
||||||
|
|
||||||
use App\Utils\Helper;
|
use App\Utils\Helper;
|
||||||
|
|
@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Http\Controllers\Client\Protocols;
|
namespace App\Protocols;
|
||||||
|
|
||||||
use App\Utils\Helper;
|
use App\Utils\Helper;
|
||||||
|
|
@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Http\Controllers\Client\Protocols;
|
namespace App\Protocols;
|
||||||
|
|
||||||
|
|
||||||
use App\Utils\Helper;
|
use App\Utils\Helper;
|
@ -1,6 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
namespace App\Http\Controllers\Client\Protocols;
|
namespace App\Protocols;
|
||||||
|
|
||||||
|
|
||||||
class V2rayNG
|
class V2rayNG
|
@ -72,8 +72,19 @@ class RouteServiceProvider extends ServiceProvider
|
|||||||
'middleware' => 'api',
|
'middleware' => 'api',
|
||||||
'namespace' => $this->namespace
|
'namespace' => $this->namespace
|
||||||
], function ($router) {
|
], function ($router) {
|
||||||
foreach (glob(app_path('Http//Routes') . '/*.php') as $file) {
|
foreach (glob(app_path('Http//Routes//V1') . '/*.php') as $file) {
|
||||||
$this->app->make('App\\Http\\Routes\\' . basename($file, '.php'))->map($router);
|
$this->app->make('App\\Http\\Routes\\V1\\' . basename($file, '.php'))->map($router);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
|
||||||
|
Route::group([
|
||||||
|
'prefix' => '/api/v2',
|
||||||
|
'middleware' => 'api',
|
||||||
|
'namespace' => $this->namespace
|
||||||
|
], function ($router) {
|
||||||
|
foreach (glob(app_path('Http//Routes//V2') . '/*.php') as $file) {
|
||||||
|
$this->app->make('App\\Http\\Routes\\V2\\' . basename($file, '.php'))->map($router);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
50
app/Scope/FilterScope.php
Normal file
50
app/Scope/FilterScope.php
Normal file
@ -0,0 +1,50 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
namespace App\Scope;
|
||||||
|
|
||||||
|
use Illuminate\Database\Eloquent\Builder;
|
||||||
|
|
||||||
|
trait FilterScope
|
||||||
|
{
|
||||||
|
public function scopeSetFilterAllowKeys($builder, ...$allowKeys)
|
||||||
|
{
|
||||||
|
$allowKeys = implode(',', $allowKeys);
|
||||||
|
if (!$allowKeys) return $builder;
|
||||||
|
$request = request();
|
||||||
|
$request->validate([
|
||||||
|
'filter.*.key' => "required|in:{$allowKeys}",
|
||||||
|
'filter.*.condition' => 'required|in:in,is,not,like,lt,gt',
|
||||||
|
'filter.*.value' => 'required'
|
||||||
|
]);
|
||||||
|
$filters = $request->input('filter');
|
||||||
|
if ($filters) {
|
||||||
|
foreach ($filters as $k => $filter) {
|
||||||
|
if ($filter['condition'] === 'in') {
|
||||||
|
$builder->whereIn($filter['key'], $filter['value']);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if ($filter['condition'] === 'is') {
|
||||||
|
$builder->where($filter['key'], $filter['value']);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if ($filter['condition'] === 'not') {
|
||||||
|
$builder->where($filter['key'], '!=', $filter['value']);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if ($filter['condition'] === 'gt') {
|
||||||
|
$builder->where($filter['key'], '>', $filter['value']);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if ($filter['condition'] === 'lt') {
|
||||||
|
$builder->where($filter['key'], '<', $filter['value']);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
if ($filter['condition'] === 'like') {
|
||||||
|
$builder->where($filter['key'], 'like', "%{$filter['value']}%");
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return $builder;
|
||||||
|
}
|
||||||
|
}
|
@ -6,6 +6,7 @@ use App\Models\ServerHysteria;
|
|||||||
use App\Models\ServerLog;
|
use App\Models\ServerLog;
|
||||||
use App\Models\ServerRoute;
|
use App\Models\ServerRoute;
|
||||||
use App\Models\ServerShadowsocks;
|
use App\Models\ServerShadowsocks;
|
||||||
|
use App\Models\ServerVless;
|
||||||
use App\Models\User;
|
use App\Models\User;
|
||||||
use App\Models\ServerVmess;
|
use App\Models\ServerVmess;
|
||||||
use App\Models\ServerTrojan;
|
use App\Models\ServerTrojan;
|
||||||
@ -15,6 +16,29 @@ use Illuminate\Support\Facades\Cache;
|
|||||||
|
|
||||||
class ServerService
|
class ServerService
|
||||||
{
|
{
|
||||||
|
public function getAvailableVless(User $user):array
|
||||||
|
{
|
||||||
|
$servers = [];
|
||||||
|
$model = ServerVless::orderBy('sort', 'ASC');
|
||||||
|
$server = $model->get();
|
||||||
|
foreach ($server as $key => $v) {
|
||||||
|
if (!$v['show']) continue;
|
||||||
|
$server[$key]['type'] = 'vless';
|
||||||
|
if (!in_array($user->group_id, $server[$key]['group_id'])) continue;
|
||||||
|
if (strpos($server[$key]['port'], '-') !== false) {
|
||||||
|
$server[$key]['port'] = Helper::randomPort($server[$key]['port']);
|
||||||
|
}
|
||||||
|
if ($server[$key]['parent_id']) {
|
||||||
|
$server[$key]['last_check_at'] = Cache::get(CacheKey::get('SERVER_VLESS_LAST_CHECK_AT', $server[$key]['parent_id']));
|
||||||
|
} else {
|
||||||
|
$server[$key]['last_check_at'] = Cache::get(CacheKey::get('SERVER_VLESS_LAST_CHECK_AT', $server[$key]['id']));
|
||||||
|
}
|
||||||
|
$servers[] = $server[$key]->toArray();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
return $servers;
|
||||||
|
}
|
||||||
|
|
||||||
public function getAvailableVmess(User $user):array
|
public function getAvailableVmess(User $user):array
|
||||||
{
|
{
|
||||||
@ -113,7 +137,8 @@ class ServerService
|
|||||||
$this->getAvailableShadowsocks($user),
|
$this->getAvailableShadowsocks($user),
|
||||||
$this->getAvailableVmess($user),
|
$this->getAvailableVmess($user),
|
||||||
$this->getAvailableTrojan($user),
|
$this->getAvailableTrojan($user),
|
||||||
$this->getAvailableHysteria($user)
|
$this->getAvailableHysteria($user),
|
||||||
|
$this->getAvailableVless($user)
|
||||||
);
|
);
|
||||||
$tmp = array_column($servers, 'sort');
|
$tmp = array_column($servers, 'sort');
|
||||||
array_multisort($tmp, SORT_ASC, $servers);
|
array_multisort($tmp, SORT_ASC, $servers);
|
||||||
@ -196,6 +221,17 @@ class ServerService
|
|||||||
return $servers;
|
return $servers;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function getAllVLess()
|
||||||
|
{
|
||||||
|
$servers = ServerVless::orderBy('sort', 'ASC')
|
||||||
|
->get()
|
||||||
|
->toArray();
|
||||||
|
foreach ($servers as $k => $v) {
|
||||||
|
$servers[$k]['type'] = 'vless';
|
||||||
|
}
|
||||||
|
return $servers;
|
||||||
|
}
|
||||||
|
|
||||||
public function getAllTrojan()
|
public function getAllTrojan()
|
||||||
{
|
{
|
||||||
$servers = ServerTrojan::orderBy('sort', 'ASC')
|
$servers = ServerTrojan::orderBy('sort', 'ASC')
|
||||||
@ -241,7 +277,8 @@ class ServerService
|
|||||||
$this->getAllShadowsocks(),
|
$this->getAllShadowsocks(),
|
||||||
$this->getAllVMess(),
|
$this->getAllVMess(),
|
||||||
$this->getAllTrojan(),
|
$this->getAllTrojan(),
|
||||||
$this->getAllHysteria()
|
$this->getAllHysteria(),
|
||||||
|
$this->getAllVLess()
|
||||||
);
|
);
|
||||||
$this->mergeData($servers);
|
$this->mergeData($servers);
|
||||||
$tmp = array_column($servers, 'sort');
|
$tmp = array_column($servers, 'sort');
|
||||||
@ -272,6 +309,8 @@ class ServerService
|
|||||||
return ServerTrojan::find($serverId);
|
return ServerTrojan::find($serverId);
|
||||||
case 'hysteria':
|
case 'hysteria':
|
||||||
return ServerHysteria::find($serverId);
|
return ServerHysteria::find($serverId);
|
||||||
|
case 'vless':
|
||||||
|
return ServerVless::find($serverId);
|
||||||
default:
|
default:
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
@ -30,7 +30,7 @@ class StatisticalService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public function setServerStats() {
|
public function setServerStats() {
|
||||||
$this->serverStats = Cache::get("stat_server_{$this->startAt}");
|
$this->serverStats = Cache::store('file')->get("stat_server_{$this->startAt}");
|
||||||
$this->serverStats = json_decode($this->serverStats, true) ?? [];
|
$this->serverStats = json_decode($this->serverStats, true) ?? [];
|
||||||
if (!is_array($this->serverStats)) {
|
if (!is_array($this->serverStats)) {
|
||||||
$this->serverStats = [];
|
$this->serverStats = [];
|
||||||
@ -38,7 +38,7 @@ class StatisticalService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public function setUserStats() {
|
public function setUserStats() {
|
||||||
$this->userStats = Cache::get("stat_user_{$this->startAt}");
|
$this->userStats = Cache::store('file')->get("stat_user_{$this->startAt}");
|
||||||
$this->userStats = json_decode($this->userStats, true) ?? [];
|
$this->userStats = json_decode($this->userStats, true) ?? [];
|
||||||
if (!is_array($this->userStats)) {
|
if (!is_array($this->userStats)) {
|
||||||
$this->userStats = [];
|
$this->userStats = [];
|
||||||
@ -95,7 +95,7 @@ class StatisticalService {
|
|||||||
} else {
|
} else {
|
||||||
$this->serverStats[$serverType][$serverId] = [$u, $d];
|
$this->serverStats[$serverType][$serverId] = [$u, $d];
|
||||||
}
|
}
|
||||||
Cache::set("stat_server_{$this->startAt}", json_encode($this->serverStats));
|
Cache::store('file')->set("stat_server_{$this->startAt}", json_encode($this->serverStats));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function statUser($rate, $userId, $u, $d)
|
public function statUser($rate, $userId, $u, $d)
|
||||||
@ -107,7 +107,7 @@ class StatisticalService {
|
|||||||
} else {
|
} else {
|
||||||
$this->userStats[$rate][$userId] = [$u, $d];
|
$this->userStats[$rate][$userId] = [$u, $d];
|
||||||
}
|
}
|
||||||
Cache::set("stat_user_{$this->startAt}", json_encode($this->userStats));
|
Cache::store('file')->set("stat_user_{$this->startAt}", json_encode($this->userStats));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getStatUserByUserID($userId): array
|
public function getStatUserByUserID($userId): array
|
||||||
@ -165,12 +165,12 @@ class StatisticalService {
|
|||||||
|
|
||||||
public function clearStatUser()
|
public function clearStatUser()
|
||||||
{
|
{
|
||||||
Cache::forget("stat_user_{$this->startAt}");
|
Cache::store('file')->forget("stat_user_{$this->startAt}");
|
||||||
}
|
}
|
||||||
|
|
||||||
public function clearStatServer()
|
public function clearStatServer()
|
||||||
{
|
{
|
||||||
Cache::forget("stat_server_{$this->startAt}");
|
Cache::store('file')->forget("stat_server_{$this->startAt}");
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getStatRecord($type)
|
public function getStatRecord($type)
|
||||||
|
@ -19,13 +19,17 @@ class CacheKey
|
|||||||
'SERVER_HYSTERIA_ONLINE_USER' => 'hysteria节点在线用户',
|
'SERVER_HYSTERIA_ONLINE_USER' => 'hysteria节点在线用户',
|
||||||
'SERVER_HYSTERIA_LAST_CHECK_AT' => 'hysteria节点最后检查时间',
|
'SERVER_HYSTERIA_LAST_CHECK_AT' => 'hysteria节点最后检查时间',
|
||||||
'SERVER_HYSTERIA_LAST_PUSH_AT' => 'hysteria节点最后推送时间',
|
'SERVER_HYSTERIA_LAST_PUSH_AT' => 'hysteria节点最后推送时间',
|
||||||
|
'SERVER_VLESS_ONLINE_USER' => 'vless节点在线用户',
|
||||||
|
'SERVER_VLESS_LAST_CHECK_AT' => 'vless节点最后检查时间',
|
||||||
|
'SERVER_VLESS_LAST_PUSH_AT' => 'vless节点最后推送时间',
|
||||||
'TEMP_TOKEN' => '临时令牌',
|
'TEMP_TOKEN' => '临时令牌',
|
||||||
'LAST_SEND_EMAIL_REMIND_TRAFFIC' => '最后发送流量邮件提醒',
|
'LAST_SEND_EMAIL_REMIND_TRAFFIC' => '最后发送流量邮件提醒',
|
||||||
'SCHEDULE_LAST_CHECK_AT' => '计划任务最后检查时间',
|
'SCHEDULE_LAST_CHECK_AT' => '计划任务最后检查时间',
|
||||||
'REGISTER_IP_RATE_LIMIT' => '注册频率限制',
|
'REGISTER_IP_RATE_LIMIT' => '注册频率限制',
|
||||||
'LAST_SEND_LOGIN_WITH_MAIL_LINK_TIMESTAMP' => '最后一次发送登入链接时间',
|
'LAST_SEND_LOGIN_WITH_MAIL_LINK_TIMESTAMP' => '最后一次发送登入链接时间',
|
||||||
'PASSWORD_ERROR_LIMIT' => '密码错误次数限制',
|
'PASSWORD_ERROR_LIMIT' => '密码错误次数限制',
|
||||||
'USER_SESSIONS' => '用户session'
|
'USER_SESSIONS' => '用户session',
|
||||||
|
'FORGET_REQUEST_LIMIT' => '找回密码次数限制'
|
||||||
];
|
];
|
||||||
|
|
||||||
public static function get(string $key, $uniqueValue)
|
public static function get(string $key, $uniqueValue)
|
||||||
|
@ -120,4 +120,10 @@ class Helper
|
|||||||
$portRange = explode('-', $range);
|
$portRange = explode('-', $range);
|
||||||
return rand($portRange[0], $portRange[1]);
|
return rand($portRange[0], $portRange[1]);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static function base64EncodeUrlSafe($data)
|
||||||
|
{
|
||||||
|
$encoded = base64_encode($data);
|
||||||
|
return str_replace(['+', '/', '='], ['-', '_', ''], $encoded);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -23,7 +23,8 @@
|
|||||||
"linfo/linfo": "^4.0",
|
"linfo/linfo": "^4.0",
|
||||||
"php-curl-class/php-curl-class": "^8.6",
|
"php-curl-class/php-curl-class": "^8.6",
|
||||||
"stripe/stripe-php": "^7.36.1",
|
"stripe/stripe-php": "^7.36.1",
|
||||||
"symfony/yaml": "^4.3"
|
"symfony/yaml": "^4.3",
|
||||||
|
"paragonie/sodium_compat": "^1.20"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"facade/ignition": "^2.3.6",
|
"facade/ignition": "^2.3.6",
|
||||||
|
@ -237,5 +237,5 @@ return [
|
|||||||
| The only modification by laravel config
|
| The only modification by laravel config
|
||||||
|
|
|
|
||||||
*/
|
*/
|
||||||
'version' => '1.7.4.1681103823832'
|
'version' => '1.7.5.1685907718051'
|
||||||
];
|
];
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
-- Adminer 4.7.7 MySQL dump
|
-- Adminer 4.8.1 MySQL 5.7.29 dump
|
||||||
|
|
||||||
SET NAMES utf8;
|
SET NAMES utf8;
|
||||||
SET time_zone = '+00:00';
|
SET time_zone = '+00:00';
|
||||||
@ -84,7 +84,7 @@ CREATE TABLE `v2_knowledge` (
|
|||||||
DROP TABLE IF EXISTS `v2_log`;
|
DROP TABLE IF EXISTS `v2_log`;
|
||||||
CREATE TABLE `v2_log` (
|
CREATE TABLE `v2_log` (
|
||||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||||
`title` varchar(255) NOT NULL,
|
`title` text NOT NULL,
|
||||||
`level` varchar(11) DEFAULT NULL,
|
`level` varchar(11) DEFAULT NULL,
|
||||||
`host` varchar(255) DEFAULT NULL,
|
`host` varchar(255) DEFAULT NULL,
|
||||||
`uri` varchar(255) NOT NULL,
|
`uri` varchar(255) NOT NULL,
|
||||||
@ -294,6 +294,31 @@ CREATE TABLE `v2_server_trojan` (
|
|||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='trojan伺服器表';
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COMMENT='trojan伺服器表';
|
||||||
|
|
||||||
|
|
||||||
|
DROP TABLE IF EXISTS `v2_server_vless`;
|
||||||
|
CREATE TABLE `v2_server_vless` (
|
||||||
|
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||||
|
`group_id` text NOT NULL,
|
||||||
|
`route_id` text,
|
||||||
|
`name` varchar(255) NOT NULL,
|
||||||
|
`parent_id` int(11) DEFAULT NULL,
|
||||||
|
`host` varchar(255) NOT NULL,
|
||||||
|
`port` int(11) NOT NULL,
|
||||||
|
`server_port` int(11) NOT NULL,
|
||||||
|
`tls` tinyint(1) NOT NULL,
|
||||||
|
`tls_settings` text,
|
||||||
|
`flow` varchar(64) DEFAULT NULL,
|
||||||
|
`network` varchar(11) NOT NULL,
|
||||||
|
`network_settings` text,
|
||||||
|
`tags` text,
|
||||||
|
`rate` varchar(11) NOT NULL,
|
||||||
|
`show` tinyint(1) NOT NULL DEFAULT '0',
|
||||||
|
`sort` int(11) DEFAULT NULL,
|
||||||
|
`created_at` int(11) NOT NULL,
|
||||||
|
`updated_at` int(11) NOT NULL,
|
||||||
|
PRIMARY KEY (`id`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||||
|
|
||||||
|
|
||||||
DROP TABLE IF EXISTS `v2_server_vmess`;
|
DROP TABLE IF EXISTS `v2_server_vmess`;
|
||||||
CREATE TABLE `v2_server_vmess` (
|
CREATE TABLE `v2_server_vmess` (
|
||||||
`id` int(11) NOT NULL AUTO_INCREMENT,
|
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||||
@ -444,4 +469,4 @@ CREATE TABLE `v2_user` (
|
|||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
|
||||||
|
|
||||||
|
|
||||||
-- 2023-05-23 17:01:12
|
-- 2023-07-17 07:38:59
|
||||||
|
@ -684,3 +684,32 @@ CREATE TABLE `v2_log` (
|
|||||||
`updated_at` int(11) NOT NULL,
|
`updated_at` int(11) NOT NULL,
|
||||||
PRIMARY KEY (`id`)
|
PRIMARY KEY (`id`)
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||||
|
|
||||||
|
ALTER TABLE `v2_log`
|
||||||
|
CHANGE `title` `title` text COLLATE 'utf8mb4_general_ci' NOT NULL AFTER `id`;
|
||||||
|
|
||||||
|
CREATE TABLE `v2_server_vless` (
|
||||||
|
`id` int(11) NOT NULL AUTO_INCREMENT,
|
||||||
|
`group_id` text NOT NULL,
|
||||||
|
`route_id` text,
|
||||||
|
`name` varchar(255) NOT NULL,
|
||||||
|
`parent_id` int(11) DEFAULT NULL,
|
||||||
|
`host` varchar(255) NOT NULL,
|
||||||
|
`port` int(11) NOT NULL,
|
||||||
|
`server_port` int(11) NOT NULL,
|
||||||
|
`tls` tinyint(1) NOT NULL,
|
||||||
|
`tls_settings` text,
|
||||||
|
`flow` varchar(11) DEFAULT NULL,
|
||||||
|
`network` varchar(11) NOT NULL,
|
||||||
|
`network_settings` text,
|
||||||
|
`tags` text,
|
||||||
|
`rate` varchar(11) NOT NULL,
|
||||||
|
`show` tinyint(1) NOT NULL DEFAULT '0',
|
||||||
|
`sort` int(11) DEFAULT NULL,
|
||||||
|
`created_at` int(11) NOT NULL,
|
||||||
|
`updated_at` int(11) NOT NULL,
|
||||||
|
PRIMARY KEY (`id`)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
|
||||||
|
|
||||||
|
ALTER TABLE `v2_server_vless`
|
||||||
|
CHANGE `flow` `flow` varchar(64) COLLATE 'utf8mb4_general_ci' NULL AFTER `tls_settings`;
|
||||||
|
2
public/assets/admin/umi.js
vendored
2
public/assets/admin/umi.js
vendored
File diff suppressed because one or more lines are too long
@ -94,5 +94,6 @@
|
|||||||
"Login to :name": "Login to :name",
|
"Login to :name": "Login to :name",
|
||||||
"Sending frequently, please try again later": "Sending frequently, please try again later",
|
"Sending frequently, please try again later": "Sending frequently, please try again later",
|
||||||
"Current product is sold out": "Current product is sold out",
|
"Current product is sold out": "Current product is sold out",
|
||||||
"There are too many password errors, please try again after :minute minutes.": "There are too many password errors, please try again after :minute minutes."
|
"There are too many password errors, please try again after :minute minutes.": "There are too many password errors, please try again after :minute minutes.",
|
||||||
|
"Reset failed, Please try again later": "Reset failed, Please try again later"
|
||||||
}
|
}
|
||||||
|
@ -94,5 +94,6 @@
|
|||||||
"Login to :name": "登入到 :name",
|
"Login to :name": "登入到 :name",
|
||||||
"Sending frequently, please try again later": "发送频繁,请稍后再试",
|
"Sending frequently, please try again later": "发送频繁,请稍后再试",
|
||||||
"Current product is sold out": "当前商品已售罄",
|
"Current product is sold out": "当前商品已售罄",
|
||||||
"There are too many password errors, please try again after :minute minutes.": "密码错误次数过多,请 :minute 分钟后再试"
|
"There are too many password errors, please try again after :minute minutes.": "密码错误次数过多,请 :minute 分钟后再试",
|
||||||
|
"Reset failed, Please try again later": "重置失败,请稍后再试"
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user