| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 | package blackholeimport (	"v2ray.com/core/common"	"v2ray.com/core/common/buf"	"v2ray.com/core/common/serial")const (	http403response = `HTTP/1.1 403 ForbiddenConnection: closeCache-Control: max-age=3600, publicContent-Length: 0`)// ResponseConfig is the configuration for blackhole responses.type ResponseConfig interface {	// WriteTo writes predefined response to the give buffer.	WriteTo(buf.Writer) int32}// WriteTo implements ResponseConfig.WriteTo().func (*NoneResponse) WriteTo(buf.Writer) int32 { return 0 }// WriteTo implements ResponseConfig.WriteTo().func (*HTTPResponse) WriteTo(writer buf.Writer) int32 {	b := buf.New()	common.Must(b.Reset(serial.WriteString(http403response)))	n := b.Len()	writer.WriteMultiBuffer(buf.NewMultiBufferValue(b))	return n}// GetInternalResponse converts response settings from proto to internal data structure.func (c *Config) GetInternalResponse() (ResponseConfig, error) {	if c.GetResponse() == nil {		return new(NoneResponse), nil	}	config, err := c.GetResponse().GetInstance()	if err != nil {		return nil, err	}	return config.(ResponseConfig), nil}
 |