svn commit: samba r2357 - in branches/SAMBA_4_0/source/scripting/swig: .

tpot at samba.org tpot at samba.org
Wed Sep 15 21:17:26 GMT 2004


Author: tpot
Date: 2004-09-15 21:17:26 +0000 (Wed, 15 Sep 2004)
New Revision: 2357

WebSVN: http://websvn.samba.org/websvn/changeset.php?rep=samba&path=/branches/SAMBA_4_0/source/scripting/swig&rev=2357&nolog=1

Log:
Start coding conversion routines for security descriptors, acls and sids.

Modified:
   branches/SAMBA_4_0/source/scripting/swig/dcerpc.i


Changeset:
Modified: branches/SAMBA_4_0/source/scripting/swig/dcerpc.i
===================================================================
--- branches/SAMBA_4_0/source/scripting/swig/dcerpc.i	2004-09-15 20:55:31 UTC (rev 2356)
+++ branches/SAMBA_4_0/source/scripting/swig/dcerpc.i	2004-09-15 21:17:26 UTC (rev 2357)
@@ -132,17 +132,70 @@
 	return NULL;
 }
 
-PyObject *security_descriptor_to_python(struct security_descriptor *obj)
+PyObject *dom_sid_to_python(struct dom_sid *obj)
 {
-	return PyDict_New();
+	return PyString_FromString("<sid>");
 }
 
+PyObject *security_acl_to_python(struct security_acl *obj)
+{
+	PyObject *result = PyDict_New();
+	PyObject *ace_list;
+	int i;
+
+	if (!obj) {
+		Py_INCREF(Py_None);
+		return Py_None;
+	}
+
+	PyDict_SetItem(result, PyString_FromString("revision"), PyInt_FromLong(obj->revision));
+	PyDict_SetItem(result, PyString_FromString("size"), PyInt_FromLong(obj->size));
+
+	ace_list = PyList_New(obj->num_aces);
+
+	for(i = 0; i < obj->num_aces; i++) {
+		PyObject *ace = PyDict_New();
+
+		PyDict_SetItem(ace, PyString_FromString("type"), PyInt_FromLong(obj->aces[i].type));
+		PyDict_SetItem(ace, PyString_FromString("flags"), PyInt_FromLong(obj->aces[i].flags));
+		PyDict_SetItem(ace, PyString_FromString("access_mask"), PyInt_FromLong(obj->aces[i].access_mask));
+		PyDict_SetItem(ace, PyString_FromString("trustee"), dom_sid_to_python(&obj->aces[i].trustee));
+
+		PyList_SetItem(ace_list, i, ace);
+	}
+
+	PyDict_SetItem(result, PyString_FromString("aces"), ace_list);
+
+	return result;
+}
+
+PyObject *security_descriptor_to_python(TALLOC_CTX *mem_ctx, struct security_descriptor *obj)
+{
+	PyObject *result = PyDict_New();
+
+	if (!obj) {
+		Py_INCREF(Py_None);
+		return Py_None;
+	}
+
+	PyDict_SetItem(result, PyString_FromString("revision"), PyInt_FromLong(obj->revision));
+	PyDict_SetItem(result, PyString_FromString("type"), PyInt_FromLong(obj->type));
+
+	PyDict_SetItem(result, PyString_FromString("owner_sid"), dom_sid_to_python(obj->owner_sid));
+	PyDict_SetItem(result, PyString_FromString("group_sid"), dom_sid_to_python(obj->group_sid));
+
+	PyDict_SetItem(result, PyString_FromString("sacl"), security_acl_to_python(obj->sacl));
+	PyDict_SetItem(result, PyString_FromString("dacl"), security_acl_to_python(obj->dacl));
+
+	return result;
+}
+
 struct dom_sid2 *dom_sid2_ptr_from_python(TALLOC_CTX *mem_ctx, PyObject *obj)
 {
 	return NULL;
 }
 
-PyObject *dom_sid2_to_python(struct dom_sid2 *obj)
+PyObject *dom_sid2_to_python(TALLOC_CTX *mem_ctx, struct dom_sid2 *obj)
 {
 	return PyDict_New();
 }



More information about the samba-cvs mailing list