header.go 879 B

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. package internet
  2. import (
  3. "context"
  4. "errors"
  5. "net"
  6. "v2ray.com/core/common"
  7. )
  8. type PacketHeader interface {
  9. Size() int
  10. Write([]byte) (int, error)
  11. }
  12. func CreatePacketHeader(config interface{}) (PacketHeader, error) {
  13. header, err := common.CreateObject(context.Background(), config)
  14. if err != nil {
  15. return nil, err
  16. }
  17. if h, ok := header.(PacketHeader); ok {
  18. return h, nil
  19. }
  20. return nil, errors.New("Internet: Not a packet header.")
  21. }
  22. type ConnectionAuthenticator interface {
  23. Client(net.Conn) net.Conn
  24. Server(net.Conn) net.Conn
  25. }
  26. func CreateConnectionAuthenticator(config interface{}) (ConnectionAuthenticator, error) {
  27. auth, err := common.CreateObject(context.Background(), config)
  28. if err != nil {
  29. return nil, err
  30. }
  31. if a, ok := auth.(ConnectionAuthenticator); ok {
  32. return a, nil
  33. }
  34. return nil, errors.New("Internet: Not a ConnectionAuthenticator.")
  35. }