mirror of
https://github.com/samba-team/samba.git
synced 2025-12-02 00:23:50 +03:00
python/ldap: Wrap parse_control_strings().
This commit is contained in:
@@ -50,6 +50,15 @@ typedef int ldb_error;
|
||||
%include "exception.i"
|
||||
%import "stdint.i"
|
||||
|
||||
/* Don't expose talloc contexts in Python code. Python does reference
|
||||
counting for us, so just create a new top-level talloc context.
|
||||
*/
|
||||
%typemap(in, numinputs=0, noblock=1) TALLOC_CTX * {
|
||||
$1 = NULL;
|
||||
}
|
||||
|
||||
|
||||
|
||||
%constant int SCOPE_DEFAULT = LDB_SCOPE_DEFAULT;
|
||||
%constant int SCOPE_BASE = LDB_SCOPE_BASE;
|
||||
%constant int SCOPE_ONELEVEL = LDB_SCOPE_ONELEVEL;
|
||||
@@ -115,7 +124,7 @@ typedef int ldb_error;
|
||||
}
|
||||
}
|
||||
|
||||
%typemap(in,noblock=1,numinputs=1) const char * const *attrs {
|
||||
%typemap(in,noblock=1,numinputs=1) const char * const *NULL_STR_LIST {
|
||||
if ($input == Py_None) {
|
||||
$1 = NULL;
|
||||
} else if (PySequence_Check($input)) {
|
||||
@@ -129,9 +138,13 @@ typedef int ldb_error;
|
||||
}
|
||||
}
|
||||
|
||||
%typemap(freearg,noblock=1) const char * const *attrs {
|
||||
%typemap(freearg,noblock=1) const char * const *NULL_STR_LIST {
|
||||
talloc_free($1);
|
||||
}
|
||||
|
||||
%apply const char * const *NULL_STR_LIST { const char * const *attrs }
|
||||
%apply const char * const *NULL_STR_LIST { const char * const *control_strings }
|
||||
|
||||
#endif
|
||||
|
||||
%types(struct ldb_result *);
|
||||
@@ -472,6 +485,14 @@ PyObject *PyExc_LdbError;
|
||||
$result = Py_None;
|
||||
};
|
||||
|
||||
%typemap(out,noblock=1) struct ldb_control ** {
|
||||
if ($1 == NULL) {
|
||||
PyErr_SetObject(PyExc_LdbError, Py_BuildValue((char *)"(s)", ldb_errstring(arg1)));
|
||||
SWIG_fail;
|
||||
}
|
||||
$result = SWIG_NewPointerObj($1, $1_descriptor, 0);
|
||||
}
|
||||
|
||||
%rename(Ldb) ldb_context;
|
||||
|
||||
%typemap(in,noblock=1) struct ldb_dn * {
|
||||
@@ -500,6 +521,8 @@ typedef struct ldb_context {
|
||||
struct ldb_result **OUT);
|
||||
ldb_error delete(ldb_dn *dn);
|
||||
ldb_error rename(ldb_dn *olddn, ldb_dn *newdn);
|
||||
struct ldb_control **parse_control_strings(TALLOC_CTX *mem_ctx,
|
||||
const char * const*control_strings);
|
||||
ldb_error add(ldb_msg *add_msg);
|
||||
ldb_error add(PyObject *py_msg)
|
||||
{
|
||||
|
||||
@@ -196,6 +196,7 @@ Ldb.connect = new_instancemethod(_ldb.Ldb_connect,None,Ldb)
|
||||
Ldb.search = new_instancemethod(_ldb.Ldb_search,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)
|
||||
|
||||
@@ -2459,29 +2459,31 @@ SWIG_Python_MustGetPtr(PyObject *obj, swig_type_info *ty, int argnum, int flags)
|
||||
|
||||
/* -------- TYPES TABLE (BEGIN) -------- */
|
||||
|
||||
#define SWIGTYPE_p_char swig_types[0]
|
||||
#define SWIGTYPE_p_f_p_void_enum_ldb_debug_level_p_q_const__char_va_list__void swig_types[1]
|
||||
#define SWIGTYPE_p_int swig_types[2]
|
||||
#define SWIGTYPE_p_ldb_context swig_types[3]
|
||||
#define SWIGTYPE_p_ldb_dn swig_types[4]
|
||||
#define SWIGTYPE_p_ldb_ldif swig_types[5]
|
||||
#define SWIGTYPE_p_ldb_message swig_types[6]
|
||||
#define SWIGTYPE_p_ldb_message_element swig_types[7]
|
||||
#define SWIGTYPE_p_ldb_module_ops swig_types[8]
|
||||
#define SWIGTYPE_p_ldb_result swig_types[9]
|
||||
#define SWIGTYPE_p_long_long swig_types[10]
|
||||
#define SWIGTYPE_p_p_char swig_types[11]
|
||||
#define SWIGTYPE_p_p_ldb_result swig_types[12]
|
||||
#define SWIGTYPE_p_short swig_types[13]
|
||||
#define SWIGTYPE_p_signed_char swig_types[14]
|
||||
#define SWIGTYPE_p_unsigned_char swig_types[15]
|
||||
#define SWIGTYPE_p_unsigned_int swig_types[16]
|
||||
#define SWIGTYPE_p_unsigned_long swig_types[17]
|
||||
#define SWIGTYPE_p_unsigned_long_long swig_types[18]
|
||||
#define SWIGTYPE_p_unsigned_short swig_types[19]
|
||||
#define SWIGTYPE_p_void swig_types[20]
|
||||
static swig_type_info *swig_types[22];
|
||||
static swig_module_info swig_module = {swig_types, 21, 0, 0, 0, 0};
|
||||
#define SWIGTYPE_p_TALLOC_CTX swig_types[0]
|
||||
#define SWIGTYPE_p_char swig_types[1]
|
||||
#define SWIGTYPE_p_f_p_void_enum_ldb_debug_level_p_q_const__char_va_list__void swig_types[2]
|
||||
#define SWIGTYPE_p_int swig_types[3]
|
||||
#define SWIGTYPE_p_ldb_context swig_types[4]
|
||||
#define SWIGTYPE_p_ldb_dn swig_types[5]
|
||||
#define SWIGTYPE_p_ldb_ldif swig_types[6]
|
||||
#define SWIGTYPE_p_ldb_message swig_types[7]
|
||||
#define SWIGTYPE_p_ldb_message_element swig_types[8]
|
||||
#define SWIGTYPE_p_ldb_module_ops swig_types[9]
|
||||
#define SWIGTYPE_p_ldb_result swig_types[10]
|
||||
#define SWIGTYPE_p_long_long swig_types[11]
|
||||
#define SWIGTYPE_p_p_char swig_types[12]
|
||||
#define SWIGTYPE_p_p_ldb_control swig_types[13]
|
||||
#define SWIGTYPE_p_p_ldb_result swig_types[14]
|
||||
#define SWIGTYPE_p_short swig_types[15]
|
||||
#define SWIGTYPE_p_signed_char swig_types[16]
|
||||
#define SWIGTYPE_p_unsigned_char swig_types[17]
|
||||
#define SWIGTYPE_p_unsigned_int swig_types[18]
|
||||
#define SWIGTYPE_p_unsigned_long swig_types[19]
|
||||
#define SWIGTYPE_p_unsigned_long_long swig_types[20]
|
||||
#define SWIGTYPE_p_unsigned_short swig_types[21]
|
||||
#define SWIGTYPE_p_void swig_types[22]
|
||||
static swig_type_info *swig_types[24];
|
||||
static swig_module_info swig_module = {swig_types, 23, 0, 0, 0, 0};
|
||||
#define SWIG_TypeQuery(name) SWIG_TypeQueryModule(&swig_module, &swig_module, name)
|
||||
#define SWIG_MangledTypeQuery(name) SWIG_MangledTypeQueryModule(&swig_module, &swig_module, name)
|
||||
|
||||
@@ -4530,6 +4532,55 @@ fail:
|
||||
}
|
||||
|
||||
|
||||
SWIGINTERN PyObject *_wrap_Ldb_parse_control_strings(PyObject *SWIGUNUSEDPARM(self), PyObject *args, PyObject *kwargs) {
|
||||
PyObject *resultobj = 0;
|
||||
ldb *arg1 = (ldb *) 0 ;
|
||||
TALLOC_CTX *arg2 = (TALLOC_CTX *) 0 ;
|
||||
char **arg3 = (char **) 0 ;
|
||||
struct ldb_control **result = 0 ;
|
||||
void *argp1 = 0 ;
|
||||
int res1 = 0 ;
|
||||
PyObject * obj0 = 0 ;
|
||||
PyObject * obj1 = 0 ;
|
||||
char * kwnames[] = {
|
||||
(char *) "self",(char *) "control_strings", NULL
|
||||
};
|
||||
|
||||
arg2 = NULL;
|
||||
if (!PyArg_ParseTupleAndKeywords(args,kwargs,(char *)"OO:Ldb_parse_control_strings",kwnames,&obj0,&obj1)) SWIG_fail;
|
||||
res1 = SWIG_ConvertPtr(obj0, &argp1,SWIGTYPE_p_ldb_context, 0 | 0 );
|
||||
if (!SWIG_IsOK(res1)) {
|
||||
SWIG_exception_fail(SWIG_ArgError(res1), "in method '" "Ldb_parse_control_strings" "', argument " "1"" of type '" "ldb *""'");
|
||||
}
|
||||
arg1 = (ldb *)(argp1);
|
||||
if (obj1 == Py_None) {
|
||||
arg3 = NULL;
|
||||
} else if (PySequence_Check(obj1)) {
|
||||
int i;
|
||||
arg3 = talloc_array(NULL, char *, PySequence_Size(obj1)+1);
|
||||
for(i = 0; i < PySequence_Size(obj1); i++)
|
||||
arg3[i] = PyString_AsString(PySequence_GetItem(obj1, i));
|
||||
arg3[i] = NULL;
|
||||
} else {
|
||||
SWIG_exception(SWIG_TypeError, "expected sequence");
|
||||
}
|
||||
if (arg1 == NULL)
|
||||
SWIG_exception(SWIG_ValueError,
|
||||
"ldb context must be non-NULL");
|
||||
result = (struct ldb_control **)ldb_parse_control_strings(arg1,arg2,(char const *const *)arg3);
|
||||
if (result == NULL) {
|
||||
PyErr_SetObject(PyExc_LdbError, Py_BuildValue((char *)"(s)", ldb_errstring(arg1)));
|
||||
SWIG_fail;
|
||||
}
|
||||
resultobj = SWIG_NewPointerObj(result, SWIGTYPE_p_p_ldb_control, 0);
|
||||
talloc_free(arg3);
|
||||
return resultobj;
|
||||
fail:
|
||||
talloc_free(arg3);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
||||
SWIGINTERN PyObject *_wrap_Ldb_add__SWIG_0(PyObject *SWIGUNUSEDPARM(self), int nobjs, PyObject **swig_obj) {
|
||||
PyObject *resultobj = 0;
|
||||
ldb *arg1 = (ldb *) 0 ;
|
||||
@@ -5347,6 +5398,7 @@ static PyMethodDef SwigMethods[] = {
|
||||
{ (char *)"Ldb_search", (PyCFunction) _wrap_Ldb_search, METH_VARARGS | METH_KEYWORDS, NULL},
|
||||
{ (char *)"Ldb_delete", (PyCFunction) _wrap_Ldb_delete, METH_VARARGS | METH_KEYWORDS, NULL},
|
||||
{ (char *)"Ldb_rename", (PyCFunction) _wrap_Ldb_rename, METH_VARARGS | METH_KEYWORDS, NULL},
|
||||
{ (char *)"Ldb_parse_control_strings", (PyCFunction) _wrap_Ldb_parse_control_strings, METH_VARARGS | METH_KEYWORDS, NULL},
|
||||
{ (char *)"Ldb_add", _wrap_Ldb_add, METH_VARARGS, NULL},
|
||||
{ (char *)"Ldb_modify", (PyCFunction) _wrap_Ldb_modify, METH_VARARGS | METH_KEYWORDS, NULL},
|
||||
{ (char *)"Ldb_get_config_basedn", (PyCFunction)_wrap_Ldb_get_config_basedn, METH_O, NULL},
|
||||
@@ -5376,6 +5428,7 @@ static PyMethodDef SwigMethods[] = {
|
||||
|
||||
/* -------- TYPE CONVERSION AND EQUIVALENCE RULES (BEGIN) -------- */
|
||||
|
||||
static swig_type_info _swigt__p_TALLOC_CTX = {"_p_TALLOC_CTX", "TALLOC_CTX *", 0, 0, (void*)0, 0};
|
||||
static swig_type_info _swigt__p_char = {"_p_char", "char *", 0, 0, (void*)0, 0};
|
||||
static swig_type_info _swigt__p_f_p_void_enum_ldb_debug_level_p_q_const__char_va_list__void = {"_p_f_p_void_enum_ldb_debug_level_p_q_const__char_va_list__void", "void (*)(void *,enum ldb_debug_level,char const *,va_list)", 0, 0, (void*)0, 0};
|
||||
static swig_type_info _swigt__p_int = {"_p_int", "intptr_t *|int *|int_least32_t *|int_fast32_t *|int32_t *|int_fast16_t *", 0, 0, (void*)0, 0};
|
||||
@@ -5388,6 +5441,7 @@ static swig_type_info _swigt__p_ldb_module_ops = {"_p_ldb_module_ops", "struct l
|
||||
static swig_type_info _swigt__p_ldb_result = {"_p_ldb_result", "struct ldb_result *", 0, 0, (void*)0, 0};
|
||||
static swig_type_info _swigt__p_long_long = {"_p_long_long", "int_least64_t *|int_fast64_t *|int64_t *|long long *|intmax_t *", 0, 0, (void*)0, 0};
|
||||
static swig_type_info _swigt__p_p_char = {"_p_p_char", "char **", 0, 0, (void*)0, 0};
|
||||
static swig_type_info _swigt__p_p_ldb_control = {"_p_p_ldb_control", "struct ldb_control **", 0, 0, (void*)0, 0};
|
||||
static swig_type_info _swigt__p_p_ldb_result = {"_p_p_ldb_result", "struct ldb_result **", 0, 0, (void*)0, 0};
|
||||
static swig_type_info _swigt__p_short = {"_p_short", "short *|int_least16_t *|int16_t *", 0, 0, (void*)0, 0};
|
||||
static swig_type_info _swigt__p_signed_char = {"_p_signed_char", "signed char *|int_least8_t *|int_fast8_t *|int8_t *", 0, 0, (void*)0, 0};
|
||||
@@ -5399,6 +5453,7 @@ static swig_type_info _swigt__p_unsigned_short = {"_p_unsigned_short", "unsigned
|
||||
static swig_type_info _swigt__p_void = {"_p_void", "void *", 0, 0, (void*)0, 0};
|
||||
|
||||
static swig_type_info *swig_type_initial[] = {
|
||||
&_swigt__p_TALLOC_CTX,
|
||||
&_swigt__p_char,
|
||||
&_swigt__p_f_p_void_enum_ldb_debug_level_p_q_const__char_va_list__void,
|
||||
&_swigt__p_int,
|
||||
@@ -5411,6 +5466,7 @@ static swig_type_info *swig_type_initial[] = {
|
||||
&_swigt__p_ldb_result,
|
||||
&_swigt__p_long_long,
|
||||
&_swigt__p_p_char,
|
||||
&_swigt__p_p_ldb_control,
|
||||
&_swigt__p_p_ldb_result,
|
||||
&_swigt__p_short,
|
||||
&_swigt__p_signed_char,
|
||||
@@ -5422,6 +5478,7 @@ static swig_type_info *swig_type_initial[] = {
|
||||
&_swigt__p_void,
|
||||
};
|
||||
|
||||
static swig_cast_info _swigc__p_TALLOC_CTX[] = { {&_swigt__p_TALLOC_CTX, 0, 0, 0},{0, 0, 0, 0}};
|
||||
static swig_cast_info _swigc__p_char[] = { {&_swigt__p_char, 0, 0, 0},{0, 0, 0, 0}};
|
||||
static swig_cast_info _swigc__p_f_p_void_enum_ldb_debug_level_p_q_const__char_va_list__void[] = { {&_swigt__p_f_p_void_enum_ldb_debug_level_p_q_const__char_va_list__void, 0, 0, 0},{0, 0, 0, 0}};
|
||||
static swig_cast_info _swigc__p_int[] = { {&_swigt__p_int, 0, 0, 0},{0, 0, 0, 0}};
|
||||
@@ -5434,6 +5491,7 @@ static swig_cast_info _swigc__p_ldb_module_ops[] = { {&_swigt__p_ldb_module_ops
|
||||
static swig_cast_info _swigc__p_ldb_result[] = { {&_swigt__p_ldb_result, 0, 0, 0},{0, 0, 0, 0}};
|
||||
static swig_cast_info _swigc__p_long_long[] = { {&_swigt__p_long_long, 0, 0, 0},{0, 0, 0, 0}};
|
||||
static swig_cast_info _swigc__p_p_char[] = { {&_swigt__p_p_char, 0, 0, 0},{0, 0, 0, 0}};
|
||||
static swig_cast_info _swigc__p_p_ldb_control[] = { {&_swigt__p_p_ldb_control, 0, 0, 0},{0, 0, 0, 0}};
|
||||
static swig_cast_info _swigc__p_p_ldb_result[] = { {&_swigt__p_p_ldb_result, 0, 0, 0},{0, 0, 0, 0}};
|
||||
static swig_cast_info _swigc__p_short[] = { {&_swigt__p_short, 0, 0, 0},{0, 0, 0, 0}};
|
||||
static swig_cast_info _swigc__p_signed_char[] = { {&_swigt__p_signed_char, 0, 0, 0},{0, 0, 0, 0}};
|
||||
@@ -5445,6 +5503,7 @@ static swig_cast_info _swigc__p_unsigned_short[] = { {&_swigt__p_unsigned_short
|
||||
static swig_cast_info _swigc__p_void[] = { {&_swigt__p_void, 0, 0, 0},{0, 0, 0, 0}};
|
||||
|
||||
static swig_cast_info *swig_cast_initial[] = {
|
||||
_swigc__p_TALLOC_CTX,
|
||||
_swigc__p_char,
|
||||
_swigc__p_f_p_void_enum_ldb_debug_level_p_q_const__char_va_list__void,
|
||||
_swigc__p_int,
|
||||
@@ -5457,6 +5516,7 @@ static swig_cast_info *swig_cast_initial[] = {
|
||||
_swigc__p_ldb_result,
|
||||
_swigc__p_long_long,
|
||||
_swigc__p_p_char,
|
||||
_swigc__p_p_ldb_control,
|
||||
_swigc__p_p_ldb_result,
|
||||
_swigc__p_short,
|
||||
_swigc__p_signed_char,
|
||||
|
||||
@@ -62,6 +62,11 @@ class SimpleLdb(unittest.TestCase):
|
||||
self.assertTrue(l.get_opaque("my_opaque") is not None)
|
||||
self.assertEquals(None, l.get_opaque("unknown"))
|
||||
|
||||
def test_parse_control_strings(self):
|
||||
l = ldb.Ldb("foo.tdb")
|
||||
self.assertRaises(ldb.LdbError, l.parse_control_strings, ["foo", "bar"])
|
||||
self.assertTrue(l.parse_control_strings(["paged_results:1:5"]) is not None)
|
||||
|
||||
def test_search_scope_base(self):
|
||||
l = ldb.Ldb("foo.tdb")
|
||||
self.assertEquals(len(l.search(ldb.Dn(l, "dc=foo"),
|
||||
|
||||
Reference in New Issue
Block a user