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"))
|
|
|
|
|
|
2020-11-03 12:36:34 +08:00
|
|
|
|
if viper.GetBool("settings.ldap.tls") {
|
2020-11-04 13:39:22 +08:00
|
|
|
|
tlsConf := &tls.Config{
|
2020-11-03 12:36:34 +08:00
|
|
|
|
InsecureSkipVerify: true,
|
|
|
|
|
}
|
2020-11-04 13:39:22 +08:00
|
|
|
|
conn, err = ldap.DialTLS("tcp", ldapConn, tlsConf)
|
2020-11-03 12:36:34 +08:00
|
|
|
|
} else {
|
|
|
|
|
conn, err = ldap.Dial("tcp", ldapConn)
|
|
|
|
|
}
|
2020-08-16 23:16:02 +08:00
|
|
|
|
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
|
|
|
|
|
}
|