mirror of
https://github.com/gofiber/storage.git
synced 2025-09-30 06:12:19 +08:00
Compare commits
37 Commits
s3/v2.0.0
...
redis/v3.0
Author | SHA1 | Date | |
---|---|---|---|
![]() |
f8afad537f | ||
![]() |
468d82d9f7 | ||
![]() |
54245b2520 | ||
![]() |
1af49ff41d | ||
![]() |
a21d4daae0 | ||
![]() |
7825d579b4 | ||
![]() |
2e4b0128fa | ||
![]() |
a19da2b7c9 | ||
![]() |
57e79dffb1 | ||
![]() |
8c18ced1a7 | ||
![]() |
8dd8253afb | ||
![]() |
29370b8740 | ||
![]() |
4501c4f5cd | ||
![]() |
192b1a1bd1 | ||
![]() |
abc64d7e19 | ||
![]() |
6c47c82c78 | ||
![]() |
edb86a96cc | ||
![]() |
0f229274e6 | ||
![]() |
78cfcf3206 | ||
![]() |
e41f3e4131 | ||
![]() |
0170bdc737 | ||
![]() |
d38f0f35f9 | ||
![]() |
c1055478ef | ||
![]() |
88ce7d5d82 | ||
![]() |
7eec5856a3 | ||
![]() |
e357a9c813 | ||
![]() |
967b2258b9 | ||
![]() |
f5c4a78fb1 | ||
![]() |
7e2c6a3e62 | ||
![]() |
89c473aac7 | ||
![]() |
c9efab145d | ||
![]() |
89be8f9d56 | ||
![]() |
a5b0a78828 | ||
![]() |
6be213707b | ||
![]() |
0e55883f05 | ||
![]() |
033c8f432d | ||
![]() |
dc9bb23ade |
6
.github/scripts/gen-test-certs.sh
vendored
6
.github/scripts/gen-test-certs.sh
vendored
@@ -7,6 +7,8 @@
|
|||||||
# ./tls/client.{crt,key} A certificate restricted for SSL client usage.
|
# ./tls/client.{crt,key} A certificate restricted for SSL client usage.
|
||||||
# ./tls/server.{crt,key} A certificate restricted for SSL server usage.
|
# ./tls/server.{crt,key} A certificate restricted for SSL server usage.
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
generate_cert() {
|
generate_cert() {
|
||||||
local name=$1
|
local name=$1
|
||||||
local cn="$2"
|
local cn="$2"
|
||||||
@@ -44,6 +46,8 @@ cat > ./tls/openssl.cnf <<_END_
|
|||||||
[ server_cert ]
|
[ server_cert ]
|
||||||
keyUsage = digitalSignature, keyEncipherment
|
keyUsage = digitalSignature, keyEncipherment
|
||||||
nsCertType = server
|
nsCertType = server
|
||||||
|
subjectAltName = DNS:localhost"
|
||||||
|
|
||||||
[ client_cert ]
|
[ client_cert ]
|
||||||
keyUsage = digitalSignature, keyEncipherment
|
keyUsage = digitalSignature, keyEncipherment
|
||||||
nsCertType = client
|
nsCertType = client
|
||||||
@@ -51,7 +55,7 @@ _END_
|
|||||||
|
|
||||||
generate_cert server "Server-only" "-extfile ./tls/openssl.cnf -extensions server_cert"
|
generate_cert server "Server-only" "-extfile ./tls/openssl.cnf -extensions server_cert"
|
||||||
generate_cert client "Client-only" "-extfile ./tls/openssl.cnf -extensions client_cert"
|
generate_cert client "Client-only" "-extfile ./tls/openssl.cnf -extensions client_cert"
|
||||||
generate_cert redis "Generic-cert"
|
generate_cert redis "localhost" "-extfile ./tls/openssl.cnf -extensions server_cert"
|
||||||
|
|
||||||
# List generated certs
|
# List generated certs
|
||||||
ls -la ./tls
|
ls -la ./tls
|
||||||
|
25
.github/workflows/test-redis.yml
vendored
25
.github/workflows/test-redis.yml
vendored
@@ -25,20 +25,35 @@ jobs:
|
|||||||
- name: Fetch Repository
|
- name: Fetch Repository
|
||||||
uses: actions/checkout@v4
|
uses: actions/checkout@v4
|
||||||
|
|
||||||
|
- name: Generate TLS certs
|
||||||
|
run: ./.github/scripts/gen-test-certs.sh
|
||||||
|
|
||||||
|
- name: Add Custom CA cert
|
||||||
|
run: sudo cp /home/runner/work/storage/storage/tls/ca.crt /usr/local/share/ca-certificates/custom.crt
|
||||||
|
|
||||||
|
- name: Trust Custom CA Cert
|
||||||
|
run: sudo update-ca-certificates
|
||||||
|
|
||||||
- name: Setup Redis
|
- name: Setup Redis
|
||||||
uses: shogo82148/actions-setup-redis@v1
|
uses: shogo82148/actions-setup-redis@v1
|
||||||
with:
|
with:
|
||||||
redis-version: ${{ matrix.redis }}
|
redis-version: ${{ matrix.redis }}
|
||||||
auto-start: 'false'
|
auto-start: 'false'
|
||||||
redis-port: '6379'
|
|
||||||
redis-tls-port: '6380'
|
|
||||||
|
|
||||||
- name: Run Redis
|
- name: Run Redis
|
||||||
run: |
|
run: |
|
||||||
redis-server --tls-port 6380 --port 6379 \
|
redis-server --tls-port 6380 --port 6379 \
|
||||||
--tls-cert-file ./redis/tests/tls/redis.crt \
|
--tls-cert-file /home/runner/work/storage/storage/tls/redis.crt \
|
||||||
--tls-key-file ./redis/tests/tls/redis.key \
|
--tls-key-file /home/runner/work/storage/storage/tls/redis.key \
|
||||||
--tls-ca-cert-file ./redis/tests/tls/ca.crt&
|
--tls-ca-cert-file /home/runner/work/storage/storage/tls/ca.crt &
|
||||||
|
|
||||||
|
- name: Run Redis instance with MTLS disabled
|
||||||
|
run: |
|
||||||
|
redis-server --tls-port 16380 --port 16379 \
|
||||||
|
--tls-cert-file /home/runner/work/storage/storage/tls/redis.crt \
|
||||||
|
--tls-key-file /home/runner/work/storage/storage/tls/redis.key \
|
||||||
|
--tls-ca-cert-file /home/runner/work/storage/storage/tls/ca.crt \
|
||||||
|
--tls-auth-clients no &
|
||||||
|
|
||||||
- name: Setup Redis Cluster
|
- name: Setup Redis Cluster
|
||||||
uses: vishnudxb/redis-cluster@1.0.8
|
uses: vishnudxb/redis-cluster@1.0.8
|
||||||
|
@@ -12,7 +12,8 @@ import (
|
|||||||
|
|
||||||
const (
|
const (
|
||||||
defaultScopeName = "default-store"
|
defaultScopeName = "default-store"
|
||||||
defaultTimeout = time.Duration(30) * time.Millisecond
|
defaultTimeout = time.Duration(30) * time.Second
|
||||||
|
defaultAddress = "localhost:1408"
|
||||||
)
|
)
|
||||||
|
|
||||||
// Storage represents an implementation of Coherence storage provider.
|
// Storage represents an implementation of Coherence storage provider.
|
||||||
@@ -42,30 +43,20 @@ type Config struct {
|
|||||||
|
|
||||||
// DefaultConfig defines default options.
|
// DefaultConfig defines default options.
|
||||||
var DefaultConfig = Config{
|
var DefaultConfig = Config{
|
||||||
Address: "localhost:1408",
|
Address: defaultAddress,
|
||||||
Timeout: time.Duration(30) * time.Millisecond,
|
Timeout: defaultTimeout,
|
||||||
ScopeName: defaultScopeName,
|
ScopeName: defaultScopeName,
|
||||||
Reset: false,
|
Reset: false,
|
||||||
}
|
}
|
||||||
|
|
||||||
// New returns a new [Storage] given a [coherence.Session].
|
// New returns a new [Storage] given a [Config].
|
||||||
func New(config ...Config) (*Storage, error) {
|
func New(config ...Config) (*Storage, error) {
|
||||||
var (
|
cfg := setupConfig(config...)
|
||||||
scopeName = defaultScopeName
|
|
||||||
cfg = DefaultConfig
|
|
||||||
)
|
|
||||||
|
|
||||||
if len(config) == 1 {
|
|
||||||
cfg = config[0]
|
|
||||||
}
|
|
||||||
options := make([]func(session *coh.SessionOptions), 0)
|
options := make([]func(session *coh.SessionOptions), 0)
|
||||||
|
|
||||||
// apply any config values
|
// apply any config values as Coherence options
|
||||||
if cfg.Address != "" {
|
options = append(options, coh.WithAddress(cfg.Address))
|
||||||
options = append(options, coh.WithAddress(cfg.Address))
|
|
||||||
} else {
|
|
||||||
cfg.Address = DefaultConfig.Address
|
|
||||||
}
|
|
||||||
|
|
||||||
if cfg.TLSConfig != nil {
|
if cfg.TLSConfig != nil {
|
||||||
options = append(options, coh.WithTLSConfig(cfg.TLSConfig))
|
options = append(options, coh.WithTLSConfig(cfg.TLSConfig))
|
||||||
@@ -73,13 +64,7 @@ func New(config ...Config) (*Storage, error) {
|
|||||||
options = append(options, coh.WithPlainText())
|
options = append(options, coh.WithPlainText())
|
||||||
}
|
}
|
||||||
|
|
||||||
if cfg.Timeout != defaultTimeout {
|
options = append(options, coh.WithRequestTimeout(cfg.Timeout))
|
||||||
options = append(options, coh.WithReadyTimeout(cfg.Timeout))
|
|
||||||
}
|
|
||||||
|
|
||||||
if cfg.ScopeName != defaultScopeName {
|
|
||||||
scopeName = cfg.ScopeName
|
|
||||||
}
|
|
||||||
|
|
||||||
// create the Coherence session
|
// create the Coherence session
|
||||||
session, err := coh.NewSession(context.Background(), options...)
|
session, err := coh.NewSession(context.Background(), options...)
|
||||||
@@ -87,7 +72,7 @@ func New(config ...Config) (*Storage, error) {
|
|||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
|
|
||||||
store, err := newCoherenceStorage(session, scopeName)
|
store, err := newCoherenceStorage(session, cfg.ScopeName)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return nil, err
|
return nil, err
|
||||||
}
|
}
|
||||||
@@ -100,6 +85,29 @@ func New(config ...Config) (*Storage, error) {
|
|||||||
return store, nil
|
return store, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// setupConfig sets the default config.
|
||||||
|
func setupConfig(config ...Config) Config {
|
||||||
|
// if nothing provided then use the default config values
|
||||||
|
if len(config) == 0 {
|
||||||
|
return DefaultConfig
|
||||||
|
}
|
||||||
|
|
||||||
|
cfg := config[0]
|
||||||
|
|
||||||
|
// Check for any invalid default values and overwrite them
|
||||||
|
if cfg.Address == "" {
|
||||||
|
cfg.Address = DefaultConfig.Address
|
||||||
|
}
|
||||||
|
if cfg.ScopeName == "" {
|
||||||
|
cfg.ScopeName = DefaultConfig.ScopeName
|
||||||
|
}
|
||||||
|
if cfg.Timeout == 0 {
|
||||||
|
cfg.Timeout = DefaultConfig.Timeout
|
||||||
|
}
|
||||||
|
|
||||||
|
return cfg
|
||||||
|
}
|
||||||
|
|
||||||
// newCoherenceStorage returns a new Coherence [Storage].
|
// newCoherenceStorage returns a new Coherence [Storage].
|
||||||
func newCoherenceStorage(session *coh.Session, cacheName string) (*Storage, error) {
|
func newCoherenceStorage(session *coh.Session, cacheName string) (*Storage, error) {
|
||||||
nc, err := coh.GetNamedCache[string, []byte](session, "fiber$"+cacheName)
|
nc, err := coh.GetNamedCache[string, []byte](session, "fiber$"+cacheName)
|
||||||
|
@@ -4,8 +4,8 @@ go 1.19
|
|||||||
|
|
||||||
require (
|
require (
|
||||||
github.com/aws/aws-sdk-go-v2 v1.21.0
|
github.com/aws/aws-sdk-go-v2 v1.21.0
|
||||||
github.com/aws/aws-sdk-go-v2/config v1.18.38
|
github.com/aws/aws-sdk-go-v2/config v1.18.39
|
||||||
github.com/aws/aws-sdk-go-v2/credentials v1.13.36
|
github.com/aws/aws-sdk-go-v2/credentials v1.13.37
|
||||||
github.com/aws/aws-sdk-go-v2/feature/dynamodb/attributevalue v1.10.39
|
github.com/aws/aws-sdk-go-v2/feature/dynamodb/attributevalue v1.10.39
|
||||||
github.com/aws/aws-sdk-go-v2/service/dynamodb v1.21.5
|
github.com/aws/aws-sdk-go-v2/service/dynamodb v1.21.5
|
||||||
github.com/stretchr/testify v1.8.4
|
github.com/stretchr/testify v1.8.4
|
||||||
@@ -21,7 +21,7 @@ require (
|
|||||||
github.com/aws/aws-sdk-go-v2/service/internal/endpoint-discovery v1.7.35 // indirect
|
github.com/aws/aws-sdk-go-v2/service/internal/endpoint-discovery v1.7.35 // indirect
|
||||||
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.35 // indirect
|
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.35 // indirect
|
||||||
github.com/aws/aws-sdk-go-v2/service/sso v1.13.6 // indirect
|
github.com/aws/aws-sdk-go-v2/service/sso v1.13.6 // indirect
|
||||||
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.15.5 // indirect
|
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.15.6 // indirect
|
||||||
github.com/aws/aws-sdk-go-v2/service/sts v1.21.5 // indirect
|
github.com/aws/aws-sdk-go-v2/service/sts v1.21.5 // indirect
|
||||||
github.com/aws/smithy-go v1.14.2 // indirect
|
github.com/aws/smithy-go v1.14.2 // indirect
|
||||||
github.com/davecgh/go-spew v1.1.1 // indirect
|
github.com/davecgh/go-spew v1.1.1 // indirect
|
||||||
|
@@ -1,9 +1,9 @@
|
|||||||
github.com/aws/aws-sdk-go-v2 v1.21.0 h1:gMT0IW+03wtYJhRqTVYn0wLzwdnK9sRMcxmtfGzRdJc=
|
github.com/aws/aws-sdk-go-v2 v1.21.0 h1:gMT0IW+03wtYJhRqTVYn0wLzwdnK9sRMcxmtfGzRdJc=
|
||||||
github.com/aws/aws-sdk-go-v2 v1.21.0/go.mod h1:/RfNgGmRxI+iFOB1OeJUyxiU+9s88k3pfHvDagGEp0M=
|
github.com/aws/aws-sdk-go-v2 v1.21.0/go.mod h1:/RfNgGmRxI+iFOB1OeJUyxiU+9s88k3pfHvDagGEp0M=
|
||||||
github.com/aws/aws-sdk-go-v2/config v1.18.38 h1:CByQCELMgm2tM1lAehx3XNg0R/pfeXsYzqn0Aq2chJQ=
|
github.com/aws/aws-sdk-go-v2/config v1.18.39 h1:oPVyh6fuu/u4OiW4qcuQyEtk7U7uuNBmHmJSLg1AJsQ=
|
||||||
github.com/aws/aws-sdk-go-v2/config v1.18.38/go.mod h1:vNm9Hf5VgG2fSUWhT3zFrqN/RosGcabFMYgiSoxKFU8=
|
github.com/aws/aws-sdk-go-v2/config v1.18.39/go.mod h1:+NH/ZigdPckFpgB1TRcRuWCB/Kbbvkxc/iNAKTq5RhE=
|
||||||
github.com/aws/aws-sdk-go-v2/credentials v1.13.36 h1:ps0cPswZjpsOk6sLwG6fdXTzrYjCplgPEyG3OUbbdqE=
|
github.com/aws/aws-sdk-go-v2/credentials v1.13.37 h1:BvEdm09+ZEh2XtN+PVHPcYwKY3wIeB6pw7vPRM4M9/U=
|
||||||
github.com/aws/aws-sdk-go-v2/credentials v1.13.36/go.mod h1:sY2phUzxbygoyDtTXhqi7GjGjCQ1S5a5Rj8u3ksBxCg=
|
github.com/aws/aws-sdk-go-v2/credentials v1.13.37/go.mod h1:ACLrdkd4CLZyXOghZ8IYumQbcooAcp2jo/s2xsFH8IM=
|
||||||
github.com/aws/aws-sdk-go-v2/feature/dynamodb/attributevalue v1.10.39 h1:DX/r3aNL7pIVn0K5a+ESL0Fw9ti7Rj05pblEiIJtPmQ=
|
github.com/aws/aws-sdk-go-v2/feature/dynamodb/attributevalue v1.10.39 h1:DX/r3aNL7pIVn0K5a+ESL0Fw9ti7Rj05pblEiIJtPmQ=
|
||||||
github.com/aws/aws-sdk-go-v2/feature/dynamodb/attributevalue v1.10.39/go.mod h1:oTk09orqXlwSKnKf+UQhy+4Ci7aCo9x8hn0ZvPCLrns=
|
github.com/aws/aws-sdk-go-v2/feature/dynamodb/attributevalue v1.10.39/go.mod h1:oTk09orqXlwSKnKf+UQhy+4Ci7aCo9x8hn0ZvPCLrns=
|
||||||
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.13.11 h1:uDZJF1hu0EVT/4bogChk8DyjSF6fof6uL/0Y26Ma7Fg=
|
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.13.11 h1:uDZJF1hu0EVT/4bogChk8DyjSF6fof6uL/0Y26Ma7Fg=
|
||||||
@@ -26,8 +26,8 @@ github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.35 h1:CdzPW9kKi
|
|||||||
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.35/go.mod h1:QGF2Rs33W5MaN9gYdEQOBBFPLwTZkEhRwI33f7KIG0o=
|
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.35/go.mod h1:QGF2Rs33W5MaN9gYdEQOBBFPLwTZkEhRwI33f7KIG0o=
|
||||||
github.com/aws/aws-sdk-go-v2/service/sso v1.13.6 h1:2PylFCfKCEDv6PeSN09pC/VUiRd10wi1VfHG5FrW0/g=
|
github.com/aws/aws-sdk-go-v2/service/sso v1.13.6 h1:2PylFCfKCEDv6PeSN09pC/VUiRd10wi1VfHG5FrW0/g=
|
||||||
github.com/aws/aws-sdk-go-v2/service/sso v1.13.6/go.mod h1:fIAwKQKBFu90pBxx07BFOMJLpRUGu8VOzLJakeY+0K4=
|
github.com/aws/aws-sdk-go-v2/service/sso v1.13.6/go.mod h1:fIAwKQKBFu90pBxx07BFOMJLpRUGu8VOzLJakeY+0K4=
|
||||||
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.15.5 h1:dnInJb4S0oy8aQuri1mV6ipLlnZPfnsDNB9BGO9PDNY=
|
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.15.6 h1:pSB560BbVj9ZlJZF4WYj5zsytWHWKxg+NgyGV4B2L58=
|
||||||
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.15.5/go.mod h1:yygr8ACQRY2PrEcy3xsUI357stq2AxnFM6DIsR9lij4=
|
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.15.6/go.mod h1:yygr8ACQRY2PrEcy3xsUI357stq2AxnFM6DIsR9lij4=
|
||||||
github.com/aws/aws-sdk-go-v2/service/sts v1.21.5 h1:CQBFElb0LS8RojMJlxRSo/HXipvTZW2S44Lt9Mk2aYQ=
|
github.com/aws/aws-sdk-go-v2/service/sts v1.21.5 h1:CQBFElb0LS8RojMJlxRSo/HXipvTZW2S44Lt9Mk2aYQ=
|
||||||
github.com/aws/aws-sdk-go-v2/service/sts v1.21.5/go.mod h1:VC7JDqsqiwXukYEDjoHh9U0fOJtNWh04FPQz4ct4GGU=
|
github.com/aws/aws-sdk-go-v2/service/sts v1.21.5/go.mod h1:VC7JDqsqiwXukYEDjoHh9U0fOJtNWh04FPQz4ct4GGU=
|
||||||
github.com/aws/smithy-go v1.14.2 h1:MJU9hqBGbvWZdApzpvoF2WAIJDbtjK2NDJSiJP7HblQ=
|
github.com/aws/smithy-go v1.14.2 h1:MJU9hqBGbvWZdApzpvoF2WAIJDbtjK2NDJSiJP7HblQ=
|
||||||
|
@@ -1,4 +1,15 @@
|
|||||||
# Minio
|
---
|
||||||
|
id: minio
|
||||||
|
title: Minio
|
||||||
|
---
|
||||||
|
|
||||||
|

|
||||||
|
[](https://gofiber.io/discord)
|
||||||
|

|
||||||
|

|
||||||
|

|
||||||
|
|
||||||
|
## Minio
|
||||||
|
|
||||||
A Minio storage driver using [minio/minio-go](https://github.com/minio/minio-go).
|
A Minio storage driver using [minio/minio-go](https://github.com/minio/minio-go).
|
||||||
|
|
||||||
@@ -50,8 +61,8 @@ store := minio.New(minio.Config{
|
|||||||
Bucket: "fiber-bucket",
|
Bucket: "fiber-bucket",
|
||||||
Endpoint: "localhost:9000",
|
Endpoint: "localhost:9000",
|
||||||
Credentials: Credentials{
|
Credentials: Credentials{
|
||||||
accessKeyID: "minio-user",
|
AccessKeyID: "minio-user",
|
||||||
secretAccessKey: "minio-password",
|
SecretAccessKey: "minio-password",
|
||||||
},
|
},
|
||||||
})
|
})
|
||||||
```
|
```
|
||||||
|
@@ -33,6 +33,11 @@ func New(config ...Config) *Storage {
|
|||||||
cfg.Password = options.Password
|
cfg.Password = options.Password
|
||||||
cfg.Database = options.DB
|
cfg.Database = options.DB
|
||||||
cfg.Addrs = []string{options.Addr}
|
cfg.Addrs = []string{options.Addr}
|
||||||
|
|
||||||
|
// If cfg.TLSConfig is not provided, and options returns one, use it.
|
||||||
|
if cfg.TLSConfig == nil && options.TLSConfig != nil {
|
||||||
|
cfg.TLSConfig = options.TLSConfig
|
||||||
|
}
|
||||||
} else if len(cfg.Addrs) == 0 {
|
} else if len(cfg.Addrs) == 0 {
|
||||||
// Fallback to Host and Port values if Addrs is empty
|
// Fallback to Host and Port values if Addrs is empty
|
||||||
cfg.Addrs = []string{fmt.Sprintf("%s:%d", cfg.Host, cfg.Port)}
|
cfg.Addrs = []string{fmt.Sprintf("%s:%d", cfg.Host, cfg.Port)}
|
||||||
|
@@ -146,7 +146,7 @@ func Test_Redis_Initalize_WithURL(t *testing.T) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func Test_Redis_Initalize_WithURL_TLS(t *testing.T) {
|
func Test_Redis_Initalize_WithURL_TLS(t *testing.T) {
|
||||||
cer, err := tls.LoadX509KeyPair("./tests/tls/client.crt", "./tests/tls/client.key")
|
cer, err := tls.LoadX509KeyPair("/home/runner/work/storage/storage/tls/client.crt", "/home/runner/work/storage/storage/tls/client.key")
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Println(err)
|
log.Println(err)
|
||||||
return
|
return
|
||||||
@@ -188,6 +188,72 @@ func Test_Redis_Initalize_WithURL_TLS(t *testing.T) {
|
|||||||
require.Nil(t, testStoreUrl.Close())
|
require.Nil(t, testStoreUrl.Close())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func Test_Redis_Initalize_WithURL_TLS_Verify(t *testing.T) {
|
||||||
|
cer, err := tls.LoadX509KeyPair("/home/runner/work/storage/storage/tls/client.crt", "/home/runner/work/storage/storage/tls/client.key")
|
||||||
|
if err != nil {
|
||||||
|
log.Println(err)
|
||||||
|
return
|
||||||
|
}
|
||||||
|
tlsCfg := &tls.Config{
|
||||||
|
MinVersion: tls.VersionTLS12,
|
||||||
|
CurvePreferences: []tls.CurveID{tls.CurveP521, tls.CurveP384, tls.CurveP256},
|
||||||
|
PreferServerCipherSuites: true,
|
||||||
|
InsecureSkipVerify: false,
|
||||||
|
Certificates: []tls.Certificate{cer},
|
||||||
|
CipherSuites: []uint16{
|
||||||
|
tls.TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384,
|
||||||
|
tls.TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA,
|
||||||
|
tls.TLS_RSA_WITH_AES_256_GCM_SHA384,
|
||||||
|
tls.TLS_RSA_WITH_AES_256_CBC_SHA,
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
testStoreUrl := New(Config{
|
||||||
|
URL: "redis://localhost:6380",
|
||||||
|
TLSConfig: tlsCfg,
|
||||||
|
})
|
||||||
|
|
||||||
|
var (
|
||||||
|
key = "clark"
|
||||||
|
val = []byte("kent")
|
||||||
|
)
|
||||||
|
|
||||||
|
err = testStoreUrl.Set(key, val, 0)
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
result, err := testStoreUrl.Get(key)
|
||||||
|
require.NoError(t, err)
|
||||||
|
require.Equal(t, val, result)
|
||||||
|
|
||||||
|
err = testStoreUrl.Delete(key)
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
require.Nil(t, testStoreUrl.Close())
|
||||||
|
}
|
||||||
|
|
||||||
|
func Test_Redis_Initalize_With_Secure_URL(t *testing.T) {
|
||||||
|
testStoreUrl := New(Config{
|
||||||
|
URL: "rediss://localhost:16380",
|
||||||
|
})
|
||||||
|
|
||||||
|
var (
|
||||||
|
key = "clark"
|
||||||
|
val = []byte("kent")
|
||||||
|
)
|
||||||
|
|
||||||
|
err := testStoreUrl.Set(key, val, 0)
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
result, err := testStoreUrl.Get(key)
|
||||||
|
require.NoError(t, err)
|
||||||
|
require.Equal(t, val, result)
|
||||||
|
|
||||||
|
err = testStoreUrl.Delete(key)
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
require.Nil(t, testStoreUrl.Close())
|
||||||
|
}
|
||||||
|
|
||||||
func Test_Redis_Universal_Addrs(t *testing.T) {
|
func Test_Redis_Universal_Addrs(t *testing.T) {
|
||||||
// This should failover and create a Single Node connection.
|
// This should failover and create a Single Node connection.
|
||||||
testStoreUniversal := New(Config{
|
testStoreUniversal := New(Config{
|
||||||
|
@@ -1,57 +0,0 @@
|
|||||||
#!/bin/bash
|
|
||||||
|
|
||||||
# Generate some test certificates which are used by the regression test suite:
|
|
||||||
#
|
|
||||||
# ./tls/ca.{crt,key} Self signed CA certificate.
|
|
||||||
# ./tls/redis.{crt,key} A certificate with no key usage/policy restrictions.
|
|
||||||
# ./tls/client.{crt,key} A certificate restricted for SSL client usage.
|
|
||||||
# ./tls/server.{crt,key} A certificate restricted for SSL server usage.
|
|
||||||
# ./tls/redis.dh DH Params file.
|
|
||||||
|
|
||||||
generate_cert() {
|
|
||||||
local name=$1
|
|
||||||
local cn="$2"
|
|
||||||
local opts="$3"
|
|
||||||
|
|
||||||
local keyfile=./tls/${name}.key
|
|
||||||
local certfile=./tls/${name}.crt
|
|
||||||
|
|
||||||
[ -f $keyfile ] || openssl genrsa -out $keyfile 2048
|
|
||||||
openssl req \
|
|
||||||
-new -sha256 \
|
|
||||||
-subj "/O=Redis Test/CN=$cn" \
|
|
||||||
-key $keyfile | \
|
|
||||||
openssl x509 \
|
|
||||||
-req -sha256 \
|
|
||||||
-CA ./tls/ca.crt \
|
|
||||||
-CAkey ./tls/ca.key \
|
|
||||||
-CAserial ./tls/ca.txt \
|
|
||||||
-CAcreateserial \
|
|
||||||
-days 365 \
|
|
||||||
$opts \
|
|
||||||
-out $certfile
|
|
||||||
}
|
|
||||||
|
|
||||||
mkdir -p ./tls
|
|
||||||
[ -f ./tls/ca.key ] || openssl genrsa -out ./tls/ca.key 4096
|
|
||||||
openssl req \
|
|
||||||
-x509 -new -nodes -sha256 \
|
|
||||||
-key ./tls/ca.key \
|
|
||||||
-days 3650 \
|
|
||||||
-subj '/O=Redis Test/CN=Certificate Authority' \
|
|
||||||
-out ./tls/ca.crt
|
|
||||||
|
|
||||||
cat > ./tls/openssl.cnf <<_END_
|
|
||||||
[ server_cert ]
|
|
||||||
keyUsage = digitalSignature, keyEncipherment
|
|
||||||
nsCertType = server
|
|
||||||
[ client_cert ]
|
|
||||||
keyUsage = digitalSignature, keyEncipherment
|
|
||||||
nsCertType = client
|
|
||||||
_END_
|
|
||||||
|
|
||||||
generate_cert server "Server-only" "-extfile ./tls/openssl.cnf -extensions server_cert"
|
|
||||||
generate_cert client "Client-only" "-extfile ./tls/openssl.cnf -extensions client_cert"
|
|
||||||
generate_cert redis "Generic-cert"
|
|
||||||
|
|
||||||
[ -f ./tls/redis.dh ] || openssl dhparam -out ./tls/redis.dh 2048
|
|
@@ -1,29 +0,0 @@
|
|||||||
-----BEGIN CERTIFICATE-----
|
|
||||||
MIIE5jCCAs4CCQCw1ymcsil7MTANBgkqhkiG9w0BAQsFADA1MRMwEQYDVQQKDApS
|
|
||||||
ZWRpcyBUZXN0MR4wHAYDVQQDDBVDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcNMjIx
|
|
||||||
MTE0MDgyNTE0WhcNMzIxMTExMDgyNTE0WjA1MRMwEQYDVQQKDApSZWRpcyBUZXN0
|
|
||||||
MR4wHAYDVQQDDBVDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggIiMA0GCSqGSIb3DQEB
|
|
||||||
AQUAA4ICDwAwggIKAoICAQDnZXRXrYURmTc/559vMe7CZnwtKul2ZMOtS7UDPCcw
|
|
||||||
G3I1KHCxFkAxLNDhLtIENWId90Lc1mAIKtULy+RX2ORfOhYZ+JDK3sY25+53dgFq
|
|
||||||
vdPdtSpiiLklSh5XXdLcNq5sg8Zs1W514otDrfooYWqUp7BU4vZ0Cb/MWP/WEynD
|
|
||||||
ne3Aj1lpsEqV4+ydYhoki91tY9VS9y48VOZ+VC/+aCcbkm4G8FSczLZrglmnDq0v
|
|
||||||
d/ZrQ6dtALvPzKXdPA0HuqacT7VZ09d9tVOBj8xRkq5YEgUNHStkzZiRHzFXtRx5
|
|
||||||
+mH/WkkzbA1C7eUeRFxIxp+C1KZB08cg9CgdrJYs/osFttesSncOIdDieauaqkTU
|
|
||||||
wlcEY//sv/eiOv4XCIvuG+39r0ITQ4m8Amb28v0uaz2s1e8UVpk1mLuUVcpspmAf
|
|
||||||
q0UUyb3aKjkluBn5rZuHxZLP14FueojFTLIXW6sNKYGqHqh4TicogmqCQAGhd9wo
|
|
||||||
Wis21+xeOI9FgojASxugN+tY/64nwYQfCWsv8AuZegjyQ+AodGrtIHEbrAdgeYOj
|
|
||||||
heEYDePaKMau/0vc14vlOs5EssXf49QYhciRqESc+0O85rHemgqhb4Qz31V3AGf1
|
|
||||||
NP0wvqA97AmBYRLZSNc4ExvmQponOIVJY+idWiqJuRZSOeScEx0sx22MF1Nhwaw+
|
|
||||||
3QIDAQABMA0GCSqGSIb3DQEBCwUAA4ICAQDGSfsv4PsVkApOy0IYgO/ejJMqcbRF
|
|
||||||
Qv+PWcNG43qRuF0Fyg+6Gc+Ph8W3qNoh3lGm16WOdhMrMnnV3GKpIbl1z1Dr6Jtl
|
|
||||||
BRAOW+rPN8QueB7Fb2hT7QIkTDNAhoj+ks26KvzBOkQa9IrXUQZRigystOl3k1OB
|
|
||||||
BIL7c6pF9gMaskBlM5g70i+R7bb+MF1ivhB/G1QGYx97QJFdmDIr1NkcMFo/PsSN
|
|
||||||
pcm/f8i0Vh+DfM9jnywLESptyKJCO5RnMW67ep7t/IzfnNfHLZ0avf91nEP6PRtd
|
|
||||||
3ZDXcHX1rT+T9RQNcxws92x8gOvIxrJN4asLZj8A5T6tTGlhbaR77j98NH/e8m+1
|
|
||||||
MIET49DsIpIWWMW7M0CATUejHtddpFV/fXfhMXjU2/nWfzhCAXpi6BN2iE7Qihvc
|
|
||||||
RmjFrrSdqkPEuTDVFN/rdlWwz6m1/cqYBGlPEFEHkN+gEyhBf5Qa1dc1QUYDBYzW
|
|
||||||
rSR/NdH4wo21MWvJDLMb8tzp4LJJ3deW1o84UeiymjHStzJARVEX8w1/qjTohVbm
|
|
||||||
PWKPe98137BQWYQ4QUhRDeZc1h6OcWdVsNg0wwNtZ9hqNGo7n7+YzyoKFLSYm6So
|
|
||||||
D+93y5AoOZlCgtUfzUPlumMXCYcvWP0yifvnNksK7eknlen9tRuhP5vUYC+DTfrP
|
|
||||||
YpIOMlHgRIe0YA==
|
|
||||||
-----END CERTIFICATE-----
|
|
@@ -1,51 +0,0 @@
|
|||||||
-----BEGIN RSA PRIVATE KEY-----
|
|
||||||
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
|
|
||||||
-----END RSA PRIVATE KEY-----
|
|
@@ -1 +0,0 @@
|
|||||||
F93DEACFF8ACD907
|
|
@@ -1,24 +0,0 @@
|
|||||||
-----BEGIN CERTIFICATE-----
|
|
||||||
MIIEBTCCAe2gAwIBAgIJAPk96s/4rNkGMA0GCSqGSIb3DQEBCwUAMDUxEzARBgNV
|
|
||||||
BAoMClJlZGlzIFRlc3QxHjAcBgNVBAMMFUNlcnRpZmljYXRlIEF1dGhvcml0eTAe
|
|
||||||
Fw0yMjExMTQwODI1MTRaFw0yMzExMTQwODI1MTRaMCsxEzARBgNVBAoMClJlZGlz
|
|
||||||
IFRlc3QxFDASBgNVBAMMC0NsaWVudC1vbmx5MIIBIjANBgkqhkiG9w0BAQEFAAOC
|
|
||||||
AQ8AMIIBCgKCAQEAtKcK6sWYkbgmWKV03WzmLbicEr9gMZVsoyxgNV52ciFnPQ72
|
|
||||||
2B0PEafTO4CFdzTj3titqqOtcQVVqo6uCZroBfwCYzEgozBEPvECcY/ldw1uiN9c
|
|
||||||
EyCKTAEGFqnSZwJ4UfC/JDnsNRjflLrAZ5xsQV56+yreYurY8WzCmdjpxkHQ0i0s
|
|
||||||
BBG0wdd/d4G8EYSHjOhtoqckUCeHU3Z8+WOn3LeIjK2XaAZTJHC+a9Pjj376degV
|
|
||||||
bgEQufwrTiyOimwoMVvu2biMEyPo6KXJeofaPjAMeS2uD89czV2qjPPoLrb+x1mZ
|
|
||||||
wVWK+PIiQE5cgBGhjNTEToj0xI8ZhGiqvoLTdQIDAQABoyIwIDALBgNVHQ8EBAMC
|
|
||||||
BaAwEQYJYIZIAYb4QgEBBAQDAgeAMA0GCSqGSIb3DQEBCwUAA4ICAQCSTgkiaEou
|
|
||||||
OS9K4Cq7sIPvZHmZlniti4TeMq1lgVzTjRRjSA2mP0183LrWCRouKor5ce/Zozbp
|
|
||||||
0/GNaA+Iru5Ig22dtC8M2UiQGvIRCth6oJxmM/T9VeK54pIQ3XDpyl2t3xVqh74u
|
|
||||||
1g5BvZ51X17WnuVR0Ipax1EPARkXKijvhZ1R71yd8fClXeXE4SsepUXdl80mkCKk
|
|
||||||
wFqdhArQYrNcG4lI/y4VxGbPFQ28a9L8Ru44pP8+7lHCENN4T8P7CquRpHaEIyKH
|
|
||||||
v10TLZM3V5e1cZmDmmvWmdyntQR1FIHLUNWbinLkUwhYvFQPlGqXyywUDF0Jn8x8
|
|
||||||
KyUfvUXyoi+vbKQPVHY90QPyTc6hpHfSLU+jkXFmrWn1f1h7pHRBIcCFX77CTZyY
|
|
||||||
8Qpse0xsyDb1d07DB+RhTkw9nZeNBjj9/YPWgM/Opl5C6g0w5vMQYvIkgrGZ4Xsy
|
|
||||||
8D16nIZtoP9omGzK7La7Yov69gq+/5j4IkMda4FukDs9y71/t55mlYtR/J2rQiEo
|
|
||||||
YIFdXng0CgqMZg3i+qPU9c9ptsm1y8R6RCZHyrrV4P4Z79TbUv0bHU0pc56lXFZw
|
|
||||||
M4HwFYGvc5cvSbTeqmpOKftlE743+8ZZuL1Ll/tscVehNiduHpogkPfN4Z2UNM8h
|
|
||||||
3cRF3zsnD1QdBbJuvIgaO7HsOuLiZprlSw==
|
|
||||||
-----END CERTIFICATE-----
|
|
@@ -1,27 +0,0 @@
|
|||||||
-----BEGIN RSA PRIVATE KEY-----
|
|
||||||
MIIEpQIBAAKCAQEAtKcK6sWYkbgmWKV03WzmLbicEr9gMZVsoyxgNV52ciFnPQ72
|
|
||||||
2B0PEafTO4CFdzTj3titqqOtcQVVqo6uCZroBfwCYzEgozBEPvECcY/ldw1uiN9c
|
|
||||||
EyCKTAEGFqnSZwJ4UfC/JDnsNRjflLrAZ5xsQV56+yreYurY8WzCmdjpxkHQ0i0s
|
|
||||||
BBG0wdd/d4G8EYSHjOhtoqckUCeHU3Z8+WOn3LeIjK2XaAZTJHC+a9Pjj376degV
|
|
||||||
bgEQufwrTiyOimwoMVvu2biMEyPo6KXJeofaPjAMeS2uD89czV2qjPPoLrb+x1mZ
|
|
||||||
wVWK+PIiQE5cgBGhjNTEToj0xI8ZhGiqvoLTdQIDAQABAoIBAQCeCzGi2QG0Ik3x
|
|
||||||
6baG7Pmm8EYipKjMWDR1wKHeruiiypReN5Q+15VSVeeXu8WH146vbBLrIUzgftFG
|
|
||||||
aJLbtljcu29/RgCOo/BgvErt/Py8HdUhC3+rACHdglvIQgPfuKp4zUz7rWz3uu4H
|
|
||||||
WSZwvsl6muSujf+GvHzVIdhR7hH/LianictHN6OBvuIk6+88LYxOvPzvOuzTs6o8
|
|
||||||
D4CdNwaWUtOm4/gV2/UXKBosbdpIoVbYAAOZPnu4gLAJV9ICnLDKMtZ+buZNEBdo
|
|
||||||
Pt3vtzN9LqmaiC1BfaH3Uqr2nhPW86VwLIr61uFGRG5Y1GS2XXOq+dgxW8BmXWMP
|
|
||||||
42J2GUlBAoGBAN+mPYJUckGFlToREOefwHsKJqPP+1aK4LjibqXZSnTtRvAur/kD
|
|
||||||
Bw/b8xGSHx/pisQU9wwtbaaVy0tbW6fMBBweOiZMJdQ3XRaH87GfPDyEmqRnUWAF
|
|
||||||
/NiyshHDmg6HK6Dm1hT4Ndd35PO1xJDsgGyqCrsMRwfAON0pfSVxdWyFAoGBAM7I
|
|
||||||
n7tBdWeTWeVVFuZdyTVOWsYO14ZRsHULd30gO+bXaXFAK7X8/5tawZ4PXJq4VD0f
|
|
||||||
rpOcsnNtuROpbh3MshsplEDuq+JQ9DlhBTiz8wVcKp9z3RCY4GQjuPNIFuVMjN6i
|
|
||||||
dsL0U+IKwMPpYnlgimW3sNygO3q/nNxrUobBITYxAoGBAKYkC7t+2iXcg1/Qf7th
|
|
||||||
jI6amtvETFUc9BXEeCgSRGKaRcF1HVqhqiRY47fg0ehWCLTjUicktDk1PAFuC6ea
|
|
||||||
Qk9VESOUG+ILgsaTFjCUNx5J78tDyUrJB+0+ylOx+Abk2T89XDnVrcG0GkwFctGq
|
|
||||||
LzkKFNChLT8Px+5bvNEM+Qs1AoGANcSjDBzkO09sU56BetsuI4dBQTjAv/Njz7tw
|
|
||||||
kX+dM9QVXdZSx1qG2E2MBN53tN9zQAWJ7mYTXMJOGpe2w1bjhP6VxyCIXyuvpW/d
|
|
||||||
3LWl3mHtz1JgTB2EU2WahN/c3DjAdG+IM/82BJPJNefsrCT3N6XA/k1Hyg4i6omZ
|
|
||||||
huKXETECgYEAqr6GHzgFy3Y4OIpobwuAKvrY2/s7bo68pF6QTqvxalkJkjkp5HyP
|
|
||||||
FobWC0GxrPfwjkRbQTRANA0vVwFP/MnCU1ag3UeoYamOmG2GnTiiYWQehovAhOyi
|
|
||||||
TK7QXf+j5o4nrRt/TRfyeZH9XevX53HIGuFRtFZbm+WMn4bPjQj7ypg=
|
|
||||||
-----END RSA PRIVATE KEY-----
|
|
@@ -1,6 +0,0 @@
|
|||||||
[ server_cert ]
|
|
||||||
keyUsage = digitalSignature, keyEncipherment
|
|
||||||
nsCertType = server
|
|
||||||
[ client_cert ]
|
|
||||||
keyUsage = digitalSignature, keyEncipherment
|
|
||||||
nsCertType = client
|
|
@@ -1,23 +0,0 @@
|
|||||||
-----BEGIN CERTIFICATE-----
|
|
||||||
MIID3TCCAcUCCQD5PerP+KzZBzANBgkqhkiG9w0BAQsFADA1MRMwEQYDVQQKDApS
|
|
||||||
ZWRpcyBUZXN0MR4wHAYDVQQDDBVDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcNMjIx
|
|
||||||
MTE0MDgyNTE0WhcNMjMxMTE0MDgyNTE0WjAsMRMwEQYDVQQKDApSZWRpcyBUZXN0
|
|
||||||
MRUwEwYDVQQDDAxHZW5lcmljLWNlcnQwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw
|
|
||||||
ggEKAoIBAQC/lqyvZ+JecRTRWFEoyfIYnxz+1HiZwFGL7BhSrPf7Y6CSDwV+A7tB
|
|
||||||
Pvu7gSQx69cfMIeS78n/pNV4P0dCgiEiOYZlqa8z1H3MVG6ZuM9uIfeubAeOvG5M
|
|
||||||
Emk9UJ3KU01XFFLCaQ9u+WPJNUQyB+hUDE92k3PQ+sh3getcgYDQm6ktt1lZOgUK
|
|
||||||
JwXPNg6E1HlLDMrf4kqsCLMHCAuI7pT0RjMrK6mNEvs7hFf487zj857Jd1XJ069l
|
|
||||||
Fhqt/LOW7jOOCEXiGtfWEJ8pApsIsc1Pdgzxh+WS1HH0qRELMv0RUJXnhw/uiE1A
|
|
||||||
TwLVUD91YwboSLIYf/E3m7zREaXwf14RAgMBAAEwDQYJKoZIhvcNAQELBQADggIB
|
|
||||||
ADZgwvnwZf+4FuUrMs7sN1CcMyZ9IIXH16Z4/nn9LjzheqvtzoEEP7fAkYjL2z48
|
|
||||||
S1iHMYfCGNHI+wijtbt4BrbvR1g0nqmGBfiJ0xHyFpU03goh4l/JiqSK9kf1SPAF
|
|
||||||
763h564PGaA7sFFKf+VR1GpvEGD6vfjm5vIs2Hn0SRF5/6dwUNZOWaCkfdBB5ddb
|
|
||||||
1mSI8g5cEEv9+7mlIEXkdRiUJHFnuIUbH9W3ivB+XWGp9/o3y1+eK68+BkcRWBSr
|
|
||||||
PkCL7V3DVj0ENV2QqovUcyu1Z1kakNubyBxs/0t84DZ2NfYSyAOr2rBn8LW8Fbfc
|
|
||||||
X2E79C0RiuT6NDjMMFPchYVXeT7Fuh/ExwkE8DYCJWNZCY+pDdas1fqSt8loPZDG
|
|
||||||
M0LNCrVdI0uR5sJnau8ihKkn4UIkCP1XkXNUL1lKR86msZibIH/SqTWAUWh2SSuG
|
|
||||||
UqMORqRksC5pobJkQDra9b2ViNCcjp/S5iq5lokxnuGu3SxQObCnei0ceBKppWy5
|
|
||||||
orkRwuSwMrDUX2bVcR4Zcjdg7kz7CPcqObZTEcadRaxVuWOIi/Jn1zYqOGEOavyT
|
|
||||||
VvEvo9DT486aLGtF9rA6o/+MydRXd1qBRgfjrV7aaBZkRm3F2ofdpLrzXnDwarei
|
|
||||||
SnXRnd4rimpcL/s09DEevDkyt2aezgS/ngP4OWM1zJOf
|
|
||||||
-----END CERTIFICATE-----
|
|
@@ -1,8 +0,0 @@
|
|||||||
-----BEGIN DH PARAMETERS-----
|
|
||||||
MIIBCAKCAQEA1nYlp0dgMjvcReATfJwuS1lAtpvaTl8/Fu1/CuQ4rCoB9fgqvlTv
|
|
||||||
jgnHRAW42FD9NwOQibol/mDAmThd8Srq/teu84w9j4CGsd3+qO+/HP16GHLACVkP
|
|
||||||
LmImh30irqfTC2JkuiRccMYmt4N93Ba8FgC+GLcEjEB0JKW/JBZ71qO8fvwvvI7h
|
|
||||||
QU4YddezMsPG3L6TDYX0cFCSrcBNKa8mGgGLtppT30UWvAH0QAlsd6jiIR1cto+T
|
|
||||||
yDAv5WYIkBlsGcH70X1EEglHz48USV0Xu5lADkiazpXvKTl3XkD6gVkrCcxHF1iE
|
|
||||||
7VEbxKaGx5HsdRw7EV6Fdxp98mGRWjBlKwIBAg==
|
|
||||||
-----END DH PARAMETERS-----
|
|
@@ -1,27 +0,0 @@
|
|||||||
-----BEGIN RSA PRIVATE KEY-----
|
|
||||||
MIIEpAIBAAKCAQEAv5asr2fiXnEU0VhRKMnyGJ8c/tR4mcBRi+wYUqz3+2Ogkg8F
|
|
||||||
fgO7QT77u4EkMevXHzCHku/J/6TVeD9HQoIhIjmGZamvM9R9zFRumbjPbiH3rmwH
|
|
||||||
jrxuTBJpPVCdylNNVxRSwmkPbvljyTVEMgfoVAxPdpNz0PrId4HrXIGA0JupLbdZ
|
|
||||||
WToFCicFzzYOhNR5SwzK3+JKrAizBwgLiO6U9EYzKyupjRL7O4RX+PO84/OeyXdV
|
|
||||||
ydOvZRYarfyzlu4zjghF4hrX1hCfKQKbCLHNT3YM8YflktRx9KkRCzL9EVCV54cP
|
|
||||||
7ohNQE8C1VA/dWMG6EiyGH/xN5u80RGl8H9eEQIDAQABAoIBAQCsjHdaQqWNiSrG
|
|
||||||
oFP3+Gkh46uplpJHZv4KlsgRLdbpggDLitvXcmTjjmYJqXV/wHgujvaLT4sNwta/
|
|
||||||
Rb5YF/rfaA+y3+/7LhVeQWya5edruQvo+0KTOwHbYXmGz2RNJFkzZAplLVnJCLLm
|
|
||||||
NCMHLDgB+lRW5tYYEMUbXNcsqTXqqbSj9YHJ31z4y4GMXvw/ZIqikixgJzvIKe6P
|
|
||||||
zXBkK+J9otHWO3Z3CMFoRmhI0fp/wIiOlp9Xk2QzhUIIo5mzpRP2FnVBQH6qA1Qx
|
|
||||||
HcHy/kHCNOtkebaM50tCHwSZi+w6WjKRfbTpQHCaUIjvTfVEup088iI8b+gt48Zz
|
|
||||||
noX1efhBAoGBAPwCiX71kICymFBMyfE+0KZqg95w5oOygb/UvqmfAAHL8wwAxFRB
|
|
||||||
zTG6GQE67P/nROxUm3mr3JcTgszGcNBfeB9d3J59AFIoyHCOk8fXUS4I1JOKdIdg
|
|
||||||
XIwtCcIrCkCcLrzUVZlT8mJRH0F4U/LaB0NHiRZe25AWSVUdpbA/SDlHAoGBAMKf
|
|
||||||
O9iWdGZT6YC8FnFjS+HV7mJlUmaEgGXLqwVnEXOuGKell6WS5GN9XEcP8BnUqaoi
|
|
||||||
ARCWfku18x2LgOm1WZf9voPUvGwYAOuvzFtX9d8MYQQnI+fZX7ZpRO0Pako0kQhr
|
|
||||||
4SUadVQXXJIbB6kHr3JVP7dICEn2LOmlhWLnRlnnAoGBAOzxqbuAQaxvvzwI5vp3
|
|
||||||
mBBQJ8qWlnYO+WWXLukmwQfvbYbEldOuxrJRij8Y20rEdI5MAp7EkzRMuPe2QM36
|
|
||||||
ZWQAiXVOjGWzSLpjo9kKvp4s2UobrPK4DGwT0JAKjaov7tXGQvFV95ivM1cIPs4g
|
|
||||||
ZyG/+cnZyFDSU4K+zFFJPqvzAoGAaaa5fT1H2RjqZJk2cb1evy08aKvqTH7XmOs0
|
|
||||||
Xw1xmuPCvJeXOCoC08OE6YrMY6lfpV0qSM/5pa4TWVGW3Mg259y2pKhC1Uc+kLNx
|
|
||||||
c5DPh5MXw4Jf6ofFfqes5Cf/ImNg7DpsEZFIair4dNQ5l1f1tVJz8VIoNcZu4TOa
|
|
||||||
snMsbLcCgYALyGUUdgCDZErB32O2I6o6vLQh6Lc0YqbjrGGkvuygOEUiLa5Wtjqe
|
|
||||||
AHyb9aT39jSCFEaTMKPma3T555+Lkk1Io2jYRVenoFS+O1nlRQKuIbIyuejA/SFm
|
|
||||||
z8rZ8EMT4g485CZJ3VjkoVXNXl/L61F1I9vK31Il88qgvm4y2JlYyg==
|
|
||||||
-----END RSA PRIVATE KEY-----
|
|
@@ -1,24 +0,0 @@
|
|||||||
-----BEGIN CERTIFICATE-----
|
|
||||||
MIIEBTCCAe2gAwIBAgIJAPk96s/4rNkFMA0GCSqGSIb3DQEBCwUAMDUxEzARBgNV
|
|
||||||
BAoMClJlZGlzIFRlc3QxHjAcBgNVBAMMFUNlcnRpZmljYXRlIEF1dGhvcml0eTAe
|
|
||||||
Fw0yMjExMTQwODI1MTRaFw0yMzExMTQwODI1MTRaMCsxEzARBgNVBAoMClJlZGlz
|
|
||||||
IFRlc3QxFDASBgNVBAMMC1NlcnZlci1vbmx5MIIBIjANBgkqhkiG9w0BAQEFAAOC
|
|
||||||
AQ8AMIIBCgKCAQEApvPQ66+fMPnJMf8BkGMq35EAT3FJIECqd3K/DNS2zox53gSj
|
|
||||||
P9cPuaW+JBlMUXTpGhgNKSLD8TMwJcA406A/pJScLNrdfoI9RvlKblwWWxcr2QBS
|
|
||||||
gFvEcnAYByVQb7S9gEOZev5CHGPw9Bav4jYZ+nTc+ERDuMC6HaqrjbLk1UbkuvAV
|
|
||||||
cWipYygtVFeeWx1TdHmez7n+kXcKNVojp1BbNJj5162zYXD7CnWrepA0r8b3ETEs
|
|
||||||
jTFRmJd6UgjZ/u+apf+DlIQ5UZOWPUs1okzmCjHAL0hp55Mj6lRW7F+ZEX8uC/pG
|
|
||||||
jOz/Qi2AIztZp+tYSQmyXlsEODft88D6StWKLwIDAQABoyIwIDALBgNVHQ8EBAMC
|
|
||||||
BaAwEQYJYIZIAYb4QgEBBAQDAgZAMA0GCSqGSIb3DQEBCwUAA4ICAQCEiTikIbaQ
|
|
||||||
4reQTD0pYlofKZgczg2BdnkvxVXBp/i/qNQgvIuedKFsAHvNTOtEm4zc5cxspFvW
|
|
||||||
bEZFMObHYTmRKVJzKawCQOp7uV3+StzqpV46uERn/HVH5PhToapH0ZA/vXp9dB8U
|
|
||||||
rCX9FQ9Wp/NeH1fzpToGuXgUUCo3jUKpkwJhxc0OH220/l6xmbN23ivY5UTt2z9v
|
|
||||||
x6S0gtkCD7VH7x5xxGu2T2HsJGbTefV/dknYcAYvZa5hy2wg4PyPlGSYD/UEZzVs
|
|
||||||
hJQDg3QTXvqFjdc8ZlPBoG1X028T28tiDgUuTwhH2trvY9qjk9VAVax9Wi3mkmYj
|
|
||||||
XfuSzgE/WexXrCljYAaPndUOwrd47XejlilcFCg5Otq5oPsWvFB+aSPyHHQJLG9B
|
|
||||||
ZHa1hFP2aV/amfMQxAj9dv7StrpdWHXTk1dvryQqyt3oZl87fUDPsBrmjOgdieFn
|
|
||||||
aGcx5NzCOQG6X6GwF15pdMaA4h51kZuZqM5hkpJOfYZb19eQ0O3YzdsN92Wue4iW
|
|
||||||
URiFFWbdZWeO5lykmwBDqNFP/4XIrgczEq62/Uzyt62dfKL7f93BfAiT2qtdtKqk
|
|
||||||
mHoya5ng+uav2TAGbHQgrNQYBJm9sB5MFwRYUWnrvWlig2whOzT/PGNohbc1JKkC
|
|
||||||
KSW2kUmwl+vdLoKe59o8TMfu/gn3BN+A/g==
|
|
||||||
-----END CERTIFICATE-----
|
|
@@ -1,27 +0,0 @@
|
|||||||
-----BEGIN RSA PRIVATE KEY-----
|
|
||||||
MIIEogIBAAKCAQEApvPQ66+fMPnJMf8BkGMq35EAT3FJIECqd3K/DNS2zox53gSj
|
|
||||||
P9cPuaW+JBlMUXTpGhgNKSLD8TMwJcA406A/pJScLNrdfoI9RvlKblwWWxcr2QBS
|
|
||||||
gFvEcnAYByVQb7S9gEOZev5CHGPw9Bav4jYZ+nTc+ERDuMC6HaqrjbLk1UbkuvAV
|
|
||||||
cWipYygtVFeeWx1TdHmez7n+kXcKNVojp1BbNJj5162zYXD7CnWrepA0r8b3ETEs
|
|
||||||
jTFRmJd6UgjZ/u+apf+DlIQ5UZOWPUs1okzmCjHAL0hp55Mj6lRW7F+ZEX8uC/pG
|
|
||||||
jOz/Qi2AIztZp+tYSQmyXlsEODft88D6StWKLwIDAQABAoIBAG+d3BRmIrDUnp1t
|
|
||||||
VndYxWYYhDOYkoIcmZsoPPBwGhO3ORak1RuuRZYhaCCsRSjEV7+ZStswof1U8qCa
|
|
||||||
haN+pG386PjYDnMw0ZTsv8VOjaeysx7uJzonoAu+Q2IroT49gOAK0ca3zC085+/Y
|
|
||||||
Zxh+gRnAHadhxED1oLiKzQz8CB9JpNIWWIhMEAPUgnnVMRzED62OyMTsX6ztPSx0
|
|
||||||
EiM1sNU7Jnf9TVMYS1LjJ9SNqbT9tmPaRj4DM2X17Iolg6ntx3rl8xeKQfcrOl/1
|
|
||||||
EWjiXBSmmqsGpQZPyD8uCE4d1/V+5sNpRkPRBJVoqPKRdmSHCgOPkeWDv1zoJZv5
|
|
||||||
RnS6MKECgYEA0nRtQt6j3USq/PDdnzRjskks7qsfOtsMR7ebQFwD+bbpAiY+walu
|
|
||||||
zTFwr1KggAtfjlp1pegnLg2aIvCoVr3wDAf7itAFIY34OKXsgV6AAu8k/Kr2KYgI
|
|
||||||
ZbPKmhn7bCH3vCzC+SsN0kBHhOmWLiErx50mpVPFgjkOHG/RQZa24NECgYEAyxVH
|
|
||||||
cGfSMWRe/e25R6F8b5V+oUThCZ6JyL0n03Vp9OFt1FN9OleBjezA47AysnKFnqIa
|
|
||||||
jsUwjXEZOFHmNSO9tPoNxqPH5vaE/BShSTVdP/zeOXF3BQLajrqwC6+2tzDMmpmT
|
|
||||||
erc1lPWHIMrvNaVkF/9mVbaDyZcGa4eNwm0Iev8CgYAtcTRSdw587aHaIgxInyBT
|
|
||||||
09ce5dZFeBzrs2qTeArntaYUb7unR3WEWwOQ589+NnZ4n3G91CX5nLhGiR5gNH0L
|
|
||||||
rAGVlJs3Bpeta65otMYBXC/pWuTyTMw7YZoCsk+GpsL+X8/ty20dlAGdYm6qIUF5
|
|
||||||
xaYdlrwUBUvVuhM+DVQJsQKBgALJ9AUzJ8vN2RAbp6O4MAFISEjmrUB4kOPU1Ssu
|
|
||||||
PZpDTkLQMrQOZ5UPX0bBMLEKqZMYHs0/H/+RQgtn9IVeTEij9nR341Lkp8becaiT
|
|
||||||
twgd7N9VE5FaDK5RGgHPE+9IGEc3PLM+uNmm1Yg5wTc3YjyCIWGj9ANcs5Xecq/s
|
|
||||||
12T5AoGAAlLIzXB5KStzhEibmwgmXLDL16hgTXmMHZ59Uy3Wz5g5r66rUqQL1Fg0
|
|
||||||
RjtRYeCjylVzDGw5ffzQYPUg2DqAncD/K2Pgw1EirwdZfzdWU7oXIiA+FYEEi0Z3
|
|
||||||
q3VVFmHAJaTQpU2A5UpL5+a8s0oPxxmU8p+FVhVuTLSuX8GcJr0=
|
|
||||||
-----END RSA PRIVATE KEY-----
|
|
@@ -61,6 +61,11 @@ store := rueidis.New(rueidis.Config{
|
|||||||
TLSConfig: nil,
|
TLSConfig: nil,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
// Initialize using Rueidis URL
|
||||||
|
store := rueidis.New(rueidis.Config{
|
||||||
|
URL: "redis://localhost:6379",
|
||||||
|
})
|
||||||
|
|
||||||
// Initialize Rueidis Cluster Client
|
// Initialize Rueidis Cluster Client
|
||||||
store := rueidis.New(rueidis.Config{
|
store := rueidis.New(rueidis.Config{
|
||||||
InitAddress: []string{":6379", ":6380"},
|
InitAddress: []string{":6379", ":6380"},
|
||||||
@@ -105,6 +110,12 @@ type Config struct {
|
|||||||
// Optional. Default is ""
|
// Optional. Default is ""
|
||||||
ClientName string
|
ClientName string
|
||||||
|
|
||||||
|
// URL standard format Redis URL. If this is set all other config options, InitAddress, Username, Password, ClientName, and SelectDB have no effect.
|
||||||
|
//
|
||||||
|
// Example: redis://<user>:<pass>@localhost:6379/<db>
|
||||||
|
// Optional. Default is ""
|
||||||
|
URL string
|
||||||
|
|
||||||
// SelectDB to be selected after connecting to the server.
|
// SelectDB to be selected after connecting to the server.
|
||||||
//
|
//
|
||||||
// Optional. Default is 0
|
// Optional. Default is 0
|
||||||
|
@@ -24,6 +24,12 @@ type Config struct {
|
|||||||
// Optional. Default is ""
|
// Optional. Default is ""
|
||||||
ClientName string
|
ClientName string
|
||||||
|
|
||||||
|
// URL standard format Redis URL. If this is set all other config options, InitAddress, Username, Password, ClientName, and SelectDB have no effect.
|
||||||
|
//
|
||||||
|
// Example: redis://<user>:<pass>@localhost:6379/<db>
|
||||||
|
// Optional. Default is ""
|
||||||
|
URL string
|
||||||
|
|
||||||
// SelectDB to be selected after connecting to the server.
|
// SelectDB to be selected after connecting to the server.
|
||||||
//
|
//
|
||||||
// Optional. Default is 0
|
// Optional. Default is 0
|
||||||
@@ -100,6 +106,7 @@ var ConfigDefault = Config{
|
|||||||
Username: "",
|
Username: "",
|
||||||
Password: "",
|
Password: "",
|
||||||
ClientName: "",
|
ClientName: "",
|
||||||
|
URL: "",
|
||||||
SelectDB: 0,
|
SelectDB: 0,
|
||||||
InitAddress: []string{"127.0.0.1:6379"},
|
InitAddress: []string{"127.0.0.1:6379"},
|
||||||
TLSConfig: nil,
|
TLSConfig: nil,
|
||||||
@@ -138,6 +145,9 @@ func configDefault(config ...Config) Config {
|
|||||||
if userConfig.ClientName != "" {
|
if userConfig.ClientName != "" {
|
||||||
cfg.ClientName = userConfig.ClientName
|
cfg.ClientName = userConfig.ClientName
|
||||||
}
|
}
|
||||||
|
if userConfig.URL != "" {
|
||||||
|
cfg.URL = userConfig.URL
|
||||||
|
}
|
||||||
if userConfig.SelectDB != 0 {
|
if userConfig.SelectDB != 0 {
|
||||||
cfg.SelectDB = userConfig.SelectDB
|
cfg.SelectDB = userConfig.SelectDB
|
||||||
}
|
}
|
||||||
|
@@ -24,6 +24,28 @@ func New(config ...Config) *Storage {
|
|||||||
var db rueidis.Client
|
var db rueidis.Client
|
||||||
cacheTTL = cfg.CacheTTL
|
cacheTTL = cfg.CacheTTL
|
||||||
|
|
||||||
|
// Parse the URL and update config values accordingly
|
||||||
|
if cfg.URL != "" {
|
||||||
|
// This will panic if parsing URL fails
|
||||||
|
options := rueidis.MustParseURL(cfg.URL)
|
||||||
|
|
||||||
|
// Update the config values with the parsed URL values
|
||||||
|
cfg.InitAddress = options.InitAddress
|
||||||
|
cfg.Username = options.Username
|
||||||
|
cfg.Password = options.Password
|
||||||
|
cfg.SelectDB = options.SelectDB
|
||||||
|
|
||||||
|
// Update ClientName if returned
|
||||||
|
if cfg.ClientName == "" && options.ClientName != "" {
|
||||||
|
cfg.ClientName = options.ClientName
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update TLSConfig if returned
|
||||||
|
if cfg.TLSConfig == nil && options.TLSConfig != nil {
|
||||||
|
cfg.TLSConfig = options.TLSConfig
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// Update config values accordingly and start new Client
|
// Update config values accordingly and start new Client
|
||||||
db, err := rueidis.NewClient(rueidis.ClientOption{
|
db, err := rueidis.NewClient(rueidis.ClientOption{
|
||||||
Username: cfg.Username,
|
Username: cfg.Username,
|
||||||
|
@@ -187,6 +187,28 @@ func Test_Rueidis_With_HostPort(t *testing.T) {
|
|||||||
require.Nil(t, store.Close())
|
require.Nil(t, store.Close())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func Test_Rueidis_With_URL(t *testing.T) {
|
||||||
|
store := New(Config{
|
||||||
|
URL: "redis://localhost:6379",
|
||||||
|
})
|
||||||
|
|
||||||
|
var (
|
||||||
|
key = "bruce"
|
||||||
|
val = []byte("wayne")
|
||||||
|
)
|
||||||
|
|
||||||
|
err := store.Set(key, val, 0)
|
||||||
|
require.NoError(t, err)
|
||||||
|
|
||||||
|
result, err := store.Get(key)
|
||||||
|
require.NoError(t, err)
|
||||||
|
require.Equal(t, val, result)
|
||||||
|
|
||||||
|
err = store.Delete(key)
|
||||||
|
require.NoError(t, err)
|
||||||
|
require.Nil(t, store.Close())
|
||||||
|
}
|
||||||
|
|
||||||
func Test_Rueidis_Cluster(t *testing.T) {
|
func Test_Rueidis_Cluster(t *testing.T) {
|
||||||
store := New(Config{
|
store := New(Config{
|
||||||
InitAddress: []string{
|
InitAddress: []string{
|
||||||
|
@@ -4,9 +4,9 @@ go 1.19
|
|||||||
|
|
||||||
require (
|
require (
|
||||||
github.com/aws/aws-sdk-go-v2 v1.21.0
|
github.com/aws/aws-sdk-go-v2 v1.21.0
|
||||||
github.com/aws/aws-sdk-go-v2/config v1.18.38
|
github.com/aws/aws-sdk-go-v2/config v1.18.39
|
||||||
github.com/aws/aws-sdk-go-v2/credentials v1.13.36
|
github.com/aws/aws-sdk-go-v2/credentials v1.13.37
|
||||||
github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.11.82
|
github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.11.83
|
||||||
github.com/aws/aws-sdk-go-v2/service/s3 v1.38.5
|
github.com/aws/aws-sdk-go-v2/service/s3 v1.38.5
|
||||||
github.com/stretchr/testify v1.8.4
|
github.com/stretchr/testify v1.8.4
|
||||||
)
|
)
|
||||||
@@ -23,7 +23,7 @@ require (
|
|||||||
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.35 // indirect
|
github.com/aws/aws-sdk-go-v2/service/internal/presigned-url v1.9.35 // indirect
|
||||||
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.15.4 // indirect
|
github.com/aws/aws-sdk-go-v2/service/internal/s3shared v1.15.4 // indirect
|
||||||
github.com/aws/aws-sdk-go-v2/service/sso v1.13.6 // indirect
|
github.com/aws/aws-sdk-go-v2/service/sso v1.13.6 // indirect
|
||||||
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.15.5 // indirect
|
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.15.6 // indirect
|
||||||
github.com/aws/aws-sdk-go-v2/service/sts v1.21.5 // indirect
|
github.com/aws/aws-sdk-go-v2/service/sts v1.21.5 // indirect
|
||||||
github.com/aws/smithy-go v1.14.2 // indirect
|
github.com/aws/smithy-go v1.14.2 // indirect
|
||||||
github.com/davecgh/go-spew v1.1.1 // indirect
|
github.com/davecgh/go-spew v1.1.1 // indirect
|
||||||
|
16
s3/go.sum
16
s3/go.sum
@@ -2,14 +2,14 @@ github.com/aws/aws-sdk-go-v2 v1.21.0 h1:gMT0IW+03wtYJhRqTVYn0wLzwdnK9sRMcxmtfGzR
|
|||||||
github.com/aws/aws-sdk-go-v2 v1.21.0/go.mod h1:/RfNgGmRxI+iFOB1OeJUyxiU+9s88k3pfHvDagGEp0M=
|
github.com/aws/aws-sdk-go-v2 v1.21.0/go.mod h1:/RfNgGmRxI+iFOB1OeJUyxiU+9s88k3pfHvDagGEp0M=
|
||||||
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.4.13 h1:OPLEkmhXf6xFPiz0bLeDArZIDx1NNS4oJyG4nv3Gct0=
|
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.4.13 h1:OPLEkmhXf6xFPiz0bLeDArZIDx1NNS4oJyG4nv3Gct0=
|
||||||
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.4.13/go.mod h1:gpAbvyDGQFozTEmlTFO8XcQKHzubdq0LzRyJpG6MiXM=
|
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstream v1.4.13/go.mod h1:gpAbvyDGQFozTEmlTFO8XcQKHzubdq0LzRyJpG6MiXM=
|
||||||
github.com/aws/aws-sdk-go-v2/config v1.18.38 h1:CByQCELMgm2tM1lAehx3XNg0R/pfeXsYzqn0Aq2chJQ=
|
github.com/aws/aws-sdk-go-v2/config v1.18.39 h1:oPVyh6fuu/u4OiW4qcuQyEtk7U7uuNBmHmJSLg1AJsQ=
|
||||||
github.com/aws/aws-sdk-go-v2/config v1.18.38/go.mod h1:vNm9Hf5VgG2fSUWhT3zFrqN/RosGcabFMYgiSoxKFU8=
|
github.com/aws/aws-sdk-go-v2/config v1.18.39/go.mod h1:+NH/ZigdPckFpgB1TRcRuWCB/Kbbvkxc/iNAKTq5RhE=
|
||||||
github.com/aws/aws-sdk-go-v2/credentials v1.13.36 h1:ps0cPswZjpsOk6sLwG6fdXTzrYjCplgPEyG3OUbbdqE=
|
github.com/aws/aws-sdk-go-v2/credentials v1.13.37 h1:BvEdm09+ZEh2XtN+PVHPcYwKY3wIeB6pw7vPRM4M9/U=
|
||||||
github.com/aws/aws-sdk-go-v2/credentials v1.13.36/go.mod h1:sY2phUzxbygoyDtTXhqi7GjGjCQ1S5a5Rj8u3ksBxCg=
|
github.com/aws/aws-sdk-go-v2/credentials v1.13.37/go.mod h1:ACLrdkd4CLZyXOghZ8IYumQbcooAcp2jo/s2xsFH8IM=
|
||||||
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.13.11 h1:uDZJF1hu0EVT/4bogChk8DyjSF6fof6uL/0Y26Ma7Fg=
|
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.13.11 h1:uDZJF1hu0EVT/4bogChk8DyjSF6fof6uL/0Y26Ma7Fg=
|
||||||
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.13.11/go.mod h1:TEPP4tENqBGO99KwVpV9MlOX4NSrSLP8u3KRy2CDwA8=
|
github.com/aws/aws-sdk-go-v2/feature/ec2/imds v1.13.11/go.mod h1:TEPP4tENqBGO99KwVpV9MlOX4NSrSLP8u3KRy2CDwA8=
|
||||||
github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.11.82 h1:gPh2fLhr1kwH2HXFhs1kCblIgHTabqE1N9gwYPhS/fw=
|
github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.11.83 h1:wcluDLIQ0uYaxv0fCWQRimbXkPdTgWHUD21j1CzXEwc=
|
||||||
github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.11.82/go.mod h1:4pzmxw8ZmkpbvGqrmedWaXuDL2xcABews1VLYqe9Djk=
|
github.com/aws/aws-sdk-go-v2/feature/s3/manager v1.11.83/go.mod h1:nGCBuon134gW67yAtxHKV73x+tAcY/xG4ZPNPDB1h/I=
|
||||||
github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.41 h1:22dGT7PneFMx4+b3pz7lMTRyN8ZKH7M2cW4GP9yUS2g=
|
github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.41 h1:22dGT7PneFMx4+b3pz7lMTRyN8ZKH7M2cW4GP9yUS2g=
|
||||||
github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.41/go.mod h1:CrObHAuPneJBlfEJ5T3szXOUkLEThaGfvnhTf33buas=
|
github.com/aws/aws-sdk-go-v2/internal/configsources v1.1.41/go.mod h1:CrObHAuPneJBlfEJ5T3szXOUkLEThaGfvnhTf33buas=
|
||||||
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.35 h1:SijA0mgjV8E+8G45ltVHs0fvKpTj8xmZJ3VwhGKtUSI=
|
github.com/aws/aws-sdk-go-v2/internal/endpoints/v2 v2.4.35 h1:SijA0mgjV8E+8G45ltVHs0fvKpTj8xmZJ3VwhGKtUSI=
|
||||||
@@ -30,8 +30,8 @@ github.com/aws/aws-sdk-go-v2/service/s3 v1.38.5 h1:A42xdtStObqy7NGvzZKpnyNXvoOmm
|
|||||||
github.com/aws/aws-sdk-go-v2/service/s3 v1.38.5/go.mod h1:rDGMZA7f4pbmTtPOk5v5UM2lmX6UAbRnMDJeDvnH7AM=
|
github.com/aws/aws-sdk-go-v2/service/s3 v1.38.5/go.mod h1:rDGMZA7f4pbmTtPOk5v5UM2lmX6UAbRnMDJeDvnH7AM=
|
||||||
github.com/aws/aws-sdk-go-v2/service/sso v1.13.6 h1:2PylFCfKCEDv6PeSN09pC/VUiRd10wi1VfHG5FrW0/g=
|
github.com/aws/aws-sdk-go-v2/service/sso v1.13.6 h1:2PylFCfKCEDv6PeSN09pC/VUiRd10wi1VfHG5FrW0/g=
|
||||||
github.com/aws/aws-sdk-go-v2/service/sso v1.13.6/go.mod h1:fIAwKQKBFu90pBxx07BFOMJLpRUGu8VOzLJakeY+0K4=
|
github.com/aws/aws-sdk-go-v2/service/sso v1.13.6/go.mod h1:fIAwKQKBFu90pBxx07BFOMJLpRUGu8VOzLJakeY+0K4=
|
||||||
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.15.5 h1:dnInJb4S0oy8aQuri1mV6ipLlnZPfnsDNB9BGO9PDNY=
|
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.15.6 h1:pSB560BbVj9ZlJZF4WYj5zsytWHWKxg+NgyGV4B2L58=
|
||||||
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.15.5/go.mod h1:yygr8ACQRY2PrEcy3xsUI357stq2AxnFM6DIsR9lij4=
|
github.com/aws/aws-sdk-go-v2/service/ssooidc v1.15.6/go.mod h1:yygr8ACQRY2PrEcy3xsUI357stq2AxnFM6DIsR9lij4=
|
||||||
github.com/aws/aws-sdk-go-v2/service/sts v1.21.5 h1:CQBFElb0LS8RojMJlxRSo/HXipvTZW2S44Lt9Mk2aYQ=
|
github.com/aws/aws-sdk-go-v2/service/sts v1.21.5 h1:CQBFElb0LS8RojMJlxRSo/HXipvTZW2S44Lt9Mk2aYQ=
|
||||||
github.com/aws/aws-sdk-go-v2/service/sts v1.21.5/go.mod h1:VC7JDqsqiwXukYEDjoHh9U0fOJtNWh04FPQz4ct4GGU=
|
github.com/aws/aws-sdk-go-v2/service/sts v1.21.5/go.mod h1:VC7JDqsqiwXukYEDjoHh9U0fOJtNWh04FPQz4ct4GGU=
|
||||||
github.com/aws/smithy-go v1.14.2 h1:MJU9hqBGbvWZdApzpvoF2WAIJDbtjK2NDJSiJP7HblQ=
|
github.com/aws/smithy-go v1.14.2 h1:MJU9hqBGbvWZdApzpvoF2WAIJDbtjK2NDJSiJP7HblQ=
|
||||||
|
Reference in New Issue
Block a user