| 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
 
- }
 
 
  |