1
0
mirror of https://github.com/samba-team/samba.git synced 2024-12-23 17:34:34 +03:00

Initial work using manual Python bindings for LDB, rather than SWIG-generated ones.

This commit is contained in:
Jelmer Vernooij 2008-12-19 01:22:07 +00:00
parent 21702bfcde
commit a57b1aa0f1
7 changed files with 1785 additions and 9333 deletions

View File

@ -21,6 +21,7 @@
#define _PY_TALLOC_H_
#include <Python.h>
#include <talloc.h>
typedef struct {
PyObject_HEAD
@ -36,8 +37,7 @@ void py_talloc_dealloc(PyObject* self);
/* FIXME: Call PyErr_SetString(PyExc_TypeError, "expected " __STR(type) ")
* when talloc_get_type() returns NULL. */
#define py_talloc_get_type(py_obj, type) \
talloc_get_type(py_talloc_get_ptr(py_obj), type)
#define py_talloc_get_type(py_obj, type) (talloc_get_type(py_talloc_get_ptr(py_obj), type))
#define py_talloc_get_ptr(py_obj) ((py_talloc_Object *)py_obj)->ptr
#define py_talloc_get_mem_ctx(py_obj) ((py_talloc_Object *)py_obj)->talloc_ctx

File diff suppressed because it is too large Load Diff

View File

@ -1,508 +0,0 @@
# This file was automatically generated by SWIG (http://www.swig.org).
# Version 1.3.36
#
# Don't modify this file, modify the SWIG interface instead.
"""
An interface to LDB, a LDAP-like API that can either to talk an embedded database (TDB-based) or a standards-compliant LDAP server.
"""
import _ldb
import new
new_instancemethod = new.instancemethod
try:
_swig_property = property
except NameError:
pass # Python < 2.2 doesn't have 'property'.
def _swig_setattr_nondynamic(self,class_type,name,value,static=1):
if (name == "thisown"): return self.this.own(value)
if (name == "this"):
if type(value).__name__ == 'PySwigObject':
self.__dict__[name] = value
return
method = class_type.__swig_setmethods__.get(name,None)
if method: return method(self,value)
if (not static) or hasattr(self,name):
self.__dict__[name] = value
else:
raise AttributeError("You cannot add attributes to %s" % self)
def _swig_setattr(self,class_type,name,value):
return _swig_setattr_nondynamic(self,class_type,name,value,0)
def _swig_getattr(self,class_type,name):
if (name == "thisown"): return self.this.own()
method = class_type.__swig_getmethods__.get(name,None)
if method: return method(self)
raise AttributeError,name
def _swig_repr(self):
try: strthis = "proxy of " + self.this.__repr__()
except: strthis = ""
return "<%s.%s; %s >" % (self.__class__.__module__, self.__class__.__name__, strthis,)
import types
try:
_object = types.ObjectType
_newclass = 1
except AttributeError:
class _object : pass
_newclass = 0
del types
def _swig_setattr_nondynamic_method(set):
def set_attr(self,name,value):
if (name == "thisown"): return self.this.own(value)
if hasattr(self,name) or (name == "this"):
set(self,name,value)
else:
raise AttributeError("You cannot add attributes to %s" % self)
return set_attr
SCOPE_DEFAULT = _ldb.SCOPE_DEFAULT
SCOPE_BASE = _ldb.SCOPE_BASE
SCOPE_ONELEVEL = _ldb.SCOPE_ONELEVEL
SCOPE_SUBTREE = _ldb.SCOPE_SUBTREE
CHANGETYPE_NONE = _ldb.CHANGETYPE_NONE
CHANGETYPE_ADD = _ldb.CHANGETYPE_ADD
CHANGETYPE_DELETE = _ldb.CHANGETYPE_DELETE
CHANGETYPE_MODIFY = _ldb.CHANGETYPE_MODIFY
ldb_val_to_py_object = _ldb.ldb_val_to_py_object
class Dn(object):
"""A LDB distinguished name."""
thisown = _swig_property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag')
def __init__(self, *args, **kwargs):
"""
S.__init__(ldb, string)
Create a new DN.
"""
_ldb.Dn_swiginit(self,_ldb.new_Dn(*args, **kwargs))
__swig_destroy__ = _ldb.delete_Dn
def validate(*args, **kwargs):
"""
S.validate() -> bool
Validate DN is correct.
"""
return _ldb.Dn_validate(*args, **kwargs)
def parent(*args, **kwargs):
"""
S.parent() -> dn
Get the parent for this DN.
"""
return _ldb.Dn_parent(*args, **kwargs)
def is_special(*args, **kwargs):
"""
S.is_special() -> bool
Check whether this is a special LDB DN.
"""
return _ldb.Dn_is_special(*args, **kwargs)
def is_null(*args, **kwargs):
"""
S.is_null() -> bool
Check whether this is a null DN.
"""
return _ldb.Dn_is_null(*args, **kwargs)
def add_child(*args, **kwargs):
"""
S.add_child(dn) -> None
Add a child DN to this DN.
"""
return _ldb.Dn_add_child(*args, **kwargs)
def add_base(*args, **kwargs):
"""
S.add_base(dn) -> None
Add a base DN to this DN.
"""
return _ldb.Dn_add_base(*args, **kwargs)
def canonical_str(*args, **kwargs):
"""
S.canonical_str() -> string
Canonical version of this DN (like a posix path).
"""
return _ldb.Dn_canonical_str(*args, **kwargs)
def canonical_ex_str(*args, **kwargs):
"""
S.canonical_ex_str() -> string
Canonical version of this DN (like a posix path, with terminating newline).
"""
return _ldb.Dn_canonical_ex_str(*args, **kwargs)
def __eq__(self, other):
if isinstance(other, self.__class__):
return self.__cmp__(other) == 0
if isinstance(other, str):
return str(self) == other
return False
Dn.validate = new_instancemethod(_ldb.Dn_validate,None,Dn)
Dn.get_casefold = new_instancemethod(_ldb.Dn_get_casefold,None,Dn)
Dn.__str__ = new_instancemethod(_ldb.Dn___str__,None,Dn)
Dn.parent = new_instancemethod(_ldb.Dn_parent,None,Dn)
Dn.__cmp__ = new_instancemethod(_ldb.Dn___cmp__,None,Dn)
Dn.is_valid = new_instancemethod(_ldb.Dn_is_valid,None,Dn)
Dn.is_special = new_instancemethod(_ldb.Dn_is_special,None,Dn)
Dn.is_null = new_instancemethod(_ldb.Dn_is_null,None,Dn)
Dn.check_special = new_instancemethod(_ldb.Dn_check_special,None,Dn)
Dn.__len__ = new_instancemethod(_ldb.Dn___len__,None,Dn)
Dn.add_child = new_instancemethod(_ldb.Dn_add_child,None,Dn)
Dn.add_base = new_instancemethod(_ldb.Dn_add_base,None,Dn)
Dn.canonical_str = new_instancemethod(_ldb.Dn_canonical_str,None,Dn)
Dn.canonical_ex_str = new_instancemethod(_ldb.Dn_canonical_ex_str,None,Dn)
Dn.__repr__ = new_instancemethod(_ldb.Dn___repr__,None,Dn)
Dn.__add__ = new_instancemethod(_ldb.Dn___add__,None,Dn)
Dn_swigregister = _ldb.Dn_swigregister
Dn_swigregister(Dn)
class MessageElement(object):
"""Message element."""
thisown = _swig_property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag')
__repr__ = _swig_repr
def __init__(self, *args, **kwargs):
"""Message element."""
_ldb.MessageElement_swiginit(self,_ldb.new_MessageElement(*args, **kwargs))
__swig_destroy__ = _ldb.delete_MessageElement
def __getitem__(self, i):
ret = self.get(i)
if ret is None:
raise KeyError("no such value")
return ret
def __repr__(self):
return "MessageElement([%s])" % (",".join(repr(x) for x in self.__set__()))
def __eq__(self, other):
if (len(self) == 1 and self.get(0) == other):
return True
if isinstance(other, self.__class__):
return self.__cmp__(other) == 0
o = iter(other)
for i in range(len(self)):
if self.get(i) != o.next():
return False
return True
MessageElement.__cmp__ = new_instancemethod(_ldb.MessageElement___cmp__,None,MessageElement)
MessageElement.__iter__ = new_instancemethod(_ldb.MessageElement___iter__,None,MessageElement)
MessageElement.__set__ = new_instancemethod(_ldb.MessageElement___set__,None,MessageElement)
MessageElement.__len__ = new_instancemethod(_ldb.MessageElement___len__,None,MessageElement)
MessageElement.get = new_instancemethod(_ldb.MessageElement_get,None,MessageElement)
MessageElement_swigregister = _ldb.MessageElement_swigregister
MessageElement_swigregister(MessageElement)
ldb_msg_list_elements = _ldb.ldb_msg_list_elements
class Message(object):
"""Message."""
thisown = _swig_property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag')
__repr__ = _swig_repr
dn = _swig_property(_ldb.Message_dn_get, _ldb.Message_dn_set)
def __init__(self, *args, **kwargs):
_ldb.Message_swiginit(self,_ldb.new_Message(*args, **kwargs))
__swig_destroy__ = _ldb.delete_Message
def get(self, key, default=None):
if key == "dn":
return self.dn
return self.find_element(key)
def __getitem__(self, key):
ret = self.get(key, None)
if ret is None:
raise KeyError("No such element")
return ret
def iteritems(self):
for k in self.keys():
yield k, self[k]
def items(self):
return list(self.iteritems())
def __repr__(self):
return "Message(%s)" % repr(dict(self.iteritems()))
Message.find_element = new_instancemethod(_ldb.Message_find_element,None,Message)
Message.__setitem__ = new_instancemethod(_ldb.Message___setitem__,None,Message)
Message.__len__ = new_instancemethod(_ldb.Message___len__,None,Message)
Message.keys = new_instancemethod(_ldb.Message_keys,None,Message)
Message.__iter__ = new_instancemethod(_ldb.Message___iter__,None,Message)
Message.__delitem__ = new_instancemethod(_ldb.Message___delitem__,None,Message)
Message_swigregister = _ldb.Message_swigregister
Message_swigregister(Message)
ldb_ldif_to_pyobject = _ldb.ldb_ldif_to_pyobject
LdbError = _ldb.LdbError
LDB_ERR_OPERATIONS_ERROR = _ldb.LDB_ERR_OPERATIONS_ERROR
LDB_ERR_PROTOCOL_ERROR = _ldb.LDB_ERR_PROTOCOL_ERROR
LDB_ERR_TIME_LIMIT_EXCEEDED = _ldb.LDB_ERR_TIME_LIMIT_EXCEEDED
LDB_ERR_SIZE_LIMIT_EXCEEDED = _ldb.LDB_ERR_SIZE_LIMIT_EXCEEDED
LDB_ERR_COMPARE_FALSE = _ldb.LDB_ERR_COMPARE_FALSE
LDB_ERR_COMPARE_TRUE = _ldb.LDB_ERR_COMPARE_TRUE
LDB_ERR_AUTH_METHOD_NOT_SUPPORTED = _ldb.LDB_ERR_AUTH_METHOD_NOT_SUPPORTED
LDB_ERR_STRONG_AUTH_REQUIRED = _ldb.LDB_ERR_STRONG_AUTH_REQUIRED
LDB_ERR_REFERRAL = _ldb.LDB_ERR_REFERRAL
LDB_ERR_ADMIN_LIMIT_EXCEEDED = _ldb.LDB_ERR_ADMIN_LIMIT_EXCEEDED
LDB_ERR_UNSUPPORTED_CRITICAL_EXTENSION = _ldb.LDB_ERR_UNSUPPORTED_CRITICAL_EXTENSION
LDB_ERR_CONFIDENTIALITY_REQUIRED = _ldb.LDB_ERR_CONFIDENTIALITY_REQUIRED
LDB_ERR_SASL_BIND_IN_PROGRESS = _ldb.LDB_ERR_SASL_BIND_IN_PROGRESS
LDB_ERR_NO_SUCH_ATTRIBUTE = _ldb.LDB_ERR_NO_SUCH_ATTRIBUTE
LDB_ERR_UNDEFINED_ATTRIBUTE_TYPE = _ldb.LDB_ERR_UNDEFINED_ATTRIBUTE_TYPE
LDB_ERR_INAPPROPRIATE_MATCHING = _ldb.LDB_ERR_INAPPROPRIATE_MATCHING
LDB_ERR_CONSTRAINT_VIOLATION = _ldb.LDB_ERR_CONSTRAINT_VIOLATION
LDB_ERR_ATTRIBUTE_OR_VALUE_EXISTS = _ldb.LDB_ERR_ATTRIBUTE_OR_VALUE_EXISTS
LDB_ERR_INVALID_ATTRIBUTE_SYNTAX = _ldb.LDB_ERR_INVALID_ATTRIBUTE_SYNTAX
LDB_ERR_NO_SUCH_OBJECT = _ldb.LDB_ERR_NO_SUCH_OBJECT
LDB_ERR_ALIAS_PROBLEM = _ldb.LDB_ERR_ALIAS_PROBLEM
LDB_ERR_INVALID_DN_SYNTAX = _ldb.LDB_ERR_INVALID_DN_SYNTAX
LDB_ERR_ALIAS_DEREFERENCING_PROBLEM = _ldb.LDB_ERR_ALIAS_DEREFERENCING_PROBLEM
LDB_ERR_INAPPROPRIATE_AUTHENTICATION = _ldb.LDB_ERR_INAPPROPRIATE_AUTHENTICATION
LDB_ERR_INVALID_CREDENTIALS = _ldb.LDB_ERR_INVALID_CREDENTIALS
LDB_ERR_INSUFFICIENT_ACCESS_RIGHTS = _ldb.LDB_ERR_INSUFFICIENT_ACCESS_RIGHTS
LDB_ERR_BUSY = _ldb.LDB_ERR_BUSY
LDB_ERR_UNAVAILABLE = _ldb.LDB_ERR_UNAVAILABLE
LDB_ERR_UNWILLING_TO_PERFORM = _ldb.LDB_ERR_UNWILLING_TO_PERFORM
LDB_ERR_LOOP_DETECT = _ldb.LDB_ERR_LOOP_DETECT
LDB_ERR_NAMING_VIOLATION = _ldb.LDB_ERR_NAMING_VIOLATION
LDB_ERR_OBJECT_CLASS_VIOLATION = _ldb.LDB_ERR_OBJECT_CLASS_VIOLATION
LDB_ERR_NOT_ALLOWED_ON_NON_LEAF = _ldb.LDB_ERR_NOT_ALLOWED_ON_NON_LEAF
LDB_ERR_NOT_ALLOWED_ON_RDN = _ldb.LDB_ERR_NOT_ALLOWED_ON_RDN
LDB_ERR_ENTRY_ALREADY_EXISTS = _ldb.LDB_ERR_ENTRY_ALREADY_EXISTS
LDB_ERR_OBJECT_CLASS_MODS_PROHIBITED = _ldb.LDB_ERR_OBJECT_CLASS_MODS_PROHIBITED
LDB_ERR_AFFECTS_MULTIPLE_DSAS = _ldb.LDB_ERR_AFFECTS_MULTIPLE_DSAS
LDB_ERR_OTHER = _ldb.LDB_ERR_OTHER
class Ldb(object):
"""Connection to a LDB database."""
thisown = _swig_property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag')
firstmodule = _swig_property(_ldb.Ldb_firstmodule_get, _ldb.Ldb_firstmodule_set)
def itermodules(self):
m = self.firstmodule
while m is not None:
yield m
m = m.next
def modules(self):
return list(self.itermodules())
def __init__(self, *args, **kwargs):
_ldb.Ldb_swiginit(self,_ldb.new_Ldb(*args, **kwargs))
def connect(*args, **kwargs):
"""
S.connect(url,flags=0,options=None) -> None
Connect to a LDB URL.
"""
return _ldb.Ldb_connect(*args, **kwargs)
__swig_destroy__ = _ldb.delete_Ldb
def delete(*args, **kwargs):
"""
S.delete(dn) -> None
Remove an entry.
"""
return _ldb.Ldb_delete(*args, **kwargs)
def rename(*args, **kwargs):
"""
S.rename(old_dn, new_dn) -> None
Rename an entry.
"""
return _ldb.Ldb_rename(*args, **kwargs)
def add(*args, **kwargs):
"""
S.add(message) -> None
Add an entry.
"""
return _ldb.Ldb_add(*args, **kwargs)
def modify(*args, **kwargs):
"""
S.modify(message) -> None
Modify an entry.
"""
return _ldb.Ldb_modify(*args, **kwargs)
def set_create_perms(*args, **kwargs):
"""
S.set_create_perms(mode) -> None
Set mode to use when creating new LDB files.
"""
return _ldb.Ldb_set_create_perms(*args, **kwargs)
def set_modules_dir(*args, **kwargs):
"""
S.set_modules_dir(path) -> None
Set path LDB should search for modules
"""
return _ldb.Ldb_set_modules_dir(*args, **kwargs)
def set_debug(*args, **kwargs):
"""
S.set_debug(callback) -> None
Set callback for LDB debug messages.
The callback should accept a debug level and debug text.
"""
return _ldb.Ldb_set_debug(*args, **kwargs)
def set_opaque(*args, **kwargs):
"""
S.set_opaque(name, value) -> None
Set an opaque value on this LDB connection.
:note: Passing incorrect values may cause crashes.
"""
return _ldb.Ldb_set_opaque(*args, **kwargs)
def get_opaque(*args, **kwargs):
"""
S.get_opaque(name) -> value
Get an opaque value set on this LDB connection.
:note: The returned value may not be useful in Python.
"""
return _ldb.Ldb_get_opaque(*args, **kwargs)
def transaction_start(*args, **kwargs):
"""
S.transaction_start() -> None
Start a new transaction.
"""
return _ldb.Ldb_transaction_start(*args, **kwargs)
def transaction_commit(*args, **kwargs):
"""
S.transaction_commit() -> None
Commit currently active transaction.
"""
return _ldb.Ldb_transaction_commit(*args, **kwargs)
def transaction_cancel(*args, **kwargs):
"""
S.transaction_cancel() -> None
Cancel currently active transaction.
"""
return _ldb.Ldb_transaction_cancel(*args, **kwargs)
def parse_ldif(*args, **kwargs):
"""
S.parse_ldif(ldif) -> iter(messages)
Parse a string formatted using LDIF.
"""
return _ldb.Ldb_parse_ldif(*args, **kwargs)
def __init__(self, url=None, flags=0, options=None):
"""Create a new LDB object.
Will also connect to the specified URL if one was given.
"""
_ldb.Ldb_swiginit(self,_ldb.new_Ldb())
if url is not None:
self.connect(url, flags, options)
def search(self, base=None, scope=SCOPE_DEFAULT, expression=None,
attrs=None, controls=None):
"""Search in a database.
:param base: Optional base DN to search
:param scope: Search scope (SCOPE_BASE, SCOPE_ONELEVEL or SCOPE_SUBTREE)
:param expression: Optional search expression
:param attrs: Attributes to return (defaults to all)
:param controls: Optional list of controls
:return: Iterator over Message objects
"""
if not (attrs is None or isinstance(attrs, list)):
raise TypeError("attributes not a list")
parsed_controls = None
if controls is not None:
parsed_controls = self.parse_control_strings(controls)
return self.search_ex(base, scope, expression, attrs,
parsed_controls)
Ldb.connect = new_instancemethod(_ldb.Ldb_connect,None,Ldb)
Ldb.search_ex = new_instancemethod(_ldb.Ldb_search_ex,None,Ldb)
Ldb.delete = new_instancemethod(_ldb.Ldb_delete,None,Ldb)
Ldb.rename = new_instancemethod(_ldb.Ldb_rename,None,Ldb)
Ldb.parse_control_strings = new_instancemethod(_ldb.Ldb_parse_control_strings,None,Ldb)
Ldb.add = new_instancemethod(_ldb.Ldb_add,None,Ldb)
Ldb.modify = new_instancemethod(_ldb.Ldb_modify,None,Ldb)
Ldb.get_config_basedn = new_instancemethod(_ldb.Ldb_get_config_basedn,None,Ldb)
Ldb.get_root_basedn = new_instancemethod(_ldb.Ldb_get_root_basedn,None,Ldb)
Ldb.get_schema_basedn = new_instancemethod(_ldb.Ldb_get_schema_basedn,None,Ldb)
Ldb.get_default_basedn = new_instancemethod(_ldb.Ldb_get_default_basedn,None,Ldb)
Ldb.schema_format_value = new_instancemethod(_ldb.Ldb_schema_format_value,None,Ldb)
Ldb.errstring = new_instancemethod(_ldb.Ldb_errstring,None,Ldb)
Ldb.set_create_perms = new_instancemethod(_ldb.Ldb_set_create_perms,None,Ldb)
Ldb.set_modules_dir = new_instancemethod(_ldb.Ldb_set_modules_dir,None,Ldb)
Ldb.set_debug = new_instancemethod(_ldb.Ldb_set_debug,None,Ldb)
Ldb.set_opaque = new_instancemethod(_ldb.Ldb_set_opaque,None,Ldb)
Ldb.get_opaque = new_instancemethod(_ldb.Ldb_get_opaque,None,Ldb)
Ldb.transaction_start = new_instancemethod(_ldb.Ldb_transaction_start,None,Ldb)
Ldb.transaction_commit = new_instancemethod(_ldb.Ldb_transaction_commit,None,Ldb)
Ldb.transaction_cancel = new_instancemethod(_ldb.Ldb_transaction_cancel,None,Ldb)
Ldb.schema_attribute_remove = new_instancemethod(_ldb.Ldb_schema_attribute_remove,None,Ldb)
Ldb.schema_attribute_add = new_instancemethod(_ldb.Ldb_schema_attribute_add,None,Ldb)
Ldb.setup_wellknown_attributes = new_instancemethod(_ldb.Ldb_setup_wellknown_attributes,None,Ldb)
Ldb.__contains__ = new_instancemethod(_ldb.Ldb___contains__,None,Ldb)
Ldb.parse_ldif = new_instancemethod(_ldb.Ldb_parse_ldif,None,Ldb)
Ldb.__repr__ = new_instancemethod(_ldb.Ldb___repr__,None,Ldb)
Ldb_swigregister = _ldb.Ldb_swigregister
Ldb_swigregister(Ldb)
def valid_attr_name(*args, **kwargs):
"""
S.valid_attr_name(name) -> bool
Check whether the supplied name is a valid attribute name.
"""
return _ldb.valid_attr_name(*args, **kwargs)
def timestring(*args, **kwargs):
"""
S.timestring(int) -> string
Generate a LDAP time string from a UNIX timestamp
"""
return _ldb.timestring(*args, **kwargs)
def string_to_time(*args, **kwargs):
"""
S.string_to_time(string) -> int
Parse a LDAP time string into a UNIX timestamp.
"""
return _ldb.string_to_time(*args, **kwargs)
class ldb_module(object):
thisown = _swig_property(lambda x: x.this.own(), lambda x, v: x.this.own(v), doc='The membership flag')
prev = _swig_property(_ldb.ldb_module_prev_get, _ldb.ldb_module_prev_set)
next = _swig_property(_ldb.ldb_module_next_get, _ldb.ldb_module_next_set)
def __init__(self, *args, **kwargs):
_ldb.ldb_module_swiginit(self,_ldb.new_ldb_module(*args, **kwargs))
__swig_destroy__ = _ldb.delete_ldb_module
ldb_module.__str__ = new_instancemethod(_ldb.ldb_module___str__,None,ldb_module)
ldb_module.__repr__ = new_instancemethod(_ldb.ldb_module___repr__,None,ldb_module)
ldb_module.search = new_instancemethod(_ldb.ldb_module_search,None,ldb_module)
ldb_module.add = new_instancemethod(_ldb.ldb_module_add,None,ldb_module)
ldb_module.modify = new_instancemethod(_ldb.ldb_module_modify,None,ldb_module)
ldb_module.delete = new_instancemethod(_ldb.ldb_module_delete,None,ldb_module)
ldb_module.rename = new_instancemethod(_ldb.ldb_module_rename,None,ldb_module)
ldb_module.start_transaction = new_instancemethod(_ldb.ldb_module_start_transaction,None,ldb_module)
ldb_module.end_transaction = new_instancemethod(_ldb.ldb_module_end_transaction,None,ldb_module)
ldb_module.del_transaction = new_instancemethod(_ldb.ldb_module_del_transaction,None,ldb_module)
ldb_module_swigregister = _ldb.ldb_module_swigregister
ldb_module_swigregister(ldb_module)
def register_module(*args, **kwargs):
"""
S.register_module(module) -> None
Register a LDB module.
"""
return _ldb.register_module(*args, **kwargs)
__docformat__ = "restructuredText"
open = Ldb

File diff suppressed because it is too large Load Diff

1721
source4/lib/ldb/pyldb.c Normal file

File diff suppressed because it is too large Load Diff

59
source4/lib/ldb/pyldb.h Normal file
View File

@ -0,0 +1,59 @@
/*
Unix SMB/CIFS implementation.
Swig interface to ldb.
Copyright (C) 2005,2006 Tim Potter <tpot@samba.org>
Copyright (C) 2006 Simo Sorce <idra@samba.org>
Copyright (C) 2007-2008 Jelmer Vernooij <jelmer@samba.org>
** NOTE! The following LGPL license applies to the ldb
** library. This does NOT imply that all of Samba is released
** under the LGPL
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Lesser General Public
License as published by the Free Software Foundation; either
version 3 of the License, or (at your option) any later version.
This library 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
Lesser General Public License for more details.
You should have received a copy of the GNU Lesser General Public
License along with this library; if not, see <http://www.gnu.org/licenses/>.
*/
#ifndef _PYLDB_H_
#define _PYLDB_H_
#include <Python.h>
#include <pytalloc.h>
#include <ldb.h>
#include <ldb_private.h>
typedef py_talloc_Object PyLdbObject;
PyAPI_DATA(PyTypeObject) PyLdb;
typedef py_talloc_Object PyLdbDnObject;
PyAPI_DATA(PyTypeObject) PyLdbDn;
struct ldb_dn *PyLdbDn_AsDn(PyObject *);
PyObject *PyLdbDn_FromDn(struct ldb_dn *);
int PyObject_AsDn(TALLOC_CTX *mem_ctx, PyObject *object, struct ldb_context *ldb_ctx, struct ldb_dn **dn);
#define PyLdbDn_Check(ob) PyObject_TypeCheck(ob, &PyLdbDn)
typedef py_talloc_Object PyLdbMessageObject;
PyAPI_DATA(PyTypeObject) PyLdbMessage;
PyObject *PyLdbMessage_FromMessage(struct ldb_message *message);
struct ldb_message *PyLdbMessage_AsMessage(PyObject *obj);
#define PyLdbMessage_Check(ob) PyObject_TypeCheck(ob, &PyLdbMessage)
typedef py_talloc_Object PyLdbModuleObject;
PyAPI_DATA(PyTypeObject) PyLdbModule;
PyObject *PyLdbModule_FromModule(struct ldb_module *mod);
typedef py_talloc_Object PyLdbMessageElementObject;
struct ldb_message_element *PyObject_AsMessageElement(TALLOC_CTX *mem_ctx, PyObject *obj, int flags, const char *name);
#endif /* _PYLDB_H_ */

View File

@ -1,10 +1,8 @@
[PYTHON::swig_ldb]
LIBRARY_REALNAME = _ldb.$(SHLIBEXT)
PUBLIC_DEPENDENCIES = LIBLDB LIBEVENTS
LIBRARY_REALNAME = ldb.$(SHLIBEXT)
PUBLIC_DEPENDENCIES = LIBLDB LIBEVENTS PYTALLOC
swig_ldb_OBJ_FILES = $(ldbsrcdir)/ldb_wrap.o
swig_ldb_OBJ_FILES = $(ldbsrcdir)/pyldb.o
$(swig_ldb_OBJ_FILES): CFLAGS+=-I$(ldbsrcdir)/include
$(eval $(call python_py_module_template,ldb.py,$(ldbsrcdir)/ldb.py))
$(swig_ldb_OBJ_FILES): CFLAGS+=$(CFLAG_NO_UNUSED_MACROS) $(CFLAG_NO_CAST_QUAL)