diff --git a/guard/guard.go b/guard/guard.go --- a/guard/guard.go +++ b/guard/guard.go @@ -16,7 +16,6 @@ securejoin "github.com/cyphar/filepath-securejoin" "github.com/urfave/cli/v3" "tangled.org/core/idresolver" - "tangled.org/core/knotserver/config" "tangled.org/core/log" ) @@ -57,11 +56,6 @@ func Run(ctx context.Context, cmd *cli.Command) error { l := log.FromContext(ctx) - - c, err := config.Load(ctx) - if err != nil { - return fmt.Errorf("failed to load config: %w", err) - } incomingUser := cmd.String("user") gitDir := cmd.String("git-dir") @@ -128,7 +122,7 @@ } didOrHandle := components[0] - identity := resolveIdentity(ctx, c, l, didOrHandle) + identity := resolveIdentity(ctx, l, didOrHandle) did := identity.DID.String() repoName := components[1] qualifiedRepoName, _ := securejoin.SecureJoin(did, repoName) @@ -201,8 +195,8 @@ return nil } -func resolveIdentity(ctx context.Context, c *config.Config, l *slog.Logger, didOrHandle string) *identity.Identity { - resolver := idresolver.DefaultResolver(c.Server.PlcUrl) +func resolveIdentity(ctx context.Context, l *slog.Logger, didOrHandle string) *identity.Identity { + resolver := idresolver.DefaultResolver() ident, err := resolver.ResolveIdent(ctx, didOrHandle) if err != nil { l.Error("Error resolving handle", "error", err, "handle", didOrHandle) diff --git a/idresolver/resolver.go b/idresolver/resolver.go --- a/idresolver/resolver.go +++ b/idresolver/resolver.go @@ -17,9 +17,9 @@ directory identity.Directory } -func BaseDirectory(plcUrl string) identity.Directory { +func BaseDirectory() identity.Directory { base := identity.BaseDirectory{ - PLCURL: plcUrl, + PLCURL: identity.DefaultPLCURL, HTTPClient: http.Client{ Timeout: time.Second * 10, Transport: &http.Transport{ @@ -42,30 +42,21 @@ return &base } -func RedisDirectory(url, plcUrl string) (identity.Directory, error) { +func RedisDirectory(url string) (identity.Directory, error) { hitTTL := time.Hour * 24 errTTL := time.Second * 30 invalidHandleTTL := time.Minute * 5 - return redisdir.NewRedisDirectory( - BaseDirectory(plcUrl), - url, - hitTTL, - errTTL, - invalidHandleTTL, - 10000, - ) + return redisdir.NewRedisDirectory(BaseDirectory(), url, hitTTL, errTTL, invalidHandleTTL, 10000) } -func DefaultResolver(plcUrl string) *Resolver { - base := BaseDirectory(plcUrl) - cached := identity.NewCacheDirectory(base, 250_000, time.Hour*24, time.Minute*2, time.Minute*5) +func DefaultResolver() *Resolver { return &Resolver{ - directory: &cached, + directory: identity.DefaultDirectory(), } } -func RedisResolver(redisUrl, plcUrl string) (*Resolver, error) { - directory, err := RedisDirectory(redisUrl, plcUrl) +func RedisResolver(redisUrl string) (*Resolver, error) { + directory, err := RedisDirectory(redisUrl) if err != nil { return nil, err } diff --git a/knotserver/ingester.go b/knotserver/ingester.go --- a/knotserver/ingester.go +++ b/knotserver/ingester.go @@ -16,6 +16,7 @@ "github.com/bluesky-social/jetstream/pkg/models" securejoin "github.com/cyphar/filepath-securejoin" "tangled.org/core/api/tangled" + "tangled.org/core/idresolver" "tangled.org/core/knotserver/db" "tangled.org/core/knotserver/git" "tangled.org/core/log" @@ -119,7 +120,8 @@ } // resolve this aturi to extract the repo record - ident, err := h.resolver.ResolveIdent(ctx, repoAt.Authority().String()) + resolver := idresolver.DefaultResolver() + ident, err := resolver.ResolveIdent(ctx, repoAt.Authority().String()) if err != nil || ident.Handle.IsInvalidHandle() { return fmt.Errorf("failed to resolve handle: %w", err) } @@ -231,14 +233,16 @@ return err } - subjectId, err := h.resolver.ResolveIdent(ctx, record.Subject) + resolver := idresolver.DefaultResolver() + + subjectId, err := resolver.ResolveIdent(ctx, record.Subject) if err != nil || subjectId.Handle.IsInvalidHandle() { return err } // TODO: fix this for good, we need to fetch the record here unfortunately // resolve this aturi to extract the repo record - owner, err := h.resolver.ResolveIdent(ctx, repoAt.Authority().String()) + owner, err := resolver.ResolveIdent(ctx, repoAt.Authority().String()) if err != nil || owner.Handle.IsInvalidHandle() { return fmt.Errorf("failed to resolve handle: %w", err) } diff --git a/knotserver/internal.go b/knotserver/internal.go --- a/knotserver/internal.go +++ b/knotserver/internal.go @@ -145,7 +145,7 @@ func (h *InternalHandle) replyCompare(line git.PostReceiveLine, repoOwner string, gitRelativeDir string, repoName string, ctx context.Context) ([]string, error) { l := h.l.With("handler", "replyCompare") - userIdent, err := idresolver.DefaultResolver(h.c.Server.PlcUrl).ResolveIdent(ctx, repoOwner) + userIdent, err := idresolver.DefaultResolver().ResolveIdent(ctx, repoOwner) user := repoOwner if err != nil { l.Error("Failed to fetch user identity", "err", err) diff --git a/knotserver/router.go b/knotserver/router.go --- a/knotserver/router.go +++ b/knotserver/router.go @@ -36,7 +36,7 @@ l: log.FromContext(ctx), jc: jc, n: n, - resolver: idresolver.DefaultResolver(c.Server.PlcUrl), + resolver: idresolver.DefaultResolver(), } err := e.AddKnot(rbac.ThisServer) diff --git a/spindle/ingester.go b/spindle/ingester.go --- a/spindle/ingester.go +++ b/spindle/ingester.go @@ -9,6 +9,7 @@ "tangled.org/core/api/tangled" "tangled.org/core/eventconsumer" + "tangled.org/core/idresolver" "tangled.org/core/rbac" "tangled.org/core/spindle/db" @@ -141,6 +142,7 @@ func (s *Spindle) ingestRepo(ctx context.Context, e *models.Event) error { var err error did := e.Did + resolver := idresolver.DefaultResolver() l := s.l.With("component", "ingester", "record", tangled.RepoNSID) @@ -188,7 +190,7 @@ } // add collaborators to rbac - owner, err := s.res.ResolveIdent(ctx, did) + owner, err := resolver.ResolveIdent(ctx, did) if err != nil || owner.Handle.IsInvalidHandle() { return err } @@ -223,7 +225,9 @@ return err } - subjectId, err := s.res.ResolveIdent(ctx, record.Subject) + resolver := idresolver.DefaultResolver() + + subjectId, err := resolver.ResolveIdent(ctx, record.Subject) if err != nil || subjectId.Handle.IsInvalidHandle() { return err } @@ -236,7 +240,7 @@ // TODO: get rid of this entirely // resolve this aturi to extract the repo record - owner, err := s.res.ResolveIdent(ctx, repoAt.Authority().String()) + owner, err := resolver.ResolveIdent(ctx, repoAt.Authority().String()) if err != nil || owner.Handle.IsInvalidHandle() { return fmt.Errorf("failed to resolve handle: %w", err) } diff --git a/spindle/server.go b/spindle/server.go --- a/spindle/server.go +++ b/spindle/server.go @@ -123,7 +123,7 @@ jc.AddDid(d) } - resolver := idresolver.DefaultResolver(cfg.Server.PlcUrl) + resolver := idresolver.DefaultResolver() spindle := Spindle{ jc: jc, diff --git a/appview/config/config.go b/appview/config/config.go --- a/appview/config/config.go +++ b/appview/config/config.go @@ -28,10 +28,6 @@ Jwks string `env:"JWKS"` } -type PlcConfig struct { - PLCURL string `env:"URL, default=https://plc.directory"` -} - type JetstreamConfig struct { Endpoint string `env:"ENDPOINT, default=wss://jetstream1.us-east.bsky.network/subscribe"` } @@ -107,7 +103,6 @@ Avatar AvatarConfig `env:",prefix=TANGLED_AVATAR_"` OAuth OAuthConfig `env:",prefix=TANGLED_OAUTH_"` Redis RedisConfig `env:",prefix=TANGLED_REDIS_"` - Plc PlcConfig `env:",prefix=TANGLED_PLC_"` Pds PdsConfig `env:",prefix=TANGLED_PDS_"` Cloudflare Cloudflare `env:",prefix=TANGLED_CLOUDFLARE_"` } diff --git a/appview/state/state.go b/appview/state/state.go --- a/appview/state/state.go +++ b/appview/state/state.go @@ -70,10 +70,10 @@ return nil, fmt.Errorf("failed to create enforcer: %w", err) } - res, err := idresolver.RedisResolver(config.Redis.ToURL(), config.Plc.PLCURL) + res, err := idresolver.RedisResolver(config.Redis.ToURL()) if err != nil { logger.Error("failed to create redis resolver", "err", err) - res = idresolver.DefaultResolver(config.Plc.PLCURL) + res = idresolver.DefaultResolver() } posthog, err := posthog.NewWithConfig(config.Posthog.ApiKey, posthog.Config{Endpoint: config.Posthog.Endpoint}) diff --git a/knotserver/config/config.go b/knotserver/config/config.go --- a/knotserver/config/config.go +++ b/knotserver/config/config.go @@ -19,7 +19,6 @@ InternalListenAddr string `env:"INTERNAL_LISTEN_ADDR, default=127.0.0.1:5444"` DBPath string `env:"DB_PATH, default=knotserver.db"` Hostname string `env:"HOSTNAME, required"` - PlcUrl string `env:"PLC_URL, default=plc.directory"` JetstreamEndpoint string `env:"JETSTREAM_ENDPOINT, default=wss://jetstream1.us-west.bsky.network/subscribe"` Owner string `env:"OWNER, required"` LogDids bool `env:"LOG_DIDS, default=true"` diff --git a/spindle/config/config.go b/spindle/config/config.go --- a/spindle/config/config.go +++ b/spindle/config/config.go @@ -13,7 +13,6 @@ DBPath string `env:"DB_PATH, default=spindle.db"` Hostname string `env:"HOSTNAME, required"` JetstreamEndpoint string `env:"JETSTREAM_ENDPOINT, default=wss://jetstream1.us-west.bsky.network/subscribe"` - PlcUrl string `env:"PLC_URL, default=plc.directory"` Dev bool `env:"DEV, default=false"` Owner string `env:"OWNER, required"` Secrets Secrets `env:",prefix=SECRETS_"`