2020-08-16 23:16:02 +08:00
|
|
|
|
package ldap
|
|
|
|
|
|
|
|
|
|
import (
|
|
|
|
|
"crypto/tls"
|
2020-08-18 00:53:02 +08:00
|
|
|
|
"errors"
|
2020-08-16 23:16:02 +08:00
|
|
|
|
"ferry/pkg/logger"
|
|
|
|
|
"fmt"
|
|
|
|
|
"time"
|
|
|
|
|
|
|
|
|
|
"github.com/spf13/viper"
|
|
|
|
|
|
|
|
|
|
"github.com/go-ldap/ldap/v3"
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
/*
|
|
|
|
|
@Author : lanyulei
|
|
|
|
|
*/
|
|
|
|
|
|
2020-08-18 00:53:02 +08:00
|
|
|
|
var conn *ldap.Conn
|
2020-08-16 23:16:02 +08:00
|
|
|
|
|
|
|
|
|
// ldap连接
|
2020-08-18 00:53:02 +08:00
|
|
|
|
func ldapConnection() (err error) {
|
2020-08-16 23:16:02 +08:00
|
|
|
|
var ldapConn = fmt.Sprintf("%v:%v", viper.GetString("settings.ldap.host"), viper.GetString("settings.ldap.port"))
|
|
|
|
|
|
|
|
|
|
if viper.GetInt("settings.ldap.port") == 636 {
|
2020-08-18 00:53:02 +08:00
|
|
|
|
conn, err = ldap.DialTLS(
|
2020-08-16 23:16:02 +08:00
|
|
|
|
"tcp",
|
|
|
|
|
ldapConn,
|
|
|
|
|
&tls.Config{InsecureSkipVerify: true},
|
|
|
|
|
)
|
|
|
|
|
} else {
|
2020-08-18 00:53:02 +08:00
|
|
|
|
conn, err = ldap.Dial(
|
2020-08-16 23:16:02 +08:00
|
|
|
|
"tcp",
|
|
|
|
|
ldapConn,
|
|
|
|
|
)
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if err != nil {
|
2020-08-18 00:53:02 +08:00
|
|
|
|
err = errors.New(fmt.Sprintf("无法连接到ldap服务器,%v", err))
|
|
|
|
|
logger.Error(err)
|
2020-08-16 23:16:02 +08:00
|
|
|
|
return
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//设置超时时间
|
2020-08-18 00:53:02 +08:00
|
|
|
|
conn.SetTimeout(5 * time.Second)
|
2020-08-16 23:16:02 +08:00
|
|
|
|
|
|
|
|
|
return
|
|
|
|
|
}
|