From 43932e4b982c509de4940b122293136a25e8f1a1 Mon Sep 17 00:00:00 2001 From: chinhwajie Date: Mon, 28 Oct 2024 11:59:54 +0800 Subject: [PATCH] fix: cloudflare update performance --- cmd/bitsrun/logs/srun_login.log | 103 -------------------------- config.yaml | 12 +-- internal/dns/cloudflare/cloudflare.go | 69 ++++++++++------- internal/dns/dns.go | 3 + internal/dns/pubyun/pubyun.go | 51 +++++++++++++ internal/login/login.go | 2 +- logs/srun_login.log | 50 +++++++++++++ 7 files changed, 156 insertions(+), 134 deletions(-) delete mode 100644 cmd/bitsrun/logs/srun_login.log create mode 100644 internal/dns/pubyun/pubyun.go diff --git a/cmd/bitsrun/logs/srun_login.log b/cmd/bitsrun/logs/srun_login.log deleted file mode 100644 index c32969e..0000000 --- a/cmd/bitsrun/logs/srun_login.log +++ /dev/null @@ -1,103 +0,0 @@ -2024-10-25 16:39:54 [INFO] [comp:login] 正在获取登录状态 -2024-10-25 16:39:54 [DEBU] [comp:login] HTTP GET https://net3.zju.edu.cn/cgi-bin/rad_user_info -2024-10-25 16:39:54 [DEBU] [comp:login] jQuery685749352674324484917_1729845594439({"client_ip":"10.195.31.248","ecode":0,"error":"not_online_error","error_msg":"","online_ip":"10.195.31.248","res":"not_online_error","srun_ver":"SRunCGIAuthIntfSvr V1.18 B20210926","st":1729844483}) -2024-10-25 16:39:55 [DEBU] [comp:login] 认证客户端 ip: 10.195.31.248 -2024-10-25 16:39:55 [INFO] [comp:login] 检测到用户未登录,开始尝试登录... -2024-10-25 16:39:55 [DEBU] [comp:login] 正在获取 Token -2024-10-25 16:39:55 [DEBU] [comp:login] HTTP GET https://net3.zju.edu.cn/cgi-bin/get_challenge -2024-10-25 16:39:55 [DEBU] [comp:login] jQuery188462194273946559789_1729845595834({"challenge":"465222ceda92666dc44bf43716897f6ac393ef1e1365a60f4a19fffe6cefe47c","client_ip":"10.195.31.248","ecode":0,"error":"ok","error_msg":"","expire":"60","online_ip":"10.195.31.248","res":"ok","srun_ver":"SRunCGIAuthIntfSvr V1.18 B20210926","st":1729844485}) -2024-10-25 16:39:55 [DEBU] [comp:login] token: 465222ceda92666dc44bf43716897f6ac393ef1e1365a60f4a19fffe6cefe47c -2024-10-25 16:39:55 [DEBU] [comp:login] 发送登录请求 -2024-10-25 16:39:55 [DEBU] [comp:login] HTTP GET https://net3.zju.edu.cn/cgi-bin/srun_portal -2024-10-25 16:39:56 [DEBU] [comp:login] jQuery837557255217753528144_1729845595858({"ServerFlag":0,"ServicesIntfServerIP":"127.0.0.1","ServicesIntfServerPort":"8001","access_token":"465222ceda92666dc44bf43716897f6ac393ef1e1365a60f4a19fffe6cefe47c","checkout_date":0,"client_ip":"10.195.31.248","ecode":0,"error":"ok","error_msg":"","online_ip":"10.195.31.248","ploy_msg":"E0000: Login is successful.","real_name":"","remain_flux":0,"remain_times":0,"res":"ok","srun_ver":"SRunCGIAuthIntfSvr V1.18 B20210926","suc_msg":"login_ok","sysver":"1.01.20210926","username":"3210300237","wallet_balance":0}) -2024-10-25 16:39:56 [INFO] [comp:login] 登录成功~ -2024-10-25 16:39:57 [INFO] [comp:login] [mod:ddns] 开始 dynv6 DDNS 流程 -2024-10-25 16:42:00 [INFO] [comp:login] [mod:ddns] DDNS 配置应用成功: chizzyhub.dns.navy | 10.195.31.248 -2024-10-25 16:42:35 [INFO] [comp:login] 正在获取登录状态 -2024-10-25 16:42:35 [DEBU] [comp:login] HTTP GET https://net3.zju.edu.cn/cgi-bin/rad_user_info -2024-10-25 16:42:35 [DEBU] [comp:login] jQuery135668994139293975393_1729845755768({"client_ip":"10.195.31.248","ecode":0,"error":"not_online_error","error_msg":"","online_ip":"10.195.31.248","res":"not_online_error","srun_ver":"SRunCGIAuthIntfSvr V1.18 B20210926","st":1729844644}) -2024-10-25 16:42:36 [DEBU] [comp:login] 认证客户端 ip: 10.195.31.248 -2024-10-25 16:42:36 [INFO] [comp:login] 检测到用户未登录,开始尝试登录... -2024-10-25 16:42:36 [DEBU] [comp:login] 正在获取 Token -2024-10-25 16:42:36 [DEBU] [comp:login] HTTP GET https://net3.zju.edu.cn/cgi-bin/get_challenge -2024-10-25 16:42:36 [DEBU] [comp:login] jQuery653759989187167831241_1729845756256({"challenge":"96779908bac904c8660e88256d82196249238f454acadf7d5793112fdc626415","client_ip":"10.195.31.248","ecode":0,"error":"ok","error_msg":"","expire":"60","online_ip":"10.195.31.248","res":"ok","srun_ver":"SRunCGIAuthIntfSvr V1.18 B20210926","st":1729844645}) -2024-10-25 16:42:36 [DEBU] [comp:login] token: 96779908bac904c8660e88256d82196249238f454acadf7d5793112fdc626415 -2024-10-25 16:42:36 [DEBU] [comp:login] 发送登录请求 -2024-10-25 16:42:36 [DEBU] [comp:login] HTTP GET https://net3.zju.edu.cn/cgi-bin/srun_portal -2024-10-25 16:42:36 [DEBU] [comp:login] jQuery623458397114133694229_1729845756281({"ServerFlag":0,"ServicesIntfServerIP":"127.0.0.1","ServicesIntfServerPort":"8001","access_token":"96779908bac904c8660e88256d82196249238f454acadf7d5793112fdc626415","checkout_date":0,"client_ip":"10.195.31.248","ecode":0,"error":"ok","error_msg":"","online_ip":"10.195.31.248","ploy_msg":"E0000: Login is successful.","real_name":"","remain_flux":0,"remain_times":0,"res":"ok","srun_ver":"SRunCGIAuthIntfSvr V1.18 B20210926","suc_msg":"login_ok","sysver":"1.01.20210926","username":"3210300237","wallet_balance":0}) -2024-10-25 16:42:36 [INFO] [comp:login] 登录成功~ -2024-10-25 16:42:37 [INFO] [comp:login] [mod:ddns] 开始 dynv6 DDNS 流程 -2024-10-25 16:43:06 [INFO] [comp:login] [mod:ddns] DDNS 配置应用成功: chizzyhub.dns.navy | 10.195.31.248 -2024-10-25 16:44:01 [INFO] [comp:login] 正在获取登录状态 -2024-10-25 16:44:01 [DEBU] [comp:login] HTTP GET https://net3.zju.edu.cn/cgi-bin/rad_user_info -2024-10-25 16:44:01 [DEBU] [comp:login] jQuery979864315455962477769_1729845841389({"client_ip":"10.195.31.248","ecode":0,"error":"not_online_error","error_msg":"","online_ip":"10.195.31.248","res":"not_online_error","srun_ver":"SRunCGIAuthIntfSvr V1.18 B20210926","st":1729844730}) -2024-10-25 16:44:01 [DEBU] [comp:login] 认证客户端 ip: 10.195.31.248 -2024-10-25 16:44:01 [INFO] [comp:login] 检测到用户未登录,开始尝试登录... -2024-10-25 16:44:01 [DEBU] [comp:login] 正在获取 Token -2024-10-25 16:44:01 [DEBU] [comp:login] HTTP GET https://net3.zju.edu.cn/cgi-bin/get_challenge -2024-10-25 16:44:01 [DEBU] [comp:login] jQuery736969881419152181931_1729845841876({"challenge":"06938850604564fd96730c49aad6a0e2a709c38f012533015e76df813c1dc123","client_ip":"10.195.31.248","ecode":0,"error":"ok","error_msg":"","expire":"60","online_ip":"10.195.31.248","res":"ok","srun_ver":"SRunCGIAuthIntfSvr V1.18 B20210926","st":1729844731}) -2024-10-25 16:44:01 [DEBU] [comp:login] token: 06938850604564fd96730c49aad6a0e2a709c38f012533015e76df813c1dc123 -2024-10-25 16:44:01 [DEBU] [comp:login] 发送登录请求 -2024-10-25 16:44:01 [DEBU] [comp:login] HTTP GET https://net3.zju.edu.cn/cgi-bin/srun_portal -2024-10-25 16:44:02 [DEBU] [comp:login] jQuery445678696737637289525_1729845841902({"ServerFlag":0,"ServicesIntfServerIP":"127.0.0.1","ServicesIntfServerPort":"8001","access_token":"06938850604564fd96730c49aad6a0e2a709c38f012533015e76df813c1dc123","checkout_date":0,"client_ip":"10.195.31.248","ecode":0,"error":"ok","error_msg":"","online_ip":"10.195.31.248","ploy_msg":"E0000: Login is successful.","real_name":"","remain_flux":0,"remain_times":0,"res":"ok","srun_ver":"SRunCGIAuthIntfSvr V1.18 B20210926","suc_msg":"login_ok","sysver":"1.01.20210926","username":"3210300237","wallet_balance":0}) -2024-10-25 16:44:02 [INFO] [comp:login] 登录成功~ -2024-10-25 16:44:02 [INFO] [comp:login] [mod:ddns] 开始 dynv6 DDNS 流程 -2024-10-25 16:44:16 [INFO] [comp:login] [mod:ddns] DDNS 配置应用成功: chizzyhub.dns.navy | 10.195.31.248 -2024-10-25 16:45:58 [INFO] [comp:login] 正在获取登录状态 -2024-10-25 16:45:58 [DEBU] [comp:login] HTTP GET https://net3.zju.edu.cn/cgi-bin/rad_user_info -2024-10-25 16:45:58 [DEBU] [comp:login] jQuery568455236922328585186_1729845958620({"client_ip":"10.195.31.248","ecode":0,"error":"not_online_error","error_msg":"","online_ip":"10.195.31.248","res":"not_online_error","srun_ver":"SRunCGIAuthIntfSvr V1.18 B20210926","st":1729844847}) -2024-10-25 16:45:58 [DEBU] [comp:login] 认证客户端 ip: 10.195.31.248 -2024-10-25 16:45:58 [INFO] [comp:login] 检测到用户未登录,开始尝试登录... -2024-10-25 16:45:58 [DEBU] [comp:login] 正在获取 Token -2024-10-25 16:45:58 [DEBU] [comp:login] HTTP GET https://net3.zju.edu.cn/cgi-bin/get_challenge -2024-10-25 16:45:58 [DEBU] [comp:login] jQuery822932138117684144689_1729845958666({"challenge":"643a1084286299360dd0cc8356f7494a4c717200f9f2e4cdd87e2de89df742a4","client_ip":"10.195.31.248","ecode":0,"error":"ok","error_msg":"","expire":"60","online_ip":"10.195.31.248","res":"ok","srun_ver":"SRunCGIAuthIntfSvr V1.18 B20210926","st":1729844847}) -2024-10-25 16:45:58 [DEBU] [comp:login] token: 643a1084286299360dd0cc8356f7494a4c717200f9f2e4cdd87e2de89df742a4 -2024-10-25 16:45:58 [DEBU] [comp:login] 发送登录请求 -2024-10-25 16:45:58 [DEBU] [comp:login] HTTP GET https://net3.zju.edu.cn/cgi-bin/srun_portal -2024-10-25 16:45:58 [DEBU] [comp:login] jQuery364447423989283278815_1729845958681({"ServerFlag":0,"ServicesIntfServerIP":"127.0.0.1","ServicesIntfServerPort":"8001","access_token":"643a1084286299360dd0cc8356f7494a4c717200f9f2e4cdd87e2de89df742a4","checkout_date":0,"client_ip":"10.195.31.248","ecode":0,"error":"ok","error_msg":"","online_ip":"10.195.31.248","ploy_msg":"E0000: Login is successful.","real_name":"","remain_flux":0,"remain_times":0,"res":"ok","srun_ver":"SRunCGIAuthIntfSvr V1.18 B20210926","suc_msg":"login_ok","sysver":"1.01.20210926","username":"3210300237","wallet_balance":0}) -2024-10-25 16:45:58 [INFO] [comp:login] 登录成功~ -2024-10-25 16:45:58 [INFO] [comp:login] [mod:ddns] 开始 dynv6 DDNS 流程 -2024-10-25 16:46:09 [INFO] [comp:login] [mod:ddns] DDNS 配置应用成功: chizzyhub.dns.navy | 10.195.31.248 -2024-10-25 16:55:18 [INFO] [comp:login] 正在获取登录状态 -2024-10-25 16:55:18 [DEBU] [comp:login] HTTP GET https://net3.zju.edu.cn/cgi-bin/rad_user_info -2024-10-25 16:55:18 [DEBU] [comp:login] jQuery387329135487777563764_1729846518294({"client_ip":"10.195.31.248","ecode":0,"error":"not_online_error","error_msg":"","online_ip":"10.195.31.248","res":"not_online_error","srun_ver":"SRunCGIAuthIntfSvr V1.18 B20210926","st":1729845407}) -2024-10-25 16:55:18 [DEBU] [comp:login] 认证客户端 ip: 10.195.31.248 -2024-10-25 16:55:18 [INFO] [comp:login] 检测到用户未登录,开始尝试登录... -2024-10-25 16:55:18 [DEBU] [comp:login] 正在获取 Token -2024-10-25 16:55:18 [DEBU] [comp:login] HTTP GET https://net3.zju.edu.cn/cgi-bin/get_challenge -2024-10-25 16:55:18 [DEBU] [comp:login] jQuery125414146745887432445_1729846518421({"challenge":"ffba4e4c1c6a452da2c5369b820387dc5589b75ea065f1404ee24c0ec53a4352","client_ip":"10.195.31.248","ecode":0,"error":"ok","error_msg":"","expire":"36","online_ip":"10.195.31.248","res":"ok","srun_ver":"SRunCGIAuthIntfSvr V1.18 B20210926","st":1729845407}) -2024-10-25 16:55:18 [DEBU] [comp:login] token: ffba4e4c1c6a452da2c5369b820387dc5589b75ea065f1404ee24c0ec53a4352 -2024-10-25 16:55:18 [DEBU] [comp:login] 发送登录请求 -2024-10-25 16:55:18 [DEBU] [comp:login] HTTP GET https://net3.zju.edu.cn/cgi-bin/srun_portal -2024-10-25 16:55:18 [DEBU] [comp:login] jQuery614721577962691655661_1729846518437({"ServerFlag":0,"ServicesIntfServerIP":"127.0.0.1","ServicesIntfServerPort":"8001","access_token":"ffba4e4c1c6a452da2c5369b820387dc5589b75ea065f1404ee24c0ec53a4352","checkout_date":0,"client_ip":"10.195.31.248","ecode":0,"error":"ok","error_msg":"","online_ip":"10.195.31.248","ploy_msg":"E0000: Login is successful.","real_name":"","remain_flux":0,"remain_times":0,"res":"ok","srun_ver":"SRunCGIAuthIntfSvr V1.18 B20210926","suc_msg":"login_ok","sysver":"1.01.20210926","username":"3210300237","wallet_balance":0}) -2024-10-25 16:55:18 [INFO] [comp:login] 登录成功~ -2024-10-25 16:55:18 [INFO] [comp:login] [mod:ddns] 开始 dynv6 DDNS 流程 -2024-10-25 16:56:35 [INFO] [comp:login] 正在获取登录状态 -2024-10-25 16:56:35 [DEBU] [comp:login] HTTP GET https://net3.zju.edu.cn/cgi-bin/rad_user_info -2024-10-25 16:56:35 [DEBU] [comp:login] jQuery399744728643629717625_1729846595253({"client_ip":"10.195.31.248","ecode":0,"error":"not_online_error","error_msg":"","online_ip":"10.195.31.248","res":"not_online_error","srun_ver":"SRunCGIAuthIntfSvr V1.18 B20210926","st":1729845484}) -2024-10-25 16:56:35 [DEBU] [comp:login] 认证客户端 ip: 10.195.31.248 -2024-10-25 16:56:35 [INFO] [comp:login] 检测到用户未登录,开始尝试登录... -2024-10-25 16:56:35 [DEBU] [comp:login] 正在获取 Token -2024-10-25 16:56:35 [DEBU] [comp:login] HTTP GET https://net3.zju.edu.cn/cgi-bin/get_challenge -2024-10-25 16:56:35 [DEBU] [comp:login] jQuery129922835644431171368_1729846595325({"challenge":"9a32fd6280876f82c621358f285f7567ed5d48a148d34e08aa68da7475db6e8f","client_ip":"10.195.31.248","ecode":0,"error":"ok","error_msg":"","expire":"60","online_ip":"10.195.31.248","res":"ok","srun_ver":"SRunCGIAuthIntfSvr V1.18 B20210926","st":1729845484}) -2024-10-25 16:56:35 [DEBU] [comp:login] token: 9a32fd6280876f82c621358f285f7567ed5d48a148d34e08aa68da7475db6e8f -2024-10-25 16:56:35 [DEBU] [comp:login] 发送登录请求 -2024-10-25 16:56:35 [DEBU] [comp:login] HTTP GET https://net3.zju.edu.cn/cgi-bin/srun_portal -2024-10-25 16:56:35 [DEBU] [comp:login] jQuery588938449295684523739_1729846595341({"ServerFlag":0,"ServicesIntfServerIP":"127.0.0.1","ServicesIntfServerPort":"8001","access_token":"9a32fd6280876f82c621358f285f7567ed5d48a148d34e08aa68da7475db6e8f","checkout_date":0,"client_ip":"10.195.31.248","ecode":0,"error":"ok","error_msg":"","online_ip":"10.195.31.248","ploy_msg":"E0000: Login is successful.","real_name":"","remain_flux":0,"remain_times":0,"res":"ok","srun_ver":"SRunCGIAuthIntfSvr V1.18 B20210926","suc_msg":"login_ok","sysver":"1.01.20210926","username":"3210300237","wallet_balance":0}) -2024-10-25 16:56:35 [INFO] [comp:login] 登录成功~ -2024-10-25 16:56:35 [INFO] [comp:login] [mod:ddns] 开始 dynv6 DDNS 流程 -2024-10-25 16:57:45 [INFO] [comp:login] 正在获取登录状态 -2024-10-25 16:57:45 [DEBU] [comp:login] HTTP GET https://net3.zju.edu.cn/cgi-bin/rad_user_info -2024-10-25 16:57:45 [DEBU] [comp:login] jQuery113691339281766489626_1729846665068({"client_ip":"10.195.31.248","ecode":0,"error":"not_online_error","error_msg":"","online_ip":"10.195.31.248","res":"not_online_error","srun_ver":"SRunCGIAuthIntfSvr V1.18 B20210926","st":1729845554}) -2024-10-25 16:57:45 [DEBU] [comp:login] 认证客户端 ip: 10.195.31.248 -2024-10-25 16:57:45 [INFO] [comp:login] 检测到用户未登录,开始尝试登录... -2024-10-25 16:57:45 [DEBU] [comp:login] 正在获取 Token -2024-10-25 16:57:45 [DEBU] [comp:login] HTTP GET https://net3.zju.edu.cn/cgi-bin/get_challenge -2024-10-25 16:57:45 [DEBU] [comp:login] jQuery233142191859637251716_1729846665152({"challenge":"50db43f14fc1fc1c1c9ad1f6fb4ea431bec9bab92774e6b1ff038cb8b42a9582","client_ip":"10.195.31.248","ecode":0,"error":"ok","error_msg":"","expire":"60","online_ip":"10.195.31.248","res":"ok","srun_ver":"SRunCGIAuthIntfSvr V1.18 B20210926","st":1729845554}) -2024-10-25 16:57:45 [DEBU] [comp:login] token: 50db43f14fc1fc1c1c9ad1f6fb4ea431bec9bab92774e6b1ff038cb8b42a9582 -2024-10-25 16:57:45 [DEBU] [comp:login] 发送登录请求 -2024-10-25 16:57:45 [DEBU] [comp:login] HTTP GET https://net3.zju.edu.cn/cgi-bin/srun_portal -2024-10-25 16:57:45 [DEBU] [comp:login] jQuery494555848348651542691_1729846665173({"ServerFlag":0,"ServicesIntfServerIP":"127.0.0.1","ServicesIntfServerPort":"8001","access_token":"50db43f14fc1fc1c1c9ad1f6fb4ea431bec9bab92774e6b1ff038cb8b42a9582","checkout_date":0,"client_ip":"10.195.31.248","ecode":0,"error":"ok","error_msg":"","online_ip":"10.195.31.248","ploy_msg":"E0000: Login is successful.","real_name":"","remain_flux":0,"remain_times":0,"res":"ok","srun_ver":"SRunCGIAuthIntfSvr V1.18 B20210926","suc_msg":"login_ok","sysver":"1.01.20210926","username":"3210300237","wallet_balance":0}) -2024-10-25 16:57:45 [INFO] [comp:login] 登录成功~ -2024-10-25 16:57:45 [INFO] [comp:login] [mod:ddns] 开始 dynv6 DDNS 流程 -2024-10-25 16:57:56 [INFO] [comp:login] [mod:ddns] DDNS 配置应用成功: chizzyhub.dns.navy | 10.195.31.248 diff --git a/config.yaml b/config.yaml index 8d380de..4d616fa 100644 --- a/config.yaml +++ b/config.yaml @@ -38,12 +38,14 @@ settings: log_name: "srun_login.log" #指定日志文件名 ddns: #校园网内网 ip ddns enable: true - domain: chizzyhub.dns.navy - ttl: 600 - provider: "dynv6" + domain: "dorm.chizzyhub.site" + ttl: 3600 + provider: "cloudflare" config: #这段配置是动态的,需要根据 provider 类型配置字段名,见 DDNS 说明 - zone: "xxxx" - token: "ns4ReUsNKCSxpJD_zsVBMouGPwxUYS" + zone: "fde85c42ada16e7277b5c1cdb911f90a" + record_id: "08ed045b26e5f9bd8b7001115fca798e" + token: "aaaa4a4f258224cc872bf6fa8840c054f2bb4" + email: "chizzyhub@outlook.com" reality: #从指定地址模拟浏览器行为进入登录页,如果登录未出现问题不用启用 enable: false addr: http://www.baidu.com #初始地址,需要使用 http、域名 diff --git a/internal/dns/cloudflare/cloudflare.go b/internal/dns/cloudflare/cloudflare.go index 9e1444a..2dfceea 100644 --- a/internal/dns/cloudflare/cloudflare.go +++ b/internal/dns/cloudflare/cloudflare.go @@ -1,15 +1,22 @@ package cloudflare import ( - "context" + "bytes" + "encoding/json" "errors" - "github.com/cloudflare/cloudflare-go" + "fmt" + "io" "net/http" + "time" + + "github.com/cloudflare/cloudflare-go" ) type Cloudflare struct { - Zone string `json:"zone" yaml:"zone"` - Token string `json:"token" yaml:"token"` + Zone string `json:"zone" yaml:"zone"` + RecordId string `json:"record_id" yaml:"record_id"` + Token string `json:"token" yaml:"token"` + Email string `json:"email" yaml:"email"` } type DnsProvider struct { @@ -37,31 +44,43 @@ func New(ttl int, conf Cloudflare, Http *http.Client) (*DnsProvider, error) { } func (a DnsProvider) SetDomainRecord(domain, ip string) error { - records, _, err := a.Api.ListDNSRecords(context.Background(), a.ZoneResource, cloudflare.ListDNSRecordsParams{ - Type: "A", - Name: domain, - }) + url := fmt.Sprintf("https://api.cloudflare.com/client/v4/zones/%s/dns_records/%s", a.Zone, a.RecordId) + proxied := false + payload := cloudflare.DNSRecord{ + Type: "A", + Name: domain, + Content: ip, + TTL: a.TTL, + Proxied: &proxied, + Comment: "DDNS for " + domain, + } + + jsonPayload, err := json.Marshal(payload) if err != nil { return err } - if len(records) == 0 { - _, err = a.Api.CreateDNSRecord(context.Background(), a.ZoneResource, cloudflare.CreateDNSRecordParams{ - Type: "A", - Name: domain, - Content: ip, - TTL: a.TTL, - }) - return err - } else { - record := records[0] - if record.Content == ip { - return nil - } - _, err = a.Api.UpdateDNSRecord(context.Background(), a.ZoneResource, cloudflare.UpdateDNSRecordParams{ - ID: record.ID, - Content: ip, - }) + // Make the HTTP GET request + req, err := http.NewRequest("PUT", url, bytes.NewBuffer(jsonPayload)) + if err != nil { return err } + req.Header.Set("X-Auth-Email", a.Email) + req.Header.Set("X-Auth-Key", a.Token) + time.Sleep(time.Millisecond * 200) // avoid request too fast after login + client := &http.Client{} + resp, err := client.Do(req) + if err != nil { + return err + + } + defer resp.Body.Close() + + body, err := io.ReadAll(resp.Body) + if err != nil { + return err + + } + fmt.Println(string(body), resp.Status) + return nil } diff --git a/internal/dns/dns.go b/internal/dns/dns.go index f296699..e8b4d76 100644 --- a/internal/dns/dns.go +++ b/internal/dns/dns.go @@ -8,6 +8,7 @@ import ( "github.com/Mmx233/BitSrunLoginGo/internal/dns/cloudflare" "github.com/Mmx233/BitSrunLoginGo/internal/dns/dnspod" "github.com/Mmx233/BitSrunLoginGo/internal/dns/dynv6" + "github.com/Mmx233/BitSrunLoginGo/internal/dns/pubyun" log "github.com/sirupsen/logrus" ) @@ -32,6 +33,8 @@ func Run(c *Config) error { dns, err = dnspod.New(uint64(c.TTL), c.Conf.DnsPod, c.Http.Transport) case "dynv6": dns, err = dynv6.New(c.Domain, c.Conf.Token, c.IP) + case "pubyun": + dns, err = pubyun.New(c.Conf.Zone, c.Conf.Token) default: var msg string if c.Provider == "" { diff --git a/internal/dns/pubyun/pubyun.go b/internal/dns/pubyun/pubyun.go new file mode 100644 index 0000000..692a259 --- /dev/null +++ b/internal/dns/pubyun/pubyun.go @@ -0,0 +1,51 @@ +package pubyun + +import ( + "encoding/base64" + "fmt" + "io" + "net/http" + "time" +) + +type PubYun struct { + UserName string + Password string +} + +func New(UserName string, Password string) (*PubYun, error) { + p := PubYun{ + Password: Password, + UserName: UserName} + return &p, nil +} + +func (p PubYun) SetDomainRecord(domain, ip string) error { + url := fmt.Sprintf( + "http://members.3322.net/dyndns/update?hostname=%s&myip=%s", + domain, + ip) + + // Make the HTTP GET request + req, err := http.NewRequest("GET", url, nil) + auth := base64.StdEncoding.EncodeToString([]byte(fmt.Sprintf("%s:%s", p.UserName, p.Password))) + req.Header.Set("Authorization", "Basic "+auth) + if err != nil { + return err + } + time.Sleep(time.Millisecond * 200) // avoid request too fast after login + client := &http.Client{} + resp, err := client.Do(req) + if err != nil { + return err + } + defer resp.Body.Close() + + body, err := io.ReadAll(resp.Body) + if err != nil { + return err + } + + fmt.Println(string(body), resp.Status) + return nil +} diff --git a/internal/login/login.go b/internal/login/login.go index 01a6442..064f55b 100644 --- a/internal/login/login.go +++ b/internal/login/login.go @@ -197,7 +197,7 @@ func doLogin(conf SingleConf) error { if online { _Println("已登录~") - if config.Settings.DDNS.Enable && config.Settings.Guardian.Enable && ipLast != ip { + if config.Settings.DDNS.Enable && ipLast != ip { if ddns(logger, ip, httpClient) == nil { ipLast = ip } diff --git a/logs/srun_login.log b/logs/srun_login.log index fcb3681..9f7a9c6 100644 --- a/logs/srun_login.log +++ b/logs/srun_login.log @@ -196,3 +196,53 @@ Authentication is required. Click