MCPcopy
hub / github.com/jeessy2/ddns-go / GetNewIp

Method GetNewIp

config/domains.go:102–138  ·  view source on GitHub ↗

GetNewIp 接口/网卡/命令获得 ip 并校验用户输入的域名

(dnsConf *DnsConfig)

Source from the content-addressed store, hash-verified

100
101// GetNewIp 接口/网卡/命令获得 ip 并校验用户输入的域名
102func (domains *Domains) GetNewIp(dnsConf *DnsConfig) {
103 domains.Ipv4Domains = checkParseDomains(dnsConf.Ipv4.Domains)
104 domains.Ipv6Domains = checkParseDomains(dnsConf.Ipv6.Domains)
105
106 // IPv4
107 if dnsConf.Ipv4.Enable && len(domains.Ipv4Domains) > 0 {
108 ipv4Addr := dnsConf.GetIpv4Addr()
109 if ipv4Addr != "" {
110 domains.Ipv4Addr = ipv4Addr
111 domains.Ipv4Cache.TimesFailedIP = 0
112 } else {
113 // 启用IPv4 & 未获取到IP & 填写了域名 & 失败刚好3次,防止偶尔的网络连接失败,并且只发一次
114 domains.Ipv4Cache.TimesFailedIP++
115 if domains.Ipv4Cache.TimesFailedIP == 3 {
116 domains.Ipv4Domains[0].UpdateStatus = UpdatedFailed
117 }
118 util.Log("未能获取IPv4地址, 将不会更新")
119 }
120 }
121
122 // IPv6
123 if dnsConf.Ipv6.Enable && len(domains.Ipv6Domains) > 0 {
124 ipv6Addr := dnsConf.GetIpv6Addr()
125 if ipv6Addr != "" {
126 domains.Ipv6Addr = ipv6Addr
127 domains.Ipv6Cache.TimesFailedIP = 0
128 } else {
129 // 启用IPv6 & 未获取到IP & 填写了域名 & 失败刚好3次,防止偶尔的网络连接失败,并且只发一次
130 domains.Ipv6Cache.TimesFailedIP++
131 if domains.Ipv6Cache.TimesFailedIP == 3 {
132 domains.Ipv6Domains[0].UpdateStatus = UpdatedFailed
133 }
134 util.Log("未能获取IPv6地址, 将不会更新")
135 }
136 }
137
138}
139
140// checkParseDomains 校验并解析用户输入的域名
141func checkParseDomains(domainArr []string) (domains []*Domain) {

Callers 15

InitMethod · 0.80
InitMethod · 0.80
InitMethod · 0.80
InitMethod · 0.80
InitMethod · 0.80
InitMethod · 0.80
InitMethod · 0.80
InitMethod · 0.80
InitMethod · 0.80
InitMethod · 0.80
InitMethod · 0.80
InitMethod · 0.80

Calls 4

LogFunction · 0.92
checkParseDomainsFunction · 0.85
GetIpv4AddrMethod · 0.80
GetIpv6AddrMethod · 0.80

Tested by

no test coverage detected