53 lines
1.1 KiB
Go
53 lines
1.1 KiB
Go
package main
|
|
|
|
import (
|
|
"log"
|
|
"os"
|
|
"os/signal"
|
|
"syscall"
|
|
|
|
ldap "github.com/vjeantet/ldapserver"
|
|
|
|
"gt.kalli.st/czar/fsldap/config"
|
|
"gt.kalli.st/czar/fsldap/handler"
|
|
"gt.kalli.st/czar/fsldap/utils"
|
|
)
|
|
|
|
|
|
func init(){
|
|
log.Print("Loading vars...")
|
|
config.SmtpHostname = utils.Env("SMTP_HOSTNAME")
|
|
config.SmtpPort = utils.Env("SMTP_PORT")
|
|
config.Domain = utils.Env("SMTP_DOMAIN")
|
|
config.Base = utils.Env("LDAP_BASE")
|
|
config.Uid = utils.Env("LDAP_UID")
|
|
config.BaseLenght = len(config.Base) + 1
|
|
config.UidLenght = len(config.Uid) + 1
|
|
}
|
|
|
|
|
|
func main() {
|
|
server := ldap.NewServer()
|
|
routes := ldap.NewRouteMux()
|
|
routes.Bind(handler.Bind)
|
|
routes.Extended(handler.WhoAmI).
|
|
RequestName(ldap.NoticeOfWhoAmI).Label("Ext - WhoAmI")
|
|
routes.Search(handler.Search).Label("Search - Generic")
|
|
|
|
server.Handle(routes)
|
|
|
|
log.Print("Starting FSLDAP server...")
|
|
go func(){
|
|
err := server.ListenAndServe("127.0.0.1:389")
|
|
if err != nil{
|
|
log.Fatal(err)
|
|
}
|
|
}()
|
|
ch := make(chan os.Signal)
|
|
signal.Notify(ch, syscall.SIGINT, syscall.SIGTERM)
|
|
<-ch
|
|
close(ch)
|
|
server.Stop()
|
|
}
|
|
|