调试通过

This commit is contained in:
suguo.yao 2023-11-24 17:03:18 +08:00
parent ca23763c89
commit b2d35d0537
3 changed files with 84 additions and 13 deletions

18
Dockerfile Normal file
View File

@ -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
View File

@ -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())
}
}
}

View File

@ -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 .