diff --git a/internal/zero/cmd/command.go b/internal/zero/cmd/command.go index 24321b4f0..0b00c984b 100644 --- a/internal/zero/cmd/command.go +++ b/internal/zero/cmd/command.go @@ -7,6 +7,7 @@ import ( "fmt" "os" "os/signal" + "path/filepath" "syscall" "github.com/mattn/go-isatty" @@ -28,11 +29,17 @@ func Run(ctx context.Context) error { return errors.New("no token provided") } + bootstrapConfigFileName, err := getBootstrapConfigFileName() + if err != nil { + return fmt.Errorf("error getting bootstrap config path: %w", err) + } + return controller.Run( withInterrupt(ctx), controller.WithAPIToken(token), controller.WithClusterAPIEndpoint(getClusterAPIEndpoint()), controller.WithConnectAPIEndpoint(getConnectAPIEndpoint()), + controller.WithBootstrapConfigFileName(bootstrapConfigFileName), ) } @@ -81,3 +88,17 @@ func setupLogger() error { zerolog.DefaultContextLogger = &log.Logger return nil } + +func getBootstrapConfigFileName() (string, error) { + cacheDir, err := os.UserCacheDir() + if err != nil { + return "", err + } + + dir := filepath.Join(cacheDir, "pomerium") + if err := os.MkdirAll(dir, 0644); err != nil { + return "", err + } + + return filepath.Join(dir, "bootstrap.dat"), nil +} diff --git a/internal/zero/controller/config.go b/internal/zero/controller/config.go index 0e729acb5..8aea41618 100644 --- a/internal/zero/controller/config.go +++ b/internal/zero/controller/config.go @@ -72,7 +72,6 @@ func newControllerConfig(opts ...Option) *controllerConfig { for _, opt := range []Option{ WithClusterAPIEndpoint("https://console.pomerium.com/cluster/v1"), WithConnectAPIEndpoint("https://connect.pomerium.com"), - WithBootstrapConfigFileName("/var/cache/pomerium-bootstrap.dat"), WithDatabrokerLeaseDuration(time.Second * 30), WithDatabrokerRequestTimeout(time.Second * 30), } {