From 7b18fcd84799e0b9e1c014af575ca292f905d0a3 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Wed, 11 May 2005 04:49:18 +0000 Subject: r6725: the beginnings of a cldap server (This used to be commit e51e0dffa8f8bff9bd1535751e805b548b6c6d7f) --- source4/cldap_server/cldap_server.c | 148 ++++++++++++++++++++++++++++++++++++ 1 file changed, 148 insertions(+) create mode 100644 source4/cldap_server/cldap_server.c (limited to 'source4/cldap_server/cldap_server.c') diff --git a/source4/cldap_server/cldap_server.c b/source4/cldap_server/cldap_server.c new file mode 100644 index 0000000000..8397a624c0 --- /dev/null +++ b/source4/cldap_server/cldap_server.c @@ -0,0 +1,148 @@ +/* + Unix SMB/CIFS implementation. + + CLDAP server task + + Copyright (C) Andrew Tridgell 2005 + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. +*/ + +#include "includes.h" +#include "libcli/ldap/ldap.h" +#include "lib/events/events.h" +#include "lib/socket/socket.h" +#include "smbd/service_task.h" +#include "cldap_server/cldap_server.h" + + +/* + handle incoming cldap requests +*/ +static void cldapd_request_handler(struct cldap_socket *cldap, + struct ldap_message *ldap_msg, + const char *src_address, int src_port) +{ + struct cldapd_server *cldapd = talloc_get_type(cldap->incoming.private, + struct cldapd_server); + if (ldap_msg->type != LDAP_TAG_SearchRequest) { + DEBUG(0,("Invalid CLDAP request type %d from %s:%d\n", + ldap_msg->type, src_address, src_port)); + return; + } + DEBUG(0,("CLDAP search for '%s'\n", ldap_msg->r.SearchRequest.filter)); +} + +/* + start listening on the given address +*/ +static NTSTATUS cldapd_add_socket(struct cldapd_server *cldapd, const char *address) +{ + struct cldap_socket *cldapsock; + NTSTATUS status; + + /* listen for unicasts on port 137 */ + cldapsock = cldap_socket_init(cldapd, cldapd->task->event_ctx); + NT_STATUS_HAVE_NO_MEMORY(cldapsock); + + status = socket_listen(cldapsock->sock, address, lp_cldap_port(), 0, 0); + if (!NT_STATUS_IS_OK(status)) { + DEBUG(0,("Failed to bind to %s:%d - %s\n", + address, lp_cldap_port(), nt_errstr(status))); + talloc_free(cldapsock); + return status; + } + + cldap_set_incoming_handler(cldapsock, cldapd_request_handler, cldapd); + + return NT_STATUS_OK; +} + + +/* + setup our listening sockets on the configured network interfaces +*/ +NTSTATUS cldapd_startup_interfaces(struct cldapd_server *cldapd) +{ + int num_interfaces = iface_count(); + TALLOC_CTX *tmp_ctx = talloc_new(cldapd); + NTSTATUS status; + + /* if we are allowing incoming packets from any address, then + we also need to bind to the wildcard address */ + if (!lp_bind_interfaces_only()) { + status = cldapd_add_socket(cldapd, "0.0.0.0"); + NT_STATUS_NOT_OK_RETURN(status); + } else { + int i; + + for (i=0; itask = task; + + /* start listening on the configured network interfaces */ + status = cldapd_startup_interfaces(cldapd); + if (!NT_STATUS_IS_OK(status)) { + task_terminate(task, "cldapd failed to setup interfaces"); + return; + } +} + + +/* + initialise the cldapd server + */ +static NTSTATUS cldapd_init(struct event_context *event_ctx, const struct model_ops *model_ops) +{ + return task_server_startup(event_ctx, model_ops, cldapd_task_init); +} + + +/* + register ourselves as a available server +*/ +NTSTATUS server_service_cldapd_init(void) +{ + return register_server_service("cldap", cldapd_init); +} -- cgit From 2279d1ebfb0a750d92ca0c4a9dc9803c35c845d9 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Thu, 12 May 2005 08:28:07 +0000 Subject: r6747: first working version of cldapd server. It is missing 'sites' support, and filling in some of the returned parameters is quite rough, but it seems to work OK (This used to be commit e564e3e596915414fad07c94f7ea8a0d9c3a1140) --- source4/cldap_server/cldap_server.c | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) (limited to 'source4/cldap_server/cldap_server.c') diff --git a/source4/cldap_server/cldap_server.c b/source4/cldap_server/cldap_server.c index 8397a624c0..ad4779da01 100644 --- a/source4/cldap_server/cldap_server.c +++ b/source4/cldap_server/cldap_server.c @@ -27,7 +27,6 @@ #include "smbd/service_task.h" #include "cldap_server/cldap_server.h" - /* handle incoming cldap requests */ @@ -35,16 +34,27 @@ static void cldapd_request_handler(struct cldap_socket *cldap, struct ldap_message *ldap_msg, const char *src_address, int src_port) { - struct cldapd_server *cldapd = talloc_get_type(cldap->incoming.private, - struct cldapd_server); + struct ldap_SearchRequest *search; if (ldap_msg->type != LDAP_TAG_SearchRequest) { DEBUG(0,("Invalid CLDAP request type %d from %s:%d\n", ldap_msg->type, src_address, src_port)); return; } - DEBUG(0,("CLDAP search for '%s'\n", ldap_msg->r.SearchRequest.filter)); + + search = &ldap_msg->r.SearchRequest; + + if (search->num_attributes == 1 && + strcasecmp(search->attributes[0], "netlogon") == 0) { + cldapd_netlogon_request(cldap, ldap_msg->messageid, + search->filter, src_address, src_port); + } else { + DEBUG(0,("Unknown CLDAP search for '%s'\n", + ldap_msg->r.SearchRequest.filter)); + cldap_empty_reply(cldap, ldap_msg->messageid, src_address, src_port); + } } + /* start listening on the given address */ @@ -81,7 +91,7 @@ NTSTATUS cldapd_startup_interfaces(struct cldapd_server *cldapd) NTSTATUS status; /* if we are allowing incoming packets from any address, then - we also need to bind to the wildcard address */ + we need to bind to the wildcard address */ if (!lp_bind_interfaces_only()) { status = cldapd_add_socket(cldapd, "0.0.0.0"); NT_STATUS_NOT_OK_RETURN(status); -- cgit From 13a3fdf933c3ebdc0fd5bc0f3460d201a7c6b229 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Wed, 18 May 2005 04:18:19 +0000 Subject: r6876: - fixed a memory leak in the cldap server - keep the samdb open between requests (This used to be commit ee75a8353b0dab579abf0e675395d796f1c39746) --- source4/cldap_server/cldap_server.c | 1 + 1 file changed, 1 insertion(+) (limited to 'source4/cldap_server/cldap_server.c') diff --git a/source4/cldap_server/cldap_server.c b/source4/cldap_server/cldap_server.c index ad4779da01..91682620ea 100644 --- a/source4/cldap_server/cldap_server.c +++ b/source4/cldap_server/cldap_server.c @@ -130,6 +130,7 @@ static void cldapd_task_init(struct task_server *task) } cldapd->task = task; + cldapd->samctx = NULL; /* start listening on the configured network interfaces */ status = cldapd_startup_interfaces(cldapd); -- cgit From 513d07a8d602053922036fd8137e4a36e44156ff Mon Sep 17 00:00:00 2001 From: Andrew Bartlett Date: Fri, 3 Jun 2005 11:19:32 +0000 Subject: r7220: Fix comment (This used to be commit 964f0d95bb16c5d298928f0a9c21f2870eea40c6) --- source4/cldap_server/cldap_server.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'source4/cldap_server/cldap_server.c') diff --git a/source4/cldap_server/cldap_server.c b/source4/cldap_server/cldap_server.c index 91682620ea..a15b93f91c 100644 --- a/source4/cldap_server/cldap_server.c +++ b/source4/cldap_server/cldap_server.c @@ -63,7 +63,7 @@ static NTSTATUS cldapd_add_socket(struct cldapd_server *cldapd, const char *addr struct cldap_socket *cldapsock; NTSTATUS status; - /* listen for unicasts on port 137 */ + /* listen for unicasts on the CLDAP port (389) */ cldapsock = cldap_socket_init(cldapd, cldapd->task->event_ctx); NT_STATUS_HAVE_NO_MEMORY(cldapsock); -- cgit From 4b0e5bd75373ffa2d847706a71fd0349dfa15e71 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Mon, 13 Jun 2005 09:10:17 +0000 Subject: r7527: - added a ldb_search_bytree() interface, which takes a ldb_parse_tree instead of a search expression. This allows our ldap server to pass its ASN.1 parsed search expressions straight to ldb, instead of going via strings. - updated all the ldb modules code to handle the new interface - got rid of the separate ldb_parse.h now that the ldb_parse structures are exposed externally - moved to C99 structure initialisation in ldb - switched ldap server to using ldb_search_bytree() (This used to be commit 96620ab2ee5d440bbbc51c1bc0cad9977770f897) --- source4/cldap_server/cldap_server.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) (limited to 'source4/cldap_server/cldap_server.c') diff --git a/source4/cldap_server/cldap_server.c b/source4/cldap_server/cldap_server.c index a15b93f91c..c6eaf6395a 100644 --- a/source4/cldap_server/cldap_server.c +++ b/source4/cldap_server/cldap_server.c @@ -46,10 +46,11 @@ static void cldapd_request_handler(struct cldap_socket *cldap, if (search->num_attributes == 1 && strcasecmp(search->attributes[0], "netlogon") == 0) { cldapd_netlogon_request(cldap, ldap_msg->messageid, - search->filter, src_address, src_port); + search->tree, src_address, src_port); } else { DEBUG(0,("Unknown CLDAP search for '%s'\n", - ldap_msg->r.SearchRequest.filter)); + ldb_filter_from_tree(ldap_msg, + ldap_msg->r.SearchRequest.tree))); cldap_empty_reply(cldap, ldap_msg->messageid, src_address, src_port); } } -- cgit From b3e493470f3465cfe5cfa958b019ac8cfb8f12f2 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Sat, 25 Jun 2005 23:53:14 +0000 Subject: r7911: task_terminate() is defined in the macosx headers, so change the name to task_server_terminate() (This used to be commit a7447e25ac203f0ee09ffdf72df1094eb70e7c0c) --- source4/cldap_server/cldap_server.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'source4/cldap_server/cldap_server.c') diff --git a/source4/cldap_server/cldap_server.c b/source4/cldap_server/cldap_server.c index c6eaf6395a..62b6f59020 100644 --- a/source4/cldap_server/cldap_server.c +++ b/source4/cldap_server/cldap_server.c @@ -120,13 +120,13 @@ static void cldapd_task_init(struct task_server *task) NTSTATUS status; if (iface_count() == 0) { - task_terminate(task, "cldapd: no network interfaces configured"); + task_server_terminate(task, "cldapd: no network interfaces configured"); return; } cldapd = talloc(task, struct cldapd_server); if (cldapd == NULL) { - task_terminate(task, "cldapd: out of memory"); + task_server_terminate(task, "cldapd: out of memory"); return; } @@ -136,7 +136,7 @@ static void cldapd_task_init(struct task_server *task) /* start listening on the configured network interfaces */ status = cldapd_startup_interfaces(cldapd); if (!NT_STATUS_IS_OK(status)) { - task_terminate(task, "cldapd failed to setup interfaces"); + task_server_terminate(task, "cldapd failed to setup interfaces"); return; } } -- cgit From c6881d1e650fd284a366af76f5a214a5de05cc0c Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Sun, 10 Jul 2005 01:08:10 +0000 Subject: r8272: added the hooks for adding a name to a messaging context, so we will be able to send a message to the "ldap_server" task without having to know its task ID. (This used to be commit 8f69867867857e0c9a9246c2dec9612ccc234724) --- source4/cldap_server/cldap_server.c | 3 +++ 1 file changed, 3 insertions(+) (limited to 'source4/cldap_server/cldap_server.c') diff --git a/source4/cldap_server/cldap_server.c b/source4/cldap_server/cldap_server.c index 62b6f59020..31b59ebbe9 100644 --- a/source4/cldap_server/cldap_server.c +++ b/source4/cldap_server/cldap_server.c @@ -24,6 +24,7 @@ #include "libcli/ldap/ldap.h" #include "lib/events/events.h" #include "lib/socket/socket.h" +#include "lib/messaging/irpc.h" #include "smbd/service_task.h" #include "cldap_server/cldap_server.h" @@ -139,6 +140,8 @@ static void cldapd_task_init(struct task_server *task) task_server_terminate(task, "cldapd failed to setup interfaces"); return; } + + irpc_add_name(task->msg_ctx, "cldap_server"); } -- cgit From d4de4c2d210d2e8c9b5aedf70695594809ad6a0b Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Fri, 30 Dec 2005 13:16:54 +0000 Subject: r12608: Remove some unused #include lines. (This used to be commit 70e7449318aa0e9d2639c76730a7d1683b2f4981) --- source4/cldap_server/cldap_server.c | 1 - 1 file changed, 1 deletion(-) (limited to 'source4/cldap_server/cldap_server.c') diff --git a/source4/cldap_server/cldap_server.c b/source4/cldap_server/cldap_server.c index 31b59ebbe9..e112d7a33b 100644 --- a/source4/cldap_server/cldap_server.c +++ b/source4/cldap_server/cldap_server.c @@ -22,7 +22,6 @@ #include "includes.h" #include "libcli/ldap/ldap.h" -#include "lib/events/events.h" #include "lib/socket/socket.h" #include "lib/messaging/irpc.h" #include "smbd/service_task.h" -- cgit From f55ea8bb3dca868e21663cd90eaea7a35cd7886c Mon Sep 17 00:00:00 2001 From: Andrew Bartlett Date: Mon, 9 Jan 2006 22:12:53 +0000 Subject: r12804: This patch reworks the Samba4 sockets layer to use a socket_address structure that is more generic than just 'IP/port'. It now passes make test, and has been reviewed and updated by metze. (Thankyou *very* much). This passes 'make test' as well as kerberos use (not currently in the testsuite). The original purpose of this patch was to have Samba able to pass a socket address stucture from the BSD layer into the kerberos routines and back again. It also removes nbt_peer_addr, which was being used for a similar purpose. It is a large change, but worthwhile I feel. Andrew Bartlett (This used to be commit 88198c4881d8620a37086f80e4da5a5b71c5bbb2) --- source4/cldap_server/cldap_server.c | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) (limited to 'source4/cldap_server/cldap_server.c') diff --git a/source4/cldap_server/cldap_server.c b/source4/cldap_server/cldap_server.c index e112d7a33b..7270e01a4d 100644 --- a/source4/cldap_server/cldap_server.c +++ b/source4/cldap_server/cldap_server.c @@ -32,12 +32,12 @@ */ static void cldapd_request_handler(struct cldap_socket *cldap, struct ldap_message *ldap_msg, - const char *src_address, int src_port) + struct socket_address *src) { struct ldap_SearchRequest *search; if (ldap_msg->type != LDAP_TAG_SearchRequest) { DEBUG(0,("Invalid CLDAP request type %d from %s:%d\n", - ldap_msg->type, src_address, src_port)); + ldap_msg->type, src->addr, src->port)); return; } @@ -46,12 +46,12 @@ static void cldapd_request_handler(struct cldap_socket *cldap, if (search->num_attributes == 1 && strcasecmp(search->attributes[0], "netlogon") == 0) { cldapd_netlogon_request(cldap, ldap_msg->messageid, - search->tree, src_address, src_port); + search->tree, src); } else { DEBUG(0,("Unknown CLDAP search for '%s'\n", ldb_filter_from_tree(ldap_msg, ldap_msg->r.SearchRequest.tree))); - cldap_empty_reply(cldap, ldap_msg->messageid, src_address, src_port); + cldap_empty_reply(cldap, ldap_msg->messageid, src); } } @@ -62,13 +62,21 @@ static void cldapd_request_handler(struct cldap_socket *cldap, static NTSTATUS cldapd_add_socket(struct cldapd_server *cldapd, const char *address) { struct cldap_socket *cldapsock; + struct socket_address *socket_address; NTSTATUS status; /* listen for unicasts on the CLDAP port (389) */ cldapsock = cldap_socket_init(cldapd, cldapd->task->event_ctx); NT_STATUS_HAVE_NO_MEMORY(cldapsock); - status = socket_listen(cldapsock->sock, address, lp_cldap_port(), 0, 0); + socket_address = socket_address_from_strings(cldapsock, cldapsock->sock->backend_name, + address, lp_cldap_port()); + if (!socket_address) { + talloc_free(cldapsock); + return NT_STATUS_NO_MEMORY; + } + + status = socket_listen(cldapsock->sock, socket_address, 0, 0); if (!NT_STATUS_IS_OK(status)) { DEBUG(0,("Failed to bind to %s:%d - %s\n", address, lp_cldap_port(), nt_errstr(status))); @@ -76,6 +84,8 @@ static NTSTATUS cldapd_add_socket(struct cldapd_server *cldapd, const char *addr return status; } + talloc_free(socket_address); + cldap_set_incoming_handler(cldapsock, cldapd_request_handler, cldapd); return NT_STATUS_OK; -- cgit From 4ac2be99588b48b0652a524bf12fb1aa9c3f5fbb Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Tue, 7 Mar 2006 11:07:23 +0000 Subject: r13924: Split more prototypes out of include/proto.h + initial work on header file dependencies (This used to be commit 122835876748a3eaf5e8d31ad1abddab9acb8781) --- source4/cldap_server/cldap_server.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'source4/cldap_server/cldap_server.c') diff --git a/source4/cldap_server/cldap_server.c b/source4/cldap_server/cldap_server.c index 7270e01a4d..f522995bc4 100644 --- a/source4/cldap_server/cldap_server.c +++ b/source4/cldap_server/cldap_server.c @@ -26,6 +26,8 @@ #include "lib/messaging/irpc.h" #include "smbd/service_task.h" #include "cldap_server/cldap_server.h" +#include "system/network.h" +#include "netif/netif.h" /* handle incoming cldap requests @@ -95,7 +97,7 @@ static NTSTATUS cldapd_add_socket(struct cldapd_server *cldapd, const char *addr /* setup our listening sockets on the configured network interfaces */ -NTSTATUS cldapd_startup_interfaces(struct cldapd_server *cldapd) +static NTSTATUS cldapd_startup_interfaces(struct cldapd_server *cldapd) { int num_interfaces = iface_count(); TALLOC_CTX *tmp_ctx = talloc_new(cldapd); -- cgit From 9bd7dd912124d8ffda6f9967d6ba358c16be2aa0 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Tue, 7 Mar 2006 12:08:58 +0000 Subject: r13926: More header splitups. (This used to be commit 930daa9f416ecba1d75b8ad46bb42e336545672f) --- source4/cldap_server/cldap_server.c | 1 + 1 file changed, 1 insertion(+) (limited to 'source4/cldap_server/cldap_server.c') diff --git a/source4/cldap_server/cldap_server.c b/source4/cldap_server/cldap_server.c index f522995bc4..ef2487cc9d 100644 --- a/source4/cldap_server/cldap_server.c +++ b/source4/cldap_server/cldap_server.c @@ -25,6 +25,7 @@ #include "lib/socket/socket.h" #include "lib/messaging/irpc.h" #include "smbd/service_task.h" +#include "smbd/service.h" #include "cldap_server/cldap_server.h" #include "system/network.h" #include "netif/netif.h" -- cgit From 651ca6553edadb2b97339fd3c112fdb6ef6c08bc Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Thu, 9 Mar 2006 17:48:41 +0000 Subject: r14079: I just found the setproctitle library from alt linux:-) - add set_title hook to the process models - use setproctitle library in process_model standard if available - the the title for the task servers and on connections metze (This used to be commit 526f20bbecc9bbd607595637c15fc4001d3f0c70) --- source4/cldap_server/cldap_server.c | 2 ++ 1 file changed, 2 insertions(+) (limited to 'source4/cldap_server/cldap_server.c') diff --git a/source4/cldap_server/cldap_server.c b/source4/cldap_server/cldap_server.c index ef2487cc9d..3687eb5218 100644 --- a/source4/cldap_server/cldap_server.c +++ b/source4/cldap_server/cldap_server.c @@ -137,6 +137,8 @@ static void cldapd_task_init(struct task_server *task) return; } + task_server_set_title(task, "task[cldapd]"); + cldapd = talloc(task, struct cldapd_server); if (cldapd == NULL) { task_server_terminate(task, "cldapd: out of memory"); -- cgit From a2eca9174c7803732658a1e6f7e8ed873c4fb6fd Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Thu, 17 Aug 2006 13:37:04 +0000 Subject: r17586: merge lib/netif into lib/socket and use -lnsl -lsocket on the configure check for the interfaces. should fix the build on some old sun boxes metze (This used to be commit f20e251bfd9f1eb7ce5c00739631b1625a2aa467) --- source4/cldap_server/cldap_server.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'source4/cldap_server/cldap_server.c') diff --git a/source4/cldap_server/cldap_server.c b/source4/cldap_server/cldap_server.c index 3687eb5218..4c1c7b86c5 100644 --- a/source4/cldap_server/cldap_server.c +++ b/source4/cldap_server/cldap_server.c @@ -28,7 +28,7 @@ #include "smbd/service.h" #include "cldap_server/cldap_server.h" #include "system/network.h" -#include "netif/netif.h" +#include "lib/socket/netif.h" /* handle incoming cldap requests -- cgit From b471ed1a0cec6f978f5aa183e925766faca13f59 Mon Sep 17 00:00:00 2001 From: Stefan Metzmacher Date: Thu, 16 Nov 2006 10:47:15 +0000 Subject: r19736: handle rootdse call via CLDAP metze (This used to be commit 39dc94b219355ba774b309e26f1d93070d9d080b) --- source4/cldap_server/cldap_server.c | 38 +++++++++++++++++++++++++++++++------ 1 file changed, 32 insertions(+), 6 deletions(-) (limited to 'source4/cldap_server/cldap_server.c') diff --git a/source4/cldap_server/cldap_server.c b/source4/cldap_server/cldap_server.c index 4c1c7b86c5..d36cf8b637 100644 --- a/source4/cldap_server/cldap_server.c +++ b/source4/cldap_server/cldap_server.c @@ -29,6 +29,11 @@ #include "cldap_server/cldap_server.h" #include "system/network.h" #include "lib/socket/netif.h" +#include "lib/ldb/include/ldb.h" +#include "lib/ldb/include/ldb_errors.h" +#include "dsdb/samdb/samdb.h" +#include "db_wrap.h" +#include "auth/auth.h" /* handle incoming cldap requests @@ -41,21 +46,38 @@ static void cldapd_request_handler(struct cldap_socket *cldap, if (ldap_msg->type != LDAP_TAG_SearchRequest) { DEBUG(0,("Invalid CLDAP request type %d from %s:%d\n", ldap_msg->type, src->addr, src->port)); + cldap_error_reply(cldap, ldap_msg->messageid, src, + LDAP_OPERATIONS_ERROR, "Invalid CLDAP request"); return; } search = &ldap_msg->r.SearchRequest; + if (strcmp("", search->basedn) != 0) { + DEBUG(0,("Invalid CLDAP basedn '%s' from %s:%d\n", + search->basedn, src->addr, src->port)); + cldap_error_reply(cldap, ldap_msg->messageid, src, + LDAP_OPERATIONS_ERROR, "Invalid CLDAP basedn"); + return; + } + + if (search->scope != LDAP_SEARCH_SCOPE_BASE) { + DEBUG(0,("Invalid CLDAP scope %d from %s:%d\n", + search->scope, src->addr, src->port)); + cldap_error_reply(cldap, ldap_msg->messageid, src, + LDAP_OPERATIONS_ERROR, "Invalid CLDAP scope"); + return; + } + if (search->num_attributes == 1 && strcasecmp(search->attributes[0], "netlogon") == 0) { cldapd_netlogon_request(cldap, ldap_msg->messageid, search->tree, src); - } else { - DEBUG(0,("Unknown CLDAP search for '%s'\n", - ldb_filter_from_tree(ldap_msg, - ldap_msg->r.SearchRequest.tree))); - cldap_empty_reply(cldap, ldap_msg->messageid, src); + return; } + + cldapd_rootdse_request(cldap, ldap_msg->messageid, + search, src); } @@ -146,7 +168,11 @@ static void cldapd_task_init(struct task_server *task) } cldapd->task = task; - cldapd->samctx = NULL; + cldapd->samctx = samdb_connect(cldapd, anonymous_session(cldapd)); + if (cldapd->samctx == NULL) { + task_server_terminate(task, "cldapd failed to open samdb"); + return; + } /* start listening on the configured network interfaces */ status = cldapd_startup_interfaces(cldapd); -- cgit From 0479a2f1cbae51fcd8dbdc3c148c808421fb4d25 Mon Sep 17 00:00:00 2001 From: Andrew Tridgell Date: Tue, 10 Jul 2007 02:07:03 +0000 Subject: r23792: convert Samba4 to GPLv3 There are still a few tidyups of old FSF addresses to come (in both s3 and s4). More commits soon. (This used to be commit fcf38a38ac691abd0fa51b89dc951a08e89fdafa) --- source4/cldap_server/cldap_server.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) (limited to 'source4/cldap_server/cldap_server.c') diff --git a/source4/cldap_server/cldap_server.c b/source4/cldap_server/cldap_server.c index d36cf8b637..a1a1414c98 100644 --- a/source4/cldap_server/cldap_server.c +++ b/source4/cldap_server/cldap_server.c @@ -7,7 +7,7 @@ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by - the Free Software Foundation; either version 2 of the License, or + the Free Software Foundation; either version 3 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, @@ -16,8 +16,7 @@ GNU General Public License for more details. You should have received a copy of the GNU General Public License - along with this program; if not, write to the Free Software - Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. + along with this program. If not, see . */ #include "includes.h" -- cgit From ffeee68e4b72dd94fee57366bd8d38b8c284c3d4 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Sat, 8 Sep 2007 12:42:09 +0000 Subject: r25026: Move param/param.h out of includes.h (This used to be commit abe8349f9b4387961ff3665d8c589d61cd2edf31) --- source4/cldap_server/cldap_server.c | 1 + 1 file changed, 1 insertion(+) (limited to 'source4/cldap_server/cldap_server.c') diff --git a/source4/cldap_server/cldap_server.c b/source4/cldap_server/cldap_server.c index a1a1414c98..fbf6f786db 100644 --- a/source4/cldap_server/cldap_server.c +++ b/source4/cldap_server/cldap_server.c @@ -33,6 +33,7 @@ #include "dsdb/samdb/samdb.h" #include "db_wrap.h" #include "auth/auth.h" +#include "param/param.h" /* handle incoming cldap requests -- cgit From 37d53832a4623653f706e77985a79d84bd7c6694 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Fri, 28 Sep 2007 01:17:46 +0000 Subject: r25398: Parse loadparm context to all lp_*() functions. (This used to be commit 3fcc960839c6e5ca4de2c3c042f12f369ac5f238) --- source4/cldap_server/cldap_server.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'source4/cldap_server/cldap_server.c') diff --git a/source4/cldap_server/cldap_server.c b/source4/cldap_server/cldap_server.c index fbf6f786db..466444ace8 100644 --- a/source4/cldap_server/cldap_server.c +++ b/source4/cldap_server/cldap_server.c @@ -95,7 +95,7 @@ static NTSTATUS cldapd_add_socket(struct cldapd_server *cldapd, const char *addr NT_STATUS_HAVE_NO_MEMORY(cldapsock); socket_address = socket_address_from_strings(cldapsock, cldapsock->sock->backend_name, - address, lp_cldap_port()); + address, lp_cldap_port(global_loadparm)); if (!socket_address) { talloc_free(cldapsock); return NT_STATUS_NO_MEMORY; @@ -104,7 +104,7 @@ static NTSTATUS cldapd_add_socket(struct cldapd_server *cldapd, const char *addr status = socket_listen(cldapsock->sock, socket_address, 0, 0); if (!NT_STATUS_IS_OK(status)) { DEBUG(0,("Failed to bind to %s:%d - %s\n", - address, lp_cldap_port(), nt_errstr(status))); + address, lp_cldap_port(global_loadparm), nt_errstr(status))); talloc_free(cldapsock); return status; } @@ -128,7 +128,7 @@ static NTSTATUS cldapd_startup_interfaces(struct cldapd_server *cldapd) /* if we are allowing incoming packets from any address, then we need to bind to the wildcard address */ - if (!lp_bind_interfaces_only()) { + if (!lp_bind_interfaces_only(global_loadparm)) { status = cldapd_add_socket(cldapd, "0.0.0.0"); NT_STATUS_NOT_OK_RETURN(status); } else { -- cgit From 5294e82e21aa5cf891f27f3e3f63c745efdb66c8 Mon Sep 17 00:00:00 2001 From: Andrew Bartlett Date: Tue, 13 Nov 2007 22:26:24 +0100 Subject: r25938: We don't need the CLDAP server unless we are a DC. Andrew Bartlett (This used to be commit e8606bbcc67e24bdc2ee062ab3d808e5d2143d69) --- source4/cldap_server/cldap_server.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) (limited to 'source4/cldap_server/cldap_server.c') diff --git a/source4/cldap_server/cldap_server.c b/source4/cldap_server/cldap_server.c index 466444ace8..454beb3ae2 100644 --- a/source4/cldap_server/cldap_server.c +++ b/source4/cldap_server/cldap_server.c @@ -159,6 +159,18 @@ static void cldapd_task_init(struct task_server *task) return; } + switch (lp_server_role(global_loadparm)) { + case ROLE_STANDALONE: + task_server_terminate(task, "cldap_server: no CLDAP server required in standalone configuration"); + return; + case ROLE_DOMAIN_MEMBER: + task_server_terminate(task, "cldap_server: no CLDAP server required in member server configuration"); + return; + case ROLE_DOMAIN_CONTROLLER: + /* Yes, we want an CLDAP server */ + break; + } + task_server_set_title(task, "task[cldapd]"); cldapd = talloc(task, struct cldapd_server); -- cgit From ca0b72a1fdb7bd965065e833df34662afef0423e Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Fri, 16 Nov 2007 20:12:00 +0100 Subject: r26003: Split up DB_WRAP, as first step in an attempt to sanitize dependencies. (This used to be commit 56dfcb4f2f8e74c9d8b2fe3a0df043781188a555) --- source4/cldap_server/cldap_server.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'source4/cldap_server/cldap_server.c') diff --git a/source4/cldap_server/cldap_server.c b/source4/cldap_server/cldap_server.c index 454beb3ae2..ed78f45ca7 100644 --- a/source4/cldap_server/cldap_server.c +++ b/source4/cldap_server/cldap_server.c @@ -31,7 +31,7 @@ #include "lib/ldb/include/ldb.h" #include "lib/ldb/include/ldb_errors.h" #include "dsdb/samdb/samdb.h" -#include "db_wrap.h" +#include "ldb_wrap.h" #include "auth/auth.h" #include "param/param.h" -- cgit From f4a1083cf9f64b4d2b65b68942e93861409ea90f Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Sun, 2 Dec 2007 17:09:52 +0100 Subject: r26227: Make loadparm_context part of a server task, move loadparm_contexts further up the call stack. (This used to be commit 0721a07aada6a1fae6dcbd610b8783df57d7bbad) --- source4/cldap_server/cldap_server.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'source4/cldap_server/cldap_server.c') diff --git a/source4/cldap_server/cldap_server.c b/source4/cldap_server/cldap_server.c index ed78f45ca7..d43669a9e1 100644 --- a/source4/cldap_server/cldap_server.c +++ b/source4/cldap_server/cldap_server.c @@ -159,7 +159,7 @@ static void cldapd_task_init(struct task_server *task) return; } - switch (lp_server_role(global_loadparm)) { + switch (lp_server_role(task->lp_ctx)) { case ROLE_STANDALONE: task_server_terminate(task, "cldap_server: no CLDAP server required in standalone configuration"); return; @@ -180,7 +180,7 @@ static void cldapd_task_init(struct task_server *task) } cldapd->task = task; - cldapd->samctx = samdb_connect(cldapd, anonymous_session(cldapd)); + cldapd->samctx = samdb_connect(cldapd, task->lp_ctx, anonymous_session(cldapd)); if (cldapd->samctx == NULL) { task_server_terminate(task, "cldapd failed to open samdb"); return; -- cgit From 934e932387ea5668ec000bcefe4ec86935297339 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Sun, 2 Dec 2007 21:32:08 +0100 Subject: r26235: Avoid global_loadparm. (This used to be commit e9039782204389cc827e76da319d5ccf6d33be46) --- source4/cldap_server/cldap_server.c | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) (limited to 'source4/cldap_server/cldap_server.c') diff --git a/source4/cldap_server/cldap_server.c b/source4/cldap_server/cldap_server.c index d43669a9e1..b43137c8df 100644 --- a/source4/cldap_server/cldap_server.c +++ b/source4/cldap_server/cldap_server.c @@ -84,7 +84,8 @@ static void cldapd_request_handler(struct cldap_socket *cldap, /* start listening on the given address */ -static NTSTATUS cldapd_add_socket(struct cldapd_server *cldapd, const char *address) +static NTSTATUS cldapd_add_socket(struct cldapd_server *cldapd, struct loadparm_context *lp_ctx, + const char *address) { struct cldap_socket *cldapsock; struct socket_address *socket_address; @@ -95,7 +96,7 @@ static NTSTATUS cldapd_add_socket(struct cldapd_server *cldapd, const char *addr NT_STATUS_HAVE_NO_MEMORY(cldapsock); socket_address = socket_address_from_strings(cldapsock, cldapsock->sock->backend_name, - address, lp_cldap_port(global_loadparm)); + address, lp_cldap_port(lp_ctx)); if (!socket_address) { talloc_free(cldapsock); return NT_STATUS_NO_MEMORY; @@ -104,7 +105,7 @@ static NTSTATUS cldapd_add_socket(struct cldapd_server *cldapd, const char *addr status = socket_listen(cldapsock->sock, socket_address, 0, 0); if (!NT_STATUS_IS_OK(status)) { DEBUG(0,("Failed to bind to %s:%d - %s\n", - address, lp_cldap_port(global_loadparm), nt_errstr(status))); + address, lp_cldap_port(lp_ctx), nt_errstr(status))); talloc_free(cldapsock); return status; } @@ -120,7 +121,7 @@ static NTSTATUS cldapd_add_socket(struct cldapd_server *cldapd, const char *addr /* setup our listening sockets on the configured network interfaces */ -static NTSTATUS cldapd_startup_interfaces(struct cldapd_server *cldapd) +static NTSTATUS cldapd_startup_interfaces(struct cldapd_server *cldapd, struct loadparm_context *lp_ctx) { int num_interfaces = iface_count(); TALLOC_CTX *tmp_ctx = talloc_new(cldapd); @@ -128,15 +129,15 @@ static NTSTATUS cldapd_startup_interfaces(struct cldapd_server *cldapd) /* if we are allowing incoming packets from any address, then we need to bind to the wildcard address */ - if (!lp_bind_interfaces_only(global_loadparm)) { - status = cldapd_add_socket(cldapd, "0.0.0.0"); + if (!lp_bind_interfaces_only(lp_ctx)) { + status = cldapd_add_socket(cldapd, lp_ctx, "0.0.0.0"); NT_STATUS_NOT_OK_RETURN(status); } else { int i; for (i=0; ilp_ctx); if (!NT_STATUS_IS_OK(status)) { task_server_terminate(task, "cldapd failed to setup interfaces"); return; -- cgit From 291ddf433685ee5c25e172885045a4b60d7bb1ee Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Mon, 3 Dec 2007 00:28:07 +0100 Subject: r26237: Add loadparm context to the server service interface. (This used to be commit 1386c5c92505a950c65411b8af74d703ce023f95) --- source4/cldap_server/cldap_server.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'source4/cldap_server/cldap_server.c') diff --git a/source4/cldap_server/cldap_server.c b/source4/cldap_server/cldap_server.c index b43137c8df..477526a1f2 100644 --- a/source4/cldap_server/cldap_server.c +++ b/source4/cldap_server/cldap_server.c @@ -201,7 +201,7 @@ static void cldapd_task_init(struct task_server *task) /* initialise the cldapd server */ -static NTSTATUS cldapd_init(struct event_context *event_ctx, const struct model_ops *model_ops) +static NTSTATUS cldapd_init(struct event_context *event_ctx, struct loadparm_context *lp_ctx, const struct model_ops *model_ops) { return task_server_startup(event_ctx, model_ops, cldapd_task_init); } -- cgit From ecea5ce24553989103d4a06296b24f4d29f30a36 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Mon, 3 Dec 2007 17:41:50 +0100 Subject: r26260: Store loadparm context in gensec context. (This used to be commit b9e3a4862e267be39d603fed8207a237c3d72081) --- source4/cldap_server/cldap_server.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'source4/cldap_server/cldap_server.c') diff --git a/source4/cldap_server/cldap_server.c b/source4/cldap_server/cldap_server.c index 477526a1f2..f2c3568469 100644 --- a/source4/cldap_server/cldap_server.c +++ b/source4/cldap_server/cldap_server.c @@ -181,7 +181,7 @@ static void cldapd_task_init(struct task_server *task) } cldapd->task = task; - cldapd->samctx = samdb_connect(cldapd, task->lp_ctx, anonymous_session(cldapd)); + cldapd->samctx = samdb_connect(cldapd, task->lp_ctx, anonymous_session(cldapd, task->lp_ctx)); if (cldapd->samctx == NULL) { task_server_terminate(task, "cldapd failed to open samdb"); return; -- cgit From c5bf20c5fe7eaa04cd11a7ce4f365aa6ffd7b124 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Thu, 6 Dec 2007 23:57:22 +0100 Subject: r26325: Remove use of global_loadparm in netif. (This used to be commit e452cb28594f23add7c00247ed39e8323aea78a6) --- source4/cldap_server/cldap_server.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'source4/cldap_server/cldap_server.c') diff --git a/source4/cldap_server/cldap_server.c b/source4/cldap_server/cldap_server.c index f2c3568469..d71e933b5f 100644 --- a/source4/cldap_server/cldap_server.c +++ b/source4/cldap_server/cldap_server.c @@ -123,7 +123,7 @@ static NTSTATUS cldapd_add_socket(struct cldapd_server *cldapd, struct loadparm_ */ static NTSTATUS cldapd_startup_interfaces(struct cldapd_server *cldapd, struct loadparm_context *lp_ctx) { - int num_interfaces = iface_count(); + int num_interfaces = iface_count(lp_ctx); TALLOC_CTX *tmp_ctx = talloc_new(cldapd); NTSTATUS status; @@ -136,7 +136,7 @@ static NTSTATUS cldapd_startup_interfaces(struct cldapd_server *cldapd, struct l int i; for (i=0; ilp_ctx) == 0) { task_server_terminate(task, "cldapd: no network interfaces configured"); return; } -- cgit From 6f2252dace1629d7b5c5637b103caa28d2c89b07 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Tue, 11 Dec 2007 22:23:14 +0100 Subject: r26401: Don't cache interfaces context in libnetif. (This used to be commit 9f975417cc66bfd4589da38bfd23731dbe0e6153) --- source4/cldap_server/cldap_server.c | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) (limited to 'source4/cldap_server/cldap_server.c') diff --git a/source4/cldap_server/cldap_server.c b/source4/cldap_server/cldap_server.c index d71e933b5f..8f6c9410f8 100644 --- a/source4/cldap_server/cldap_server.c +++ b/source4/cldap_server/cldap_server.c @@ -121,12 +121,15 @@ static NTSTATUS cldapd_add_socket(struct cldapd_server *cldapd, struct loadparm_ /* setup our listening sockets on the configured network interfaces */ -static NTSTATUS cldapd_startup_interfaces(struct cldapd_server *cldapd, struct loadparm_context *lp_ctx) +static NTSTATUS cldapd_startup_interfaces(struct cldapd_server *cldapd, struct loadparm_context *lp_ctx, + struct interface *ifaces) { - int num_interfaces = iface_count(lp_ctx); + int num_interfaces; TALLOC_CTX *tmp_ctx = talloc_new(cldapd); NTSTATUS status; + num_interfaces = iface_count(ifaces); + /* if we are allowing incoming packets from any address, then we need to bind to the wildcard address */ if (!lp_bind_interfaces_only(lp_ctx)) { @@ -136,7 +139,7 @@ static NTSTATUS cldapd_startup_interfaces(struct cldapd_server *cldapd, struct l int i; for (i=0; ilp_ctx), &ifaces); - if (iface_count(task->lp_ctx) == 0) { + if (iface_count(ifaces) == 0) { task_server_terminate(task, "cldapd: no network interfaces configured"); return; } @@ -188,7 +194,7 @@ static void cldapd_task_init(struct task_server *task) } /* start listening on the configured network interfaces */ - status = cldapd_startup_interfaces(cldapd, task->lp_ctx); + status = cldapd_startup_interfaces(cldapd, task->lp_ctx, ifaces); if (!NT_STATUS_IS_OK(status)) { task_server_terminate(task, "cldapd failed to setup interfaces"); return; -- cgit From 70f1f33af8e6e82506d0ee9ff6cc7e0923a7d0a1 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Tue, 11 Dec 2007 22:23:20 +0100 Subject: r26402: Require a talloc context in libnetif. (This used to be commit a35e51871bbf1ab33fc316fa59e597b722769c50) --- source4/cldap_server/cldap_server.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'source4/cldap_server/cldap_server.c') diff --git a/source4/cldap_server/cldap_server.c b/source4/cldap_server/cldap_server.c index 8f6c9410f8..47597ff1db 100644 --- a/source4/cldap_server/cldap_server.c +++ b/source4/cldap_server/cldap_server.c @@ -159,7 +159,7 @@ static void cldapd_task_init(struct task_server *task) NTSTATUS status; struct interface *ifaces; - load_interfaces(lp_interfaces(task->lp_ctx), &ifaces); + load_interfaces(task, lp_interfaces(task->lp_ctx), &ifaces); if (iface_count(ifaces) == 0) { task_server_terminate(task, "cldapd: no network interfaces configured"); -- cgit From df408d056ec03f2abe08ce0ea487e1875b90e7bf Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Sat, 5 Jan 2008 19:03:43 -0600 Subject: r26672: Janitorial: Remove uses of global_loadparm. (This used to be commit 18cd08623eaad7d2cd63b82ea5275d4dfd21cf00) --- source4/cldap_server/cldap_server.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'source4/cldap_server/cldap_server.c') diff --git a/source4/cldap_server/cldap_server.c b/source4/cldap_server/cldap_server.c index 47597ff1db..d68637104d 100644 --- a/source4/cldap_server/cldap_server.c +++ b/source4/cldap_server/cldap_server.c @@ -209,7 +209,7 @@ static void cldapd_task_init(struct task_server *task) */ static NTSTATUS cldapd_init(struct event_context *event_ctx, struct loadparm_context *lp_ctx, const struct model_ops *model_ops) { - return task_server_startup(event_ctx, model_ops, cldapd_task_init); + return task_server_startup(event_ctx, lp_ctx, model_ops, cldapd_task_init); } -- cgit From 23d681caf9c1186999ac676d70a1eb0e8a43e358 Mon Sep 17 00:00:00 2001 From: Andrew Bartlett Date: Mon, 4 Feb 2008 17:48:51 +1100 Subject: Rework service init functions to pass down service name. This is needed to change prefork behaviour based on what service is being started. Andrew Bartlett and David Disseldorp (This used to be commit 0d830580e3539c96da3aa6c72fafe6eacd7a74a0) --- source4/cldap_server/cldap_server.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'source4/cldap_server/cldap_server.c') diff --git a/source4/cldap_server/cldap_server.c b/source4/cldap_server/cldap_server.c index d68637104d..944d679a2d 100644 --- a/source4/cldap_server/cldap_server.c +++ b/source4/cldap_server/cldap_server.c @@ -209,7 +209,7 @@ static void cldapd_task_init(struct task_server *task) */ static NTSTATUS cldapd_init(struct event_context *event_ctx, struct loadparm_context *lp_ctx, const struct model_ops *model_ops) { - return task_server_startup(event_ctx, lp_ctx, model_ops, cldapd_task_init); + return task_server_startup(event_ctx, lp_ctx, "cldap", model_ops, cldapd_task_init); } -- cgit From 0f8eeb81ec109cde681961614fb690f8373fa9c6 Mon Sep 17 00:00:00 2001 From: Andrew Bartlett Date: Mon, 4 Feb 2008 21:58:29 +1100 Subject: Remove useless layer of indirection, where every service called task_service_init() manually. Now this is called from service.c for all services. Andrew Bartlett (This used to be commit 9c9a4731cafd0dcf6c8523a7b06759cd4f14e4db) --- source4/cldap_server/cldap_server.c | 11 +---------- 1 file changed, 1 insertion(+), 10 deletions(-) (limited to 'source4/cldap_server/cldap_server.c') diff --git a/source4/cldap_server/cldap_server.c b/source4/cldap_server/cldap_server.c index 944d679a2d..7858ee2cf0 100644 --- a/source4/cldap_server/cldap_server.c +++ b/source4/cldap_server/cldap_server.c @@ -204,19 +204,10 @@ static void cldapd_task_init(struct task_server *task) } -/* - initialise the cldapd server - */ -static NTSTATUS cldapd_init(struct event_context *event_ctx, struct loadparm_context *lp_ctx, const struct model_ops *model_ops) -{ - return task_server_startup(event_ctx, lp_ctx, "cldap", model_ops, cldapd_task_init); -} - - /* register ourselves as a available server */ NTSTATUS server_service_cldapd_init(void) { - return register_server_service("cldap", cldapd_init); + return register_server_service("cldap", cldapd_task_init); } -- cgit From c38c2765d1059b33f044a42c6555f3d10d339911 Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Thu, 21 Feb 2008 17:17:37 +0100 Subject: Remove yet more uses of global_loadparm. (This used to be commit e01c1e87c0fe9709df7eb5b863f7ce85564174cd) --- source4/cldap_server/cldap_server.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'source4/cldap_server/cldap_server.c') diff --git a/source4/cldap_server/cldap_server.c b/source4/cldap_server/cldap_server.c index 7858ee2cf0..783e31d1ae 100644 --- a/source4/cldap_server/cldap_server.c +++ b/source4/cldap_server/cldap_server.c @@ -92,7 +92,7 @@ static NTSTATUS cldapd_add_socket(struct cldapd_server *cldapd, struct loadparm_ NTSTATUS status; /* listen for unicasts on the CLDAP port (389) */ - cldapsock = cldap_socket_init(cldapd, cldapd->task->event_ctx); + cldapsock = cldap_socket_init(cldapd, cldapd->task->event_ctx, lp_iconv_convenience(cldapd->task->lp_ctx)); NT_STATUS_HAVE_NO_MEMORY(cldapsock); socket_address = socket_address_from_strings(cldapsock, cldapsock->sock->backend_name, -- cgit From 21fc7673780aa1d7c0caab7b17ff9171238913ba Mon Sep 17 00:00:00 2001 From: Jelmer Vernooij Date: Thu, 17 Apr 2008 12:23:44 +0200 Subject: Specify event_context to ldb_wrap_connect explicitly. (This used to be commit b4e1ae07a284c044704322446c94351c2decff91) --- source4/cldap_server/cldap_server.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'source4/cldap_server/cldap_server.c') diff --git a/source4/cldap_server/cldap_server.c b/source4/cldap_server/cldap_server.c index 783e31d1ae..58e9e2d89b 100644 --- a/source4/cldap_server/cldap_server.c +++ b/source4/cldap_server/cldap_server.c @@ -187,7 +187,7 @@ static void cldapd_task_init(struct task_server *task) } cldapd->task = task; - cldapd->samctx = samdb_connect(cldapd, task->lp_ctx, anonymous_session(cldapd, task->lp_ctx)); + cldapd->samctx = samdb_connect(cldapd, task->event_ctx, task->lp_ctx, anonymous_session(cldapd, task->event_ctx, task->lp_ctx)); if (cldapd->samctx == NULL) { task_server_terminate(task, "cldapd failed to open samdb"); return; -- cgit From 6f55742b4c485258db3b8ffe36506d8623be883c Mon Sep 17 00:00:00 2001 From: Andrew Bartlett Date: Mon, 30 Jun 2008 12:22:50 +1000 Subject: Rework samdb handling for 'netlogon' packets. Don't reopen the samdb for every netlogon packet, and use the system_session(), as we must access data not available to anonymous. Perhaps we should consider a 'authenticated but not system' token, if we want more control on this. Andrew Bartlett (This used to be commit d10c9b71ea7f2670c4ea5ec569bcb7f49ec41362) --- source4/cldap_server/cldap_server.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'source4/cldap_server/cldap_server.c') diff --git a/source4/cldap_server/cldap_server.c b/source4/cldap_server/cldap_server.c index 58e9e2d89b..310fb564e0 100644 --- a/source4/cldap_server/cldap_server.c +++ b/source4/cldap_server/cldap_server.c @@ -187,7 +187,7 @@ static void cldapd_task_init(struct task_server *task) } cldapd->task = task; - cldapd->samctx = samdb_connect(cldapd, task->event_ctx, task->lp_ctx, anonymous_session(cldapd, task->event_ctx, task->lp_ctx)); + cldapd->samctx = samdb_connect(cldapd, task->event_ctx, task->lp_ctx, system_session(cldapd, task->lp_ctx)); if (cldapd->samctx == NULL) { task_server_terminate(task, "cldapd failed to open samdb"); return; -- cgit