diff --git a/client/cmd/main.go b/client/cmd/main.go index 26d2cd4..474cdff 100644 --- a/client/cmd/main.go +++ b/client/cmd/main.go @@ -1,14 +1,60 @@ package main import ( + "context" + "errors" + "flag" "fmt" "log" + "time" + + "github.com/vilmibm/hermeticum/proto" + "google.golang.org/grpc" + "google.golang.org/grpc/credentials/insecure" +) + +var ( + tls = flag.Bool("tls", false, "Connection uses TLS if true, else plain TCP") + caFile = flag.String("ca_file", "", "The file containing the CA root cert file") + serverAddr = flag.String("addr", "localhost:6666", "The server address in the format of host:port") + serverHostOverride = flag.String("server_host_override", "x.test.example.com", "The server name used to verify the hostname returned by the TLS handshake") ) func _main() error { - fmt.Println("lol TODO make a client") + var opts []grpc.DialOption + if *tls { + return errors.New("TODO tls unsupported") + /* + if *caFile == "" { + *caFile = data.Path("x509/ca_cert.pem") + } + creds, err := credentials.NewClientTLSFromFile(*caFile, *serverHostOverride) + if err != nil { + log.Fatalf("Failed to create TLS credentials %v", err) + } + opts = append(opts, grpc.WithTransportCredentials(creds)) + */ + } else { + opts = append(opts, grpc.WithTransportCredentials(insecure.NewCredentials())) + } - // TODO do a ping against server + conn, err := grpc.Dial(*serverAddr, opts...) + if err != nil { + return fmt.Errorf("fail to dial: %w", err) + } + defer conn.Close() + + client := proto.NewGameWorldClient(conn) + + ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) + defer cancel() + + pong, err := client.Ping(ctx, &proto.SessionInfo{}) + if err != nil { + log.Fatalf("%v.Ping -> %v", client, err) + } + + log.Printf("%#v", pong) return nil } diff --git a/server/cmd/main.go b/server/cmd/main.go index ab54218..bbc0c17 100644 --- a/server/cmd/main.go +++ b/server/cmd/main.go @@ -6,7 +6,6 @@ import ( "fmt" "log" "net" - "os" "github.com/vilmibm/hermeticum/proto" "google.golang.org/grpc" @@ -80,7 +79,5 @@ func main() { err := _main() if err != nil { log.Fatal(err.Error()) - fmt.Fprintln(os.Stderr, err.Error()) - os.Exit(1) } }