データ構造 | |
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.c の 634 行で定義されています。
参照先 NSS_STATUS_SUCCESS・NSS_STATUS_UNAVAIL・status・winbindd_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.c の 43 行で定義されています。
参照先 winbindd_response::data・winbindd_request::data・lp_workgroup()・winbindd_request::name・name・NSS_STATUS_SUCCESS・result・winbindd_response::sid・winbind_error・WINBINDD_LOOKUPNAME・winbindd_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.c の 82 行で定義されています。
参照先 asprintf()・winbindd_response::data・winbindd_request::data・winbindd_response::name・name・NSS_STATUS_SUCCESS・result・winbindd_request::sid・winbindd_response::sid・winbind_error・WINBINDD_LOOKUPSID・winbindd_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.c の 119 行で定義されています。
参照先 winbindd_response::data・winbindd_response::extra_data・name・next_token()・NSS_STATUS_SUCCESS・result・winbind_error・WINBINDD_LIST_USERS・winbindd_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.c の 150 行で定義されています。
参照先 winbindd_response::data・winbindd_response::extra_data・name・next_token()・NSS_STATUS_SUCCESS・result・winbind_error・WINBINDD_LIST_GROUPS・winbindd_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.c の 185 行で定義されています。
参照先 winbindd_response::data・winbindd_response::extra_data・name・next_token()・NSS_STATUS_SUCCESS・result・winbind_error・WINBINDD_LIST_TRUSTDOM・winbindd_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.c の 216 行で定義されています。
参照先 winbindd_response::data・NSS_STATUS_SUCCESS・winbindd_response::num_entries・winbind_error・WINBINDD_CHECK_MACHACC・winbindd_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.c の 239 行で定義されています。
参照先 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.c の 283 行で定義されています。
参照先 winbindd_response::data・winbindd_request::data・id・NSS_STATUS_SUCCESS・winbindd_response::sid・winbindd_request::uid・winbind_error・winbindd_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.c の 308 行で定義されています。
参照先 winbindd_response::data・winbindd_request::data・winbindd_request::gid・id・NSS_STATUS_SUCCESS・winbindd_response::sid・winbind_error・WINBINDD_GID_TO_SID・winbindd_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.c の 333 行で定義されています。
参照先 winbindd_response::data・winbindd_request::data・NSS_STATUS_SUCCESS・winbindd_request::sid・winbindd_response::sid・winbindd_response::uid・winbind_error・winbindd_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.c の 358 行で定義されています。
参照先 winbindd_response::data・winbindd_request::data・winbindd_response::gid・NSS_STATUS_SUCCESS・winbindd_request::sid・winbindd_response::sid・winbind_error・winbindd_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.c の 387 行で定義されています。
参照先 winbindd_response::auth・winbindd_request::auth・winbindd_response::data・winbindd_request::data・NSS_STATUS_SUCCESS・password・username・winbind_error・WINBINDD_PAM_AUTH・winbindd_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.c の 413 行で定義されています。
参照先 winbindd_response::auth・winbindd_request::auth_crap・winbindd_response::data・winbindd_request::data・generate_random_buffer()・NSS_STATUS_SUCCESS・password・push_utf8_fstring()・SMBencrypt()・SMBNTencrypt()・username・winbind_error・WINBINDD_PAM_AUTH_CRAP・winbindd_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.c の 462 行で定義されています。
参照先 winbindd_response::auth・winbindd_request::auth_crap・winbindd_request::chal・winbindd_response::data・winbindd_request::data・generate_random_buffer()・winbindd_request::lm_resp・winbindd_request::lm_resp_len・lp_workgroup()・NSS_STATUS_SUCCESS・winbindd_request::nt_resp・winbindd_request::nt_resp_len・password・push_utf8_fstring()・secrets_fetch_trust_account_password()・SMBencrypt()・SMBNTencrypt()・username・winbind_error・winbindd_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.c の 522 行で定義されています。
参照先 winbindd_request::data・NSS_STATUS_SUCCESS・py_from_winbind_passwd()・result・winbindd_request::username・username・winbind_error・WINBINDD_GETPWNAM・winbindd_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.c の 553 行で定義されています。
参照先 winbindd_request::data・NSS_STATUS_SUCCESS・py_from_winbind_passwd()・result・winbindd_request::uid・winbindd_response::uid・winbind_error・WINBINDD_GETPWUID・winbindd_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.c の 756 行で定義されています。
参照先 module_const_vals・const_vals::name・const_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.c の 775 行で定義されています。
参照先 const_init()・py_config_dict()・py_samba_init()・winbind_error・winbind_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.c の 29 行で定義されています。
参照元 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.c の 586 行で定義されています。
struct const_vals module_const_vals[] [static] |
char winbind_module__doc__[] [static] |