transport_nonce_tcp.go 784 B

12345678910111213141516171819202122232425262728293031323334353637383940
  1. //+build !windows
  2. package dbus
  3. import (
  4. "errors"
  5. "io/ioutil"
  6. "net"
  7. )
  8. func init() {
  9. transports["nonce-tcp"] = newNonceTcpTransport
  10. }
  11. func newNonceTcpTransport(keys string) (transport, error) {
  12. host := getKey(keys, "host")
  13. port := getKey(keys, "port")
  14. noncefile := getKey(keys, "noncefile")
  15. if host == "" || port == "" || noncefile == "" {
  16. return nil, errors.New("dbus: unsupported address (must set host, port and noncefile)")
  17. }
  18. protocol, err := tcpFamily(keys)
  19. if err != nil {
  20. return nil, err
  21. }
  22. socket, err := net.Dial(protocol, net.JoinHostPort(host, port))
  23. if err != nil {
  24. return nil, err
  25. }
  26. b, err := ioutil.ReadFile(noncefile)
  27. if err != nil {
  28. return nil, err
  29. }
  30. _, err = socket.Write(b)
  31. if err != nil {
  32. return nil, err
  33. }
  34. return NewConn(socket)
  35. }