package client import ( "context" "crypto/tls" "fmt" "time" "certmanager/api/certmanagercontrol" //"certmanager/internal/config" "google.golang.org/grpc" "google.golang.org/grpc/credentials" ) const ( DefaultWrpcPort int = 20107 DefaultGrpcPort int = 20108 ) type Access struct { Hostname string Port int Username string Password string } func NewClient(access *Access) (certmanagercontrol.ControlClient, error) { var err error var cli certmanagercontrol.ControlClient if access.Port == 0 { access.Port = DefaultGrpcPort } tlsConfig := &tls.Config{ InsecureSkipVerify: true, } const dialTimeout time.Duration = 5 * time.Second const idleTimeout time.Duration = 10 * time.Second authCred := NewAuthCredential(access.Username, access.Password) dialOpts := []grpc.DialOption{ grpc.WithTransportCredentials(credentials.NewTLS(tlsConfig)), grpc.WithPerRPCCredentials(authCred), grpc.WithBlock(), grpc.WithIdleTimeout(idleTimeout), } address := fmt.Sprintf("%s:%d", access.Hostname, access.Port) ctx, _ := context.WithTimeout(context.Background(), dialTimeout) conn, err := grpc.DialContext(ctx, address, dialOpts...) if err != nil { return cli, fmt.Errorf("Dial error: %v", err) } cli = certmanagercontrol.NewControlClient(conn) return cli, err }