65 lines
1.6 KiB
Go
65 lines
1.6 KiB
Go
package main
|
|
|
|
import (
|
|
log "log"
|
|
"os"
|
|
|
|
"go.temporal.io/server/common/authorization"
|
|
"go.temporal.io/server/common/config"
|
|
templog "go.temporal.io/server/common/log"
|
|
"go.temporal.io/server/temporal"
|
|
)
|
|
|
|
func main() {
|
|
configEnv := envOrDefault("TEMPORAL_CONFIG_ENV", "development")
|
|
configDir := envOrDefault("TEMPORAL_CONFIG_DIR", "./config")
|
|
|
|
cfg, err := config.LoadConfig(configEnv, configDir, "")
|
|
if err != nil {
|
|
log.Fatalf("load config: %v", err)
|
|
}
|
|
|
|
logger := templog.NewCLILogger()
|
|
|
|
authorizer, err := authorization.GetAuthorizerFromConfig(&cfg.Global.Authorization)
|
|
if err != nil {
|
|
log.Fatalf("authorizer: %v", err)
|
|
}
|
|
|
|
claimMapper, err := authorization.GetClaimMapperFromConfig(&cfg.Global.Authorization, logger)
|
|
if err != nil {
|
|
log.Fatalf("claim mapper: %v", err)
|
|
}
|
|
|
|
audienceMapper, err := authorization.GetAudienceMapperFromConfig(&cfg.Global.Authorization)
|
|
if err != nil {
|
|
log.Fatalf("audience mapper: %v", err)
|
|
}
|
|
|
|
srv, err := temporal.NewServer(
|
|
temporal.ForServices(temporal.DefaultServices),
|
|
temporal.WithConfig(cfg),
|
|
temporal.WithLogger(logger),
|
|
temporal.InterruptOn(temporal.InterruptCh()),
|
|
temporal.WithAuthorizer(authorizer),
|
|
temporal.WithClaimMapper(func(*config.Config) authorization.ClaimMapper { return claimMapper }),
|
|
temporal.WithAudienceGetter(func(*config.Config) authorization.JWTAudienceMapper { return audienceMapper }),
|
|
)
|
|
if err != nil {
|
|
log.Fatalf("setup server: %v", err)
|
|
}
|
|
|
|
defer srv.Stop()
|
|
|
|
if err := srv.Start(); err != nil {
|
|
log.Fatalf("start server: %v", err)
|
|
}
|
|
}
|
|
|
|
func envOrDefault(key, fallback string) string {
|
|
if value := os.Getenv(key); value != "" {
|
|
return value
|
|
}
|
|
return fallback
|
|
}
|