这篇教程C++ winbindd_request函数代码示例写得很实用,希望能帮到您。
本文整理汇总了C++中winbindd_request函数的典型用法代码示例。如果您正苦于以下问题:C++ winbindd_request函数的具体用法?C++ winbindd_request怎么用?C++ winbindd_request使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。 在下文中一共展示了winbindd_request函数的24个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的C++代码示例。 示例1: logit/* take a group id and return a filled struct group */ static struct group *wb_aix_getgrgid(gid_t gid){ struct winbindd_response response; struct winbindd_request request; struct group *grp; NSS_STATUS ret; logit("getgrgid %d/n", gid); ZERO_STRUCT(response); ZERO_STRUCT(request); request.data.gid = gid; ret = winbindd_request(WINBINDD_GETGRGID, &request, &response); logit("getgrgid ret=%d/n", ret); HANDLE_ERRORS(ret); grp = fill_grent(&response.data.gr, response.extra_data); free_response(&response); return grp;}
开发者ID:Nymphetaminer,项目名称:dsl-n55u,代码行数:27,
示例2: wb_aix_getgrgid/* take a group name and return a filled struct group */static struct group *wb_aix_getgrnam(const char *name){ struct winbindd_response response; struct winbindd_request request; NSS_STATUS ret; struct group *grp; if (*name == WB_AIX_ENCODED) { return wb_aix_getgrgid(decode_id(name)); } logit("getgrnam '%s'/n", name); ZERO_STRUCT(response); ZERO_STRUCT(request); STRCPY_RETNULL(request.data.groupname, name); ret = winbindd_request(WINBINDD_GETGRNAM, &request, &response); HANDLE_ERRORS(ret); grp = fill_grent(&response.data.gr, response.extra_data); free_response(&response); return grp;}
开发者ID:Nymphetaminer,项目名称:dsl-n55u,代码行数:29,
示例3: _nss_winbind_initgroups_dynNSS_STATUS_nss_winbind_initgroups_dyn(char *user, gid_t group, long int *start, long int *size, gid_t **groups, long int limit, int *errnop){ NSS_STATUS ret; struct winbindd_request request; struct winbindd_response response; int i;#ifdef DEBUG_NSS fprintf(stderr, "[%5d]: initgroups %s (%d)/n", getpid(), user, group);#endif ZERO_STRUCT(request); ZERO_STRUCT(response); strncpy(request.data.username, user, sizeof(request.data.username) - 1); ret = winbindd_request(WINBINDD_GETGROUPS, &request, &response); if (ret == NSS_STATUS_SUCCESS) { int num_gids = response.data.num_entries; gid_t *gid_list = (gid_t *)response.extra_data; /* Copy group list to client */ for (i = 0; i < num_gids; i++) { /* Skip primary group */ if (gid_list[i] == group) continue; /* Add to buffer */ if (*start == *size && limit <= 0) { (*groups) = realloc( (*groups), (2 * (*size) + 1) * sizeof(**groups)); if (! *groups) goto done; *size = 2 * (*size) + 1; } if (*start == *size) goto done; (*groups)[*start] = gid_list[i]; *start += 1; /* Filled buffer? */ if (*start == limit) goto done; } } /* Back to your regularly scheduled programming */ done: return ret;}
开发者ID:Nymphetaminer,项目名称:dsl-n55u,代码行数:60,
示例4: _nss_winbind_sidtogid/* map a sid to a gid */NSS_STATUS_nss_winbind_sidtogid(const char *sid, gid_t *gid, int *errnop){ NSS_STATUS ret; struct winbindd_response response; struct winbindd_request request;#ifdef DEBUG_NSS fprintf(stderr, "[%5d]: sidtogid %s/n", getpid(), sid);#endif ZERO_STRUCT(request); ZERO_STRUCT(response); strncpy(request.data.sid, sid, sizeof(request.data.sid) - 1); request.data.sid[sizeof(request.data.sid) - 1] = '/0'; ret = winbindd_request(WINBINDD_SID_TO_GID, &request, &response); if (ret != NSS_STATUS_SUCCESS) { *errnop = errno = EINVAL; goto failed; } *gid = response.data.gid;failed: return ret;}
开发者ID:hajuuk,项目名称:R7000,代码行数:29,
示例5: char_to_sidvoid char_to_sid(struct dom_sid *sid, char *sid_str){ /* If it looks like a SID, call string_to_sid() else look it up using wbinfo. */ if (strncmp(sid_str, "S-", 2) == 0) { string_to_sid(sid, sid_str); } else { struct winbindd_request request; struct winbindd_response response; /* Send off request */ ZERO_STRUCT(request); ZERO_STRUCT(response); fstrcpy(request.data.name, sid_str); if (winbindd_request(WINBINDD_LOOKUPNAME, &request, &response) != NSS_STATUS_SUCCESS) { printf("FAIL: unable to look up sid for name %s/n", sid_str); exit(1); } string_to_sid(sid, response.data.sid.sid); printf("converted char %s to sid %s/n", sid_str, response.data.sid.sid); } }
开发者ID:AIdrifter,项目名称:samba,代码行数:29,
示例6: ZERO_STRUCTstatic PyObject *py_enum_trust_dom(PyObject *self, PyObject *args){ struct winbindd_response response; PyObject *result = NULL; if (!PyArg_ParseTuple(args, "")) return NULL; ZERO_STRUCT(response); if (winbindd_request(WINBINDD_LIST_TRUSTDOM, NULL, &response) != NSS_STATUS_SUCCESS) { PyErr_SetString(winbind_error, "lookup failed"); return NULL; } result = PyList_New(0); if (response.extra_data) { const char *extra_data = response.extra_data; fstring name; while (next_token(&extra_data, name, ",", sizeof(fstring))) PyList_Append(result, PyString_FromString(name)); } return result;}
开发者ID:hajuuk,项目名称:R7000,代码行数:28,
示例7: winbind_lookup_sidBOOL winbind_lookup_sid(const DOM_SID *sid, fstring dom_name, fstring name, enum SID_NAME_USE *name_type){ struct winbindd_request request; struct winbindd_response response; NSS_STATUS result; fstring sid_str; /* Initialise request */ ZERO_STRUCT(request); ZERO_STRUCT(response); sid_to_string(sid_str, sid); fstrcpy(request.data.sid, sid_str); /* Make request */ result = winbindd_request(WINBINDD_LOOKUPSID, &request, &response); /* Copy out result */ if (result == NSS_STATUS_SUCCESS) { fstrcpy(dom_name, response.data.name.dom_name); fstrcpy(name, response.data.name.name); *name_type = (enum SID_NAME_USE)response.data.name.type; DEBUG(10, ("winbind_lookup_sid: SUCCESS: SID %s -> %s %s/n", sid_str, dom_name, name)); } return (result == NSS_STATUS_SUCCESS);}
开发者ID:Nymphetaminer,项目名称:dsl-n55u,代码行数:34,
示例8: winbind_sid_to_gid_queryBOOL winbind_sid_to_gid_query(gid_t *pgid, const DOM_SID *sid){ struct winbindd_request request; struct winbindd_response response; int result; fstring sid_str; if (!pgid) return False; /* Initialise request */ ZERO_STRUCT(request); ZERO_STRUCT(response); sid_to_string(sid_str, sid); fstrcpy(request.data.sid, sid_str); request.flags = WBFLAG_QUERY_ONLY; /* Make request */ result = winbindd_request(WINBINDD_SID_TO_GID, &request, &response); /* Copy out result */ if (result == NSS_STATUS_SUCCESS) { *pgid = response.data.gid; } return (result == NSS_STATUS_SUCCESS);}
开发者ID:Nymphetaminer,项目名称:dsl-n55u,代码行数:32,
示例9: wb_aix_getpwuid/* take a username and return a filled struct passwd */static struct passwd *wb_aix_getpwnam(const char *name){ struct winbindd_response response; struct winbindd_request request; NSS_STATUS ret; struct passwd *pwd; if (*name == WB_AIX_ENCODED) { return wb_aix_getpwuid(decode_id(name)); } logit("getpwnam '%s'/n", name); ZERO_STRUCT(response); ZERO_STRUCT(request); STRCPY_RETNULL(request.data.username, name); ret = winbindd_request(WINBINDD_GETPWNAM, &request, &response); HANDLE_ERRORS(ret); pwd = fill_pwent(&response.data.pw); free_response(&response); logit("getpwnam gave ptr %p/n", pwd); return pwd;}
开发者ID:Nymphetaminer,项目名称:dsl-n55u,代码行数:31,
示例10: _nss_winbind_getpwuid_r_PUBLIC_ NSS_STATUS _nss_winbind_getpwuid_r(uid_t uid, struct passwd *result, char *buffer, size_t buflen, int *errnop){ NSS_STATUS ret; static struct winbindd_response response; struct winbindd_request request; static int keep_response=0;#ifdef DEBUG_NSS fprintf(stderr, "[%5d]: getpwuid %d/n", getpid(), (unsigned int)uid);#endif /* If our static buffer needs to be expanded we are called again */ if (!keep_response) { /* Call for the first time */ ZERO_STRUCT(response); ZERO_STRUCT(request); request.data.uid = uid; ret = winbindd_request(WINBINDD_GETPWUID, &request, &response); if (ret == NSS_STATUS_SUCCESS) { ret = fill_pwent(result, &response.data.pw, &buffer, &buflen); if (ret == NSS_STATUS_TRYAGAIN) { keep_response = True; *errnop = errno = ERANGE; goto done; } } } else { /* We've been called again */ ret = fill_pwent(result, &response.data.pw, &buffer, &buflen); if (ret == NSS_STATUS_TRYAGAIN) { keep_response = True; *errnop = errno = ERANGE; goto done; } keep_response = False; *errnop = errno = 0; } free_response(&response); done:#ifdef DEBUG_NSS fprintf(stderr, "[%5d]: getpwuid %d returns %s (%d)/n", getpid(), (unsigned int)uid, nss_err_str(ret), ret);#endif return ret;}
开发者ID:technosaurus,项目名称:samba4-GPL2,代码行数:60,
示例11: winbind_create_groupBOOL winbind_create_group( const char *name, uint32 *rid ){ struct winbindd_request request; struct winbindd_response response; NSS_STATUS result; if ( !lp_winbind_enable_local_accounts() ) return False; if ( !name ) return False; DEBUG(10,("winbind_create_group: %s/n", name)); ZERO_STRUCT(request); ZERO_STRUCT(response); /* see if the caller wants a new RID returned */ if ( rid ) request.flags = WBFLAG_ALLOCATE_RID; fstrcpy( request.data.acct_mgt.groupname, name ); result = winbindd_request( WINBINDD_CREATE_GROUP, &request, &response); if ( rid ) *rid = response.data.rid; return result == NSS_STATUS_SUCCESS;}
开发者ID:Nymphetaminer,项目名称:dsl-n55u,代码行数:32,
示例12: wb_getgroupsstatic int wb_getgroups(const char *user, gid_t **groups){ struct winbindd_request request; struct winbindd_response response; int result; /* Call winbindd */ fstrcpy(request.data.username, user); ZERO_STRUCT(response); result = winbindd_request(WINBINDD_GETGROUPS, &request, &response); if (result == NSS_STATUS_SUCCESS) { /* Return group list. Don't forget to free the group list when finished. */ *groups = (gid_t *)response.extra_data; return response.data.num_entries; } return -1;}
开发者ID:Nymphetaminer,项目名称:dsl-n55u,代码行数:25,
示例13: winbind_lookup_nameBOOL winbind_lookup_name(const char *dom_name, const char *name, DOM_SID *sid, enum SID_NAME_USE *name_type){ struct winbindd_request request; struct winbindd_response response; NSS_STATUS result; if (!sid || !name_type) return False; /* Send off request */ ZERO_STRUCT(request); ZERO_STRUCT(response); fstrcpy(request.data.name.dom_name, dom_name); fstrcpy(request.data.name.name, name); if ((result = winbindd_request(WINBINDD_LOOKUPNAME, &request, &response)) == NSS_STATUS_SUCCESS) { if (!string_to_sid(sid, response.data.sid.sid)) return False; *name_type = (enum SID_NAME_USE)response.data.sid.type; } return result == NSS_STATUS_SUCCESS;}
开发者ID:Nymphetaminer,项目名称:dsl-n55u,代码行数:27,
示例14: _nss_winbind_getgrgid_rNSS_STATUS_nss_winbind_getgrgid_r(gid_t gid, struct group *result, char *buffer, size_t buflen, int *errnop){ NSS_STATUS ret; static struct winbindd_response response; struct winbindd_request request; static int keep_response;#ifdef DEBUG_NSS fprintf(stderr, "[%5d]: getgrgid %d/n", getpid(), gid);#endif /* If our static buffer needs to be expanded we are called again */ if (!keep_response) { /* Call for the first time */ ZERO_STRUCT(request); ZERO_STRUCT(response); request.data.gid = gid; ret = winbindd_request(WINBINDD_GETGRGID, &request, &response); if (ret == NSS_STATUS_SUCCESS) { ret = fill_grent(result, &response.data.gr, response.extra_data, &buffer, &buflen); if (ret == NSS_STATUS_TRYAGAIN) { keep_response = True; *errnop = errno = ERANGE; return ret; } } } else { /* We've been called again */ ret = fill_grent(result, &response.data.gr, response.extra_data, &buffer, &buflen); if (ret == NSS_STATUS_TRYAGAIN) { keep_response = True; *errnop = errno = ERANGE; return ret; } keep_response = False; *errnop = 0; } free_response(&response); return ret;}
开发者ID:hajuuk,项目名称:R7000,代码行数:60,
示例15: winbind_gid_to_sidBOOL winbind_gid_to_sid(DOM_SID *sid, gid_t gid){ struct winbindd_request request; struct winbindd_response response; int result; if (!sid) return False; /* Initialise request */ ZERO_STRUCT(request); ZERO_STRUCT(response); request.data.gid = gid; /* Make request */ result = winbindd_request(WINBINDD_GID_TO_SID, &request, &response); /* Copy out result */ if (result == NSS_STATUS_SUCCESS) { if (!string_to_sid(sid, response.data.sid.sid)) return False; } else { sid_copy(sid, &global_sid_NULL); } return (result == NSS_STATUS_SUCCESS);}
开发者ID:Nymphetaminer,项目名称:dsl-n55u,代码行数:31,
示例16: winbind_set_user_primary_groupBOOL winbind_set_user_primary_group( const char *user, const char *group ){ struct winbindd_request request; struct winbindd_response response; NSS_STATUS result; if ( !lp_winbind_enable_local_accounts() ) return False; if ( !user || !group ) return False; ZERO_STRUCT(request); ZERO_STRUCT(response); DEBUG(10,("winbind_set_user_primary_group: user(%s), group(%s) /n", user, group)); fstrcpy( request.data.acct_mgt.username, user ); fstrcpy( request.data.acct_mgt.groupname, group ); result = winbindd_request( WINBINDD_SET_USER_PRIMARY_GROUP, &request, &response); return result == NSS_STATUS_SUCCESS;}
开发者ID:Nymphetaminer,项目名称:dsl-n55u,代码行数:25,
示例17: _nss_winbind_getpwnam_rNSS_STATUS_nss_winbind_getpwnam_r(const char *name, struct passwd *result, char *buffer, size_t buflen, int *errnop){ NSS_STATUS ret; static struct winbindd_response response; struct winbindd_request request; static int keep_response;#ifdef DEBUG_NSS fprintf(stderr, "[%5d]: getpwnam %s/n", getpid(), name);#endif /* If our static buffer needs to be expanded we are called again */ if (!keep_response) { /* Call for the first time */ ZERO_STRUCT(response); ZERO_STRUCT(request); strncpy(request.data.username, name, sizeof(request.data.username) - 1); request.data.username [sizeof(request.data.username) - 1] = '/0'; ret = winbindd_request(WINBINDD_GETPWNAM, &request, &response); if (ret == NSS_STATUS_SUCCESS) { ret = fill_pwent(result, &response.data.pw, &buffer, &buflen); if (ret == NSS_STATUS_TRYAGAIN) { keep_response = True; *errnop = errno = ERANGE; return ret; } } } else { /* We've been called again */ ret = fill_pwent(result, &response.data.pw, &buffer, &buflen); if (ret == NSS_STATUS_TRYAGAIN) { keep_response = True; *errnop = errno = ERANGE; return ret; } keep_response = False; *errnop = errno = 0; } free_response(&response); return ret;}
开发者ID:hajuuk,项目名称:R7000,代码行数:59,
示例18: winbind_pingBOOL winbind_ping( void ){ NSS_STATUS result; result = winbindd_request(WINBINDD_PING, NULL, NULL); return result == NSS_STATUS_SUCCESS;}
开发者ID:Nymphetaminer,项目名称:dsl-n55u,代码行数:8,
示例19: _nss_winbind_getpwuid_rNSS_STATUS_nss_winbind_getpwuid_r(uid_t uid, struct passwd *result, char *buffer, size_t buflen, int *errnop){ NSS_STATUS ret; static struct winbindd_response response; struct winbindd_request request; static int keep_response=0; /* If our static buffer needs to be expanded we are called again */ if (!keep_response) { /* Call for the first time */ ZERO_STRUCT(response); ZERO_STRUCT(request); request.data.uid = uid; ret = winbindd_request(WINBINDD_GETPWUID, &request, &response); if (ret == NSS_STATUS_SUCCESS) { ret = fill_pwent(result, &response.data.pw, &buffer, &buflen); if (ret == NSS_STATUS_TRYAGAIN) { keep_response = True; *errnop = errno = ERANGE; return ret; } } } else { /* We've been called again */ ret = fill_pwent(result, &response.data.pw, &buffer, &buflen); if (ret == NSS_STATUS_TRYAGAIN) { keep_response = True; *errnop = errno = ERANGE; return ret; } keep_response = False; *errnop = errno = 0; } free_response(&response); return ret;}
开发者ID:hajuuk,项目名称:R7000,代码行数:51,
示例20: _nss_winbind_endgrentNSS_STATUS_nss_winbind_endgrent(void){#ifdef DEBUG_NSS fprintf(stderr, "[%5d]: endgrent/n", getpid());#endif if (num_gr_cache > 0) { ndx_gr_cache = num_gr_cache = 0; free_response(&getgrent_response); } return winbindd_request(WINBINDD_ENDGRENT, NULL, NULL);}
开发者ID:hajuuk,项目名称:R7000,代码行数:14,
示例21: _nss_winbind_setpwentNSS_STATUS_nss_winbind_setpwent(void){#ifdef DEBUG_NSS fprintf(stderr, "[%5d]: setpwent/n", getpid());#endif if (num_pw_cache > 0) { ndx_pw_cache = num_pw_cache = 0; free_response(&getpwent_response); } return winbindd_request(WINBINDD_SETPWENT, NULL, NULL);}
开发者ID:hajuuk,项目名称:R7000,代码行数:14,
示例22: decode_user/* take a username and return a string containing a comma-separated list of group id numbers to which the user belongs */static char *wb_aix_getgrset(char *user){ struct winbindd_response response; struct winbindd_request request; NSS_STATUS ret; int i, idx; char *tmpbuf; int num_gids; gid_t *gid_list; char *r_user = user; if (*user == WB_AIX_ENCODED) { r_user = decode_user(r_user); if (!r_user) { errno = ENOENT; return NULL; } } logit("getgrset '%s'/n", r_user); STRCPY_RETNULL(request.data.username, r_user); if (*user == WB_AIX_ENCODED) { free(r_user); } ret = winbindd_request(WINBINDD_GETGROUPS, &request, &response); HANDLE_ERRORS(ret); num_gids = response.data.num_entries; gid_list = (gid_t *)response.extra_data; /* allocate a space large enough to contruct the string */ tmpbuf = malloc(num_gids*12); if (!tmpbuf) { return NULL; } for (idx=i=0; i < num_gids-1; i++) { idx += sprintf(tmpbuf+idx, "%u,", gid_list[i]); } idx += sprintf(tmpbuf+idx, "%u", gid_list[i]); free_response(&response); return tmpbuf;}
开发者ID:Nymphetaminer,项目名称:dsl-n55u,代码行数:51,
示例23: Valid_Groups/* returns 1 on success, 0 on failure */static intValid_Groups(char *UserName, const char **UserGroups){ struct winbindd_request request; struct winbindd_response response; NSS_STATUS result; int i; char sid[FSTRING_LEN]; char group[FSTRING_LEN]; int match = 0; memset(&request,0,sizeof(struct winbindd_request)); memset(&response,0,sizeof(struct winbindd_response)); /* Send request */ strncpy(request.data.username,UserName,sizeof(fstring)-1); result = winbindd_request(WINBINDD_GETGROUPS, &request, &response); if (result != NSS_STATUS_SUCCESS) { warn("Warning: Can't enum user groups./n"); return match; } for (i = 0; i < response.data.num_entries; i++) { if ((wbinfo_gid_to_sid(sid, (int)((gid_t *)response.extra_data)[i])) != NULL) { debug("SID: %s/n", sid); if (wbinfo_lookupsid(group,sid) == NULL) { warn("Can't lookup group SID./n"); break; } if (strcmparray(group, UserGroups) == 0) { match = 1; break; } } else { return match; } } SAFE_FREE(response.extra_data); return match;}
开发者ID:miettal,项目名称:armadillo420_standard,代码行数:45,
示例24: wb_aix_authenticate/* authenticate a user */static int wb_aix_authenticate(char *user, char *pass, int *reenter, char **message){ struct winbindd_request request; struct winbindd_response response; NSS_STATUS result; char *r_user = user; logit("authenticate '%s' response='%s'/n", user, pass); *reenter = 0; *message = NULL; /* Send off request */ ZERO_STRUCT(request); ZERO_STRUCT(response); if (*user == WB_AIX_ENCODED) { r_user = decode_user(r_user); if (!r_user) { return AUTH_NOTFOUND; } } STRCPY_RET(request.data.auth.user, r_user); STRCPY_RET(request.data.auth.pass, pass); if (*user == WB_AIX_ENCODED) { free(r_user); } result = winbindd_request(WINBINDD_PAM_AUTH, &request, &response); free_response(&response); logit("auth result %d for '%s'/n", result, user); if (result == NSS_STATUS_SUCCESS) { errno = 0; return AUTH_SUCCESS; } return AUTH_FAILURE;}
开发者ID:Nymphetaminer,项目名称:dsl-n55u,代码行数:47,
注:本文中的winbindd_request函数示例整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 C++ winbindd_request_response函数代码示例 C++ win_vprint函数代码示例 |