proxyman.go 1.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. // Package proxyman defines applications for manageing inbound and outbound proxies.
  2. package proxyman
  3. import (
  4. "context"
  5. "v2ray.com/core/app"
  6. "v2ray.com/core/common/net"
  7. "v2ray.com/core/proxy"
  8. "v2ray.com/core/transport/ray"
  9. )
  10. type InboundHandlerManager interface {
  11. GetHandler(tag string) (proxy.InboundHandler, int)
  12. }
  13. type InboundHandler interface {
  14. }
  15. type OutboundHandlerManager interface {
  16. GetHandler(tag string) proxy.OutboundHandler
  17. GetDefaultHandler() proxy.OutboundHandler
  18. SetDefaultHandler(handler proxy.OutboundHandler) error
  19. SetHandler(tag string, handler proxy.OutboundHandler) error
  20. }
  21. type OutboundHandler interface {
  22. Dispatch(ctx context.Context, destination net.Destination, outboundRay ray.OutboundRay)
  23. }
  24. func InboundHandlerManagerFromSpace(space app.Space) InboundHandlerManager {
  25. app := space.GetApplication((*InboundHandlerManager)(nil))
  26. if app == nil {
  27. return nil
  28. }
  29. return app.(InboundHandlerManager)
  30. }
  31. func OutboundHandlerManagerFromSpace(space app.Space) OutboundHandlerManager {
  32. app := space.GetApplication((*OutboundHandlerManager)(nil))
  33. if app == nil {
  34. return nil
  35. }
  36. return app.(OutboundHandlerManager)
  37. }