clashapi.go 745 B

123456789101112131415161718192021222324
  1. package experimental
  2. import (
  3. "os"
  4. "github.com/sagernet/sing-box/adapter"
  5. "github.com/sagernet/sing-box/log"
  6. "github.com/sagernet/sing-box/option"
  7. )
  8. type ClashServerConstructor = func(router adapter.Router, logFactory log.ObservableFactory, options option.ClashAPIOptions) (adapter.ClashServer, error)
  9. var clashServerConstructor ClashServerConstructor
  10. func RegisterClashServerConstructor(constructor ClashServerConstructor) {
  11. clashServerConstructor = constructor
  12. }
  13. func NewClashServer(router adapter.Router, logFactory log.ObservableFactory, options option.ClashAPIOptions) (adapter.ClashServer, error) {
  14. if clashServerConstructor == nil {
  15. return nil, os.ErrInvalid
  16. }
  17. return clashServerConstructor(router, logFactory, options)
  18. }