调试通过
This commit is contained in:
parent
ca23763c89
commit
b2d35d0537
|
|
@ -0,0 +1,18 @@
|
|||
FROM harbor.ks.easyj.top/zt/alpine:0.1
|
||||
|
||||
ENV APP_DIR=/app \
|
||||
DOMAIN=myschools.me \
|
||||
RR=PI1 \
|
||||
AL_REGIONID=cn-hangzhou \
|
||||
AL_ACCESSKEYID=LTAI5tJV828nqSqGpkouh1FD \
|
||||
AL_ACCESSSECRET=aiMEp37bHLOjtoJFTDTfpq1o37cGtA
|
||||
|
||||
COPY ddns6 ${APP_DIR}/ddns6
|
||||
|
||||
WORKDIR ${APP_DIR}
|
||||
|
||||
RUN chmod +x ddns6
|
||||
|
||||
EXPOSE 8080
|
||||
|
||||
CMD ["./ddns6"]
|
||||
52
main.go
52
main.go
|
|
@ -4,15 +4,24 @@ import (
|
|||
"fmt"
|
||||
"log"
|
||||
"net"
|
||||
"os"
|
||||
"strings"
|
||||
"time"
|
||||
|
||||
"github.com/aliyun/alibaba-cloud-sdk-go/services/alidns"
|
||||
)
|
||||
|
||||
func main() {
|
||||
domain := os.Getenv("DOMAIN")
|
||||
rr := os.Getenv("RR")
|
||||
regionID := os.Getenv("AL_REGIONID")
|
||||
accessKeyID := os.Getenv("AL_ACCESSKEYID")
|
||||
accessSecret := os.Getenv("AL_ACCESSSECRET")
|
||||
|
||||
fullDNS := fmt.Sprintf("%s.%s", rr, domain)
|
||||
|
||||
for {
|
||||
time.Sleep(time.Minute)
|
||||
time.Sleep(time.Second)
|
||||
|
||||
addrs, err := net.InterfaceAddrs()
|
||||
if err != nil {
|
||||
|
|
@ -37,25 +46,46 @@ func main() {
|
|||
continue
|
||||
}
|
||||
|
||||
client, err := alidns.NewClientWithAccessKey("cn-hangzhou", "<accessKeyId>", "<accessSecret>")
|
||||
//查询域名对应的IP是否相同,相同时跳过。
|
||||
ns, err := net.LookupHost(fullDNS)
|
||||
if err != nil {
|
||||
log.Println(err.Error())
|
||||
|
||||
if !strings.Contains(err.Error(), "no such host") {
|
||||
continue
|
||||
}
|
||||
}
|
||||
|
||||
found := false
|
||||
for _, n := range ns {
|
||||
if n == ip6 {
|
||||
found = true
|
||||
continue
|
||||
}
|
||||
}
|
||||
if found {
|
||||
continue
|
||||
}
|
||||
|
||||
client, err := alidns.NewClientWithAccessKey(regionID, accessKeyID, accessSecret)
|
||||
if err != nil {
|
||||
log.Println(err.Error())
|
||||
continue
|
||||
}
|
||||
|
||||
//查询域名对应的IP是否相同,相同时跳过。
|
||||
|
||||
//修改域名对应的IP,修改成功后continue
|
||||
req := alidns.CreateUpdateDomainRecordRequest()
|
||||
req.Scheme = "https"
|
||||
req.RR = "pi1"
|
||||
req.RR = rr
|
||||
req.Value = ip6
|
||||
req.Type = "AAAA"
|
||||
req.Domain = "myschools.me"
|
||||
req.Domain = domain
|
||||
resp, err := client.UpdateDomainRecord(req)
|
||||
if err != nil {
|
||||
log.Println(err.Error())
|
||||
continue
|
||||
if !strings.Contains(err.Error(), "not wodeschool.com") {
|
||||
continue
|
||||
}
|
||||
}
|
||||
|
||||
if resp.IsSuccess() {
|
||||
|
|
@ -67,12 +97,14 @@ func main() {
|
|||
request.Scheme = "https"
|
||||
request.Value = ip6
|
||||
request.Type = "AAAA"
|
||||
request.RR = "pi1"
|
||||
request.DomainName = "dns-example.com"
|
||||
request.RR = rr
|
||||
request.DomainName = domain
|
||||
response, err := client.AddDomainRecord(request)
|
||||
if err != nil {
|
||||
fmt.Print(err.Error())
|
||||
}
|
||||
fmt.Printf("response is %#v\n", response)
|
||||
if !response.IsSuccess() {
|
||||
fmt.Print(response.GetHttpContentString())
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
25
readme.md
25
readme.md
|
|
@ -1,10 +1,31 @@
|
|||
DDNS6
|
||||
# DDNS6
|
||||
|
||||
---
|
||||
|
||||
|
||||
一、概述
|
||||
|
||||
把当前主机的IPV6向阿里DNS进行注册,实现IPV6 DDNS功能。
|
||||
把当前主机的IPV6向阿里DNS进行注册,实现IPV6 DDNS功能。
|
||||
|
||||
二、组件
|
||||
|
||||
github.com/alibabacloud-go/domain-20180208 v0.0.2
|
||||
github.com/alibabacloud-go/alidns-20150109/v4 v4.0.10
|
||||
|
||||
三、配置
|
||||
|
||||
1. 阿里云配置RAM访问控制,权限如下:
|
||||
|
||||
AliyunDNSFullAccess
|
||||
AliyunHTTPDNSFullAccess
|
||||
|
||||
2. 环境变量
|
||||
DOMAIN 域名
|
||||
RR 二级域名
|
||||
AL_REGIONID 地域,默认cn-hangzhou
|
||||
AL_ACCESSKEYID 访问key
|
||||
AL_ACCESSSECRET 访问私钥
|
||||
|
||||
四、 调试
|
||||
|
||||
DOMAIN=myschools.me RR=pi1 go run .
|
||||
Loading…
Reference in New Issue