1234567891011121314151617181920212223242526272829303132 |
- package mux
- import (
- "context"
- "net"
- "github.com/sagernet/sing-box/adapter"
- vmess "github.com/sagernet/sing-vmess"
- "github.com/sagernet/sing/common/logger"
- N "github.com/sagernet/sing/common/network"
- )
- type V2RayLegacyRouter struct {
- router adapter.ConnectionRouter
- logger logger.ContextLogger
- }
- func NewV2RayLegacyRouter(router adapter.ConnectionRouter, logger logger.ContextLogger) adapter.ConnectionRouter {
- return &V2RayLegacyRouter{router, logger}
- }
- func (r *V2RayLegacyRouter) RouteConnection(ctx context.Context, conn net.Conn, metadata adapter.InboundContext) error {
- if metadata.Destination.Fqdn == vmess.MuxDestination.Fqdn {
- r.logger.InfoContext(ctx, "inbound legacy multiplex connection")
- return vmess.HandleMuxConnection(ctx, conn, adapter.NewRouteHandler(metadata, r.router, r.logger))
- }
- return r.router.RouteConnection(ctx, conn, metadata)
- }
- func (r *V2RayLegacyRouter) RoutePacketConnection(ctx context.Context, conn N.PacketConn, metadata adapter.InboundContext) error {
- return r.router.RoutePacketConnection(ctx, conn, metadata)
- }
|