first commit

This commit is contained in:
CN-JS-HuiBai
2026-04-07 16:54:24 +08:00
commit 2c6a38c80d
399 changed files with 42205 additions and 0 deletions

View File

@@ -0,0 +1,23 @@
<?php
namespace App\Http\Routes\V1;
use App\Http\Controllers\V1\Client\AppController;
use App\Http\Controllers\V1\Client\ClientController;
use Illuminate\Contracts\Routing\Registrar;
class ClientRoute
{
public function map(Registrar $router)
{
$router->group([
'prefix' => 'client',
'middleware' => 'client'
], function ($router) {
// Client
$router->get('/subscribe', [ClientController::class, 'subscribe'])->name('client.subscribe.legacy');
// App
$router->get('/app/getConfig', [AppController::class, 'getConfig']);
$router->get('/app/getVersion', [AppController::class, 'getVersion']);
});
}
}

View File

@@ -0,0 +1,27 @@
<?php
namespace App\Http\Routes\V1;
use App\Http\Controllers\V1\Guest\CommController;
use App\Http\Controllers\V1\Guest\PaymentController;
use App\Http\Controllers\V1\Guest\PlanController;
use App\Http\Controllers\V1\Guest\TelegramController;
use Illuminate\Contracts\Routing\Registrar;
class GuestRoute
{
public function map(Registrar $router)
{
$router->group([
'prefix' => 'guest'
], function ($router) {
// Plan
$router->get('/plan/fetch', [PlanController::class, 'fetch']);
// Telegram
$router->post('/telegram/webhook', [TelegramController::class, 'webhook']);
// Payment
$router->match(['get', 'post'], '/payment/notify/{method}/{uuid}', [PaymentController::class, 'notify']);
// Comm
$router->get('/comm/config', [CommController::class, 'config']);
});
}
}

View File

@@ -0,0 +1,27 @@
<?php
namespace App\Http\Routes\V1;
use App\Http\Controllers\V1\Passport\AuthController;
use App\Http\Controllers\V1\Passport\CommController;
use Illuminate\Contracts\Routing\Registrar;
class PassportRoute
{
public function map(Registrar $router)
{
$router->group([
'prefix' => 'passport'
], function ($router) {
// Auth
$router->post('/auth/register', [AuthController::class, 'register']);
$router->post('/auth/login', [AuthController::class, 'login']);
$router->get('/auth/token2Login', [AuthController::class, 'token2Login']);
$router->post('/auth/forget', [AuthController::class, 'forget']);
$router->post('/auth/getQuickLoginUrl', [AuthController::class, 'getQuickLoginUrl']);
$router->post('/auth/loginWithMailLink', [AuthController::class, 'loginWithMailLink']);
// Comm
$router->post('/comm/sendEmailVerify', [CommController::class, 'sendEmailVerify']);
$router->post('/comm/pv', [CommController::class, 'pv']);
});
}
}

View File

@@ -0,0 +1,45 @@
<?php
namespace App\Http\Routes\V1;
use App\Http\Controllers\V1\Server\DeepbworkController;
use App\Http\Controllers\V1\Server\ShadowsocksTidalabController;
use App\Http\Controllers\V1\Server\TrojanTidalabController;
use App\Http\Controllers\V1\Server\UniProxyController;
use Illuminate\Contracts\Routing\Registrar;
class ServerRoute
{
public function map(Registrar $router)
{
$router->group([
'prefix' => 'server',
], function ($router) {
$router->group([
'prefix' => 'UniProxy',
'middleware' => 'server'
], function ($route) {
$route->get('config', [UniProxyController::class, 'config']);
$route->get('user', [UniProxyController::class, 'user']);
$route->post('push', [UniProxyController::class, 'push']);
$route->post('alive', [UniProxyController::class, 'alive']);
$route->get('alivelist', [UniProxyController::class, 'alivelist']);
$route->post('status', [UniProxyController::class, 'status']);
});
$router->group([
'prefix' => 'ShadowsocksTidalab',
'middleware' => 'server:shadowsocks'
], function ($route) {
$route->get('user', [ShadowsocksTidalabController::class, 'user']);
$route->post('submit', [ShadowsocksTidalabController::class, 'submit']);
});
$router->group([
'prefix' => 'TrojanTidalab',
'middleware' => 'server:trojan'
], function ($route) {
$route->get('config', [TrojanTidalabController::class, 'config']);
$route->get('user', [TrojanTidalabController::class, 'user']);
$route->post('submit', [TrojanTidalabController::class, 'submit']);
});
});
}
}

View File

@@ -0,0 +1,83 @@
<?php
namespace App\Http\Routes\V1;
use App\Http\Controllers\V1\User\CommController;
use App\Http\Controllers\V1\User\CouponController;
use App\Http\Controllers\V1\User\GiftCardController;
use App\Http\Controllers\V1\User\InviteController;
use App\Http\Controllers\V1\User\KnowledgeController;
use App\Http\Controllers\V1\User\NoticeController;
use App\Http\Controllers\V1\User\OrderController;
use App\Http\Controllers\V1\User\PlanController;
use App\Http\Controllers\V1\User\ServerController;
use App\Http\Controllers\V1\User\StatController;
use App\Http\Controllers\V1\User\TelegramController;
use App\Http\Controllers\V1\User\TicketController;
use App\Http\Controllers\V1\User\UserController;
use Illuminate\Contracts\Routing\Registrar;
class UserRoute
{
public function map(Registrar $router)
{
$router->group([
'prefix' => 'user',
'middleware' => 'user'
], function ($router) {
// User
$router->get('/resetSecurity', [UserController::class, 'resetSecurity']);
$router->get('/info', [UserController::class, 'info']);
$router->post('/changePassword', [UserController::class, 'changePassword']);
$router->post('/update', [UserController::class, 'update']);
$router->get('/getSubscribe', [UserController::class, 'getSubscribe']);
$router->get('/getStat', [UserController::class, 'getStat']);
$router->get('/checkLogin', [UserController::class, 'checkLogin']);
$router->post('/transfer', [UserController::class, 'transfer']);
$router->post('/getQuickLoginUrl', [UserController::class, 'getQuickLoginUrl']);
$router->get('/getActiveSession', [UserController::class, 'getActiveSession']);
$router->post('/removeActiveSession', [UserController::class, 'removeActiveSession']);
// Order
$router->post('/order/save', [OrderController::class, 'save']);
$router->post('/order/checkout', [OrderController::class, 'checkout']);
$router->get('/order/check', [OrderController::class, 'check']);
$router->get('/order/detail', [OrderController::class, 'detail']);
$router->get('/order/fetch', [OrderController::class, 'fetch']);
$router->get('/order/getPaymentMethod', [OrderController::class, 'getPaymentMethod']);
$router->post('/order/cancel', [OrderController::class, 'cancel']);
// Plan
$router->get('/plan/fetch', [PlanController::class, 'fetch']);
// Invite
$router->get('/invite/save', [InviteController::class, 'save']);
$router->get('/invite/fetch', [InviteController::class, 'fetch']);
$router->get('/invite/details', [InviteController::class, 'details']);
// Notice
$router->get('/notice/fetch', [NoticeController::class, 'fetch']);
// Ticket
$router->post('/ticket/reply', [TicketController::class, 'reply']);
$router->post('/ticket/close', [TicketController::class, 'close']);
$router->post('/ticket/save', [TicketController::class, 'save']);
$router->get('/ticket/fetch', [TicketController::class, 'fetch']);
$router->post('/ticket/withdraw', [TicketController::class, 'withdraw']);
// Server
$router->get('/server/fetch', [ServerController::class, 'fetch']);
// Coupon
$router->post('/coupon/check', [CouponController::class, 'check']);
// Gift Card
$router->post('/gift-card/check', [GiftCardController::class, 'check']);
$router->post('/gift-card/redeem', [GiftCardController::class, 'redeem']);
$router->get('/gift-card/history', [GiftCardController::class, 'history']);
$router->get('/gift-card/detail', [GiftCardController::class, 'detail']);
$router->get('/gift-card/types', [GiftCardController::class, 'types']);
// Telegram
$router->get('/telegram/getBotInfo', [TelegramController::class, 'getBotInfo']);
// Comm
$router->get('/comm/config', [CommController::class, 'config']);
$router->Post('/comm/getStripePublicKey', [CommController::class, 'getStripePublicKey']);
// Knowledge
$router->get('/knowledge/fetch', [KnowledgeController::class, 'fetch']);
$router->get('/knowledge/getCategory', [KnowledgeController::class, 'getCategory']);
// Stat
$router->get('/stat/getTrafficLog', [StatController::class, 'getTrafficLog']);
});
}
}

View File

@@ -0,0 +1,276 @@
<?php
namespace App\Http\Routes\V2;
use App\Http\Controllers\V2\Admin\ConfigController;
use App\Http\Controllers\V2\Admin\PlanController;
use App\Http\Controllers\V2\Admin\Server\GroupController;
use App\Http\Controllers\V2\Admin\Server\RouteController;
use App\Http\Controllers\V2\Admin\Server\ManageController;
use App\Http\Controllers\V2\Admin\OrderController;
use App\Http\Controllers\V2\Admin\UserController;
use App\Http\Controllers\V2\Admin\StatController;
use App\Http\Controllers\V2\Admin\NoticeController;
use App\Http\Controllers\V2\Admin\TicketController;
use App\Http\Controllers\V2\Admin\CouponController;
use App\Http\Controllers\V2\Admin\GiftCardController;
use App\Http\Controllers\V2\Admin\KnowledgeController;
use App\Http\Controllers\V2\Admin\PaymentController;
use App\Http\Controllers\V2\Admin\SystemController;
use App\Http\Controllers\V2\Admin\ThemeController;
use App\Http\Controllers\V2\Admin\TrafficResetController;
use Illuminate\Contracts\Routing\Registrar;
class AdminRoute
{
public function map(Registrar $router)
{
$router->group([
'prefix' => admin_setting('secure_path', admin_setting('frontend_admin_path', hash('crc32b', config('app.key')))),
'middleware' => ['admin', 'log'],
], function ($router) {
// Config
$router->group([
'prefix' => 'config'
], function ($router) {
$router->get('/fetch', [ConfigController::class, 'fetch']);
$router->post('/save', [ConfigController::class, 'save']);
$router->get('/getEmailTemplate', [ConfigController::class, 'getEmailTemplate']);
$router->get('/getThemeTemplate', [ConfigController::class, 'getThemeTemplate']);
$router->post('/setTelegramWebhook', [ConfigController::class, 'setTelegramWebhook']);
$router->post('/testSendMail', [ConfigController::class, 'testSendMail']);
});
// Plan
$router->group([
'prefix' => 'plan'
], function ($router) {
$router->get('/fetch', [PlanController::class, 'fetch']);
$router->post('/save', [PlanController::class, 'save']);
$router->post('/drop', [PlanController::class, 'drop']);
$router->post('/update', [PlanController::class, 'update']);
$router->post('/sort', [PlanController::class, 'sort']);
});
// Server
$router->group([
'prefix' => 'server/group'
], function ($router) {
$router->get('/fetch', [GroupController::class, 'fetch']);
$router->post('/save', [GroupController::class, 'save']);
$router->post('/drop', [GroupController::class, 'drop']);
});
$router->group([
'prefix' => 'server/route'
], function ($router) {
$router->get('/fetch', [RouteController::class, 'fetch']);
$router->post('/save', [RouteController::class, 'save']);
$router->post('/drop', [RouteController::class, 'drop']);
});
$router->group([
'prefix' => 'server/manage'
], function ($router) {
$router->get('/getNodes', [ManageController::class, 'getNodes']);
$router->post('/sort', [ManageController::class, 'sort']);
});
// 节点更新接口
$router->group([
'prefix' => 'server/manage'
], function ($router) {
$router->post('/update', [ManageController::class, 'update']);
$router->post('/save', [ManageController::class, 'save']);
$router->post('/drop', [ManageController::class, 'drop']);
$router->post('/copy', [ManageController::class, 'copy']);
$router->post('/sort', [ManageController::class, 'sort']);
$router->post('/batchDelete', [ManageController::class, 'batchDelete']);
$router->post('/resetTraffic', [ManageController::class, 'resetTraffic']);
$router->post('/batchResetTraffic', [ManageController::class, 'batchResetTraffic']);
});
// Order
$router->group([
'prefix' => 'order'
], function ($router) {
$router->any('/fetch', [OrderController::class, 'fetch']);
$router->post('/update', [OrderController::class, 'update']);
$router->post('/assign', [OrderController::class, 'assign']);
$router->post('/paid', [OrderController::class, 'paid']);
$router->post('/cancel', [OrderController::class, 'cancel']);
$router->post('/detail', [OrderController::class, 'detail']);
});
// User
$router->group([
'prefix' => 'user'
], function ($router) {
$router->any('/fetch', [UserController::class, 'fetch']);
$router->post('/update', [UserController::class, 'update']);
$router->get('/getUserInfoById', [UserController::class, 'getUserInfoById']);
$router->post('/generate', [UserController::class, 'generate']);
$router->post('/dumpCSV', [UserController::class, 'dumpCSV']);
$router->post('/sendMail', [UserController::class, 'sendMail']);
$router->post('/ban', [UserController::class, 'ban']);
$router->post('/resetSecret', [UserController::class, 'resetSecret']);
$router->post('/setInviteUser', [UserController::class, 'setInviteUser']);
$router->post('/destroy', [UserController::class, 'destroy']);
});
// Stat
$router->group([
'prefix' => 'stat'
], function ($router) {
$router->get('/getOverride', [StatController::class, 'getOverride']);
$router->get('/getStats', [StatController::class, 'getStats']);
$router->get('/getServerLastRank', [StatController::class, 'getServerLastRank']);
$router->get('/getServerYesterdayRank', [StatController::class, 'getServerYesterdayRank']);
$router->get('/getOrder', [StatController::class, 'getOrder']);
$router->any('/getStatUser', [StatController::class, 'getStatUser']);
$router->get('/getRanking', [StatController::class, 'getRanking']);
$router->get('/getStatRecord', [StatController::class, 'getStatRecord']);
$router->get('/getTrafficRank', [StatController::class, 'getTrafficRank']);
});
// Notice
$router->group([
'prefix' => 'notice'
], function ($router) {
$router->get('/fetch', [NoticeController::class, 'fetch']);
$router->post('/save', [NoticeController::class, 'save']);
$router->post('/update', [NoticeController::class, 'update']);
$router->post('/drop', [NoticeController::class, 'drop']);
$router->post('/show', [NoticeController::class, 'show']);
$router->post('/sort', [NoticeController::class, 'sort']);
});
// Ticket
$router->group([
'prefix' => 'ticket'
], function ($router) {
$router->any('/fetch', [TicketController::class, 'fetch']);
$router->post('/reply', [TicketController::class, 'reply']);
$router->post('/close', [TicketController::class, 'close']);
});
// Coupon
$router->group([
'prefix' => 'coupon'
], function ($router) {
$router->any('/fetch', [CouponController::class, 'fetch']);
$router->post('/generate', [CouponController::class, 'generate']);
$router->post('/drop', [CouponController::class, 'drop']);
$router->post('/show', [CouponController::class, 'show']);
$router->post('/update', [CouponController::class, 'update']);
});
// Gift Card
$router->group([
'prefix' => 'gift-card'
], function ($router) {
// Template management
$router->any('/templates', [GiftCardController::class, 'templates']);
$router->post('/create-template', [GiftCardController::class, 'createTemplate']);
$router->post('/update-template', [GiftCardController::class, 'updateTemplate']);
$router->post('/delete-template', [GiftCardController::class, 'deleteTemplate']);
// Code management
$router->post('/generate-codes', [GiftCardController::class, 'generateCodes']);
$router->any('/codes', [GiftCardController::class, 'codes']);
$router->post('/toggle-code', [GiftCardController::class, 'toggleCode']);
$router->get('/export-codes', [GiftCardController::class, 'exportCodes']);
$router->post('/update-code', [GiftCardController::class, 'updateCode']);
$router->post('/delete-code', [GiftCardController::class, 'deleteCode']);
// Usage records
$router->any('/usages', [GiftCardController::class, 'usages']);
// Statistics
$router->any('/statistics', [GiftCardController::class, 'statistics']);
$router->get('/types', [GiftCardController::class, 'types']);
});
// Knowledge
$router->group([
'prefix' => 'knowledge'
], function ($router) {
$router->get('/fetch', [KnowledgeController::class, 'fetch']);
$router->get('/getCategory', [KnowledgeController::class, 'getCategory']);
$router->post('/save', [KnowledgeController::class, 'save']);
$router->post('/show', [KnowledgeController::class, 'show']);
$router->post('/drop', [KnowledgeController::class, 'drop']);
$router->post('/sort', [KnowledgeController::class, 'sort']);
});
// Payment
$router->group([
'prefix' => 'payment'
], function ($router) {
$router->get('/fetch', [PaymentController::class, 'fetch']);
$router->get('/getPaymentMethods', [PaymentController::class, 'getPaymentMethods']);
$router->post('/getPaymentForm', [PaymentController::class, 'getPaymentForm']);
$router->post('/save', [PaymentController::class, 'save']);
$router->post('/drop', [PaymentController::class, 'drop']);
$router->post('/show', [PaymentController::class, 'show']);
$router->post('/sort', [PaymentController::class, 'sort']);
});
// System
$router->group([
'prefix' => 'system'
], function ($router) {
$router->get('/getSystemStatus', [SystemController::class, 'getSystemStatus']);
$router->get('/getQueueStats', [SystemController::class, 'getQueueStats']);
$router->get('/getQueueWorkload', [SystemController::class, 'getQueueWorkload']);
$router->get('/getQueueMasters', '\\Laravel\\Horizon\\Http\\Controllers\\MasterSupervisorController@index');
$router->get('/getHorizonFailedJobs', [SystemController::class, 'getHorizonFailedJobs']);
$router->any('/getAuditLog', [SystemController::class, 'getAuditLog']);
});
// Update
// $router->group([
// 'prefix' => 'update'
// ], function ($router) {
// $router->get('/check', [UpdateController::class, 'checkUpdate']);
// $router->post('/execute', [UpdateController::class, 'executeUpdate']);
// });
// Theme
$router->group([
'prefix' => 'theme'
], function ($router) {
$router->get('/getThemes', [ThemeController::class, 'getThemes']);
$router->post('/upload', [ThemeController::class, 'upload']);
$router->post('/delete', [ThemeController::class, 'delete']);
$router->post('/saveThemeConfig', [ThemeController::class, 'saveThemeConfig']);
$router->post('/getThemeConfig', [ThemeController::class, 'getThemeConfig']);
});
// Plugin
$router->group([
'prefix' => 'plugin'
], function ($router) {
$router->get('/types', [\App\Http\Controllers\V2\Admin\PluginController::class, 'types']);
$router->get('/getPlugins', [\App\Http\Controllers\V2\Admin\PluginController::class, 'index']);
$router->post('/upload', [\App\Http\Controllers\V2\Admin\PluginController::class, 'upload']);
$router->post('/delete', [\App\Http\Controllers\V2\Admin\PluginController::class, 'delete']);
$router->post('install', [\App\Http\Controllers\V2\Admin\PluginController::class, 'install']);
$router->post('uninstall', [\App\Http\Controllers\V2\Admin\PluginController::class, 'uninstall']);
$router->post('enable', [\App\Http\Controllers\V2\Admin\PluginController::class, 'enable']);
$router->post('disable', [\App\Http\Controllers\V2\Admin\PluginController::class, 'disable']);
$router->get('config', [\App\Http\Controllers\V2\Admin\PluginController::class, 'getConfig']);
$router->post('config', [\App\Http\Controllers\V2\Admin\PluginController::class, 'updateConfig']);
$router->post('upgrade', [\App\Http\Controllers\V2\Admin\PluginController::class, 'upgrade']);
});
// 流量重置管理
$router->group([
'prefix' => 'traffic-reset'
], function ($router) {
$router->get('logs', [TrafficResetController::class, 'logs']);
$router->get('stats', [TrafficResetController::class, 'stats']);
$router->get('user/{userId}/history', [TrafficResetController::class, 'userHistory']);
$router->post('reset-user', [TrafficResetController::class, 'resetUser']);
});
});
}
}

View File

@@ -0,0 +1,20 @@
<?php
namespace App\Http\Routes\V2;
use App\Http\Controllers\V2\Client\AppController;
use Illuminate\Contracts\Routing\Registrar;
class ClientRoute
{
public function map(Registrar $router)
{
$router->group([
'prefix' => 'client',
'middleware' => 'client'
], function ($router) {
// App
$router->get('/app/getConfig', [AppController::class, 'getConfig']);
$router->get('/app/getVersion', [AppController::class, 'getVersion']);
});
}
}

View File

@@ -0,0 +1,27 @@
<?php
namespace App\Http\Routes\V2;
use App\Http\Controllers\V1\Passport\AuthController;
use App\Http\Controllers\V1\Passport\CommController;
use Illuminate\Contracts\Routing\Registrar;
class PassportRoute
{
public function map(Registrar $router)
{
$router->group([
'prefix' => 'passport'
], function ($router) {
// Auth
$router->post('/auth/register', [AuthController::class, 'register']);
$router->post('/auth/login', [AuthController::class, 'login']);
$router->get ('/auth/token2Login', [AuthController::class, 'token2Login']);
$router->post('/auth/forget', [AuthController::class, 'forget']);
$router->post('/auth/getQuickLoginUrl', [AuthController::class, 'getQuickLoginUrl']);
$router->post('/auth/loginWithMailLink', [AuthController::class, 'loginWithMailLink']);
// Comm
$router->post('/comm/sendEmailVerify', [CommController::class, 'sendEmailVerify']);
$router->post('/comm/pv', [CommController::class, 'pv']);
});
}
}

View File

@@ -0,0 +1,29 @@
<?php
namespace App\Http\Routes\V2;
use App\Http\Controllers\V1\Server\ShadowsocksTidalabController;
use App\Http\Controllers\V1\Server\TrojanTidalabController;
use App\Http\Controllers\V1\Server\UniProxyController;
use App\Http\Controllers\V2\Server\ServerController;
use Illuminate\Contracts\Routing\Registrar;
class ServerRoute
{
public function map(Registrar $router)
{
$router->group([
'prefix' => 'server',
'middleware' => 'server'
], function ($route) {
$route->post('handshake', [ServerController::class, 'handshake']);
$route->post('report', [ServerController::class, 'report']);
$route->get('config', [UniProxyController::class, 'config']);
$route->get('user', [UniProxyController::class, 'user']);
$route->post('push', [UniProxyController::class, 'push']);
$route->post('alive', [UniProxyController::class, 'alive']);
$route->get('alivelist', [UniProxyController::class, 'alivelist']);
$route->post('status', [UniProxyController::class, 'status']);
});
}
}

View File

@@ -0,0 +1,20 @@
<?php
namespace App\Http\Routes\V2;
use App\Http\Controllers\V1\User\UserController;
use Illuminate\Contracts\Routing\Registrar;
class UserRoute
{
public function map(Registrar $router)
{
$router->group([
'prefix' => 'user',
'middleware' => 'user'
], function ($router) {
// User
$router->get('/resetSecurity', [UserController::class, 'resetSecurity']);
$router->get('/info', [UserController::class, 'info']);
});
}
}