| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071 | 
							- package blackhole
 
- import (
 
- 	"v2ray.com/core/common/alloc"
 
- 	v2io "v2ray.com/core/common/io"
 
- 	"github.com/golang/protobuf/proto"
 
- 	"github.com/golang/protobuf/ptypes"
 
- 	"github.com/golang/protobuf/ptypes/any"
 
- 	"strings"
 
- 	"v2ray.com/core/common/loader"
 
- )
 
- const (
 
- 	http403response = `HTTP/1.1 403 Forbidden
 
- Connection: close
 
- Cache-Control: max-age=3600, public
 
- Content-Length: 0
 
- `
 
- )
 
- type ResponseConfig interface {
 
- 	AsAny() *any.Any
 
- 	WriteTo(v2io.Writer)
 
- }
 
- func (this *NoneResponse) WriteTo(v2io.Writer) {}
 
- func (this *NoneResponse) AsAny() *any.Any {
 
- 	r, _ := ptypes.MarshalAny(this)
 
- 	return r
 
- }
 
- func (this *HTTPResponse) WriteTo(writer v2io.Writer) {
 
- 	writer.Write(alloc.NewLocalBuffer(512).Clear().AppendString(http403response))
 
- }
 
- func (this *HTTPResponse) AsAny() *any.Any {
 
- 	r, _ := ptypes.MarshalAny(this)
 
- 	return r
 
- }
 
- func (this *Response) GetInternalResponse() (ResponseConfig, error) {
 
- 	if this == nil {
 
- 		return new(NoneResponse), nil
 
- 	}
 
- 	var r ResponseConfig
 
- 	switch this.Type {
 
- 	case Response_None:
 
- 		r = new(NoneResponse)
 
- 	case Response_HTTP:
 
- 		r = new(HTTPResponse)
 
- 	}
 
- 	err := ptypes.UnmarshalAny(this.Settings, r.(proto.Message))
 
- 	if err != nil {
 
- 		return nil, err
 
- 	}
 
- 	return r, nil
 
- }
 
- var (
 
- 	cache = loader.ConfigCreatorCache{}
 
- )
 
- func init() {
 
- 	cache.RegisterCreator(strings.ToLower(Response_Type_name[int32(Response_None)]), func() interface{} { return new(NoneResponse) })
 
- 	cache.RegisterCreator(strings.ToLower(Response_Type_name[int32(Response_HTTP)]), func() interface{} { return new(HTTPResponse) })
 
- }
 
 
  |