494 lines
33 KiB
PHP
Executable File
494 lines
33 KiB
PHP
Executable File
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
use App\Middleware\Admin;
|
|
use App\Middleware\Guest;
|
|
use App\Middleware\NodeToken;
|
|
use App\Middleware\GemboxToken;
|
|
use App\Middleware\TgHookAdmin;
|
|
use App\Middleware\TgAdmin;
|
|
use App\Middleware\User;
|
|
use App\Middleware\VerifyNasaToken;
|
|
use Slim\Routing\RouteCollectorProxy;
|
|
|
|
return static function (Slim\App $app): void {
|
|
|
|
// test
|
|
$app->get('/my', App\Controllers\MyController::class . ':index');
|
|
|
|
// tom通用api
|
|
$app->get('/api/huodong/findbydate/{date}', App\Controllers\TomApi\HuodongController::class . ':findByDate');
|
|
$app->get('/api/huodong/datehit/{date}', App\Controllers\TomApi\HuodongController::class . ':datehit');
|
|
$app->get('/api/huodong/datehit', App\Controllers\TomApi\HuodongController::class . ':datehit');
|
|
|
|
// gembox 日后分离出去
|
|
$app->group('/gembox', static function (RouteCollectorProxy $group): void {
|
|
$group->get('', App\Controllers\Gembox\GemboxController::class . ':index');
|
|
$group->get('/', App\Controllers\Gembox\GemboxController::class . ':index');
|
|
$group->get('/draw', App\Controllers\Gembox\DrawController::class . ':index');
|
|
$group->post('/draw/done', App\Controllers\Gembox\DrawController::class . ':done');
|
|
$group->post('/draw/back', App\Controllers\Gembox\DrawController::class . ':back');
|
|
$group->get('/draw/detail/{siteCode}/{id:[0-9]+}', App\Controllers\Gembox\DrawController::class . ':detail');
|
|
$group->get('/invite/up', App\Controllers\Gembox\InviteController::class . ':getUp');
|
|
$group->get('/node/live', App\Controllers\Gembox\NodeController::class . ':getLive');
|
|
$group->get('/node/live/detail/{siteCode}/{id:[0-9]+}', App\Controllers\Gembox\NodeController::class . ':getDetail');
|
|
});
|
|
|
|
// gembox api
|
|
$app->group('/api/gembox', static function (RouteCollectorProxy $group): void {
|
|
$group->post('/draw/list', App\Controllers\GemboxApi\DrawController::class . ':getList');
|
|
$group->post('/draw/done', App\Controllers\GemboxApi\DrawController::class . ':done');
|
|
$group->post('/draw/back', App\Controllers\GemboxApi\DrawController::class . ':back');
|
|
$group->post('/draw/detail', App\Controllers\GemboxApi\DrawController::class . ':detail');
|
|
$group->post('/invite/get/up', App\Controllers\GemboxApi\InviteController::class . ':getUp');
|
|
$group->post('/invite/get/up/byuid', App\Controllers\GemboxApi\InviteController::class . ':getUpByUid');
|
|
$group->post('/node/get/live', App\Controllers\GemboxApi\NodeController::class . ':getLive');
|
|
})->add(new GemboxToken());
|
|
|
|
// TomApi\Tg
|
|
$app->any('/api/tg/hook', App\Controllers\TomApi\Tg\HookController::class . ':cmd')->add(new TgHookAdmin());
|
|
|
|
$app->group('/api/tg', static function (RouteCollectorProxy $group): void {
|
|
$group->put('/ticket/{id:[0-9]+}', App\Controllers\Admin\TicketController::class . ':update');
|
|
$group->post('/node/{id:[0-9]+}/copy', App\Controllers\Admin\NodeController::class . ':copy');
|
|
})->add(new TgAdmin());
|
|
|
|
// test
|
|
$app->get('/test1', App\Controllers\TestController::class . ':test1');
|
|
$app->get('/test2', App\Controllers\TestController::class . ':test2');
|
|
$app->get('/test3', App\Controllers\TestController::class . ':test3');
|
|
$app->get('/test4', App\Controllers\TestController::class . ':test4');
|
|
$app->get('/test5', App\Controllers\TestController::class . ':test5');
|
|
$app->get('/test6', App\Controllers\TestController::class . ':test6');
|
|
$app->get('/test_mail/{tpl}', App\Controllers\TestController::class . ':test_mail');
|
|
$app->get('/go/{method}', App\Controllers\TestController::class . ':go');
|
|
// $app->get('/test6', App\Controllers\TestController::class . ':test6');
|
|
// $app->get('/test6', App\Controllers\TestController::class . ':test6');
|
|
|
|
// doc
|
|
$app->group('/doc', static function (RouteCollectorProxy $group): void {
|
|
$group->get('', App\Controllers\DocController::class . ':index');
|
|
$group->get('/', App\Controllers\DocController::class . ':index');
|
|
$group->get('/windows', App\Controllers\DocController::class . ':windows');
|
|
$group->get('/mac', App\Controllers\DocController::class . ':mac');
|
|
$group->get('/ios', App\Controllers\DocController::class . ':ios');
|
|
$group->get('/android', App\Controllers\DocController::class . ':android');
|
|
});
|
|
|
|
// front
|
|
$app->get('/', App\Controllers\FrontController::class . ':index'); // 老实
|
|
// $app->get('/', App\Controllers\AuthController::class . ':login');
|
|
$app->get('/code/{code}', App\Controllers\FrontController::class . ':index');
|
|
// $app->get('/sales', App\Controllers\FrontController::class . ':sales');
|
|
// $app->get('/aff', App\Controllers\FrontController::class . ':aff');
|
|
// $app->get('/faq', App\Controllers\FrontController::class . ':faq');
|
|
|
|
// Home
|
|
// $app->get('/', App\Controllers\HomeController::class . ':index');
|
|
$app->get('/tos', App\Controllers\HomeController::class . ':tos');
|
|
$app->get('/staff', App\Controllers\HomeController::class . ':staff');
|
|
// Error Page
|
|
$app->get('/404', App\Controllers\HomeController::class . ':notFound');
|
|
$app->get('/405', App\Controllers\HomeController::class . ':methodNotAllowed');
|
|
$app->get('/500', App\Controllers\HomeController::class . ':internalServerError');
|
|
// Bot Callback
|
|
$app->post('/callback/{type}', App\Controllers\CallbackController::class . ':index');
|
|
// OAuth
|
|
$app->post('/oauth/{type}', App\Controllers\OAuthController::class . ':index');
|
|
$app->get('/oauth/{type}', App\Controllers\OAuthController::class . ':index');
|
|
// 通用订阅
|
|
$app->get('/sub/{token}/{subtype}', App\Controllers\SubController::class . ':index');
|
|
// User
|
|
$app->group('/user', static function (RouteCollectorProxy $group): void {
|
|
$group->get('', App\Controllers\UserController::class . ':index');
|
|
$group->get('/', App\Controllers\UserController::class . ':index');
|
|
// 主题
|
|
$group->get('/panel/mod/toggle', App\Controllers\UserController::class . ':panelModToggle');
|
|
$group->put('/panel/option/save', App\Controllers\UserController::class . ':panelOptionSave');
|
|
$group->put('/panel/menu/toggle', App\Controllers\UserController::class . ':panelMenuToggle');
|
|
// 签到
|
|
$group->post('/checkin', App\Controllers\UserController::class . ':checkin');
|
|
// 自动续订
|
|
$group->get('/autorenew', App\Controllers\UserController::class . ':autorenew');
|
|
// 公告
|
|
$group->get('/announcement', App\Controllers\UserController::class . ':announcement');
|
|
$group->get('/notifi', App\Controllers\UserController::class . ':notifi');
|
|
// 节点列表
|
|
$group->get('/node', App\Controllers\User\NodeController::class . ':index');
|
|
// faq
|
|
$group->get('/faq/{page:[0-9]*}', App\Controllers\User\FaqController::class . ':index');
|
|
// $group->post('/faq/search', App\Controllers\User\FaqController::class . ':search');
|
|
// 钱包
|
|
$group->get('/code', App\Controllers\User\CodeController::class . ':index');
|
|
$group->get('/code/ajax/moneylog/{page:[0-9]+}/view', App\Controllers\User\CodeController::class . ':ajaxMoneyLog');
|
|
// 套餐记录
|
|
$group->get('/plan', App\Controllers\User\PlanController::class . ':index');
|
|
$group->get('/plan/ajax/planlog/{page:[0-9]+}/view', App\Controllers\User\PlanController::class . ':ajaxPlanLog');
|
|
$group->get('/plan/ajax/detail/{code}/json', App\Controllers\User\PlanController::class . ':ajaxDetail');
|
|
// $group->get('/plan/{code}/detail', App\Controllers\User\PlanController::class . ':detail');
|
|
// 文档
|
|
$group->get('/docs', App\Controllers\User\DocsController::class . ':index');
|
|
$group->get('/docs/{id:[0-9]+}/view', App\Controllers\User\DocsController::class . ':detail');
|
|
// 个人资料
|
|
$group->get('/profile', App\Controllers\UserController::class . ':profile');
|
|
// Invite
|
|
$group->get('/invite', App\Controllers\User\InviteController::class . ':index');
|
|
$group->post('/invite/reset', App\Controllers\User\InviteController::class . ':reset');
|
|
$group->post('/invite/usdt/addr/save', App\Controllers\User\InviteController::class . ':usdtAddrSave');
|
|
$group->get('/invite/ajax/affmoneylog/{page:[0-9]+}/view', App\Controllers\User\InviteController::class . ':aJaxAffMoneyLog');
|
|
// 封禁
|
|
$group->get('/banned', App\Controllers\UserController::class . ':banned');
|
|
// 节点
|
|
$group->get('/server', App\Controllers\User\ServerController::class . ':index');
|
|
// 动态倍率
|
|
$group->get('/rate', App\Controllers\User\RateController::class . ':index');
|
|
$group->post('/rate', App\Controllers\User\RateController::class . ':ajax');
|
|
// 审计
|
|
$group->get('/detect', App\Controllers\User\DetectRuleController::class . ':index');
|
|
$group->get('/detect/log', App\Controllers\User\DetectLogController::class . ':index');
|
|
// 工单
|
|
$group->get('/ticket', App\Controllers\User\TicketController::class . ':index');
|
|
// $group->get('/ticket/create', App\Controllers\User\TicketController::class . ':create');
|
|
$group->post('/ticket', App\Controllers\User\TicketController::class . ':add');
|
|
$group->get('/ticket/{id:[0-9]+}/detail', App\Controllers\User\TicketController::class . ':detail');
|
|
$group->put('/ticket/{id:[0-9]+}', App\Controllers\User\TicketController::class . ':update');
|
|
// 资料编辑
|
|
$group->get('/edit', App\Controllers\User\InfoController::class . ':index');
|
|
$group->post('/email', App\Controllers\User\InfoController::class . ':updateEmail');
|
|
$group->post('/username', App\Controllers\User\InfoController::class . ':updateUsername');
|
|
$group->post('/unbind_im', App\Controllers\User\InfoController::class . ':unbindIM');
|
|
$group->post('/password', App\Controllers\User\InfoController::class . ':updatePassword');
|
|
$group->post('/passwd_reset', App\Controllers\User\InfoController::class . ':resetPasswd');
|
|
$group->post('/apitoken_reset', App\Controllers\User\InfoController::class . ':resetApiToken');
|
|
$group->post('/method', App\Controllers\User\InfoController::class . ':updateMethod');
|
|
$group->post('/url_reset', App\Controllers\User\InfoController::class . ':resetURL');
|
|
$group->post('/daily_mail', App\Controllers\User\InfoController::class . ':updateDailyMail');
|
|
$group->post('/contact_method', App\Controllers\User\InfoController::class . ':updateContactMethod');
|
|
$group->post('/theme', App\Controllers\User\InfoController::class . ':updateTheme');
|
|
$group->post('/kill', App\Controllers\User\InfoController::class . ':sendToGulag');
|
|
// 发送验证邮件
|
|
$group->post('/send', App\Controllers\AuthController::class . ':sendVerify');
|
|
// MFA
|
|
$group->post('/ga_set_new', App\Controllers\User\MFAController::class . ':checkAndSet');
|
|
$group->post('/ga_check', App\Controllers\User\MFAController::class . ':checkGa');
|
|
$group->post('/ga_set', App\Controllers\User\MFAController::class . ':setGa');
|
|
$group->post('/ga_reset', App\Controllers\User\MFAController::class . ':resetGa');
|
|
// 深色模式切换
|
|
$group->post('/switch_theme_mode', App\Controllers\UserController::class . ':switchThemeMode');
|
|
// 订阅记录
|
|
$group->get('/subscribe', App\Controllers\User\SubLogController::class . ':index');
|
|
// 流量记录
|
|
$group->get('/traffic', App\Controllers\User\TrafficLogController::class . ':index');
|
|
// 账户余额
|
|
$group->get('/money', App\Controllers\User\MoneyController::class . ':index');
|
|
$group->post('/giftcard', App\Controllers\User\MoneyController::class . ':applyGifta Card');
|
|
$group->post('/affToBanlance', App\Controllers\User\MoneyController::class . ':affToBanlance');
|
|
$group->post('/drawToUsdt', App\Controllers\User\MoneyController::class . ':drawToUsdt');
|
|
$group->post('/cancelDraw', App\Controllers\User\MoneyController::class . ':cancelDraw');
|
|
// 产品页面
|
|
// $group->get('/product', App\Controllers\User\ProductController::class . ':index');
|
|
$group->get('/shop', App\Controllers\User\ProductController::class . ':index');
|
|
// 订单页面
|
|
$group->get('/order', App\Controllers\User\OrderController::class . ':index');
|
|
$group->get('/order/create', App\Controllers\User\OrderController::class . ':create');
|
|
$group->post('/order/create', App\Controllers\User\OrderController::class . ':process');
|
|
$group->get('/order/{id:[0-9]+}/view', App\Controllers\User\OrderController::class . ':detail');
|
|
$group->post('/order/ajax', App\Controllers\User\OrderController::class . ':ajax');
|
|
// 账单页面
|
|
$group->get('/invoice', App\Controllers\User\InvoiceController::class . ':index');
|
|
$group->get('/invoice/{id:[0-9]+}/view', App\Controllers\User\InvoiceController::class . ':detail');
|
|
$group->post('/invoice/{id:[0-9]+}/view', App\Controllers\User\InvoiceController::class . ':detail');
|
|
$group->post('/invoice/pay_balance', App\Controllers\User\InvoiceController::class . ':payBalance');
|
|
$group->post('/invoice/ajax', App\Controllers\User\InvoiceController::class . ':ajax');
|
|
// 新优惠码系统
|
|
$group->post('/coupon', App\Controllers\User\CouponController::class . ':check');
|
|
// 支付
|
|
$group->post('/payment/purchase/{type}', App\Services\Payment::class . ':purchase');
|
|
$group->get('/payment/purchase/{type}', App\Services\Payment::class . ':purchase');
|
|
$group->get('/payment/return/{type}', App\Services\Payment::class . ':returnHTML');
|
|
$group->post('/payment/code', App\Services\Payment::class . ':code');
|
|
// Get Clients
|
|
$group->get('/clients/{name}', App\Controllers\User\ClientController::class . ':getClients');
|
|
// 登出
|
|
$group->get('/logout', App\Controllers\UserController::class . ':logout');
|
|
})->add(new User());
|
|
|
|
$app->group('/payment', static function (RouteCollectorProxy $group): void {
|
|
$group->get('/notify/{type}', App\Services\Payment::class . ':notify');
|
|
$group->post('/notify/{type}', App\Services\Payment::class . ':notify');
|
|
$group->post('/status/{type}', App\Services\Payment::class . ':getStatus');
|
|
});
|
|
// Auth
|
|
$app->group('/auth', static function (RouteCollectorProxy $group): void {
|
|
$group->get('/login', App\Controllers\AuthController::class . ':login');
|
|
$group->post('/login', App\Controllers\AuthController::class . ':loginHandle');
|
|
$group->get('/register', App\Controllers\AuthController::class . ':register');
|
|
$group->post('/register', App\Controllers\AuthController::class . ':registerHandle');
|
|
$group->post('/send', App\Controllers\AuthController::class . ':sendVerify');
|
|
$group->get('/logout', App\Controllers\AuthController::class . ':logout');
|
|
})->add(new Guest());
|
|
// Password
|
|
$app->group('/password', static function (RouteCollectorProxy $group): void {
|
|
$group->get('/reset', App\Controllers\PasswordController::class . ':reset');
|
|
$group->post('/reset', App\Controllers\PasswordController::class . ':handleReset');
|
|
$group->get('/token/{token}', App\Controllers\PasswordController::class . ':token');
|
|
$group->post('/token/{token}', App\Controllers\PasswordController::class . ':handleToken');
|
|
})->add(new Guest());
|
|
// Admin
|
|
$app->group('/admin', static function (RouteCollectorProxy $group): void {
|
|
$group->get('', App\Controllers\AdminController::class . ':index');
|
|
$group->get('/', App\Controllers\AdminController::class . ':index');
|
|
// Node
|
|
$group->get('/node', App\Controllers\Admin\NodeController::class . ':index');
|
|
$group->get('/node/create', App\Controllers\Admin\NodeController::class . ':create');
|
|
$group->post('/node', App\Controllers\Admin\NodeController::class . ':add');
|
|
$group->get('/node/{id:[0-9]+}/edit', App\Controllers\Admin\NodeController::class . ':edit');
|
|
$group->post(
|
|
'/node/{id:[0-9]+}/reset_password',
|
|
App\Controllers\Admin\NodeController::class . ':resetPassword'
|
|
);
|
|
$group->post(
|
|
'/node/{id:[0-9]+}/reset_bandwidth',
|
|
App\Controllers\Admin\NodeController::class . ':resetBandwidth'
|
|
);
|
|
$group->post('/node/{id:[0-9]+}/copy', App\Controllers\Admin\NodeController::class . ':copy');
|
|
$group->put('/node/{id:[0-9]+}', App\Controllers\Admin\NodeController::class . ':update');
|
|
$group->delete('/node/{id:[0-9]+}', App\Controllers\Admin\NodeController::class . ':delete');
|
|
$group->post('/node/ajax', App\Controllers\Admin\NodeController::class . ':ajax');
|
|
// Ticket
|
|
$group->get('/ticket', App\Controllers\Admin\TicketController::class . ':index');
|
|
$group->post('/ticket', App\Controllers\Admin\TicketController::class . ':add');
|
|
$group->get('/ticket/{id:[0-9]+}/view', App\Controllers\Admin\TicketController::class . ':detail');
|
|
$group->put('/ticket/{id:[0-9]+}/close', App\Controllers\Admin\TicketController::class . ':close');
|
|
$group->put('/ticket/{id:[0-9]+}', App\Controllers\Admin\TicketController::class . ':update');
|
|
$group->put('/ticket/{id:[0-9]+}/ai', App\Controllers\Admin\TicketController::class . ':updateAI');
|
|
$group->delete('/ticket/{id:[0-9]+}', App\Controllers\Admin\TicketController::class . ':delete');
|
|
$group->post('/ticket/ajax', App\Controllers\Admin\TicketController::class . ':ajax');
|
|
// Ann
|
|
$group->get('/announcement', App\Controllers\Admin\AnnController::class . ':index');
|
|
$group->get('/announcement/create', App\Controllers\Admin\AnnController::class . ':create');
|
|
$group->post('/announcement', App\Controllers\Admin\AnnController::class . ':add');
|
|
$group->get('/announcement/{id:[0-9]+}/edit', App\Controllers\Admin\AnnController::class . ':edit');
|
|
$group->put('/announcement/{id:[0-9]+}', App\Controllers\Admin\AnnController::class . ':update');
|
|
$group->delete('/announcement/{id:[0-9]+}', App\Controllers\Admin\AnnController::class . ':delete');
|
|
$group->post('/announcement/ajax', App\Controllers\Admin\AnnController::class . ':ajax');
|
|
// Docs
|
|
$group->get('/docs', App\Controllers\Admin\DocsController::class . ':index');
|
|
$group->get('/docs/create', App\Controllers\Admin\DocsController::class . ':create');
|
|
$group->post('/docs', App\Controllers\Admin\DocsController::class . ':add');
|
|
$group->post('/docs/generate', App\Controllers\Admin\DocsController::class . ':generate');
|
|
$group->get('/docs/{id:[0-9]+}/edit', App\Controllers\Admin\DocsController::class . ':edit');
|
|
$group->put('/docs/{id:[0-9]+}', App\Controllers\Admin\DocsController::class . ':update');
|
|
$group->delete('/docs/{id:[0-9]+}', App\Controllers\Admin\DocsController::class . ':delete');
|
|
$group->post('/docs/ajax', App\Controllers\Admin\DocsController::class . ':ajax');
|
|
// 审计规则
|
|
$group->get('/detect', App\Controllers\Admin\DetectRuleController::class . ':index');
|
|
$group->get('/detect/create', App\Controllers\Admin\DetectRuleController::class . ':create');
|
|
$group->post('/detect/add', App\Controllers\Admin\DetectRuleController::class . ':add');
|
|
$group->delete('/detect/{id:[0-9]+}', App\Controllers\Admin\DetectRuleController::class . ':delete');
|
|
$group->post('/detect/ajax', App\Controllers\Admin\DetectRuleController::class . ':ajax');
|
|
// 审计触发日志
|
|
$group->get('/detect/log', App\Controllers\Admin\DetectLogController::class . ':index');
|
|
$group->post('/detect/log/ajax', App\Controllers\Admin\DetectLogController::class . ':ajax');
|
|
// 审计封禁日志
|
|
$group->get('/detect/ban', App\Controllers\Admin\DetectBanLogController::class . ':index');
|
|
$group->post('/detect/ban/ajax', App\Controllers\Admin\DetectBanLogController::class . ':ajax');
|
|
// User
|
|
$group->get('/user', App\Controllers\Admin\UserController::class . ':index');
|
|
$group->get('/user/{id:[0-9]+}/edit', App\Controllers\Admin\UserController::class . ':edit');
|
|
$group->put('/user/{id:[0-9]+}', App\Controllers\Admin\UserController::class . ':update');
|
|
$group->post('/user/create', App\Controllers\Admin\UserController::class . ':create');
|
|
$group->delete('/user/{id}', App\Controllers\Admin\UserController::class . ':delete');
|
|
$group->post('/user/ajax', App\Controllers\Admin\UserController::class . ':ajax');
|
|
// Coupon
|
|
$group->get('/coupon', App\Controllers\Admin\CouponController::class . ':index');
|
|
$group->post('/coupon', App\Controllers\Admin\CouponController::class . ':add');
|
|
$group->post('/coupon/ajax', App\Controllers\Admin\CouponController::class . ':ajax');
|
|
$group->delete('/coupon/{id:[0-9]+}', App\Controllers\Admin\CouponController::class . ':delete');
|
|
$group->post('/coupon/{id:[0-9]+}/disable', App\Controllers\Admin\CouponController::class . ':disable');
|
|
// 登录日志
|
|
$group->get('/login', App\Controllers\Admin\LoginLogController::class . ':index');
|
|
$group->post('/login/ajax', App\Controllers\Admin\LoginLogController::class . ':ajax');
|
|
// 在线IP日志
|
|
$group->get('/online', App\Controllers\Admin\OnlineLogController::class . ':index');
|
|
$group->post('/online/ajax', App\Controllers\Admin\OnlineLogController::class . ':ajax');
|
|
// 订阅日志
|
|
$group->get('/subscribe', App\Controllers\Admin\SubLogController::class . ':index');
|
|
$group->post('/subscribe/ajax', App\Controllers\Admin\SubLogController::class . ':ajax');
|
|
// 返利日志
|
|
$group->get('/payback', App\Controllers\Admin\PaybackController::class . ':index');
|
|
$group->post('/payback/ajax', App\Controllers\Admin\PaybackController::class . ':ajax');
|
|
// 用户余额日志
|
|
$group->get('/money', App\Controllers\Admin\MoneyLogController::class . ':index');
|
|
$group->post('/money/ajax', App\Controllers\Admin\MoneyLogController::class . ':ajax');
|
|
// 支付网关日志
|
|
$group->get('/gateway', App\Controllers\Admin\PaylistController::class . ':index');
|
|
$group->post('/gateway/ajax', App\Controllers\Admin\PaylistController::class . ':ajax');
|
|
// 系统日志
|
|
$group->get('/syslog', App\Controllers\Admin\SysLogController::class . ':index');
|
|
$group->get('/syslog/{id:[0-9]+}/view', App\Controllers\Admin\SysLogController::class . ':detail');
|
|
$group->post('/syslog/ajax', App\Controllers\Admin\SysLogController::class . ':ajax');
|
|
// 系统状态
|
|
$group->get('/system', App\Controllers\Admin\SystemController::class . ':index');
|
|
$group->post('/system/check_update', App\Controllers\Admin\SystemController::class . ':checkUpdate');
|
|
// 设置中心
|
|
$group->get('/setting/billing', App\Controllers\Admin\Setting\BillingController::class . ':index');
|
|
$group->post('/setting/billing', App\Controllers\Admin\Setting\BillingController::class . ':save');
|
|
$group->post(
|
|
'/setting/billing/set_stripe_webhook',
|
|
App\Controllers\Admin\Setting\BillingController::class . ':setStripeWebhook'
|
|
);
|
|
$group->get('/setting/captcha', App\Controllers\Admin\Setting\CaptchaController::class . ':index');
|
|
$group->post('/setting/captcha', App\Controllers\Admin\Setting\CaptchaController::class . ':save');
|
|
$group->get('/setting/cron', App\Controllers\Admin\Setting\CronController::class . ':index');
|
|
$group->post('/setting/cron', App\Controllers\Admin\Setting\CronController::class . ':save');
|
|
$group->get('/setting/email', App\Controllers\Admin\Setting\EmailController::class . ':index');
|
|
$group->post('/setting/email', App\Controllers\Admin\Setting\EmailController::class . ':save');
|
|
$group->get('/setting/feature', App\Controllers\Admin\Setting\FeatureController::class . ':index');
|
|
$group->post('/setting/feature', App\Controllers\Admin\Setting\FeatureController::class . ':save');
|
|
$group->get('/setting/im', App\Controllers\Admin\Setting\ImController::class . ':index');
|
|
$group->post('/setting/im', App\Controllers\Admin\Setting\ImController::class . ':save');
|
|
$group->post(
|
|
'/setting/im/reset_webhook_token/{type}',
|
|
App\Controllers\Admin\Setting\ImController::class . ':resetWebhookToken'
|
|
);
|
|
$group->post(
|
|
'/setting/im/set_webhook/{type}',
|
|
App\Controllers\Admin\Setting\ImController::class . ':setWebhook'
|
|
);
|
|
$group->get('/setting/ref', App\Controllers\Admin\Setting\RefController::class . ':index');
|
|
$group->post('/setting/ref', App\Controllers\Admin\Setting\RefController::class . ':save');
|
|
$group->get('/setting/reg', App\Controllers\Admin\Setting\RegController::class . ':index');
|
|
$group->post('/setting/reg', App\Controllers\Admin\Setting\RegController::class . ':save');
|
|
$group->get('/setting/sub', App\Controllers\Admin\Setting\SubController::class . ':index');
|
|
$group->post('/setting/sub', App\Controllers\Admin\Setting\SubController::class . ':save');
|
|
$group->get('/setting/support', App\Controllers\Admin\Setting\SupportController::class . ':index');
|
|
$group->post('/setting/support', App\Controllers\Admin\Setting\SupportController::class . ':save');
|
|
// 设置测试
|
|
$group->post(
|
|
'/setting/test/email',
|
|
App\Controllers\Admin\Setting\EmailController::class . ':testEmail'
|
|
);
|
|
$group->post(
|
|
'/setting/test/telegram',
|
|
App\Controllers\Admin\Setting\ImController::class . ':testTelegram'
|
|
);
|
|
$group->post(
|
|
'/setting/test/discord',
|
|
App\Controllers\Admin\Setting\ImController::class . ':testDiscord'
|
|
);
|
|
$group->post(
|
|
'/setting/test/slack',
|
|
App\Controllers\Admin\Setting\ImController::class . ':testSlack'
|
|
);
|
|
// 礼品卡
|
|
$group->get('/giftcard', App\Controllers\Admin\GiftCardController::class . ':index');
|
|
$group->post('/giftcard', App\Controllers\Admin\GiftCardController::class . ':add');
|
|
$group->post('/giftcard/ajax', App\Controllers\Admin\GiftCardController::class . ':ajax');
|
|
$group->delete('/giftcard/{id:[0-9]+}', App\Controllers\Admin\GiftCardController::class . ':delete');
|
|
// 商品
|
|
$group->get('/product', App\Controllers\Admin\ProductController::class . ':index');
|
|
$group->get('/product/create', App\Controllers\Admin\ProductController::class . ':create');
|
|
$group->post('/product', App\Controllers\Admin\ProductController::class . ':add');
|
|
$group->get('/product/{id:[0-9]+}/edit', App\Controllers\Admin\ProductController::class . ':edit');
|
|
$group->post('/product/{id:[0-9]+}/copy', App\Controllers\Admin\ProductController::class . ':copy');
|
|
$group->put('/product/{id:[0-9]+}', App\Controllers\Admin\ProductController::class . ':update');
|
|
$group->delete('/product/{id:[0-9]+}', App\Controllers\Admin\ProductController::class . ':delete');
|
|
$group->post('/product/ajax', App\Controllers\Admin\ProductController::class . ':ajax');
|
|
// 订单
|
|
$group->get('/order', App\Controllers\Admin\OrderController::class . ':index');
|
|
$group->get('/order/{id:[0-9]+}/view', App\Controllers\Admin\OrderController::class . ':detail');
|
|
$group->post('/order/{id:[0-9]+}/cancel', App\Controllers\Admin\OrderController::class . ':cancel');
|
|
$group->delete('/order/{id:[0-9]+}', App\Controllers\Admin\OrderController::class . ':delete');
|
|
$group->post('/order/ajax', App\Controllers\Admin\OrderController::class . ':ajax');
|
|
// 账单
|
|
$group->get('/invoice', App\Controllers\Admin\InvoiceController::class . ':index');
|
|
$group->get('/invoice/{id:[0-9]+}/view', App\Controllers\Admin\InvoiceController::class . ':detail');
|
|
$group->post('/invoice/{id:[0-9]+}/mark_paid', App\Controllers\Admin\InvoiceController::class . ':markPaid');
|
|
$group->post('/invoice/ajax', App\Controllers\Admin\InvoiceController::class . ':ajax');
|
|
})->add(new Admin());
|
|
// WebAPI
|
|
$app->group('/mod_mu', static function (RouteCollectorProxy $group): void {
|
|
// 节点
|
|
$group->get('/nodes/{id:[0-9]+}/info', App\Controllers\WebAPI\NodeController::class . ':getInfo');
|
|
// 用户
|
|
$group->get('/users', App\Controllers\WebAPI\UserController::class . ':index');
|
|
$group->post('/users/traffic', App\Controllers\WebAPI\UserController::class . ':addTraffic');
|
|
$group->post('/users/aliveip', App\Controllers\WebAPI\UserController::class . ':addAliveIp');
|
|
$group->post('/users/detectlog', App\Controllers\WebAPI\UserController::class . ':addDetectLog');
|
|
// 审计 & 杂七杂八的功能
|
|
$group->get('/func/detect_rules', App\Controllers\WebAPI\FuncController::class . ':getDetectRules');
|
|
$group->get('/func/ping', App\Controllers\WebAPI\FuncController::class . ':ping');
|
|
})->add(new NodeToken());
|
|
|
|
// Admin REST API
|
|
//$app->group('/admin/api/v1', function (RouteCollectorProxy $group): void {
|
|
// $group->post('/{action}', App\Controllers\Api\AdminApiV1Controller::class . ':actionHandler');
|
|
//})->add(new AdminApi());
|
|
|
|
// User REST API
|
|
//$app->group('/user/api/v1', function (RouteCollectorProxy $group): void {
|
|
// $group->post('/{action}', App\Controllers\Api\UserApiV1Controller::class . ':actionHandler');
|
|
//})->add(new UserApi());
|
|
|
|
// WebAPI V2(Aka Node API V1)
|
|
//$app->group('/node/api/v1', function (RouteCollectorProxy $group): void {
|
|
// $group->put('/heartbeat', App\Controllers\Api\NodeApiV1Controller::class . ':getHeartbeat');
|
|
// $group->get('/info', App\Controllers\Api\NodeApiV1Controller::class . ':getInfo');
|
|
// $group->get('/user', App\Controllers\Api\NodeApiV1Controller::class . ':getUser');
|
|
// $group->get('/detect_rule', App\Controllers\Api\NodeApiV1Controller::class . ':getDetectRule');
|
|
// $group->post('/user/traffic', App\Controllers\Api\NodeApiV1Controller::class . ':addUserTraffic');
|
|
// $group->post('/user/online_ip', App\Controllers\Api\NodeApiV1Controller::class . ':addUserOnlineIp');
|
|
// $group->post('/user/detect_log', App\Controllers\Api\NodeApiV1Controller::class . ':addUserDetectLog');
|
|
//})->add(new NodeApi());
|
|
|
|
$app->group('/api/nasa/v1', function (RouteCollectorProxy $group): void {
|
|
$group->get('/node', App\Controllers\Api\Nasa\V1\NodeController::class . ':index');
|
|
$group->get('/node/detail/{id}', App\Controllers\Api\Nasa\V1\NodeController::class . ':detail');
|
|
$group->put('/node/detail/{id}', App\Controllers\Api\Nasa\V1\NodeController::class . ':detailSave');
|
|
$group->delete('/node/detail/{id}', App\Controllers\Api\Nasa\V1\NodeController::class . ':delete');
|
|
$group->get('/node/add', App\Controllers\Api\Nasa\V1\NodeController::class . ':add');
|
|
$group->put('/node/add', App\Controllers\Api\Nasa\V1\NodeController::class . ':addSave');
|
|
$group->get('/node/clone/{id}', App\Controllers\Api\Nasa\V1\NodeController::class . ':clone');
|
|
$group->put('/node/clone/', App\Controllers\Api\Nasa\V1\NodeController::class . ':cloneSave');
|
|
$group->get('/node/hit/{id}/{field}', App\Controllers\Api\Nasa\V1\NodeController::class . ':hit');
|
|
})->add(new VerifyNasaToken());
|
|
|
|
|
|
// Route::prefix('setting')->group(function() {
|
|
// Route::get('nav', [NasaV1SettingNavController::class, 'index']);
|
|
// Route::get('nav/detail/{id}', [NasaV1SettingNavController::class, 'detail']);
|
|
// Route::put('nav/detail/{id}', [NasaV1SettingNavController::class, 'detailSave']);
|
|
// Route::delete('nav/delete/{id}', [NasaV1SettingNavController::class, 'delete']);
|
|
// Route::get('nav/add', [NasaV1SettingNavController::class, 'add']);
|
|
// Route::put('nav/add', [NasaV1SettingNavController::class, 'addSave']);
|
|
// Route::get('nav/clone/{id}', [NasaV1SettingNavController::class, 'clone']);
|
|
// Route::put('nav/clone', [NasaV1SettingNavController::class, 'cloneSave']);
|
|
// Route::get('nav/hit/{id}/{field}', [NasaV1SettingNavController::class, 'hit']);
|
|
// });
|
|
|
|
// $app->group('/api/nasa/v1', function (RouteCollectorProxy $group): void {
|
|
// $group->get('/node', App\Controllers\Nasa\V1\NodeController::class . ':index');
|
|
// })->add(new VerifyNasaToken());
|
|
|
|
// Route::prefix('nasa/v1')->group(function () {
|
|
//
|
|
// Route::prefix('node')->group(function() {
|
|
// Route::get('/', [App\Controllers\Nasa\V1\NodeController::class . ':index');
|
|
// Route::get('/detail/{id}', [NasaV1SettingNavController::class, 'detail']);
|
|
// Route::put('/detail/{id}', [NasaV1SettingNavController::class, 'detailSave']);
|
|
// Route::delete('/delete/{id}', [NasaV1SettingNavController::class, 'delete']);
|
|
// Route::get('/add', [NasaV1SettingNavController::class, 'add']);
|
|
// Route::put('/add', [NasaV1SettingNavController::class, 'addSave']);
|
|
// Route::get('/clone/{id}', [NasaV1SettingNavController::class, 'clone']);
|
|
// Route::put('/clone', [NasaV1SettingNavController::class, 'cloneSave']);
|
|
// Route::get('/hit/{id}/{field}', [NasaV1SettingNavController::class, 'hit']);
|
|
// });
|
|
//
|
|
// })->add(new VerifyNasaToken());
|
|
|
|
|
|
// $app->get('/api/huodong/findbydate/{date}', App\Controllers\Nasa\V1\NodeController::class . ':index');
|
|
};
|