refactor(backend): rename OpenFlare directory to lowercase openflare

This commit is contained in:
ryan
2026-08-30 17:43:23 +08:00
parent 06d5fedbfc
commit c93ff6674f
543 changed files with 819 additions and 819 deletions
+3 -3
View File
@@ -20,8 +20,8 @@ sidebar: false
- 内嵌前端拷贝目标改为 `backend/plugins/drivers/driver_http/dist`,与上游 `//go:embed all:dist` 对齐;发布工作流改为读取 `backend/go.mod`。仓库内 `.gitconfig` 提供 `merge.ours` 驱动,合并上游时保留 OpenFlare 自有路径;Wavelet 的 `build-image.yml` 与 `docker-compose.yml` 已隔离,避免 canary 发布成 wavelet 镜像。
- 后端代码整体迁入 `backend/`,与上游 Wavelet 的仓库布局对齐(Cordis 插件化改造第一阶段),模块名保持 `Wavelet` 以保证上游包路径逐字一致。构建、测试、镜像与发布链路已同步调整,`make build-all` / `make dev` / `make swagger` 等本地命令用法不变;HTTP 接口与控制台行为均无变化。
- 引入上游 Cordis 微内核与平台插件到 `backend/{core,pkg,plugins}`(与上游逐字一致,可用 `scripts/sync-upstream.sh` 重复同步),并新增 `backend/OpenFlare/share/` 承载多插件共享资源(控制消息协议、GeoIP、边缘日志)。此阶段仅落位结构与共享层,尚未改变运行时行为。
- 下游代码按功能职责拆为 `server`/`agent`/`relay`/`flared` 四个插件与 `backend/OpenFlare/share` 共享层;三个边缘守护进程改由 Cordis 内核装配启动(profile `agent`/`relay`/`flared`),`-config` 旗标、默认配置路径、退出码与启动日志保持原样。
- 引入上游 Cordis 微内核与平台插件到 `backend/{core,pkg,plugins}`(与上游逐字一致,可用 `scripts/sync-upstream.sh` 重复同步),并新增 `backend/openflare/share/` 承载多插件共享资源(控制消息协议、GeoIP、边缘日志)。此阶段仅落位结构与共享层,尚未改变运行时行为。
- 下游代码按功能职责拆为 `server`/`agent`/`relay`/`flared` 四个插件与 `backend/openflare/share` 共享层;三个边缘守护进程改由 Cordis 内核装配启动(profile `agent`/`relay`/`flared`),`-config` 旗标、默认配置路径、退出码与启动日志保持原样。
- 控制台 API 改由 Cordis 内核提供服务:`server` 插件以声明式路由注册,HTTP 监听与优雅退出交给内核的 http 驱动。全部 256 条路由(含 20 条带尾部斜杠的历史列表接口)与改造前逐条一致,232 条对外 API 操作无变化。
- 清理与上游 Wavelet 重复的平台实现:响应封装、日志、邮件、链路追踪、HTTP 连接池、内存/磁盘缓存、批量写入等 8 个本地副本删除并改为使用上游能力(约 600 行重复代码消失,接口形状与文档定义完全一致);顺带把磁盘缓存的类型断言健壮性修复回流上游。
@@ -30,7 +30,7 @@ sidebar: false
- 控制面读写系统配置改为走上游管理仓储并同步失效缓存,避免选项/节点/日志库切换写入后 `/api/v1/config/public` 仍返回旧值。
- 已部署库启动时把历史 `goose_db_version` 一次性写入 `w_schema_versions`(`openflare/legacy` 与 `server`),不再重跑 76 条混合迁移;全新安装只创建当前的 `of_*` 业务表。ClickHouse 继续只升级节点访问/可观测相关表,用户访问日志表改由上游负责。
- `make swagger` 重新扫描上游平台插件,对外文档覆盖金标准全部 232 条 path+method(允许超集);`GET /api/v1/config/public` 仍返回扁平键值。
- 用 git merge 接入 Wavelet 上游历史(第一次 merge `wavelet/feat/cordis-alignment`,含 W1–W9);此后以 `git fetch wavelet && git merge wavelet/main` 吸收 `backend/{core,pkg,plugins}`,不再使用 rsync 同步脚本。`frontend/` 与 `backend/OpenFlare/` 仍由本仓库持有。
- 用 git merge 接入 Wavelet 上游历史(第一次 merge `wavelet/feat/cordis-alignment`,含 W1–W9);此后以 `git fetch wavelet && git merge wavelet/main` 吸收 `backend/{core,pkg,plugins}`,不再使用 rsync 同步脚本。`frontend/` 与 `backend/openflare/` 仍由本仓库持有。
## [v3.5.4] - 2026-08-29
### ✨ 新功能
+23 -23
View File
@@ -4645,7 +4645,7 @@
"type": "object",
"properties": {
"data": {
"$ref": "#/definitions/Wavelet_OpenFlare_share_protocol.PagesDeploymentHashResponse"
"$ref": "#/definitions/Wavelet_openflare_share_protocol.PagesDeploymentHashResponse"
}
}
}
@@ -4749,7 +4749,7 @@
"type": "object",
"properties": {
"data": {
"$ref": "#/definitions/Wavelet_OpenFlare_share_protocol.PagesProjectLatestHashResponse"
"$ref": "#/definitions/Wavelet_openflare_share_protocol.PagesProjectLatestHashResponse"
}
}
}
@@ -14967,7 +14967,7 @@
}
},
"definitions": {
"Wavelet_OpenFlare_share_protocol.ActiveConfigMeta": {
"Wavelet_openflare_share_protocol.ActiveConfigMeta": {
"type": "object",
"properties": {
"checksum": {
@@ -14978,27 +14978,27 @@
}
}
},
"Wavelet_OpenFlare_share_protocol.BufferedObservabilityRecord": {
"Wavelet_openflare_share_protocol.BufferedObservabilityRecord": {
"type": "object",
"properties": {
"access_logs": {
"type": "array",
"items": {
"$ref": "#/definitions/Wavelet_OpenFlare_share_protocol.NodeAccessLog"
"$ref": "#/definitions/Wavelet_openflare_share_protocol.NodeAccessLog"
}
},
"captured_at_unix": {
"type": "integer"
},
"edge_health": {
"$ref": "#/definitions/Wavelet_OpenFlare_share_protocol.NodeEdgeHealth"
"$ref": "#/definitions/Wavelet_openflare_share_protocol.NodeEdgeHealth"
},
"host_metrics": {
"$ref": "#/definitions/Wavelet_OpenFlare_share_protocol.NodeMetricSnapshot"
"$ref": "#/definitions/Wavelet_openflare_share_protocol.NodeMetricSnapshot"
}
}
},
"Wavelet_OpenFlare_share_protocol.NodeAccessLog": {
"Wavelet_openflare_share_protocol.NodeAccessLog": {
"type": "object",
"properties": {
"bytes_sent": {
@@ -15037,7 +15037,7 @@
}
}
},
"Wavelet_OpenFlare_share_protocol.NodeEdgeHealth": {
"Wavelet_openflare_share_protocol.NodeEdgeHealth": {
"type": "object",
"properties": {
"captured_at_unix": {
@@ -15054,7 +15054,7 @@
}
}
},
"Wavelet_OpenFlare_share_protocol.NodeHealthEvent": {
"Wavelet_openflare_share_protocol.NodeHealthEvent": {
"type": "object",
"properties": {
"event_type": {
@@ -15077,7 +15077,7 @@
}
}
},
"Wavelet_OpenFlare_share_protocol.NodeMetricSnapshot": {
"Wavelet_openflare_share_protocol.NodeMetricSnapshot": {
"type": "object",
"properties": {
"captured_at_unix": {
@@ -15106,7 +15106,7 @@
}
}
},
"Wavelet_OpenFlare_share_protocol.NodeSystemProfile": {
"Wavelet_openflare_share_protocol.NodeSystemProfile": {
"type": "object",
"properties": {
"architecture": {
@@ -15144,7 +15144,7 @@
}
}
},
"Wavelet_OpenFlare_share_protocol.PagesDeploymentHashResponse": {
"Wavelet_openflare_share_protocol.PagesDeploymentHashResponse": {
"type": "object",
"properties": {
"deployment_id": {
@@ -15155,7 +15155,7 @@
}
}
},
"Wavelet_OpenFlare_share_protocol.PagesProjectLatestHashResponse": {
"Wavelet_openflare_share_protocol.PagesProjectLatestHashResponse": {
"type": "object",
"properties": {
"deployment_id": {
@@ -15178,7 +15178,7 @@
}
}
},
"Wavelet_OpenFlare_share_protocol.WAFIPGroup": {
"Wavelet_openflare_share_protocol.WAFIPGroup": {
"type": "object",
"properties": {
"checksum": {
@@ -15444,20 +15444,20 @@
"access_logs": {
"type": "array",
"items": {
"$ref": "#/definitions/Wavelet_OpenFlare_share_protocol.NodeAccessLog"
"$ref": "#/definitions/Wavelet_openflare_share_protocol.NodeAccessLog"
}
},
"buffered": {
"type": "array",
"items": {
"$ref": "#/definitions/Wavelet_OpenFlare_share_protocol.BufferedObservabilityRecord"
"$ref": "#/definitions/Wavelet_openflare_share_protocol.BufferedObservabilityRecord"
}
},
"current_version": {
"type": "string"
},
"edge_health": {
"$ref": "#/definitions/Wavelet_OpenFlare_share_protocol.NodeEdgeHealth"
"$ref": "#/definitions/Wavelet_openflare_share_protocol.NodeEdgeHealth"
},
"ext_version": {
"type": "string"
@@ -15465,11 +15465,11 @@
"health_events": {
"type": "array",
"items": {
"$ref": "#/definitions/Wavelet_OpenFlare_share_protocol.NodeHealthEvent"
"$ref": "#/definitions/Wavelet_openflare_share_protocol.NodeHealthEvent"
}
},
"host_metrics": {
"$ref": "#/definitions/Wavelet_OpenFlare_share_protocol.NodeMetricSnapshot"
"$ref": "#/definitions/Wavelet_openflare_share_protocol.NodeMetricSnapshot"
},
"ip": {
"type": "string"
@@ -15490,7 +15490,7 @@
"type": "string"
},
"profile": {
"$ref": "#/definitions/Wavelet_OpenFlare_share_protocol.NodeSystemProfile"
"$ref": "#/definitions/Wavelet_openflare_share_protocol.NodeSystemProfile"
},
"schema_version": {
"type": "integer"
@@ -15609,7 +15609,7 @@
"groups": {
"type": "array",
"items": {
"$ref": "#/definitions/Wavelet_OpenFlare_share_protocol.WAFIPGroup"
"$ref": "#/definitions/Wavelet_openflare_share_protocol.WAFIPGroup"
}
}
}
@@ -16546,7 +16546,7 @@
"type": "object",
"properties": {
"active_config": {
"$ref": "#/definitions/Wavelet_OpenFlare_share_protocol.ActiveConfigMeta"
"$ref": "#/definitions/Wavelet_openflare_share_protocol.ActiveConfigMeta"
},
"tunnel_settings": {
"$ref": "#/definitions/protocol.RelaySettings"
+23 -23
View File
@@ -1,26 +1,26 @@
basePath: /
definitions:
Wavelet_OpenFlare_share_protocol.ActiveConfigMeta:
Wavelet_openflare_share_protocol.ActiveConfigMeta:
properties:
checksum:
type: string
version:
type: string
type: object
Wavelet_OpenFlare_share_protocol.BufferedObservabilityRecord:
Wavelet_openflare_share_protocol.BufferedObservabilityRecord:
properties:
access_logs:
items:
$ref: '#/definitions/Wavelet_OpenFlare_share_protocol.NodeAccessLog'
$ref: '#/definitions/Wavelet_openflare_share_protocol.NodeAccessLog'
type: array
captured_at_unix:
type: integer
edge_health:
$ref: '#/definitions/Wavelet_OpenFlare_share_protocol.NodeEdgeHealth'
$ref: '#/definitions/Wavelet_openflare_share_protocol.NodeEdgeHealth'
host_metrics:
$ref: '#/definitions/Wavelet_OpenFlare_share_protocol.NodeMetricSnapshot'
$ref: '#/definitions/Wavelet_openflare_share_protocol.NodeMetricSnapshot'
type: object
Wavelet_OpenFlare_share_protocol.NodeAccessLog:
Wavelet_openflare_share_protocol.NodeAccessLog:
properties:
bytes_sent:
description: body bytes = 已提供数据
@@ -47,7 +47,7 @@ definitions:
user_agent:
type: string
type: object
Wavelet_OpenFlare_share_protocol.NodeEdgeHealth:
Wavelet_openflare_share_protocol.NodeEdgeHealth:
properties:
captured_at_unix:
type: integer
@@ -58,7 +58,7 @@ definitions:
status:
type: string
type: object
Wavelet_OpenFlare_share_protocol.NodeHealthEvent:
Wavelet_openflare_share_protocol.NodeHealthEvent:
properties:
event_type:
type: string
@@ -73,7 +73,7 @@ definitions:
triggered_at_unix:
type: integer
type: object
Wavelet_OpenFlare_share_protocol.NodeMetricSnapshot:
Wavelet_openflare_share_protocol.NodeMetricSnapshot:
properties:
captured_at_unix:
type: integer
@@ -92,7 +92,7 @@ definitions:
storage_used_bytes:
type: integer
type: object
Wavelet_OpenFlare_share_protocol.NodeSystemProfile:
Wavelet_openflare_share_protocol.NodeSystemProfile:
properties:
architecture:
type: string
@@ -117,14 +117,14 @@ definitions:
uptime_seconds:
type: integer
type: object
Wavelet_OpenFlare_share_protocol.PagesDeploymentHashResponse:
Wavelet_openflare_share_protocol.PagesDeploymentHashResponse:
properties:
deployment_id:
type: integer
hash:
type: string
type: object
Wavelet_OpenFlare_share_protocol.PagesProjectLatestHashResponse:
Wavelet_openflare_share_protocol.PagesProjectLatestHashResponse:
properties:
deployment_id:
type: integer
@@ -139,7 +139,7 @@ definitions:
total_size:
type: integer
type: object
Wavelet_OpenFlare_share_protocol.WAFIPGroup:
Wavelet_openflare_share_protocol.WAFIPGroup:
properties:
checksum:
type: string
@@ -314,24 +314,24 @@ definitions:
properties:
access_logs:
items:
$ref: '#/definitions/Wavelet_OpenFlare_share_protocol.NodeAccessLog'
$ref: '#/definitions/Wavelet_openflare_share_protocol.NodeAccessLog'
type: array
buffered:
items:
$ref: '#/definitions/Wavelet_OpenFlare_share_protocol.BufferedObservabilityRecord'
$ref: '#/definitions/Wavelet_openflare_share_protocol.BufferedObservabilityRecord'
type: array
current_version:
type: string
edge_health:
$ref: '#/definitions/Wavelet_OpenFlare_share_protocol.NodeEdgeHealth'
$ref: '#/definitions/Wavelet_openflare_share_protocol.NodeEdgeHealth'
ext_version:
type: string
health_events:
items:
$ref: '#/definitions/Wavelet_OpenFlare_share_protocol.NodeHealthEvent'
$ref: '#/definitions/Wavelet_openflare_share_protocol.NodeHealthEvent'
type: array
host_metrics:
$ref: '#/definitions/Wavelet_OpenFlare_share_protocol.NodeMetricSnapshot'
$ref: '#/definitions/Wavelet_openflare_share_protocol.NodeMetricSnapshot'
ip:
type: string
last_error:
@@ -345,7 +345,7 @@ definitions:
openresty_status:
type: string
profile:
$ref: '#/definitions/Wavelet_OpenFlare_share_protocol.NodeSystemProfile'
$ref: '#/definitions/Wavelet_openflare_share_protocol.NodeSystemProfile'
schema_version:
type: integer
version:
@@ -422,7 +422,7 @@ definitions:
properties:
groups:
items:
$ref: '#/definitions/Wavelet_OpenFlare_share_protocol.WAFIPGroup'
$ref: '#/definitions/Wavelet_openflare_share_protocol.WAFIPGroup'
type: array
type: object
apply_log.CleanupInput:
@@ -1037,7 +1037,7 @@ definitions:
flared.HeartbeatResponse:
properties:
active_config:
$ref: '#/definitions/Wavelet_OpenFlare_share_protocol.ActiveConfigMeta'
$ref: '#/definitions/Wavelet_openflare_share_protocol.ActiveConfigMeta'
tunnel_settings:
$ref: '#/definitions/protocol.RelaySettings'
type: object
@@ -7054,7 +7054,7 @@ paths:
- $ref: '#/definitions/response.Any'
- properties:
data:
$ref: '#/definitions/Wavelet_OpenFlare_share_protocol.PagesDeploymentHashResponse'
$ref: '#/definitions/Wavelet_openflare_share_protocol.PagesDeploymentHashResponse'
type: object
"400":
description: 参数错误
@@ -7117,7 +7117,7 @@ paths:
- $ref: '#/definitions/response.Any'
- properties:
data:
$ref: '#/definitions/Wavelet_OpenFlare_share_protocol.PagesProjectLatestHashResponse'
$ref: '#/definitions/Wavelet_openflare_share_protocol.PagesProjectLatestHashResponse'
type: object
"400":
description: 参数错误