12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- package settings
- import (
- "context"
- M "github.com/sagernet/sing/common/metadata"
- "github.com/sagernet/sing/common/wininet"
- )
- type WindowsSystemProxy struct {
- serverAddr M.Socksaddr
- supportSOCKS bool
- isEnabled bool
- }
- func NewSystemProxy(ctx context.Context, serverAddr M.Socksaddr, supportSOCKS bool) (*WindowsSystemProxy, error) {
- return &WindowsSystemProxy{
- serverAddr: serverAddr,
- supportSOCKS: supportSOCKS,
- }, nil
- }
- func (p *WindowsSystemProxy) IsEnabled() bool {
- return p.isEnabled
- }
- func (p *WindowsSystemProxy) Enable() error {
- err := wininet.SetSystemProxy("http://"+p.serverAddr.String(), "")
- if err != nil {
- return err
- }
- p.isEnabled = true
- return nil
- }
- func (p *WindowsSystemProxy) Disable() error {
- err := wininet.ClearSystemProxy()
- if err != nil {
- return err
- }
- p.isEnabled = false
- return nil
- }
|