1
0
mirror of https://github.com/samba-team/samba.git synced 2025-06-24 15:17:06 +03:00

350 Commits

Author SHA1 Message Date
Andrew Bartlett
bd53628c7a s4:ldb Add new function to create a cut down list of controls
This I hope will be useful for removing controls from the ldb_reply

Andrew Bartlett
2009-10-21 22:43:56 +11:00
Andrew Bartlett
17237f18f0 s4:ldb Add function to add controls to an LDB reply 2009-10-21 22:43:53 +11:00
Matthias Dieter Wallnöfer
d673b49dfc s4:ldb_msg_check_string_attribute - add a comment about the result values 2009-10-18 18:16:31 +02:00
Matthias Dieter Wallnöfer
817208090d s4:ldb.h - add constant for LDAP EXOP password change
Also enhance some other comments.
2009-10-03 13:27:50 +02:00
Matthias Dieter Wallnöfer
ee956c9172 s4:ldb.h - cosmetic - add whitespace 2009-10-02 12:45:09 +02:00
Andrew Bartlett
46c2af3612 s4:dsdb Add 'lazy_commit' module to swallow the 'lazy commit' OID
This allows this control to be specified as critical.  We support the
control because we choose to always be durable in our transactions.

We really, really need a 'duplicate request' API, as at the
moment we can't do this without a large, error-prone set of code that
cannot cope with new request fields or types.

Andrew Bartlett
2009-10-02 12:45:06 +02:00
Matthieu Patou
a73a0372f9 s4-ldb: Add new relax controls that allow relaxed x500 constraints checks 2009-10-02 12:44:59 +02:00
Andrew Tridgell
fd22e03047 s4-ldb: Add support for binary blobs in DNs
AD has the concept of a DN prefixed with B:NN:XXXXXX: that contains a
binary blob. We need to support those in order to give correctly
formatted binary blobs for things like wellKnownObjects

This implementation is not ideal, as it allows for binary blobs on all
DNs, whereas it should only allow them on those with a syntax of
2.5.5.7. We should clean this up in the future, but meanwhile this
implementation at least gets us a working DC join of w2k8 to s4.

This patch also uses a static function for marking DNs as invalid,
which is very useful when debugging this code, as you can break on it
in gdb.
2009-10-02 12:03:05 +10:00
Andrew Tridgell
83bef7d047 s4-ldb: server side sort args are const char * 2009-09-22 17:10:06 -07:00
Andrew Tridgell
2e98ee0907 s4-ldb: only show the outer level of ldb ops when tracing 2009-09-22 17:10:05 -07:00
Andrew Tridgell
ec5d01278a s4-ldb: don't show timestamps on every line of ldb traces
This adds ldb_debug_add() and ldb_debug_end() to format multiline
messages
2009-09-22 17:10:05 -07:00
Andrew Bartlett
399c7160d5 s4:ldb Add 'single-value' support to LDB.
This is currently only triggered via Samba4's schema code.
2009-09-21 20:50:26 -07:00
Andrew Tridgell
97ffb912c1 s4-ldb: add a LDB_FLG_ENABLE_TRACING for full ldb tracing
When LDB_FLG_ENABLE_TRACING is set ldb will send full traces
of all operations and results
2009-09-21 15:27:05 -07:00
Stefan Metzmacher
46dab92a2d s4:ldb: add ldb_parse_tree_copy_shallow() and change version to 0.9.7
metze
2009-09-20 06:44:16 +02:00
Andrew Tridgell
a99e216a47 s4-ldb: expose ldb_transaction_prepare_commit() in ldb
It is useful to be able to control the 2 phase commit from application
code (s4 replication uses it)
2009-09-15 14:07:06 -07:00
Jelmer Vernooij
d0c9d5ed8e ldb: Remove references to operational module init function.
This module is now part of Samba 4's dsdb subsystem rather than
standalone ldb.
2009-09-11 23:49:57 +02:00
Andrew Tridgell
237f720e6c s4/ldb: expose the ldb flags with ldb_get_flags() 2009-09-08 21:56:31 +10:00
Andrew Tridgell
29ba7765d9 s4/ldb: added --show-binary command line option
This add --show-binary to ldbsearch. When this flag is set, binary
blobs will be shown as-is, instead of base64 encoded. This is useful
for some XML encoded attributes, and will also be used as part of some
NDR print formatting for attributes like repsTo.
2009-09-08 21:56:31 +10:00
Andrew Tridgell
783cde7966 s4/ldb: fixed spelling 2009-09-08 11:52:44 +10:00
Matthias Dieter Wallnöfer
3694160ad9 s4:ldb_errors - add spaces 2009-09-06 12:21:28 +02:00
Andrew Tridgell
8995491f59 ldb: make ldb module programming less error prone
When a top level method in a module returns an error, it is supposed
to call ldb_module_done(). We ran across a case where this wasn't
done, and then found that in fact that are hundreds of similar cases
in our modules. It took Andrew and I a full day to work out that this
was the cause of a subtle segv in another part of the code.

To try to prevent this happening again, this patch changes
ldb_next_request() to catch the error by checking if a module
returning an error has called ldb_module_done(). If it hasn't then the
call is made on behalf of the module.
2009-09-04 17:29:21 +10:00
Andrew Tridgell
bfccc4590d always use prepare_commit in ldb transaction commits if possible
The reason we need this is to make multi-tdb transactions safe, with
the partition module. The linked_attributes and repl_meta_data modules
now do extra processing when the transaction ends, and that processing
can fail. When it fails we need to cancel the transaction, which we
can only do if the hook is on the prepare commit instead of the end
transaction call. Otherwise the partition module cannot ensure that no
commit has been done on another partition.
2009-09-03 18:36:09 +10:00
Andrew Tridgell
b5bf440065 added ldb_ldif_message_string()
This function provides a easy function for displaying a ldb_message
structure in a human readable format. It is especially useful for
calling in gdb.
2009-09-02 18:19:54 +10:00
Michael Adam
e3c7e9e81e s4-ldb: update dlinklist.h to match main copy (lib/util/dlinklist.h)
Michael
2009-08-28 14:25:40 +02:00
Andrew Bartlett
425386ff61 s4:ldb Add ldb_ldif_write_string() and python wrappers
This allows us to turn a python LdbMessage back into a string.

Andrew Bartlett
2009-08-26 15:59:00 +10:00
Stefan Metzmacher
d005e4dabb s4:ldb: add support for the new Recycle Bin Feature LDAP controls
LDB_CONTROL_SHOW_RECYCLED_OID         1.2.840.113556.1.4.2064
LDB_CONTROL_SHOW_DEACTIVATED_LINK_OID 1.2.840.113556.1.4.2065

metze
2009-07-23 18:04:33 +02:00
Andrew Bartlett
4e58c7881e s4:ldb Allow rootdse module to build without ldb_private.h
It seems quite reasonable to allow modules to re-initialise the set of
cached DNs on the ldb context.

Andrew Bartlett
2009-06-30 15:30:13 +10:00
Andrew Tridgell
5a39817212 added support for unique indexing in ldb
When a attribute is marked as LDB_ATTR_FLAG_UNIQUE_INDEX then attempts
to add a 2nd record that has the same attribute value for this
attribute as another record will fail.

This provides a much more efficient mechanism for ensuring that
attributes like objectGUID are unique
2009-06-01 16:36:21 +10:00
Andrew Tridgell
9539e2b508 major upgrade to the ldb attribute handling
This is all working towards supporting the full WSPP schema without a
major performance penalty.

We now use binary searches when looking up classes and attributes. We
also avoid the loop loading the attributes into ldb, by adding a hook
to override the ldb attribute search function in a module. The
attributes can thus be loaded once, and then saved as part of the
global schema. 

Also added support for a few more key attribute syntaxes, as needed
for the full schema.
2009-04-02 16:42:21 +11:00
Andrew Tridgell
6688ee80b2 added support for a prepare_commit() op in ldb modules
This op will be used by the partition module to give us good
transaction semantics across the 4 partitions that sam.ldb uses.
2009-03-31 15:07:54 +11:00
Simo Sorce
fd3f3e68f2 Use stdbool.h instead of manually defining bool 2009-02-25 10:02:41 -05:00
Simo Sorce
1cd7fe7194 Fix headers, ldb_includes.h is a private header,
do not reference it from ldb.h
2009-02-23 17:38:11 -05:00
Simo Sorce
0245b9b973 Explicitly include ldb_handlers.h where necessary 2009-01-30 20:12:50 -05:00
Simo Sorce
d4aeed879b Fix all other modules to use ldb_module.h instead of ldb_private.h
The only 2 modules escaping the rule so far are rootdse and partitions
2009-01-30 17:07:25 -05:00
Simo Sorce
1f2b5ea97c Add helper function to get a module name, may be useful for debugging. 2009-01-30 10:18:52 -05:00
Simo Sorce
d93634b7dd Fix misfiled headers.
Some public functions were mistakenly put into ldb_private.h
Revert all modules to only include ldb_module.h
2009-01-30 09:24:48 -05:00
Simo Sorce
380874ef86 Fix the mess with ldb includes.
Separate again the public from the private headers.

Add a new header specific for modules.
Also add service function for modules as now ldb_context and ldb_module are
opaque structures for them.
2009-01-30 01:02:03 -05:00
Stefan Metzmacher
d965ff05c9 s4:ldb: remove dependency to samba4's events wrapper
metze
2009-01-21 10:44:04 +01:00
Stefan Metzmacher
183c379fe5 s4:lib/tevent: rename structs
list=""
list="$list event_context:tevent_context"
list="$list fd_event:tevent_fd"
list="$list timed_event:tevent_timer"

for s in $list; do
	o=`echo $s | cut -d ':' -f1`
	n=`echo $s | cut -d ':' -f2`
	r=`git grep "struct $o" |cut -d ':' -f1 |sort -u`
	files=`echo "$r" | grep -v source3 | grep -v nsswitch | grep -v packaging4`
	for f in $files; do
		cat $f | sed -e "s/struct $o/struct $n/g" > $f.tmp
		mv $f.tmp $f
	done
done

metze
2008-12-29 20:46:40 +01:00
Kai Blin
ef1e9ed941 Fix some tevent includes, trying to fix the build 2008-12-26 14:11:10 +01:00
Jelmer Vernooij
a7f64ba2f1 ldb: Include tevent.h rather than events.h. 2008-12-23 04:21:35 +01:00
Andrew Bartlett
596fe759e1 s4:ldb: make it possible to return per entry controls
Signed-off-by: Stefan Metzmacher <metze@samba.org>
2008-12-17 12:29:27 +11:00
Andrew Bartlett
aa3eab70d5 s4:ldb: add infrastructure for extended dn handlers
This introduces a new set of pluggable syntax, for use on the
extended DN, and uses them when parsing the DN.

If the DN appears to be in the extended form, we no longer return the
full DN 'as is', but only return the normal part from
ldb_dn_get_linearized().

When validating/parsing the DN we validate not only the format of the
DN, but also the contents of the GUID or SID (to ensure they are
plausable).

We also have functions to set and get the extended components on the DN.

For now, extended_dn_get_linearized() returns a newly constructed and
allocated string each time.

Signed-off-by: Stefan Metzmacher <metze@samba.org>
2008-12-17 12:29:23 +11:00
Andrew Tridgell
41a1c882d4 don't give errors when an empty modules list is given to ldb 2008-11-06 11:13:37 +11:00
Jelmer Vernooij
87ec1d2532 Make sure prototypes are always included, make some functions static and
remove some unused functions.
2008-10-20 18:59:51 +02:00
Simo Sorce
2deeb99fff Transform the sequence_number operation into a normal extended operation as it should always have been. Make it also async so that it is not a special case. 2008-10-16 12:55:30 -04:00
Simo Sorce
8215374091 LDB ASYNC: Core files 2008-09-29 04:22:18 +02:00
Simo Sorce
508527890a Merge ldb_search() and ldb_search_exp_fmt() into a simgle function.
The previous ldb_search() interface made it way too easy to leak results,
and being able to use a printf-like expression turns to be really useful.
2008-09-23 18:17:46 -04:00
Jelmer Vernooij
acae07bc17 Add support for implementing LDB modules in Python. 2008-09-19 16:17:52 +02:00
Andrew Tridgell
cc43037f19 fixed a problem with length limited ldap values
The core ldb code for string matching assumed NULL terminated strings,
whereas the anr module used data_blob_const() to effectively truncate
a ldb_val by changing its length. The ldb code is supposed to be based
around length limited blobs, not NULL terminated strings, so the
correct fix was to change the string comparison functions to be length
limited
(This used to be commit 26c6aa5a80ffaf06fc33f30a6533f8f16ef538bc)
2008-08-22 17:36:56 +10:00