mirror of
https://github.com/goharbor/harbor.git
synced 2024-11-23 02:35:17 +01:00
Merge pull request #15397 from stonezdj/21aug4_fix_ldap_ipv6
Support IPv6 when connecting to LDAP server
This commit is contained in:
commit
d7c8c722f5
@ -20,8 +20,8 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"github.com/goharbor/harbor/src/lib/config/models"
|
"github.com/goharbor/harbor/src/lib/config/models"
|
||||||
"github.com/goharbor/harbor/src/pkg/ldap/model"
|
"github.com/goharbor/harbor/src/pkg/ldap/model"
|
||||||
|
"net"
|
||||||
"net/url"
|
"net/url"
|
||||||
"strconv"
|
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
@ -74,7 +74,6 @@ func NewSession(basicCfg models.LdapConf, groupCfg models.GroupConf) *Session {
|
|||||||
func formatURL(ldapURL string) (string, error) {
|
func formatURL(ldapURL string) (string, error) {
|
||||||
|
|
||||||
var protocol, hostport string
|
var protocol, hostport string
|
||||||
|
|
||||||
_, err := url.Parse(ldapURL)
|
_, err := url.Parse(ldapURL)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", fmt.Errorf("parse Ldap Host ERR: %s", err)
|
return "", fmt.Errorf("parse Ldap Host ERR: %s", err)
|
||||||
@ -92,12 +91,11 @@ func formatURL(ldapURL string) (string, error) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if strings.Contains(hostport, ":") {
|
if strings.Contains(hostport, ":") {
|
||||||
splitHostPort := strings.Split(hostport, ":")
|
_, port, err := net.SplitHostPort(hostport)
|
||||||
port, err := strconv.Atoi(splitHostPort[1])
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", fmt.Errorf("illegal url port")
|
return "", fmt.Errorf("illegal ldap url, error: %v", err)
|
||||||
}
|
}
|
||||||
if port == 636 {
|
if port == "636" {
|
||||||
protocol = "ldaps"
|
protocol = "ldaps"
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -198,9 +196,12 @@ func (s *Session) Open() error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
splitLdapURL := strings.Split(ldapURL, "://")
|
splitLdapURL := strings.Split(ldapURL, "://")
|
||||||
protocol, hostport := splitLdapURL[0], splitLdapURL[1]
|
|
||||||
host := strings.Split(hostport, ":")[0]
|
|
||||||
|
|
||||||
|
protocol, hostport := splitLdapURL[0], splitLdapURL[1]
|
||||||
|
host, _, err := net.SplitHostPort(hostport)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
connectionTimeout := s.basicCfg.ConnectionTimeout
|
connectionTimeout := s.basicCfg.ConnectionTimeout
|
||||||
goldap.DefaultTimeout = time.Duration(connectionTimeout) * time.Second
|
goldap.DefaultTimeout = time.Duration(connectionTimeout) * time.Second
|
||||||
|
|
||||||
|
@ -102,7 +102,7 @@ func TestFormatURL(t *testing.T) {
|
|||||||
{"ldaps://127.0.0.1:389", "ldaps://127.0.0.1:389"},
|
{"ldaps://127.0.0.1:389", "ldaps://127.0.0.1:389"},
|
||||||
{"ldap://127.0.0.1:636", "ldaps://127.0.0.1:636"},
|
{"ldap://127.0.0.1:636", "ldaps://127.0.0.1:636"},
|
||||||
{"112.122.122.122", "ldap://112.122.122.122:389"},
|
{"112.122.122.122", "ldap://112.122.122.122:389"},
|
||||||
{"ldap:\\wrong url", ""},
|
{"ldap://[2001:db8::1]:389", "ldap://[2001:db8::1]:389"},
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, u := range urls {
|
for _, u := range urls {
|
||||||
|
Loading…
Reference in New Issue
Block a user