aliyunDDns定時更新域名 IP
aliYunDns是阿里云DDNS定時更新Golang版。 golang交叉編譯跨平臺可執(zhí)行程序,一鍵運行,部署使用方便。已提供windows,linux,mac系統(tǒng)64位可執(zhí)行程序,見release。
快速使用
第一步:到該頁面下載最新版本的可執(zhí)行程序包
https://gitee.com/dwxdfhx/aliyunDDns/releases
第二步:windows直接雙擊根目錄下exe程序,linux程序授權(quán)后啟動即可。
默認端口為95,訪問95端口的web服務(wù),登陸賬號密碼為:admin/admin.
第三部:登陸后,配置上自己的阿里云秘鑰,添加一個定時任務(wù):
技術(shù)引入
- 后端golang框架:goframe
- 后端數(shù)據(jù)庫sqlite
- 前端:layui jquery
git倉庫地址
https://gitee.com/dwxdfhx/aliyunDDns
參考文檔
- https://developer.aliyun.com/sdk?spm=a2c4g.11186623.2.16.30bc30b1I2tKHI
- https://goframe.org/index
- https://www.layui.com/demo/table/data.html
功能列表
- 阿里云域名管理配置秘鑰管理
- 添加頂級域名,定時更新域名下所有A記錄IP地址
- 提供界面操作,支持定時任務(wù)添加刪除刪除
- 提供界面操作,支持啟動或者關(guān)閉任務(wù)
- 系統(tǒng)重啟任務(wù)不丟失,自動加載已配置任務(wù)列表
- 配置參數(shù)熱更新
圖形界面
管理首頁
管理定時任務(wù)
系統(tǒng)啟動日志
更新A記錄IP日志
TODO 列表
- todo:目前用domain管理即可,因為一個domain下只有一個任務(wù),后續(xù)擴展出新場景,用id管理
- todo:添加更多的任務(wù)場景
- todo:用正則驗證 abc.xyz corn
- todo:定時任務(wù)執(zhí)行日志界面,基于日志任務(wù)重試
常用命令
-
項目下載依賴
go mod download
go mod vendor
(idea識別;交叉編譯使用.) -
資源文件打包
資源目錄打包data.go
gf pack config,public,template boot/data.go -n boot -
交叉編譯 gf build main.go
因為使用了sqlite,上面命令打包出來不可用。需要配合下面的xgo進行交叉編譯linux環(huán)境或windows環(huán)境下都可以,這里使用虛擬機里的centos6.5,在虛擬機里配置好git, git ssh,docker,golang ,go mod 代理。 export GOPROXY=https://goproxy.io
使用xgo交叉編譯:
2.1 項目安裝依賴 go get github.com/karalabe/xgo
2.2 安裝docker鏡像 docker pull karalabe/xgo-latest 2.3 mkdir -p /go/src 把需要交叉編譯的工程移到/go/src下,以后交叉編譯的工程都放在該目錄下 2.4 執(zhí)行下面命令cd /go/src/交叉編譯的項目 go mod download go mod vendor #進入容器 docker run -it --entrypoint /bin/bash karalabe/xgo-latest docker run --rm -it -v "$PWD"/runapp:/build -v "$PWD"/vendor:/go/src -v "$PWD":/go/src/AliYunDns \ -e TARGETS=windows/amd64,darwin/amd64,linux/amd64 karalabe/xgo-latest AliYunDns #docker知識補充: # -v 意思: /test:/soft 本地/tect目錄作為容器的/soft目錄 # -e 給容器傳遞變量參數(shù) 變量前是 -- # --rm 容器退出時候清理掛在目錄下內(nèi)容 # -it 進入了命令交互界面 #交叉編譯平臺版本知識補充 #amd64 和 i386 是什么意思? # 可以直接理解為amd64為64位系統(tǒng),i386為32位系統(tǒng).因為是amd把64位率先引進桌面系統(tǒng)的,英特爾也是要追隨amd并且保持兼容, # 一般在軟件包里包含這樣的字符。(直接一直以為amd64表示是amd處理器才能用...) #TARGETS=windows/amd64,darwin/amd64,linux/amd64 可以簡化編譯,提高編譯速度 #TARGETS=windows/*,darwin/*,linux/*
