python/py_winbind.c

ソースコードを見る。

データ構造

struct  const_vals

関数

NSS_STATUS winbindd_request_response (int req_type, struct winbindd_request *request, struct winbindd_response *response)
static PyObject * py_name_to_sid (PyObject *self, PyObject *args)
static PyObject * py_sid_to_name (PyObject *self, PyObject *args)
static PyObject * py_enum_domain_users (PyObject *self, PyObject *args)
static PyObject * py_enum_domain_groups (PyObject *self, PyObject *args)
static PyObject * py_enum_trust_dom (PyObject *self, PyObject *args)
static PyObject * py_check_secret (PyObject *self, PyObject *args)
static PyObject * py_config_dict (void)
static PyObject * py_uid_to_sid (PyObject *self, PyObject *args)
static PyObject * py_gid_to_sid (PyObject *self, PyObject *args)
static PyObject * py_sid_to_uid (PyObject *self, PyObject *args)
static PyObject * py_sid_to_gid (PyObject *self, PyObject *args)
static PyObject * py_auth_plaintext (PyObject *self, PyObject *args)
static PyObject * py_auth_crap (PyObject *self, PyObject *args, PyObject *kw)
static PyObject * py_auth_smbd (PyObject *self, PyObject *args, PyObject *kw)
static PyObject * py_getpwnam (PyObject *self, PyObject *args)
static PyObject * py_getpwuid (PyObject *self, PyObject *args)
static void const_init (PyObject *dict)
void initwinbind (void)

変数

PyObject * winbind_error
static PyMethodDef winbind_methods []
static struct const_vals module_const_vals []
static char winbind_module__doc__ []


関数

NSS_STATUS winbindd_request_response ( int  req_type,
struct winbindd_request request,
struct winbindd_response response 
)

wb_common.c634 行で定義されています。

参照先 NSS_STATUS_SUCCESSNSS_STATUS_UNAVAILstatuswinbindd_get_response()winbindd_send_request().

00637 {
00638         NSS_STATUS status = NSS_STATUS_UNAVAIL;
00639         int count = 0;
00640 
00641         while ((status == NSS_STATUS_UNAVAIL) && (count < 10)) {
00642                 status = winbindd_send_request(req_type, 0, request);
00643                 if (status != NSS_STATUS_SUCCESS) 
00644                         return(status);
00645                 status = winbindd_get_response(response);
00646                 count += 1;
00647         }
00648 
00649         return status;
00650 }

static PyObject* py_name_to_sid ( PyObject *  self,
PyObject *  args 
) [static]

py_winbind.c43 行で定義されています。

参照先 winbindd_response::datawinbindd_request::datalp_workgroup()winbindd_request::namenameNSS_STATUS_SUCCESSresultwinbindd_response::sidwinbind_errorWINBINDD_LOOKUPNAMEwinbindd_request_response().

00045 {
00046         struct winbindd_request request;
00047         struct winbindd_response response;
00048         PyObject *result;
00049         char *name, *p;
00050         const char *sep;
00051 
00052         if (!PyArg_ParseTuple(args, "s", &name))
00053                 return NULL;
00054 
00055         ZERO_STRUCT(request);
00056         ZERO_STRUCT(response);
00057 
00058         sep = lp_winbind_separator();
00059 
00060         if ((p = strchr(name, sep[0]))) {
00061                 *p = 0;
00062                 fstrcpy(request.data.name.dom_name, name);
00063                 fstrcpy(request.data.name.name, p + 1);
00064         } else {
00065                 fstrcpy(request.data.name.dom_name, lp_workgroup());
00066                 fstrcpy(request.data.name.name, name);
00067         }
00068 
00069         if (winbindd_request_response(WINBINDD_LOOKUPNAME, &request, &response)  
00070             != NSS_STATUS_SUCCESS) {
00071                 PyErr_SetString(winbind_error, "lookup failed");
00072                 return NULL;
00073         }
00074 
00075         result = PyString_FromString(response.data.sid.sid);
00076 
00077         return result;
00078 }

static PyObject* py_sid_to_name ( PyObject *  self,
PyObject *  args 
) [static]

py_winbind.c82 行で定義されています。

参照先 asprintf()winbindd_response::datawinbindd_request::datawinbindd_response::namenameNSS_STATUS_SUCCESSresultwinbindd_request::sidwinbindd_response::sidwinbind_errorWINBINDD_LOOKUPSIDwinbindd_request_response().

00083 {
00084         struct winbindd_request request;
00085         struct winbindd_response response;
00086         PyObject *result;
00087         char *sid, *name;
00088 
00089         if (!PyArg_ParseTuple(args, "s", &sid))
00090                 return NULL;
00091 
00092         ZERO_STRUCT(request);
00093         ZERO_STRUCT(response);
00094 
00095         fstrcpy(request.data.sid, sid);
00096 
00097         if (winbindd_request_response(WINBINDD_LOOKUPSID, &request, &response)  
00098             != NSS_STATUS_SUCCESS) {
00099                 PyErr_SetString(winbind_error, "lookup failed");
00100                 return NULL;
00101         }
00102 
00103         asprintf(&name, "%s%s%s", response.data.name.dom_name,
00104                  lp_winbind_separator(), response.data.name.name);
00105 
00106         result = PyString_FromString(name);
00107 
00108         free(name);
00109 
00110         return result;
00111 }

static PyObject* py_enum_domain_users ( PyObject *  self,
PyObject *  args 
) [static]

py_winbind.c119 行で定義されています。

参照先 winbindd_response::datawinbindd_response::extra_datanamenext_token()NSS_STATUS_SUCCESSresultwinbind_errorWINBINDD_LIST_USERSwinbindd_request_response().

00120 {
00121         struct winbindd_response response;
00122         PyObject *result;
00123 
00124         if (!PyArg_ParseTuple(args, ""))
00125                 return NULL;
00126 
00127         ZERO_STRUCT(response);
00128 
00129         if (winbindd_request_response(WINBINDD_LIST_USERS, NULL, &response) 
00130             != NSS_STATUS_SUCCESS) {
00131                 PyErr_SetString(winbind_error, "lookup failed");
00132                 return NULL;            
00133         }
00134 
00135         result = PyList_New(0);
00136 
00137         if (response.extra_data.data) {
00138                 const char *extra_data = response.extra_data.data;
00139                 fstring name;
00140 
00141                 while (next_token(&extra_data, name, ",", sizeof(fstring)))
00142                         PyList_Append(result, PyString_FromString(name));
00143         }
00144 
00145         return result;
00146 }

static PyObject* py_enum_domain_groups ( PyObject *  self,
PyObject *  args 
) [static]

py_winbind.c150 行で定義されています。

参照先 winbindd_response::datawinbindd_response::extra_datanamenext_token()NSS_STATUS_SUCCESSresultwinbind_errorWINBINDD_LIST_GROUPSwinbindd_request_response().

00151 {
00152         struct winbindd_response response;
00153         PyObject *result = NULL;
00154 
00155         if (!PyArg_ParseTuple(args, ""))
00156                 return NULL;
00157 
00158         ZERO_STRUCT(response);
00159 
00160         if (winbindd_request_response(WINBINDD_LIST_GROUPS, NULL, &response) 
00161             != NSS_STATUS_SUCCESS) {
00162                 PyErr_SetString(winbind_error, "lookup failed");
00163                 return NULL;            
00164         }
00165 
00166         result = PyList_New(0);
00167 
00168         if (response.extra_data.data) {
00169                 const char *extra_data = response.extra_data.data;
00170                 fstring name;
00171 
00172                 while (next_token(&extra_data, name, ",", sizeof(fstring)))
00173                         PyList_Append(result, PyString_FromString(name));
00174         }
00175 
00176         return result;
00177 }

static PyObject* py_enum_trust_dom ( PyObject *  self,
PyObject *  args 
) [static]

py_winbind.c185 行で定義されています。

参照先 winbindd_response::datawinbindd_response::extra_datanamenext_token()NSS_STATUS_SUCCESSresultwinbind_errorWINBINDD_LIST_TRUSTDOMwinbindd_request_response().

00186 {
00187         struct winbindd_response response;
00188         PyObject *result = NULL;
00189 
00190         if (!PyArg_ParseTuple(args, ""))
00191                 return NULL;
00192 
00193         ZERO_STRUCT(response);
00194 
00195         if (winbindd_request_response(WINBINDD_LIST_TRUSTDOM, NULL, &response) 
00196             != NSS_STATUS_SUCCESS) {
00197                 PyErr_SetString(winbind_error, "lookup failed");
00198                 return NULL;            
00199         }
00200 
00201         result = PyList_New(0);
00202 
00203         if (response.extra_data.data) {
00204                 const char *extra_data = response.extra_data.data;
00205                 fstring name;
00206 
00207                 while (next_token(&extra_data, name, ",", sizeof(fstring)))
00208                         PyList_Append(result, PyString_FromString(name));
00209         }
00210 
00211         return result;
00212 }

static PyObject* py_check_secret ( PyObject *  self,
PyObject *  args 
) [static]

py_winbind.c216 行で定義されています。

参照先 winbindd_response::dataNSS_STATUS_SUCCESSwinbindd_response::num_entrieswinbind_errorWINBINDD_CHECK_MACHACCwinbindd_request_response().

00217 {
00218         struct winbindd_response response;
00219 
00220         if (!PyArg_ParseTuple(args, ""))
00221                 return NULL;
00222 
00223         ZERO_STRUCT(response);
00224 
00225         if (winbindd_request_response(WINBINDD_CHECK_MACHACC, NULL, &response) 
00226             != NSS_STATUS_SUCCESS) {
00227                 PyErr_SetString(winbind_error, "lookup failed");
00228                 return NULL;            
00229         }
00230 
00231         return PyInt_FromLong(response.data.num_entries);
00232 }

static PyObject* py_config_dict ( void   )  [static]

py_winbind.c239 行で定義されています。

参照先 lp_idmap_gid()lp_idmap_uid()lp_workgroup()result.

参照元 initwinbind().

00240 {
00241         PyObject *result;
00242         uid_t ulow, uhi;
00243         gid_t glow, ghi;
00244         
00245         if (!(result = PyDict_New()))
00246                 return NULL;
00247 
00248         /* Various string parameters */
00249 
00250         PyDict_SetItemString(result, "workgroup", 
00251                              PyString_FromString(lp_workgroup()));
00252 
00253         PyDict_SetItemString(result, "separator", 
00254                              PyString_FromString(lp_winbind_separator()));
00255 
00256         PyDict_SetItemString(result, "template_homedir", 
00257                              PyString_FromString(lp_template_homedir()));
00258 
00259         PyDict_SetItemString(result, "template_shell", 
00260                              PyString_FromString(lp_template_shell()));
00261 
00262         /* idmap uid/gid range */
00263 
00264         if (lp_idmap_uid(&ulow, &uhi)) {
00265                 PyDict_SetItemString(result, "uid_low", PyInt_FromLong(ulow));
00266                 PyDict_SetItemString(result, "uid_high", PyInt_FromLong(uhi));
00267         }
00268 
00269         if (lp_idmap_gid(&glow, &ghi)) {
00270                 PyDict_SetItemString(result, "gid_low", PyInt_FromLong(glow));
00271                 PyDict_SetItemString(result, "gid_high", PyInt_FromLong(ghi));
00272         }
00273 
00274         return result;
00275 }

static PyObject* py_uid_to_sid ( PyObject *  self,
PyObject *  args 
) [static]

py_winbind.c283 行で定義されています。

参照先 winbindd_response::datawinbindd_request::dataidNSS_STATUS_SUCCESSwinbindd_response::sidwinbindd_request::uidwinbind_errorwinbindd_request_response()WINBINDD_UID_TO_SID.

00284 {
00285         struct winbindd_request request;
00286         struct winbindd_response response;
00287         int id;
00288 
00289         if (!PyArg_ParseTuple(args, "i", &id))
00290                 return NULL;
00291 
00292         ZERO_STRUCT(request);
00293         ZERO_STRUCT(response);
00294 
00295         request.data.uid = id;
00296 
00297         if (winbindd_request_response(WINBINDD_UID_TO_SID, &request, &response) 
00298             != NSS_STATUS_SUCCESS) {
00299                 PyErr_SetString(winbind_error, "lookup failed");
00300                 return NULL;            
00301         }
00302 
00303         return PyString_FromString(response.data.sid.sid);
00304 }

static PyObject* py_gid_to_sid ( PyObject *  self,
PyObject *  args 
) [static]

py_winbind.c308 行で定義されています。

参照先 winbindd_response::datawinbindd_request::datawinbindd_request::gididNSS_STATUS_SUCCESSwinbindd_response::sidwinbind_errorWINBINDD_GID_TO_SIDwinbindd_request_response().

00309 {
00310         struct winbindd_request request;
00311         struct winbindd_response response;
00312         int id;
00313 
00314         if (!PyArg_ParseTuple(args, "i", &id))
00315                 return NULL;
00316 
00317         ZERO_STRUCT(request);
00318         ZERO_STRUCT(response);
00319 
00320         request.data.gid = id;
00321 
00322         if (winbindd_request_response(WINBINDD_GID_TO_SID, &request, &response) 
00323             != NSS_STATUS_SUCCESS) {
00324                 PyErr_SetString(winbind_error, "lookup failed");
00325                 return NULL;            
00326         }
00327 
00328         return PyString_FromString(response.data.sid.sid);
00329 }

static PyObject* py_sid_to_uid ( PyObject *  self,
PyObject *  args 
) [static]

py_winbind.c333 行で定義されています。

参照先 winbindd_response::datawinbindd_request::dataNSS_STATUS_SUCCESSwinbindd_request::sidwinbindd_response::sidwinbindd_response::uidwinbind_errorwinbindd_request_response()WINBINDD_SID_TO_UID.

00334 {
00335         struct winbindd_request request;
00336         struct winbindd_response response;
00337         char *sid;
00338 
00339         if (!PyArg_ParseTuple(args, "s", &sid))
00340                 return NULL;
00341 
00342         ZERO_STRUCT(request);
00343         ZERO_STRUCT(response);
00344 
00345         fstrcpy(request.data.sid, sid);
00346 
00347         if (winbindd_request_response(WINBINDD_SID_TO_UID, &request, &response) 
00348             != NSS_STATUS_SUCCESS) {
00349                 PyErr_SetString(winbind_error, "lookup failed");
00350                 return NULL;            
00351         }
00352 
00353         return PyInt_FromLong(response.data.uid);
00354 }

static PyObject* py_sid_to_gid ( PyObject *  self,
PyObject *  args 
) [static]

py_winbind.c358 行で定義されています。

参照先 winbindd_response::datawinbindd_request::datawinbindd_response::gidNSS_STATUS_SUCCESSwinbindd_request::sidwinbindd_response::sidwinbind_errorwinbindd_request_response()WINBINDD_SID_TO_GID.

00359 {
00360         struct winbindd_request request;
00361         struct winbindd_response response;
00362         char *sid;
00363 
00364         if (!PyArg_ParseTuple(args, "s", &sid))
00365                 return NULL;
00366 
00367         ZERO_STRUCT(request);
00368         ZERO_STRUCT(response);
00369 
00370         fstrcpy(request.data.sid, sid);
00371 
00372         if (winbindd_request_response(WINBINDD_SID_TO_GID, &request, &response) 
00373             != NSS_STATUS_SUCCESS) {
00374                 PyErr_SetString(winbind_error, "lookup failed");
00375                 return NULL;            
00376         }
00377         
00378         return PyInt_FromLong(response.data.gid);
00379 }

static PyObject* py_auth_plaintext ( PyObject *  self,
PyObject *  args 
) [static]

py_winbind.c387 行で定義されています。

参照先 winbindd_response::authwinbindd_request::authwinbindd_response::datawinbindd_request::dataNSS_STATUS_SUCCESSpasswordusernamewinbind_errorWINBINDD_PAM_AUTHwinbindd_request_response().

00388 {
00389         struct winbindd_request request;
00390         struct winbindd_response response;
00391         char *username, *password;
00392 
00393         if (!PyArg_ParseTuple(args, "ss", &username, &password))
00394                 return NULL;
00395 
00396         ZERO_STRUCT(request);
00397         ZERO_STRUCT(response);
00398 
00399         fstrcpy(request.data.auth.user, username);
00400         fstrcpy(request.data.auth.pass, password);
00401 
00402         if (winbindd_request_response(WINBINDD_PAM_AUTH, &request, &response) 
00403             != NSS_STATUS_SUCCESS) {
00404                 PyErr_SetString(winbind_error, "lookup failed");
00405                 return NULL;            
00406         }
00407         
00408         return PyInt_FromLong(response.data.auth.nt_status);
00409 }

static PyObject* py_auth_crap ( PyObject *  self,
PyObject *  args,
PyObject *  kw 
) [static]

py_winbind.c413 行で定義されています。

参照先 winbindd_response::authwinbindd_request::auth_crapwinbindd_response::datawinbindd_request::datagenerate_random_buffer()NSS_STATUS_SUCCESSpasswordpush_utf8_fstring()SMBencrypt()SMBNTencrypt()usernamewinbind_errorWINBINDD_PAM_AUTH_CRAPwinbindd_request_response().

00414 {
00415         static char *kwlist[] = 
00416                 {"username", "password", "use_lm_hash", "use_nt_hash", NULL };
00417         struct winbindd_request request;
00418         struct winbindd_response response;
00419         char *username, *password;
00420         int use_lm_hash = 1, use_nt_hash = 1;
00421 
00422         if (!PyArg_ParseTupleAndKeywords(
00423                     args, kw, "ss|ii", kwlist, &username, &password, 
00424                     &use_lm_hash, &use_nt_hash))
00425                 return NULL;
00426 
00427         ZERO_STRUCT(request);
00428         ZERO_STRUCT(response);
00429 
00430         if (push_utf8_fstring(request.data.auth_crap.user, username) == -1) {
00431                 PyErr_SetString(winbind_error, "unable to create utf8 string");
00432                 return NULL;
00433         }
00434 
00435         generate_random_buffer(request.data.auth_crap.chal, 8);
00436         
00437         if (use_lm_hash) {
00438                 SMBencrypt((uchar *)password, request.data.auth_crap.chal, 
00439                            (uchar *)request.data.auth_crap.lm_resp);
00440                 request.data.auth_crap.lm_resp_len = 24;
00441         }
00442 
00443         if (use_nt_hash) {
00444                 SMBNTencrypt((uchar *)password, request.data.auth_crap.chal,
00445                              (uchar *)request.data.auth_crap.nt_resp);
00446                 request.data.auth_crap.nt_resp_len = 24;
00447         }
00448 
00449         if (winbindd_request_response(WINBINDD_PAM_AUTH_CRAP, &request, &response) 
00450             != NSS_STATUS_SUCCESS) {
00451                 PyErr_SetString(winbind_error, "lookup failed");
00452                 return NULL;            
00453         }
00454         
00455         return PyInt_FromLong(response.data.auth.nt_status);
00456 }

static PyObject* py_auth_smbd ( PyObject *  self,
PyObject *  args,
PyObject *  kw 
) [static]

py_winbind.c462 行で定義されています。

参照先 winbindd_response::authwinbindd_request::auth_crapwinbindd_request::chalwinbindd_response::datawinbindd_request::datagenerate_random_buffer()winbindd_request::lm_respwinbindd_request::lm_resp_lenlp_workgroup()NSS_STATUS_SUCCESSwinbindd_request::nt_respwinbindd_request::nt_resp_lenpasswordpush_utf8_fstring()secrets_fetch_trust_account_password()SMBencrypt()SMBNTencrypt()usernamewinbind_errorwinbindd_request_response().

00463 {
00464         static char *kwlist[] = 
00465                 {"username", "password", "use_lm_hash", "use_nt_hash", NULL };
00466         struct winbindd_request request;
00467         struct winbindd_response response;
00468         char *username, *password;
00469         int use_lm_hash = 1, use_nt_hash = 1;
00470 
00471         if (!PyArg_ParseTupleAndKeywords(
00472                     args, kw, "ss|ii", kwlist, &username, &password, 
00473                     &use_lm_hash, &use_nt_hash))
00474                 return NULL;
00475 
00476         ZERO_STRUCT(request);
00477         ZERO_STRUCT(response);
00478 
00479         if (push_utf8_fstring(request.data.auth_crap.user, username) == -1) {
00480                 PyErr_SetString("unable to create utf8 string");
00481                 return NULL;
00482         }
00483 
00484         generate_random_buffer(request.data.smbd_auth_crap.chal, 8);
00485         
00486         if (use_lm_hash) {
00487                 SMBencrypt((uchar *)password, 
00488                            request.data.smbd_auth_crap.chal, 
00489                            (uchar *)request.data.smbd_auth_crap.lm_resp);
00490                 request.data.smbd_auth_crap.lm_resp_len = 24;
00491         }
00492 
00493         if (use_nt_hash) {
00494                 SMBNTencrypt((uchar *)password, 
00495                              request.data.smbd_auth_crap.chal,
00496                              (uchar *)request.data.smbd_auth_crap.nt_resp);
00497                 request.data.smbd_auth_crap.nt_resp_len = 24;
00498         }
00499 
00500         if (!secrets_fetch_trust_account_password(
00501                     lp_workgroup(), request.data.smbd_auth_crap.proof, NULL)) {
00502                 PyErr_SetString(
00503                         winbind_error, "unable to fetch domain secret");
00504                 return NULL;
00505         }
00506 
00507 
00508 
00509         if (winbindd_request_response(WINBINDD_SMBD_AUTH_CRAP, &request, &response) 
00510             != NSS_STATUS_SUCCESS) {
00511                 PyErr_SetString(winbind_error, "lookup failed");
00512                 return NULL;            
00513         }
00514         
00515         return PyInt_FromLong(response.data.auth.nt_status);
00516 }

static PyObject* py_getpwnam ( PyObject *  self,
PyObject *  args 
) [static]

py_winbind.c522 行で定義されています。

参照先 winbindd_request::dataNSS_STATUS_SUCCESSpy_from_winbind_passwd()resultwinbindd_request::usernameusernamewinbind_errorWINBINDD_GETPWNAMwinbindd_request_response().

00523 {
00524         struct winbindd_request request;
00525         struct winbindd_response response;
00526         char *username;
00527         PyObject *result;
00528 
00529         if (!PyArg_ParseTuple(args, "s", &username))
00530                 return NULL;
00531 
00532         ZERO_STRUCT(request);
00533         ZERO_STRUCT(response);
00534 
00535         fstrcpy(request.data.username, username);
00536 
00537         if (winbindd_request_response(WINBINDD_GETPWNAM, &request, &response) 
00538             != NSS_STATUS_SUCCESS) {
00539                 PyErr_SetString(winbind_error, "lookup failed");
00540                 return NULL;            
00541         }
00542         
00543         if (!py_from_winbind_passwd(&result, &response)) {
00544                 result = Py_None;
00545                 Py_INCREF(result);
00546         }
00547 
00548         return result;
00549 }

static PyObject* py_getpwuid ( PyObject *  self,
PyObject *  args 
) [static]

py_winbind.c553 行で定義されています。

参照先 winbindd_request::dataNSS_STATUS_SUCCESSpy_from_winbind_passwd()resultwinbindd_request::uidwinbindd_response::uidwinbind_errorWINBINDD_GETPWUIDwinbindd_request_response().

00554 {
00555         struct winbindd_request request;
00556         struct winbindd_response response;
00557         uid_t uid;
00558         PyObject *result;
00559 
00560         if (!PyArg_ParseTuple(args, "i", &uid))
00561                 return NULL;
00562 
00563         ZERO_STRUCT(request);
00564         ZERO_STRUCT(response);
00565 
00566         request.data.uid = uid;
00567 
00568         if (winbindd_request_response(WINBINDD_GETPWUID, &request, &response) 
00569             != NSS_STATUS_SUCCESS) {
00570                 PyErr_SetString(winbind_error, "lookup failed");
00571                 return NULL;            
00572         }
00573         
00574         if (!py_from_winbind_passwd(&result, &response)) {
00575                 result = Py_None;
00576                 Py_INCREF(result);
00577         }
00578 
00579         return result;
00580 }

static void const_init ( PyObject *  dict  )  [static]

py_winbind.c756 行で定義されています。

参照先 module_const_valsconst_vals::nameconst_vals::value.

00757 {
00758         struct const_vals *tmp;
00759         PyObject *obj;
00760 
00761         for (tmp = module_const_vals; tmp->name; tmp++) {
00762                 obj = PyInt_FromLong(tmp->value);
00763                 PyDict_SetItemString(dict, tmp->name, obj);
00764                 Py_DECREF(obj);
00765         }
00766 }

void initwinbind ( void   ) 

py_winbind.c775 行で定義されています。

参照先 const_init()py_config_dict()py_samba_init()winbind_errorwinbind_methods.

00776 {
00777         PyObject *module, *dict;
00778 
00779         /* Initialise module */
00780 
00781         module = Py_InitModule3("winbind", winbind_methods,
00782                                 winbind_module__doc__);
00783 
00784         dict = PyModule_GetDict(module);
00785 
00786         winbind_error = PyErr_NewException("winbind.error", NULL, NULL);
00787         PyDict_SetItemString(dict, "error", winbind_error);
00788 
00789         /* Do samba initialisation */
00790 
00791         py_samba_init();
00792 
00793         /* Initialise constants */
00794 
00795         const_init(dict);
00796 
00797         /* Insert configuration dictionary */
00798 
00799         PyDict_SetItemString(dict, "config", py_config_dict());
00800 }


変数

PyObject* winbind_error

py_winbind.c29 行で定義されています。

参照元 initwinbind()py_auth_crap()py_auth_plaintext()py_auth_smbd()py_check_secret()py_enum_domain_groups()py_enum_domain_users()py_enum_trust_dom()py_getpwnam()py_getpwuid()py_gid_to_sid()py_name_to_sid()py_sid_to_gid()py_sid_to_name()py_sid_to_uid()py_uid_to_sid().

PyMethodDef winbind_methods[] [static]

py_winbind.c586 行で定義されています。

struct const_vals module_const_vals[] [static]

char winbind_module__doc__[] [static]

初期値:

"A python extension to winbind client functions."

py_winbind.c772 行で定義されています。


Sambaに対してSat Aug 29 21:24:05 2009に生成されました。  doxygen 1.4.7