videoplayer/proto/dns.go

201 lines
12 KiB
Go
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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
}