From 959b134d67c32349c818abf9296d3e9b0ff553ec Mon Sep 17 00:00:00 2001 From: ryan Date: Sat, 6 Jun 2026 16:08:40 +0800 Subject: [PATCH] =?UTF-8?q?[=E4=BC=98=E5=8C=96]=20=E7=9B=AE=E5=BD=95?= =?UTF-8?q?=E8=B0=83=E6=95=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .github/workflows/release.yml | 5 +- docs/changelog/index.md | 3 + docs/design/architecture.md | 1 + docs/design/index.md | 35 +++-- docs/guideline/Constraints.md | 10 +- docs/plan/handover-plan-template.md | 2 +- docs/plan/implementation-plan-template.md | 4 +- openflare-agent/Dockerfile | 2 +- openflare-agent/internal/config/config.go | 6 +- .../internal/config/config_test.go | 2 +- .../internal/geoipupdate/updater.go | 2 +- openflare-agent/internal/nginx/manager.go | 4 +- openflare-agent/internal/sync/service.go | 2 +- openflare-agent/internal/updater/updater.go | 2 +- openflare-agent/internal/wsclient/client.go | 2 +- openflare-relay/Dockerfile | 2 +- openflare-relay/internal/config/config.go | 4 +- openflare-relay/internal/frps/manager.go | 2 +- openflare-relay/internal/frps/manager_test.go | 2 +- openflare-relay/internal/heartbeat/service.go | 2 +- openflare-relay/internal/httpclient/client.go | 2 +- .../internal/observability/collector.go | 2 +- openflare-relay/internal/relay/runner.go | 2 +- openflare-relay/internal/updater/updater.go | 2 +- openflare-relay/internal/wsclient/client.go | 4 +- openflare-server/Dockerfile | 5 +- openflare-server/cmd/server/main.go | 7 + .../{ => internal}/common/constants.go | 0 .../{ => internal}/common/init.go | 0 .../{ => internal}/common/logger.go | 0 .../{ => internal}/common/redis.go | 0 .../common/response/response.go | 0 .../{ => internal}/controller/access_log.go | 6 +- .../{ => internal}/controller/acme_account.go | 4 +- .../{ => internal}/controller/agent.go | 10 +- .../{ => internal}/controller/auth_source.go | 10 +- .../{ => internal}/controller/bind/bind.go | 2 +- .../{ => internal}/controller/cap.go | 6 +- .../controller/config_version.go | 6 +- .../{ => internal}/controller/dashboard.go | 4 +- .../{ => internal}/controller/database.go | 6 +- .../{ => internal}/controller/dns_account.go | 6 +- .../{ => internal}/controller/flared.go | 10 +- .../{ => internal}/controller/geoip.go | 6 +- .../{ => internal}/controller/github.go | 6 +- .../controller/managed_domain.go | 6 +- .../{ => internal}/controller/misc.go | 16 +- .../{ => internal}/controller/node.go | 6 +- .../{ => internal}/controller/option.go | 14 +- .../{ => internal}/controller/option_test.go | 0 .../{ => internal}/controller/origin.go | 6 +- .../{ => internal}/controller/pages.go | 6 +- .../{ => internal}/controller/proxy_route.go | 6 +- .../{ => internal}/controller/relay.go | 8 +- .../controller/tls_certificate.go | 6 +- .../{ => internal}/controller/update.go | 6 +- .../{ => internal}/controller/uptimekuma.go | 4 +- .../{ => internal}/controller/user.go | 14 +- .../{ => internal}/controller/waf.go | 6 +- .../{ => internal}/controller/wechat.go | 6 +- openflare-server/{ => internal}/job/cron.go | 0 .../{ => internal}/job/ssl_renew.go | 4 +- .../{ => internal}/job/uptimekuma.go | 4 +- .../{ => internal}/job/waf_ip_group_sync.go | 2 +- .../{ => internal}/middleware/agent-auth.go | 4 +- .../{ => internal}/middleware/auth.go | 6 +- .../{ => internal}/middleware/cache.go | 0 .../{ => internal}/middleware/cap.go | 4 +- .../{ => internal}/middleware/cors.go | 2 +- .../{ => internal}/middleware/jwt.go | 6 +- .../{ => internal}/middleware/rate-limit.go | 4 +- .../{ => internal}/middleware/relay-auth.go | 4 +- .../{ => internal}/middleware/tunnel-auth.go | 4 +- .../{ => internal}/model/acme_account.go | 0 .../{ => internal}/model/apply_log.go | 0 .../{ => internal}/model/auth_source.go | 2 +- .../{ => internal}/model/config_version.go | 0 .../model/database_schema_version.go | 2 +- .../{ => internal}/model/dns_account.go | 0 .../{ => internal}/model/goose/bridge.go | 0 ...202606020001_add_node_capabilities_json.go | 0 ...e_202606030001_add_pages_static_hosting.go | 0 ...02606030002_add_pages_spa_fallback_path.go | 0 ...02606030003_drop_proxy_route_legacy_pow.go | 0 ...06040004_add_pages_features_and_cleanup.go | 0 .../{ => internal}/model/goose/migrations.go | 0 .../{ => internal}/model/goose/provider.go | 0 openflare-server/{ => internal}/model/main.go | 4 +- .../{ => internal}/model/main_test.go | 0 .../{ => internal}/model/managed_domain.go | 0 .../{ => internal}/model/migrate/initial.go | 0 .../{ => internal}/model/migrate/migration.go | 0 .../model/migrate/migration_test.go | 0 .../{ => internal}/model/migrate/v10.go | 0 .../{ => internal}/model/migrate/v11.go | 0 .../{ => internal}/model/migrate/v12.go | 0 .../{ => internal}/model/migrate/v13.go | 0 .../{ => internal}/model/migrate/v14.go | 0 .../{ => internal}/model/migrate/v15.go | 0 .../{ => internal}/model/migrate/v16.go | 0 .../{ => internal}/model/migrate/v17.go | 0 .../{ => internal}/model/migrate/v8.go | 0 .../{ => internal}/model/migrate/v9.go | 0 .../{ => internal}/model/migrations.go | 2 +- openflare-server/{ => internal}/model/node.go | 0 .../{ => internal}/model/node_access_log.go | 0 .../{ => internal}/model/node_health_event.go | 0 .../model/node_metric_snapshot.go | 2 +- .../model/node_observation_frpc.go | 2 +- .../model/node_observation_frps.go | 2 +- .../model/node_observation_openresty.go | 2 +- .../model/node_request_report.go | 2 +- .../model/node_system_profile.go | 0 .../{ => internal}/model/option.go | 4 +- .../{ => internal}/model/origin.go | 0 .../{ => internal}/model/pages.go | 0 .../{ => internal}/model/proxy_route.go | 0 .../model/schema_migration_context.go | 2 +- .../{ => internal}/model/sharding.go | 0 .../{ => internal}/model/tls_certificate.go | 0 openflare-server/{ => internal}/model/user.go | 4 +- openflare-server/{ => internal}/model/waf.go | 0 .../{ => internal}/router/api-router.go | 4 +- .../{ => internal}/router/api_flared_test.go | 8 +- .../{ => internal}/router/api_phase1_test.go | 13 +- .../router/api_phase2_managed_domain_test.go | 4 +- .../{ => internal}/router/api_phase2_test.go | 8 +- .../router/api_uptimekuma_test.go | 6 +- .../{ => internal}/router/main.go | 2 +- .../{ => internal}/router/swagger_test.go | 2 +- .../{ => internal}/router/update_test.go | 11 +- .../{ => internal}/router/web-router.go | 4 +- .../{ => internal}/router/web-router_test.go | 2 +- .../{ => internal}/service/access_log.go | 2 +- .../service/access_log_region.go | 2 +- .../{ => internal}/service/access_log_test.go | 2 +- .../{ => internal}/service/agent.go | 6 +- .../{ => internal}/service/agent_test.go | 2 +- .../{ => internal}/service/agent_ws.go | 0 .../{ => internal}/service/auth_source.go | 4 +- .../service/auth_source_test.go | 2 +- .../{ => internal}/service/cap.go | 4 +- .../{ => internal}/service/config_version.go | 6 +- .../{ => internal}/service/dashboard.go | 2 +- .../service/database_maintenance.go | 4 +- .../service/database_maintenance_test.go | 4 +- .../{ => internal}/service/flared_ws.go | 0 .../{ => internal}/service/geoip_lookup.go | 2 +- .../service/geoip_lookup_test.go | 2 +- .../service/https_phase1_test.go | 4 +- .../{ => internal}/service/lego_client.go | 4 +- .../{ => internal}/service/managed_domain.go | 2 +- .../service/managed_domain_phase2_test.go | 0 .../{ => internal}/service/node.go | 8 +- .../service/node_agent_token_cache.go | 2 +- .../service/node_agent_token_cache_test.go | 2 +- .../service/node_observability.go | 2 +- .../service/node_update_test.go | 6 +- .../{ => internal}/service/observability.go | 2 +- .../service/observability_analytics.go | 2 +- .../service/observability_trends.go | 2 +- .../service/observability_trends_test.go | 2 +- .../{ => internal}/service/origin.go | 2 +- .../{ => internal}/service/origin_helpers.go | 0 .../{ => internal}/service/origin_test.go | 2 +- .../{ => internal}/service/pages.go | 4 +- .../{ => internal}/service/pages_test.go | 2 +- .../{ => internal}/service/proxy_route.go | 4 +- .../{ => internal}/service/relay.go | 4 +- .../{ => internal}/service/relay_test.go | 2 +- .../{ => internal}/service/relay_ws.go | 0 .../{ => internal}/service/tls_acme_test.go | 2 +- .../{ => internal}/service/tls_certificate.go | 2 +- .../service/tls_certificate_helpers.go | 0 .../{ => internal}/service/update.go | 4 +- .../service/update_restart_unix.go | 0 .../service/update_restart_unix_test.go | 0 .../service/update_restart_windows.go | 0 .../{ => internal}/service/update_test.go | 2 +- .../{ => internal}/service/uptimekuma.go | 6 +- .../{ => internal}/service/waf.go | 4 +- .../{ => internal}/service/waf_ip_group.go | 2 +- .../{ => internal}/service/waf_test.go | 2 +- .../{ => internal}/service/ws_hub.go | 0 .../{ => internal}/utils/acme/client.go | 0 .../{ => internal}/utils/cap/cap.go | 0 .../{ => internal}/utils/cap/cap_test.go | 0 .../{ => internal}/utils/cap/manager.go | 0 .../{ => internal}/utils/cap/middleware.go | 0 .../{ => internal}/utils/cap/prng.go | 0 .../{ => internal}/utils/cap/store.go | 0 .../{ => internal}/utils/embedfs/static.go | 0 .../{ => internal}/utils/mail/email.go | 0 .../utils/ratelimit/in_memory.go | 0 .../{ => internal}/utils/security/password.go | 0 .../{ => internal}/utils/security/random.go | 0 .../utils/security/verification.go | 0 .../{ => internal}/utils/uptimekuma/client.go | 0 .../utils/validation/validator.go | 0 openflare-server/main.go | 18 +-- openflared/Dockerfile | 2 +- openflared/internal/frpc/manager.go | 2 +- openflared/internal/frpc/manager_test.go | 2 +- openflared/internal/heartbeat/service.go | 6 +- openflared/internal/httpclient/client.go | 2 +- openflared/internal/sync/service.go | 2 +- openflared/internal/updater/updater.go | 2 +- openflared/internal/wsclient/client.go | 4 +- .../utils => pkg}/geoip/emptyProvider.go | 0 .../utils => pkg}/geoip/geoip.go | 0 .../utils => pkg}/geoip/geoip_test.go | 0 .../utils => pkg}/geoip/geojs.go | 0 .../utils => pkg}/geoip/ipapi.go | 0 .../utils => pkg}/geoip/ipinfo.go | 0 .../utils => pkg}/geoip/iputil/iputil.go | 0 .../utils => pkg}/geoip/iputil/iputil_test.go | 0 {openflare-server/utils => pkg}/geoip/mmdb.go | 0 .../utils => pkg}/geoip/outboundip.go | 2 +- .../utils => pkg}/geoip/outboundip_test.go | 0 pkg/protocol/server.go | 148 ++++++++++++++++++ .../utils => pkg}/render/openresty/render.go | 0 .../render/openresty/render_test.go | 0 .../utils => pkg}/render/openresty/types.go | 0 {openflare-server => pkg}/utils/format.go | 0 {openflare-server => pkg}/utils/network.go | 0 {openflare-server => pkg}/utils/slice.go | 0 {openflare-server => pkg}/utils/string.go | 0 {openflare-server => pkg}/utils/value.go | 0 {openflare-server => pkg}/utils/version.go | 0 .../utils => pkg}/wsclient/client.go | 0 230 files changed, 468 insertions(+), 296 deletions(-) create mode 100644 openflare-server/cmd/server/main.go rename openflare-server/{ => internal}/common/constants.go (100%) rename openflare-server/{ => internal}/common/init.go (100%) rename openflare-server/{ => internal}/common/logger.go (100%) rename openflare-server/{ => internal}/common/redis.go (100%) rename openflare-server/{ => internal}/common/response/response.go (100%) rename openflare-server/{ => internal}/controller/access_log.go (96%) rename openflare-server/{ => internal}/controller/acme_account.go (78%) rename openflare-server/{ => internal}/controller/agent.go (96%) rename openflare-server/{ => internal}/controller/auth_source.go (96%) rename openflare-server/{ => internal}/controller/bind/bind.go (93%) rename openflare-server/{ => internal}/controller/cap.go (82%) rename openflare-server/{ => internal}/controller/config_version.go (95%) rename openflare-server/{ => internal}/controller/dashboard.go (97%) rename openflare-server/{ => internal}/controller/database.go (76%) rename openflare-server/{ => internal}/controller/dns_account.go (93%) rename openflare-server/{ => internal}/controller/flared.go (93%) rename openflare-server/{ => internal}/controller/geoip.go (77%) rename openflare-server/{ => internal}/controller/github.go (95%) rename openflare-server/{ => internal}/controller/managed_domain.go (93%) rename openflare-server/{ => internal}/controller/misc.go (89%) rename openflare-server/{ => internal}/controller/node.go (97%) rename openflare-server/{ => internal}/controller/option.go (96%) rename openflare-server/{ => internal}/controller/option_test.go (100%) rename openflare-server/{ => internal}/controller/origin.go (85%) rename openflare-server/{ => internal}/controller/pages.go (94%) rename openflare-server/{ => internal}/controller/proxy_route.go (93%) rename openflare-server/{ => internal}/controller/relay.go (92%) rename openflare-server/{ => internal}/controller/tls_certificate.go (97%) rename openflare-server/{ => internal}/controller/update.go (95%) rename openflare-server/{ => internal}/controller/uptimekuma.go (78%) rename openflare-server/{ => internal}/controller/user.go (95%) rename openflare-server/{ => internal}/controller/waf.go (95%) rename openflare-server/{ => internal}/controller/wechat.go (92%) rename openflare-server/{ => internal}/job/cron.go (100%) rename openflare-server/{ => internal}/job/ssl_renew.go (89%) rename openflare-server/{ => internal}/job/uptimekuma.go (86%) rename openflare-server/{ => internal}/job/waf_ip_group_sync.go (77%) rename openflare-server/{ => internal}/middleware/agent-auth.go (86%) rename openflare-server/{ => internal}/middleware/auth.go (91%) rename openflare-server/{ => internal}/middleware/cache.go (100%) rename openflare-server/{ => internal}/middleware/cap.go (70%) rename openflare-server/{ => internal}/middleware/cors.go (90%) rename openflare-server/{ => internal}/middleware/jwt.go (89%) rename openflare-server/{ => internal}/middleware/rate-limit.go (95%) rename openflare-server/{ => internal}/middleware/relay-auth.go (82%) rename openflare-server/{ => internal}/middleware/tunnel-auth.go (83%) rename openflare-server/{ => internal}/model/acme_account.go (100%) rename openflare-server/{ => internal}/model/apply_log.go (100%) rename openflare-server/{ => internal}/model/auth_source.go (99%) rename openflare-server/{ => internal}/model/config_version.go (100%) rename openflare-server/{ => internal}/model/database_schema_version.go (90%) rename openflare-server/{ => internal}/model/dns_account.go (100%) rename openflare-server/{ => internal}/model/goose/bridge.go (100%) rename openflare-server/{ => internal}/model/goose/goose_202606020001_add_node_capabilities_json.go (100%) rename openflare-server/{ => internal}/model/goose/goose_202606030001_add_pages_static_hosting.go (100%) rename openflare-server/{ => internal}/model/goose/goose_202606030002_add_pages_spa_fallback_path.go (100%) rename openflare-server/{ => internal}/model/goose/goose_202606030003_drop_proxy_route_legacy_pow.go (100%) rename openflare-server/{ => internal}/model/goose/goose_202606040004_add_pages_features_and_cleanup.go (100%) rename openflare-server/{ => internal}/model/goose/migrations.go (100%) rename openflare-server/{ => internal}/model/goose/provider.go (100%) rename openflare-server/{ => internal}/model/main.go (98%) rename openflare-server/{ => internal}/model/main_test.go (100%) rename openflare-server/{ => internal}/model/managed_domain.go (100%) rename openflare-server/{ => internal}/model/migrate/initial.go (100%) rename openflare-server/{ => internal}/model/migrate/migration.go (100%) rename openflare-server/{ => internal}/model/migrate/migration_test.go (100%) rename openflare-server/{ => internal}/model/migrate/v10.go (100%) rename openflare-server/{ => internal}/model/migrate/v11.go (100%) rename openflare-server/{ => internal}/model/migrate/v12.go (100%) rename openflare-server/{ => internal}/model/migrate/v13.go (100%) rename openflare-server/{ => internal}/model/migrate/v14.go (100%) rename openflare-server/{ => internal}/model/migrate/v15.go (100%) rename openflare-server/{ => internal}/model/migrate/v16.go (100%) rename openflare-server/{ => internal}/model/migrate/v17.go (100%) rename openflare-server/{ => internal}/model/migrate/v8.go (100%) rename openflare-server/{ => internal}/model/migrate/v9.go (100%) rename openflare-server/{ => internal}/model/migrations.go (99%) rename openflare-server/{ => internal}/model/node.go (100%) rename openflare-server/{ => internal}/model/node_access_log.go (100%) rename openflare-server/{ => internal}/model/node_health_event.go (100%) rename openflare-server/{ => internal}/model/node_metric_snapshot.go (98%) rename openflare-server/{ => internal}/model/node_observation_frpc.go (96%) rename openflare-server/{ => internal}/model/node_observation_frps.go (97%) rename openflare-server/{ => internal}/model/node_observation_openresty.go (97%) rename openflare-server/{ => internal}/model/node_request_report.go (98%) rename openflare-server/{ => internal}/model/node_system_profile.go (100%) rename openflare-server/{ => internal}/model/option.go (99%) rename openflare-server/{ => internal}/model/origin.go (100%) rename openflare-server/{ => internal}/model/pages.go (100%) rename openflare-server/{ => internal}/model/proxy_route.go (100%) rename openflare-server/{ => internal}/model/schema_migration_context.go (95%) rename openflare-server/{ => internal}/model/sharding.go (100%) rename openflare-server/{ => internal}/model/tls_certificate.go (100%) rename openflare-server/{ => internal}/model/user.go (97%) rename openflare-server/{ => internal}/model/waf.go (100%) rename openflare-server/{ => internal}/router/api-router.go (98%) rename openflare-server/{ => internal}/router/api_flared_test.go (96%) rename openflare-server/{ => internal}/router/api_phase1_test.go (98%) rename openflare-server/{ => internal}/router/api_phase2_managed_domain_test.go (97%) rename openflare-server/{ => internal}/router/api_phase2_test.go (99%) rename openflare-server/{ => internal}/router/api_uptimekuma_test.go (98%) rename openflare-server/{ => internal}/router/main.go (89%) rename openflare-server/{ => internal}/router/swagger_test.go (89%) rename openflare-server/{ => internal}/router/update_test.go (95%) rename openflare-server/{ => internal}/router/web-router.go (94%) rename openflare-server/{ => internal}/router/web-router_test.go (97%) rename openflare-server/{ => internal}/service/access_log.go (99%) rename openflare-server/{ => internal}/service/access_log_region.go (96%) rename openflare-server/{ => internal}/service/access_log_test.go (99%) rename openflare-server/{ => internal}/service/agent.go (99%) rename openflare-server/{ => internal}/service/agent_test.go (99%) rename openflare-server/{ => internal}/service/agent_ws.go (100%) rename openflare-server/{ => internal}/service/auth_source.go (99%) rename openflare-server/{ => internal}/service/auth_source_test.go (96%) rename openflare-server/{ => internal}/service/cap.go (92%) rename openflare-server/{ => internal}/service/config_version.go (99%) rename openflare-server/{ => internal}/service/dashboard.go (99%) rename openflare-server/{ => internal}/service/database_maintenance.go (97%) rename openflare-server/{ => internal}/service/database_maintenance_test.go (97%) rename openflare-server/{ => internal}/service/flared_ws.go (100%) rename openflare-server/{ => internal}/service/geoip_lookup.go (95%) rename openflare-server/{ => internal}/service/geoip_lookup_test.go (96%) rename openflare-server/{ => internal}/service/https_phase1_test.go (99%) rename openflare-server/{ => internal}/service/lego_client.go (94%) rename openflare-server/{ => internal}/service/managed_domain.go (98%) rename openflare-server/{ => internal}/service/managed_domain_phase2_test.go (100%) rename openflare-server/{ => internal}/service/node.go (98%) rename openflare-server/{ => internal}/service/node_agent_token_cache.go (98%) rename openflare-server/{ => internal}/service/node_agent_token_cache_test.go (97%) rename openflare-server/{ => internal}/service/node_observability.go (99%) rename openflare-server/{ => internal}/service/node_update_test.go (99%) rename openflare-server/{ => internal}/service/observability.go (99%) rename openflare-server/{ => internal}/service/observability_analytics.go (98%) rename openflare-server/{ => internal}/service/observability_trends.go (99%) rename openflare-server/{ => internal}/service/observability_trends_test.go (91%) rename openflare-server/{ => internal}/service/origin.go (98%) rename openflare-server/{ => internal}/service/origin_helpers.go (100%) rename openflare-server/{ => internal}/service/origin_test.go (97%) rename openflare-server/{ => internal}/service/pages.go (99%) rename openflare-server/{ => internal}/service/pages_test.go (99%) rename openflare-server/{ => internal}/service/proxy_route.go (99%) rename openflare-server/{ => internal}/service/relay.go (99%) rename openflare-server/{ => internal}/service/relay_test.go (99%) rename openflare-server/{ => internal}/service/relay_ws.go (100%) rename openflare-server/{ => internal}/service/tls_acme_test.go (99%) rename openflare-server/{ => internal}/service/tls_certificate.go (99%) rename openflare-server/{ => internal}/service/tls_certificate_helpers.go (100%) rename openflare-server/{ => internal}/service/update.go (99%) rename openflare-server/{ => internal}/service/update_restart_unix.go (100%) rename openflare-server/{ => internal}/service/update_restart_unix_test.go (100%) rename openflare-server/{ => internal}/service/update_restart_windows.go (100%) rename openflare-server/{ => internal}/service/update_test.go (99%) rename openflare-server/{ => internal}/service/uptimekuma.go (98%) rename openflare-server/{ => internal}/service/waf.go (99%) rename openflare-server/{ => internal}/service/waf_ip_group.go (99%) rename openflare-server/{ => internal}/service/waf_test.go (99%) rename openflare-server/{ => internal}/service/ws_hub.go (100%) rename openflare-server/{ => internal}/utils/acme/client.go (100%) rename openflare-server/{ => internal}/utils/cap/cap.go (100%) rename openflare-server/{ => internal}/utils/cap/cap_test.go (100%) rename openflare-server/{ => internal}/utils/cap/manager.go (100%) rename openflare-server/{ => internal}/utils/cap/middleware.go (100%) rename openflare-server/{ => internal}/utils/cap/prng.go (100%) rename openflare-server/{ => internal}/utils/cap/store.go (100%) rename openflare-server/{ => internal}/utils/embedfs/static.go (100%) rename openflare-server/{ => internal}/utils/mail/email.go (100%) rename openflare-server/{ => internal}/utils/ratelimit/in_memory.go (100%) rename openflare-server/{ => internal}/utils/security/password.go (100%) rename openflare-server/{ => internal}/utils/security/random.go (100%) rename openflare-server/{ => internal}/utils/security/verification.go (100%) rename openflare-server/{ => internal}/utils/uptimekuma/client.go (100%) rename openflare-server/{ => internal}/utils/validation/validator.go (100%) rename {openflare-server/utils => pkg}/geoip/emptyProvider.go (100%) rename {openflare-server/utils => pkg}/geoip/geoip.go (100%) rename {openflare-server/utils => pkg}/geoip/geoip_test.go (100%) rename {openflare-server/utils => pkg}/geoip/geojs.go (100%) rename {openflare-server/utils => pkg}/geoip/ipapi.go (100%) rename {openflare-server/utils => pkg}/geoip/ipinfo.go (100%) rename {openflare-server/utils => pkg}/geoip/iputil/iputil.go (100%) rename {openflare-server/utils => pkg}/geoip/iputil/iputil_test.go (100%) rename {openflare-server/utils => pkg}/geoip/mmdb.go (100%) rename {openflare-server/utils => pkg}/geoip/outboundip.go (98%) rename {openflare-server/utils => pkg}/geoip/outboundip_test.go (100%) create mode 100644 pkg/protocol/server.go rename {openflare-server/utils => pkg}/render/openresty/render.go (100%) rename {openflare-server/utils => pkg}/render/openresty/render_test.go (100%) rename {openflare-server/utils => pkg}/render/openresty/types.go (100%) rename {openflare-server => pkg}/utils/format.go (100%) rename {openflare-server => pkg}/utils/network.go (100%) rename {openflare-server => pkg}/utils/slice.go (100%) rename {openflare-server => pkg}/utils/string.go (100%) rename {openflare-server => pkg}/utils/value.go (100%) rename {openflare-server => pkg}/utils/version.go (100%) rename {openflare-server/utils => pkg}/wsclient/client.go (100%) diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 6ee6d264..74aeab3b 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -135,7 +135,6 @@ jobs: go-version-file: go.mod - name: Build Server - working-directory: openflare-server env: CGO_ENABLED: 0 GOOS: ${{ matrix.goos }} @@ -144,8 +143,8 @@ jobs: VERSION: ${{ needs.prepare.outputs.version }} run: | go mod download - mkdir -p ../dist - go build -trimpath -ldflags "-s -w -X 'github.com/rain-kl/openflare/openflare-server/common.Version=$VERSION'" -o "../dist/$ASSET_NAME" . + mkdir -p dist + go build -trimpath -ldflags "-s -w -X 'github.com/rain-kl/openflare/openflare-server/internal/common.Version=$VERSION'" -o "dist/$ASSET_NAME" ./openflare-server/cmd/server - name: Upload Binary Artifact uses: actions/upload-artifact@v4 diff --git a/docs/changelog/index.md b/docs/changelog/index.md index 90523643..49cdffe0 100644 --- a/docs/changelog/index.md +++ b/docs/changelog/index.md @@ -16,6 +16,9 @@ sidebar: false ## [Unreleased] +### 变更 + +- 标准化 Server Go 目录结构,引入 `cmd/server`、`openflare-server/internal` 与根级 `pkg` 分层,并拆分原 `utils` 公共能力包。 ## [v2.3.3] - 2026-06-06 diff --git a/docs/design/architecture.md b/docs/design/architecture.md index 00c30203..65d1af9c 100644 --- a/docs/design/architecture.md +++ b/docs/design/architecture.md @@ -82,6 +82,7 @@ OpenResty (Agent, TLS/WAF) * 包含配置编译器(Compiler),将数据库中的规则、证书与全局参数统一编译为不可变的配置快照及 OpenResty 物理配置文件文本。 * 存储 Pages 部署 ZIP 包于本地 Artifacts 目录,并向 Agent 提供受控的下载接口。 * 后台集成 Uptime Kuma 监控同步服务,自动为可用站点维护 HTTP 探测任务。 +* Go 物理结构采用 `cmd/server` 启动入口、`internal` 私有应用层与根级 `pkg` 共享能力包,跨组件协议类型统一放在 `pkg/protocol`。 * *详细设计请参阅:[Agent 与发布模型设计](./agent-design.md) 以及 [Uptime Kuma 监控同步设计](./kuma-design.md)* ### 2. Agent (配置落地端) diff --git a/docs/design/index.md b/docs/design/index.md index daf1ec19..a7bdd121 100644 --- a/docs/design/index.md +++ b/docs/design/index.md @@ -68,6 +68,7 @@ OpenFlare 适合需要统一管理多台 OpenResty 代理节点的团队,具 | ---------------------- | ---------------------------------------------------- | | `openflare-server` | Gin + GORM + SQLite/PostgreSQL 单体控制面 | | `openflare-server/web` | Next.js 15 App Router 管理端前端,由 Go Server 托管 | +| `pkg` | 跨组件复用的协议类型与通用工具包 | | `openflare-agent` | Go 单体 Agent,运行在节点侧 | | `openflare-relay` | Tunnel 中继代理,运行在公网边缘管理 frps 进程 | | `openflared` | Tunnel 客户端,运行在内网服务器侧管理 frpc 进程 | @@ -77,21 +78,25 @@ OpenFlare 适合需要统一管理多台 OpenResty 代理节点的团队,具 ### 1. Server 分层 (`openflare-server/`) -| 目录 | 职责 | -| ------------- | ------------------------------------------------ | -| `controller/` | 参数解析、调用 service、返回响应 | -| `service/` | 业务逻辑、校验、事务编排、配置渲染 | -| `model/` | 纯净实体模型类定义、旧迁移框架兼容与上下文注入 | -| `model/goose/` | goose 迁移提供者、桥接逻辑、注册入口与具体迁移文件 | -| `router/` | 路由注册 | -| `middleware/` | 认证、鉴权、限流、CORS、Turnstile 验证等横切逻辑 | -| `common/` | 配置、全局状态与初始化入口 | -| `utils/` | 纯工具函数与通用 helper | -| `job/` | 定时任务(各业务定时逻辑在独立文件中定义,cron.go 仅用于初始化调度) | -| `upload/` | 运行时本地临时文件上传目录(在 .gitignore 中忽略) | -| `logs/` | 运行时本地日志输出目录(在 .gitignore 中忽略) | -| `docs/` | API 文档(Swagger) | -| `data/` | 静态数据(如 GeoIP 数据库) | +| 目录 | 职责 | +| ----------------------- | ------------------------------------------------ | +| `cmd/server/` | Server 命令行启动入口及主函数 | +| `internal/controller/` | 参数解析、调用 service、返回响应 | +| `internal/service/` | 业务逻辑、校验、事务编排、配置渲染 | +| `internal/model/` | 纯净实体模型类定义、旧迁移框架兼容与上下文注入 | +| `internal/model/goose/` | goose 迁移提供者、桥接逻辑、注册入口与具体迁移文件 | +| `internal/router/` | 路由注册 | +| `internal/middleware/` | 认证、鉴权、限流、CORS、Turnstile 验证等横切逻辑 | +| `internal/common/` | 配置、全局状态与初始化入口 | +| `internal/job/` | 定时任务(各业务定时逻辑在独立文件中定义,cron.go 仅用于初始化调度) | +| `internal/utils/` | 仅 Server 内部使用的基础能力包,如 ACME、限流、验证码、邮件、安全校验等 | +| `pkg/protocol/` | Server、Relay、OpenFlared 之间共享的 HTTP/WS 协议结构 | +| `pkg/utils/` | 跨组件可复用的纯工具函数 | +| `pkg/geoip`、`pkg/render`、`pkg/wsclient` | 被多个组件复用的 GeoIP、OpenResty 配置渲染与 WebSocket 客户端能力 | +| `upload/` | 运行时本地临时文件上传目录(在 .gitignore 中忽略) | +| `logs/` | 运行时本地日志输出目录(在 .gitignore 中忽略) | +| `docs/` | API 文档(Swagger) | +| `data/` | 静态数据(如 GeoIP 数据库) | ### 2. Agent 模块 (`openflare-agent/`) diff --git a/docs/guideline/Constraints.md b/docs/guideline/Constraints.md index c41c9479..165effdd 100644 --- a/docs/guideline/Constraints.md +++ b/docs/guideline/Constraints.md @@ -76,20 +76,20 @@ Frontend: 任何涉及表结构、索引、列类型、分表规则或内部持久化元数据的修改,都必须同步提升数据库版本号。 -数据库版本号定义在 `openflare-server/model`,不得只依赖 `AutoMigrate` 隐式升级存量数据库。 +数据库版本号定义在 `openflare-server/internal/model`,不得只依赖 `AutoMigrate` 隐式升级存量数据库。 每次提升数据库版本号时,必须补充从上一版本升级到新版本的显式迁移方法。迁移方法必须包含升级后的校验逻辑;只有校验通过,才能写入新的数据库版本记录。 -数据库升级统一使用 goose。新的 goose provider、桥接逻辑、注册入口和具体迁移文件必须全部放在 `openflare-server/model/goose` 包下,`openflare-server/model` 根包只保留纯净实体类、旧框架兼容适配和必要的上下文注入。每次新增数据库升级都必须新建一个单独的 Go 文件,文件名使用 `openflare-server/model/goose/goose__.go`,例如 `openflare-server/model/goose/goose_202606020001_add_node_capabilities_json.go`。迁移文件必须同时包含该版本的 goose migration 构造函数、升级逻辑和校验逻辑;`model/goose/migrations.go` 只能作为注册入口和公共构造工具,禁止把具体迁移逻辑集中堆放在该文件中。 +数据库升级统一使用 goose。新的 goose provider、桥接逻辑、注册入口和具体迁移文件必须全部放在 `openflare-server/internal/model/goose` 包下,`openflare-server/internal/model` 根包只保留纯净实体类、旧框架兼容适配和必要的上下文注入。每次新增数据库升级都必须新建一个单独的 Go 文件,文件名使用 `openflare-server/internal/model/goose/goose__.go`,例如 `openflare-server/internal/model/goose/goose_202606020001_add_node_capabilities_json.go`。迁移文件必须同时包含该版本的 goose migration 构造函数、升级逻辑和校验逻辑;`model/goose/migrations.go` 只能作为注册入口和公共构造工具,禁止把具体迁移逻辑集中堆放在该文件中。 执行数据库升级时必须按以下步骤完成: 1. 判断是否需要升级数据库版本:凡是新增/删除/重命名表、字段、索引、约束、列类型、分表规则,或改变持久化数据语义,都必须升级。 -2. 新增 `openflare-server/model/goose/goose__.go`,其中 `` 为 goose 版本号。文件头部或迁移构造函数附近必须包含注释,说明本次升级了什么内容,以及为什么需要升级。 -3. 在该文件中实现独立迁移构造函数,并返回通过 `newGORMMigration(...)` 创建的 migration;随后只在 `openflare-server/model/goose/migrations.go` 的 `registeredMigrations(...)` 中新增一条注册项。 +2. 新增 `openflare-server/internal/model/goose/goose__.go`,其中 `` 为 goose 版本号。文件头部或迁移构造函数附近必须包含注释,说明本次升级了什么内容,以及为什么需要升级。 +3. 在该文件中实现独立迁移构造函数,并返回通过 `newGORMMigration(...)` 创建的 migration;随后只在 `openflare-server/internal/model/goose/migrations.go` 的 `registeredMigrations(...)` 中新增一条注册项。 4. 在同一个单独迁移文件中写入升级逻辑。可通过 goose `Context` 调用 `ApplyCurrentSchema`、历史 backfill、默认数据初始化等公共能力;复杂数据修复必须显式处理,不得只依赖 `AutoMigrate`。 5. 在同一个单独迁移文件中写入升级后的校验逻辑。校验至少要覆盖新增表/字段/索引是否存在、关键默认数据是否存在、必要的数据回填是否成功。 -6. 如果新迁移需要新的公共 backfill 或校验辅助函数,优先放在该迁移文件中;只有多个迁移共同复用时,才放到 `openflare-server/model/goose` 包内的公共文件中。不要把新 goose 框架代码放回 `openflare-server/model` 根包。 +6. 如果新迁移需要新的公共 backfill 或校验辅助函数,优先放在该迁移文件中;只有多个迁移共同复用时,才放到 `openflare-server/internal/model/goose` 包内的公共文件中。不要把新 goose 框架代码放回 `openflare-server/internal/model` 根包。 7. 补充迁移测试:至少覆盖从旧框架终点或上一 goose 版本升级后 schema version、字段/表结构、关键数据回填和校验结果。还应保留旧库从 v15/v17 桥接到 goose 的回归覆盖。 新包启动后必须先检查数据库当前版本,再按顺序逐步升级到目标版本;禁止跳过中间升级步骤直接写目标版本。 diff --git a/docs/plan/handover-plan-template.md b/docs/plan/handover-plan-template.md index b0e8f4cd..bd34ca33 100644 --- a/docs/plan/handover-plan-template.md +++ b/docs/plan/handover-plan-template.md @@ -28,5 +28,5 @@ ## 4. 下一步行动指南 (Next Steps) 新接手 AI 进来后应当立即执行的前 3 步命令或编辑操作: 1. **第一步**:执行 `go test ./controller/...` 确认环境并复现 Fail 异常。 -2. **第二步**:修改 `openflare-server/controller/xxx.go` 中的逻辑以修复该 Fail。 +2. **第二步**:修改 `openflare-server/internal/controller/xxx.go` 中的逻辑以修复该 Fail。 3. **第三步**:在管理端前端页面调试 xxx 表单的提交是否正常。 diff --git a/docs/plan/implementation-plan-template.md b/docs/plan/implementation-plan-template.md index 74239d9e..555c0151 100644 --- a/docs/plan/implementation-plan-template.md +++ b/docs/plan/implementation-plan-template.md @@ -22,9 +22,9 @@ 按模块或组件列出需要修改的物理文件路径及修改点: ### 后端 Server -* #### [NEW] `openflare-server/model/entity.go` +* #### [NEW] `openflare-server/internal/model/entity.go` * 职责:... -* #### [MODIFY] `openflare-server/service/feature.go` +* #### [MODIFY] `openflare-server/internal/service/feature.go` * 职责:... ### 边缘 Agent 与 OpenResty diff --git a/openflare-agent/Dockerfile b/openflare-agent/Dockerfile index f82d4a40..4077c88e 100644 --- a/openflare-agent/Dockerfile +++ b/openflare-agent/Dockerfile @@ -18,6 +18,7 @@ RUN --mount=type=cache,target=/go/pkg/mod \ COPY openflare-server ./openflare-server COPY openflare-agent ./openflare-agent +COPY pkg ./pkg RUN --mount=type=cache,target=/go/pkg/mod \ --mount=type=cache,target=/root/.cache/go-build \ go build -trimpath -ldflags "-s -w -X 'github.com/rain-kl/openflare/openflare-agent/internal/config.Version=$VERSION'" -o /build/bin/openflare-agent ./openflare-agent/cmd/agent @@ -37,4 +38,3 @@ COPY --from=builder /build/bin/openflare-agent /usr/local/bin/openflare-agent EXPOSE 80 443 18081 ENTRYPOINT ["/usr/local/bin/openflare-agent"] CMD ["-config", "/etc/openflare/agent.json"] - diff --git a/openflare-agent/internal/config/config.go b/openflare-agent/internal/config/config.go index 25322df7..100a0016 100644 --- a/openflare-agent/internal/config/config.go +++ b/openflare-agent/internal/config/config.go @@ -13,9 +13,9 @@ import ( "strings" "time" - "github.com/rain-kl/openflare/openflare-server/utils" - "github.com/rain-kl/openflare/openflare-server/utils/geoip" - "github.com/rain-kl/openflare/openflare-server/utils/geoip/iputil" + "github.com/rain-kl/openflare/pkg/geoip" + "github.com/rain-kl/openflare/pkg/geoip/iputil" + "github.com/rain-kl/openflare/pkg/utils" ) const ( diff --git a/openflare-agent/internal/config/config_test.go b/openflare-agent/internal/config/config_test.go index 9eb13363..bdf67ff1 100644 --- a/openflare-agent/internal/config/config_test.go +++ b/openflare-agent/internal/config/config_test.go @@ -10,7 +10,7 @@ import ( "testing" "time" - "github.com/rain-kl/openflare/openflare-server/utils/geoip" + "github.com/rain-kl/openflare/pkg/geoip" ) func TestLoadDefaultsToManagedBinaryPaths(t *testing.T) { diff --git a/openflare-agent/internal/geoipupdate/updater.go b/openflare-agent/internal/geoipupdate/updater.go index f20843aa..1beb4998 100644 --- a/openflare-agent/internal/geoipupdate/updater.go +++ b/openflare-agent/internal/geoipupdate/updater.go @@ -10,7 +10,7 @@ import ( "time" "github.com/rain-kl/openflare/openflare-agent/internal/geoipdata" - "github.com/rain-kl/openflare/openflare-server/utils/geoip" + "github.com/rain-kl/openflare/pkg/geoip" ) type Updater struct { diff --git a/openflare-agent/internal/nginx/manager.go b/openflare-agent/internal/nginx/manager.go index ee7378b6..e69ae750 100644 --- a/openflare-agent/internal/nginx/manager.go +++ b/openflare-agent/internal/nginx/manager.go @@ -20,8 +20,8 @@ import ( "strings" "time" - "github.com/rain-kl/openflare/openflare-server/utils" - openrestyrender "github.com/rain-kl/openflare/openflare-server/utils/render/openresty" + openrestyrender "github.com/rain-kl/openflare/pkg/render/openresty" + "github.com/rain-kl/openflare/pkg/utils" "github.com/rain-kl/openflare/openflare-agent/internal/protocol" ) diff --git a/openflare-agent/internal/sync/service.go b/openflare-agent/internal/sync/service.go index 4138f963..d7d24351 100644 --- a/openflare-agent/internal/sync/service.go +++ b/openflare-agent/internal/sync/service.go @@ -11,7 +11,7 @@ import ( "sort" "strings" - openrestyrender "github.com/rain-kl/openflare/openflare-server/utils/render/openresty" + openrestyrender "github.com/rain-kl/openflare/pkg/render/openresty" "github.com/rain-kl/openflare/openflare-agent/internal/nginx" "github.com/rain-kl/openflare/openflare-agent/internal/protocol" diff --git a/openflare-agent/internal/updater/updater.go b/openflare-agent/internal/updater/updater.go index 02fc2bbb..486c2b21 100644 --- a/openflare-agent/internal/updater/updater.go +++ b/openflare-agent/internal/updater/updater.go @@ -14,7 +14,7 @@ import ( "strings" "time" - "github.com/rain-kl/openflare/openflare-server/utils" + "github.com/rain-kl/openflare/pkg/utils" "github.com/rain-kl/openflare/openflare-agent/internal/agent" "github.com/rain-kl/openflare/openflare-agent/internal/config" diff --git a/openflare-agent/internal/wsclient/client.go b/openflare-agent/internal/wsclient/client.go index cb2792c0..d461a8a9 100644 --- a/openflare-agent/internal/wsclient/client.go +++ b/openflare-agent/internal/wsclient/client.go @@ -5,7 +5,7 @@ import ( "time" "github.com/rain-kl/openflare/openflare-agent/internal/protocol" - shared "github.com/rain-kl/openflare/openflare-server/utils/wsclient" + shared "github.com/rain-kl/openflare/pkg/wsclient" ) type WSMessage = shared.WSMessage diff --git a/openflare-relay/Dockerfile b/openflare-relay/Dockerfile index 64c2d5b8..c34e40dc 100644 --- a/openflare-relay/Dockerfile +++ b/openflare-relay/Dockerfile @@ -12,6 +12,7 @@ RUN --mount=type=cache,target=/go/pkg/mod \ COPY openflare-server ./openflare-server COPY openflare-relay ./openflare-relay +COPY pkg ./pkg RUN --mount=type=cache,target=/go/pkg/mod \ --mount=type=cache,target=/root/.cache/go-build \ CGO_ENABLED=0 GOOS=linux go build -trimpath -ldflags "-s -w -X 'github.com/rain-kl/openflare/openflare-relay/internal/config.Version=$VERSION'" -o /build/bin/openflare-relay ./openflare-relay/cmd/relay @@ -30,4 +31,3 @@ ENV OPENFLARE_FRPS_PATH=/usr/bin/frps ENV OPENFLARE_DATA_DIR=/app/data ENTRYPOINT ["/app/openflare-relay"] - diff --git a/openflare-relay/internal/config/config.go b/openflare-relay/internal/config/config.go index 7a28c1fd..1d12acc5 100644 --- a/openflare-relay/internal/config/config.go +++ b/openflare-relay/internal/config/config.go @@ -10,8 +10,8 @@ import ( "strings" "time" - "github.com/rain-kl/openflare/openflare-server/utils/geoip" - "github.com/rain-kl/openflare/openflare-server/utils/geoip/iputil" + "github.com/rain-kl/openflare/pkg/geoip" + "github.com/rain-kl/openflare/pkg/geoip/iputil" ) type MillisecondDuration time.Duration diff --git a/openflare-relay/internal/frps/manager.go b/openflare-relay/internal/frps/manager.go index b2168b4a..466f28fb 100644 --- a/openflare-relay/internal/frps/manager.go +++ b/openflare-relay/internal/frps/manager.go @@ -12,7 +12,7 @@ import ( "sync" "time" - "github.com/rain-kl/openflare/openflare-server/service" + service "github.com/rain-kl/openflare/pkg/protocol" ) type Manager struct { diff --git a/openflare-relay/internal/frps/manager_test.go b/openflare-relay/internal/frps/manager_test.go index ba63a634..81da6cd2 100644 --- a/openflare-relay/internal/frps/manager_test.go +++ b/openflare-relay/internal/frps/manager_test.go @@ -10,7 +10,7 @@ import ( "testing" "time" - "github.com/rain-kl/openflare/openflare-server/service" + service "github.com/rain-kl/openflare/pkg/protocol" ) // Helper to write control file for the dummy script diff --git a/openflare-relay/internal/heartbeat/service.go b/openflare-relay/internal/heartbeat/service.go index 0bf5fff6..2bfd6afc 100644 --- a/openflare-relay/internal/heartbeat/service.go +++ b/openflare-relay/internal/heartbeat/service.go @@ -11,7 +11,7 @@ import ( "github.com/rain-kl/openflare/openflare-relay/internal/observability" "github.com/rain-kl/openflare/openflare-relay/internal/state" "github.com/rain-kl/openflare/openflare-relay/internal/updater" - "github.com/rain-kl/openflare/openflare-server/service" + service "github.com/rain-kl/openflare/pkg/protocol" ) type Service struct { diff --git a/openflare-relay/internal/httpclient/client.go b/openflare-relay/internal/httpclient/client.go index 5a27ccaf..e92bfd76 100644 --- a/openflare-relay/internal/httpclient/client.go +++ b/openflare-relay/internal/httpclient/client.go @@ -11,7 +11,7 @@ import ( "strings" "time" - "github.com/rain-kl/openflare/openflare-server/service" + service "github.com/rain-kl/openflare/pkg/protocol" ) type APIResponse[T any] struct { diff --git a/openflare-relay/internal/observability/collector.go b/openflare-relay/internal/observability/collector.go index ad12c891..5b89e6a5 100644 --- a/openflare-relay/internal/observability/collector.go +++ b/openflare-relay/internal/observability/collector.go @@ -16,7 +16,7 @@ import ( "github.com/rain-kl/openflare/openflare-relay/internal/config" "github.com/rain-kl/openflare/openflare-relay/internal/frps" "github.com/rain-kl/openflare/openflare-relay/internal/state" - "github.com/rain-kl/openflare/openflare-server/service" + service "github.com/rain-kl/openflare/pkg/protocol" ) func BuildProfile(cfg *config.Config, stateStore *state.Store) *service.AgentNodeSystemProfile { diff --git a/openflare-relay/internal/relay/runner.go b/openflare-relay/internal/relay/runner.go index 1c899b36..5d589aa9 100644 --- a/openflare-relay/internal/relay/runner.go +++ b/openflare-relay/internal/relay/runner.go @@ -12,7 +12,7 @@ import ( "github.com/rain-kl/openflare/openflare-relay/internal/httpclient" "github.com/rain-kl/openflare/openflare-relay/internal/state" "github.com/rain-kl/openflare/openflare-relay/internal/wsclient" - "github.com/rain-kl/openflare/openflare-server/service" + service "github.com/rain-kl/openflare/pkg/protocol" ) type Runner struct { diff --git a/openflare-relay/internal/updater/updater.go b/openflare-relay/internal/updater/updater.go index 5332243b..a386c97b 100644 --- a/openflare-relay/internal/updater/updater.go +++ b/openflare-relay/internal/updater/updater.go @@ -14,7 +14,7 @@ import ( "strings" "time" - "github.com/rain-kl/openflare/openflare-server/utils" + "github.com/rain-kl/openflare/pkg/utils" "github.com/rain-kl/openflare/openflare-relay/internal/config" ) diff --git a/openflare-relay/internal/wsclient/client.go b/openflare-relay/internal/wsclient/client.go index 42fe160e..e4022a9b 100644 --- a/openflare-relay/internal/wsclient/client.go +++ b/openflare-relay/internal/wsclient/client.go @@ -5,8 +5,8 @@ import ( "encoding/json" "time" - "github.com/rain-kl/openflare/openflare-server/service" - shared "github.com/rain-kl/openflare/openflare-server/utils/wsclient" + service "github.com/rain-kl/openflare/pkg/protocol" + shared "github.com/rain-kl/openflare/pkg/wsclient" ) type WSMessage = shared.WSMessage diff --git a/openflare-server/Dockerfile b/openflare-server/Dockerfile index aaeb7655..bda16b4d 100644 --- a/openflare-server/Dockerfile +++ b/openflare-server/Dockerfile @@ -21,12 +21,13 @@ COPY go.mod go.sum ./ RUN --mount=type=cache,target=/go/pkg/mod \ go mod download COPY openflare-server ./openflare-server +COPY pkg ./pkg COPY --from=web-builder /build/build ./openflare-server/web/build RUN --mount=type=cache,target=/go/pkg/mod \ --mount=type=cache,target=/root/.cache/go-build \ go build -trimpath \ - -ldflags "-s -w -X 'github.com/rain-kl/openflare/openflare-server/common.Version=$VERSION'" \ - -o openflare ./openflare-server + -ldflags "-s -w -X 'github.com/rain-kl/openflare/openflare-server/internal/common.Version=$VERSION'" \ + -o openflare ./openflare-server/cmd/server FROM alpine:latest RUN apk add --no-cache ca-certificates tzdata \ diff --git a/openflare-server/cmd/server/main.go b/openflare-server/cmd/server/main.go new file mode 100644 index 00000000..2235d147 --- /dev/null +++ b/openflare-server/cmd/server/main.go @@ -0,0 +1,7 @@ +package main + +import server "github.com/rain-kl/openflare/openflare-server" + +func main() { + server.Run() +} diff --git a/openflare-server/common/constants.go b/openflare-server/internal/common/constants.go similarity index 100% rename from openflare-server/common/constants.go rename to openflare-server/internal/common/constants.go diff --git a/openflare-server/common/init.go b/openflare-server/internal/common/init.go similarity index 100% rename from openflare-server/common/init.go rename to openflare-server/internal/common/init.go diff --git a/openflare-server/common/logger.go b/openflare-server/internal/common/logger.go similarity index 100% rename from openflare-server/common/logger.go rename to openflare-server/internal/common/logger.go diff --git a/openflare-server/common/redis.go b/openflare-server/internal/common/redis.go similarity index 100% rename from openflare-server/common/redis.go rename to openflare-server/internal/common/redis.go diff --git a/openflare-server/common/response/response.go b/openflare-server/internal/common/response/response.go similarity index 100% rename from openflare-server/common/response/response.go rename to openflare-server/internal/common/response/response.go diff --git a/openflare-server/controller/access_log.go b/openflare-server/internal/controller/access_log.go similarity index 96% rename from openflare-server/controller/access_log.go rename to openflare-server/internal/controller/access_log.go index 1edcfade..5285083b 100644 --- a/openflare-server/controller/access_log.go +++ b/openflare-server/internal/controller/access_log.go @@ -3,9 +3,9 @@ package controller import ( "strconv" - "github.com/rain-kl/openflare/openflare-server/common/response" - "github.com/rain-kl/openflare/openflare-server/controller/bind" - "github.com/rain-kl/openflare/openflare-server/service" + "github.com/rain-kl/openflare/openflare-server/internal/common/response" + "github.com/rain-kl/openflare/openflare-server/internal/controller/bind" + "github.com/rain-kl/openflare/openflare-server/internal/service" "github.com/gin-gonic/gin" ) diff --git a/openflare-server/controller/acme_account.go b/openflare-server/internal/controller/acme_account.go similarity index 78% rename from openflare-server/controller/acme_account.go rename to openflare-server/internal/controller/acme_account.go index d21f50a7..282b2552 100644 --- a/openflare-server/controller/acme_account.go +++ b/openflare-server/internal/controller/acme_account.go @@ -1,8 +1,8 @@ package controller import ( - "github.com/rain-kl/openflare/openflare-server/common/response" - "github.com/rain-kl/openflare/openflare-server/model" + "github.com/rain-kl/openflare/openflare-server/internal/common/response" + "github.com/rain-kl/openflare/openflare-server/internal/model" "github.com/gin-gonic/gin" ) diff --git a/openflare-server/controller/agent.go b/openflare-server/internal/controller/agent.go similarity index 96% rename from openflare-server/controller/agent.go rename to openflare-server/internal/controller/agent.go index c2e7d577..7c4b5b6c 100644 --- a/openflare-server/controller/agent.go +++ b/openflare-server/internal/controller/agent.go @@ -7,11 +7,11 @@ import ( "strconv" "time" - "github.com/rain-kl/openflare/openflare-server/common" - "github.com/rain-kl/openflare/openflare-server/common/response" - "github.com/rain-kl/openflare/openflare-server/controller/bind" - "github.com/rain-kl/openflare/openflare-server/model" - "github.com/rain-kl/openflare/openflare-server/service" + "github.com/rain-kl/openflare/openflare-server/internal/common" + "github.com/rain-kl/openflare/openflare-server/internal/common/response" + "github.com/rain-kl/openflare/openflare-server/internal/controller/bind" + "github.com/rain-kl/openflare/openflare-server/internal/model" + "github.com/rain-kl/openflare/openflare-server/internal/service" "github.com/gin-gonic/gin" "golang.org/x/net/websocket" diff --git a/openflare-server/controller/auth_source.go b/openflare-server/internal/controller/auth_source.go similarity index 96% rename from openflare-server/controller/auth_source.go rename to openflare-server/internal/controller/auth_source.go index cdefac83..6da30566 100644 --- a/openflare-server/controller/auth_source.go +++ b/openflare-server/internal/controller/auth_source.go @@ -7,11 +7,11 @@ import ( "strconv" "strings" - "github.com/rain-kl/openflare/openflare-server/common" - "github.com/rain-kl/openflare/openflare-server/common/response" - "github.com/rain-kl/openflare/openflare-server/controller/bind" - "github.com/rain-kl/openflare/openflare-server/model" - "github.com/rain-kl/openflare/openflare-server/service" + "github.com/rain-kl/openflare/openflare-server/internal/common" + "github.com/rain-kl/openflare/openflare-server/internal/common/response" + "github.com/rain-kl/openflare/openflare-server/internal/controller/bind" + "github.com/rain-kl/openflare/openflare-server/internal/model" + "github.com/rain-kl/openflare/openflare-server/internal/service" "github.com/gin-contrib/sessions" "github.com/gin-gonic/gin" diff --git a/openflare-server/controller/bind/bind.go b/openflare-server/internal/controller/bind/bind.go similarity index 93% rename from openflare-server/controller/bind/bind.go rename to openflare-server/internal/controller/bind/bind.go index 9db5efbd..cd182ad2 100644 --- a/openflare-server/controller/bind/bind.go +++ b/openflare-server/internal/controller/bind/bind.go @@ -8,7 +8,7 @@ import ( "github.com/gin-gonic/gin" - "github.com/rain-kl/openflare/openflare-server/common/response" + "github.com/rain-kl/openflare/openflare-server/internal/common/response" ) // DecodeJSONBody decodes JSON reader to target diff --git a/openflare-server/controller/cap.go b/openflare-server/internal/controller/cap.go similarity index 82% rename from openflare-server/controller/cap.go rename to openflare-server/internal/controller/cap.go index d8f080d3..a2feca12 100644 --- a/openflare-server/controller/cap.go +++ b/openflare-server/internal/controller/cap.go @@ -4,9 +4,9 @@ import ( "net/http" "github.com/gin-gonic/gin" - "github.com/rain-kl/openflare/openflare-server/controller/bind" - "github.com/rain-kl/openflare/openflare-server/service" - "github.com/rain-kl/openflare/openflare-server/utils/cap" + "github.com/rain-kl/openflare/openflare-server/internal/controller/bind" + "github.com/rain-kl/openflare/openflare-server/internal/service" + "github.com/rain-kl/openflare/openflare-server/internal/utils/cap" ) // GetCapChallenge generates a new CAPTCHA challenge diff --git a/openflare-server/controller/config_version.go b/openflare-server/internal/controller/config_version.go similarity index 95% rename from openflare-server/controller/config_version.go rename to openflare-server/internal/controller/config_version.go index 27790e20..2d087aaa 100644 --- a/openflare-server/controller/config_version.go +++ b/openflare-server/internal/controller/config_version.go @@ -1,9 +1,9 @@ package controller import ( - "github.com/rain-kl/openflare/openflare-server/common/response" - "github.com/rain-kl/openflare/openflare-server/controller/bind" - "github.com/rain-kl/openflare/openflare-server/service" + "github.com/rain-kl/openflare/openflare-server/internal/common/response" + "github.com/rain-kl/openflare/openflare-server/internal/controller/bind" + "github.com/rain-kl/openflare/openflare-server/internal/service" "github.com/gin-gonic/gin" ) diff --git a/openflare-server/controller/dashboard.go b/openflare-server/internal/controller/dashboard.go similarity index 97% rename from openflare-server/controller/dashboard.go rename to openflare-server/internal/controller/dashboard.go index 96fdb7c1..c00db3e4 100644 --- a/openflare-server/controller/dashboard.go +++ b/openflare-server/internal/controller/dashboard.go @@ -1,8 +1,8 @@ package controller import ( - "github.com/rain-kl/openflare/openflare-server/common/response" - "github.com/rain-kl/openflare/openflare-server/service" + "github.com/rain-kl/openflare/openflare-server/internal/common/response" + "github.com/rain-kl/openflare/openflare-server/internal/service" "github.com/gin-gonic/gin" ) diff --git a/openflare-server/controller/database.go b/openflare-server/internal/controller/database.go similarity index 76% rename from openflare-server/controller/database.go rename to openflare-server/internal/controller/database.go index 939cb7bb..b207a757 100644 --- a/openflare-server/controller/database.go +++ b/openflare-server/internal/controller/database.go @@ -1,9 +1,9 @@ package controller import ( - "github.com/rain-kl/openflare/openflare-server/common/response" - "github.com/rain-kl/openflare/openflare-server/controller/bind" - "github.com/rain-kl/openflare/openflare-server/service" + "github.com/rain-kl/openflare/openflare-server/internal/common/response" + "github.com/rain-kl/openflare/openflare-server/internal/controller/bind" + "github.com/rain-kl/openflare/openflare-server/internal/service" "github.com/gin-gonic/gin" ) diff --git a/openflare-server/controller/dns_account.go b/openflare-server/internal/controller/dns_account.go similarity index 93% rename from openflare-server/controller/dns_account.go rename to openflare-server/internal/controller/dns_account.go index ba1961ad..2690c8fc 100644 --- a/openflare-server/controller/dns_account.go +++ b/openflare-server/internal/controller/dns_account.go @@ -1,9 +1,9 @@ package controller import ( - "github.com/rain-kl/openflare/openflare-server/common/response" - "github.com/rain-kl/openflare/openflare-server/controller/bind" - "github.com/rain-kl/openflare/openflare-server/model" + "github.com/rain-kl/openflare/openflare-server/internal/common/response" + "github.com/rain-kl/openflare/openflare-server/internal/controller/bind" + "github.com/rain-kl/openflare/openflare-server/internal/model" "github.com/gin-gonic/gin" ) diff --git a/openflare-server/controller/flared.go b/openflare-server/internal/controller/flared.go similarity index 93% rename from openflare-server/controller/flared.go rename to openflare-server/internal/controller/flared.go index 575c949d..0c9eb2fb 100644 --- a/openflare-server/controller/flared.go +++ b/openflare-server/internal/controller/flared.go @@ -5,11 +5,11 @@ import ( "net" "time" - "github.com/rain-kl/openflare/openflare-server/common" - "github.com/rain-kl/openflare/openflare-server/common/response" - "github.com/rain-kl/openflare/openflare-server/controller/bind" - "github.com/rain-kl/openflare/openflare-server/model" - "github.com/rain-kl/openflare/openflare-server/service" + "github.com/rain-kl/openflare/openflare-server/internal/common" + "github.com/rain-kl/openflare/openflare-server/internal/common/response" + "github.com/rain-kl/openflare/openflare-server/internal/controller/bind" + "github.com/rain-kl/openflare/openflare-server/internal/model" + "github.com/rain-kl/openflare/openflare-server/internal/service" "github.com/gin-gonic/gin" "golang.org/x/net/websocket" diff --git a/openflare-server/controller/geoip.go b/openflare-server/internal/controller/geoip.go similarity index 77% rename from openflare-server/controller/geoip.go rename to openflare-server/internal/controller/geoip.go index df5ac035..5edb5f3e 100644 --- a/openflare-server/controller/geoip.go +++ b/openflare-server/internal/controller/geoip.go @@ -1,9 +1,9 @@ package controller import ( - "github.com/rain-kl/openflare/openflare-server/common/response" - "github.com/rain-kl/openflare/openflare-server/controller/bind" - "github.com/rain-kl/openflare/openflare-server/service" + "github.com/rain-kl/openflare/openflare-server/internal/common/response" + "github.com/rain-kl/openflare/openflare-server/internal/controller/bind" + "github.com/rain-kl/openflare/openflare-server/internal/service" "github.com/gin-gonic/gin" ) diff --git a/openflare-server/controller/github.go b/openflare-server/internal/controller/github.go similarity index 95% rename from openflare-server/controller/github.go rename to openflare-server/internal/controller/github.go index 461b8b7e..a6f832cc 100644 --- a/openflare-server/controller/github.go +++ b/openflare-server/internal/controller/github.go @@ -9,9 +9,9 @@ import ( "net/http" "time" - "github.com/rain-kl/openflare/openflare-server/common" - "github.com/rain-kl/openflare/openflare-server/common/response" - "github.com/rain-kl/openflare/openflare-server/model" + "github.com/rain-kl/openflare/openflare-server/internal/common" + "github.com/rain-kl/openflare/openflare-server/internal/common/response" + "github.com/rain-kl/openflare/openflare-server/internal/model" "github.com/gin-gonic/gin" ) diff --git a/openflare-server/controller/managed_domain.go b/openflare-server/internal/controller/managed_domain.go similarity index 93% rename from openflare-server/controller/managed_domain.go rename to openflare-server/internal/controller/managed_domain.go index bd2c4b44..9cdcbbb6 100644 --- a/openflare-server/controller/managed_domain.go +++ b/openflare-server/internal/controller/managed_domain.go @@ -3,9 +3,9 @@ package controller import ( "strings" - "github.com/rain-kl/openflare/openflare-server/common/response" - "github.com/rain-kl/openflare/openflare-server/controller/bind" - "github.com/rain-kl/openflare/openflare-server/service" + "github.com/rain-kl/openflare/openflare-server/internal/common/response" + "github.com/rain-kl/openflare/openflare-server/internal/controller/bind" + "github.com/rain-kl/openflare/openflare-server/internal/service" "github.com/gin-gonic/gin" ) diff --git a/openflare-server/controller/misc.go b/openflare-server/internal/controller/misc.go similarity index 89% rename from openflare-server/controller/misc.go rename to openflare-server/internal/controller/misc.go index 023a9ac8..1a9dec6f 100644 --- a/openflare-server/controller/misc.go +++ b/openflare-server/internal/controller/misc.go @@ -3,14 +3,14 @@ package controller import ( "fmt" - "github.com/rain-kl/openflare/openflare-server/common" - "github.com/rain-kl/openflare/openflare-server/common/response" - "github.com/rain-kl/openflare/openflare-server/controller/bind" - "github.com/rain-kl/openflare/openflare-server/model" - "github.com/rain-kl/openflare/openflare-server/service" - "github.com/rain-kl/openflare/openflare-server/utils/mail" - "github.com/rain-kl/openflare/openflare-server/utils/security" - "github.com/rain-kl/openflare/openflare-server/utils/validation" + "github.com/rain-kl/openflare/openflare-server/internal/common" + "github.com/rain-kl/openflare/openflare-server/internal/common/response" + "github.com/rain-kl/openflare/openflare-server/internal/controller/bind" + "github.com/rain-kl/openflare/openflare-server/internal/model" + "github.com/rain-kl/openflare/openflare-server/internal/service" + "github.com/rain-kl/openflare/openflare-server/internal/utils/mail" + "github.com/rain-kl/openflare/openflare-server/internal/utils/security" + "github.com/rain-kl/openflare/openflare-server/internal/utils/validation" "github.com/gin-gonic/gin" ) diff --git a/openflare-server/controller/node.go b/openflare-server/internal/controller/node.go similarity index 97% rename from openflare-server/controller/node.go rename to openflare-server/internal/controller/node.go index 1d333d9f..a562d70a 100644 --- a/openflare-server/controller/node.go +++ b/openflare-server/internal/controller/node.go @@ -1,9 +1,9 @@ package controller import ( - "github.com/rain-kl/openflare/openflare-server/common/response" - "github.com/rain-kl/openflare/openflare-server/controller/bind" - "github.com/rain-kl/openflare/openflare-server/service" + "github.com/rain-kl/openflare/openflare-server/internal/common/response" + "github.com/rain-kl/openflare/openflare-server/internal/controller/bind" + "github.com/rain-kl/openflare/openflare-server/internal/service" "github.com/gin-gonic/gin" ) diff --git a/openflare-server/controller/option.go b/openflare-server/internal/controller/option.go similarity index 96% rename from openflare-server/controller/option.go rename to openflare-server/internal/controller/option.go index 68c1cc5e..e1de2ff8 100644 --- a/openflare-server/controller/option.go +++ b/openflare-server/internal/controller/option.go @@ -6,13 +6,13 @@ import ( "strconv" "strings" - "github.com/rain-kl/openflare/openflare-server/common" - "github.com/rain-kl/openflare/openflare-server/common/response" - "github.com/rain-kl/openflare/openflare-server/controller/bind" - "github.com/rain-kl/openflare/openflare-server/model" - "github.com/rain-kl/openflare/openflare-server/service" - "github.com/rain-kl/openflare/openflare-server/utils" - "github.com/rain-kl/openflare/openflare-server/utils/geoip" + "github.com/rain-kl/openflare/openflare-server/internal/common" + "github.com/rain-kl/openflare/openflare-server/internal/common/response" + "github.com/rain-kl/openflare/openflare-server/internal/controller/bind" + "github.com/rain-kl/openflare/openflare-server/internal/model" + "github.com/rain-kl/openflare/openflare-server/internal/service" + "github.com/rain-kl/openflare/pkg/geoip" + "github.com/rain-kl/openflare/pkg/utils" "github.com/gin-gonic/gin" ) diff --git a/openflare-server/controller/option_test.go b/openflare-server/internal/controller/option_test.go similarity index 100% rename from openflare-server/controller/option_test.go rename to openflare-server/internal/controller/option_test.go diff --git a/openflare-server/controller/origin.go b/openflare-server/internal/controller/origin.go similarity index 85% rename from openflare-server/controller/origin.go rename to openflare-server/internal/controller/origin.go index 3482343e..84b09ef6 100644 --- a/openflare-server/controller/origin.go +++ b/openflare-server/internal/controller/origin.go @@ -1,9 +1,9 @@ package controller import ( - "github.com/rain-kl/openflare/openflare-server/common/response" - "github.com/rain-kl/openflare/openflare-server/controller/bind" - "github.com/rain-kl/openflare/openflare-server/service" + "github.com/rain-kl/openflare/openflare-server/internal/common/response" + "github.com/rain-kl/openflare/openflare-server/internal/controller/bind" + "github.com/rain-kl/openflare/openflare-server/internal/service" "github.com/gin-gonic/gin" ) diff --git a/openflare-server/controller/pages.go b/openflare-server/internal/controller/pages.go similarity index 94% rename from openflare-server/controller/pages.go rename to openflare-server/internal/controller/pages.go index 8075fad1..c5694326 100644 --- a/openflare-server/controller/pages.go +++ b/openflare-server/internal/controller/pages.go @@ -1,9 +1,9 @@ package controller import ( - "github.com/rain-kl/openflare/openflare-server/common/response" - "github.com/rain-kl/openflare/openflare-server/controller/bind" - "github.com/rain-kl/openflare/openflare-server/service" + "github.com/rain-kl/openflare/openflare-server/internal/common/response" + "github.com/rain-kl/openflare/openflare-server/internal/controller/bind" + "github.com/rain-kl/openflare/openflare-server/internal/service" "github.com/gin-gonic/gin" ) diff --git a/openflare-server/controller/proxy_route.go b/openflare-server/internal/controller/proxy_route.go similarity index 93% rename from openflare-server/controller/proxy_route.go rename to openflare-server/internal/controller/proxy_route.go index 9764bfcc..310bb792 100644 --- a/openflare-server/controller/proxy_route.go +++ b/openflare-server/internal/controller/proxy_route.go @@ -1,9 +1,9 @@ package controller import ( - "github.com/rain-kl/openflare/openflare-server/common/response" - "github.com/rain-kl/openflare/openflare-server/controller/bind" - "github.com/rain-kl/openflare/openflare-server/service" + "github.com/rain-kl/openflare/openflare-server/internal/common/response" + "github.com/rain-kl/openflare/openflare-server/internal/controller/bind" + "github.com/rain-kl/openflare/openflare-server/internal/service" "github.com/gin-gonic/gin" ) diff --git a/openflare-server/controller/relay.go b/openflare-server/internal/controller/relay.go similarity index 92% rename from openflare-server/controller/relay.go rename to openflare-server/internal/controller/relay.go index e8b3d36c..828127eb 100644 --- a/openflare-server/controller/relay.go +++ b/openflare-server/internal/controller/relay.go @@ -5,10 +5,10 @@ import ( "net" "time" - "github.com/rain-kl/openflare/openflare-server/common/response" - "github.com/rain-kl/openflare/openflare-server/controller/bind" - "github.com/rain-kl/openflare/openflare-server/model" - "github.com/rain-kl/openflare/openflare-server/service" + "github.com/rain-kl/openflare/openflare-server/internal/common/response" + "github.com/rain-kl/openflare/openflare-server/internal/controller/bind" + "github.com/rain-kl/openflare/openflare-server/internal/model" + "github.com/rain-kl/openflare/openflare-server/internal/service" "github.com/gin-gonic/gin" "golang.org/x/net/websocket" diff --git a/openflare-server/controller/tls_certificate.go b/openflare-server/internal/controller/tls_certificate.go similarity index 97% rename from openflare-server/controller/tls_certificate.go rename to openflare-server/internal/controller/tls_certificate.go index 960c8e29..fbfb96c9 100644 --- a/openflare-server/controller/tls_certificate.go +++ b/openflare-server/internal/controller/tls_certificate.go @@ -1,9 +1,9 @@ package controller import ( - "github.com/rain-kl/openflare/openflare-server/common/response" - "github.com/rain-kl/openflare/openflare-server/controller/bind" - "github.com/rain-kl/openflare/openflare-server/service" + "github.com/rain-kl/openflare/openflare-server/internal/common/response" + "github.com/rain-kl/openflare/openflare-server/internal/controller/bind" + "github.com/rain-kl/openflare/openflare-server/internal/service" "github.com/gin-gonic/gin" ) diff --git a/openflare-server/controller/update.go b/openflare-server/internal/controller/update.go similarity index 95% rename from openflare-server/controller/update.go rename to openflare-server/internal/controller/update.go index 49236213..f0988b11 100644 --- a/openflare-server/controller/update.go +++ b/openflare-server/internal/controller/update.go @@ -3,9 +3,9 @@ package controller import ( "time" - "github.com/rain-kl/openflare/openflare-server/common/response" - "github.com/rain-kl/openflare/openflare-server/controller/bind" - "github.com/rain-kl/openflare/openflare-server/service" + "github.com/rain-kl/openflare/openflare-server/internal/common/response" + "github.com/rain-kl/openflare/openflare-server/internal/controller/bind" + "github.com/rain-kl/openflare/openflare-server/internal/service" "github.com/gin-gonic/gin" "golang.org/x/net/websocket" diff --git a/openflare-server/controller/uptimekuma.go b/openflare-server/internal/controller/uptimekuma.go similarity index 78% rename from openflare-server/controller/uptimekuma.go rename to openflare-server/internal/controller/uptimekuma.go index 5585b351..11ee836c 100644 --- a/openflare-server/controller/uptimekuma.go +++ b/openflare-server/internal/controller/uptimekuma.go @@ -1,8 +1,8 @@ package controller import ( - "github.com/rain-kl/openflare/openflare-server/common/response" - "github.com/rain-kl/openflare/openflare-server/service" + "github.com/rain-kl/openflare/openflare-server/internal/common/response" + "github.com/rain-kl/openflare/openflare-server/internal/service" "github.com/gin-gonic/gin" ) diff --git a/openflare-server/controller/user.go b/openflare-server/internal/controller/user.go similarity index 95% rename from openflare-server/controller/user.go rename to openflare-server/internal/controller/user.go index 06b008f3..9e889d82 100644 --- a/openflare-server/controller/user.go +++ b/openflare-server/internal/controller/user.go @@ -3,13 +3,13 @@ package controller import ( "strconv" - "github.com/rain-kl/openflare/openflare-server/common" - "github.com/rain-kl/openflare/openflare-server/common/response" - "github.com/rain-kl/openflare/openflare-server/controller/bind" - "github.com/rain-kl/openflare/openflare-server/middleware" - "github.com/rain-kl/openflare/openflare-server/model" - "github.com/rain-kl/openflare/openflare-server/utils/security" - "github.com/rain-kl/openflare/openflare-server/utils/validation" + "github.com/rain-kl/openflare/openflare-server/internal/common" + "github.com/rain-kl/openflare/openflare-server/internal/common/response" + "github.com/rain-kl/openflare/openflare-server/internal/controller/bind" + "github.com/rain-kl/openflare/openflare-server/internal/middleware" + "github.com/rain-kl/openflare/openflare-server/internal/model" + "github.com/rain-kl/openflare/openflare-server/internal/utils/security" + "github.com/rain-kl/openflare/openflare-server/internal/utils/validation" "github.com/gin-gonic/gin" ) diff --git a/openflare-server/controller/waf.go b/openflare-server/internal/controller/waf.go similarity index 95% rename from openflare-server/controller/waf.go rename to openflare-server/internal/controller/waf.go index f7482a16..a6eac65e 100644 --- a/openflare-server/controller/waf.go +++ b/openflare-server/internal/controller/waf.go @@ -3,9 +3,9 @@ package controller import ( "strconv" - "github.com/rain-kl/openflare/openflare-server/common/response" - "github.com/rain-kl/openflare/openflare-server/controller/bind" - "github.com/rain-kl/openflare/openflare-server/service" + "github.com/rain-kl/openflare/openflare-server/internal/common/response" + "github.com/rain-kl/openflare/openflare-server/internal/controller/bind" + "github.com/rain-kl/openflare/openflare-server/internal/service" "github.com/gin-gonic/gin" ) diff --git a/openflare-server/controller/wechat.go b/openflare-server/internal/controller/wechat.go similarity index 92% rename from openflare-server/controller/wechat.go rename to openflare-server/internal/controller/wechat.go index 9d5cbc66..1af43935 100644 --- a/openflare-server/controller/wechat.go +++ b/openflare-server/internal/controller/wechat.go @@ -9,9 +9,9 @@ import ( "net/http" "time" - "github.com/rain-kl/openflare/openflare-server/common" - "github.com/rain-kl/openflare/openflare-server/common/response" - "github.com/rain-kl/openflare/openflare-server/model" + "github.com/rain-kl/openflare/openflare-server/internal/common" + "github.com/rain-kl/openflare/openflare-server/internal/common/response" + "github.com/rain-kl/openflare/openflare-server/internal/model" "github.com/gin-gonic/gin" ) diff --git a/openflare-server/job/cron.go b/openflare-server/internal/job/cron.go similarity index 100% rename from openflare-server/job/cron.go rename to openflare-server/internal/job/cron.go diff --git a/openflare-server/job/ssl_renew.go b/openflare-server/internal/job/ssl_renew.go similarity index 89% rename from openflare-server/job/ssl_renew.go rename to openflare-server/internal/job/ssl_renew.go index f7a15d11..282c2aee 100644 --- a/openflare-server/job/ssl_renew.go +++ b/openflare-server/internal/job/ssl_renew.go @@ -4,8 +4,8 @@ import ( "log/slog" "time" - "github.com/rain-kl/openflare/openflare-server/model" - "github.com/rain-kl/openflare/openflare-server/service" + "github.com/rain-kl/openflare/openflare-server/internal/model" + "github.com/rain-kl/openflare/openflare-server/internal/service" ) type SSLRenewJob struct { diff --git a/openflare-server/job/uptimekuma.go b/openflare-server/internal/job/uptimekuma.go similarity index 86% rename from openflare-server/job/uptimekuma.go rename to openflare-server/internal/job/uptimekuma.go index b092ef70..f8410656 100644 --- a/openflare-server/job/uptimekuma.go +++ b/openflare-server/internal/job/uptimekuma.go @@ -5,8 +5,8 @@ import ( "sync" "time" - "github.com/rain-kl/openflare/openflare-server/common" - "github.com/rain-kl/openflare/openflare-server/service" + "github.com/rain-kl/openflare/openflare-server/internal/common" + "github.com/rain-kl/openflare/openflare-server/internal/service" ) var lastUptimeKumaSyncTime time.Time diff --git a/openflare-server/job/waf_ip_group_sync.go b/openflare-server/internal/job/waf_ip_group_sync.go similarity index 77% rename from openflare-server/job/waf_ip_group_sync.go rename to openflare-server/internal/job/waf_ip_group_sync.go index 0b0edc7f..77e86772 100644 --- a/openflare-server/job/waf_ip_group_sync.go +++ b/openflare-server/internal/job/waf_ip_group_sync.go @@ -3,7 +3,7 @@ package job import ( "log/slog" - "github.com/rain-kl/openflare/openflare-server/service" + "github.com/rain-kl/openflare/openflare-server/internal/service" ) type WAFIPGroupSyncJob struct{} diff --git a/openflare-server/middleware/agent-auth.go b/openflare-server/internal/middleware/agent-auth.go similarity index 86% rename from openflare-server/middleware/agent-auth.go rename to openflare-server/internal/middleware/agent-auth.go index 898a497a..f30e29dd 100644 --- a/openflare-server/middleware/agent-auth.go +++ b/openflare-server/internal/middleware/agent-auth.go @@ -2,8 +2,8 @@ package middleware import ( "github.com/gin-gonic/gin" - "github.com/rain-kl/openflare/openflare-server/common/response" - "github.com/rain-kl/openflare/openflare-server/service" + "github.com/rain-kl/openflare/openflare-server/internal/common/response" + "github.com/rain-kl/openflare/openflare-server/internal/service" ) func AgentAuth() func(c *gin.Context) { diff --git a/openflare-server/middleware/auth.go b/openflare-server/internal/middleware/auth.go similarity index 91% rename from openflare-server/middleware/auth.go rename to openflare-server/internal/middleware/auth.go index 88ec0b9a..4fbd3e83 100644 --- a/openflare-server/middleware/auth.go +++ b/openflare-server/internal/middleware/auth.go @@ -1,9 +1,9 @@ package middleware import ( - "github.com/rain-kl/openflare/openflare-server/common" - "github.com/rain-kl/openflare/openflare-server/common/response" - "github.com/rain-kl/openflare/openflare-server/model" + "github.com/rain-kl/openflare/openflare-server/internal/common" + "github.com/rain-kl/openflare/openflare-server/internal/common/response" + "github.com/rain-kl/openflare/openflare-server/internal/model" jwt "github.com/appleboy/gin-jwt/v2" "github.com/gin-gonic/gin" diff --git a/openflare-server/middleware/cache.go b/openflare-server/internal/middleware/cache.go similarity index 100% rename from openflare-server/middleware/cache.go rename to openflare-server/internal/middleware/cache.go diff --git a/openflare-server/middleware/cap.go b/openflare-server/internal/middleware/cap.go similarity index 70% rename from openflare-server/middleware/cap.go rename to openflare-server/internal/middleware/cap.go index e7e430ef..50f3854f 100644 --- a/openflare-server/middleware/cap.go +++ b/openflare-server/internal/middleware/cap.go @@ -2,8 +2,8 @@ package middleware import ( "github.com/gin-gonic/gin" - "github.com/rain-kl/openflare/openflare-server/common" - "github.com/rain-kl/openflare/openflare-server/service" + "github.com/rain-kl/openflare/openflare-server/internal/common" + "github.com/rain-kl/openflare/openflare-server/internal/service" ) // CapAuth wraps the core Cap middleware with OpenFlare's dynamic CapLoginEnabled configuration switch diff --git a/openflare-server/middleware/cors.go b/openflare-server/internal/middleware/cors.go similarity index 90% rename from openflare-server/middleware/cors.go rename to openflare-server/internal/middleware/cors.go index 8d9bc02d..93efc7e1 100644 --- a/openflare-server/middleware/cors.go +++ b/openflare-server/internal/middleware/cors.go @@ -3,7 +3,7 @@ package middleware import ( "strings" - "github.com/rain-kl/openflare/openflare-server/common" + "github.com/rain-kl/openflare/openflare-server/internal/common" "github.com/gin-contrib/cors" "github.com/gin-gonic/gin" diff --git a/openflare-server/middleware/jwt.go b/openflare-server/internal/middleware/jwt.go similarity index 89% rename from openflare-server/middleware/jwt.go rename to openflare-server/internal/middleware/jwt.go index 9bc409c5..89106762 100644 --- a/openflare-server/middleware/jwt.go +++ b/openflare-server/internal/middleware/jwt.go @@ -4,9 +4,9 @@ import ( "log" "time" - "github.com/rain-kl/openflare/openflare-server/common" - "github.com/rain-kl/openflare/openflare-server/common/response" - "github.com/rain-kl/openflare/openflare-server/model" + "github.com/rain-kl/openflare/openflare-server/internal/common" + "github.com/rain-kl/openflare/openflare-server/internal/common/response" + "github.com/rain-kl/openflare/openflare-server/internal/model" jwt "github.com/appleboy/gin-jwt/v2" "github.com/gin-gonic/gin" diff --git a/openflare-server/middleware/rate-limit.go b/openflare-server/internal/middleware/rate-limit.go similarity index 95% rename from openflare-server/middleware/rate-limit.go rename to openflare-server/internal/middleware/rate-limit.go index b9f82723..63ca4a6a 100644 --- a/openflare-server/middleware/rate-limit.go +++ b/openflare-server/internal/middleware/rate-limit.go @@ -6,8 +6,8 @@ import ( "net/http" "time" - "github.com/rain-kl/openflare/openflare-server/common" - "github.com/rain-kl/openflare/openflare-server/utils/ratelimit" + "github.com/rain-kl/openflare/openflare-server/internal/common" + "github.com/rain-kl/openflare/openflare-server/internal/utils/ratelimit" "github.com/gin-gonic/gin" ) diff --git a/openflare-server/middleware/relay-auth.go b/openflare-server/internal/middleware/relay-auth.go similarity index 82% rename from openflare-server/middleware/relay-auth.go rename to openflare-server/internal/middleware/relay-auth.go index 3f846aa7..d62da3cd 100644 --- a/openflare-server/middleware/relay-auth.go +++ b/openflare-server/internal/middleware/relay-auth.go @@ -2,8 +2,8 @@ package middleware import ( "github.com/gin-gonic/gin" - "github.com/rain-kl/openflare/openflare-server/common/response" - "github.com/rain-kl/openflare/openflare-server/service" + "github.com/rain-kl/openflare/openflare-server/internal/common/response" + "github.com/rain-kl/openflare/openflare-server/internal/service" ) // RelayAuth authenticates Relay requests using the shared agent token, diff --git a/openflare-server/middleware/tunnel-auth.go b/openflare-server/internal/middleware/tunnel-auth.go similarity index 83% rename from openflare-server/middleware/tunnel-auth.go rename to openflare-server/internal/middleware/tunnel-auth.go index abf35548..c9347760 100644 --- a/openflare-server/middleware/tunnel-auth.go +++ b/openflare-server/internal/middleware/tunnel-auth.go @@ -1,8 +1,8 @@ package middleware import ( - "github.com/rain-kl/openflare/openflare-server/common/response" - "github.com/rain-kl/openflare/openflare-server/service" + "github.com/rain-kl/openflare/openflare-server/internal/common/response" + "github.com/rain-kl/openflare/openflare-server/internal/service" "github.com/gin-gonic/gin" ) diff --git a/openflare-server/model/acme_account.go b/openflare-server/internal/model/acme_account.go similarity index 100% rename from openflare-server/model/acme_account.go rename to openflare-server/internal/model/acme_account.go diff --git a/openflare-server/model/apply_log.go b/openflare-server/internal/model/apply_log.go similarity index 100% rename from openflare-server/model/apply_log.go rename to openflare-server/internal/model/apply_log.go diff --git a/openflare-server/model/auth_source.go b/openflare-server/internal/model/auth_source.go similarity index 99% rename from openflare-server/model/auth_source.go rename to openflare-server/internal/model/auth_source.go index 1ecaf7df..4e3faa65 100644 --- a/openflare-server/model/auth_source.go +++ b/openflare-server/internal/model/auth_source.go @@ -6,7 +6,7 @@ import ( "strings" "time" - "github.com/rain-kl/openflare/openflare-server/utils" + "github.com/rain-kl/openflare/pkg/utils" "gorm.io/gorm" ) diff --git a/openflare-server/model/config_version.go b/openflare-server/internal/model/config_version.go similarity index 100% rename from openflare-server/model/config_version.go rename to openflare-server/internal/model/config_version.go diff --git a/openflare-server/model/database_schema_version.go b/openflare-server/internal/model/database_schema_version.go similarity index 90% rename from openflare-server/model/database_schema_version.go rename to openflare-server/internal/model/database_schema_version.go index 4ceeb0f6..cb356324 100644 --- a/openflare-server/model/database_schema_version.go +++ b/openflare-server/internal/model/database_schema_version.go @@ -3,7 +3,7 @@ package model import ( "time" - "github.com/rain-kl/openflare/openflare-server/model/migrate" + "github.com/rain-kl/openflare/openflare-server/internal/model/migrate" ) const ( diff --git a/openflare-server/model/dns_account.go b/openflare-server/internal/model/dns_account.go similarity index 100% rename from openflare-server/model/dns_account.go rename to openflare-server/internal/model/dns_account.go diff --git a/openflare-server/model/goose/bridge.go b/openflare-server/internal/model/goose/bridge.go similarity index 100% rename from openflare-server/model/goose/bridge.go rename to openflare-server/internal/model/goose/bridge.go diff --git a/openflare-server/model/goose/goose_202606020001_add_node_capabilities_json.go b/openflare-server/internal/model/goose/goose_202606020001_add_node_capabilities_json.go similarity index 100% rename from openflare-server/model/goose/goose_202606020001_add_node_capabilities_json.go rename to openflare-server/internal/model/goose/goose_202606020001_add_node_capabilities_json.go diff --git a/openflare-server/model/goose/goose_202606030001_add_pages_static_hosting.go b/openflare-server/internal/model/goose/goose_202606030001_add_pages_static_hosting.go similarity index 100% rename from openflare-server/model/goose/goose_202606030001_add_pages_static_hosting.go rename to openflare-server/internal/model/goose/goose_202606030001_add_pages_static_hosting.go diff --git a/openflare-server/model/goose/goose_202606030002_add_pages_spa_fallback_path.go b/openflare-server/internal/model/goose/goose_202606030002_add_pages_spa_fallback_path.go similarity index 100% rename from openflare-server/model/goose/goose_202606030002_add_pages_spa_fallback_path.go rename to openflare-server/internal/model/goose/goose_202606030002_add_pages_spa_fallback_path.go diff --git a/openflare-server/model/goose/goose_202606030003_drop_proxy_route_legacy_pow.go b/openflare-server/internal/model/goose/goose_202606030003_drop_proxy_route_legacy_pow.go similarity index 100% rename from openflare-server/model/goose/goose_202606030003_drop_proxy_route_legacy_pow.go rename to openflare-server/internal/model/goose/goose_202606030003_drop_proxy_route_legacy_pow.go diff --git a/openflare-server/model/goose/goose_202606040004_add_pages_features_and_cleanup.go b/openflare-server/internal/model/goose/goose_202606040004_add_pages_features_and_cleanup.go similarity index 100% rename from openflare-server/model/goose/goose_202606040004_add_pages_features_and_cleanup.go rename to openflare-server/internal/model/goose/goose_202606040004_add_pages_features_and_cleanup.go diff --git a/openflare-server/model/goose/migrations.go b/openflare-server/internal/model/goose/migrations.go similarity index 100% rename from openflare-server/model/goose/migrations.go rename to openflare-server/internal/model/goose/migrations.go diff --git a/openflare-server/model/goose/provider.go b/openflare-server/internal/model/goose/provider.go similarity index 100% rename from openflare-server/model/goose/provider.go rename to openflare-server/internal/model/goose/provider.go diff --git a/openflare-server/model/main.go b/openflare-server/internal/model/main.go similarity index 98% rename from openflare-server/model/main.go rename to openflare-server/internal/model/main.go index ceec0457..13c34a7c 100644 --- a/openflare-server/model/main.go +++ b/openflare-server/internal/model/main.go @@ -8,8 +8,8 @@ import ( "strings" "sync" - "github.com/rain-kl/openflare/openflare-server/common" - "github.com/rain-kl/openflare/openflare-server/utils/security" + "github.com/rain-kl/openflare/openflare-server/internal/common" + "github.com/rain-kl/openflare/openflare-server/internal/utils/security" "github.com/glebarez/sqlite" "gorm.io/driver/postgres" diff --git a/openflare-server/model/main_test.go b/openflare-server/internal/model/main_test.go similarity index 100% rename from openflare-server/model/main_test.go rename to openflare-server/internal/model/main_test.go diff --git a/openflare-server/model/managed_domain.go b/openflare-server/internal/model/managed_domain.go similarity index 100% rename from openflare-server/model/managed_domain.go rename to openflare-server/internal/model/managed_domain.go diff --git a/openflare-server/model/migrate/initial.go b/openflare-server/internal/model/migrate/initial.go similarity index 100% rename from openflare-server/model/migrate/initial.go rename to openflare-server/internal/model/migrate/initial.go diff --git a/openflare-server/model/migrate/migration.go b/openflare-server/internal/model/migrate/migration.go similarity index 100% rename from openflare-server/model/migrate/migration.go rename to openflare-server/internal/model/migrate/migration.go diff --git a/openflare-server/model/migrate/migration_test.go b/openflare-server/internal/model/migrate/migration_test.go similarity index 100% rename from openflare-server/model/migrate/migration_test.go rename to openflare-server/internal/model/migrate/migration_test.go diff --git a/openflare-server/model/migrate/v10.go b/openflare-server/internal/model/migrate/v10.go similarity index 100% rename from openflare-server/model/migrate/v10.go rename to openflare-server/internal/model/migrate/v10.go diff --git a/openflare-server/model/migrate/v11.go b/openflare-server/internal/model/migrate/v11.go similarity index 100% rename from openflare-server/model/migrate/v11.go rename to openflare-server/internal/model/migrate/v11.go diff --git a/openflare-server/model/migrate/v12.go b/openflare-server/internal/model/migrate/v12.go similarity index 100% rename from openflare-server/model/migrate/v12.go rename to openflare-server/internal/model/migrate/v12.go diff --git a/openflare-server/model/migrate/v13.go b/openflare-server/internal/model/migrate/v13.go similarity index 100% rename from openflare-server/model/migrate/v13.go rename to openflare-server/internal/model/migrate/v13.go diff --git a/openflare-server/model/migrate/v14.go b/openflare-server/internal/model/migrate/v14.go similarity index 100% rename from openflare-server/model/migrate/v14.go rename to openflare-server/internal/model/migrate/v14.go diff --git a/openflare-server/model/migrate/v15.go b/openflare-server/internal/model/migrate/v15.go similarity index 100% rename from openflare-server/model/migrate/v15.go rename to openflare-server/internal/model/migrate/v15.go diff --git a/openflare-server/model/migrate/v16.go b/openflare-server/internal/model/migrate/v16.go similarity index 100% rename from openflare-server/model/migrate/v16.go rename to openflare-server/internal/model/migrate/v16.go diff --git a/openflare-server/model/migrate/v17.go b/openflare-server/internal/model/migrate/v17.go similarity index 100% rename from openflare-server/model/migrate/v17.go rename to openflare-server/internal/model/migrate/v17.go diff --git a/openflare-server/model/migrate/v8.go b/openflare-server/internal/model/migrate/v8.go similarity index 100% rename from openflare-server/model/migrate/v8.go rename to openflare-server/internal/model/migrate/v8.go diff --git a/openflare-server/model/migrate/v9.go b/openflare-server/internal/model/migrate/v9.go similarity index 100% rename from openflare-server/model/migrate/v9.go rename to openflare-server/internal/model/migrate/v9.go diff --git a/openflare-server/model/migrations.go b/openflare-server/internal/model/migrations.go similarity index 99% rename from openflare-server/model/migrations.go rename to openflare-server/internal/model/migrations.go index 7aaf7bf9..797d50d0 100644 --- a/openflare-server/model/migrations.go +++ b/openflare-server/internal/model/migrations.go @@ -12,7 +12,7 @@ import ( "strings" "sync" - schemamigrate "github.com/rain-kl/openflare/openflare-server/model/migrate" + schemamigrate "github.com/rain-kl/openflare/openflare-server/internal/model/migrate" "gorm.io/gorm" "gorm.io/gorm/schema" diff --git a/openflare-server/model/node.go b/openflare-server/internal/model/node.go similarity index 100% rename from openflare-server/model/node.go rename to openflare-server/internal/model/node.go diff --git a/openflare-server/model/node_access_log.go b/openflare-server/internal/model/node_access_log.go similarity index 100% rename from openflare-server/model/node_access_log.go rename to openflare-server/internal/model/node_access_log.go diff --git a/openflare-server/model/node_health_event.go b/openflare-server/internal/model/node_health_event.go similarity index 100% rename from openflare-server/model/node_health_event.go rename to openflare-server/internal/model/node_health_event.go diff --git a/openflare-server/model/node_metric_snapshot.go b/openflare-server/internal/model/node_metric_snapshot.go similarity index 98% rename from openflare-server/model/node_metric_snapshot.go rename to openflare-server/internal/model/node_metric_snapshot.go index 61b5b9d2..b7a6f40a 100644 --- a/openflare-server/model/node_metric_snapshot.go +++ b/openflare-server/internal/model/node_metric_snapshot.go @@ -3,7 +3,7 @@ package model import ( "time" - "github.com/rain-kl/openflare/openflare-server/utils" + "github.com/rain-kl/openflare/pkg/utils" "gorm.io/gorm" ) diff --git a/openflare-server/model/node_observation_frpc.go b/openflare-server/internal/model/node_observation_frpc.go similarity index 96% rename from openflare-server/model/node_observation_frpc.go rename to openflare-server/internal/model/node_observation_frpc.go index edd5397b..5a5f6fcc 100644 --- a/openflare-server/model/node_observation_frpc.go +++ b/openflare-server/internal/model/node_observation_frpc.go @@ -3,7 +3,7 @@ package model import ( "time" - "github.com/rain-kl/openflare/openflare-server/utils" + "github.com/rain-kl/openflare/pkg/utils" "gorm.io/gorm" ) diff --git a/openflare-server/model/node_observation_frps.go b/openflare-server/internal/model/node_observation_frps.go similarity index 97% rename from openflare-server/model/node_observation_frps.go rename to openflare-server/internal/model/node_observation_frps.go index 9f5d9a72..4f195c44 100644 --- a/openflare-server/model/node_observation_frps.go +++ b/openflare-server/internal/model/node_observation_frps.go @@ -3,7 +3,7 @@ package model import ( "time" - "github.com/rain-kl/openflare/openflare-server/utils" + "github.com/rain-kl/openflare/pkg/utils" "gorm.io/gorm" ) diff --git a/openflare-server/model/node_observation_openresty.go b/openflare-server/internal/model/node_observation_openresty.go similarity index 97% rename from openflare-server/model/node_observation_openresty.go rename to openflare-server/internal/model/node_observation_openresty.go index c823d1bd..a2cb5e8c 100644 --- a/openflare-server/model/node_observation_openresty.go +++ b/openflare-server/internal/model/node_observation_openresty.go @@ -3,7 +3,7 @@ package model import ( "time" - "github.com/rain-kl/openflare/openflare-server/utils" + "github.com/rain-kl/openflare/pkg/utils" "gorm.io/gorm" ) diff --git a/openflare-server/model/node_request_report.go b/openflare-server/internal/model/node_request_report.go similarity index 98% rename from openflare-server/model/node_request_report.go rename to openflare-server/internal/model/node_request_report.go index 51696248..8c71c4fd 100644 --- a/openflare-server/model/node_request_report.go +++ b/openflare-server/internal/model/node_request_report.go @@ -3,7 +3,7 @@ package model import ( "time" - "github.com/rain-kl/openflare/openflare-server/utils" + "github.com/rain-kl/openflare/pkg/utils" "gorm.io/gorm" ) diff --git a/openflare-server/model/node_system_profile.go b/openflare-server/internal/model/node_system_profile.go similarity index 100% rename from openflare-server/model/node_system_profile.go rename to openflare-server/internal/model/node_system_profile.go diff --git a/openflare-server/model/option.go b/openflare-server/internal/model/option.go similarity index 99% rename from openflare-server/model/option.go rename to openflare-server/internal/model/option.go index 59e60bb0..2ac8e006 100644 --- a/openflare-server/model/option.go +++ b/openflare-server/internal/model/option.go @@ -5,8 +5,8 @@ import ( "strings" "time" - "github.com/rain-kl/openflare/openflare-server/common" - "github.com/rain-kl/openflare/openflare-server/utils/geoip" + "github.com/rain-kl/openflare/openflare-server/internal/common" + "github.com/rain-kl/openflare/pkg/geoip" "gorm.io/gorm" ) diff --git a/openflare-server/model/origin.go b/openflare-server/internal/model/origin.go similarity index 100% rename from openflare-server/model/origin.go rename to openflare-server/internal/model/origin.go diff --git a/openflare-server/model/pages.go b/openflare-server/internal/model/pages.go similarity index 100% rename from openflare-server/model/pages.go rename to openflare-server/internal/model/pages.go diff --git a/openflare-server/model/proxy_route.go b/openflare-server/internal/model/proxy_route.go similarity index 100% rename from openflare-server/model/proxy_route.go rename to openflare-server/internal/model/proxy_route.go diff --git a/openflare-server/model/schema_migration_context.go b/openflare-server/internal/model/schema_migration_context.go similarity index 95% rename from openflare-server/model/schema_migration_context.go rename to openflare-server/internal/model/schema_migration_context.go index 12a52b41..2f7cb26b 100644 --- a/openflare-server/model/schema_migration_context.go +++ b/openflare-server/internal/model/schema_migration_context.go @@ -1,7 +1,7 @@ package model import ( - schemagoose "github.com/rain-kl/openflare/openflare-server/model/goose" + schemagoose "github.com/rain-kl/openflare/openflare-server/internal/model/goose" "gorm.io/gorm" ) diff --git a/openflare-server/model/sharding.go b/openflare-server/internal/model/sharding.go similarity index 100% rename from openflare-server/model/sharding.go rename to openflare-server/internal/model/sharding.go diff --git a/openflare-server/model/tls_certificate.go b/openflare-server/internal/model/tls_certificate.go similarity index 100% rename from openflare-server/model/tls_certificate.go rename to openflare-server/internal/model/tls_certificate.go diff --git a/openflare-server/model/user.go b/openflare-server/internal/model/user.go similarity index 97% rename from openflare-server/model/user.go rename to openflare-server/internal/model/user.go index 3417a142..77fc1e22 100644 --- a/openflare-server/model/user.go +++ b/openflare-server/internal/model/user.go @@ -3,8 +3,8 @@ package model import ( "errors" - "github.com/rain-kl/openflare/openflare-server/common" - "github.com/rain-kl/openflare/openflare-server/utils/security" + "github.com/rain-kl/openflare/openflare-server/internal/common" + "github.com/rain-kl/openflare/openflare-server/internal/utils/security" ) // User if you add sensitive fields, don't forget to clean them in setupLogin function. diff --git a/openflare-server/model/waf.go b/openflare-server/internal/model/waf.go similarity index 100% rename from openflare-server/model/waf.go rename to openflare-server/internal/model/waf.go diff --git a/openflare-server/router/api-router.go b/openflare-server/internal/router/api-router.go similarity index 98% rename from openflare-server/router/api-router.go rename to openflare-server/internal/router/api-router.go index 17c1eb5a..74f32aef 100644 --- a/openflare-server/router/api-router.go +++ b/openflare-server/internal/router/api-router.go @@ -1,8 +1,8 @@ package router import ( - "github.com/rain-kl/openflare/openflare-server/controller" - "github.com/rain-kl/openflare/openflare-server/middleware" + "github.com/rain-kl/openflare/openflare-server/internal/controller" + "github.com/rain-kl/openflare/openflare-server/internal/middleware" "github.com/gin-gonic/gin" ) diff --git a/openflare-server/router/api_flared_test.go b/openflare-server/internal/router/api_flared_test.go similarity index 96% rename from openflare-server/router/api_flared_test.go rename to openflare-server/internal/router/api_flared_test.go index 818e0684..2a9633f5 100644 --- a/openflare-server/router/api_flared_test.go +++ b/openflare-server/internal/router/api_flared_test.go @@ -7,10 +7,10 @@ import ( "net/http/httptest" "testing" - "github.com/rain-kl/openflare/openflare-server/common" - "github.com/rain-kl/openflare/openflare-server/model" - "github.com/rain-kl/openflare/openflare-server/router" - "github.com/rain-kl/openflare/openflare-server/service" + "github.com/rain-kl/openflare/openflare-server/internal/common" + "github.com/rain-kl/openflare/openflare-server/internal/model" + "github.com/rain-kl/openflare/openflare-server/internal/router" + "github.com/rain-kl/openflare/openflare-server/internal/service" "github.com/gin-contrib/sessions" "github.com/gin-contrib/sessions/cookie" diff --git a/openflare-server/router/api_phase1_test.go b/openflare-server/internal/router/api_phase1_test.go similarity index 98% rename from openflare-server/router/api_phase1_test.go rename to openflare-server/internal/router/api_phase1_test.go index 96b3b8a0..137c2b9f 100644 --- a/openflare-server/router/api_phase1_test.go +++ b/openflare-server/internal/router/api_phase1_test.go @@ -22,11 +22,11 @@ import ( "github.com/gin-contrib/sessions" "github.com/gin-contrib/sessions/cookie" "github.com/gin-gonic/gin" - "github.com/rain-kl/openflare/openflare-server/common" - "github.com/rain-kl/openflare/openflare-server/middleware" - "github.com/rain-kl/openflare/openflare-server/model" - "github.com/rain-kl/openflare/openflare-server/router" - "github.com/rain-kl/openflare/openflare-server/service" + "github.com/rain-kl/openflare/openflare-server/internal/common" + "github.com/rain-kl/openflare/openflare-server/internal/middleware" + "github.com/rain-kl/openflare/openflare-server/internal/model" + "github.com/rain-kl/openflare/openflare-server/internal/router" + "github.com/rain-kl/openflare/openflare-server/internal/service" ) type apiResponse struct { @@ -484,11 +484,14 @@ func setupTestDB(t *testing.T) { dbPath := filepath.Join(t.TempDir(), "phase1.db") common.SQLitePath = dbPath common.AccessToken = "phase1-agent-token" + originalCapLoginEnabled := common.CapLoginEnabled + common.CapLoginEnabled = false if err := model.InitDB(); err != nil { t.Fatalf("failed to init db: %v", err) } middleware.InitJWTMiddleware() t.Cleanup(func() { + common.CapLoginEnabled = originalCapLoginEnabled if err := model.CloseDB(); err != nil { t.Fatalf("failed to close db: %v", err) } diff --git a/openflare-server/router/api_phase2_managed_domain_test.go b/openflare-server/internal/router/api_phase2_managed_domain_test.go similarity index 97% rename from openflare-server/router/api_phase2_managed_domain_test.go rename to openflare-server/internal/router/api_phase2_managed_domain_test.go index 04e0b903..9db25ffe 100644 --- a/openflare-server/router/api_phase2_managed_domain_test.go +++ b/openflare-server/internal/router/api_phase2_managed_domain_test.go @@ -7,8 +7,8 @@ import ( "github.com/gin-contrib/sessions" "github.com/gin-contrib/sessions/cookie" "github.com/gin-gonic/gin" - "github.com/rain-kl/openflare/openflare-server/common" - "github.com/rain-kl/openflare/openflare-server/router" + "github.com/rain-kl/openflare/openflare-server/internal/common" + "github.com/rain-kl/openflare/openflare-server/internal/router" ) func TestPhase2ManagedDomainLifecycle(t *testing.T) { diff --git a/openflare-server/router/api_phase2_test.go b/openflare-server/internal/router/api_phase2_test.go similarity index 99% rename from openflare-server/router/api_phase2_test.go rename to openflare-server/internal/router/api_phase2_test.go index 7c502404..35d349ad 100644 --- a/openflare-server/router/api_phase2_test.go +++ b/openflare-server/internal/router/api_phase2_test.go @@ -9,10 +9,10 @@ import ( "testing" "time" - "github.com/rain-kl/openflare/openflare-server/common" - "github.com/rain-kl/openflare/openflare-server/model" - "github.com/rain-kl/openflare/openflare-server/router" - "github.com/rain-kl/openflare/openflare-server/service" + "github.com/rain-kl/openflare/openflare-server/internal/common" + "github.com/rain-kl/openflare/openflare-server/internal/model" + "github.com/rain-kl/openflare/openflare-server/internal/router" + "github.com/rain-kl/openflare/openflare-server/internal/service" "github.com/gin-contrib/sessions" "github.com/gin-contrib/sessions/cookie" diff --git a/openflare-server/router/api_uptimekuma_test.go b/openflare-server/internal/router/api_uptimekuma_test.go similarity index 98% rename from openflare-server/router/api_uptimekuma_test.go rename to openflare-server/internal/router/api_uptimekuma_test.go index b854edfb..6fece53c 100644 --- a/openflare-server/router/api_uptimekuma_test.go +++ b/openflare-server/internal/router/api_uptimekuma_test.go @@ -11,9 +11,9 @@ import ( "testing" "time" - "github.com/rain-kl/openflare/openflare-server/common" - "github.com/rain-kl/openflare/openflare-server/model" - "github.com/rain-kl/openflare/openflare-server/router" + "github.com/rain-kl/openflare/openflare-server/internal/common" + "github.com/rain-kl/openflare/openflare-server/internal/model" + "github.com/rain-kl/openflare/openflare-server/internal/router" "github.com/gin-contrib/sessions" "github.com/gin-contrib/sessions/cookie" diff --git a/openflare-server/router/main.go b/openflare-server/internal/router/main.go similarity index 89% rename from openflare-server/router/main.go rename to openflare-server/internal/router/main.go index 667911ed..a4ae4c62 100644 --- a/openflare-server/router/main.go +++ b/openflare-server/internal/router/main.go @@ -3,7 +3,7 @@ package router import ( "embed" - "github.com/rain-kl/openflare/openflare-server/middleware" + "github.com/rain-kl/openflare/openflare-server/internal/middleware" "github.com/gin-gonic/gin" swaggerFiles "github.com/swaggo/files" diff --git a/openflare-server/router/swagger_test.go b/openflare-server/internal/router/swagger_test.go similarity index 89% rename from openflare-server/router/swagger_test.go rename to openflare-server/internal/router/swagger_test.go index e953285f..13276ee4 100644 --- a/openflare-server/router/swagger_test.go +++ b/openflare-server/internal/router/swagger_test.go @@ -7,7 +7,7 @@ import ( ) func TestGeneratedSwaggerSpecExists(t *testing.T) { - data, err := os.ReadFile("../docs/swagger.json") + data, err := os.ReadFile("../../docs/swagger.json") if err != nil { t.Fatalf("failed to read generated swagger spec: %v", err) } diff --git a/openflare-server/router/update_test.go b/openflare-server/internal/router/update_test.go similarity index 95% rename from openflare-server/router/update_test.go rename to openflare-server/internal/router/update_test.go index 56484519..5cfe58aa 100644 --- a/openflare-server/router/update_test.go +++ b/openflare-server/internal/router/update_test.go @@ -12,9 +12,9 @@ import ( "testing" "time" - "github.com/rain-kl/openflare/openflare-server/common" - "github.com/rain-kl/openflare/openflare-server/router" - "github.com/rain-kl/openflare/openflare-server/service" + "github.com/rain-kl/openflare/openflare-server/internal/common" + "github.com/rain-kl/openflare/openflare-server/internal/router" + "github.com/rain-kl/openflare/openflare-server/internal/service" "github.com/gin-contrib/sessions" "github.com/gin-contrib/sessions/cookie" @@ -125,6 +125,11 @@ func loginRootAndBuildEngine(t *testing.T) (*gin.Engine, string) { t.Helper() gin.SetMode(gin.TestMode) common.RedisEnabled = false + originalCapLoginEnabled := common.CapLoginEnabled + common.CapLoginEnabled = false + t.Cleanup(func() { + common.CapLoginEnabled = originalCapLoginEnabled + }) setupTestDB(t) engine := gin.New() diff --git a/openflare-server/router/web-router.go b/openflare-server/internal/router/web-router.go similarity index 94% rename from openflare-server/router/web-router.go rename to openflare-server/internal/router/web-router.go index ab331d15..bd63b207 100644 --- a/openflare-server/router/web-router.go +++ b/openflare-server/internal/router/web-router.go @@ -7,8 +7,8 @@ import ( pathpkg "path" "strings" - "github.com/rain-kl/openflare/openflare-server/middleware" - "github.com/rain-kl/openflare/openflare-server/utils/embedfs" + "github.com/rain-kl/openflare/openflare-server/internal/middleware" + "github.com/rain-kl/openflare/openflare-server/internal/utils/embedfs" "github.com/gin-contrib/static" "github.com/gin-gonic/gin" diff --git a/openflare-server/router/web-router_test.go b/openflare-server/internal/router/web-router_test.go similarity index 97% rename from openflare-server/router/web-router_test.go rename to openflare-server/internal/router/web-router_test.go index cbeab4c4..12b1b76e 100644 --- a/openflare-server/router/web-router_test.go +++ b/openflare-server/internal/router/web-router_test.go @@ -5,7 +5,7 @@ import ( "net/http/httptest" "testing" - "github.com/rain-kl/openflare/openflare-server/middleware" + "github.com/rain-kl/openflare/openflare-server/internal/middleware" "github.com/gin-gonic/gin" ) diff --git a/openflare-server/service/access_log.go b/openflare-server/internal/service/access_log.go similarity index 99% rename from openflare-server/service/access_log.go rename to openflare-server/internal/service/access_log.go index a5614333..e230364e 100644 --- a/openflare-server/service/access_log.go +++ b/openflare-server/internal/service/access_log.go @@ -5,7 +5,7 @@ import ( "strings" "time" - "github.com/rain-kl/openflare/openflare-server/model" + "github.com/rain-kl/openflare/openflare-server/internal/model" ) const ( diff --git a/openflare-server/service/access_log_region.go b/openflare-server/internal/service/access_log_region.go similarity index 96% rename from openflare-server/service/access_log_region.go rename to openflare-server/internal/service/access_log_region.go index 31993344..60cf26db 100644 --- a/openflare-server/service/access_log_region.go +++ b/openflare-server/internal/service/access_log_region.go @@ -5,7 +5,7 @@ import ( "net" "strings" - "github.com/rain-kl/openflare/openflare-server/utils/geoip" + "github.com/rain-kl/openflare/pkg/geoip" ) var accessLogGeoProviderFactory = func() (geoip.GeoIPService, error) { diff --git a/openflare-server/service/access_log_test.go b/openflare-server/internal/service/access_log_test.go similarity index 99% rename from openflare-server/service/access_log_test.go rename to openflare-server/internal/service/access_log_test.go index 3005de5a..38dbdb28 100644 --- a/openflare-server/service/access_log_test.go +++ b/openflare-server/internal/service/access_log_test.go @@ -5,7 +5,7 @@ import ( "testing" "time" - "github.com/rain-kl/openflare/openflare-server/model" + "github.com/rain-kl/openflare/openflare-server/internal/model" ) func TestListAccessLogsIncludesSummaryTotals(t *testing.T) { diff --git a/openflare-server/service/agent.go b/openflare-server/internal/service/agent.go similarity index 99% rename from openflare-server/service/agent.go rename to openflare-server/internal/service/agent.go index 17a5a422..6528cae1 100644 --- a/openflare-server/service/agent.go +++ b/openflare-server/internal/service/agent.go @@ -7,9 +7,9 @@ import ( "strings" "time" - "github.com/rain-kl/openflare/openflare-server/common" - "github.com/rain-kl/openflare/openflare-server/model" - "github.com/rain-kl/openflare/openflare-server/utils" + "github.com/rain-kl/openflare/openflare-server/internal/common" + "github.com/rain-kl/openflare/openflare-server/internal/model" + "github.com/rain-kl/openflare/pkg/utils" "gorm.io/gorm" ) diff --git a/openflare-server/service/agent_test.go b/openflare-server/internal/service/agent_test.go similarity index 99% rename from openflare-server/service/agent_test.go rename to openflare-server/internal/service/agent_test.go index c6ae66cb..e9bf0be3 100644 --- a/openflare-server/service/agent_test.go +++ b/openflare-server/internal/service/agent_test.go @@ -7,7 +7,7 @@ import ( "testing" "time" - "github.com/rain-kl/openflare/openflare-server/model" + "github.com/rain-kl/openflare/openflare-server/internal/model" "gorm.io/gorm" ) diff --git a/openflare-server/service/agent_ws.go b/openflare-server/internal/service/agent_ws.go similarity index 100% rename from openflare-server/service/agent_ws.go rename to openflare-server/internal/service/agent_ws.go diff --git a/openflare-server/service/auth_source.go b/openflare-server/internal/service/auth_source.go similarity index 99% rename from openflare-server/service/auth_source.go rename to openflare-server/internal/service/auth_source.go index cac257f9..0a8a9189 100644 --- a/openflare-server/service/auth_source.go +++ b/openflare-server/internal/service/auth_source.go @@ -15,8 +15,8 @@ import ( "strings" "time" - "github.com/rain-kl/openflare/openflare-server/common" - "github.com/rain-kl/openflare/openflare-server/model" + "github.com/rain-kl/openflare/openflare-server/internal/common" + "github.com/rain-kl/openflare/openflare-server/internal/model" "gorm.io/gorm" ) diff --git a/openflare-server/service/auth_source_test.go b/openflare-server/internal/service/auth_source_test.go similarity index 96% rename from openflare-server/service/auth_source_test.go rename to openflare-server/internal/service/auth_source_test.go index 6e11252f..83c5f71c 100644 --- a/openflare-server/service/auth_source_test.go +++ b/openflare-server/internal/service/auth_source_test.go @@ -3,7 +3,7 @@ package service import ( "testing" - "github.com/rain-kl/openflare/openflare-server/model" + "github.com/rain-kl/openflare/openflare-server/internal/model" ) func TestCompleteOAuthLoginRequiresLinkWhenRegistrationDisabled(t *testing.T) { diff --git a/openflare-server/service/cap.go b/openflare-server/internal/service/cap.go similarity index 92% rename from openflare-server/service/cap.go rename to openflare-server/internal/service/cap.go index ea8a3c66..b269e5c8 100644 --- a/openflare-server/service/cap.go +++ b/openflare-server/internal/service/cap.go @@ -6,8 +6,8 @@ import ( "time" "github.com/go-redis/redis/v8" - "github.com/rain-kl/openflare/openflare-server/common" - "github.com/rain-kl/openflare/openflare-server/utils/cap" + "github.com/rain-kl/openflare/openflare-server/internal/common" + "github.com/rain-kl/openflare/openflare-server/internal/utils/cap" ) // RedisCapStore wraps the shared Redis client to implement the cap.Store interface diff --git a/openflare-server/service/config_version.go b/openflare-server/internal/service/config_version.go similarity index 99% rename from openflare-server/service/config_version.go rename to openflare-server/internal/service/config_version.go index b37572cd..b0970ed7 100644 --- a/openflare-server/service/config_version.go +++ b/openflare-server/internal/service/config_version.go @@ -10,9 +10,9 @@ import ( "strings" "time" - "github.com/rain-kl/openflare/openflare-server/common" - "github.com/rain-kl/openflare/openflare-server/model" - openrestyrender "github.com/rain-kl/openflare/openflare-server/utils/render/openresty" + "github.com/rain-kl/openflare/openflare-server/internal/common" + "github.com/rain-kl/openflare/openflare-server/internal/model" + openrestyrender "github.com/rain-kl/openflare/pkg/render/openresty" "gorm.io/gorm" ) diff --git a/openflare-server/service/dashboard.go b/openflare-server/internal/service/dashboard.go similarity index 99% rename from openflare-server/service/dashboard.go rename to openflare-server/internal/service/dashboard.go index 0fe71514..9fa52356 100644 --- a/openflare-server/service/dashboard.go +++ b/openflare-server/internal/service/dashboard.go @@ -4,7 +4,7 @@ import ( "sort" "time" - "github.com/rain-kl/openflare/openflare-server/model" + "github.com/rain-kl/openflare/openflare-server/internal/model" ) type DashboardOverviewView struct { diff --git a/openflare-server/service/database_maintenance.go b/openflare-server/internal/service/database_maintenance.go similarity index 97% rename from openflare-server/service/database_maintenance.go rename to openflare-server/internal/service/database_maintenance.go index 0ceadc40..4ef79616 100644 --- a/openflare-server/service/database_maintenance.go +++ b/openflare-server/internal/service/database_maintenance.go @@ -8,8 +8,8 @@ import ( "strings" "time" - "github.com/rain-kl/openflare/openflare-server/common" - "github.com/rain-kl/openflare/openflare-server/model" + "github.com/rain-kl/openflare/openflare-server/internal/common" + "github.com/rain-kl/openflare/openflare-server/internal/model" ) const ( diff --git a/openflare-server/service/database_maintenance_test.go b/openflare-server/internal/service/database_maintenance_test.go similarity index 97% rename from openflare-server/service/database_maintenance_test.go rename to openflare-server/internal/service/database_maintenance_test.go index f0b09382..ed217e89 100644 --- a/openflare-server/service/database_maintenance_test.go +++ b/openflare-server/internal/service/database_maintenance_test.go @@ -4,8 +4,8 @@ import ( "testing" "time" - "github.com/rain-kl/openflare/openflare-server/common" - "github.com/rain-kl/openflare/openflare-server/model" + "github.com/rain-kl/openflare/openflare-server/internal/common" + "github.com/rain-kl/openflare/openflare-server/internal/model" ) func TestCleanupDatabaseObservabilityDeletesTargetedRows(t *testing.T) { diff --git a/openflare-server/service/flared_ws.go b/openflare-server/internal/service/flared_ws.go similarity index 100% rename from openflare-server/service/flared_ws.go rename to openflare-server/internal/service/flared_ws.go diff --git a/openflare-server/service/geoip_lookup.go b/openflare-server/internal/service/geoip_lookup.go similarity index 95% rename from openflare-server/service/geoip_lookup.go rename to openflare-server/internal/service/geoip_lookup.go index 8c5fd322..9a7c941e 100644 --- a/openflare-server/service/geoip_lookup.go +++ b/openflare-server/internal/service/geoip_lookup.go @@ -5,7 +5,7 @@ import ( "net" "strings" - "github.com/rain-kl/openflare/openflare-server/utils/geoip" + "github.com/rain-kl/openflare/pkg/geoip" ) type GeoIPLookupView struct { diff --git a/openflare-server/service/geoip_lookup_test.go b/openflare-server/internal/service/geoip_lookup_test.go similarity index 96% rename from openflare-server/service/geoip_lookup_test.go rename to openflare-server/internal/service/geoip_lookup_test.go index 06cb26bf..7b5e9336 100644 --- a/openflare-server/service/geoip_lookup_test.go +++ b/openflare-server/internal/service/geoip_lookup_test.go @@ -4,7 +4,7 @@ import ( "net" "testing" - "github.com/rain-kl/openflare/openflare-server/utils/geoip" + "github.com/rain-kl/openflare/pkg/geoip" ) type fakeLookupProvider struct{} diff --git a/openflare-server/service/https_phase1_test.go b/openflare-server/internal/service/https_phase1_test.go similarity index 99% rename from openflare-server/service/https_phase1_test.go rename to openflare-server/internal/service/https_phase1_test.go index a812b9d1..16339f19 100644 --- a/openflare-server/service/https_phase1_test.go +++ b/openflare-server/internal/service/https_phase1_test.go @@ -13,8 +13,8 @@ import ( "testing" "time" - "github.com/rain-kl/openflare/openflare-server/common" - "github.com/rain-kl/openflare/openflare-server/model" + "github.com/rain-kl/openflare/openflare-server/internal/common" + "github.com/rain-kl/openflare/openflare-server/internal/model" ) func TestCreateTLSCertificateAndRenderHTTPSConfig(t *testing.T) { diff --git a/openflare-server/service/lego_client.go b/openflare-server/internal/service/lego_client.go similarity index 94% rename from openflare-server/service/lego_client.go rename to openflare-server/internal/service/lego_client.go index b2a7e726..c1991350 100644 --- a/openflare-server/service/lego_client.go +++ b/openflare-server/internal/service/lego_client.go @@ -4,8 +4,8 @@ import ( "fmt" "strings" - "github.com/rain-kl/openflare/openflare-server/model" - "github.com/rain-kl/openflare/openflare-server/utils/acme" + "github.com/rain-kl/openflare/openflare-server/internal/model" + "github.com/rain-kl/openflare/openflare-server/internal/utils/acme" ) func ObtainSSL(cert *model.TLSCertificate) error { diff --git a/openflare-server/service/managed_domain.go b/openflare-server/internal/service/managed_domain.go similarity index 98% rename from openflare-server/service/managed_domain.go rename to openflare-server/internal/service/managed_domain.go index 47749045..f35563ca 100644 --- a/openflare-server/service/managed_domain.go +++ b/openflare-server/internal/service/managed_domain.go @@ -7,7 +7,7 @@ import ( "strings" "unicode" - "github.com/rain-kl/openflare/openflare-server/model" + "github.com/rain-kl/openflare/openflare-server/internal/model" ) const ( diff --git a/openflare-server/service/managed_domain_phase2_test.go b/openflare-server/internal/service/managed_domain_phase2_test.go similarity index 100% rename from openflare-server/service/managed_domain_phase2_test.go rename to openflare-server/internal/service/managed_domain_phase2_test.go diff --git a/openflare-server/service/node.go b/openflare-server/internal/service/node.go similarity index 98% rename from openflare-server/service/node.go rename to openflare-server/internal/service/node.go index 610de0bd..d09562b5 100644 --- a/openflare-server/service/node.go +++ b/openflare-server/internal/service/node.go @@ -10,10 +10,10 @@ import ( "strings" "time" - "github.com/rain-kl/openflare/openflare-server/common" - "github.com/rain-kl/openflare/openflare-server/model" - "github.com/rain-kl/openflare/openflare-server/utils/geoip" - "github.com/rain-kl/openflare/openflare-server/utils/geoip/iputil" + "github.com/rain-kl/openflare/openflare-server/internal/common" + "github.com/rain-kl/openflare/openflare-server/internal/model" + "github.com/rain-kl/openflare/pkg/geoip" + "github.com/rain-kl/openflare/pkg/geoip/iputil" ) type NodeInput struct { diff --git a/openflare-server/service/node_agent_token_cache.go b/openflare-server/internal/service/node_agent_token_cache.go similarity index 98% rename from openflare-server/service/node_agent_token_cache.go rename to openflare-server/internal/service/node_agent_token_cache.go index d2ddad25..b411ec37 100644 --- a/openflare-server/service/node_agent_token_cache.go +++ b/openflare-server/internal/service/node_agent_token_cache.go @@ -4,7 +4,7 @@ import ( "errors" "time" - "github.com/rain-kl/openflare/openflare-server/model" + "github.com/rain-kl/openflare/openflare-server/internal/model" ristretto "github.com/dgraph-io/ristretto/v2" "gorm.io/gorm" diff --git a/openflare-server/service/node_agent_token_cache_test.go b/openflare-server/internal/service/node_agent_token_cache_test.go similarity index 97% rename from openflare-server/service/node_agent_token_cache_test.go rename to openflare-server/internal/service/node_agent_token_cache_test.go index 1479ca8a..abf92aa5 100644 --- a/openflare-server/service/node_agent_token_cache_test.go +++ b/openflare-server/internal/service/node_agent_token_cache_test.go @@ -6,7 +6,7 @@ import ( "testing" "time" - "github.com/rain-kl/openflare/openflare-server/model" + "github.com/rain-kl/openflare/openflare-server/internal/model" "gorm.io/gorm" ) diff --git a/openflare-server/service/node_observability.go b/openflare-server/internal/service/node_observability.go similarity index 99% rename from openflare-server/service/node_observability.go rename to openflare-server/internal/service/node_observability.go index 4c012b81..219e411a 100644 --- a/openflare-server/service/node_observability.go +++ b/openflare-server/internal/service/node_observability.go @@ -5,7 +5,7 @@ import ( "errors" "time" - "github.com/rain-kl/openflare/openflare-server/model" + "github.com/rain-kl/openflare/openflare-server/internal/model" "gorm.io/gorm" ) diff --git a/openflare-server/service/node_update_test.go b/openflare-server/internal/service/node_update_test.go similarity index 99% rename from openflare-server/service/node_update_test.go rename to openflare-server/internal/service/node_update_test.go index b4217ebc..98d64f20 100644 --- a/openflare-server/service/node_update_test.go +++ b/openflare-server/internal/service/node_update_test.go @@ -10,9 +10,9 @@ import ( "testing" "time" - "github.com/rain-kl/openflare/openflare-server/common" - "github.com/rain-kl/openflare/openflare-server/model" - "github.com/rain-kl/openflare/openflare-server/utils/geoip" + "github.com/rain-kl/openflare/openflare-server/internal/common" + "github.com/rain-kl/openflare/openflare-server/internal/model" + "github.com/rain-kl/openflare/pkg/geoip" ) type roundTripFunc func(req *http.Request) (*http.Response, error) diff --git a/openflare-server/service/observability.go b/openflare-server/internal/service/observability.go similarity index 99% rename from openflare-server/service/observability.go rename to openflare-server/internal/service/observability.go index a804de8b..a012382c 100644 --- a/openflare-server/service/observability.go +++ b/openflare-server/internal/service/observability.go @@ -7,7 +7,7 @@ import ( "strings" "time" - "github.com/rain-kl/openflare/openflare-server/model" + "github.com/rain-kl/openflare/openflare-server/internal/model" "gorm.io/gorm" ) diff --git a/openflare-server/service/observability_analytics.go b/openflare-server/internal/service/observability_analytics.go similarity index 98% rename from openflare-server/service/observability_analytics.go rename to openflare-server/internal/service/observability_analytics.go index 8ba80cfc..4d9aefde 100644 --- a/openflare-server/service/observability_analytics.go +++ b/openflare-server/internal/service/observability_analytics.go @@ -6,7 +6,7 @@ import ( "strings" "time" - "github.com/rain-kl/openflare/openflare-server/model" + "github.com/rain-kl/openflare/openflare-server/internal/model" ) type DistributionItem struct { diff --git a/openflare-server/service/observability_trends.go b/openflare-server/internal/service/observability_trends.go similarity index 99% rename from openflare-server/service/observability_trends.go rename to openflare-server/internal/service/observability_trends.go index a6633d29..a21cabfe 100644 --- a/openflare-server/service/observability_trends.go +++ b/openflare-server/internal/service/observability_trends.go @@ -4,7 +4,7 @@ import ( "sort" "time" - "github.com/rain-kl/openflare/openflare-server/model" + "github.com/rain-kl/openflare/openflare-server/internal/model" ) const observabilityTrendBuckets = 24 diff --git a/openflare-server/service/observability_trends_test.go b/openflare-server/internal/service/observability_trends_test.go similarity index 91% rename from openflare-server/service/observability_trends_test.go rename to openflare-server/internal/service/observability_trends_test.go index 9800b9a5..a3115f29 100644 --- a/openflare-server/service/observability_trends_test.go +++ b/openflare-server/internal/service/observability_trends_test.go @@ -4,7 +4,7 @@ import ( "testing" "time" - "github.com/rain-kl/openflare/openflare-server/model" + "github.com/rain-kl/openflare/openflare-server/internal/model" ) func TestBuildDiskIOTrendPointsUsesCounterDelta(t *testing.T) { diff --git a/openflare-server/service/origin.go b/openflare-server/internal/service/origin.go similarity index 98% rename from openflare-server/service/origin.go rename to openflare-server/internal/service/origin.go index bd2f7f4a..f20ed373 100644 --- a/openflare-server/service/origin.go +++ b/openflare-server/internal/service/origin.go @@ -8,7 +8,7 @@ import ( "strings" "time" - "github.com/rain-kl/openflare/openflare-server/model" + "github.com/rain-kl/openflare/openflare-server/internal/model" "gorm.io/gorm" ) diff --git a/openflare-server/service/origin_helpers.go b/openflare-server/internal/service/origin_helpers.go similarity index 100% rename from openflare-server/service/origin_helpers.go rename to openflare-server/internal/service/origin_helpers.go diff --git a/openflare-server/service/origin_test.go b/openflare-server/internal/service/origin_test.go similarity index 97% rename from openflare-server/service/origin_test.go rename to openflare-server/internal/service/origin_test.go index 4abe0be2..2ff21eb4 100644 --- a/openflare-server/service/origin_test.go +++ b/openflare-server/internal/service/origin_test.go @@ -3,7 +3,7 @@ package service import ( "testing" - "github.com/rain-kl/openflare/openflare-server/model" + "github.com/rain-kl/openflare/openflare-server/internal/model" ) func TestCreateProxyRouteStructuredOriginAutoCreatesOrigin(t *testing.T) { diff --git a/openflare-server/service/pages.go b/openflare-server/internal/service/pages.go similarity index 99% rename from openflare-server/service/pages.go rename to openflare-server/internal/service/pages.go index 178fa31b..12b50025 100644 --- a/openflare-server/service/pages.go +++ b/openflare-server/internal/service/pages.go @@ -16,8 +16,8 @@ import ( "strings" "time" - "github.com/rain-kl/openflare/openflare-server/common" - "github.com/rain-kl/openflare/openflare-server/model" + "github.com/rain-kl/openflare/openflare-server/internal/common" + "github.com/rain-kl/openflare/openflare-server/internal/model" "gorm.io/gorm" ) diff --git a/openflare-server/service/pages_test.go b/openflare-server/internal/service/pages_test.go similarity index 99% rename from openflare-server/service/pages_test.go rename to openflare-server/internal/service/pages_test.go index 0056a0c2..c6da0f9b 100644 --- a/openflare-server/service/pages_test.go +++ b/openflare-server/internal/service/pages_test.go @@ -9,7 +9,7 @@ import ( "strings" "testing" - "github.com/rain-kl/openflare/openflare-server/model" + "github.com/rain-kl/openflare/openflare-server/internal/model" ) func TestPagesUploadActivateAndPublishStaticRoute(t *testing.T) { diff --git a/openflare-server/service/proxy_route.go b/openflare-server/internal/service/proxy_route.go similarity index 99% rename from openflare-server/service/proxy_route.go rename to openflare-server/internal/service/proxy_route.go index a1b18314..0046c85e 100644 --- a/openflare-server/service/proxy_route.go +++ b/openflare-server/internal/service/proxy_route.go @@ -10,8 +10,8 @@ import ( "strings" "time" - "github.com/rain-kl/openflare/openflare-server/model" - "github.com/rain-kl/openflare/openflare-server/utils" + "github.com/rain-kl/openflare/openflare-server/internal/model" + "github.com/rain-kl/openflare/pkg/utils" "gorm.io/gorm" ) diff --git a/openflare-server/service/relay.go b/openflare-server/internal/service/relay.go similarity index 99% rename from openflare-server/service/relay.go rename to openflare-server/internal/service/relay.go index 02cd56db..4876d8bc 100644 --- a/openflare-server/service/relay.go +++ b/openflare-server/internal/service/relay.go @@ -9,8 +9,8 @@ import ( "strings" "time" - "github.com/rain-kl/openflare/openflare-server/common" - "github.com/rain-kl/openflare/openflare-server/model" + "github.com/rain-kl/openflare/openflare-server/internal/common" + "github.com/rain-kl/openflare/openflare-server/internal/model" "gorm.io/gorm" ) diff --git a/openflare-server/service/relay_test.go b/openflare-server/internal/service/relay_test.go similarity index 99% rename from openflare-server/service/relay_test.go rename to openflare-server/internal/service/relay_test.go index b39215e4..21bd61ca 100644 --- a/openflare-server/service/relay_test.go +++ b/openflare-server/internal/service/relay_test.go @@ -6,7 +6,7 @@ import ( "testing" "time" - "github.com/rain-kl/openflare/openflare-server/model" + "github.com/rain-kl/openflare/openflare-server/internal/model" "gorm.io/gorm" ) diff --git a/openflare-server/service/relay_ws.go b/openflare-server/internal/service/relay_ws.go similarity index 100% rename from openflare-server/service/relay_ws.go rename to openflare-server/internal/service/relay_ws.go diff --git a/openflare-server/service/tls_acme_test.go b/openflare-server/internal/service/tls_acme_test.go similarity index 99% rename from openflare-server/service/tls_acme_test.go rename to openflare-server/internal/service/tls_acme_test.go index efed7d98..e72d351f 100644 --- a/openflare-server/service/tls_acme_test.go +++ b/openflare-server/internal/service/tls_acme_test.go @@ -6,7 +6,7 @@ import ( "testing" "time" - "github.com/rain-kl/openflare/openflare-server/model" + "github.com/rain-kl/openflare/openflare-server/internal/model" ) func TestAcmeAndDnsIntegration(t *testing.T) { diff --git a/openflare-server/service/tls_certificate.go b/openflare-server/internal/service/tls_certificate.go similarity index 99% rename from openflare-server/service/tls_certificate.go rename to openflare-server/internal/service/tls_certificate.go index 493c8a7d..68d47e54 100644 --- a/openflare-server/service/tls_certificate.go +++ b/openflare-server/internal/service/tls_certificate.go @@ -8,7 +8,7 @@ import ( "mime/multipart" "strings" - "github.com/rain-kl/openflare/openflare-server/model" + "github.com/rain-kl/openflare/openflare-server/internal/model" ) type TLSCertificateInput struct { diff --git a/openflare-server/service/tls_certificate_helpers.go b/openflare-server/internal/service/tls_certificate_helpers.go similarity index 100% rename from openflare-server/service/tls_certificate_helpers.go rename to openflare-server/internal/service/tls_certificate_helpers.go diff --git a/openflare-server/service/update.go b/openflare-server/internal/service/update.go similarity index 99% rename from openflare-server/service/update.go rename to openflare-server/internal/service/update.go index 6e10fc68..901159c0 100644 --- a/openflare-server/service/update.go +++ b/openflare-server/internal/service/update.go @@ -18,8 +18,8 @@ import ( "sync" "time" - "github.com/rain-kl/openflare/openflare-server/common" - "github.com/rain-kl/openflare/openflare-server/utils" + "github.com/rain-kl/openflare/openflare-server/internal/common" + "github.com/rain-kl/openflare/pkg/utils" ) const ( diff --git a/openflare-server/service/update_restart_unix.go b/openflare-server/internal/service/update_restart_unix.go similarity index 100% rename from openflare-server/service/update_restart_unix.go rename to openflare-server/internal/service/update_restart_unix.go diff --git a/openflare-server/service/update_restart_unix_test.go b/openflare-server/internal/service/update_restart_unix_test.go similarity index 100% rename from openflare-server/service/update_restart_unix_test.go rename to openflare-server/internal/service/update_restart_unix_test.go diff --git a/openflare-server/service/update_restart_windows.go b/openflare-server/internal/service/update_restart_windows.go similarity index 100% rename from openflare-server/service/update_restart_windows.go rename to openflare-server/internal/service/update_restart_windows.go diff --git a/openflare-server/service/update_test.go b/openflare-server/internal/service/update_test.go similarity index 99% rename from openflare-server/service/update_test.go rename to openflare-server/internal/service/update_test.go index 38748e2a..76c321aa 100644 --- a/openflare-server/service/update_test.go +++ b/openflare-server/internal/service/update_test.go @@ -12,7 +12,7 @@ import ( "testing" "time" - "github.com/rain-kl/openflare/openflare-server/common" + "github.com/rain-kl/openflare/openflare-server/internal/common" ) type serverUpdateRoundTripFunc func(req *http.Request) (*http.Response, error) diff --git a/openflare-server/service/uptimekuma.go b/openflare-server/internal/service/uptimekuma.go similarity index 98% rename from openflare-server/service/uptimekuma.go rename to openflare-server/internal/service/uptimekuma.go index 23453599..b5f1fc8b 100644 --- a/openflare-server/service/uptimekuma.go +++ b/openflare-server/internal/service/uptimekuma.go @@ -7,9 +7,9 @@ import ( "sync/atomic" "time" - "github.com/rain-kl/openflare/openflare-server/common" - "github.com/rain-kl/openflare/openflare-server/model" - "github.com/rain-kl/openflare/openflare-server/utils/uptimekuma" + "github.com/rain-kl/openflare/openflare-server/internal/common" + "github.com/rain-kl/openflare/openflare-server/internal/model" + "github.com/rain-kl/openflare/openflare-server/internal/utils/uptimekuma" ) var isSyncing atomic.Bool diff --git a/openflare-server/service/waf.go b/openflare-server/internal/service/waf.go similarity index 99% rename from openflare-server/service/waf.go rename to openflare-server/internal/service/waf.go index 9bc9a960..79af1e99 100644 --- a/openflare-server/service/waf.go +++ b/openflare-server/internal/service/waf.go @@ -10,8 +10,8 @@ import ( "time" "unicode" - "github.com/rain-kl/openflare/openflare-server/model" - "github.com/rain-kl/openflare/openflare-server/utils" + "github.com/rain-kl/openflare/openflare-server/internal/model" + "github.com/rain-kl/openflare/pkg/utils" "gorm.io/gorm" ) diff --git a/openflare-server/service/waf_ip_group.go b/openflare-server/internal/service/waf_ip_group.go similarity index 99% rename from openflare-server/service/waf_ip_group.go rename to openflare-server/internal/service/waf_ip_group.go index 0335d049..f84db436 100644 --- a/openflare-server/service/waf_ip_group.go +++ b/openflare-server/internal/service/waf_ip_group.go @@ -17,7 +17,7 @@ import ( "strings" "time" - "github.com/rain-kl/openflare/openflare-server/model" + "github.com/rain-kl/openflare/openflare-server/internal/model" exprlang "github.com/expr-lang/expr" "github.com/expr-lang/expr/vm" diff --git a/openflare-server/service/waf_test.go b/openflare-server/internal/service/waf_test.go similarity index 99% rename from openflare-server/service/waf_test.go rename to openflare-server/internal/service/waf_test.go index ef32442f..d9131ba8 100644 --- a/openflare-server/service/waf_test.go +++ b/openflare-server/internal/service/waf_test.go @@ -8,7 +8,7 @@ import ( "testing" "time" - "github.com/rain-kl/openflare/openflare-server/model" + "github.com/rain-kl/openflare/openflare-server/internal/model" ) func TestWAFRuleGroupValidationAndNormalization(t *testing.T) { diff --git a/openflare-server/service/ws_hub.go b/openflare-server/internal/service/ws_hub.go similarity index 100% rename from openflare-server/service/ws_hub.go rename to openflare-server/internal/service/ws_hub.go diff --git a/openflare-server/utils/acme/client.go b/openflare-server/internal/utils/acme/client.go similarity index 100% rename from openflare-server/utils/acme/client.go rename to openflare-server/internal/utils/acme/client.go diff --git a/openflare-server/utils/cap/cap.go b/openflare-server/internal/utils/cap/cap.go similarity index 100% rename from openflare-server/utils/cap/cap.go rename to openflare-server/internal/utils/cap/cap.go diff --git a/openflare-server/utils/cap/cap_test.go b/openflare-server/internal/utils/cap/cap_test.go similarity index 100% rename from openflare-server/utils/cap/cap_test.go rename to openflare-server/internal/utils/cap/cap_test.go diff --git a/openflare-server/utils/cap/manager.go b/openflare-server/internal/utils/cap/manager.go similarity index 100% rename from openflare-server/utils/cap/manager.go rename to openflare-server/internal/utils/cap/manager.go diff --git a/openflare-server/utils/cap/middleware.go b/openflare-server/internal/utils/cap/middleware.go similarity index 100% rename from openflare-server/utils/cap/middleware.go rename to openflare-server/internal/utils/cap/middleware.go diff --git a/openflare-server/utils/cap/prng.go b/openflare-server/internal/utils/cap/prng.go similarity index 100% rename from openflare-server/utils/cap/prng.go rename to openflare-server/internal/utils/cap/prng.go diff --git a/openflare-server/utils/cap/store.go b/openflare-server/internal/utils/cap/store.go similarity index 100% rename from openflare-server/utils/cap/store.go rename to openflare-server/internal/utils/cap/store.go diff --git a/openflare-server/utils/embedfs/static.go b/openflare-server/internal/utils/embedfs/static.go similarity index 100% rename from openflare-server/utils/embedfs/static.go rename to openflare-server/internal/utils/embedfs/static.go diff --git a/openflare-server/utils/mail/email.go b/openflare-server/internal/utils/mail/email.go similarity index 100% rename from openflare-server/utils/mail/email.go rename to openflare-server/internal/utils/mail/email.go diff --git a/openflare-server/utils/ratelimit/in_memory.go b/openflare-server/internal/utils/ratelimit/in_memory.go similarity index 100% rename from openflare-server/utils/ratelimit/in_memory.go rename to openflare-server/internal/utils/ratelimit/in_memory.go diff --git a/openflare-server/utils/security/password.go b/openflare-server/internal/utils/security/password.go similarity index 100% rename from openflare-server/utils/security/password.go rename to openflare-server/internal/utils/security/password.go diff --git a/openflare-server/utils/security/random.go b/openflare-server/internal/utils/security/random.go similarity index 100% rename from openflare-server/utils/security/random.go rename to openflare-server/internal/utils/security/random.go diff --git a/openflare-server/utils/security/verification.go b/openflare-server/internal/utils/security/verification.go similarity index 100% rename from openflare-server/utils/security/verification.go rename to openflare-server/internal/utils/security/verification.go diff --git a/openflare-server/utils/uptimekuma/client.go b/openflare-server/internal/utils/uptimekuma/client.go similarity index 100% rename from openflare-server/utils/uptimekuma/client.go rename to openflare-server/internal/utils/uptimekuma/client.go diff --git a/openflare-server/utils/validation/validator.go b/openflare-server/internal/utils/validation/validator.go similarity index 100% rename from openflare-server/utils/validation/validator.go rename to openflare-server/internal/utils/validation/validator.go diff --git a/openflare-server/main.go b/openflare-server/main.go index d1876785..71fe6c85 100644 --- a/openflare-server/main.go +++ b/openflare-server/main.go @@ -1,4 +1,4 @@ -package main +package server import ( "context" @@ -8,14 +8,14 @@ import ( "os" "strconv" - "github.com/rain-kl/openflare/openflare-server/common" _ "github.com/rain-kl/openflare/openflare-server/docs" - "github.com/rain-kl/openflare/openflare-server/job" - "github.com/rain-kl/openflare/openflare-server/middleware" - "github.com/rain-kl/openflare/openflare-server/model" - "github.com/rain-kl/openflare/openflare-server/router" - "github.com/rain-kl/openflare/openflare-server/service" - "github.com/rain-kl/openflare/openflare-server/utils/geoip" + "github.com/rain-kl/openflare/openflare-server/internal/common" + "github.com/rain-kl/openflare/openflare-server/internal/job" + "github.com/rain-kl/openflare/openflare-server/internal/middleware" + "github.com/rain-kl/openflare/openflare-server/internal/model" + "github.com/rain-kl/openflare/openflare-server/internal/router" + "github.com/rain-kl/openflare/openflare-server/internal/service" + "github.com/rain-kl/openflare/pkg/geoip" "github.com/gin-contrib/sessions" "github.com/gin-contrib/sessions/cookie" @@ -42,7 +42,7 @@ var indexPage []byte // @in header // @name X-Agent-Token // @description Agent API 使用节点专属 Agent Token 或全局 Discovery Token -func main() { +func Run() { common.ParseFlags() common.SetupGinLog() slog.Info("OpenFlare started", "version", common.Version) diff --git a/openflared/Dockerfile b/openflared/Dockerfile index 1f825fe2..bdb58dbe 100644 --- a/openflared/Dockerfile +++ b/openflared/Dockerfile @@ -13,6 +13,7 @@ RUN --mount=type=cache,target=/go/pkg/mod \ COPY openflare-server/ ./openflare-server/ COPY openflared/ ./openflared/ +COPY pkg/ ./pkg/ RUN --mount=type=cache,target=/go/pkg/mod \ --mount=type=cache,target=/root/.cache/go-build \ CGO_ENABLED=0 GOOS=linux go build -trimpath -ldflags "-s -w -X 'github.com/rain-kl/openflare/openflared/internal/config.Version=$VERSION'" -o flared ./openflared/cmd/flared @@ -30,4 +31,3 @@ ENV OPENFLARE_FRPC_PATH=/usr/bin/frpc ENTRYPOINT ["/app/flared"] CMD [] - diff --git a/openflared/internal/frpc/manager.go b/openflared/internal/frpc/manager.go index a0a5ba95..9e4fe066 100644 --- a/openflared/internal/frpc/manager.go +++ b/openflared/internal/frpc/manager.go @@ -14,8 +14,8 @@ import ( "sync" "time" - "github.com/rain-kl/openflare/openflare-server/service" "github.com/rain-kl/openflare/openflared/internal/config" + service "github.com/rain-kl/openflare/pkg/protocol" ) type Manager struct { diff --git a/openflared/internal/frpc/manager_test.go b/openflared/internal/frpc/manager_test.go index e78abdfb..6d88128a 100644 --- a/openflared/internal/frpc/manager_test.go +++ b/openflared/internal/frpc/manager_test.go @@ -10,8 +10,8 @@ import ( "testing" "time" - "github.com/rain-kl/openflare/openflare-server/service" "github.com/rain-kl/openflare/openflared/internal/config" + service "github.com/rain-kl/openflare/pkg/protocol" ) // Helper to write control file for the dummy script diff --git a/openflared/internal/heartbeat/service.go b/openflared/internal/heartbeat/service.go index 7bfed19c..d01bf583 100644 --- a/openflared/internal/heartbeat/service.go +++ b/openflared/internal/heartbeat/service.go @@ -6,13 +6,13 @@ import ( "net" "time" - "github.com/rain-kl/openflare/openflare-server/service" - "github.com/rain-kl/openflare/openflare-server/utils/geoip" - "github.com/rain-kl/openflare/openflare-server/utils/geoip/iputil" "github.com/rain-kl/openflare/openflared/internal/config" "github.com/rain-kl/openflare/openflared/internal/frpc" "github.com/rain-kl/openflare/openflared/internal/httpclient" "github.com/rain-kl/openflare/openflared/internal/updater" + "github.com/rain-kl/openflare/pkg/geoip" + "github.com/rain-kl/openflare/pkg/geoip/iputil" + service "github.com/rain-kl/openflare/pkg/protocol" ) var ( diff --git a/openflared/internal/httpclient/client.go b/openflared/internal/httpclient/client.go index 331724cc..ae604d01 100644 --- a/openflared/internal/httpclient/client.go +++ b/openflared/internal/httpclient/client.go @@ -11,7 +11,7 @@ import ( "strings" "time" - "github.com/rain-kl/openflare/openflare-server/service" + service "github.com/rain-kl/openflare/pkg/protocol" ) type APIResponse[T any] struct { diff --git a/openflared/internal/sync/service.go b/openflared/internal/sync/service.go index 4893cc2f..576d9683 100644 --- a/openflared/internal/sync/service.go +++ b/openflared/internal/sync/service.go @@ -5,10 +5,10 @@ import ( "log/slog" "time" - "github.com/rain-kl/openflare/openflare-server/service" "github.com/rain-kl/openflare/openflared/internal/config" "github.com/rain-kl/openflare/openflared/internal/frpc" "github.com/rain-kl/openflare/openflared/internal/httpclient" + service "github.com/rain-kl/openflare/pkg/protocol" ) type Service struct { diff --git a/openflared/internal/updater/updater.go b/openflared/internal/updater/updater.go index b3825720..dcf11849 100644 --- a/openflared/internal/updater/updater.go +++ b/openflared/internal/updater/updater.go @@ -14,7 +14,7 @@ import ( "strings" "time" - "github.com/rain-kl/openflare/openflare-server/utils" + "github.com/rain-kl/openflare/pkg/utils" "github.com/rain-kl/openflare/openflared/internal/config" ) diff --git a/openflared/internal/wsclient/client.go b/openflared/internal/wsclient/client.go index 4fbde9aa..64ce5bf7 100644 --- a/openflared/internal/wsclient/client.go +++ b/openflared/internal/wsclient/client.go @@ -5,8 +5,8 @@ import ( "encoding/json" "time" - "github.com/rain-kl/openflare/openflare-server/service" - shared "github.com/rain-kl/openflare/openflare-server/utils/wsclient" + service "github.com/rain-kl/openflare/pkg/protocol" + shared "github.com/rain-kl/openflare/pkg/wsclient" ) type WSMessage = shared.WSMessage diff --git a/openflare-server/utils/geoip/emptyProvider.go b/pkg/geoip/emptyProvider.go similarity index 100% rename from openflare-server/utils/geoip/emptyProvider.go rename to pkg/geoip/emptyProvider.go diff --git a/openflare-server/utils/geoip/geoip.go b/pkg/geoip/geoip.go similarity index 100% rename from openflare-server/utils/geoip/geoip.go rename to pkg/geoip/geoip.go diff --git a/openflare-server/utils/geoip/geoip_test.go b/pkg/geoip/geoip_test.go similarity index 100% rename from openflare-server/utils/geoip/geoip_test.go rename to pkg/geoip/geoip_test.go diff --git a/openflare-server/utils/geoip/geojs.go b/pkg/geoip/geojs.go similarity index 100% rename from openflare-server/utils/geoip/geojs.go rename to pkg/geoip/geojs.go diff --git a/openflare-server/utils/geoip/ipapi.go b/pkg/geoip/ipapi.go similarity index 100% rename from openflare-server/utils/geoip/ipapi.go rename to pkg/geoip/ipapi.go diff --git a/openflare-server/utils/geoip/ipinfo.go b/pkg/geoip/ipinfo.go similarity index 100% rename from openflare-server/utils/geoip/ipinfo.go rename to pkg/geoip/ipinfo.go diff --git a/openflare-server/utils/geoip/iputil/iputil.go b/pkg/geoip/iputil/iputil.go similarity index 100% rename from openflare-server/utils/geoip/iputil/iputil.go rename to pkg/geoip/iputil/iputil.go diff --git a/openflare-server/utils/geoip/iputil/iputil_test.go b/pkg/geoip/iputil/iputil_test.go similarity index 100% rename from openflare-server/utils/geoip/iputil/iputil_test.go rename to pkg/geoip/iputil/iputil_test.go diff --git a/openflare-server/utils/geoip/mmdb.go b/pkg/geoip/mmdb.go similarity index 100% rename from openflare-server/utils/geoip/mmdb.go rename to pkg/geoip/mmdb.go diff --git a/openflare-server/utils/geoip/outboundip.go b/pkg/geoip/outboundip.go similarity index 98% rename from openflare-server/utils/geoip/outboundip.go rename to pkg/geoip/outboundip.go index 68d0c890..dc1976f1 100644 --- a/openflare-server/utils/geoip/outboundip.go +++ b/pkg/geoip/outboundip.go @@ -11,7 +11,7 @@ import ( "strings" "time" - "github.com/rain-kl/openflare/openflare-server/utils/geoip/iputil" + "github.com/rain-kl/openflare/pkg/geoip/iputil" ) const defaultOutboundIPLookupTimeout = 5 * time.Second diff --git a/openflare-server/utils/geoip/outboundip_test.go b/pkg/geoip/outboundip_test.go similarity index 100% rename from openflare-server/utils/geoip/outboundip_test.go rename to pkg/geoip/outboundip_test.go diff --git a/pkg/protocol/server.go b/pkg/protocol/server.go new file mode 100644 index 00000000..4e6e64ed --- /dev/null +++ b/pkg/protocol/server.go @@ -0,0 +1,148 @@ +package protocol + +type WSMessage struct { + Type string `json:"type"` + Payload any `json:"payload,omitempty"` +} + +type AgentNodeSystemProfile struct { + Hostname string `json:"hostname"` + OSName string `json:"os_name"` + OSVersion string `json:"os_version"` + KernelVersion string `json:"kernel_version"` + Architecture string `json:"architecture"` + CPUModel string `json:"cpu_model"` + CPUCores int `json:"cpu_cores"` + TotalMemoryBytes int64 `json:"total_memory_bytes"` + TotalDiskBytes int64 `json:"total_disk_bytes"` + UptimeSeconds int64 `json:"uptime_seconds"` + ReportedAtUnix int64 `json:"reported_at_unix"` +} + +type AgentNodeMetricSnapshot struct { + CapturedAtUnix int64 `json:"captured_at_unix"` + CPUUsagePercent float64 `json:"cpu_usage_percent"` + MemoryUsedBytes int64 `json:"memory_used_bytes"` + MemoryTotalBytes int64 `json:"memory_total_bytes"` + StorageUsedBytes int64 `json:"storage_used_bytes"` + StorageTotalBytes int64 `json:"storage_total_bytes"` + DiskReadBytes int64 `json:"disk_read_bytes"` + DiskWriteBytes int64 `json:"disk_write_bytes"` + NetworkRxBytes int64 `json:"network_rx_bytes"` + NetworkTxBytes int64 `json:"network_tx_bytes"` +} + +type AgentNodeHealthEvent struct { + EventType string `json:"event_type"` + Severity string `json:"severity"` + Message string `json:"message"` + TriggeredAtUnix int64 `json:"triggered_at_unix"` + Metadata map[string]string `json:"metadata"` +} + +type RelayProxyStat struct { + Name string `json:"name"` + Type string `json:"type"` + Status string `json:"status"` + ClientVersion string `json:"client_version"` + LastStartTime string `json:"last_start_time"` + LastCloseTime string `json:"last_close_time"` + ClientAddr string `json:"client_addr"` +} + +type RelayHeartbeatPayload struct { + Version string `json:"version"` + ExtVersion string `json:"frp_version"` + RelayStatus string `json:"relay_status"` + FrpsConnCount int `json:"frps_connections"` + FrpsProxyCount int `json:"frps_proxy_count"` + FrpsClientCount int `json:"frps_client_count"` + FrpsProxies []RelayProxyStat `json:"frps_proxies,omitempty"` + Name string `json:"name"` + IP string `json:"ip"` + Profile *AgentNodeSystemProfile `json:"profile,omitempty"` + Snapshot *AgentNodeMetricSnapshot `json:"snapshot,omitempty"` + HealthEvents []AgentNodeHealthEvent `json:"health_events,omitempty"` +} + +type RelayConfig struct { + BindPort int `json:"bind_port"` + VhostHTTPPort int `json:"vhost_http_port"` + AuthToken string `json:"auth_token"` + LogLevel string `json:"log_level"` + WebServerEnabled bool `json:"web_server_enabled"` +} + +type RelaySettings struct { + HeartbeatInterval int `json:"heartbeat_interval"` + WebsocketUpgradeEnabled bool `json:"websocket_upgrade_enabled"` + AutoUpdate bool `json:"auto_update"` + UpdateRepo string `json:"update_repo"` + UpdateNow bool `json:"update_now"` + UpdateChannel string `json:"update_channel"` + UpdateTag string `json:"update_tag"` +} + +type RelayHeartbeatResponse struct { + RelayConfig *RelayConfig `json:"relay_config"` + RelaySettings *RelaySettings `json:"relay_settings"` +} + +type ActiveConfigMeta struct { + Version string `json:"version"` + Checksum string `json:"checksum"` +} + +type FlaredConnectedRelay struct { + RelayNodeID string `json:"relay_node_id"` + Status string `json:"status"` + ProxyCount int `json:"proxy_count"` +} + +type FlaredHeartbeatPayload struct { + ClientVersion string `json:"client_version"` + FrpVersion string `json:"frp_version"` + IP string `json:"ip"` + TunnelStatus string `json:"tunnel_status"` + ConnectedRelays []FlaredConnectedRelay `json:"connected_relays"` + CurrentVersion string `json:"current_version"` + CurrentChecksum string `json:"current_checksum"` +} + +type FlaredHeartbeatResponse struct { + ActiveConfig *ActiveConfigMeta `json:"active_config"` + TunnelSettings *RelaySettings `json:"tunnel_settings"` +} + +type FlaredTunnelConfigResponse struct { + Version string `json:"version"` + Checksum string `json:"checksum"` + Relays []FlaredRelayInfo `json:"relays"` + Proxies []FlaredProxyEntry `json:"proxies"` +} + +type FlaredRelayInfo struct { + RelayNodeID string `json:"relay_node_id"` + Address string `json:"address"` + AuthToken string `json:"auth_token"` + ProxyURL string `json:"proxy_url"` +} + +type FlaredProxyEntry struct { + Name string `json:"name"` + Type string `json:"type"` + LocalAddr string `json:"local_addr"` + LocalPort int `json:"local_port"` + CustomDomains []string `json:"custom_domains"` +} + +type ApplyLogPayload struct { + NodeID string `json:"node_id"` + Version string `json:"version"` + Result string `json:"result"` + Message string `json:"message"` + Checksum string `json:"checksum"` + MainConfigChecksum string `json:"main_config_checksum"` + RouteConfigChecksum string `json:"route_config_checksum"` + SupportFileCount int `json:"support_file_count"` +} diff --git a/openflare-server/utils/render/openresty/render.go b/pkg/render/openresty/render.go similarity index 100% rename from openflare-server/utils/render/openresty/render.go rename to pkg/render/openresty/render.go diff --git a/openflare-server/utils/render/openresty/render_test.go b/pkg/render/openresty/render_test.go similarity index 100% rename from openflare-server/utils/render/openresty/render_test.go rename to pkg/render/openresty/render_test.go diff --git a/openflare-server/utils/render/openresty/types.go b/pkg/render/openresty/types.go similarity index 100% rename from openflare-server/utils/render/openresty/types.go rename to pkg/render/openresty/types.go diff --git a/openflare-server/utils/format.go b/pkg/utils/format.go similarity index 100% rename from openflare-server/utils/format.go rename to pkg/utils/format.go diff --git a/openflare-server/utils/network.go b/pkg/utils/network.go similarity index 100% rename from openflare-server/utils/network.go rename to pkg/utils/network.go diff --git a/openflare-server/utils/slice.go b/pkg/utils/slice.go similarity index 100% rename from openflare-server/utils/slice.go rename to pkg/utils/slice.go diff --git a/openflare-server/utils/string.go b/pkg/utils/string.go similarity index 100% rename from openflare-server/utils/string.go rename to pkg/utils/string.go diff --git a/openflare-server/utils/value.go b/pkg/utils/value.go similarity index 100% rename from openflare-server/utils/value.go rename to pkg/utils/value.go diff --git a/openflare-server/utils/version.go b/pkg/utils/version.go similarity index 100% rename from openflare-server/utils/version.go rename to pkg/utils/version.go diff --git a/openflare-server/utils/wsclient/client.go b/pkg/wsclient/client.go similarity index 100% rename from openflare-server/utils/wsclient/client.go rename to pkg/wsclient/client.go