mirror of https://github.com/v2ray/v2ray-core
				
				
				
			
		
			
				
	
	
		
			50 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Go
		
	
	
			
		
		
	
	
			50 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Go
		
	
	
package blackhole
 | 
						|
 | 
						|
import (
 | 
						|
	"github.com/v2ray/v2ray-core/app"
 | 
						|
	"github.com/v2ray/v2ray-core/common/alloc"
 | 
						|
	v2net "github.com/v2ray/v2ray-core/common/net"
 | 
						|
	"github.com/v2ray/v2ray-core/proxy"
 | 
						|
	"github.com/v2ray/v2ray-core/proxy/internal"
 | 
						|
	"github.com/v2ray/v2ray-core/transport/internet"
 | 
						|
	"github.com/v2ray/v2ray-core/transport/ray"
 | 
						|
)
 | 
						|
 | 
						|
// BlackHole is an outbound connection that sliently swallow the entire payload.
 | 
						|
type BlackHole struct {
 | 
						|
	meta     *proxy.OutboundHandlerMeta
 | 
						|
	response Response
 | 
						|
}
 | 
						|
 | 
						|
func NewBlackHole(space app.Space, config *Config, meta *proxy.OutboundHandlerMeta) *BlackHole {
 | 
						|
	return &BlackHole{
 | 
						|
		meta:     meta,
 | 
						|
		response: config.Response,
 | 
						|
	}
 | 
						|
}
 | 
						|
 | 
						|
func (this *BlackHole) Dispatch(destination v2net.Destination, payload *alloc.Buffer, ray ray.OutboundRay) error {
 | 
						|
	payload.Release()
 | 
						|
 | 
						|
	this.response.WriteTo(ray.OutboundOutput())
 | 
						|
	ray.OutboundOutput().Close()
 | 
						|
 | 
						|
	ray.OutboundInput().Release()
 | 
						|
 | 
						|
	return nil
 | 
						|
}
 | 
						|
 | 
						|
type Factory struct{}
 | 
						|
 | 
						|
func (this *Factory) StreamCapability() internet.StreamConnectionType {
 | 
						|
	return internet.StreamConnectionTypeRawTCP
 | 
						|
}
 | 
						|
 | 
						|
func (this *Factory) Create(space app.Space, config interface{}, meta *proxy.OutboundHandlerMeta) (proxy.OutboundHandler, error) {
 | 
						|
	return NewBlackHole(space, config.(*Config), meta), nil
 | 
						|
}
 | 
						|
 | 
						|
func init() {
 | 
						|
	internal.MustRegisterOutboundHandlerCreator("blackhole", new(Factory))
 | 
						|
}
 |