s4:python Add helper to get at the domain SID
authorAndrew Bartlett <abartlet@samba.org>
Thu, 27 Aug 2009 09:38:04 +0000 (19:38 +1000)
committerAndrew Bartlett <abartlet@samba.org>
Thu, 27 Aug 2009 09:40:21 +0000 (19:40 +1000)
source4/scripting/python/pyglue.c
source4/scripting/python/samba/__init__.py

index 55ba5c37fc70331cfe9a0c00761b326bfe76128c..79ee0ec388492429b4fbea5ffb3949e25b33dfb5 100644 (file)
@@ -194,6 +194,30 @@ static PyObject *py_samdb_set_domain_sid(PyLdbObject *self, PyObject *args)
        Py_RETURN_NONE;
 }
 
+static PyObject *py_samdb_get_domain_sid(PyLdbObject *self, PyObject *args)
+{ 
+       PyObject *py_ldb;
+       struct ldb_context *ldb;
+       const struct dom_sid *sid;
+       PyObject *ret;
+       char *retstr;
+
+       if (!PyArg_ParseTuple(args, "O", &py_ldb))
+               return NULL;
+       
+       PyErr_LDB_OR_RAISE(py_ldb, ldb);
+
+       sid = samdb_domain_sid(ldb);
+       if (!sid) {
+               PyErr_SetString(PyExc_RuntimeError, "samdb_domain_sid failed");
+               return NULL;
+       } 
+       retstr = dom_sid_string(NULL, sid);
+       ret = PyString_FromString(retstr);
+       talloc_free(retstr);
+       return ret;
+}
+
 static PyObject *py_ldb_register_samba_handlers(PyObject *self, PyObject *args)
 {
        PyObject *py_ldb;
@@ -434,6 +458,9 @@ static PyMethodDef py_misc_methods[] = {
        { "samdb_set_domain_sid", (PyCFunction)py_samdb_set_domain_sid, METH_VARARGS,
                "samdb_set_domain_sid(samdb, sid)\n"
                "Set SID of domain to use." },
+       { "samdb_get_domain_sid", (PyCFunction)py_samdb_get_domain_sid, METH_VARARGS,
+               "samdb_get_domain_sid(samdb)\n"
+               "Get SID of domain in use." },
        { "ldb_register_samba_handlers", (PyCFunction)py_ldb_register_samba_handlers, METH_VARARGS,
                "ldb_register_samba_handlers(ldb)\n"
                "Register Samba-specific LDB modules and schemas." },
index 4df3d6f55a26d6fd970f6928fdbb105de96b956d..720a015c63488ad0065eca0e11fa1b9e85065e7a 100644 (file)
@@ -233,6 +233,12 @@ class Ldb(ldb.Ldb):
         """
         glue.samdb_set_domain_sid(self, sid)
 
+    def domain_sid(self):
+        """Read the domain SID used by this LDB.
+
+        """
+        glue.samdb_get_domain_sid(self)
+
     def set_schema_from_ldif(self, pf, df):
         glue.dsdb_set_schema_from_ldif(self, pf, df)