v2ray_legacy.go 1.0 KB

1234567891011121314151617181920212223242526272829303132
  1. package mux
  2. import (
  3. "context"
  4. "net"
  5. "github.com/sagernet/sing-box/adapter"
  6. vmess "github.com/sagernet/sing-vmess"
  7. "github.com/sagernet/sing/common/logger"
  8. N "github.com/sagernet/sing/common/network"
  9. )
  10. type V2RayLegacyRouter struct {
  11. router adapter.ConnectionRouter
  12. logger logger.ContextLogger
  13. }
  14. func NewV2RayLegacyRouter(router adapter.ConnectionRouter, logger logger.ContextLogger) adapter.ConnectionRouter {
  15. return &V2RayLegacyRouter{router, logger}
  16. }
  17. func (r *V2RayLegacyRouter) RouteConnection(ctx context.Context, conn net.Conn, metadata adapter.InboundContext) error {
  18. if metadata.Destination.Fqdn == vmess.MuxDestination.Fqdn {
  19. r.logger.InfoContext(ctx, "inbound legacy multiplex connection")
  20. return vmess.HandleMuxConnection(ctx, conn, adapter.NewRouteHandler(metadata, r.router, r.logger))
  21. }
  22. return r.router.RouteConnection(ctx, conn, metadata)
  23. }
  24. func (r *V2RayLegacyRouter) RoutePacketConnection(ctx context.Context, conn N.PacketConn, metadata adapter.InboundContext) error {
  25. return r.router.RoutePacketConnection(ctx, conn, metadata)
  26. }