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
+1 -1
View File
@@ -1,5 +1,5 @@
* -text * -text
backend/OpenFlare/** merge=ours backend/openflare/** merge=ours
frontend/** merge=ours frontend/** merge=ours
docs/changelog/** merge=ours docs/changelog/** merge=ours
docs/superpowers/** merge=ours docs/superpowers/** merge=ours
+1 -1
View File
@@ -93,4 +93,4 @@ backend/plugins/**/uploads/
backend/plugins/**/dist/ backend/plugins/**/dist/
backend/core/**/dist/ backend/core/**/dist/
backend/pkg/**/uploads/ backend/pkg/**/uploads/
/backend/OpenFlare/plugins/server/upload/filesrv/uploads/ /backend/openflare/plugins/server/upload/filesrv/uploads/
+6 -6
View File
@@ -87,15 +87,15 @@ Strong success criteria let you loop independently. Weak criteria ("make it work
- 触碰框架目录 `backend/{core,pkg,plugins}` 前,先判断能力归属: - 触碰框架目录 `backend/{core,pkg,plugins}` 前,先判断能力归属:
- **通用能力**(与 OpenFlare 业务无关、任何下游都用得上)→ 必须同步在 **Wavelet 上游**完成修改, - **通用能力**(与 OpenFlare 业务无关、任何下游都用得上)→ 必须同步在 **Wavelet 上游**完成修改,
本仓库通过 `git fetch wavelet && git merge wavelet/main` 取得,不得长期持有本地补丁。 本仓库通过 `git fetch wavelet && git merge wavelet/main` 取得,不得长期持有本地补丁。
- **非通用能力**(OpenFlare 业务特有)→ 在自己的插件内(`backend/OpenFlare/plugins/<name>/`)实现, - **非通用能力**(OpenFlare 业务特有)→ 在自己的插件内(`backend/openflare/plugins/<name>/`)实现,
或新建一个下游插件,禁止塞进上游目录。 或新建一个下游插件,禁止塞进上游目录。
- 开发下游功能优先**复用上游已有能力**(`core/contracts`、`backend/plugins/*`、`backend/pkg/*`); - 开发下游功能优先**复用上游已有能力**(`core/contracts`、`backend/plugins/*`、`backend/pkg/*`);
发现上游已提供而下游仍保留本地副本的,删除本地副本改为复用,或把差量回流上游。 发现上游已提供而下游仍保留本地副本的,删除本地副本改为复用,或把差量回流上游。
- 上游暂缺而确属通用能力时,可先在本仓库实现并登记到 `backend/OpenFlare/upstream-patches.md` - 上游暂缺而确属通用能力时,可先在本仓库实现并登记到 `backend/openflare/upstream-patches.md`
(merge 上游后请确认补丁仍在),回流 Wavelet 后删除登记并重新 merge。 (merge 上游后请确认补丁仍在),回流 Wavelet 后删除登记并重新 merge。
- 禁止删除 `frontend/node_modules`。 - 禁止删除 `frontend/node_modules`。
- `backend/pkg/util/` 保持纯净:禁止导入 Gin、GORM、sessions 等 HTTP/Web/DB 框架(会话选项在 `backend/OpenFlare/plugins/server/oauth/session.go`)。 - `backend/pkg/util/` 保持纯净:禁止导入 Gin、GORM、sessions 等 HTTP/Web/DB 框架(会话选项在 `backend/openflare/plugins/server/oauth/session.go`)。
- 测试临时目录只用 `t.TempDir()`,禁止硬编码相对路径写源码树。 - 测试临时目录只用 `t.TempDir()`,禁止硬编码相对路径写源码树。
- HTTP 路由只由插件在 `Apply` 中经 `ctx.Router()` 声明;`router.BuildEngine()` 只挂引擎级中间件与前端 SPA 兜底,禁止进程级初始化(如 `SyncEvents`、`InitLogWriter`)。 - HTTP 路由只由插件在 `Apply` 中经 `ctx.Router()` 声明;`router.BuildEngine()` 只挂引擎级中间件与前端 SPA 兜底,禁止进程级初始化(如 `SyncEvents`、`InitLogWriter`)。
- API 变更后:`make swagger`;开发完成:`make code-check`;提交前:`make format`。 - API 变更后:`make swagger`;开发完成:`make code-check`;提交前:`make format`。
@@ -104,9 +104,9 @@ Strong success criteria let you loop independently. Weak criteria ("make it work
- **分层**:`apps → repository → model`,`repository → infra/persistence`;禁止 `model → repository`。 - **分层**:`apps → repository → model`,`repository → infra/persistence`;禁止 `model → repository`。
- `model`:实体、表名、配置 key、查询 DTO、无 IO 规则。禁止 `db.DB` / Redis / CH;禁止 `import repository`。GORM hook 仅可 mutate 自身字段,禁止在 hook 内再查 DB/缓存。 - `model`:实体、表名、配置 key、查询 DTO、无 IO 规则。禁止 `db.DB` / Redis / CH;禁止 `import repository`。GORM hook 仅可 mutate 自身字段,禁止在 hook 内再查 DB/缓存。
- `repository`:唯一持久化入口。apps/logics 禁止为业务 CRUD 直调 `db.DB`(管理端 SQL 控制台、infra 内部等例外保留)。禁止新增 `model.Get/List/Create/...` 类数据访问 API。 - `repository`:唯一持久化入口。apps/logics 禁止为业务 CRUD 直调 `db.DB`(管理端 SQL 控制台、infra 内部等例外保留)。禁止新增 `model.Get/List/Create/...` 类数据访问 API。
- 日志/分析表(节点访问日志、用户访问日志、可观测时序)走 `backend/OpenFlare/plugins/server/kernel/repository/logstore`,禁止 apps 直连 `repository/analytics` 或 `db.ChConn`/`db.ChDB`。判定与接入步骤见 `logstore` skill。 - 日志/分析表(节点访问日志、用户访问日志、可观测时序)走 `backend/openflare/plugins/server/kernel/repository/logstore`,禁止 apps 直连 `repository/analytics` 或 `db.ChConn`/`db.ChDB`。判定与接入步骤见 `logstore` skill。
- 跨模块集成(任务 Handler、推送事件、域监听、完成钩子)禁止 `init()` 注册;经 `backend/OpenFlare/plugins/server/platform/bootstrap` 在 `backend/cmd` 入口显式装配。 - 跨模块集成(任务 Handler、推送事件、域监听、完成钩子)禁止 `init()` 注册;经 `backend/openflare/plugins/server/platform/bootstrap` 在 `backend/cmd` 入口显式装配。
- 核心业务(如 `oauth`、`user`)禁止直接 import push/custom_events;经 `backend/OpenFlare/plugins/server/listener` 发域事件,push 在 bootstrap 订阅。 - 核心业务(如 `oauth`、`user`)禁止直接 import push/custom_events;经 `backend/openflare/plugins/server/listener` 发域事件,push 在 bootstrap 订阅。
- 依赖任务/推送注册的测试须显式 `bootstrap.RegisterTasks()` / `RegisterPushDomainEvents()` 等,不依赖 `init()`。 - 依赖任务/推送注册的测试须显式 `bootstrap.RegisterTasks()` / `RegisterPushDomainEvents()` 等,不依赖 `init()`。
- API 错误必须 `response.Abort*` + `ErrorHandlerMiddleware`;禁止 Handler 直接 `c.JSON(..., response.Err(...))` 或用 HTTP 200 表示失败。 - API 错误必须 `response.Abort*` + `ErrorHandlerMiddleware`;禁止 Handler 直接 `c.JSON(..., response.Err(...))` 或用 HTTP 200 表示失败。
+1 -1
View File
@@ -22,7 +22,7 @@
## 合并上游 ## 合并上游
`.gitattributes` 对 `backend/OpenFlare/`、`frontend/` 等路径使用 `merge=ours`。该驱动不会自动生效,请在仓库根目录执行一次: `.gitattributes` 对 `backend/openflare/`、`frontend/` 等路径使用 `merge=ours`。该驱动不会自动生效,请在仓库根目录执行一次:
```bash ```bash
git config include.path ../.gitconfig git config include.path ../.gitconfig
+4 -4
View File
@@ -41,7 +41,7 @@ build-embedded:
code-check: code-check:
@echo "==> Architecture guards..." @echo "==> Architecture guards..."
@command -v rg >/dev/null 2>&1 || { echo 'error: rg (ripgrep) is required for architecture guards' >&2; exit 1; } @command -v rg >/dev/null 2>&1 || { echo 'error: rg (ripgrep) is required for architecture guards' >&2; exit 1; }
@if rg -n 'db\.DB\(|db\.Redis' backend/OpenFlare/plugins/server/model --glob '*.go' -g '!*_test.go' ; then \ @if rg -n 'db\.DB\(|db\.Redis' backend/openflare/plugins/server/kernel/model --glob '*.go' -g '!*_test.go' ; then \
echo 'error: internal/model must not access db.DB or db.Redis (non-test code)' >&2; \ echo 'error: internal/model must not access db.DB or db.Redis (non-test code)' >&2; \
exit 1; \ exit 1; \
fi fi
@@ -58,21 +58,21 @@ build-backend:
build-agent: build-agent:
@echo "==> Building agent version=$(VERSION)..." @echo "==> Building agent version=$(VERSION)..."
cd backend && go build \ cd backend && go build \
-ldflags "-s -w -X '$(MODULE)/OpenFlare/plugins/agent/config.Version=$(VERSION)'" \ -ldflags "-s -w -X '$(MODULE)/openflare/plugins/agent/config.Version=$(VERSION)'" \
-o ../bin/openflare-agent \ -o ../bin/openflare-agent \
cmd/agent/main.go cmd/agent/main.go
build-relay: build-relay:
@echo "==> Building relay version=$(VERSION)..." @echo "==> Building relay version=$(VERSION)..."
cd backend && go build \ cd backend && go build \
-ldflags "-s -w -X '$(MODULE)/OpenFlare/plugins/relay/config.Version=$(VERSION)'" \ -ldflags "-s -w -X '$(MODULE)/openflare/plugins/relay/config.Version=$(VERSION)'" \
-o ../bin/openflare-relay \ -o ../bin/openflare-relay \
cmd/relay/main.go cmd/relay/main.go
build-flared: build-flared:
@echo "==> Building flared version=$(VERSION)..." @echo "==> Building flared version=$(VERSION)..."
cd backend && go build \ cd backend && go build \
-ldflags "-s -w -X '$(MODULE)/OpenFlare/plugins/flared/config.Version=$(VERSION)'" \ -ldflags "-s -w -X '$(MODULE)/openflare/plugins/flared/config.Version=$(VERSION)'" \
-o ../bin/flared \ -o ../bin/flared \
cmd/flared/main.go cmd/flared/main.go
+2 -2
View File
@@ -10,9 +10,9 @@ import (
"os" "os"
"time" "time"
agentplugin "Wavelet/OpenFlare/plugins/agent"
"Wavelet/OpenFlare/plugins/agent/logging"
"Wavelet/core" "Wavelet/core"
agentplugin "Wavelet/openflare/plugins/agent"
"Wavelet/openflare/plugins/agent/logging"
) )
// shutdownTimeout 为 openresty 收敛与在途配置同步预留的退出窗口。 // shutdownTimeout 为 openresty 收敛与在途配置同步预留的退出窗口。
+2 -2
View File
@@ -4,10 +4,10 @@
package cmd package cmd
import ( import (
ofserver "Wavelet/OpenFlare/plugins/server"
"Wavelet/OpenFlare/plugins/server/migrate"
"Wavelet/core" "Wavelet/core"
"Wavelet/core/contracts" "Wavelet/core/contracts"
ofserver "Wavelet/openflare/plugins/server"
"Wavelet/openflare/plugins/server/migrate"
"Wavelet/plugins/domain/admin" "Wavelet/plugins/domain/admin"
"Wavelet/plugins/domain/auth" "Wavelet/plugins/domain/auth"
"Wavelet/plugins/domain/cap" "Wavelet/plugins/domain/cap"
+2 -2
View File
@@ -10,9 +10,9 @@ import (
"os" "os"
"time" "time"
flaredplugin "Wavelet/OpenFlare/plugins/flared"
edgelogging "Wavelet/OpenFlare/share/edge/logging"
"Wavelet/core" "Wavelet/core"
flaredplugin "Wavelet/openflare/plugins/flared"
edgelogging "Wavelet/openflare/share/edge/logging"
) )
// shutdownTimeout 为 frpc 子进程收敛预留的退出窗口。 // shutdownTimeout 为 frpc 子进程收敛预留的退出窗口。
+2 -2
View File
@@ -10,9 +10,9 @@ import (
"os" "os"
"time" "time"
relayplugin "Wavelet/OpenFlare/plugins/relay"
edgelogging "Wavelet/OpenFlare/share/edge/logging"
"Wavelet/core" "Wavelet/core"
relayplugin "Wavelet/openflare/plugins/relay"
edgelogging "Wavelet/openflare/share/edge/logging"
) )
// shutdownTimeout 为 frps 子进程收敛预留的退出窗口。 // shutdownTimeout 为 frps 子进程收敛预留的退出窗口。
+23 -23
View File
@@ -4652,7 +4652,7 @@ const docTemplate = `{
"type": "object", "type": "object",
"properties": { "properties": {
"data": { "data": {
"$ref": "#/definitions/Wavelet_OpenFlare_share_protocol.PagesDeploymentHashResponse" "$ref": "#/definitions/Wavelet_openflare_share_protocol.PagesDeploymentHashResponse"
} }
} }
} }
@@ -4756,7 +4756,7 @@ const docTemplate = `{
"type": "object", "type": "object",
"properties": { "properties": {
"data": { "data": {
"$ref": "#/definitions/Wavelet_OpenFlare_share_protocol.PagesProjectLatestHashResponse" "$ref": "#/definitions/Wavelet_openflare_share_protocol.PagesProjectLatestHashResponse"
} }
} }
} }
@@ -14974,7 +14974,7 @@ const docTemplate = `{
} }
}, },
"definitions": { "definitions": {
"Wavelet_OpenFlare_share_protocol.ActiveConfigMeta": { "Wavelet_openflare_share_protocol.ActiveConfigMeta": {
"type": "object", "type": "object",
"properties": { "properties": {
"checksum": { "checksum": {
@@ -14985,27 +14985,27 @@ const docTemplate = `{
} }
} }
}, },
"Wavelet_OpenFlare_share_protocol.BufferedObservabilityRecord": { "Wavelet_openflare_share_protocol.BufferedObservabilityRecord": {
"type": "object", "type": "object",
"properties": { "properties": {
"access_logs": { "access_logs": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/definitions/Wavelet_OpenFlare_share_protocol.NodeAccessLog" "$ref": "#/definitions/Wavelet_openflare_share_protocol.NodeAccessLog"
} }
}, },
"captured_at_unix": { "captured_at_unix": {
"type": "integer" "type": "integer"
}, },
"edge_health": { "edge_health": {
"$ref": "#/definitions/Wavelet_OpenFlare_share_protocol.NodeEdgeHealth" "$ref": "#/definitions/Wavelet_openflare_share_protocol.NodeEdgeHealth"
}, },
"host_metrics": { "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", "type": "object",
"properties": { "properties": {
"bytes_sent": { "bytes_sent": {
@@ -15044,7 +15044,7 @@ const docTemplate = `{
} }
} }
}, },
"Wavelet_OpenFlare_share_protocol.NodeEdgeHealth": { "Wavelet_openflare_share_protocol.NodeEdgeHealth": {
"type": "object", "type": "object",
"properties": { "properties": {
"captured_at_unix": { "captured_at_unix": {
@@ -15061,7 +15061,7 @@ const docTemplate = `{
} }
} }
}, },
"Wavelet_OpenFlare_share_protocol.NodeHealthEvent": { "Wavelet_openflare_share_protocol.NodeHealthEvent": {
"type": "object", "type": "object",
"properties": { "properties": {
"event_type": { "event_type": {
@@ -15084,7 +15084,7 @@ const docTemplate = `{
} }
} }
}, },
"Wavelet_OpenFlare_share_protocol.NodeMetricSnapshot": { "Wavelet_openflare_share_protocol.NodeMetricSnapshot": {
"type": "object", "type": "object",
"properties": { "properties": {
"captured_at_unix": { "captured_at_unix": {
@@ -15113,7 +15113,7 @@ const docTemplate = `{
} }
} }
}, },
"Wavelet_OpenFlare_share_protocol.NodeSystemProfile": { "Wavelet_openflare_share_protocol.NodeSystemProfile": {
"type": "object", "type": "object",
"properties": { "properties": {
"architecture": { "architecture": {
@@ -15151,7 +15151,7 @@ const docTemplate = `{
} }
} }
}, },
"Wavelet_OpenFlare_share_protocol.PagesDeploymentHashResponse": { "Wavelet_openflare_share_protocol.PagesDeploymentHashResponse": {
"type": "object", "type": "object",
"properties": { "properties": {
"deployment_id": { "deployment_id": {
@@ -15162,7 +15162,7 @@ const docTemplate = `{
} }
} }
}, },
"Wavelet_OpenFlare_share_protocol.PagesProjectLatestHashResponse": { "Wavelet_openflare_share_protocol.PagesProjectLatestHashResponse": {
"type": "object", "type": "object",
"properties": { "properties": {
"deployment_id": { "deployment_id": {
@@ -15185,7 +15185,7 @@ const docTemplate = `{
} }
} }
}, },
"Wavelet_OpenFlare_share_protocol.WAFIPGroup": { "Wavelet_openflare_share_protocol.WAFIPGroup": {
"type": "object", "type": "object",
"properties": { "properties": {
"checksum": { "checksum": {
@@ -15451,20 +15451,20 @@ const docTemplate = `{
"access_logs": { "access_logs": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/definitions/Wavelet_OpenFlare_share_protocol.NodeAccessLog" "$ref": "#/definitions/Wavelet_openflare_share_protocol.NodeAccessLog"
} }
}, },
"buffered": { "buffered": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/definitions/Wavelet_OpenFlare_share_protocol.BufferedObservabilityRecord" "$ref": "#/definitions/Wavelet_openflare_share_protocol.BufferedObservabilityRecord"
} }
}, },
"current_version": { "current_version": {
"type": "string" "type": "string"
}, },
"edge_health": { "edge_health": {
"$ref": "#/definitions/Wavelet_OpenFlare_share_protocol.NodeEdgeHealth" "$ref": "#/definitions/Wavelet_openflare_share_protocol.NodeEdgeHealth"
}, },
"ext_version": { "ext_version": {
"type": "string" "type": "string"
@@ -15472,11 +15472,11 @@ const docTemplate = `{
"health_events": { "health_events": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/definitions/Wavelet_OpenFlare_share_protocol.NodeHealthEvent" "$ref": "#/definitions/Wavelet_openflare_share_protocol.NodeHealthEvent"
} }
}, },
"host_metrics": { "host_metrics": {
"$ref": "#/definitions/Wavelet_OpenFlare_share_protocol.NodeMetricSnapshot" "$ref": "#/definitions/Wavelet_openflare_share_protocol.NodeMetricSnapshot"
}, },
"ip": { "ip": {
"type": "string" "type": "string"
@@ -15497,7 +15497,7 @@ const docTemplate = `{
"type": "string" "type": "string"
}, },
"profile": { "profile": {
"$ref": "#/definitions/Wavelet_OpenFlare_share_protocol.NodeSystemProfile" "$ref": "#/definitions/Wavelet_openflare_share_protocol.NodeSystemProfile"
}, },
"schema_version": { "schema_version": {
"type": "integer" "type": "integer"
@@ -15616,7 +15616,7 @@ const docTemplate = `{
"groups": { "groups": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/definitions/Wavelet_OpenFlare_share_protocol.WAFIPGroup" "$ref": "#/definitions/Wavelet_openflare_share_protocol.WAFIPGroup"
} }
} }
} }
@@ -16553,7 +16553,7 @@ const docTemplate = `{
"type": "object", "type": "object",
"properties": { "properties": {
"active_config": { "active_config": {
"$ref": "#/definitions/Wavelet_OpenFlare_share_protocol.ActiveConfigMeta" "$ref": "#/definitions/Wavelet_openflare_share_protocol.ActiveConfigMeta"
}, },
"tunnel_settings": { "tunnel_settings": {
"$ref": "#/definitions/protocol.RelaySettings" "$ref": "#/definitions/protocol.RelaySettings"
+23 -23
View File
@@ -4645,7 +4645,7 @@
"type": "object", "type": "object",
"properties": { "properties": {
"data": { "data": {
"$ref": "#/definitions/Wavelet_OpenFlare_share_protocol.PagesDeploymentHashResponse" "$ref": "#/definitions/Wavelet_openflare_share_protocol.PagesDeploymentHashResponse"
} }
} }
} }
@@ -4749,7 +4749,7 @@
"type": "object", "type": "object",
"properties": { "properties": {
"data": { "data": {
"$ref": "#/definitions/Wavelet_OpenFlare_share_protocol.PagesProjectLatestHashResponse" "$ref": "#/definitions/Wavelet_openflare_share_protocol.PagesProjectLatestHashResponse"
} }
} }
} }
@@ -14967,7 +14967,7 @@
} }
}, },
"definitions": { "definitions": {
"Wavelet_OpenFlare_share_protocol.ActiveConfigMeta": { "Wavelet_openflare_share_protocol.ActiveConfigMeta": {
"type": "object", "type": "object",
"properties": { "properties": {
"checksum": { "checksum": {
@@ -14978,27 +14978,27 @@
} }
} }
}, },
"Wavelet_OpenFlare_share_protocol.BufferedObservabilityRecord": { "Wavelet_openflare_share_protocol.BufferedObservabilityRecord": {
"type": "object", "type": "object",
"properties": { "properties": {
"access_logs": { "access_logs": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/definitions/Wavelet_OpenFlare_share_protocol.NodeAccessLog" "$ref": "#/definitions/Wavelet_openflare_share_protocol.NodeAccessLog"
} }
}, },
"captured_at_unix": { "captured_at_unix": {
"type": "integer" "type": "integer"
}, },
"edge_health": { "edge_health": {
"$ref": "#/definitions/Wavelet_OpenFlare_share_protocol.NodeEdgeHealth" "$ref": "#/definitions/Wavelet_openflare_share_protocol.NodeEdgeHealth"
}, },
"host_metrics": { "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", "type": "object",
"properties": { "properties": {
"bytes_sent": { "bytes_sent": {
@@ -15037,7 +15037,7 @@
} }
} }
}, },
"Wavelet_OpenFlare_share_protocol.NodeEdgeHealth": { "Wavelet_openflare_share_protocol.NodeEdgeHealth": {
"type": "object", "type": "object",
"properties": { "properties": {
"captured_at_unix": { "captured_at_unix": {
@@ -15054,7 +15054,7 @@
} }
} }
}, },
"Wavelet_OpenFlare_share_protocol.NodeHealthEvent": { "Wavelet_openflare_share_protocol.NodeHealthEvent": {
"type": "object", "type": "object",
"properties": { "properties": {
"event_type": { "event_type": {
@@ -15077,7 +15077,7 @@
} }
} }
}, },
"Wavelet_OpenFlare_share_protocol.NodeMetricSnapshot": { "Wavelet_openflare_share_protocol.NodeMetricSnapshot": {
"type": "object", "type": "object",
"properties": { "properties": {
"captured_at_unix": { "captured_at_unix": {
@@ -15106,7 +15106,7 @@
} }
} }
}, },
"Wavelet_OpenFlare_share_protocol.NodeSystemProfile": { "Wavelet_openflare_share_protocol.NodeSystemProfile": {
"type": "object", "type": "object",
"properties": { "properties": {
"architecture": { "architecture": {
@@ -15144,7 +15144,7 @@
} }
} }
}, },
"Wavelet_OpenFlare_share_protocol.PagesDeploymentHashResponse": { "Wavelet_openflare_share_protocol.PagesDeploymentHashResponse": {
"type": "object", "type": "object",
"properties": { "properties": {
"deployment_id": { "deployment_id": {
@@ -15155,7 +15155,7 @@
} }
} }
}, },
"Wavelet_OpenFlare_share_protocol.PagesProjectLatestHashResponse": { "Wavelet_openflare_share_protocol.PagesProjectLatestHashResponse": {
"type": "object", "type": "object",
"properties": { "properties": {
"deployment_id": { "deployment_id": {
@@ -15178,7 +15178,7 @@
} }
} }
}, },
"Wavelet_OpenFlare_share_protocol.WAFIPGroup": { "Wavelet_openflare_share_protocol.WAFIPGroup": {
"type": "object", "type": "object",
"properties": { "properties": {
"checksum": { "checksum": {
@@ -15444,20 +15444,20 @@
"access_logs": { "access_logs": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/definitions/Wavelet_OpenFlare_share_protocol.NodeAccessLog" "$ref": "#/definitions/Wavelet_openflare_share_protocol.NodeAccessLog"
} }
}, },
"buffered": { "buffered": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/definitions/Wavelet_OpenFlare_share_protocol.BufferedObservabilityRecord" "$ref": "#/definitions/Wavelet_openflare_share_protocol.BufferedObservabilityRecord"
} }
}, },
"current_version": { "current_version": {
"type": "string" "type": "string"
}, },
"edge_health": { "edge_health": {
"$ref": "#/definitions/Wavelet_OpenFlare_share_protocol.NodeEdgeHealth" "$ref": "#/definitions/Wavelet_openflare_share_protocol.NodeEdgeHealth"
}, },
"ext_version": { "ext_version": {
"type": "string" "type": "string"
@@ -15465,11 +15465,11 @@
"health_events": { "health_events": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/definitions/Wavelet_OpenFlare_share_protocol.NodeHealthEvent" "$ref": "#/definitions/Wavelet_openflare_share_protocol.NodeHealthEvent"
} }
}, },
"host_metrics": { "host_metrics": {
"$ref": "#/definitions/Wavelet_OpenFlare_share_protocol.NodeMetricSnapshot" "$ref": "#/definitions/Wavelet_openflare_share_protocol.NodeMetricSnapshot"
}, },
"ip": { "ip": {
"type": "string" "type": "string"
@@ -15490,7 +15490,7 @@
"type": "string" "type": "string"
}, },
"profile": { "profile": {
"$ref": "#/definitions/Wavelet_OpenFlare_share_protocol.NodeSystemProfile" "$ref": "#/definitions/Wavelet_openflare_share_protocol.NodeSystemProfile"
}, },
"schema_version": { "schema_version": {
"type": "integer" "type": "integer"
@@ -15609,7 +15609,7 @@
"groups": { "groups": {
"type": "array", "type": "array",
"items": { "items": {
"$ref": "#/definitions/Wavelet_OpenFlare_share_protocol.WAFIPGroup" "$ref": "#/definitions/Wavelet_openflare_share_protocol.WAFIPGroup"
} }
} }
} }
@@ -16546,7 +16546,7 @@
"type": "object", "type": "object",
"properties": { "properties": {
"active_config": { "active_config": {
"$ref": "#/definitions/Wavelet_OpenFlare_share_protocol.ActiveConfigMeta" "$ref": "#/definitions/Wavelet_openflare_share_protocol.ActiveConfigMeta"
}, },
"tunnel_settings": { "tunnel_settings": {
"$ref": "#/definitions/protocol.RelaySettings" "$ref": "#/definitions/protocol.RelaySettings"
+23 -23
View File
@@ -1,26 +1,26 @@
basePath: / basePath: /
definitions: definitions:
Wavelet_OpenFlare_share_protocol.ActiveConfigMeta: Wavelet_openflare_share_protocol.ActiveConfigMeta:
properties: properties:
checksum: checksum:
type: string type: string
version: version:
type: string type: string
type: object type: object
Wavelet_OpenFlare_share_protocol.BufferedObservabilityRecord: Wavelet_openflare_share_protocol.BufferedObservabilityRecord:
properties: properties:
access_logs: access_logs:
items: items:
$ref: '#/definitions/Wavelet_OpenFlare_share_protocol.NodeAccessLog' $ref: '#/definitions/Wavelet_openflare_share_protocol.NodeAccessLog'
type: array type: array
captured_at_unix: captured_at_unix:
type: integer type: integer
edge_health: edge_health:
$ref: '#/definitions/Wavelet_OpenFlare_share_protocol.NodeEdgeHealth' $ref: '#/definitions/Wavelet_openflare_share_protocol.NodeEdgeHealth'
host_metrics: host_metrics:
$ref: '#/definitions/Wavelet_OpenFlare_share_protocol.NodeMetricSnapshot' $ref: '#/definitions/Wavelet_openflare_share_protocol.NodeMetricSnapshot'
type: object type: object
Wavelet_OpenFlare_share_protocol.NodeAccessLog: Wavelet_openflare_share_protocol.NodeAccessLog:
properties: properties:
bytes_sent: bytes_sent:
description: body bytes = 已提供数据 description: body bytes = 已提供数据
@@ -47,7 +47,7 @@ definitions:
user_agent: user_agent:
type: string type: string
type: object type: object
Wavelet_OpenFlare_share_protocol.NodeEdgeHealth: Wavelet_openflare_share_protocol.NodeEdgeHealth:
properties: properties:
captured_at_unix: captured_at_unix:
type: integer type: integer
@@ -58,7 +58,7 @@ definitions:
status: status:
type: string type: string
type: object type: object
Wavelet_OpenFlare_share_protocol.NodeHealthEvent: Wavelet_openflare_share_protocol.NodeHealthEvent:
properties: properties:
event_type: event_type:
type: string type: string
@@ -73,7 +73,7 @@ definitions:
triggered_at_unix: triggered_at_unix:
type: integer type: integer
type: object type: object
Wavelet_OpenFlare_share_protocol.NodeMetricSnapshot: Wavelet_openflare_share_protocol.NodeMetricSnapshot:
properties: properties:
captured_at_unix: captured_at_unix:
type: integer type: integer
@@ -92,7 +92,7 @@ definitions:
storage_used_bytes: storage_used_bytes:
type: integer type: integer
type: object type: object
Wavelet_OpenFlare_share_protocol.NodeSystemProfile: Wavelet_openflare_share_protocol.NodeSystemProfile:
properties: properties:
architecture: architecture:
type: string type: string
@@ -117,14 +117,14 @@ definitions:
uptime_seconds: uptime_seconds:
type: integer type: integer
type: object type: object
Wavelet_OpenFlare_share_protocol.PagesDeploymentHashResponse: Wavelet_openflare_share_protocol.PagesDeploymentHashResponse:
properties: properties:
deployment_id: deployment_id:
type: integer type: integer
hash: hash:
type: string type: string
type: object type: object
Wavelet_OpenFlare_share_protocol.PagesProjectLatestHashResponse: Wavelet_openflare_share_protocol.PagesProjectLatestHashResponse:
properties: properties:
deployment_id: deployment_id:
type: integer type: integer
@@ -139,7 +139,7 @@ definitions:
total_size: total_size:
type: integer type: integer
type: object type: object
Wavelet_OpenFlare_share_protocol.WAFIPGroup: Wavelet_openflare_share_protocol.WAFIPGroup:
properties: properties:
checksum: checksum:
type: string type: string
@@ -314,24 +314,24 @@ definitions:
properties: properties:
access_logs: access_logs:
items: items:
$ref: '#/definitions/Wavelet_OpenFlare_share_protocol.NodeAccessLog' $ref: '#/definitions/Wavelet_openflare_share_protocol.NodeAccessLog'
type: array type: array
buffered: buffered:
items: items:
$ref: '#/definitions/Wavelet_OpenFlare_share_protocol.BufferedObservabilityRecord' $ref: '#/definitions/Wavelet_openflare_share_protocol.BufferedObservabilityRecord'
type: array type: array
current_version: current_version:
type: string type: string
edge_health: edge_health:
$ref: '#/definitions/Wavelet_OpenFlare_share_protocol.NodeEdgeHealth' $ref: '#/definitions/Wavelet_openflare_share_protocol.NodeEdgeHealth'
ext_version: ext_version:
type: string type: string
health_events: health_events:
items: items:
$ref: '#/definitions/Wavelet_OpenFlare_share_protocol.NodeHealthEvent' $ref: '#/definitions/Wavelet_openflare_share_protocol.NodeHealthEvent'
type: array type: array
host_metrics: host_metrics:
$ref: '#/definitions/Wavelet_OpenFlare_share_protocol.NodeMetricSnapshot' $ref: '#/definitions/Wavelet_openflare_share_protocol.NodeMetricSnapshot'
ip: ip:
type: string type: string
last_error: last_error:
@@ -345,7 +345,7 @@ definitions:
openresty_status: openresty_status:
type: string type: string
profile: profile:
$ref: '#/definitions/Wavelet_OpenFlare_share_protocol.NodeSystemProfile' $ref: '#/definitions/Wavelet_openflare_share_protocol.NodeSystemProfile'
schema_version: schema_version:
type: integer type: integer
version: version:
@@ -422,7 +422,7 @@ definitions:
properties: properties:
groups: groups:
items: items:
$ref: '#/definitions/Wavelet_OpenFlare_share_protocol.WAFIPGroup' $ref: '#/definitions/Wavelet_openflare_share_protocol.WAFIPGroup'
type: array type: array
type: object type: object
apply_log.CleanupInput: apply_log.CleanupInput:
@@ -1037,7 +1037,7 @@ definitions:
flared.HeartbeatResponse: flared.HeartbeatResponse:
properties: properties:
active_config: active_config:
$ref: '#/definitions/Wavelet_OpenFlare_share_protocol.ActiveConfigMeta' $ref: '#/definitions/Wavelet_openflare_share_protocol.ActiveConfigMeta'
tunnel_settings: tunnel_settings:
$ref: '#/definitions/protocol.RelaySettings' $ref: '#/definitions/protocol.RelaySettings'
type: object type: object
@@ -7054,7 +7054,7 @@ paths:
- $ref: '#/definitions/response.Any' - $ref: '#/definitions/response.Any'
- properties: - properties:
data: data:
$ref: '#/definitions/Wavelet_OpenFlare_share_protocol.PagesDeploymentHashResponse' $ref: '#/definitions/Wavelet_openflare_share_protocol.PagesDeploymentHashResponse'
type: object type: object
"400": "400":
description: 参数错误 description: 参数错误
@@ -7117,7 +7117,7 @@ paths:
- $ref: '#/definitions/response.Any' - $ref: '#/definitions/response.Any'
- properties: - properties:
data: data:
$ref: '#/definitions/Wavelet_OpenFlare_share_protocol.PagesProjectLatestHashResponse' $ref: '#/definitions/Wavelet_openflare_share_protocol.PagesProjectLatestHashResponse'
type: object type: object
"400": "400":
description: 参数错误 description: 参数错误
@@ -10,7 +10,7 @@
以启用 `.gitattributes` 的 `merge=ours`。 以启用 `.gitattributes` 的 `merge=ours`。
``` ```
backend/OpenFlare/ backend/openflare/
├── plugins/ ├── plugins/
│ ├── server/ # 控制面插件:站点/区域/Cloudflare/Pages/WAF/节点/回源/健康/配置版本 │ ├── server/ # 控制面插件:站点/区域/Cloudflare/Pages/WAF/节点/回源/健康/配置版本
│ │ ├── openflare/ admin/ oauth/ user/ upload/ cap/ config/ health/ # 业务域 │ │ ├── openflare/ admin/ oauth/ user/ upload/ cap/ config/ health/ # 业务域
@@ -31,7 +31,7 @@ api/worker/schedule/all profile 入口,`cmd/{agent,relay,flared}/main.go` 为
1. `plugins/<A>` 与 `plugins/<B>` 之间禁止互相 import;需要协作时走 `core/contracts` 1. `plugins/<A>` 与 `plugins/<B>` 之间禁止互相 import;需要协作时走 `core/contracts`
或 `ctx.Events()`。 或 `ctx.Events()`。
2. 插件只允许 import 本插件内部包、`Wavelet/core`、`Wavelet/core/contracts`、 2. 插件只允许 import 本插件内部包、`Wavelet/core`、`Wavelet/core/contracts`、
`Wavelet/pkg` 与 `Wavelet/OpenFlare/share`。 `Wavelet/pkg` 与 `Wavelet/openflare/share`。
3. `share/` 禁止 import 任何插件实现与下游业务包。 3. `share/` 禁止 import 任何插件实现与下游业务包。
4. 表单一所有者:`of_*` 全部由 `server` 插件建表与读写;`w_*` 由上游平台插件拥有, 4. 表单一所有者:`of_*` 全部由 `server` 插件建表与读写;`w_*` 由上游平台插件拥有,
下游只能经契约或事件访问。 下游只能经契约或事件访问。
@@ -12,12 +12,12 @@ import (
"strings" "strings"
"time" "time"
"Wavelet/OpenFlare/plugins/agent/config" "Wavelet/openflare/plugins/agent/config"
agentheartbeat "Wavelet/OpenFlare/plugins/agent/heartbeat" agentheartbeat "Wavelet/openflare/plugins/agent/heartbeat"
"Wavelet/OpenFlare/plugins/agent/protocol" "Wavelet/openflare/plugins/agent/protocol"
"Wavelet/OpenFlare/plugins/agent/state" "Wavelet/openflare/plugins/agent/state"
"Wavelet/OpenFlare/plugins/agent/wsclient" "Wavelet/openflare/plugins/agent/wsclient"
edgeheartbeat "Wavelet/OpenFlare/share/edge/heartbeat" edgeheartbeat "Wavelet/openflare/share/edge/heartbeat"
"Wavelet/pkg/util" "Wavelet/pkg/util"
) )
@@ -13,11 +13,11 @@ import (
"testing" "testing"
"time" "time"
"Wavelet/OpenFlare/plugins/agent/config" "Wavelet/openflare/plugins/agent/config"
agentheartbeat "Wavelet/OpenFlare/plugins/agent/heartbeat" agentheartbeat "Wavelet/openflare/plugins/agent/heartbeat"
"Wavelet/OpenFlare/plugins/agent/protocol" "Wavelet/openflare/plugins/agent/protocol"
"Wavelet/OpenFlare/plugins/agent/state" "Wavelet/openflare/plugins/agent/state"
"Wavelet/OpenFlare/plugins/agent/updater" "Wavelet/openflare/plugins/agent/updater"
) )
func withHeartbeatCycle(runner *Runner, observabilityBuffer *state.ObservabilityBufferStore) *Runner { func withHeartbeatCycle(runner *Runner, observabilityBuffer *state.ObservabilityBufferStore) *Runner {
@@ -15,8 +15,8 @@ import (
"strings" "strings"
"time" "time"
"Wavelet/OpenFlare/share/edge/nodeip" "Wavelet/openflare/share/edge/nodeip"
"Wavelet/OpenFlare/share/ofutil" "Wavelet/openflare/share/ofutil"
) )
const ( const (
@@ -13,9 +13,9 @@ import (
"testing" "testing"
"time" "time"
"Wavelet/OpenFlare/share/edge/nodeip" "Wavelet/openflare/share/edge/nodeip"
"Wavelet/OpenFlare/share/geoip" "Wavelet/openflare/share/geoip"
"Wavelet/OpenFlare/share/geoip/iputil" "Wavelet/openflare/share/geoip/iputil"
) )
func TestLoadDefaultsToManagedBinaryPaths(t *testing.T) { func TestLoadDefaultsToManagedBinaryPaths(t *testing.T) {
@@ -3,7 +3,7 @@
package config package config
import edgeconfig "Wavelet/OpenFlare/share/edge/config" import edgeconfig "Wavelet/openflare/share/edge/config"
// MillisecondDuration is an alias for the edge config millisecond-precision duration type. // MillisecondDuration is an alias for the edge config millisecond-precision duration type.
type MillisecondDuration = edgeconfig.MillisecondDuration type MillisecondDuration = edgeconfig.MillisecondDuration
@@ -13,7 +13,7 @@ import (
"path/filepath" "path/filepath"
"time" "time"
"Wavelet/OpenFlare/share/geoip" "Wavelet/openflare/share/geoip"
) )
// Updater periodically downloads a fresh GeoIP MMDB file and seeds missing // Updater periodically downloads a fresh GeoIP MMDB file and seeds missing
@@ -11,13 +11,13 @@ import (
"strings" "strings"
"time" "time"
"Wavelet/OpenFlare/plugins/agent/config" "Wavelet/openflare/plugins/agent/config"
"Wavelet/OpenFlare/plugins/agent/observability" "Wavelet/openflare/plugins/agent/observability"
"Wavelet/OpenFlare/plugins/agent/protocol" "Wavelet/openflare/plugins/agent/protocol"
"Wavelet/OpenFlare/plugins/agent/state" "Wavelet/openflare/plugins/agent/state"
"Wavelet/OpenFlare/plugins/agent/updater" "Wavelet/openflare/plugins/agent/updater"
edgeheartbeat "Wavelet/OpenFlare/share/edge/heartbeat" edgeheartbeat "Wavelet/openflare/share/edge/heartbeat"
"Wavelet/OpenFlare/share/edge/nodeip" "Wavelet/openflare/share/edge/nodeip"
) )
// SyncService is the interface used by Cycle to sync active configuration and WAF IP groups. // SyncService is the interface used by Cycle to sync active configuration and WAF IP groups.
@@ -6,7 +6,7 @@ package heartbeat
import ( import (
"context" "context"
"Wavelet/OpenFlare/plugins/agent/protocol" "Wavelet/openflare/plugins/agent/protocol"
) )
// RemoteClient is the interface that abstracts the remote API calls performed by Service. // RemoteClient is the interface that abstracts the remote API calls performed by Service.
@@ -13,8 +13,8 @@ import (
"net/http" "net/http"
"time" "time"
"Wavelet/OpenFlare/plugins/agent/protocol" "Wavelet/openflare/plugins/agent/protocol"
edgehttp "Wavelet/OpenFlare/share/edge/httpclient" edgehttp "Wavelet/openflare/share/edge/httpclient"
) )
const pagesControlResponseMaxBytes = int64(64 * 1024) const pagesControlResponseMaxBytes = int64(64 * 1024)
@@ -4,7 +4,7 @@
// Package logging configures structured logging for the agent process. // Package logging configures structured logging for the agent process.
package logging package logging
import edgelogging "Wavelet/OpenFlare/share/edge/logging" import edgelogging "Wavelet/openflare/share/edge/logging"
// Setup initialises structured logging for the agent process. // Setup initialises structured logging for the agent process.
func Setup() { func Setup() {
@@ -26,12 +26,12 @@ import (
"sync" "sync"
"time" "time"
"Wavelet/OpenFlare/share/ofutil" "Wavelet/openflare/share/ofutil"
sharedprotocol "Wavelet/OpenFlare/share/protocol" sharedprotocol "Wavelet/openflare/share/protocol"
openrestyrender "Wavelet/OpenFlare/share/render/openresty" openrestyrender "Wavelet/openflare/share/render/openresty"
"Wavelet/OpenFlare/plugins/agent/protocol" "Wavelet/openflare/plugins/agent/protocol"
"Wavelet/OpenFlare/plugins/agent/runtimeuser" "Wavelet/openflare/plugins/agent/runtimeuser"
) )
// RuntimeConfigDirPlaceholder is substituted into generated configs at apply time. // RuntimeConfigDirPlaceholder is substituted into generated configs at apply time.
@@ -16,9 +16,9 @@ import (
"strings" "strings"
"testing" "testing"
"Wavelet/OpenFlare/plugins/agent/protocol" "Wavelet/openflare/plugins/agent/protocol"
sharedprotocol "Wavelet/OpenFlare/share/protocol" sharedprotocol "Wavelet/openflare/share/protocol"
openrestyrender "Wavelet/OpenFlare/share/render/openresty" openrestyrender "Wavelet/openflare/share/render/openresty"
) )
type runCall struct { type runCall struct {
@@ -3,7 +3,7 @@
package nginx package nginx
import "Wavelet/OpenFlare/plugins/agent/protocol" import "Wavelet/openflare/plugins/agent/protocol"
// Local OpenResty observability endpoint (target model): // Local OpenResty observability endpoint (target model):
// GET /openflare/observability returns instantaneous health/connections only. // GET /openflare/observability returns instantaneous health/connections only.
@@ -8,7 +8,7 @@ import (
"path/filepath" "path/filepath"
"strings" "strings"
"Wavelet/OpenFlare/plugins/agent/protocol" "Wavelet/openflare/plugins/agent/protocol"
) )
//go:embed pow_static //go:embed pow_static

Before

Width:  |  Height:  |  Size: 30 KiB

After

Width:  |  Height:  |  Size: 30 KiB

Before

Width:  |  Height:  |  Size: 28 KiB

After

Width:  |  Height:  |  Size: 28 KiB

Before

Width:  |  Height:  |  Size: 26 KiB

After

Width:  |  Height:  |  Size: 26 KiB

@@ -4,7 +4,7 @@
package nginx package nginx
import ( import (
"Wavelet/OpenFlare/plugins/agent/runtimeuser" "Wavelet/openflare/plugins/agent/runtimeuser"
) )
// OpenFlareRuntimeUser is the shared OS account for the agent process and // OpenFlareRuntimeUser is the shared OS account for the agent process and
@@ -4,7 +4,7 @@
package nginx package nginx
import ( import (
"Wavelet/OpenFlare/plugins/agent/protocol" "Wavelet/openflare/plugins/agent/protocol"
) )
const openRestySWRuntimeLua = `local _M = {} const openRestySWRuntimeLua = `local _M = {}
@@ -6,7 +6,7 @@ package nginx
import ( import (
_ "embed" _ "embed"
"Wavelet/OpenFlare/plugins/agent/protocol" "Wavelet/openflare/plugins/agent/protocol"
) )
//go:embed waf_runtime.lua //go:embed waf_runtime.lua
@@ -13,10 +13,10 @@ import (
"strings" "strings"
"time" "time"
"Wavelet/OpenFlare/plugins/agent/config" "Wavelet/openflare/plugins/agent/config"
"Wavelet/OpenFlare/plugins/agent/protocol" "Wavelet/openflare/plugins/agent/protocol"
"Wavelet/OpenFlare/plugins/agent/state" "Wavelet/openflare/plugins/agent/state"
edgeobs "Wavelet/OpenFlare/share/edge/observability" edgeobs "Wavelet/openflare/share/edge/observability"
) )
const nodeHealthEventInitialCapacity = 2 const nodeHealthEventInitialCapacity = 2
@@ -10,7 +10,7 @@ import (
"net/http" "net/http"
"time" "time"
"Wavelet/OpenFlare/plugins/agent/config" "Wavelet/openflare/plugins/agent/config"
) )
const openRestyObservabilityPath = "/openflare/observability" const openRestyObservabilityPath = "/openflare/observability"
@@ -9,7 +9,7 @@ import (
"net/http/httptest" "net/http/httptest"
"testing" "testing"
"Wavelet/OpenFlare/plugins/agent/config" "Wavelet/openflare/plugins/agent/config"
) )
func TestCollectEdgeHealth(t *testing.T) { func TestCollectEdgeHealth(t *testing.T) {
@@ -15,9 +15,9 @@ import (
"strings" "strings"
"time" "time"
"Wavelet/OpenFlare/plugins/agent/config" "Wavelet/openflare/plugins/agent/config"
"Wavelet/OpenFlare/plugins/agent/protocol" "Wavelet/openflare/plugins/agent/protocol"
"Wavelet/OpenFlare/plugins/agent/state" "Wavelet/openflare/plugins/agent/state"
) )
type accessLogRecord struct { type accessLogRecord struct {
@@ -9,8 +9,8 @@ import (
"strings" "strings"
"testing" "testing"
"Wavelet/OpenFlare/plugins/agent/config" "Wavelet/openflare/plugins/agent/config"
"Wavelet/OpenFlare/plugins/agent/state" "Wavelet/openflare/plugins/agent/state"
) )
func TestCollectAccessLogsReturnsFactsOnly(t *testing.T) { func TestCollectAccessLogsReturnsFactsOnly(t *testing.T) {
@@ -11,18 +11,18 @@ import (
"fmt" "fmt"
"log/slog" "log/slog"
"Wavelet/OpenFlare/plugins/agent/agent"
"Wavelet/OpenFlare/plugins/agent/config"
"Wavelet/OpenFlare/plugins/agent/geoipupdate"
"Wavelet/OpenFlare/plugins/agent/heartbeat"
"Wavelet/OpenFlare/plugins/agent/httpclient"
"Wavelet/OpenFlare/plugins/agent/nginx"
"Wavelet/OpenFlare/plugins/agent/runtimeuser"
"Wavelet/OpenFlare/plugins/agent/state"
syncservice "Wavelet/OpenFlare/plugins/agent/sync"
"Wavelet/OpenFlare/plugins/agent/updater"
"Wavelet/OpenFlare/plugins/agent/wsclient"
"Wavelet/core" "Wavelet/core"
"Wavelet/openflare/plugins/agent/agent"
"Wavelet/openflare/plugins/agent/config"
"Wavelet/openflare/plugins/agent/geoipupdate"
"Wavelet/openflare/plugins/agent/heartbeat"
"Wavelet/openflare/plugins/agent/httpclient"
"Wavelet/openflare/plugins/agent/nginx"
"Wavelet/openflare/plugins/agent/runtimeuser"
"Wavelet/openflare/plugins/agent/state"
syncservice "Wavelet/openflare/plugins/agent/sync"
"Wavelet/openflare/plugins/agent/updater"
"Wavelet/openflare/plugins/agent/wsclient"
"Wavelet/pkg/util" "Wavelet/pkg/util"
) )
@@ -8,8 +8,8 @@ import (
"testing" "testing"
"time" "time"
"Wavelet/OpenFlare/plugins/agent/config"
"Wavelet/core" "Wavelet/core"
"Wavelet/openflare/plugins/agent/config"
) )
func TestPluginIdentity(t *testing.T) { func TestPluginIdentity(t *testing.T) {
@@ -4,7 +4,7 @@
// Package protocol defines type aliases and constants for the agent protocol. // Package protocol defines type aliases and constants for the agent protocol.
package protocol package protocol
import pkgprotocol "Wavelet/OpenFlare/share/protocol" import pkgprotocol "Wavelet/openflare/share/protocol"
// APIResponse is an alias for pkgprotocol.APIResponse. // APIResponse is an alias for pkgprotocol.APIResponse.
type APIResponse[T any] = pkgprotocol.APIResponse[T] type APIResponse[T any] = pkgprotocol.APIResponse[T]
@@ -15,7 +15,7 @@ import (
"strconv" "strconv"
"strings" "strings"
openrestyrender "Wavelet/OpenFlare/share/render/openresty" openrestyrender "Wavelet/openflare/share/render/openresty"
) )
// Name is the dedicated service account shared by the agent and OpenResty workers. // Name is the dedicated service account shared by the agent and OpenResty workers.
@@ -14,7 +14,7 @@ import (
"strings" "strings"
"sync" "sync"
"Wavelet/OpenFlare/plugins/agent/protocol" "Wavelet/openflare/plugins/agent/protocol"
) )
const observabilityBufferWindowSeconds = 60 const observabilityBufferWindowSeconds = 60
@@ -9,7 +9,7 @@ import (
"strings" "strings"
"testing" "testing"
"Wavelet/OpenFlare/plugins/agent/protocol" "Wavelet/openflare/plugins/agent/protocol"
) )
func TestObservabilityBufferStoreUpsertReplayAndAck(t *testing.T) { func TestObservabilityBufferStoreUpsertReplayAndAck(t *testing.T) {
@@ -18,9 +18,9 @@ import (
"strconv" "strconv"
"strings" "strings"
"Wavelet/OpenFlare/plugins/agent/protocol" "Wavelet/openflare/plugins/agent/protocol"
"Wavelet/OpenFlare/plugins/agent/state" "Wavelet/openflare/plugins/agent/state"
"Wavelet/OpenFlare/share/pagesarchive" "Wavelet/openflare/share/pagesarchive"
) )
const ( const (
@@ -11,8 +11,8 @@ import (
"strings" "strings"
"testing" "testing"
"Wavelet/OpenFlare/plugins/agent/protocol" "Wavelet/openflare/plugins/agent/protocol"
"Wavelet/OpenFlare/plugins/agent/state" "Wavelet/openflare/plugins/agent/state"
) )
func TestEnsurePagesProjectRejectsMetadataBeyondAgentCapsBeforeDownload(t *testing.T) { func TestEnsurePagesProjectRejectsMetadataBeyondAgentCapsBeforeDownload(t *testing.T) {
@@ -17,11 +17,11 @@ import (
"strings" "strings"
"sync" "sync"
openrestyrender "Wavelet/OpenFlare/share/render/openresty" openrestyrender "Wavelet/openflare/share/render/openresty"
"Wavelet/OpenFlare/plugins/agent/nginx" "Wavelet/openflare/plugins/agent/nginx"
"Wavelet/OpenFlare/plugins/agent/protocol" "Wavelet/openflare/plugins/agent/protocol"
"Wavelet/OpenFlare/plugins/agent/state" "Wavelet/openflare/plugins/agent/state"
) )
// Apply result constants indicate the outcome reported back to the server. // Apply result constants indicate the outcome reported back to the server.
@@ -17,10 +17,10 @@ import (
"testing" "testing"
"time" "time"
"Wavelet/OpenFlare/plugins/agent/nginx" "Wavelet/openflare/plugins/agent/nginx"
"Wavelet/OpenFlare/plugins/agent/protocol" "Wavelet/openflare/plugins/agent/protocol"
"Wavelet/OpenFlare/plugins/agent/state" "Wavelet/openflare/plugins/agent/state"
"Wavelet/OpenFlare/share/pagesarchive" "Wavelet/openflare/share/pagesarchive"
) )
type fakeExecutor struct { type fakeExecutor struct {
@@ -8,9 +8,9 @@ import (
"log/slog" "log/slog"
"strings" "strings"
"Wavelet/OpenFlare/plugins/agent/nginx" "Wavelet/openflare/plugins/agent/nginx"
"Wavelet/OpenFlare/plugins/agent/protocol" "Wavelet/openflare/plugins/agent/protocol"
"Wavelet/OpenFlare/plugins/agent/state" "Wavelet/openflare/plugins/agent/state"
) )
func syncMode(startup bool) string { func syncMode(startup bool) string {
@@ -5,8 +5,8 @@
package updater package updater
import ( import (
"Wavelet/OpenFlare/plugins/agent/config" "Wavelet/openflare/plugins/agent/config"
edgeupdater "Wavelet/OpenFlare/share/edge/updater" edgeupdater "Wavelet/openflare/share/edge/updater"
) )
// Service is an alias for the edge updater service type used by the agent. // Service is an alias for the edge updater service type used by the agent.
@@ -8,8 +8,8 @@ import (
"context" "context"
"time" "time"
"Wavelet/OpenFlare/plugins/agent/protocol" "Wavelet/openflare/plugins/agent/protocol"
edgews "Wavelet/OpenFlare/share/edge/wsclient" edgews "Wavelet/openflare/share/edge/wsclient"
) )
// WSMessage is an alias for the WebSocket message type. // WSMessage is an alias for the WebSocket message type.
@@ -12,7 +12,7 @@ import (
"strings" "strings"
"time" "time"
edgeconfig "Wavelet/OpenFlare/share/edge/config" edgeconfig "Wavelet/openflare/share/edge/config"
) )
const ( const (
@@ -8,13 +8,13 @@ import (
"context" "context"
"log/slog" "log/slog"
"Wavelet/OpenFlare/plugins/flared/config" "Wavelet/openflare/plugins/flared/config"
"Wavelet/OpenFlare/plugins/flared/frpc" "Wavelet/openflare/plugins/flared/frpc"
"Wavelet/OpenFlare/plugins/flared/heartbeat" "Wavelet/openflare/plugins/flared/heartbeat"
"Wavelet/OpenFlare/plugins/flared/httpclient" "Wavelet/openflare/plugins/flared/httpclient"
"Wavelet/OpenFlare/plugins/flared/sync" "Wavelet/openflare/plugins/flared/sync"
"Wavelet/OpenFlare/plugins/flared/wsclient" "Wavelet/openflare/plugins/flared/wsclient"
edgerunner "Wavelet/OpenFlare/share/edge/runner" edgerunner "Wavelet/openflare/share/edge/runner"
) )
// Runner is the top-level orchestrator for the flared agent. It wires together // Runner is the top-level orchestrator for the flared agent. It wires together
@@ -20,8 +20,8 @@ import (
"syscall" "syscall"
"time" "time"
"Wavelet/OpenFlare/plugins/flared/config" "Wavelet/openflare/plugins/flared/config"
service "Wavelet/OpenFlare/share/protocol" service "Wavelet/openflare/share/protocol"
"Wavelet/pkg/util" "Wavelet/pkg/util"
) )
@@ -14,8 +14,8 @@ import (
"testing" "testing"
"time" "time"
"Wavelet/OpenFlare/plugins/flared/config" "Wavelet/openflare/plugins/flared/config"
service "Wavelet/OpenFlare/share/protocol" service "Wavelet/openflare/share/protocol"
) )
// Helper to write control file for the dummy script // Helper to write control file for the dummy script
@@ -8,13 +8,13 @@ import (
"context" "context"
"log/slog" "log/slog"
"Wavelet/OpenFlare/plugins/flared/config" "Wavelet/openflare/plugins/flared/config"
"Wavelet/OpenFlare/plugins/flared/frpc" "Wavelet/openflare/plugins/flared/frpc"
"Wavelet/OpenFlare/plugins/flared/httpclient" "Wavelet/openflare/plugins/flared/httpclient"
"Wavelet/OpenFlare/plugins/flared/updater" "Wavelet/openflare/plugins/flared/updater"
edgeheartbeat "Wavelet/OpenFlare/share/edge/heartbeat" edgeheartbeat "Wavelet/openflare/share/edge/heartbeat"
"Wavelet/OpenFlare/share/edge/nodeip" "Wavelet/openflare/share/edge/nodeip"
service "Wavelet/OpenFlare/share/protocol" service "Wavelet/openflare/share/protocol"
) )
// Service sends periodic heartbeat payloads and applies tunnel settings from responses. // Service sends periodic heartbeat payloads and applies tunnel settings from responses.
@@ -8,8 +8,8 @@ import (
"context" "context"
"time" "time"
edgehttp "Wavelet/OpenFlare/share/edge/httpclient" edgehttp "Wavelet/openflare/share/edge/httpclient"
service "Wavelet/OpenFlare/share/protocol" service "Wavelet/openflare/share/protocol"
) )
// APIResponse is an alias for service.APIResponse. // APIResponse is an alias for service.APIResponse.
@@ -11,14 +11,14 @@ import (
"fmt" "fmt"
"log/slog" "log/slog"
"Wavelet/OpenFlare/plugins/flared/config"
flaredrunner "Wavelet/OpenFlare/plugins/flared/flared"
"Wavelet/OpenFlare/plugins/flared/frpc"
"Wavelet/OpenFlare/plugins/flared/heartbeat"
"Wavelet/OpenFlare/plugins/flared/httpclient"
"Wavelet/OpenFlare/plugins/flared/sync"
"Wavelet/OpenFlare/plugins/flared/wsclient"
"Wavelet/core" "Wavelet/core"
"Wavelet/openflare/plugins/flared/config"
flaredrunner "Wavelet/openflare/plugins/flared/flared"
"Wavelet/openflare/plugins/flared/frpc"
"Wavelet/openflare/plugins/flared/heartbeat"
"Wavelet/openflare/plugins/flared/httpclient"
"Wavelet/openflare/plugins/flared/sync"
"Wavelet/openflare/plugins/flared/wsclient"
"Wavelet/pkg/util" "Wavelet/pkg/util"
) )
@@ -9,10 +9,10 @@ import (
"log/slog" "log/slog"
"time" "time"
"Wavelet/OpenFlare/plugins/flared/config" "Wavelet/openflare/plugins/flared/config"
"Wavelet/OpenFlare/plugins/flared/frpc" "Wavelet/openflare/plugins/flared/frpc"
"Wavelet/OpenFlare/plugins/flared/httpclient" "Wavelet/openflare/plugins/flared/httpclient"
service "Wavelet/OpenFlare/share/protocol" service "Wavelet/openflare/share/protocol"
) )
// Service synchronizes tunnel configuration from the control plane to the local frpc manager. // Service synchronizes tunnel configuration from the control plane to the local frpc manager.
@@ -5,8 +5,8 @@
package updater package updater
import ( import (
"Wavelet/OpenFlare/plugins/flared/config" "Wavelet/openflare/plugins/flared/config"
edgeupdater "Wavelet/OpenFlare/share/edge/updater" edgeupdater "Wavelet/openflare/share/edge/updater"
) )
// Service is an alias for the edge updater Service. // Service is an alias for the edge updater Service.
@@ -8,7 +8,7 @@ import (
"context" "context"
"time" "time"
edgews "Wavelet/OpenFlare/share/edge/wsclient" edgews "Wavelet/openflare/share/edge/wsclient"
) )
// WSMessage is a WebSocket message exchanged with the control plane. // WSMessage is a WebSocket message exchanged with the control plane.
@@ -12,8 +12,8 @@ import (
"strings" "strings"
"time" "time"
edgeconfig "Wavelet/OpenFlare/share/edge/config" edgeconfig "Wavelet/openflare/share/edge/config"
"Wavelet/OpenFlare/share/edge/nodeip" "Wavelet/openflare/share/edge/nodeip"
) )
const ( const (
@@ -20,7 +20,7 @@ import (
"syscall" "syscall"
"time" "time"
service "Wavelet/OpenFlare/share/protocol" service "Wavelet/openflare/share/protocol"
) )
const ( const (
@@ -14,7 +14,7 @@ import (
"testing" "testing"
"time" "time"
service "Wavelet/OpenFlare/share/protocol" service "Wavelet/openflare/share/protocol"
) )
// Helper to write control file for the dummy script // Helper to write control file for the dummy script
@@ -8,15 +8,15 @@ import (
"context" "context"
"log/slog" "log/slog"
"Wavelet/OpenFlare/plugins/relay/config" "Wavelet/openflare/plugins/relay/config"
"Wavelet/OpenFlare/plugins/relay/frps" "Wavelet/openflare/plugins/relay/frps"
"Wavelet/OpenFlare/plugins/relay/httpclient" "Wavelet/openflare/plugins/relay/httpclient"
"Wavelet/OpenFlare/plugins/relay/observability" "Wavelet/openflare/plugins/relay/observability"
"Wavelet/OpenFlare/plugins/relay/state" "Wavelet/openflare/plugins/relay/state"
"Wavelet/OpenFlare/plugins/relay/updater" "Wavelet/openflare/plugins/relay/updater"
edgeheartbeat "Wavelet/OpenFlare/share/edge/heartbeat" edgeheartbeat "Wavelet/openflare/share/edge/heartbeat"
"Wavelet/OpenFlare/share/edge/nodeip" "Wavelet/openflare/share/edge/nodeip"
service "Wavelet/OpenFlare/share/protocol" service "Wavelet/openflare/share/protocol"
) )
// Service sends periodic heartbeat payloads to the server, updates the frps // Service sends periodic heartbeat payloads to the server, updates the frps

Some files were not shown because too many files have changed in this diff Show More