Documentation
¶
Index ¶
- func CreateService(conf string) error
- func GenerateConfigTemplate(outputPath string) error
- func GetDefaultTemplatePath() string
- func GetEnvDebug() bool
- func GetEnvIP6Url() string
- func GetEnvSec() int
- func RemoveStrNone(txt string) string
- type AutoGenerated
- type DomainConfig
- type DomainInfo
- type EthInfo
- type IP
- type Login
- func (l *Login) Add(ip string)
- func (l *Login) CheckConfig()
- func (l *Login) CheckNameIsExist(sub string) bool
- func (l *Login) ConfigGet()
- func (l *Login) Delete(name string, RecordId uint64) error
- func (l *Login) GetAnalyticalValue() error
- func (l *Login) GetParseList() error
- func (l *Login) GetRecordId(sub string)
- func (l *Login) RemoveStrNone()
- func (l *Login) ShowList()
- func (l *Login) Start()
- func (l *Login) Update(RecordId int, ip, sub string)
- type Pid
- type Response
- type WebServer
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func CreateService ¶
CreateService 用于在Linux系统上创建并启动ddns-go服务。 该函数会检查当前系统是否为Linux,并确保配置文件和目标服务文件不存在。 然后,它会创建必要的目录,复制配置文件,并生成systemd服务文件。 最后,函数会重载systemd配置,启用并启动ddns-go服务。
参数:
- conf: 配置文件的路径,该文件将被复制到/etc/ddns-go/config.toml。
返回值:
- error: 如果过程中出现任何错误,返回相应的错误信息;否则返回nil。
func GenerateConfigTemplate ¶
GenerateConfigTemplate 生成配置文件模板
func GetDefaultTemplatePath ¶
func GetDefaultTemplatePath() string
GetDefaultTemplatePath 获取默认模板文件路径
func GetEnvIP6Url ¶
func GetEnvIP6Url() string
GetEnvIP6Url 获取环境变量中的IPv6 API地址,如果未设置或长度不足,则返回默认的IPv6 API地址。 该函数首先从环境变量中读取名为 "UrlIp6Api" 的值,如果该值不存在或长度小于等于10, 则使用默认的IPv6 API地址 "http://ipv6.liumou.site:22011/api"。 返回值:
string: 返回获取到的IPv6 API地址。
func GetEnvSec ¶
func GetEnvSec() int
GetEnvSec 从环境变量中获取 "Sec" 的值,并将其转换为整数。 如果转换后的值大于 0,则返回该值;否则返回默认值 60。 返回值:
int: 从环境变量中获取的秒数,若无效则返回默认值 60。
func RemoveStrNone ¶
RemoveStrNone 函数用于移除字符串中的所有空白字符(包括空格、制表符、换行符等)。 该函数通过正则表达式匹配所有空白字符,并将其替换为空字符串。
参数:
- txt: 输入的字符串,可能包含空白字符。
返回值:
- string: 移除所有空白字符后的字符串。
Types ¶
type AutoGenerated ¶
type AutoGenerated struct {
Response struct {
RecordCountInfo struct {
SubdomainCount int `json:"SubdomainCount"`
ListCount int `json:"ListCount"`
TotalCount int `json:"TotalCount"`
} `json:"RecordCountInfo"`
RecordList []struct {
RecordID int `json:"RecordId"`
Value string `json:"Value"`
Status string `json:"Status"`
UpdatedOn string `json:"UpdatedOn"`
Name string `json:"Name"`
Line string `json:"Line"`
LineID string `json:"LineId"`
Type string `json:"Type"`
MonitorStatus string `json:"MonitorStatus"`
Remark string `json:"Remark"`
TTL int `json:"TTL"`
Mx int `json:"MX"`
} `json:"RecordList"`
RequestID string `json:"RequestId"`
} `json:"Response"`
}
AutoGenerated 定义对应的结构体
type DomainConfig ¶
type DomainConfig struct {
Domain struct {
Domain string `json:"Domain"` // 域名
Sub string `json:"Sub"` // 子域名
Sub4 string `json:"Sub4"` // 子域名V4
Sub6 string `json:"Sub6"` // 子域名V6
Remark string `json:"Remark"` // 备注
Type string `json:"Type"` // 解析类型
}
Login struct {
Id string `json:"Id"` // 账号
Key string `json:"Key"` // 密钥
}
Option struct {
Delete bool `json:"delete"` // 是否删除已存在的记录再添加
}
}
DomainConfig 定义对应的结构体
type DomainInfo ¶
type IP ¶
type IP struct {
Ip string `json:"ip"` // 本次需要更新的本机IP
IpType string `json:"ip_type"` // ip类型
Debug bool `json:"debug"` // 是否开启Debug
Err error `json:"err"` // 错误信息
Out string `json:"out"` // 命令行输出
Pre string `json:"pre"` //
IP4 string `json:"IP4"` // ipv4
IP6 string `json:"IP6"` // ipv6
SetV6 bool `json:"setV6"` // 是否设置ipv6
SetV4 bool `json:"setV4"` // 是否设置ipv4
Ip6Exists bool `json:"ip6Exists"` // 是否存在IP6网络
Ip4Exists bool `json:"ip4Exists"` // 是否存在IP4网络
UrlIp6Api string `json:"urlIp6Api"` // 设置IPV6接口获取地址
SpecifyNetworkCard bool `json:"specifyNetworkCard"` // 是否指定网卡
SpecifyNetworkCardName string `json:"specifyNetworkCardName"` // 指定网卡名称
}
IP 定义对应的结构体
type Login ¶
type Login struct {
Debug bool `json:"debug"` // 是否开启Debug
IPS IP `json:"ips"` // 从云端查询到的IP信息
RecordId int `json:"recordId"` // 记录id
RecordId4 int `json:"recordId4"` // 记录id
RecordId6 int `json:"recordId6"` // 记录id
Value string `json:"value"` // 解析值
Exists bool `json:"exists"` // 是否存在记录
Err error `json:"err"` // 错误信息
Url string `json:"url"` // 拼接域名后的完整地址
SubList []string `json:"subList"` // 子域名解析列表
DomainInfoList []DomainInfo `json:"domainInfoList"` // 域名信息
Pids Pid `json:"Pids"` // PID信息
Domain *DomainConfig `json:"Domain"` // 域名配置
ConfigFile string `json:"configFile"` // 配置文件路径
}
func NewLogin ¶
func NewLogin() *Login
NewLogin 初始化并返回一个指向 Login 结构体的指针。 该函数会创建一个默认配置的 Login 对象,并根据环境变量进行部分配置的覆盖。 返回的 Login 对象包含默认的域名配置、IP 配置、以及进程 ID 文件路径等信息。
func (*Login) Add ¶
Add 方法用于向腾讯云DNS服务添加一条新的解析记录。 该方法会实例化一个认证对象,并使用提供的SecretId和SecretKey进行身份验证。 然后,它会创建一个请求对象,设置必要的参数(如域名、记录类型、IP地址等), 并通过腾讯云SDK发送请求以添加记录。 如果请求成功,将输出成功信息;如果失败,将记录错误日志并可能触发panic。
func (*Login) CheckConfig ¶
func (l *Login) CheckConfig()
CheckConfig 检查登录配置是否有效。 该函数会验证配置文件中域名、子域名、密钥对ID、密钥对SecretKey、备注信息以及解析记录类型等字段是否已正确设置。 如果发现任何字段未设置或设置不正确,函数会输出错误信息并终止程序。
func (*Login) CheckNameIsExist ¶
CheckNameIsExist 检查给定的子名称是否存在于登录对象的子列表中。 该函数通过遍历子列表,并使用不区分大小写的比较来判断是否存在匹配项。
参数:
- sub: 需要检查的子名称。
返回值:
- bool: 如果子名称存在于子列表中,则返回 true;否则返回 false。
func (*Login) ConfigGet ¶
func (l *Login) ConfigGet()
ConfigGet 从配置文件中读取并解析配置信息。 该函数首先检查配置文件是否存在,如果不存在则记录错误并退出程序。 如果配置文件存在,则尝试将其解析为 TOML 格式,并将解析结果存储到 Login 结构体的 Domain 字段中。 如果解析过程中发生错误,则记录错误并退出程序。
func (*Login) Delete ¶
Delete 删除指定域名的DNS记录。 该函数通过腾讯云SDK调用DNSPod API,删除指定域名的DNS记录。
参数:
- name: 要删除DNS记录的域名名称,例如 "www.example.com"
- RecordId: 要删除的DNS记录的ID
函数流程:
- 使用腾讯云账户的SecretId和SecretKey实例化认证对象。
- 配置客户端选项,指定API的访问端点。
- 实例化DNSPod客户端对象,用于与腾讯云API进行交互。
- 创建删除DNS记录的请求对象,并设置要删除的域名。
- 调用API删除DNS记录,并处理可能的错误。
- 输出API返回的JSON格式响应。
func (*Login) GetAnalyticalValue ¶
GetAnalyticalValue 根据当前记录的ID获取对应的解析值(IP地址) 该方法遍历DomainInfoList列表,查找与当前RecordId匹配的记录 如果找到匹配记录,将记录的IP地址赋值给Login结构体的Value字段并返回nil 如果未找到匹配记录,返回错误信息"无法获取解析记录"
func (*Login) GetParseList ¶
GetParseList 获取域名解析列表并解析为结构体 该函数通过腾讯云API获取指定域名的解析记录,并将结果解析为结构体,最后将解析结果存储在Login结构体的相关字段中。 如果启用了调试模式,函数会输出调试信息。
func (*Login) GetRecordId ¶
GetRecordId 获取指定子域名的解析记录ID 该方法用于查找并设置当前子域名的解析记录ID,区分IPv4(A记录)和IPv6(AAAA记录)
func (*Login) RemoveStrNone ¶
func (l *Login) RemoveStrNone()
RemoveStrNone 方法用于移除 Login 结构体中所有字符串字段的空格。 该方法会遍历 Login 结构体中的 Domain 和 Login 字段,并将这些字段中的字符串值中的所有空格替换为空字符串。 该方法没有参数和返回值。
func (*Login) ShowList ¶
func (l *Login) ShowList()
ShowList 方法用于展示域名解析列表。 该方法首先调用 GetParseList 方法获取域名解析信息,然后根据调试模式决定是否输出调试日志。 最后,遍历域名信息列表并打印每个域名的子域名、类型和IP地址,然后程序退出。
type Response ¶
type Response struct {
Response struct {
RecordList []struct {
RecordId int `json:"RecordId"`
} `json:"RecordList"`
} `json:"Response"`
}
Response 定义对应的结构体
type WebServer ¶
type WebServer struct {
// contains filtered or unexported fields
}
WebServer 结构体管理Web服务器
func NewWebServer ¶
NewWebServer 创建新的Web服务器实例