package admin import ( "context" "forge.cadoles.com/cadoles/bouncer/internal/integration" "forge.cadoles.com/cadoles/bouncer/internal/jwk" "forge.cadoles.com/cadoles/bouncer/internal/setup" "github.com/pkg/errors" "gitlab.com/wpetit/goweb/logger" ) func (s *Server) initRepositories(ctx context.Context) error { if err := s.initRedisClient(ctx); err != nil { return errors.WithStack(err) } if err := s.initLayerRepository(ctx); err != nil { return errors.WithStack(err) } if err := s.initProxyRepository(ctx); err != nil { return errors.WithStack(err) } return nil } func (s *Server) initRedisClient(ctx context.Context) error { client := setup.NewRedisClient(ctx, s.redisConfig) s.redisClient = client return nil } func (s *Server) initLayerRepository(ctx context.Context) error { layerRepository, err := setup.NewLayerRepository(ctx, s.redisClient) if err != nil { return errors.WithStack(err) } s.layerRepository = layerRepository return nil } func (s *Server) initProxyRepository(ctx context.Context) error { proxyRepository, err := setup.NewProxyRepository(ctx, s.redisClient) if err != nil { return errors.WithStack(err) } s.proxyRepository = proxyRepository return nil } func (s *Server) initPrivateKey(ctx context.Context) error { localKey, err := jwk.LoadOrGenerate(string(s.serverConfig.Auth.PrivateKey), jwk.DefaultKeySize) if err != nil { return errors.WithStack(err) } ctx = integration.WithPrivateKey(ctx, localKey) key, err := integration.RunOnKeyLoad(ctx, s.integrations) if err != nil { return errors.WithStack(err) } if key != nil { s.privateKey = key } else { s.privateKey = localKey } logger.Info(ctx, "using private key", logger.F("keyID", s.privateKey.KeyID())) publicKeys, err := jwk.PublicKeySet(s.privateKey) if err != nil { return errors.WithStack(err) } s.publicKeys = publicKeys return nil }