Skip to content

Commit a7250bb

Browse files
committed
feat: 增加启动自动获取及优化UI
1 parent 9b6923a commit a7250bb

10 files changed

Lines changed: 185 additions & 85 deletions

File tree

conf.go

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ type FetchConf struct {
1010
Method string
1111
SelectOrigin string
1212
CustomUrl string
13+
AutoFetch bool
1314
}
1415
Server struct {
1516
Interval int
@@ -22,6 +23,7 @@ func (f *FetchConf) Storage() {
2223
viper.Set("client.method", f.Client.Method)
2324
viper.Set("client.selectorigin", f.Client.SelectOrigin)
2425
viper.Set("client.customurl", f.Client.CustomUrl)
26+
viper.Set("client.autofetch", f.Client.AutoFetch)
2527
viper.Set("server.interval", f.Server.Interval)
2628
viper.Set("server.port", f.Server.Port)
2729
if err := viper.WriteConfigAs("conf.yaml"); err != nil {
@@ -36,6 +38,7 @@ func LoadFetchConf() *FetchConf {
3638
viper.SetDefault("client.interval", 60)
3739
viper.SetDefault("client.method", "官方指定hosts源")
3840
viper.SetDefault("client.selectorigin", "FetchGithubHosts")
41+
viper.SetDefault("client.autofetch", false)
3942
viper.SetDefault("server.interval", 60)
4043
viper.SetDefault("server.port", 9898)
4144
var fileNotExits bool

fetch_hosts.go

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import (
55
"encoding/json"
66
"fmt"
77
"github.com/h2non/filetype"
8-
"io/ioutil"
8+
"io"
99
"net"
1010
"net/http"
1111
"os"
@@ -19,7 +19,7 @@ const (
1919
Darwin = "darwin"
2020
)
2121

22-
func startClient(ticker *FetchTicker, url string, flog *fetchLog) {
22+
func startClient(ticker *FetchTicker, url string, flog *FetchLog) {
2323
flog.Print("远程hosts获取链接:" + url)
2424
fn := func() {
2525
if err := ClientFetchHosts(url); err != nil {
@@ -40,7 +40,7 @@ func startClient(ticker *FetchTicker, url string, flog *fetchLog) {
4040
}
4141
}
4242

43-
func startServer(ticker *FetchTicker, port int, flog *fetchLog) {
43+
func startServer(ticker *FetchTicker, port int, flog *FetchLog) {
4444
listen, err := net.Listen("tcp", fmt.Sprintf(":%d", port))
4545
if err != nil {
4646
fmt.Println("服务启动失败(可能是目标端口已被占用):", err.Error())
@@ -74,7 +74,7 @@ func startServer(ticker *FetchTicker, port int, flog *fetchLog) {
7474
}
7575

7676
type serverHandle struct {
77-
flog *fetchLog
77+
flog *FetchLog
7878
}
7979

8080
func (s *serverHandle) ServeHTTP(resp http.ResponseWriter, request *http.Request) {
@@ -83,7 +83,7 @@ func (s *serverHandle) ServeHTTP(resp http.ResponseWriter, request *http.Request
8383
if p == "/" {
8484
p = "/index.html"
8585
}
86-
file, err := ioutil.ReadFile(AppExecDir() + p)
86+
file, err := os.ReadFile(AppExecDir() + p)
8787
if err != nil {
8888
resp.WriteHeader(http.StatusInternalServerError)
8989
resp.Write([]byte("server error"))
@@ -116,7 +116,7 @@ func ClientFetchHosts(url string) (err error) {
116116
return
117117
}
118118

119-
fetchHosts, err := ioutil.ReadAll(resp.Body)
119+
fetchHosts, err := io.ReadAll(resp.Body)
120120
if err != nil {
121121
err = ComposeError("读取最新的hosts失败", err)
122122
return
@@ -136,7 +136,7 @@ func ClientFetchHosts(url string) (err error) {
136136
hosts.WriteString(newlineChar)
137137
}
138138
}
139-
if err = ioutil.WriteFile(GetSystemHostsPath(), hosts.Bytes(), os.ModeType); err != nil {
139+
if err = os.WriteFile(GetSystemHostsPath(), hosts.Bytes(), os.ModeType); err != nil {
140140
err = ComposeError("写入hosts文件失败,请用超级管理员身份启动本程序!", err)
141141
return
142142
}
@@ -158,12 +158,12 @@ func ServerFetchHosts() (err error) {
158158
return
159159
}
160160

161-
if err = ioutil.WriteFile(execDir+"/hosts.json", hostJson, 0775); err != nil {
161+
if err = os.WriteFile(execDir+"/hosts.json", hostJson, 0775); err != nil {
162162
err = ComposeError("写入数据到hosts.json文件失败", err)
163163
return
164164
}
165165

166-
if err = ioutil.WriteFile(execDir+"/hosts.txt", hostFile, 0775); err != nil {
166+
if err = os.WriteFile(execDir+"/hosts.txt", hostFile, 0775); err != nil {
167167
err = ComposeError("写入数据到hosts.txt文件失败", err)
168168
return
169169
}
@@ -176,7 +176,7 @@ func ServerFetchHosts() (err error) {
176176
}
177177

178178
templateData := strings.Replace(string(templateFile), "<!--time-->", now, 1)
179-
if err = ioutil.WriteFile(execDir+"/index.html", []byte(templateData), 0775); err != nil {
179+
if err = os.WriteFile(execDir+"/index.html", []byte(templateData), 0775); err != nil {
180180
err = ComposeError("写入更新信息到首页文件失败", err)
181181
return
182182
}
@@ -208,7 +208,7 @@ func FetchHosts(domains []string) (hostsJson, hostsFile []byte, now string, err
208208

209209
func getCleanGithubHosts() (hosts *bytes.Buffer, err error) {
210210
hostsPath := GetSystemHostsPath()
211-
hostsBytes, err := ioutil.ReadFile(hostsPath)
211+
hostsBytes, err := os.ReadFile(hostsPath)
212212
if err != nil {
213213
err = ComposeError("读取文件hosts错误", err)
214214
return
@@ -269,7 +269,7 @@ func flushCleanGithubHosts() (err error) {
269269
if err != nil {
270270
return
271271
}
272-
if err = ioutil.WriteFile(GetSystemHostsPath(), hosts.Bytes(), os.ModeType); err != nil {
272+
if err = os.WriteFile(GetSystemHostsPath(), hosts.Bytes(), os.ModeType); err != nil {
273273
err = ComposeError("写入hosts文件失败,请用超级管理员身份启动本程序!", err)
274274
}
275275
return

fetch_hosts_test.go

Lines changed: 0 additions & 7 deletions
This file was deleted.

go.mod

Lines changed: 33 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -3,35 +3,38 @@ module github.com/Licoy/fetch-github-hosts
33
go 1.18
44

55
require (
6-
fyne.io/fyne/v2 v2.2.2
7-
github.com/getlantern/elevate v0.0.0-20210901195629-ce58359e4d0e
6+
fyne.io/fyne/v2 v2.3.4
7+
github.com/getlantern/elevate v0.0.0-20220903142053-479ab992b264
8+
github.com/h2non/filetype v1.1.3
89
github.com/jessevdk/go-flags v1.5.0
910
github.com/spf13/viper v1.12.0
1011
)
1112

1213
require (
13-
fyne.io/systray v1.10.1-0.20220621085403-9a2652634e93 // indirect
14+
fyne.io/systray v1.10.1-0.20230403195833-7dc3c09283d6 // indirect
1415
github.com/davecgh/go-spew v1.1.1 // indirect
15-
github.com/fredbi/uri v0.0.0-20181227131451-3dcfdacbaaf3 // indirect
16+
github.com/fredbi/uri v0.1.0 // indirect
1617
github.com/fsnotify/fsnotify v1.5.4 // indirect
1718
github.com/fyne-io/gl-js v0.0.0-20220119005834-d2da28d9ccfe // indirect
1819
github.com/fyne-io/glfw-js v0.0.0-20220120001248-ee7290d23504 // indirect
1920
github.com/fyne-io/image v0.0.0-20220602074514-4956b0afb3d2 // indirect
20-
github.com/getlantern/byteexec v0.0.0-20170405023437-4cfb26ec74f4 // indirect
21-
github.com/getlantern/context v0.0.0-20190109183933-c447772a6520 // indirect
22-
github.com/getlantern/errors v0.0.0-20190325191628-abdb3e3e36f7 // indirect
23-
github.com/getlantern/filepersist v0.0.0-20160317154340-c5f0cd24e799 // indirect
24-
github.com/getlantern/golog v0.0.0-20190830074920-4ef2e798c2d7 // indirect
25-
github.com/getlantern/hex v0.0.0-20190417191902-c6586a6fe0b7 // indirect
26-
github.com/getlantern/hidden v0.0.0-20190325191715-f02dbb02be55 // indirect
27-
github.com/getlantern/ops v0.0.0-20190325191751-d70cb0d6f85f // indirect
21+
github.com/getlantern/byteexec v0.0.0-20220903142956-e6ed20032cfd // indirect
22+
github.com/getlantern/context v0.0.0-20220418194847-3d5e7a086201 // indirect
23+
github.com/getlantern/errors v1.0.3 // indirect
24+
github.com/getlantern/filepersist v0.0.0-20210901195658-ed29a1cb0b7c // indirect
25+
github.com/getlantern/golog v0.0.0-20230503153817-8e72de7e0a65 // indirect
26+
github.com/getlantern/hex v0.0.0-20220104173244-ad7e4b9194dc // indirect
27+
github.com/getlantern/hidden v0.0.0-20220104173330-f221c5a24770 // indirect
28+
github.com/getlantern/ops v0.0.0-20230519221840-1283e026181c // indirect
2829
github.com/go-gl/gl v0.0.0-20211210172815-726fda9656d6 // indirect
29-
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20211213063430-748e38ca8aec // indirect
30-
github.com/go-stack/stack v1.8.0 // indirect
30+
github.com/go-gl/glfw/v3.3/glfw v0.0.0-20221017161538-93cebf72946b // indirect
31+
github.com/go-logr/logr v1.2.4 // indirect
32+
github.com/go-logr/stdr v1.2.2 // indirect
33+
github.com/go-stack/stack v1.8.1 // indirect
34+
github.com/go-text/typesetting v0.0.0-20230405155246-bf9c697c6e16 // indirect
3135
github.com/godbus/dbus/v5 v5.1.0 // indirect
32-
github.com/goki/freetype v0.0.0-20181231101311-fa8a33aabaff // indirect
36+
github.com/goki/freetype v0.0.0-20220119013949-7a161fd3728c // indirect
3337
github.com/gopherjs/gopherjs v1.17.2 // indirect
34-
github.com/h2non/filetype v1.1.3 // indirect
3538
github.com/hashicorp/hcl v1.0.0 // indirect
3639
github.com/jsummers/gobmp v0.0.0-20151104160322-e2ba15ffa76e // indirect
3740
github.com/magiconair/properties v1.8.6 // indirect
@@ -44,17 +47,23 @@ require (
4447
github.com/spf13/cast v1.5.0 // indirect
4548
github.com/spf13/jwalterweatherman v1.1.0 // indirect
4649
github.com/spf13/pflag v1.0.5 // indirect
47-
github.com/srwiley/oksvg v0.0.0-20200311192757-870daf9aa564 // indirect
48-
github.com/srwiley/rasterx v0.0.0-20200120212402-85cb7272f5e9 // indirect
49-
github.com/stretchr/testify v1.7.2 // indirect
50+
github.com/srwiley/oksvg v0.0.0-20220731023508-a61f04f16b76 // indirect
51+
github.com/srwiley/rasterx v0.0.0-20210519020934-456a8d69b780 // indirect
52+
github.com/stretchr/testify v1.8.3 // indirect
5053
github.com/subosito/gotenv v1.3.0 // indirect
5154
github.com/tevino/abool v1.2.0 // indirect
52-
github.com/yuin/goldmark v1.4.0 // indirect
53-
golang.org/x/image v0.0.0-20220601225756-64ec528b34cd // indirect
55+
github.com/yuin/goldmark v1.4.13 // indirect
56+
go.opentelemetry.io/otel v1.16.0 // indirect
57+
go.opentelemetry.io/otel/metric v1.16.0 // indirect
58+
go.opentelemetry.io/otel/trace v1.16.0 // indirect
59+
go.uber.org/atomic v1.11.0 // indirect
60+
go.uber.org/multierr v1.11.0 // indirect
61+
go.uber.org/zap v1.24.0 // indirect
62+
golang.org/x/image v0.3.0 // indirect
5463
golang.org/x/mobile v0.0.0-20211207041440-4e6c2922fdee // indirect
55-
golang.org/x/net v0.0.0-20220520000938-2e3eb7b945c2 // indirect
56-
golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a // indirect
57-
golang.org/x/text v0.3.7 // indirect
64+
golang.org/x/net v0.0.0-20220722155237-a158d28d115b // indirect
65+
golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f // indirect
66+
golang.org/x/text v0.6.0 // indirect
5867
gopkg.in/ini.v1 v1.66.4 // indirect
5968
gopkg.in/yaml.v2 v2.4.0 // indirect
6069
gopkg.in/yaml.v3 v3.0.1 // indirect

0 commit comments

Comments
 (0)