mirror of
https://github.com/samba-team/samba.git
synced 2025-03-29 02:50:28 +03:00
added 'wbinfo --sequence' to show sequence numbers of all domains
(This used to be commit bcd234a3dad2cd3d1c57780f4a7a3833ea611764)
This commit is contained in:
parent
8fff9a4b9e
commit
3a1a53c88a
@ -157,6 +157,31 @@ static BOOL wbinfo_list_domains(void)
|
||||
return True;
|
||||
}
|
||||
|
||||
|
||||
/* show sequence numbers */
|
||||
static BOOL wbinfo_show_sequence(void)
|
||||
{
|
||||
struct winbindd_response response;
|
||||
fstring name;
|
||||
|
||||
ZERO_STRUCT(response);
|
||||
|
||||
/* Send request */
|
||||
if (winbindd_request(WINBINDD_SHOW_SEQUENCE, NULL, &response) !=
|
||||
NSS_STATUS_SUCCESS) {
|
||||
return False;
|
||||
}
|
||||
|
||||
/* Display response */
|
||||
if (response.extra_data) {
|
||||
char *extra_data = (char *)response.extra_data;
|
||||
printf("%s", extra_data);
|
||||
SAFE_FREE(response.extra_data);
|
||||
}
|
||||
|
||||
return True;
|
||||
}
|
||||
|
||||
/* Check trust account password */
|
||||
|
||||
static BOOL wbinfo_check_secret(void)
|
||||
@ -539,6 +564,7 @@ static void usage(void)
|
||||
printf("\t-r user\t\t\tget user groups\n");
|
||||
printf("\t-a user%%password\tauthenticate user\n");
|
||||
printf("\t-p 'ping' winbindd to see if it is alive\n");
|
||||
printf("\t--sequence\t\tshow sequence numbers of all domains\n");
|
||||
}
|
||||
|
||||
/* Main program */
|
||||
@ -556,6 +582,7 @@ int main(int argc, char **argv)
|
||||
static char *string_arg;
|
||||
static int int_arg;
|
||||
BOOL got_command = False;
|
||||
enum {OPT_SEQUENCE=1};
|
||||
|
||||
struct poptOption long_options[] = {
|
||||
|
||||
@ -571,6 +598,7 @@ int main(int argc, char **argv)
|
||||
{ "sid-to-gid", 'Y', POPT_ARG_STRING, &string_arg, 'Y' },
|
||||
{ "check-secret", 't', POPT_ARG_NONE, 0, 't' },
|
||||
{ "trusted-domains", 'm', POPT_ARG_NONE, 0, 'm' },
|
||||
{ "sequence", OPT_SEQUENCE, POPT_ARG_NONE, 0, OPT_SEQUENCE },
|
||||
{ "user-groups", 'r', POPT_ARG_STRING, &string_arg, 'r' },
|
||||
{ "authenticate", 'a', POPT_ARG_STRING, &string_arg, 'a' },
|
||||
{ "set-auth-user", 0, POPT_ARG_STRING, &string_arg, OPT_SET_AUTH_USER },
|
||||
@ -689,6 +717,12 @@ int main(int argc, char **argv)
|
||||
return 1;
|
||||
}
|
||||
break;
|
||||
case OPT_SEQUENCE:
|
||||
if (!wbinfo_show_sequence()) {
|
||||
printf("Could not show sequence numbers\n");
|
||||
return 1;
|
||||
}
|
||||
break;
|
||||
case 'r':
|
||||
if (!wbinfo_get_usergroups(string_arg)) {
|
||||
printf("Could not get groups for user %s\n",
|
||||
|
@ -230,6 +230,7 @@ static struct dispatch_table dispatch_table[] = {
|
||||
{ WINBINDD_LIST_USERS, winbindd_list_users, "LIST_USERS" },
|
||||
{ WINBINDD_LIST_GROUPS, winbindd_list_groups, "LIST_GROUPS" },
|
||||
{ WINBINDD_LIST_TRUSTDOM, winbindd_list_trusted_domains, "LIST_TRUSTDOM" },
|
||||
{ WINBINDD_SHOW_SEQUENCE, winbindd_show_sequence, "SHOW_SEQUENCE" },
|
||||
|
||||
/* SID related functions */
|
||||
|
||||
|
@ -145,6 +145,35 @@ enum winbindd_result winbindd_list_trusted_domains(struct winbindd_cli_state
|
||||
return WINBINDD_OK;
|
||||
}
|
||||
|
||||
|
||||
enum winbindd_result winbindd_show_sequence(struct winbindd_cli_state *state)
|
||||
{
|
||||
struct winbindd_domain *domain;
|
||||
char *extra_data = NULL;
|
||||
|
||||
DEBUG(3, ("[%5d]: show sequence\n", state->pid));
|
||||
|
||||
extra_data = strdup("");
|
||||
|
||||
/* this makes for a very simple data format, and is easily parsable as well
|
||||
if that is ever needed */
|
||||
for (domain = domain_list(); domain; domain = domain->next) {
|
||||
char *s;
|
||||
|
||||
domain->methods->sequence_number(domain, &domain->sequence_number);
|
||||
|
||||
asprintf(&s,"%s%s : %u\n", extra_data,
|
||||
domain->name, (unsigned)domain->sequence_number);
|
||||
free(extra_data);
|
||||
extra_data = s;
|
||||
}
|
||||
|
||||
state->response.extra_data = extra_data;
|
||||
state->response.length += strlen(extra_data);
|
||||
|
||||
return WINBINDD_OK;
|
||||
}
|
||||
|
||||
enum winbindd_result winbindd_ping(struct winbindd_cli_state
|
||||
*state)
|
||||
{
|
||||
|
@ -92,6 +92,8 @@ enum winbindd_cmd {
|
||||
WINBINDD_INFO, /* Various bit of info. Currently just tidbits */
|
||||
WINBINDD_DOMAIN_NAME, /* The domain this winbind server is a member of (lp_workgroup()) */
|
||||
|
||||
WINBINDD_SHOW_SEQUENCE, /* display sequence numbers of domains */
|
||||
|
||||
/* Placeholder for end of cmd list */
|
||||
|
||||
WINBINDD_NUM_CMDS
|
||||
|
@ -69,6 +69,7 @@ void winbindd_idmap_status(void);
|
||||
enum winbindd_result winbindd_check_machine_acct(struct winbindd_cli_state *state);
|
||||
enum winbindd_result winbindd_list_trusted_domains(struct winbindd_cli_state
|
||||
*state);
|
||||
enum winbindd_result winbindd_show_sequence(struct winbindd_cli_state *state);
|
||||
enum winbindd_result winbindd_ping(struct winbindd_cli_state
|
||||
*state);
|
||||
enum winbindd_result winbindd_info(struct winbindd_cli_state *state);
|
||||
|
Loading…
x
Reference in New Issue
Block a user