@SSSSTTTTAAAASSSS

LDAP with Golang (создать сервер) как?

Добрый день всем!

Ребята хочу локалатьно покрутить LDAP запросы на локальной машине. Никак не могу разобраться почему не получается поднять сервер со стандартным package https://pkg.go.dev/github.com/go-ldap/ldap/v3. Уже в тупую испоьзую примеры там указанные, правда меняю адрес сервера на локлхост, и соответственно запускаю его через http.ListenAndServe, но все равно никак.

Нашел еще какой-то package https://github.com/vjeantet/ldapserver и там пример запускается без вопросов. Смотрел их функцию для запуска сервера и она ничем не отличается толком.

пример кода который не запускается:
package main

import (
"fmt",
"github.com/go-ldap/ldap/v3",
"log",
"net/http"
)

func main() {

http.ListenAndServe(":389", nil)

l, err := ldap.DialURL("ldap://localhost:389")
if err != nil {
	log.Fatal(err)
}
defer l.Close()

controls := []ldap.Control{}
controls = append(controls, ldap.NewControlBeheraPasswordPolicy())
bindRequest := ldap.NewSimpleBindRequest("cn=admin,dc=example,dc=com", "password", controls)

r, err := l.SimpleBind(bindRequest)
ppolicyControl := ldap.FindControl(r.Controls, ldap.ControlTypeBeheraPasswordPolicy)

var ppolicy *ldap.ControlBeheraPasswordPolicy
if ppolicyControl != nil {
	ppolicy = ppolicyControl.(*ldap.ControlBeheraPasswordPolicy)
} else {
	log.Printf("ppolicyControl response not available.\n")
}
if err != nil {
	errStr := "ERROR: Cannot bind: " + err.Error()
	if ppolicy != nil && ppolicy.Error >= 0 {
		errStr += ":" + ppolicy.ErrorString
	}
	log.Print(errStr)
} else {
	logStr := "Login Ok"
	if ppolicy != nil {
		if ppolicy.Expire >= 0 {
			logStr += fmt.Sprintf(". Password expires in %d seconds\n", ppolicy.Expire)
		} else if ppolicy.Grace >= 0 {
			logStr += fmt.Sprintf(". Password expired, %d grace logins remain\n", ppolicy.Grace)
		}
	}
	log.Print(logStr)
}

}


Может кто может подсказать, где искать ошибку?
И второе как правильно создавать объекты и их добавлять? Возможно сначала надо как-то инициализировать саму схему?
Заранее спасибо за любую помощь.

С уважением,
Стас
  • Вопрос задан
  • 695 просмотров
Решения вопроса 1
@darst
уберите http.ListenAndServe(":389", nil).
Идёт конфликт. Вы пытаетесь запустить стандартный сервер и ldar на одном и том же порту.
Притом когда запускаете http.ListenAndServe программа блокируется.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Забыли ковычки http.ListenAndServe(":389", nil)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы