From f0b2459aa725f0587136983e8ada1230e5d62640 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=BA=90=E6=96=87=E9=9B=A8?= <41315874+fumiama@users.noreply.github.com> Date: Thu, 20 Nov 2025 16:56:30 +0800 Subject: [PATCH] feat: support proxy & update to new trs --- go.mod | 13 ++++++------- go.sum | 22 ++++++++++------------ main.go | 7 ++++--- net.go | 8 +++++++- ui.go | 2 +- 5 files changed, 28 insertions(+), 24 deletions(-) diff --git a/go.mod b/go.mod index b0ec8c0..93364f5 100644 --- a/go.mod +++ b/go.mod @@ -1,22 +1,21 @@ module rvcmd -go 1.22.1 +go 1.24.0 require ( - github.com/fumiama/terasu v0.0.0-20240710095334-67a8daa3a979 + github.com/fumiama/terasu v1.0.2 github.com/gizak/termui/v3 v3.1.0 github.com/pkg/errors v0.9.1 github.com/sirupsen/logrus v1.9.3 - golang.org/x/sys v0.19.0 + golang.org/x/sys v0.38.0 gopkg.in/yaml.v3 v3.0.1 ) require ( - github.com/FloatTech/ttl v0.0.0-20230307105452-d6f7b2b647d1 // indirect - github.com/RomiChan/syncx v0.0.0-20240418144900-b7402ffdebc7 // indirect + github.com/FloatTech/ttl v0.0.0-20250224045156-012b1463287d // indirect github.com/mattn/go-runewidth v0.0.2 // indirect github.com/mitchellh/go-wordwrap v0.0.0-20150314170334-ad45545899c7 // indirect github.com/nsf/termbox-go v0.0.0-20190121233118-02980233997d // indirect - golang.org/x/net v0.24.0 // indirect - golang.org/x/text v0.14.0 // indirect + golang.org/x/net v0.28.0 // indirect + golang.org/x/text v0.17.0 // indirect ) diff --git a/go.sum b/go.sum index af5ac6a..8ecadb1 100644 --- a/go.sum +++ b/go.sum @@ -1,12 +1,10 @@ -github.com/FloatTech/ttl v0.0.0-20230307105452-d6f7b2b647d1 h1:g4pTnDJUW4VbJ9NvoRfUvdjDrHz/6QhfN/LoIIpICbo= -github.com/FloatTech/ttl v0.0.0-20230307105452-d6f7b2b647d1/go.mod h1:fHZFWGquNXuHttu9dUYoKuNbm3dzLETnIOnm1muSfDs= -github.com/RomiChan/syncx v0.0.0-20240418144900-b7402ffdebc7 h1:S/ferNiehVjNaBMNNBxUjLtVmP/YWD6Yh79RfPv4ehU= -github.com/RomiChan/syncx v0.0.0-20240418144900-b7402ffdebc7/go.mod h1:vD7Ra3Q9onRtojoY5sMCLQ7JBgjUsrXDnDKyFxqpf9w= +github.com/FloatTech/ttl v0.0.0-20250224045156-012b1463287d h1:mUQ/c3wXKsUGa4Sg9DBy01APXKB68PmobhxOyaJI7lY= +github.com/FloatTech/ttl v0.0.0-20250224045156-012b1463287d/go.mod h1:fHZFWGquNXuHttu9dUYoKuNbm3dzLETnIOnm1muSfDs= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/fumiama/terasu v0.0.0-20240710095334-67a8daa3a979 h1:1xSO4SvPfiw5TVeaS5ASFcl82rXH3jG8Obab0+JOC/8= -github.com/fumiama/terasu v0.0.0-20240710095334-67a8daa3a979/go.mod h1:UVx8YP1jKKL1Cj+uy+OnQRM2Ih6U36Mqy9GSf7jabsI= +github.com/fumiama/terasu v1.0.2 h1:Dxj2vPIgLHyeMlBd61xYHx5Jg8v7k24yg7taNLlK8/8= +github.com/fumiama/terasu v1.0.2/go.mod h1:1eHzpL/GJVcOnqEkh1vUbKu2zo6gojSuueUNJ9yHJE0= github.com/gizak/termui/v3 v3.1.0 h1:ZZmVDgwHl7gR7elfKf1xc4IudXZ5qqfDh4wExk4Iajc= github.com/gizak/termui/v3 v3.1.0/go.mod h1:bXQEBkJpzxUAKf0+xq9MSWAvWZlE7c+aidmyFlkYTrY= github.com/mattn/go-runewidth v0.0.2 h1:UnlwIPBGaTZfPQ6T1IGzPI0EkYAQmT9fAEJ/poFC63o= @@ -25,13 +23,13 @@ github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+ github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= github.com/stretchr/testify v1.8.0 h1:pSgiaMZlXftHpm5L7V1+rVB+AZJydKsMxsQBIJw4PKk= github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= -golang.org/x/net v0.24.0 h1:1PcaxkF854Fu3+lvBIx5SYn9wRlBzzcnHZSiaFFAb0w= -golang.org/x/net v0.24.0/go.mod h1:2Q7sJY5mzlzWjKtYUEXSlBWCdyaioyXzRB2RtU8KVE8= +golang.org/x/net v0.28.0 h1:a9JDOJc5GMUJ0+UDqmLT86WiEy7iWyIhz8gz8E4e5hE= +golang.org/x/net v0.28.0/go.mod h1:yqtgsTWOOnlGLG9GFRrK3++bGOUEkNBoHZc8MEDWPNg= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.19.0 h1:q5f1RH2jigJ1MoAWp2KTp3gm5zAGFUTarQZ5U386+4o= -golang.org/x/sys v0.19.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= -golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= -golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= +golang.org/x/sys v0.38.0 h1:3yZWxaJjBmCWXqhN1qh02AkOnCQ1poK6oF+a7xWL6Gc= +golang.org/x/sys v0.38.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks= +golang.org/x/text v0.17.0 h1:XtiM5bkSOt+ewxlOE/aE/AKEHibwj/6gvWMl9Rsh0Qc= +golang.org/x/text v0.17.0/go.mod h1:BuEKDfySbSR4drPmRPG/7iBdf8hvFMuRexcpahXilzY= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405 h1:yhCVgyC4o1eVCa2tZl7eS0r+SDo693bJlVdllGtEeKM= gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/main.go b/main.go index 14067ed..46bf1ef 100644 --- a/main.go +++ b/main.go @@ -35,6 +35,7 @@ func main() { h := flag.Bool("h", false, "display this help") home := flag.String("H", ".", "download under this path") flag.BoolVar(¬ui, "notui", false, "use plain text instead of TUI") + flag.BoolVar(&ip.IsIPv6Available, "6", false, "use ipv6") flag.Parse() args := flag.Args() if len(args) != 1 || *h { @@ -53,7 +54,7 @@ func main() { if notui { logrus.Infoln("RVC Models Downloader start at", time.Now().Local().Format(time.DateTime+" (MST)")) logrus.Infof("operating system: %s, architecture: %s", runtime.GOOS, runtime.GOARCH) - logrus.Infoln("is ipv6 available:", ip.IsIPv6Available.Get()) + logrus.Infoln("is ipv6 available:", ip.IsIPv6Available) } else { if err := ui.Init(); err != nil { logrus.Errorln("failed to initialize termui:", err) @@ -74,14 +75,14 @@ func main() { errorln("open custom dns file", *dnsf, "err:", err) return } - m := dns.DNSConfig{} + m := dns.Config{} err = yaml.NewDecoder(f).Decode(&m) if err != nil { errorln("decode custom dns file", *dnsf, "err:", err) return } _ = f.Close() - if ip.IsIPv6Available.Get() { + if ip.IsIPv6Available { dns.IPv6Servers.Add(&m) } else { dns.IPv4Servers.Add(&m) diff --git a/net.go b/net.go index 714ac51..91f47f6 100644 --- a/net.go +++ b/net.go @@ -16,6 +16,12 @@ import ( "github.com/pkg/errors" ) +var pcli = &http.Client{ + Transport: &http.Transport{ + Proxy: http.ProxyFromEnvironment, + }, +} + func (c *config) download(p, prefix, home, ua string, waits time.Duration, usecust, usetrs, force bool) error { for i, t := range c.Targets { if t.Refer != "" { @@ -79,7 +85,7 @@ func (c *config) download(p, prefix, home, ua string, waits time.Duration, usecu if usetrs { resp, err = trshttp.DefaultClient.Do(req) } else { - resp, err = http.DefaultClient.Do(req) + resp, err = pcli.Do(req) } if err != nil { errorf("#%s%d get %s err: %v", prefix, i+1, req.URL, err) diff --git a/ui.go b/ui.go index 95a9cb3..18744cf 100644 --- a/ui.go +++ b/ui.go @@ -35,7 +35,7 @@ func newscreen() (s screen) { "[Time](mod:bold): %s\n[OS](mod:bold): %s, [Architecture](mod:bold): %s\n[Is IPv6 available](mod:bold): %v", time.Now().Local().Format(time.DateTime+" (MST)"), runtime.GOOS, runtime.GOARCH, - ip.IsIPv6Available.Get(), + ip.IsIPv6Available, ) s.sysinfo.SetRect(0, s.currh, w/2, s.currh+5) s.currh += 5