Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Reads cert and key as base64 for Temporal Cloud #725

Merged
merged 2 commits into from
Nov 27, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions docker-compose-dev.yml
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@ x-flow-worker-env: &flow-worker-env
TEMPORAL_HOST_PORT: temporal:7233
PEERDB_TEMPORAL_NAMESPACE: default
# For the below 2 cert and key variables,
# paste as base64 encoded strings.
# use yml multiline syntax with '|'
TEMPORAL_CLIENT_CERT:
TEMPORAL_CLIENT_KEY:
Expand Down
15 changes: 14 additions & 1 deletion flow/cmd/api.go
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,11 @@ package main
import (
"context"
"crypto/tls"
"encoding/base64"
"fmt"
"net"
"net/http"
"strings"
"time"

utils "github.com/PeerDB-io/peer-flow/connectors/utils/catalog"
Expand Down Expand Up @@ -90,7 +92,18 @@ func APIMain(args *APIServerParams) error {
Namespace: args.TemporalNamespace,
}
if args.TemporalCert != "" && args.TemporalKey != "" {
cert, err := tls.X509KeyPair([]byte(args.TemporalCert), []byte(args.TemporalKey))
log.Info("Using temporal certificate/key for authentication")
certBytes, err := base64.StdEncoding.DecodeString(strings.TrimSpace(args.TemporalCert))
if err != nil {
return fmt.Errorf("unable to decode temporal certificate: %w", err)
}

keyBytes, err := base64.StdEncoding.DecodeString(strings.TrimSpace(args.TemporalKey))
if err != nil {
return fmt.Errorf("unable to decode temporal key: %w", err)
}

cert, err := tls.X509KeyPair(certBytes, keyBytes)
if err != nil {
return fmt.Errorf("unable to obtain temporal key pair: %w", err)
}
Expand Down
15 changes: 14 additions & 1 deletion flow/cmd/snapshot_worker.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,9 @@ package main

import (
"crypto/tls"
"encoding/base64"
"fmt"
"strings"

"github.com/PeerDB-io/peer-flow/activities"
"github.com/PeerDB-io/peer-flow/shared"
Expand All @@ -26,7 +28,17 @@ func SnapshotWorkerMain(opts *SnapshotWorkerOptions) error {
}

if opts.TemporalCert != "" && opts.TemporalKey != "" {
cert, err := tls.X509KeyPair([]byte(opts.TemporalCert), []byte(opts.TemporalKey))
certBytes, err := base64.StdEncoding.DecodeString(strings.TrimSpace(opts.TemporalCert))
if err != nil {
return fmt.Errorf("unable to decode temporal certificate: %w", err)
}

keyBytes, err := base64.StdEncoding.DecodeString(strings.TrimSpace(opts.TemporalKey))
if err != nil {
return fmt.Errorf("unable to decode temporal key: %w", err)
}

cert, err := tls.X509KeyPair(certBytes, keyBytes)
if err != nil {
return fmt.Errorf("unable to obtain temporal key pair: %w", err)
}
Expand All @@ -36,6 +48,7 @@ func SnapshotWorkerMain(opts *SnapshotWorkerOptions) error {
}
clientOptions.ConnectionOptions = connOptions
}

c, err := client.Dial(clientOptions)
if err != nil {
return fmt.Errorf("unable to create Temporal client: %w", err)
Expand Down
14 changes: 13 additions & 1 deletion flow/cmd/worker.go
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ package main

import (
"crypto/tls"
"encoding/base64"
"fmt"
"os"
"os/signal"
Expand Down Expand Up @@ -93,7 +94,18 @@ func WorkerMain(opts *WorkerOptions) error {
}

if opts.TemporalCert != "" && opts.TemporalKey != "" {
cert, err := tls.X509KeyPair([]byte(opts.TemporalCert), []byte(opts.TemporalKey))
log.Info("Using temporal certificate/key for authentication")
certBytes, err := base64.StdEncoding.DecodeString(opts.TemporalCert)
if err != nil {
return fmt.Errorf("unable to decode temporal certificate: %w", err)
}

keyBytes, err := base64.StdEncoding.DecodeString(opts.TemporalKey)
if err != nil {
return fmt.Errorf("unable to decode temporal key: %w", err)
}

cert, err := tls.X509KeyPair(certBytes, keyBytes)
if err != nil {
return fmt.Errorf("unable to obtain temporal key pair: %w", err)
}
Expand Down
Loading