server_spec.go 628 B

123456789101112131415161718192021222324252627282930
  1. package protocol
  2. import (
  3. "github.com/xtls/xray-core/common/net"
  4. )
  5. type ServerSpec struct {
  6. Destination net.Destination
  7. User *MemoryUser
  8. }
  9. func NewServerSpec(dest net.Destination, user *MemoryUser) *ServerSpec {
  10. return &ServerSpec{
  11. Destination: dest,
  12. User: user,
  13. }
  14. }
  15. func NewServerSpecFromPB(spec *ServerEndpoint) (*ServerSpec, error) {
  16. dest := net.TCPDestination(spec.Address.AsAddress(), net.Port(spec.Port))
  17. var dUser *MemoryUser
  18. if spec.User != nil {
  19. user, err := spec.User.ToMemoryUser()
  20. if err != nil {
  21. return nil, err
  22. }
  23. dUser = user
  24. }
  25. return NewServerSpec(dest, dUser), nil
  26. }