successful test of rpc client over unix sockets and tcp.

This commit is contained in:
greg stone
2023-02-22 16:30:56 +00:00
parent bde32c5a3d
commit cb12dfd173
6 changed files with 38 additions and 12 deletions

View File

@@ -10,6 +10,7 @@ import (
"github.com/multiformats/go-multiaddr"
"github.com/spf13/cobra"
"github.com/spf13/viper"
"github.com/tutorialedge/go-grpc-tutorial/chat"
"os"
)
@@ -90,6 +91,9 @@ var seedCmd = &cobra.Command{
// We need to enable specific gRPC services here
//srv := rpc.Server()
//helloworld.RegisterGreeterServer(srv, helloworld)
s := chat.Server{}
chat.RegisterChatServiceServer(rpc.Server(), &s)
log.I.Ln("starting rpc server")

1
go.mod
View File

@@ -171,6 +171,7 @@ require (
github.com/subosito/gotenv v1.4.2 // indirect
github.com/templexxx/cpu v0.0.1 // indirect
github.com/templexxx/xorsimd v0.1.1 // indirect
github.com/tutorialedge/go-grpc-tutorial v0.0.0-20200509091100-f8d1b5b15b01 // indirect
github.com/whyrusleeping/go-keyspace v0.0.0-20160322163242-5b898ac5add1 // indirect
github.com/xanzy/ssh-agent v0.2.1 // indirect
github.com/xo/terminfo v0.0.0-20210125001918-ca9a967f8778 // indirect

2
go.sum
View File

@@ -1111,6 +1111,8 @@ github.com/templexxx/xorsimd v0.1.1 h1:Y4e8YgMx/4xRJO4G6lq0bSswfDCxbIrGu7KqM2ET5
github.com/templexxx/xorsimd v0.1.1/go.mod h1:W+ffZz8jJMH2SXwuKu9WhygqBMbFnp14G2fqEr8qaNo=
github.com/tmc/grpc-websocket-proxy v0.0.0-20170815181823-89b8d40f7ca8/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U=
github.com/tmc/grpc-websocket-proxy v0.0.0-20190109142713-0ad062ec5ee5/go.mod h1:ncp9v5uamzpCO7NfCPTXjqaC+bZgJeR0sMTm6dMHP7U=
github.com/tutorialedge/go-grpc-tutorial v0.0.0-20200509091100-f8d1b5b15b01 h1:dVcYTEMB9QwRqslGxkvYGXI3fL7twjdbTTADm7J3TU8=
github.com/tutorialedge/go-grpc-tutorial v0.0.0-20200509091100-f8d1b5b15b01/go.mod h1:LBdTyeyzGK4jRGHXkC3z2BFf/Fml8peKISp1OtHDmvs=
github.com/ugorji/go v1.1.4/go.mod h1:uQMGLiO92mf5W77hV/PUCpI3pbzQx3CRekS0kk+RGrc=
github.com/urfave/cli v0.0.0-20171014202726-7bc6a0acffa5/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA=
github.com/urfave/cli v1.20.0/go.mod h1:70zkFmudgCuE/ngEzBv17Jvp/497gISqfk5gWijbERA=

View File

@@ -1,17 +1,21 @@
package rpc
import (
"context"
"github.com/multiformats/go-multiaddr"
"golang.zx2c4.com/wireguard/conn"
"golang.zx2c4.com/wireguard/device"
"golang.zx2c4.com/wireguard/tun"
"golang.zx2c4.com/wireguard/tun/netstack"
"google.golang.org/grpc"
"google.golang.org/grpc/credentials/insecure"
"net"
"net/netip"
"strconv"
)
var (
DefaultClientIPAddr = netip.MustParseAddr("127.0.37.2")
DefaultClientIPAddr = netip.MustParseAddr("192.168.4.29")
)
type Peer struct {
@@ -75,5 +79,17 @@ func NewClient(config *ClientConfig) (*RPCClient, error) {
return nil, err
}
//var conn *grpc.ClientConn
go grpc.Dial("unix:///tmp/indra.sock", grpc.WithTransportCredentials(insecure.NewCredentials()))
go grpc.DialContext(context.Background(),
deviceIP.String()+":80",
grpc.WithBlock(),
grpc.WithTransportCredentials(insecure.NewCredentials()),
grpc.WithContextDialer(func(ctx context.Context, address string) (net.Conn, error) {
return r.network.DialContext(ctx, "tcp4", address)
}))
return &r, nil
}

View File

@@ -46,7 +46,7 @@ func CantStart() chan error {
}
var (
deviceIP netip.Addr = netip.MustParseAddr("127.0.37.1")
deviceIP netip.Addr = netip.MustParseAddr("192.168.4.28")
devicePort int = 0
deviceMTU int = 1420
)
@@ -88,7 +88,7 @@ func Start(ctx context.Context) {
deviceConf := "" +
"public_key=" + peer_whitelist.HexString() + "\n" +
"allowed_ip=" + "127.0.37.2" + "/32\n"
"allowed_ip=" + DefaultClientIPAddr.String() + "/32\n"
if err = dev.IpcSet(deviceConf); check(err) {
startupErrors <- err
@@ -108,13 +108,15 @@ func Start(ctx context.Context) {
go server.Serve(unixSock)
if tcpSock, err = network.ListenTCP(&net.TCPAddr{Port: devicePort}); check(err) {
if tcpSock, err = network.ListenTCPAddrPort(netip.AddrPortFrom(deviceIP, 80)); check(err) {
startupErrors <- err
return
}
go server.Serve(tcpSock)
//network.ListenPing(netstack.PingAddrFromAddr(deviceIP))
isReady <- true
select {

View File

@@ -2,6 +2,7 @@ package seed
import (
"context"
"git-indra.lan/indra-labs/indra/pkg/rpc"
"time"
"github.com/libp2p/go-libp2p"
@@ -75,6 +76,14 @@ func (srv *Server) Serve() (err error) {
go metrics.HostStatus(ctx, srv.host)
var client *rpc.RPCClient
if client, err = rpc.NewClient(rpc.DefaultClientConfig); check(err) {
return err
}
client.Start()
select {
case <-ctx.Done():
@@ -96,14 +105,6 @@ func New(config *Config) (*Server, error) {
s.config = config
//var client *rpc.RPCClient
//
//if client, err = rpc.NewClient(rpc.DefaultClientConfig); check(err) {
// return nil, err
//}
//
//client.Start()
if s.host, err = libp2p.New(libp2p.Identity(config.PrivKey), libp2p.UserAgent(userAgent), libp2p.ListenAddrs(config.ListenAddresses...)); check(err) {
return nil, err
}