Add chained inbound support

This commit is contained in:
世界
2022-08-29 19:43:13 +08:00
parent f5e0ead01c
commit dbda0ed98a
16 changed files with 544 additions and 289 deletions

View File

@@ -21,7 +21,10 @@ import (
N "github.com/sagernet/sing/common/network"
)
var _ adapter.Inbound = (*ShadowsocksMulti)(nil)
var (
_ adapter.Inbound = (*ShadowsocksMulti)(nil)
_ adapter.InjectableInbound = (*ShadowsocksMulti)(nil)
)
type ShadowsocksMulti struct {
myInboundAdapter
@@ -114,6 +117,10 @@ func (h *ShadowsocksMulti) NewPacket(ctx context.Context, conn N.PacketConn, buf
return h.service.NewPacket(adapter.WithContext(ctx, &metadata), conn, buffer, adapter.UpstreamMetadata(metadata))
}
func (h *ShadowsocksMulti) NewPacketConnection(ctx context.Context, conn N.PacketConn, metadata adapter.InboundContext) error {
return os.ErrInvalid
}
func (h *ShadowsocksMulti) newConnection(ctx context.Context, conn net.Conn, metadata adapter.InboundContext) error {
userIndex, loaded := auth.UserFromContext[int](ctx)
if !loaded {