-
Notifications
You must be signed in to change notification settings - Fork 47
/
Copy pathsysproxy.go
70 lines (58 loc) · 1.17 KB
/
sysproxy.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
package sysproxy
import (
"fmt"
"strconv"
"github.com/Clash-Mini/Clash.Mini/constant"
"github.com/Dreamacro/clash/proxy"
)
// ProxyConfig is ...
type ProxyConfig struct {
Enable bool
Server string
}
// SavedProxy is ...
var SavedProxy *ProxyConfig
func (c *ProxyConfig) String() string {
if c == nil {
return "nil"
}
if c.Enable {
return "Enabled: True" + "; Server: " + c.Server
}
return "Enabled: False" + "; Server: " + c.Server
}
// GetSavedProxy is ...
func GetSavedProxy() *ProxyConfig {
if SavedProxy == nil {
err0 := func() error {
p, err := GetCurrentProxy()
if err != nil {
return err
}
var Ports int
if proxy.GetPorts().MixedPort != 0 {
Ports = proxy.GetPorts().MixedPort
} else {
Ports = proxy.GetPorts().Port
}
if p.Enable && p.Server == fmt.Sprintf("%s:%d", constant.Localhost, Ports) {
SavedProxy = &ProxyConfig{
Enable: false,
Server: ":" + strconv.Itoa(proxy.GetPorts().MixedPort),
}
} else {
SavedProxy = p
}
return nil
}()
if err0 != nil {
SavedProxy = &ProxyConfig{
Enable: false,
Server: ":80",
}
return SavedProxy
}
return SavedProxy
}
return SavedProxy
}