Compare commits

..

1 Commits

Author SHA1 Message Date
dependabot[bot]
8ae55b9b34 chore(deps): bump filippo.io/edwards25519 from 1.1.0 to 1.1.1
Bumps [filippo.io/edwards25519](https://github.com/FiloSottile/edwards25519) from 1.1.0 to 1.1.1.
- [Commits](https://github.com/FiloSottile/edwards25519/compare/v1.1.0...v1.1.1)

---
updated-dependencies:
- dependency-name: filippo.io/edwards25519
  dependency-version: 1.1.1
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-02-18 23:42:55 +00:00
7 changed files with 25 additions and 72 deletions

View File

@@ -4,8 +4,8 @@ linkTitle: "Redis"
type: docs
weight: 1
description: >
Redis is a in-memory data structure store.
Redis is a in-memory data structure store.
---
## About
@@ -44,9 +44,6 @@ password: ${MY_AUTH_STRING} # Omit this field if you don't have a password.
# database: 0
# clusterEnabled: false
# useGCPIAM: false
# tls:
# enabled: false
# insecureSkipVerify: false
```
{{< notice tip >}}
@@ -64,7 +61,7 @@ Here is an example tools.yaml config with [AUTH][auth] enabled:
```yaml
kind: sources
name: my-redis-cluster-instance
type: redis
type: memorystore-redis
address:
- 127.0.0.1:6379
password: ${MY_AUTH_STRING}
@@ -81,7 +78,7 @@ using IAM authentication:
```yaml
kind: sources
name: my-redis-cluster-instance
type: redis
type: memorystore-redis
address:
- 127.0.0.1:6379
useGCPIAM: true
@@ -92,16 +89,14 @@ clusterEnabled: true
## Reference
| **field** | **type** | **required** | **description** |
|------------------------|:--------:|:------------:|-----------------------------------------------------------------------------------------------------------------------------------------------|
| type | string | true | Must be "redis". |
| address | string | true | Primary endpoint for the Memorystore Redis instance to connect to. |
| username | string | false | If you are using a non-default user, specify the user name here. If you are using Memorystore for Redis, leave this field blank |
| password | string | false | If you have [Redis AUTH][auth] enabled, specify the AUTH string here |
| database | int | false | The Redis database to connect to. Not applicable for cluster enabled instances. The default database is `0`. |
| tls.enabled | bool | false | Set it to `true` to enable TLS for the Redis connection. Defaults to `false`. |
| tls.insecureSkipVerify | bool | false | Set it to `true` to skip TLS certificate verification. **Warning:** This is insecure and not recommended for production. Defaults to `false`. |
| clusterEnabled | bool | false | Set it to `true` if using a Redis Cluster instance. Defaults to `false`. |
| useGCPIAM | bool | false | Set it to `true` if you are using GCP's IAM authentication. Defaults to `false`. |
| **field** | **type** | **required** | **description** |
|----------------|:--------:|:------------:|---------------------------------------------------------------------------------------------------------------------------------|
| type | string | true | Must be "memorystore-redis". |
| address | string | true | Primary endpoint for the Memorystore Redis instance to connect to. |
| username | string | false | If you are using a non-default user, specify the user name here. If you are using Memorystore for Redis, leave this field blank |
| password | string | false | If you have [Redis AUTH][auth] enabled, specify the AUTH string here |
| database | int | false | The Redis database to connect to. Not applicable for cluster enabled instances. The default database is `0`. |
| clusterEnabled | bool | false | Set it to `true` if using a Redis Cluster instance. Defaults to `false`. |
| useGCPIAM | string | false | Set it to `true` if you are using GCP's IAM authentication. Defaults to `false`. |
[auth]: https://cloud.google.com/memorystore/docs/redis/about-redis-auth

2
go.mod
View File

@@ -94,7 +94,7 @@ require (
cloud.google.com/go/monitoring v1.24.3 // indirect
cloud.google.com/go/trace v1.11.7 // indirect
dario.cat/mergo v1.0.2 // indirect
filippo.io/edwards25519 v1.1.0 // indirect
filippo.io/edwards25519 v1.1.1 // indirect
github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 // indirect
github.com/99designs/keyring v1.2.2 // indirect
github.com/Azure/azure-sdk-for-go/sdk/azcore v1.18.0 // indirect

3
go.sum
View File

@@ -639,8 +639,9 @@ cloud.google.com/go/workflows v1.10.0/go.mod h1:fZ8LmRmZQWacon9UCX1r/g/DfAXx5VcP
dario.cat/mergo v1.0.2 h1:85+piFYR1tMbRrLcDwR18y4UKJ3aH1Tbzi24VRW1TK8=
dario.cat/mergo v1.0.2/go.mod h1:E/hbnu0NxMFBjpMIE34DRGLWqDy0g5FuKDhCb31ngxA=
dmitri.shuralyov.com/gpu/mtl v0.0.0-20190408044501-666a987793e9/go.mod h1:H6x//7gZCb22OMCxBHrMx7a5I7Hp++hsVxbQ4BYO7hU=
filippo.io/edwards25519 v1.1.0 h1:FNf4tywRC1HmFuKW5xopWpigGjJKiJSV0Cqo0cJWDaA=
filippo.io/edwards25519 v1.1.0/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4=
filippo.io/edwards25519 v1.1.1 h1:YpjwWWlNmGIDyXOn8zLzqiD+9TyIlPhGFG96P39uBpw=
filippo.io/edwards25519 v1.1.1/go.mod h1:BxyFTGdWcka3PhytdK4V28tE5sGfRvvvRV7EaN4VDT4=
gioui.org v0.0.0-20210308172011-57750fc8a0a6/go.mod h1:RSH6KIUZ0p2xy5zHDxgAM4zumjgTw83q2ge/PI+yyw8=
git.sr.ht/~sbinet/gg v0.3.1/go.mod h1:KGYtlADtqsqANL9ueOFkWymvzUvLMQllU5Ixo+8v3pc=
github.com/99designs/go-keychain v0.0.0-20191008050251-8e49817e8af4 h1:/vQbFIOMbk2FiG/kXiLl8BRyzTWDw7gX/Hz7Dd5eDMs=

View File

@@ -15,7 +15,6 @@ package redis
import (
"context"
"crypto/tls"
"fmt"
"time"
@@ -45,20 +44,14 @@ func newConfig(ctx context.Context, name string, decoder *yaml.Decoder) (sources
}
type Config struct {
Name string `yaml:"name" validate:"required"`
Type string `yaml:"type" validate:"required"`
Address []string `yaml:"address" validate:"required"`
Username string `yaml:"username"`
Password string `yaml:"password"`
Database int `yaml:"database"`
UseGCPIAM bool `yaml:"useGCPIAM"`
ClusterEnabled bool `yaml:"clusterEnabled"`
TLS TLSConfig `yaml:"tls"`
}
type TLSConfig struct {
Enabled bool `yaml:"enabled"`
InsecureSkipVerify bool `yaml:"insecureSkipVerify"`
Name string `yaml:"name" validate:"required"`
Type string `yaml:"type" validate:"required"`
Address []string `yaml:"address" validate:"required"`
Username string `yaml:"username"`
Password string `yaml:"password"`
Database int `yaml:"database"`
UseGCPIAM bool `yaml:"useGCPIAM"`
ClusterEnabled bool `yaml:"clusterEnabled"`
}
func (r Config) SourceConfigType() string {
@@ -98,13 +91,6 @@ func initRedisClient(ctx context.Context, r Config) (RedisClient, error) {
}
}
var tlsConfig *tls.Config
if r.TLS.Enabled {
tlsConfig = &tls.Config{
InsecureSkipVerify: r.TLS.InsecureSkipVerify,
}
}
var client RedisClient
var err error
if r.ClusterEnabled {
@@ -118,7 +104,6 @@ func initRedisClient(ctx context.Context, r Config) (RedisClient, error) {
CredentialsProviderContext: authFn,
Username: r.Username,
Password: r.Password,
TLSConfig: tlsConfig,
})
err = clusterClient.ForEachShard(ctx, func(ctx context.Context, shard *redis.Client) error {
return shard.Ping(ctx).Err()
@@ -140,7 +125,6 @@ func initRedisClient(ctx context.Context, r Config) (RedisClient, error) {
CredentialsProviderContext: authFn,
Username: r.Username,
Password: r.Password,
TLSConfig: tlsConfig,
})
_, err = standaloneClient.Ping(ctx).Result()
if err != nil {

View File

@@ -63,9 +63,6 @@ func TestParseFromYamlRedis(t *testing.T) {
database: 1
useGCPIAM: true
clusterEnabled: true
tls:
enabled: true
insecureSkipVerify: true
`,
want: map[string]sources.SourceConfig{
"my-redis-instance": redis.Config{
@@ -76,10 +73,6 @@ func TestParseFromYamlRedis(t *testing.T) {
Database: 1,
ClusterEnabled: true,
UseGCPIAM: true,
TLS: redis.TLSConfig{
Enabled: true,
InsecureSkipVerify: true,
},
},
},
},

View File

@@ -144,7 +144,7 @@ func ParseParams(ps Parameters, data map[string]any, claimsMap map[string]map[st
// parse non auth-required parameter
var ok bool
v, ok = data[name]
if !ok || v == nil {
if !ok {
v = p.GetDefault()
// if the parameter is required and no value given, throw an error
if CheckParamRequired(p.GetRequired(), v) {

View File

@@ -2347,23 +2347,3 @@ func TestCheckParamRequired(t *testing.T) {
})
}
}
func TestParseParams_ExplicitNullForRequiredParam(t *testing.T) {
// Define a required string parameter
params := parameters.Parameters{
parameters.NewStringParameter("required_param", "this is required"),
}
// Input map with explicit nil
input := map[string]any{
"required_param": nil,
}
// Call ParseParams
_, err := parameters.ParseParams(params, input, nil)
// Expect an error because the parameter is required
if err == nil {
t.Errorf("ParseParams allowed explicit nil for required parameter, expected error")
}
}