diff options
| -rw-r--r-- | source3/python/py_ntsec.c | 139 | ||||
| -rw-r--r-- | source3/python/py_spoolss_printers_conv.c | 115 | ||||
| -rwxr-xr-x | source3/python/setup.py.in | 4 | 
3 files changed, 142 insertions, 116 deletions
diff --git a/source3/python/py_ntsec.c b/source3/python/py_ntsec.c new file mode 100644 index 0000000000..d97bbb6f8c --- /dev/null +++ b/source3/python/py_ntsec.c @@ -0,0 +1,139 @@ +/*  +   Python wrappers for DCERPC/SMB client routines. + +   Copyright (C) Tim Potter, 2002 +    +   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 "Python.h" + +#include "python/py_common.h" + +/* Convert a SID to a Python dict */ + +BOOL py_from_SID(PyObject **obj, DOM_SID *sid) +{ +	fstring sidstr; + +	if (!sid) { +		Py_INCREF(Py_None); +		*obj = Py_None; +		return True; +	} + +	if (!sid_to_string(sidstr, sid)) +		return False; + +	*obj = PyString_FromString(sidstr); + +	return True; +} + +BOOL py_to_SID(DOM_SID *sid, PyObject *dict) +{ +	return False; +} + +BOOL py_from_ACE(PyObject **dict, SEC_ACE *ace) +{ +	PyObject *obj; + +	if (!ace) { +		Py_INCREF(Py_None); +		*dict = Py_None; +		return True; +	} + +	*dict = PyDict_New(); + +	PyDict_SetItemString(*dict, "type", PyInt_FromLong(ace->type)); +	PyDict_SetItemString(*dict, "flags", PyInt_FromLong(ace->flags)); +	PyDict_SetItemString(*dict, "mask", PyInt_FromLong(ace->info.mask)); + +	if (py_from_SID(&obj, &ace->trustee)) +		PyDict_SetItemString(*dict, "trustee", obj); + +	return True; +} + +BOOL py_to_ACE(SEC_ACE *ace, PyObject *dict) +{ +	return False; +} + +BOOL py_from_ACL(PyObject **dict, SEC_ACL *acl) +{ +	PyObject *ace_list; +	int i; + +	if (!acl) { +		Py_INCREF(Py_None); +		*dict = Py_None; +		return True; +	} + +	*dict = PyDict_New(); + +	PyDict_SetItemString(*dict, "revision", PyInt_FromLong(acl->revision)); + +	ace_list = PyList_New(acl->num_aces); + +	for (i = 0; i < acl->num_aces; i++) { +		PyObject *obj; + +		if (py_from_ACE(&obj, &acl->ace[i])) +			PyList_SetItem(ace_list, i, obj); +	} + +	PyDict_SetItemString(*dict, "ace_list", ace_list); + +	return True; +} + +BOOL py_to_ACL(SEC_ACL *acl, PyObject *dict) +{ +	return False; +} + +BOOL py_from_SECDESC(PyObject **dict, SEC_DESC *sd) +{ +	PyObject *obj; + +	*dict = PyDict_New(); + +	PyDict_SetItemString(*dict, "revision", PyInt_FromLong(sd->revision)); +	PyDict_SetItemString(*dict, "type", PyInt_FromLong(sd->type)); + +	if (py_from_SID(&obj, sd->owner_sid)) +		PyDict_SetItemString(*dict, "owner_sid", obj); + +	if (py_from_SID(&obj, sd->grp_sid)) +		PyDict_SetItemString(*dict, "group_sid", obj); + +	if (py_from_ACL(&obj, sd->dacl)) +		PyDict_SetItemString(*dict, "dacl", obj); + +	if (py_from_ACL(&obj, sd->sacl)) +		PyDict_SetItemString(*dict, "sacl", obj); + +	return True; +} + +BOOL py_to_SECDESC(SEC_DESC *sd, PyObject *dict) +{ +	return False; +} diff --git a/source3/python/py_spoolss_printers_conv.c b/source3/python/py_spoolss_printers_conv.c index c583792c0a..84b36ddbb2 100644 --- a/source3/python/py_spoolss_printers_conv.c +++ b/source3/python/py_spoolss_printers_conv.c @@ -144,121 +144,6 @@ struct pyconv py_DEVICEMODE[] = {  	{ NULL }  }; -/* Convert a SID to a Python dict */ - -BOOL py_from_SID(PyObject **obj, DOM_SID *sid) -{ -	fstring sidstr; - -	if (!sid) { -		Py_INCREF(Py_None); -		*obj = Py_None; -		return True; -	} - -	if (!sid_to_string(sidstr, sid)) -		return False; - -	*obj = PyString_FromString(sidstr); - -	return True; -} - -BOOL py_to_SID(DOM_SID *sid, PyObject *dict) -{ -	return False; -} - -BOOL py_from_ACE(PyObject **dict, SEC_ACE *ace) -{ -	PyObject *obj; - -	if (!ace) { -		Py_INCREF(Py_None); -		*dict = Py_None; -		return True; -	} - -	*dict = PyDict_New(); - -	PyDict_SetItemString(*dict, "type", PyInt_FromLong(ace->type)); -	PyDict_SetItemString(*dict, "flags", PyInt_FromLong(ace->flags)); -	PyDict_SetItemString(*dict, "mask", PyInt_FromLong(ace->info.mask)); - -	if (py_from_SID(&obj, &ace->trustee)) -		PyDict_SetItemString(*dict, "trustee", obj); - -	return True; -} - -BOOL py_to_ACE(SEC_ACE *ace, PyObject *dict) -{ -	return False; -} - -BOOL py_from_ACL(PyObject **dict, SEC_ACL *acl) -{ -	PyObject *ace_list; -	int i; - -	if (!acl) { -		Py_INCREF(Py_None); -		*dict = Py_None; -		return True; -	} - -	*dict = PyDict_New(); - -	PyDict_SetItemString(*dict, "revision", PyInt_FromLong(acl->revision)); - -	ace_list = PyList_New(acl->num_aces); - -	for (i = 0; i < acl->num_aces; i++) { -		PyObject *obj; - -		if (py_from_ACE(&obj, &acl->ace[i])) -			PyList_SetItem(ace_list, i, obj); -	} - -	PyDict_SetItemString(*dict, "ace_list", ace_list); - -	return True; -} - -BOOL py_to_ACL(SEC_ACL *acl, PyObject *dict) -{ -	return False; -} - -BOOL py_from_SECDESC(PyObject **dict, SEC_DESC *sd) -{ -	PyObject *obj; - -	*dict = PyDict_New(); - -	PyDict_SetItemString(*dict, "revision", PyInt_FromLong(sd->revision)); -	PyDict_SetItemString(*dict, "type", PyInt_FromLong(sd->type)); - -	if (py_from_SID(&obj, sd->owner_sid)) -		PyDict_SetItemString(*dict, "owner_sid", obj); - -	if (py_from_SID(&obj, sd->grp_sid)) -		PyDict_SetItemString(*dict, "group_sid", obj); - -	if (py_from_ACL(&obj, sd->dacl)) -		PyDict_SetItemString(*dict, "dacl", obj); - -	if (py_from_ACL(&obj, sd->sacl)) -		PyDict_SetItemString(*dict, "sacl", obj); - -	return True; -} - -BOOL py_to_SECDESC(SEC_DESC *sd, PyObject *dict) -{ -	return False; -} -  /*   * Convert between DEVICEMODE and Python   */ diff --git a/source3/python/setup.py.in b/source3/python/setup.py.in index 37bcd84772..59182f5def 100755 --- a/source3/python/setup.py.in +++ b/source3/python/setup.py.in @@ -87,6 +87,7 @@ setup(                sources = [samba_srcdir + "python/py_spoolss.c",                           samba_srcdir + "python/py_common.c",                           samba_srcdir + "python/py_conv.c", +                         samba_srcdir + "python/py_ntsec.c",                           samba_srcdir + "python/py_spoolss_forms.c",                           samba_srcdir + "python/py_spoolss_forms_conv.c",                           samba_srcdir + "python/py_spoolss_drivers.c", @@ -104,7 +105,8 @@ setup(      Extension(name = "lsa",                sources = [samba_srcdir + "python/py_lsa.c", -                         samba_srcdir + "python/py_common.c"], +                         samba_srcdir + "python/py_common.c", +                         samba_srcdir + "python/py_ntsec.c"],                libraries = lib_list,                library_dirs = ["/usr/kerberos/lib"],                extra_objects = obj_list),  | 
