Skip to content

Commit

Permalink
move dialer creation to ssl.go
Browse files Browse the repository at this point in the history
  • Loading branch information
patapenka-alexey committed Mar 3, 2025
1 parent 2779534 commit 2bdee17
Show file tree
Hide file tree
Showing 4 changed files with 50 additions and 58 deletions.
2 changes: 1 addition & 1 deletion cli/cluster/cluster.go
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ func collectTarantoolConfig(collectors libcluster.CollectorFactory,
}
addr := fmt.Sprintf("%s://%s", network, address)

dialer, err := dial.Dial(dial.Opts{
dialer, err := dial.New(dial.Opts{
Address: addr,
User: endpoint.Login,
Password: endpoint.Password,
Expand Down
2 changes: 1 addition & 1 deletion cli/cluster/cmd/uri.go
Original file line number Diff line number Diff line change
Expand Up @@ -149,7 +149,7 @@ func MakeEtcdOptsFromUriOpts(src UriOpts) libcluster.EtcdOpts {
func MakeConnectOptsFromUriOpts(src UriOpts) (tarantool.Dialer, tarantool.Opts) {
address := fmt.Sprintf("tcp://%s", src.Host)

var dialer, _ = dial.Dial(dial.Opts{
var dialer, _ = dial.New(dial.Opts{
Address: address,
User: src.Username,
Password: src.Password,
Expand Down
56 changes: 14 additions & 42 deletions lib/dial/opts.go
Original file line number Diff line number Diff line change
@@ -1,11 +1,5 @@
package dial

import (
"fmt"

"github.com/tarantool/go-tarantool/v2"
)

// Transport is a type, with a restriction on the list of supported connection modes.
type Transport string

Expand All @@ -17,8 +11,22 @@ const (
TransportDefault Transport = ""
TransportPlain Transport = "plain"
TransportSSL Transport = "ssl"
TransportInvalid Transport = "invalid"
)

func ConvertTransport(tr string) Transport {
switch tr {
case "":
return TransportDefault
case "plain":
return TransportPlain
case "ssl":
return TransportSSL
default:
return TransportInvalid
}
}

type Opts struct {
Address string
User string
Expand All @@ -31,39 +39,3 @@ type Opts struct {
SslPasswordFile string
Transport string
}

// dial creates dialer according to the opts.Transport
func Dial(opts Opts) (tarantool.Dialer, error) {
transport := TransportDefault
if opts.Transport == TransportDefault.String() {
if opts.SslKeyFile != "" || opts.SslCaFile != "" || opts.SslCertFile != "" ||
opts.SslCiphers != "" || opts.SslPassword != "" || opts.SslPasswordFile != "" {
transport = TransportSSL
} else {
transport = TransportPlain
}
}

switch transport {
case TransportPlain:
return tarantool.NetDialer{
Address: opts.Address,
User: opts.User,
Password: opts.Password,
}, nil
case TransportSSL:
return New(Opts{
Address: opts.Address,
User: opts.User,
Password: opts.Password,
SslKeyFile: opts.SslKeyFile,
SslCertFile: opts.SslCertFile,
SslCaFile: opts.SslCaFile,
SslCiphers: opts.SslCiphers,
SslPassword: opts.SslPassword,
SslPasswordFile: opts.SslPasswordFile,
})
default:
return nil, fmt.Errorf("unsupported transport type: %s", opts.Transport)
}
}
48 changes: 34 additions & 14 deletions lib/dial/ssl.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,24 +4,44 @@
package dial

import (
"fmt"

"github.com/tarantool/go-tarantool/v2"
"github.com/tarantool/go-tlsdialer"
)

func New(opts Opts) (tarantool.Dialer, error) {
return ssl(opts)
}
transport := ConvertTransport(opts.Transport)

if transport == TransportDefault {
if opts.SslKeyFile != "" || opts.SslCaFile != "" || opts.SslCertFile != "" ||
opts.SslCiphers != "" || opts.SslPassword != "" || opts.SslPasswordFile != "" {
transport = TransportSSL
} else {
transport = TransportPlain
}
}

func ssl(opts Opts) (tarantool.Dialer, error) {
return tlsdialer.OpenSSLDialer{
Address: opts.Address,
User: opts.User,
Password: opts.Password,
SslKeyFile: opts.SslKeyFile,
SslCertFile: opts.SslCertFile,
SslCaFile: opts.SslCaFile,
SslCiphers: opts.SslCiphers,
SslPassword: opts.SslPassword,
SslPasswordFile: opts.SslPasswordFile,
}, nil
switch transport {
case TransportPlain:
return tarantool.NetDialer{
Address: opts.Address,
User: opts.User,
Password: opts.Password,
}, nil
case TransportSSL:
return tlsdialer.OpenSSLDialer{
Address: opts.Address,
User: opts.User,
Password: opts.Password,
SslKeyFile: opts.SslKeyFile,
SslCertFile: opts.SslCertFile,
SslCaFile: opts.SslCaFile,
SslCiphers: opts.SslCiphers,
SslPassword: opts.SslPassword,
SslPasswordFile: opts.SslPasswordFile,
}, nil
default:
return nil, fmt.Errorf("unsupported transport type: %s", opts.Transport)
}
}

0 comments on commit 2bdee17

Please sign in to comment.