2026-05-26 16:32:55 +03:00
|
|
|
package dialer
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"crypto/tls"
|
|
|
|
|
"fmt"
|
|
|
|
|
"net"
|
|
|
|
|
"net/url"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
func (d *Dialer) Dial() (net.Conn, error) {
|
|
|
|
|
if d.dialURL.Scheme == "https" {
|
|
|
|
|
return tls.Dial("tcp", d.dialURL.Host, &tls.Config{
|
|
|
|
|
ServerName: d.dialURL.Hostname(),
|
|
|
|
|
InsecureSkipVerify: d.app.Config().Upstream.InsecureTLS,
|
|
|
|
|
})
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return net.Dial("tcp", d.dialURL.Host)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
func (d *Dialer) UpstreamURL() (*url.URL, error) {
|
|
|
|
|
if d.app.Config().Upstream.URL == "" {
|
|
|
|
|
return nil, fmt.Errorf(
|
2026-05-26 18:39:45 +03:00
|
|
|
"%w: %w (%s)", ErrDialer, ErrUpstreamURL,
|
2026-05-26 16:32:55 +03:00
|
|
|
"upstream URL is empty",
|
|
|
|
|
)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
u, err := url.Parse(d.app.Config().Upstream.URL)
|
|
|
|
|
if err != nil {
|
|
|
|
|
return nil, fmt.Errorf(
|
2026-05-26 18:39:45 +03:00
|
|
|
"%w: %w (%w)", ErrDialer, ErrUpstreamURL, err,
|
2026-05-26 16:32:55 +03:00
|
|
|
)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return u, nil
|
|
|
|
|
}
|