| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546 | 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)}// WriteTo implements ResponseConfig.WriteTo().func (*NoneResponse) WriteTo(buf.Writer) {}// WriteTo implements ResponseConfig.WriteTo().func (*HTTPResponse) WriteTo(writer buf.Writer) {	b := buf.NewLocal(512)	common.Must(b.AppendSupplier(serial.WriteString(http403response)))	writer.WriteMultiBuffer(buf.NewMultiBufferValue(b))}// 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}
 |