openapi.php 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185
  1. <?php
  2. return [
  3. /*
  4. |--------------------------------------------------------------------------
  5. | OpenAPI模块配置
  6. |--------------------------------------------------------------------------
  7. |
  8. | OpenAPI模块的基础配置选项,专注于后台管理功能
  9. |
  10. */
  11. // 模块基础配置
  12. 'module' => [
  13. 'name' => 'OpenAPI',
  14. 'version' => '1.0.0',
  15. 'description' => '对外开放API管理模块',
  16. 'author' => 'System',
  17. ],
  18. // 应用配置
  19. 'app' => [
  20. 'auto_approve' => false, // 是否自动审核通过
  21. 'default_status' => 'PENDING',
  22. 'expire_days' => 365, // 应用过期天数
  23. 'max_apps_per_user' => 10,
  24. 'required_fields' => [
  25. 'name',
  26. 'description',
  27. 'callback_url',
  28. ],
  29. 'optional_fields' => [
  30. 'website',
  31. 'logo',
  32. 'contact_email',
  33. ],
  34. ],
  35. // API密钥配置
  36. 'api_key' => [
  37. 'length' => 32,
  38. 'prefix' => 'ak_',
  39. 'secret_length' => 64,
  40. 'secret_prefix' => 'sk_',
  41. 'auto_generate' => true,
  42. 'allow_regenerate' => true,
  43. 'expire_days' => 0, // 0表示永不过期
  44. ],
  45. // 认证配置
  46. 'auth' => [
  47. // JWT配置
  48. 'jwt' => [
  49. 'secret' => env('OPENAPI_JWT_SECRET', env('APP_KEY')),
  50. 'ttl' => env('OPENAPI_JWT_TTL', 3600), // 1小时
  51. 'refresh_ttl' => env('OPENAPI_JWT_REFRESH_TTL', 86400), // 24小时
  52. 'algorithm' => 'HS256',
  53. ],
  54. // 签名认证配置
  55. 'signature' => [
  56. 'enabled' => env('OPENAPI_SIGNATURE_ENABLED', true),
  57. 'timeout' => env('OPENAPI_SIGNATURE_TIMEOUT', 300), // 5分钟
  58. 'algorithm' => 'sha256',
  59. ],
  60. ],
  61. // 频率限制配置
  62. 'rate_limit' => [
  63. // 默认限制
  64. 'default' => [
  65. 'requests_per_minute' => env('OPENAPI_RATE_LIMIT_PER_MINUTE', 60),
  66. 'requests_per_hour' => env('OPENAPI_RATE_LIMIT_PER_HOUR', 1000),
  67. 'requests_per_day' => env('OPENAPI_RATE_LIMIT_PER_DAY', 10000),
  68. 'requests_per_week' => env('OPENAPI_RATE_LIMIT_PER_WEEK', 50000),
  69. 'requests_per_month' => env('OPENAPI_RATE_LIMIT_PER_MONTH', 200000),
  70. ],
  71. // VIP用户限制
  72. 'vip' => [
  73. 'requests_per_minute' => env('OPENAPI_VIP_RATE_LIMIT_PER_MINUTE', 120),
  74. 'requests_per_hour' => env('OPENAPI_VIP_RATE_LIMIT_PER_HOUR', 5000),
  75. 'requests_per_day' => env('OPENAPI_VIP_RATE_LIMIT_PER_DAY', 50000),
  76. 'requests_per_week' => env('OPENAPI_VIP_RATE_LIMIT_PER_WEEK', 250000),
  77. 'requests_per_month' => env('OPENAPI_VIP_RATE_LIMIT_PER_MONTH', 1000000),
  78. ],
  79. // IP封禁配置
  80. 'ip_ban' => [
  81. 'enabled' => env('OPENAPI_IP_BAN_ENABLED', true),
  82. 'threshold' => env('OPENAPI_IP_BAN_THRESHOLD', 10), // 连续违规次数
  83. 'duration' => env('OPENAPI_IP_BAN_DURATION', 3600), // 封禁时长(秒)
  84. ],
  85. ],
  86. // Webhook配置
  87. 'webhook' => [
  88. 'default_timeout' => env('OPENAPI_WEBHOOK_TIMEOUT', 30),
  89. 'default_retry_count' => env('OPENAPI_WEBHOOK_RETRY_COUNT', 3),
  90. 'max_retry_count' => env('OPENAPI_WEBHOOK_MAX_RETRY_COUNT', 10),
  91. // 重试配置
  92. 'retry' => [
  93. 'enabled' => env('OPENAPI_WEBHOOK_RETRY_ENABLED', true),
  94. 'delay_base' => env('OPENAPI_WEBHOOK_RETRY_DELAY_BASE', 10), // 基础延迟(秒)
  95. 'delay_max' => env('OPENAPI_WEBHOOK_RETRY_DELAY_MAX', 300), // 最大延迟(秒)
  96. 'backoff_multiplier' => env('OPENAPI_WEBHOOK_BACKOFF_MULTIPLIER', 2),
  97. ],
  98. // 支持的事件类型
  99. 'events' => [
  100. 'user.created',
  101. 'user.updated',
  102. 'user.deleted',
  103. 'game.started',
  104. 'game.finished',
  105. 'item.created',
  106. 'item.updated',
  107. 'fund.deposited',
  108. 'fund.withdrawn',
  109. 'trade.created',
  110. 'trade.completed',
  111. 'system.maintenance',
  112. ],
  113. ],
  114. // 日志配置
  115. 'logging' => [
  116. 'enabled' => env('OPENAPI_LOGGING_ENABLED', true),
  117. 'retention_days' => env('OPENAPI_LOG_RETENTION_DAYS', 30),
  118. 'log_request_body' => env('OPENAPI_LOG_REQUEST_BODY', false),
  119. 'log_response_body' => env('OPENAPI_LOG_RESPONSE_BODY', false),
  120. 'max_body_size' => env('OPENAPI_LOG_MAX_BODY_SIZE', 10240), // 10KB
  121. // 敏感字段(不记录到日志中)
  122. 'sensitive_fields' => [
  123. 'password',
  124. 'secret',
  125. 'token',
  126. 'key',
  127. 'authorization',
  128. ],
  129. ],
  130. // 统计配置
  131. 'stats' => [
  132. 'enabled' => env('OPENAPI_STATS_ENABLED', true),
  133. 'retention_days' => env('OPENAPI_STATS_RETENTION_DAYS', 365),
  134. 'realtime' => env('OPENAPI_STATS_REALTIME', false),
  135. 'aggregation_levels' => ['hour', 'day', 'week', 'month'],
  136. // 自动清理配置
  137. 'auto_cleanup' => [
  138. 'enabled' => env('OPENAPI_STATS_AUTO_CLEANUP', true),
  139. 'schedule' => '0 2 * * *', // 每天凌晨2点
  140. ],
  141. ],
  142. // 安全配置
  143. 'security' => [
  144. // IP白名单
  145. 'ip_whitelist' => [
  146. 'enabled' => env('OPENAPI_IP_WHITELIST_ENABLED', false),
  147. 'strict_mode' => env('OPENAPI_IP_WHITELIST_STRICT', false),
  148. ],
  149. // CORS配置
  150. 'cors' => [
  151. 'enabled' => env('OPENAPI_CORS_ENABLED', true),
  152. 'allowed_origins' => env('OPENAPI_CORS_ALLOWED_ORIGINS', '*'),
  153. 'allowed_methods' => env('OPENAPI_CORS_ALLOWED_METHODS', 'GET,POST,PUT,DELETE,OPTIONS'),
  154. 'allowed_headers' => env('OPENAPI_CORS_ALLOWED_HEADERS', 'Content-Type,Authorization,X-Requested-With'),
  155. ],
  156. ],
  157. // 缓存配置
  158. 'cache' => [
  159. 'driver' => env('OPENAPI_CACHE_DRIVER', 'redis'),
  160. 'prefix' => env('OPENAPI_CACHE_PREFIX', 'openapi:'),
  161. 'ttl' => env('OPENAPI_CACHE_TTL', 3600),
  162. 'app_ttl' => env('OPENAPI_CACHE_APP_TTL', 3600),
  163. 'scope_ttl' => env('OPENAPI_CACHE_SCOPE_TTL', 3600),
  164. ],
  165. ];