|
@@ -6,7 +6,7 @@ return [
|
|
|
| OpenAPI模块配置
|
|
| OpenAPI模块配置
|
|
|
|--------------------------------------------------------------------------
|
|
|--------------------------------------------------------------------------
|
|
|
|
|
|
|
|
|
|
- | OpenAPI模块的基础配置选项
|
|
|
|
|
|
|
+ | OpenAPI模块的基础配置选项,专注于后台管理功能
|
|
|
|
|
|
|
|
|
|
*/
|
|
*/
|
|
|
|
|
|
|
@@ -18,87 +18,6 @@ return [
|
|
|
'author' => 'System',
|
|
'author' => 'System',
|
|
|
],
|
|
],
|
|
|
|
|
|
|
|
- // API基础配置
|
|
|
|
|
- 'api' => [
|
|
|
|
|
- 'prefix' => 'openapi',
|
|
|
|
|
- 'version' => 'v1',
|
|
|
|
|
- 'base_url' => env('OPENAPI_BASE_URL', 'https://api.example.com'),
|
|
|
|
|
- 'timeout' => 30, // 秒
|
|
|
|
|
- 'max_requests_per_minute' => 1000,
|
|
|
|
|
- ],
|
|
|
|
|
-
|
|
|
|
|
- // 认证配置
|
|
|
|
|
- 'auth' => [
|
|
|
|
|
- 'default_type' => 'API_KEY',
|
|
|
|
|
- 'api_key' => [
|
|
|
|
|
- 'header_name' => 'X-API-Key',
|
|
|
|
|
- 'query_param' => 'api_key',
|
|
|
|
|
- 'length' => 32,
|
|
|
|
|
- 'prefix' => 'ak_',
|
|
|
|
|
- ],
|
|
|
|
|
- 'oauth2' => [
|
|
|
|
|
- 'enabled' => true,
|
|
|
|
|
- 'access_token_expire' => 3600, // 1小时
|
|
|
|
|
- 'refresh_token_expire' => 2592000, // 30天
|
|
|
|
|
- 'auth_code_expire' => 600, // 10分钟
|
|
|
|
|
- ],
|
|
|
|
|
- 'jwt' => [
|
|
|
|
|
- 'enabled' => true,
|
|
|
|
|
- 'secret' => env('OPENAPI_JWT_SECRET'),
|
|
|
|
|
- 'expire' => 3600, // 1小时
|
|
|
|
|
- 'algorithm' => 'HS256',
|
|
|
|
|
- ],
|
|
|
|
|
- 'signature' => [
|
|
|
|
|
- 'enabled' => true,
|
|
|
|
|
- 'algorithm' => 'sha256',
|
|
|
|
|
- 'expire' => 300, // 5分钟
|
|
|
|
|
- 'header_name' => 'X-Signature',
|
|
|
|
|
- 'timestamp_header' => 'X-Timestamp',
|
|
|
|
|
- ],
|
|
|
|
|
- ],
|
|
|
|
|
-
|
|
|
|
|
- // 权限配置
|
|
|
|
|
- 'scopes' => [
|
|
|
|
|
- 'default' => ['USER_READ', 'GAME_READ'],
|
|
|
|
|
- 'basic' => ['USER_READ', 'GAME_READ', 'ITEM_READ', 'TRADE_READ'],
|
|
|
|
|
- 'standard' => ['USER_READ', 'USER_WRITE', 'GAME_READ', 'GAME_WRITE', 'ITEM_READ', 'ITEM_WRITE', 'TRADE_READ', 'TRADE_WRITE'],
|
|
|
|
|
- 'premium' => ['USER_READ', 'USER_WRITE', 'GAME_READ', 'GAME_WRITE', 'ITEM_READ', 'ITEM_WRITE', 'ITEM_TRANSFER', 'FUND_READ', 'TRADE_READ', 'TRADE_WRITE', 'STATS_READ'],
|
|
|
|
|
- 'admin' => ['*'], // 所有权限
|
|
|
|
|
- ],
|
|
|
|
|
-
|
|
|
|
|
- // 限流配置
|
|
|
|
|
- 'rate_limit' => [
|
|
|
|
|
- 'enabled' => true,
|
|
|
|
|
- 'default' => [
|
|
|
|
|
- 'requests_per_minute' => 60,
|
|
|
|
|
- 'requests_per_hour' => 1000,
|
|
|
|
|
- 'requests_per_day' => 10000,
|
|
|
|
|
- ],
|
|
|
|
|
- 'by_scope' => [
|
|
|
|
|
- 'USER_READ' => ['requests_per_minute' => 100],
|
|
|
|
|
- 'USER_WRITE' => ['requests_per_minute' => 30],
|
|
|
|
|
- 'FUND_TRANSFER' => ['requests_per_minute' => 10],
|
|
|
|
|
- 'SYSTEM_ADMIN' => ['requests_per_minute' => 5],
|
|
|
|
|
- ],
|
|
|
|
|
- 'by_app_status' => [
|
|
|
|
|
- 'ACTIVE' => ['requests_per_minute' => 100],
|
|
|
|
|
- 'SUSPENDED' => ['requests_per_minute' => 10],
|
|
|
|
|
- ],
|
|
|
|
|
- ],
|
|
|
|
|
-
|
|
|
|
|
- // IP白名单配置
|
|
|
|
|
- 'ip_whitelist' => [
|
|
|
|
|
- 'enabled' => false,
|
|
|
|
|
- 'default_allowed' => true, // 默认允许所有IP
|
|
|
|
|
- 'whitelist' => [
|
|
|
|
|
- // '127.0.0.1',
|
|
|
|
|
- // '192.168.1.0/24',
|
|
|
|
|
- ],
|
|
|
|
|
- 'blacklist' => [
|
|
|
|
|
- // '10.0.0.1',
|
|
|
|
|
- ],
|
|
|
|
|
- ],
|
|
|
|
|
-
|
|
|
|
|
// 应用配置
|
|
// 应用配置
|
|
|
'app' => [
|
|
'app' => [
|
|
|
'auto_approve' => false, // 是否自动审核通过
|
|
'auto_approve' => false, // 是否自动审核通过
|
|
@@ -128,144 +47,4 @@ return [
|
|
|
'expire_days' => 0, // 0表示永不过期
|
|
'expire_days' => 0, // 0表示永不过期
|
|
|
],
|
|
],
|
|
|
|
|
|
|
|
- // 日志配置
|
|
|
|
|
- 'logging' => [
|
|
|
|
|
- 'enabled' => true,
|
|
|
|
|
- 'log_requests' => true,
|
|
|
|
|
- 'log_responses' => false, // 响应可能包含敏感信息
|
|
|
|
|
- 'log_errors' => true,
|
|
|
|
|
- 'retention_days' => 90,
|
|
|
|
|
- 'channels' => [
|
|
|
|
|
- 'api_calls' => [
|
|
|
|
|
- 'driver' => 'daily',
|
|
|
|
|
- 'path' => storage_path('logs/openapi-calls.log'),
|
|
|
|
|
- 'level' => 'info',
|
|
|
|
|
- 'days' => 30,
|
|
|
|
|
- ],
|
|
|
|
|
- 'api_errors' => [
|
|
|
|
|
- 'driver' => 'daily',
|
|
|
|
|
- 'path' => storage_path('logs/openapi-errors.log'),
|
|
|
|
|
- 'level' => 'error',
|
|
|
|
|
- 'days' => 90,
|
|
|
|
|
- ],
|
|
|
|
|
- ],
|
|
|
|
|
- ],
|
|
|
|
|
-
|
|
|
|
|
- // 监控配置
|
|
|
|
|
- 'monitoring' => [
|
|
|
|
|
- 'enabled' => true,
|
|
|
|
|
- 'metrics' => [
|
|
|
|
|
- 'request_count' => true,
|
|
|
|
|
- 'response_time' => true,
|
|
|
|
|
- 'error_rate' => true,
|
|
|
|
|
- 'rate_limit_hits' => true,
|
|
|
|
|
- ],
|
|
|
|
|
- 'alerts' => [
|
|
|
|
|
- 'error_rate_threshold' => 5, // 百分比
|
|
|
|
|
- 'response_time_threshold' => 2000, // 毫秒
|
|
|
|
|
- 'rate_limit_threshold' => 80, // 百分比
|
|
|
|
|
- ],
|
|
|
|
|
- 'stats_retention_days' => 30,
|
|
|
|
|
- ],
|
|
|
|
|
-
|
|
|
|
|
- // 回调配置
|
|
|
|
|
- 'webhook' => [
|
|
|
|
|
- 'enabled' => true,
|
|
|
|
|
- 'timeout' => 10, // 秒
|
|
|
|
|
- 'retry_times' => 3,
|
|
|
|
|
- 'retry_delay' => 5, // 秒
|
|
|
|
|
- 'events' => [
|
|
|
|
|
- 'app.created',
|
|
|
|
|
- 'app.approved',
|
|
|
|
|
- 'app.suspended',
|
|
|
|
|
- 'api.rate_limit_exceeded',
|
|
|
|
|
- 'api.error',
|
|
|
|
|
- ],
|
|
|
|
|
- ],
|
|
|
|
|
-
|
|
|
|
|
- // 文档配置
|
|
|
|
|
- 'documentation' => [
|
|
|
|
|
- 'enabled' => true,
|
|
|
|
|
- 'title' => '开放API文档',
|
|
|
|
|
- 'description' => '开心农场开放API接口文档',
|
|
|
|
|
- 'version' => '1.0.0',
|
|
|
|
|
- 'contact' => [
|
|
|
|
|
- 'name' => 'API Support',
|
|
|
|
|
- 'email' => 'api@example.com',
|
|
|
|
|
- 'url' => 'https://example.com/support',
|
|
|
|
|
- ],
|
|
|
|
|
- 'license' => [
|
|
|
|
|
- 'name' => 'MIT',
|
|
|
|
|
- 'url' => 'https://opensource.org/licenses/MIT',
|
|
|
|
|
- ],
|
|
|
|
|
- 'servers' => [
|
|
|
|
|
- [
|
|
|
|
|
- 'url' => 'https://api.example.com/v1',
|
|
|
|
|
- 'description' => '生产环境',
|
|
|
|
|
- ],
|
|
|
|
|
- [
|
|
|
|
|
- 'url' => 'https://api-test.example.com/v1',
|
|
|
|
|
- 'description' => '测试环境',
|
|
|
|
|
- ],
|
|
|
|
|
- ],
|
|
|
|
|
- ],
|
|
|
|
|
-
|
|
|
|
|
- // SDK配置
|
|
|
|
|
- 'sdk' => [
|
|
|
|
|
- 'enabled' => true,
|
|
|
|
|
- 'languages' => [
|
|
|
|
|
- 'php' => [
|
|
|
|
|
- 'enabled' => true,
|
|
|
|
|
- 'version' => '1.0.0',
|
|
|
|
|
- 'namespace' => 'OpenAPI\\SDK',
|
|
|
|
|
- ],
|
|
|
|
|
- 'javascript' => [
|
|
|
|
|
- 'enabled' => true,
|
|
|
|
|
- 'version' => '1.0.0',
|
|
|
|
|
- 'package_name' => 'openapi-sdk',
|
|
|
|
|
- ],
|
|
|
|
|
- 'python' => [
|
|
|
|
|
- 'enabled' => true,
|
|
|
|
|
- 'version' => '1.0.0',
|
|
|
|
|
- 'package_name' => 'openapi-sdk',
|
|
|
|
|
- ],
|
|
|
|
|
- ],
|
|
|
|
|
- ],
|
|
|
|
|
-
|
|
|
|
|
- // 安全配置
|
|
|
|
|
- 'security' => [
|
|
|
|
|
- 'encrypt_secrets' => true,
|
|
|
|
|
- 'hash_algorithm' => 'sha256',
|
|
|
|
|
- 'signature_tolerance' => 300, // 签名时间容差(秒)
|
|
|
|
|
- 'max_request_size' => 1024 * 1024, // 1MB
|
|
|
|
|
- 'allowed_origins' => [
|
|
|
|
|
- '*', // 允许所有来源,生产环境应该限制
|
|
|
|
|
- ],
|
|
|
|
|
- 'blocked_user_agents' => [
|
|
|
|
|
- // 'BadBot',
|
|
|
|
|
- ],
|
|
|
|
|
- ],
|
|
|
|
|
-
|
|
|
|
|
- // 缓存配置
|
|
|
|
|
- 'cache' => [
|
|
|
|
|
- 'enabled' => true,
|
|
|
|
|
- 'default_ttl' => 300, // 5分钟
|
|
|
|
|
- 'keys' => [
|
|
|
|
|
- 'app_info' => 'openapi:app:{app_id}',
|
|
|
|
|
- 'api_key' => 'openapi:key:{api_key}',
|
|
|
|
|
- 'rate_limit' => 'openapi:rate:{app_id}:{scope}',
|
|
|
|
|
- 'user_scopes' => 'openapi:scopes:{user_id}',
|
|
|
|
|
- ],
|
|
|
|
|
- ],
|
|
|
|
|
-
|
|
|
|
|
- // 队列配置
|
|
|
|
|
- 'queue' => [
|
|
|
|
|
- 'enabled' => true,
|
|
|
|
|
- 'connection' => 'redis',
|
|
|
|
|
- 'jobs' => [
|
|
|
|
|
- 'webhook_delivery' => 'openapi_webhooks',
|
|
|
|
|
- 'log_processing' => 'openapi_logs',
|
|
|
|
|
- 'stats_calculation' => 'openapi_stats',
|
|
|
|
|
- ],
|
|
|
|
|
- ],
|
|
|
|
|
];
|
|
];
|