func main() { //Create a new LDAP Server server := ldap.NewServer() //Set routes, here, we only serve bindRequest routes := ldap.NewRouteMux() routes.Bind(handleBind) server.Handle(routes) //SSL secureConn := func(s *ldap.Server) { config, _ := getTLSconfig() s.Listener = tls.NewListener(s.Listener, config) } go server.ListenAndServe(":10636", secureConn) // When CTRL+C, SIGINT and SIGTERM signal occurs // Then stop server gracefully ch := make(chan os.Signal) signal.Notify(ch, syscall.SIGINT, syscall.SIGTERM) // Wait for signal <-ch close(ch) server.Stop() }
func main() { //Create a new LDAP Server server := ldap.NewServer() //Create routes bindings routes := ldap.NewRouteMux() routes.NotFound(handleNotFound) routes.Abandon(handleAbandon) routes.Bind(handleBind) routes.Compare(handleCompare) routes.Add(handleAdd) routes.Delete(handleDelete) routes.Modify(handleModify) routes.Extended(handleStartTLS). RequestName(ldap.NoticeOfStartTLS).Label("StartTLS") routes.Extended(handleWhoAmI). RequestName(ldap.NoticeOfWhoAmI).Label("Ext - WhoAmI") routes.Extended(handleExtended).Label("Ext - Generic") routes.Search(handleSearchDSE). BaseDn(""). Scope(ldap.SearchRequestScopeBaseObject). Filter("(objectclass=*)"). Label("Search - ROOT DSE") routes.Search(handleSearchMyCompany). BaseDn("o=My Company, c=US"). Scope(ldap.SearchRequestScopeBaseObject). Label("Search - Compagny Root") routes.Search(handleSearch).Label("Search - Generic") //Attach routes to server server.Handle(routes) // listen on 10389 and serve go server.ListenAndServe("127.0.0.1:10389") // When CTRL+C, SIGINT and SIGTERM signal occurs // Then stop server gracefully ch := make(chan os.Signal) signal.Notify(ch, syscall.SIGINT, syscall.SIGTERM) <-ch close(ch) server.Stop() }
func main() { //Create a new LDAP Server server := ldap.NewServer() routes := ldap.NewRouteMux() routes.Bind(handleBind) server.Handle(routes) // listen on 10389 go server.ListenAndServe("127.0.0.1:10389") // When CTRL+C, SIGINT and SIGTERM signal occurs // Then stop server gracefully ch := make(chan os.Signal) signal.Notify(ch, syscall.SIGINT, syscall.SIGTERM) <-ch close(ch) server.Stop() }