Files
sing-box/experimental/boxdd/managed.go
T
2026-07-13 15:08:24 +08:00

64 lines
1.3 KiB
Go

package main
import (
"os"
"github.com/sagernet/sing-box/daemon"
E "github.com/sagernet/sing/common/exceptions"
"google.golang.org/grpc/codes"
"google.golang.org/grpc/status"
)
var _ daemon.ManagedHandler = (*managedHandler)(nil)
type managedHandler struct {
daemon *Daemon
}
func (h *managedHandler) ServiceStop() error {
if h.daemon.closed {
return os.ErrClosed
}
options, err := loadStartOptions()
if err != nil {
return err
}
return h.daemon.stopServiceLocked(options.OwnerUserID)
}
func (h *managedHandler) ServiceReload() error {
if h.daemon.closed {
return os.ErrClosed
}
configContent, err := loadServiceConfig()
if err != nil {
return err
}
options, err := loadStartOptions()
if err != nil {
return err
}
err = h.daemon.startService(configContent, options)
if err != nil {
return err
}
options.WasRunning = true
return saveStartOptions(options)
}
func (h *managedHandler) SystemProxyStatus() (*daemon.SystemProxyStatus, error) {
return &daemon.SystemProxyStatus{}, nil
}
func (h *managedHandler) SetSystemProxyEnabled(enabled bool) error {
if !enabled {
return nil
}
return status.Error(codes.FailedPrecondition, "the system proxy is not available")
}
func (h *managedHandler) TriggerNativeCrash() error {
return E.New("native crash is not supported")
}