diff --git a/api/handlers/address/repository.go b/api/handlers/address/repository.go index e894d5d3..f28a5709 100644 --- a/api/handlers/address/repository.go +++ b/api/handlers/address/repository.go @@ -120,7 +120,9 @@ func (r *Repository) GetAddressOverview(ctx context.Context, params *GetAddressO zap.String("_id", documents[i].ID), ) } - vaas = append(vaas, &documents[i].Vaas[0]) + if len(documents[i].Vaas) > 1 { + vaas = append(vaas, &documents[i].Vaas[0]) + } } return &AddressOverview{Vaas: vaas}, nil } diff --git a/api/internal/config/config.go b/api/internal/config/config.go index f8cc9db1..3ce0c843 100644 --- a/api/internal/config/config.go +++ b/api/internal/config/config.go @@ -64,6 +64,8 @@ type AppConfig struct { Max int // Prefix for redis keys Prefix string + //Api Tokens + Tokens string } } @@ -124,3 +126,7 @@ func Get() (*AppConfig, error) { err := viper.Unmarshal(&cfg) return &cfg, err } + +func (c *AppConfig) GetApiTokens() []string { + return strings.Split(c.RateLimit.Tokens, ",") +} diff --git a/api/main.go b/api/main.go index 39b1459d..fd1ab450 100644 --- a/api/main.go +++ b/api/main.go @@ -297,6 +297,14 @@ func NewRateLimiter(ctx context.Context, cfg *config.AppConfig, logger *zap.Logg cfg.RateLimit.Prefix = "rate-limiter:" } + enableApiTokens := len(cfg.GetApiTokens()) > 0 + enableByApiToken := make(map[string]bool) + if enableApiTokens { + for _, token := range cfg.GetApiTokens() { + enableByApiToken[token] = true + } + } + // initialize rate limiter store, err := frs.New( frs.Config{URL: cfg.Cache.URL, Prefix: cfg.RateLimit.Prefix}) @@ -317,7 +325,13 @@ func NewRateLimiter(ctx context.Context, cfg *config.AppConfig, logger *zap.Logg router := limiter.New(limiter.Config{ Next: func(c *fiber.Ctx) bool { - + if enableApiTokens { + apiKey := c.Get("X-API-KEY") + if apiKey != "" { + _, exists := enableByApiToken[apiKey] + return exists + } + } ip := utils.GetRealIp(c) return utils.IsPrivateIPAsString(ip) }, diff --git a/contract-watcher/go.mod b/contract-watcher/go.mod index 94f03d4d..fe07e316 100644 --- a/contract-watcher/go.mod +++ b/contract-watcher/go.mod @@ -5,7 +5,7 @@ go 1.19 require ( github.com/ansrivas/fiberprometheus/v2 v2.6.0 github.com/avast/retry-go v3.0.0+incompatible - github.com/gagliardetto/solana-go v1.8.2 + github.com/gagliardetto/solana-go v1.8.4 github.com/go-resty/resty/v2 v2.7.0 github.com/gofiber/fiber/v2 v2.47.0 github.com/joho/godotenv v1.5.1