| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465 | package inboundimport (	"context"	"v2ray.com/core/app/proxyman"	"v2ray.com/core/app/proxyman/mux"	"v2ray.com/core/common"	"v2ray.com/core/common/net"	"v2ray.com/core/proxy"	"v2ray.com/core/transport/internet/domainsocket")type UnixInboundHandler struct {	tag            string	listenerHolder *domainsocket.Listener	ctx            context.Context	path           string	proxy          proxy.Inbound	mux            *mux.Server}func (uih *UnixInboundHandler) Start() {	var err error	uih.listenerHolder, err = domainsocket.ListenDS(uih.ctx, uih.path)	newError(err).AtError().WriteToLog()}func (uih *UnixInboundHandler) Close() {	if uih.listenerHolder != nil {		uih.listenerHolder.Down()	} else {		newError("Called UnixInboundHandler.Close while listenerHolder is nil").AtDebug().WriteToLog()	}}func (uih *UnixInboundHandler) Tag() string {	return uih.tag}func (uih *UnixInboundHandler) GetRandomInboundProxy() (interface{}, net.Port, int) {	//It makes bo sense to support it	return nil, 0, 0}func NewUnixInboundHandler(ctx context.Context, tag string, receiverConfig *proxyman.UnixReceiverConfig, proxyConfig interface{}) (*UnixInboundHandler, error) {	rawProxy, err := common.CreateObject(ctx, proxyConfig)	if err != nil {		return nil, err	}	p, ok := rawProxy.(proxy.Inbound)	if !ok {		return nil, newError("not an inbound proxy.")	}	h := &UnixInboundHandler{		proxy: p,		mux:   mux.NewServer(ctx),		tag:   tag,		ctx:   ctx,		path:  receiverConfig.DomainSockSettings.GetPath(),	}	return h, nil}
 |