From f9dc22f2e5d80bcbfb79b77622b0ad991e01664a Mon Sep 17 00:00:00 2001 From: Mrs4s <1844812067@qq.com> Date: Fri, 13 Nov 2020 18:48:39 +0800 Subject: [PATCH 1/4] update MiraiGo. --- go.mod | 2 +- go.sum | 6 ++---- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/go.mod b/go.mod index 26891c6..1bdd90c 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,7 @@ module github.com/Mrs4s/go-cqhttp go 1.14 require ( - github.com/Mrs4s/MiraiGo v0.0.0-20201113081613-b6a695d43d8e + github.com/Mrs4s/MiraiGo v0.0.0-20201113104655-b51d8b417c0c github.com/dustin/go-humanize v1.0.0 github.com/getlantern/go-update v0.0.0-20190510022740-79c495ab728c github.com/getlantern/golog v0.0.0-20201105130739-9586b8bde3a9 // indirect diff --git a/go.sum b/go.sum index 837be5d..5a763de 100644 --- a/go.sum +++ b/go.sum @@ -1,9 +1,7 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/Mrs4s/MiraiGo v0.0.0-20201112150130-58e7c82fd2dd h1:n1llMhWgT5s/dBWtbg0NwDzXFAKWfwr1ZXxaErZkLfc= -github.com/Mrs4s/MiraiGo v0.0.0-20201112150130-58e7c82fd2dd/go.mod h1:pAsWtMIwqkBXr5DkUpTIHoWQJNduVnX9WSBPmPvkuCs= -github.com/Mrs4s/MiraiGo v0.0.0-20201113081613-b6a695d43d8e h1:3bXOOf9YxLpoF3jYdd5JB/QXggvvFrRNUyvCQysmIoU= -github.com/Mrs4s/MiraiGo v0.0.0-20201113081613-b6a695d43d8e/go.mod h1:pAsWtMIwqkBXr5DkUpTIHoWQJNduVnX9WSBPmPvkuCs= +github.com/Mrs4s/MiraiGo v0.0.0-20201113104655-b51d8b417c0c h1:6VOhZnNA6GpDcpsHSQ0tvZl5uFkxFjtE3F1y3WJCTYY= +github.com/Mrs4s/MiraiGo v0.0.0-20201113104655-b51d8b417c0c/go.mod h1:pAsWtMIwqkBXr5DkUpTIHoWQJNduVnX9WSBPmPvkuCs= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= From 998b8cb146d39fb2d054362413e6ada2434be105 Mon Sep 17 00:00:00 2001 From: Mrs4s <1844812067@qq.com> Date: Fri, 13 Nov 2020 19:47:54 +0800 Subject: [PATCH 2/4] feature custom server address. --- global/fs.go | 20 ++++++++++++++++++++ main.go | 8 ++++++++ 2 files changed, 28 insertions(+) diff --git a/global/fs.go b/global/fs.go index bdf842c..f7661c5 100644 --- a/global/fs.go +++ b/global/fs.go @@ -10,10 +10,12 @@ import ( "github.com/dustin/go-humanize" log "github.com/sirupsen/logrus" "io/ioutil" + "net" "net/url" "os" "path" "runtime" + "strconv" "strings" ) @@ -110,6 +112,24 @@ func DelFile(path string) bool { } } +func ReadAddrFile(path string) []*net.TCPAddr { + d, err := ioutil.ReadFile(path) + if err != nil { + return nil + } + str := string(d) + lines := strings.Split(str, "\n") + var ret []*net.TCPAddr + for _, l := range lines { + ip := strings.Split(l, ":") + if len(ip) == 2 { + port, _ := strconv.Atoi(ip[1]) + ret = append(ret, &net.TCPAddr{IP: net.ParseIP(ip[0]), Port: port}) + } + } + return ret +} + type WriteCounter struct { Total uint64 } diff --git a/main.go b/main.go index 1c89263..8c54053 100644 --- a/main.go +++ b/main.go @@ -246,6 +246,14 @@ func main() { log.Debug("Protocol -> " + e.Message) } }) + if global.PathExists("address.txt") { + log.Infof("检测到 address.txt 文件. 将覆盖目标IP.") + addr := global.ReadAddrFile("address.txt") + if len(addr) > 0 { + cli.SetCustomServer(addr) + } + log.Infof("读取到 %v 个自定义地址.", len(addr)) + } cli.OnServerUpdated(func(bot *client.QQClient, e *client.ServerUpdatedEvent) bool { if !conf.UseSSOAddress { log.Infof("收到服务器地址更新通知, 根据配置文件已忽略.") From 9a018e2a47e8f4ffca83ff42f4b7f555af3d4fbc Mon Sep 17 00:00:00 2001 From: Mrs4s <1844812067@qq.com> Date: Fri, 13 Nov 2020 19:51:03 +0800 Subject: [PATCH 3/4] doc update. --- docs/config.md | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/docs/config.md b/docs/config.md index f9cb439..b675ac0 100644 --- a/docs/config.md +++ b/docs/config.md @@ -116,4 +116,16 @@ go-cqhttp 支持导入CQHTTP的配置文件, 具体步骤为: | 1 | Android Phone | 无 | | 2 | Android Watch | 除了 `Android Pad` 有的限制外还包括: 无法接收撤回消息 | -> 注意, 根据协议的不同, 各类消息有所限制 \ No newline at end of file +> 注意, 根据协议的不同, 各类消息有所限制 + +## 自定义服务器IP + +> 某些海外服务器使用默认地址可能会存在链路问题,此功能可以指定 go-cqhttp 连接哪些地址以达到最优化. + +将文件 `address.txt` 创建到 `go-cqhttp` 工作目录, 并键入 `IP:PORT` 以换行符为分割即可. + +示例: +```` +1.1.1.1:53 +1.1.2.2:8899 +```` \ No newline at end of file From b3152bb5141025fe3f466fbcdb5b9aa26d882f73 Mon Sep 17 00:00:00 2001 From: Mrs4s <1844812067@qq.com> Date: Fri, 13 Nov 2020 19:55:57 +0800 Subject: [PATCH 4/4] update MiraiGo. --- coolq/api.go | 2 +- docs/config.md | 4 ++-- go.mod | 2 +- go.sum | 4 ++-- main.go | 4 ++-- server/apiAdmin.go | 4 ++-- 6 files changed, 10 insertions(+), 10 deletions(-) diff --git a/coolq/api.go b/coolq/api.go index ee5ba17..ffb9f82 100644 --- a/coolq/api.go +++ b/coolq/api.go @@ -807,7 +807,7 @@ func (bot *CQBot) CQGetVersionInfo() MSG { "version": Version, "protocol": func() int { switch client.SystemDeviceInfo.Protocol { - case client.AndroidPad: + case client.IPad: return 0 case client.AndroidPhone: return 1 diff --git a/docs/config.md b/docs/config.md index b675ac0..9f39b78 100644 --- a/docs/config.md +++ b/docs/config.md @@ -112,9 +112,9 @@ go-cqhttp 支持导入CQHTTP的配置文件, 具体步骤为: | 值 | 类型 | 限制 | | ---- | ------------- | ----------------------------------------------------- | -| 0 | Android Pad | 无法接收 `group_notify` 事件、无法接收口令红包 | +| 0 | iPad | 无 | | 1 | Android Phone | 无 | -| 2 | Android Watch | 除了 `Android Pad` 有的限制外还包括: 无法接收撤回消息 | +| 2 | Android Watch | 无法接收 `group_notify` 事件、无法接收口令红包、无法接收撤回消息 | > 注意, 根据协议的不同, 各类消息有所限制 diff --git a/go.mod b/go.mod index 1bdd90c..3a32791 100644 --- a/go.mod +++ b/go.mod @@ -3,7 +3,7 @@ module github.com/Mrs4s/go-cqhttp go 1.14 require ( - github.com/Mrs4s/MiraiGo v0.0.0-20201113104655-b51d8b417c0c + github.com/Mrs4s/MiraiGo v0.0.0-20201113113825-c1739dba15c9 github.com/dustin/go-humanize v1.0.0 github.com/getlantern/go-update v0.0.0-20190510022740-79c495ab728c github.com/getlantern/golog v0.0.0-20201105130739-9586b8bde3a9 // indirect diff --git a/go.sum b/go.sum index 5a763de..c25bc76 100644 --- a/go.sum +++ b/go.sum @@ -1,7 +1,7 @@ cloud.google.com/go v0.26.0/go.mod h1:aQUYkXzVsufM+DwF1aE+0xfcU+56JwCaLick0ClmMTw= github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU= -github.com/Mrs4s/MiraiGo v0.0.0-20201113104655-b51d8b417c0c h1:6VOhZnNA6GpDcpsHSQ0tvZl5uFkxFjtE3F1y3WJCTYY= -github.com/Mrs4s/MiraiGo v0.0.0-20201113104655-b51d8b417c0c/go.mod h1:pAsWtMIwqkBXr5DkUpTIHoWQJNduVnX9WSBPmPvkuCs= +github.com/Mrs4s/MiraiGo v0.0.0-20201113113825-c1739dba15c9 h1:7mFBaoEz2HCIkUqfiW1EtpsZEhxfupEda8+EMeuNS+4= +github.com/Mrs4s/MiraiGo v0.0.0-20201113113825-c1739dba15c9/go.mod h1:pAsWtMIwqkBXr5DkUpTIHoWQJNduVnX9WSBPmPvkuCs= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= diff --git a/main.go b/main.go index 8c54053..b3ef74f 100644 --- a/main.go +++ b/main.go @@ -226,8 +226,8 @@ func main() { log.Info("开始尝试登录并同步消息...") log.Infof("使用协议: %v", func() string { switch client.SystemDeviceInfo.Protocol { - case client.AndroidPad: - return "Android Pad" + case client.IPad: + return "iPad" case client.AndroidPhone: return "Android Phone" case client.AndroidWatch: diff --git a/server/apiAdmin.go b/server/apiAdmin.go index 0790307..51acecc 100644 --- a/server/apiAdmin.go +++ b/server/apiAdmin.go @@ -340,8 +340,8 @@ func (s *webServer) DoReLogin() { // TODO: 协议层的 ReLogin log.Info("开始尝试登录并同步消息...") log.Infof("使用协议: %v", func() string { switch client.SystemDeviceInfo.Protocol { - case client.AndroidPad: - return "Android Pad" + case client.IPad: + return "iPad" case client.AndroidPhone: return "Android Phone" case client.AndroidWatch: