guichet/utils.go

91 lines
2.1 KiB
Go
Raw Normal View History

2023-07-20 09:20:46 +00:00
package main
import (
"fmt"
"log"
2023-07-20 09:56:11 +00:00
"github.com/go-ldap/ldap/v3"
2023-07-20 09:20:46 +00:00
// "bytes"
// "crypto/rand"
2023-07-20 15:58:25 +00:00
"encoding/binary"
// "encoding/hex"
2023-07-20 09:20:46 +00:00
// "fmt"
// "html/template"
// "log"
// "net/http"
// "regexp"
// "strings"
// "github.com/emersion/go-sasl"
// "github.com/emersion/go-smtp"
// "github.com/gorilla/mux"
// "golang.org/x/crypto/argon2"
)
type NewUser struct {
DN string
CN string
GivenName string
DisplayName string
Mail string
SN string
UID string
2023-07-20 09:56:11 +00:00
Description string
2023-07-20 11:46:32 +00:00
Password string
2023-07-20 09:56:11 +00:00
}
func openLdap(config ConfigFile) *ldap.Conn {
l, err := ldap.DialURL(config.LdapServerAddr)
if err != nil {
log.Printf(fmt.Sprint("Erreur connect LDAP %v", err))
return nil
} else {
return l
}
2023-07-20 09:20:46 +00:00
}
2023-07-20 15:58:25 +00:00
func suggestPassword() uint32 {
2023-07-20 15:52:16 +00:00
random := make([]byte, 32)
2023-07-20 15:58:25 +00:00
return binary.BigEndian.Uint32(random[0:12])
2023-07-20 15:52:16 +00:00
}
2023-07-20 09:56:59 +00:00
func addNewUser(newUser NewUser, config *ConfigFile, login *LoginStatus) bool {
2023-07-20 09:20:46 +00:00
log.Printf(fmt.Sprint("Adding New User"))
2023-07-20 09:56:11 +00:00
// l := openLdap(config)
// l.Bind(config.)
dn := newUser.DN
req := ldap.NewAddRequest(dn, nil)
req.Attribute("objectClass", []string{"top", "inetOrgPerson"})
if newUser.DisplayName != "" {
req.Attribute("displayName", []string{newUser.DisplayName})
}
if newUser.GivenName != "" {
req.Attribute("givenName", []string{newUser.GivenName})
}
if newUser.Mail != "" {
req.Attribute("mail", []string{newUser.Mail})
}
// if newUser.Member != "" {
// req.Attribute("member", []string{newUser.Member})
// }
if newUser.SN != "" {
req.Attribute("sn", []string{newUser.SN})
}
if newUser.Description != "" {
req.Attribute("description", []string{newUser.Description})
}
2023-07-20 11:46:32 +00:00
if newUser.Password != "" {
pw, _ := SSHAEncode(newUser.Password)
req.Attribute("userPassword", []string{pw})
}
2023-07-20 09:56:11 +00:00
err := login.conn.Add(req)
2023-07-20 10:04:18 +00:00
log.Printf(fmt.Sprintf("71: %v", err))
log.Printf(fmt.Sprintf("72: %v", req))
log.Printf(fmt.Sprintf("73: %v", newUser))
2023-07-20 09:56:11 +00:00
if err != nil {
log.Printf(fmt.Sprintf("75: %v", err))
return false
} else {
return true
}
2023-07-20 09:20:46 +00:00
}