logo
0
0
WeChat Login
feat: 添加程序集信息和AOT编译支持

UGLinkEO - 腾讯云 EdgeOne 源站组自动更新服务

这是一个 .NET 10 AOT Worker Service,用于自动获取 relay domain 并更新腾讯云 EdgeOne 的源站组。

功能特性

  • 自动调用绿联 API 获取 ${domain}.${relayDomain}
  • 自动查找或创建名为 uglink 的源站组
  • 自动更新源站组配置
  • 定期检查并更新(默认每 5 分钟)
  • 完整的 API 错误处理和日志记录
  • 支持通过配置文件或环境变量设置密钥
  • 支持 AOT 编译,性能优异

配置说明

appsettings.json

{
  "AppSettings": {
    "Domain": "myugnas",
    "OriginGroupName": "uglink",
    "ZoneId": "your-zone-id",
    "CheckIntervalMinutes": 5,
    "TencentCloud": {
      "SecretId": "your-secret-id",
      "SecretKey": "your-secret-key"
    }
  }
}

配置项说明:

  • Domain: 域名别名,用于获取 relay domain
  • OriginGroupName: 源站组名称
  • ZoneId: 腾讯云 EdgeOne 的 Zone ID
  • CheckIntervalMinutes: 检查间隔(分钟)
  • TencentCloud.SecretId: 腾讯云 SecretId
  • TencentCloud.SecretKey: 腾讯云 SecretKey

环境变量(备选)

如果不希望在配置文件中存放密钥,也可以通过环境变量设置:

$env:TENCENTCLOUD_SECRET_ID = "your-secret-id"
$env:TENCENTCLOUD_SECRET_KEY = "your-secret-key"

程序会优先使用配置文件中的值,配置文件为空时才会从环境变量读取。

运行项目

cd UGLinkEO
dotnet run

发布 AOT 版本

dotnet publish -c Release -r win-x64

支持的运行时标识符(RID):

  • win-x64:Windows 64位
  • linux-x64:Linux 64位
  • osx-x64:macOS 64位
  • 以及其他 .NET 10 支持的平台

项目结构

UGLinkEO/
├── Models/                    # 数据模型
│   ├── EdgeOneOriginGroup.cs # EdgeOne 源站组相关模型
│   ├── GetNodeInfoRequest.cs # 获取节点信息请求
│   └── UGNasApiResponse.cs   # 绿联 API 响应模型
├── Services/                  # 服务类
│   ├── AppJsonContext.cs     # System.Text.Json 源生成器上下文
│   ├── TencentCloudTeoService.cs  # 腾讯云 EdgeOne API 服务
│   └── UGNasService.cs       # 绿联 API 服务
├── AppSettings.cs             # 配置类
├── Program.cs                 # 程序入口
├── Worker.cs                  # 后台工作服务
├── TrimmerRoots.xml           # AOT 裁剪根配置
└── appsettings.json           # 应用配置

API 说明

绿联 API

  • 接口地址https://api.ugnas.com/api/p2p/v2/ta/nodeInfo/byAlias
  • 请求方法:POST
  • 功能:获取节点信息和 relay domain

腾讯云 EdgeOne API

  • DescribeOriginGroup:查询源站组列表
  • CreateOriginGroup:创建源站组
  • ModifyOriginGroup:修改源站组配置

错误处理

程序内置完整的错误处理机制:

  • API 请求失败时会记录详细错误信息
  • 错误信息包含:错误码(Code)、错误消息(Message)、请求 ID(RequestId)
  • 支持异常捕获和重试机制
  • 所有操作都有详细的日志记录

许可证

MIT License

About

这是一个 .NET 10 AOT Worker Service,用于自动获取 relay domain 并更新腾讯云 EdgeOne 的源站组。

Language
C#100%