- 在 AdminIntegrationSiteStoreRequest 和 AdminIntegrationSiteUpdateRequest 中引入 WalletApiUrlRule,确保 wallet_api_url 字段符合 HTTPS 公开域名要求。 - 更新 HttpMainSiteWalletBalanceClient 和 HttpMainSiteWalletGateway,使用 WalletApiUrlSanitizer 进行 URL 规范化与验证,防止 SSRF 攻击。 - 新增测试用例,验证 wallet_api_url 的有效性,确保系统安全性与稳定性。 - 更新 .env.example 文件,添加 LOTTERY_RISK_POOL_USE_REDIS_LUA 配置项以支持 Redis Lua 原子扣减功能。 - 修改 package-lock.json 中的项目名称,确保一致性。 - 在 API 路由中新增 integration/runtime-origins 路由,提供运行时白名单功能。
51 lines
2.1 KiB
PHP
51 lines
2.1 KiB
PHP
<?php
|
||
|
||
use Illuminate\Support\Facades\Route;
|
||
use App\Http\Controllers\Api\V1\HealthController;
|
||
use App\Http\Controllers\Api\V1\Draw\DrawCurrentController;
|
||
use App\Http\Controllers\Api\V1\Draw\DrawResultShowController;
|
||
use App\Http\Controllers\Api\V1\Draw\DrawResultsIndexController;
|
||
use App\Http\Controllers\Api\V1\Currency\CurrencyIndexController;
|
||
use App\Http\Controllers\Api\V1\Jackpot\JackpotSummaryController;
|
||
use App\Http\Controllers\Api\V1\Play\PlayEffectiveCatalogController;
|
||
use App\Http\Controllers\Api\V1\Player\PingController as PlayerPingController;
|
||
use App\Http\Controllers\Api\V1\Setting\SettingIndexController;
|
||
use App\Http\Controllers\Api\V1\Integration\IntegrationRuntimeOriginsController;
|
||
|
||
/**
|
||
* 公开路由(无需登录)。
|
||
*/
|
||
|
||
// 健康检查
|
||
Route::get('health', HealthController::class)->name('api.v1.health');
|
||
|
||
// 币种主数据(公开,只给玩家端展示/金额精度使用)
|
||
Route::get('currencies', CurrencyIndexController::class)->name('api.v1.currencies.index');
|
||
|
||
// 开奖相关(公开)
|
||
Route::get('draw/current', DrawCurrentController::class)->name('api.v1.draw.current');
|
||
Route::get('draw/results', DrawResultsIndexController::class)->name('api.v1.draw.results');
|
||
Route::get('draw/results/{draw_no}', DrawResultShowController::class)
|
||
->where('draw_no', '[0-9]{8}-[0-9]{3}')
|
||
->name('api.v1.draw.results.show');
|
||
|
||
// 奖池水位(公开)
|
||
Route::get('jackpot/summary', JackpotSummaryController::class)->name('api.v1.jackpot.summary');
|
||
|
||
// 玩法目录(公开)
|
||
Route::get('play/effective', PlayEffectiveCatalogController::class)->name('api.v1.play.effective');
|
||
|
||
// 玩家端连通性探测
|
||
Route::prefix('player')
|
||
->name('api.v1.player.')
|
||
->group(function (): void {
|
||
Route::get('ping', PlayerPingController::class)->name('ping');
|
||
});
|
||
|
||
// 系统公共配置(如前端规则等)
|
||
Route::get('settings', SettingIndexController::class)->name('api.v1.settings.index');
|
||
|
||
// iframe 运行时白名单(只公开启用接入站点的 origin,不公开密钥)
|
||
Route::get('integration/runtime-origins', IntegrationRuntimeOriginsController::class)
|
||
->name('api.v1.integration.runtime-origins');
|