代码拉取完成,页面将自动刷新
package main
import (
"flag"
"fmt"
"os"
"time"
"gitee.com/liumou_site/ddns-go/model"
"gitee.com/liumou_site/logger"
)
var (
debug bool // 是否开启调试模式,开启后会显示详细日志信息
show bool // 是否显示程序简介,设置为true时会显示简介后退出程序
ver bool // 是否显示版本信息,设置为true时会显示版本号后退出程序
Sec int // DNS记录更新间隔时间(秒),默认值为60秒
IP6Url string // IPv6地址查询API的URL地址,可从环境变量UrlIp6Api获取
Config string // 配置文件路径,可通过命令行参数-c指定
List bool // 是否显示域名列表
Service bool // 是否为服务模式,设置为true时会在系统启动时自动执行DNS更新
SpecifyNetworkCard bool // 是否指定网卡,设置为true时会在系统启动时自动执行DNS更新
SpecifyNetworkCardName string // 指定网卡名称
)
func main() {
// 打印项目网站
fmt.Println("https://liumou.site")
// 定义当前版本号
version := "3.2.8"
// 默认配置文件路径
file := "/opt/apps/com.liumou.ddns-tencent/ddns.toml"
// 初始化命令行参数解析
gfs := flag.NewFlagSet("ddns-go", flag.ExitOnError)
gfs.StringVar(&Config, "c", file, "设置配置文件路径")
gfs.IntVar(&Sec, "sec", model.GetEnvSec(), "下一次更新间隔时间(秒)")
gfs.StringVar(&IP6Url, "u6", model.GetEnvIP6Url(), "设置IPV6查询接口地址")
gfs.BoolVar(&List, "list", false, "显示域名列表")
gfs.BoolVar(&SpecifyNetworkCard, "s", false, "是否指定网卡,设置为true时会通过特定网卡获取IP地址")
gfs.StringVar(&SpecifyNetworkCardName, "n", "", "指定网卡名称")
gfs.BoolVar(&Service, "service", false, "是否为服务模式,设置为true时会在系统启动时自动执行DNS更新")
gfs.BoolVar(&debug, "debug", model.GetEnvDebug(), "显示程序运行详细日志信息")
gfs.BoolVar(&show, "show", false, "显示程序简介")
gfs.BoolVar(&ver, "v", false, "显示版本信息")
// 解析命令行参数
args := os.Args
err := gfs.Parse(args[1:])
if err != nil {
return
}
// 处理show参数:显示程序简介后退出
if show {
fmt.Println("这是一个腾讯云平台自动化更新域名的程序,支持IPV6/IPV4")
os.Exit(0)
}
if SpecifyNetworkCard {
if len(SpecifyNetworkCardName) == 0 {
fmt.Println("请指定网卡名称")
os.Exit(1)
}
}
// 处理ver参数:显示版本信息后退出
if ver {
fmt.Println(version)
os.Exit(0)
}
logger.Info("ddns-go v" + version)
if Service {
err = model.CreateService(Config)
if err != nil {
os.Exit(1)
}
os.Exit(0)
}
// 主循环:持续执行DNS更新
l := model.NewLogin()
l.ConfigFile = Config
l.ConfigGet() // 读取配置文件
l.Debug = debug // 设置调试模式
l.IPS.Debug = debug
l.IPS.IpType = l.Domain.Domain.Type // 设置IP类型(IPv4/IPv6)
l.IPS.UrlIp6Api = IP6Url // 设置IPv6查询API
// 设置指定网卡
l.IPS.SpecifyNetworkCard = SpecifyNetworkCard
l.IPS.SpecifyNetworkCardName = SpecifyNetworkCardName
if List {
l.ShowList()
}
for {
l.Start() // 开始执行DNS更新
// 记录日志并等待下次执行
logger.Info("本次更新完成,正在等待下次更新,当前设置等待时间: ", Sec, "秒")
time.Sleep(time.Duration(Sec) * time.Second)
}
}
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。