| 12345678910111213141516171819202122232425262728293031323334353637383940414243 | // Package blackhole is an outbound handler that blocks all connections.package blackholeimport (	"context"	"time"	"v2ray.com/core/common"	"v2ray.com/core/common/net"	"v2ray.com/core/transport/ray")// Handler is an outbound connection that sliently swallow the entire payload.type Handler struct {	response ResponseConfig}// New creates a new blackhole handler.func New(ctx context.Context, config *Config) (*Handler, error) {	response, err := config.GetInternalResponse()	if err != nil {		return nil, err	}	return &Handler{		response: response,	}, nil}// Dispatch implements OutboundHandler.Dispatch().func (v *Handler) Dispatch(destination net.Destination, ray ray.OutboundRay) {	v.response.WriteTo(ray.OutboundOutput())	// CloseError() will immediately close the connection.	// Sleep a little here to make sure the response is sent to client.	time.Sleep(time.Millisecond * 500)	ray.OutboundInput().CloseError()	ray.OutboundOutput().CloseError()}func init() {	common.Must(common.RegisterConfig((*Config)(nil), func(ctx context.Context, config interface{}) (interface{}, error) {		return New(ctx, config.(*Config))	}))}
 |