videoplayer/proto/dns.go

201 lines
12 KiB
Go
Raw Normal View History

2026-05-02 14:45:51 +08:00
package proto
import (
"gorm.io/gorm"
)
const (
DNS_STATUS_STOPPED = 0 // DNS服务器状态已停止
DNS_STATUS_RUNNING = 1 // DNS服务器状态运行中
DNS_STATUS_ERROR = 2 // DNS服务器状态错误
RECORD_TYPE_A = 1 // A记录
RECORD_TYPE_AAAA = 28 // AAAA记录
RECORD_TYPE_CNAME = 5 // CNAME记录
RECORD_TYPE_MX = 15 // MX记录
RECORD_TYPE_NS = 2 // NS记录
RECORD_TYPE_SOA = 6 // SOA记录
RECORD_TYPE_TXT = 16 // TXT记录
RECORD_TYPE_SRV = 33 // SRV记录
)
type DNSServer struct {
gorm.Model
UserID uint `gorm:"column:user_id;index" json:"user_id" form:"user_id"` // 用户ID
Name string `gorm:"column:name;type:varchar(255)" json:"name" form:"name"` // DNS服务器名称
Port uint `gorm:"column:port;default:53" json:"port" form:"port"` // 监听端口默认53
ListenIP string `gorm:"column:listen_ip;type:varchar(255)" json:"listen_ip" form:"listen_ip"` // 监听IP默认0.0.0.0
UpstreamDNS string `gorm:"column:upstream_dns;type:varchar(255)" json:"upstream_dns" form:"upstream_dns"` // 上游DNS服务器多个用逗号分隔
EnableRecursion bool `gorm:"column:enable_recursion;default:true" json:"enable_recursion" form:"enable_recursion"` // 是否启用递归查询
Status uint `gorm:"column:status;default:0" json:"status" form:"status"` // 状态0停止1运行中2错误
Description string `gorm:"column:description;type:text" json:"description" form:"description"` // 描述
Zones []DNSZone `gorm:"foreignKey:ServerID" json:"zones,omitempty"` // 关联的Zone
}
type DNSZone struct {
gorm.Model
ServerID uint `gorm:"column:server_id;index" json:"server_id" form:"server_id"` // 所属DNS服务器ID
Domain string `gorm:"column:domain;type:varchar(255);index" json:"domain" form:"domain"` // 域名,如 example.com
SOA_MName string `gorm:"column:soa_mname;type:varchar(255)" json:"soa_mname" form:"soa_mname"` // SOA记录的主域名服务器
SOA_RName string `gorm:"column:soa_rname;type:varchar(255)" json:"soa_rname" form:"soa_rname"` // SOA记录的管理员邮箱
SOA_Serial uint `gorm:"column:soa_serial;default:1" json:"soa_serial" form:"soa_serial"` // SOA记录的序列号
SOA_Refresh uint `gorm:"column:soa_refresh;default:86400" json:"soa_refresh" form:"soa_refresh"` // SOA记录的刷新时间
SOA_Retry uint `gorm:"column:soa_retry;default:7200" json:"soa_retry" form:"soa_retry"` // SOA记录的重试时间
SOA_Expire uint `gorm:"column:soa_expire;default:3600000" json:"soa_expire" form:"soa_expire"` // SOA记录的过期时间
SOA_Minimum uint `gorm:"column:soa_minimum;default:3600" json:"soa_minimum" form:"soa_minimum"` // SOA记录的最小TTL
TTL uint `gorm:"column:ttl;default:3600" json:"ttl" form:"ttl"` // 默认TTL
Description string `gorm:"column:description;type:text" json:"description" form:"description"` // 描述
Server DNSServer `gorm:"foreignKey:ServerID" json:"server,omitempty"` // 关联的DNS服务器
Records []DNSRecord `gorm:"foreignKey:ZoneID" json:"records,omitempty"` // 关联的记录
}
type DNSRecord struct {
gorm.Model
ZoneID uint `gorm:"column:zone_id;index" json:"zone_id" form:"zone_id"` // 所属Zone ID
Name string `gorm:"column:name;type:varchar(255);index" json:"name" form:"name"` // 记录名称,如 www 或 @
Type uint `gorm:"column:type;index" json:"type" form:"type"` // 记录类型1=A, 28=AAAA, 5=CNAME, 15=MX等
Value string `gorm:"column:value;type:text" json:"value" form:"value"` // 记录值
TTL uint `gorm:"column:ttl;default:3600" json:"ttl" form:"ttl"` // TTL如果为0则使用Zone的默认TTL
Priority uint `gorm:"column:priority;default:0" json:"priority" form:"priority"` // 优先级用于MX、SRV等记录
Weight uint `gorm:"column:weight;default:0" json:"weight" form:"weight"` // 权重用于SRV记录
Port uint `gorm:"column:port;default:0" json:"port" form:"port"` // 端口用于SRV记录
Target string `gorm:"column:target;type:varchar(255)" json:"target" form:"target"` // 目标用于SRV记录
Zone DNSZone `gorm:"foreignKey:ZoneID" json:"zone,omitempty"` // 关联的Zone
}
// DNSServer 创建请求
type CreateDNSServerReq struct {
Name string `json:"name" form:"name"` // DNS服务器名称
Port uint `json:"port" form:"port"` // 监听端口默认53
ListenIP string `json:"listen_ip" form:"listen_ip"` // 监听IP默认0.0.0.0
UpstreamDNS string `json:"upstream_dns" form:"upstream_dns"` // 上游DNS服务器多个用逗号分隔
EnableRecursion bool `json:"enable_recursion" form:"enable_recursion"` // 是否启用递归查询
Description string `json:"description" form:"description"` // 描述
}
// DNSServer 更新请求
type UpdateDNSServerReq struct {
ServerID uint `json:"server_id" form:"server_id"` // DNS服务器ID
Name string `json:"name" form:"name"` // DNS服务器名称
Port uint `json:"port" form:"port"` // 监听端口
ListenIP string `json:"listen_ip" form:"listen_ip"` // 监听IP
UpstreamDNS string `json:"upstream_dns" form:"upstream_dns"` // 上游DNS服务器
EnableRecursion bool `json:"enable_recursion" form:"enable_recursion"` // 是否启用递归查询
Status uint `json:"status" form:"status"` // 状态0停止1运行中2错误
Description string `json:"description" form:"description"` // 描述
}
// DNSServer 获取请求
type GetDNSServerReq struct {
ServerID uint `json:"server_id" form:"server_id"` // DNS服务器ID0表示获取全部
GetType int `json:"get_type" form:"get_type"` // 获取类型0获取自己的1获取全部管理员
}
// DNSServer 删除请求
type DeleteDNSServerReq struct {
ServerID uint `json:"server_id" form:"server_id"` // DNS服务器ID
DelType uint `json:"del_type" form:"del_type"` // 删除类型0删除单条1删除所有
}
// DNSZone 创建请求
type CreateDNSZoneReq struct {
ServerID uint `json:"server_id" form:"server_id"` // 所属DNS服务器ID
Domain string `json:"domain" form:"domain"` // 域名,如 example.com
SOA_MName string `json:"soa_mname" form:"soa_mname"` // SOA记录的主域名服务器
SOA_RName string `json:"soa_rname" form:"soa_rname"` // SOA记录的管理员邮箱
SOA_Serial uint `json:"soa_serial" form:"soa_serial"` // SOA记录的序列号
SOA_Refresh uint `json:"soa_refresh" form:"soa_refresh"` // SOA记录的刷新时间
SOA_Retry uint `json:"soa_retry" form:"soa_retry"` // SOA记录的重试时间
SOA_Expire uint `json:"soa_expire" form:"soa_expire"` // SOA记录的过期时间
SOA_Minimum uint `json:"soa_minimum" form:"soa_minimum"` // SOA记录的最小TTL
TTL uint `json:"ttl" form:"ttl"` // 默认TTL
Description string `json:"description" form:"description"` // 描述
}
// DNSZone 更新请求
type UpdateDNSZoneReq struct {
ZoneID uint `json:"zone_id" form:"zone_id"` // Zone ID
Domain string `json:"domain" form:"domain"` // 域名
SOA_MName string `json:"soa_mname" form:"soa_mname"` // SOA记录的主域名服务器
SOA_RName string `json:"soa_rname" form:"soa_rname"` // SOA记录的管理员邮箱
SOA_Serial uint `json:"soa_serial" form:"soa_serial"` // SOA记录的序列号
SOA_Refresh uint `json:"soa_refresh" form:"soa_refresh"` // SOA记录的刷新时间
SOA_Retry uint `json:"soa_retry" form:"soa_retry"` // SOA记录的重试时间
SOA_Expire uint `json:"soa_expire" form:"soa_expire"` // SOA记录的过期时间
SOA_Minimum uint `json:"soa_minimum" form:"soa_minimum"` // SOA记录的最小TTL
TTL uint `json:"ttl" form:"ttl"` // 默认TTL
Description string `json:"description" form:"description"` // 描述
}
// DNSZone 获取请求
type GetDNSZoneReq struct {
ZoneID uint `json:"zone_id" form:"zone_id"` // Zone ID0表示获取全部
ServerID uint `json:"server_id" form:"server_id"` // DNS服务器ID用于过滤
GetType int `json:"get_type" form:"get_type"` // 获取类型0获取自己的1获取全部管理员
}
// DNSZone 删除请求
type DeleteDNSZoneReq struct {
ZoneID uint `json:"zone_id" form:"zone_id"` // Zone ID
DelType uint `json:"del_type" form:"del_type"` // 删除类型0删除单条1删除所有
}
// DNSRecord 创建请求
type CreateDNSRecordReq struct {
ZoneID uint `json:"zone_id" form:"zone_id"` // 所属Zone ID
Name string `json:"name" form:"name"` // 记录名称,如 www 或 @
Type uint `json:"type" form:"type"` // 记录类型1=A, 28=AAAA, 5=CNAME, 15=MX等
Value string `json:"value" form:"value"` // 记录值
TTL uint `json:"ttl" form:"ttl"` // TTL
Priority uint `json:"priority" form:"priority"` // 优先级用于MX、SRV等记录
Weight uint `json:"weight" form:"weight"` // 权重用于SRV记录
Port uint `json:"port" form:"port"` // 端口用于SRV记录
Target string `json:"target" form:"target"` // 目标用于SRV记录
}
// DNSRecord 更新请求
type UpdateDNSRecordReq struct {
RecordID uint `json:"record_id" form:"record_id"` // 记录ID
Name string `json:"name" form:"name"` // 记录名称
Type uint `json:"type" form:"type"` // 记录类型
Value string `json:"value" form:"value"` // 记录值
TTL uint `json:"ttl" form:"ttl"` // TTL
Priority uint `json:"priority" form:"priority"` // 优先级
Weight uint `json:"weight" form:"weight"` // 权重
Port uint `json:"port" form:"port"` // 端口
Target string `json:"target" form:"target"` // 目标
}
// DNSRecord 获取请求
type GetDNSRecordReq struct {
RecordID uint `json:"record_id" form:"record_id"` // 记录ID0表示获取全部
ZoneID uint `json:"zone_id" form:"zone_id"` // Zone ID用于过滤
GetType int `json:"get_type" form:"get_type"` // 获取类型0获取自己的1获取全部管理员
}
// DNSRecord 删除请求
type DeleteDNSRecordReq struct {
RecordID uint `json:"record_id" form:"record_id"` // 记录ID
DelType uint `json:"del_type" form:"del_type"` // 删除类型0删除单条1删除所有
}
// 启动DNS服务器请求
type StartDNSServerReq struct {
ServerID uint `json:"server_id" form:"server_id" binding:"required"` // DNS服务器ID
}
// 停止DNS服务器请求
type StopDNSServerReq struct {
ServerID uint `json:"server_id" form:"server_id" binding:"required"` // DNS服务器ID
}
// 重启DNS服务器请求
type RestartDNSServerReq struct {
ServerID uint `json:"server_id" form:"server_id" binding:"required"` // DNS服务器ID
}
// 获取DNS服务器状态请求
type GetDNSServerStatusReq struct {
ServerID uint `json:"server_id" form:"server_id" binding:"required"` // DNS服务器ID
}