| index e2ee59ee9..804cfc5ad 100644 |
| --- a/cmd/console/main.go |
| +++ b/cmd/console/main.go |
| @@ -73,6 +73,7 @@ import ( |
| "crypto/ed25519" |
| "flag" |
| "fmt" |
| + "github.com/carlosframework/platform/internal/lease" |
| "log" |
| "net" |
| "net/http" |
| @@ -269,6 +270,14 @@ func serve() { |
| // same one the server got. |
| rel := openStore() |
| dbBucket, dbRegion, dbPrefix, placement := dbDoorWiring() |
| + hostClaim := hostClaimEnabled(os.Getenv) |
| + var dbVersions lease.VersionedStore |
| + if hostClaim && dbBucket != "" { |
| + dbVersions, err = lease.NewVersionedS3(context.Background(), map[string]string{dbBucket: dbRegion}) |
| + if err != nil { |
| + log.Fatalf("console: versioned database reader: %v", err) |
| + } |
| + } |
| // Before the server exists: every door that seals reads this switch. |
| appconfig.SetBoundSealing(secretsEnvelopeV2()) |
| srv, err := console.NewServer(console.Config{ |
| @@ -286,6 +295,8 @@ func serve() { |
| GeoIP: openGeoIP(strings.TrimSpace(os.Getenv("CONSOLE_GEOIP_DB"))), |
| // The carlos db door's data bucket and this box's placement |
| // (dbDoorWiring). |
| + HostClaim: hostClaim, |
| + DBVersions: dbVersions, |
| HibernateBucket: dbBucket, |
| HibernateRegion: dbRegion, |
| HibernatePrefix: dbPrefix, |
| @@ -1176,3 +1187,7 @@ func dbDoorWiring() (bucket, region, prefix, placement string) { |
| } |
| return cfg.Bucket, cfg.Region, cfg.Prefix, placement |
| } |
| + |
| +func hostClaimEnabled(getenv func(string) string) bool { |
| + return strings.TrimSpace(getenv("CARLOS_HOST_CLAIM")) != "" |
| +} |