mirror of
https://github.com/samba-team/samba.git
synced 2025-02-05 21:57:51 +03:00
r19355: Add getdispenumindex2 wrapper for rpcclient.
Guenther
This commit is contained in:
parent
fb21c9c58b
commit
27c35848eb
@ -130,7 +130,7 @@ SamrTestPrivateFunctionsUser
|
||||
#define SAMR_UNKNOWN_2f 0x2f
|
||||
#define SAMR_QUERY_DISPINFO2 0x30 /* Alias for SAMR_QUERY_DISPINFO
|
||||
with info level 3 */
|
||||
#define SAMR_UNKNOWN_31 0x31
|
||||
#define SAMR_GET_DISPENUM_INDEX2 0x31
|
||||
#define SAMR_CREATE_USER 0x32
|
||||
#define SAMR_QUERY_DISPINFO3 0x33 /* Alias for SAMR_QUERY_DISPINFO
|
||||
with info level 4 */
|
||||
|
@ -1459,7 +1459,7 @@ NTSTATUS rpccli_samr_query_dispinfo(struct rpc_pipe_client *cli,
|
||||
|
||||
/* Return output parameters */
|
||||
|
||||
result = r.status;
|
||||
result = r.status;
|
||||
|
||||
if (!NT_STATUS_IS_OK(result) &&
|
||||
NT_STATUS_V(result) != NT_STATUS_V(STATUS_MORE_ENTRIES)) {
|
||||
@ -1511,7 +1511,7 @@ NTSTATUS rpccli_samr_query_dispinfo2(struct rpc_pipe_client *cli,
|
||||
|
||||
/* Return output parameters */
|
||||
|
||||
result = r.status;
|
||||
result = r.status;
|
||||
|
||||
if (!NT_STATUS_IS_OK(result) &&
|
||||
NT_STATUS_V(result) != NT_STATUS_V(STATUS_MORE_ENTRIES)) {
|
||||
@ -1562,7 +1562,7 @@ NTSTATUS rpccli_samr_query_dispinfo3(struct rpc_pipe_client *cli,
|
||||
|
||||
/* Return output parameters */
|
||||
|
||||
result = r.status;
|
||||
result = r.status;
|
||||
|
||||
if (!NT_STATUS_IS_OK(result) &&
|
||||
NT_STATUS_V(result) != NT_STATUS_V(STATUS_MORE_ENTRIES)) {
|
||||
@ -1610,9 +1610,50 @@ NTSTATUS rpccli_samr_get_dispenum_index(struct rpc_pipe_client *cli,
|
||||
|
||||
*idx = 0;
|
||||
|
||||
result = r.status;
|
||||
result = r.status;
|
||||
|
||||
if (NT_STATUS_IS_OK(result)) {
|
||||
if (!NT_STATUS_IS_ERR(result)) {
|
||||
*idx = r.idx;
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
NTSTATUS rpccli_samr_get_dispenum_index2(struct rpc_pipe_client *cli,
|
||||
TALLOC_CTX *mem_ctx,
|
||||
POLICY_HND *domain_pol,
|
||||
uint16 switch_value,
|
||||
const char *name,
|
||||
uint32 *idx)
|
||||
{
|
||||
prs_struct qbuf, rbuf;
|
||||
SAMR_Q_GET_DISPENUM_INDEX q;
|
||||
SAMR_R_GET_DISPENUM_INDEX r;
|
||||
NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
|
||||
|
||||
DEBUG(10,("cli_samr_get_dispenum_index2 for name = %s\n", name));
|
||||
|
||||
ZERO_STRUCT(q);
|
||||
ZERO_STRUCT(r);
|
||||
|
||||
/* Marshall data and send request */
|
||||
|
||||
init_samr_q_get_dispenum_index(&q, domain_pol, switch_value, name);
|
||||
|
||||
CLI_DO_RPC(cli, mem_ctx, PI_SAMR, SAMR_GET_DISPENUM_INDEX2,
|
||||
q, r,
|
||||
qbuf, rbuf,
|
||||
samr_io_q_get_dispenum_index,
|
||||
samr_io_r_get_dispenum_index,
|
||||
NT_STATUS_UNSUCCESSFUL);
|
||||
|
||||
/* Return output parameters */
|
||||
|
||||
*idx = 0;
|
||||
|
||||
result = r.status;
|
||||
|
||||
if (!NT_STATUS_IS_ERR(result)) {
|
||||
*idx = r.idx;
|
||||
}
|
||||
|
||||
|
@ -1370,9 +1370,10 @@ static NTSTATUS cmd_samr_query_dispinfo3(struct rpc_pipe_client *cli,
|
||||
|
||||
/* Query display info index */
|
||||
|
||||
static NTSTATUS cmd_samr_get_dispenum_index(struct rpc_pipe_client *cli,
|
||||
TALLOC_CTX *mem_ctx,
|
||||
int argc, const char **argv)
|
||||
static NTSTATUS cmd_samr_get_dispenum_index_int(struct rpc_pipe_client *cli,
|
||||
TALLOC_CTX *mem_ctx,
|
||||
int argc, const char **argv,
|
||||
int opcode)
|
||||
{
|
||||
POLICY_HND connect_pol, domain_pol;
|
||||
NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
|
||||
@ -1381,21 +1382,22 @@ static NTSTATUS cmd_samr_get_dispenum_index(struct rpc_pipe_client *cli,
|
||||
uint32 idx;
|
||||
|
||||
if (argc < 2 || argc > 3) {
|
||||
printf("Usage: %s mame [info level]\n", argv[0]);
|
||||
printf("Usage: %s name [info level]\n", argv[0]);
|
||||
return NT_STATUS_OK;
|
||||
}
|
||||
|
||||
if (argc >= 3)
|
||||
if (argc >= 3) {
|
||||
sscanf(argv[2], "%hd", &info_level);
|
||||
|
||||
}
|
||||
|
||||
/* Get sam policy handle */
|
||||
|
||||
result = try_samr_connects(cli, mem_ctx, MAXIMUM_ALLOWED_ACCESS,
|
||||
&connect_pol);
|
||||
|
||||
if (!NT_STATUS_IS_OK(result))
|
||||
if (!NT_STATUS_IS_OK(result)) {
|
||||
goto done;
|
||||
}
|
||||
|
||||
/* Get domain policy handle */
|
||||
|
||||
@ -1403,18 +1405,31 @@ static NTSTATUS cmd_samr_get_dispenum_index(struct rpc_pipe_client *cli,
|
||||
access_mask,
|
||||
&domain_sid, &domain_pol);
|
||||
|
||||
if (!NT_STATUS_IS_OK(result))
|
||||
if (!NT_STATUS_IS_OK(result)) {
|
||||
goto done;
|
||||
}
|
||||
|
||||
/* Query display info index */
|
||||
|
||||
result = rpccli_samr_get_dispenum_index(cli, mem_ctx, &domain_pol,
|
||||
info_level, argv[1], &idx);
|
||||
if (!NT_STATUS_IS_OK(result)) {
|
||||
switch (opcode) {
|
||||
case SAMR_GET_DISPENUM_INDEX:
|
||||
result = rpccli_samr_get_dispenum_index(cli, mem_ctx, &domain_pol,
|
||||
info_level, argv[1], &idx);
|
||||
break;
|
||||
case SAMR_GET_DISPENUM_INDEX2:
|
||||
result = rpccli_samr_get_dispenum_index2(cli, mem_ctx, &domain_pol,
|
||||
info_level, argv[1], &idx);
|
||||
break;
|
||||
default:
|
||||
printf("unknown opcode\n");
|
||||
return NT_STATUS_INVALID_PARAMETER;
|
||||
}
|
||||
|
||||
if (NT_STATUS_IS_ERR(result)) {
|
||||
goto done;
|
||||
};
|
||||
|
||||
printf("idx is: %d\n", idx);
|
||||
printf("idx is: %d (0x%08x)\n", idx, idx);
|
||||
|
||||
rpccli_samr_close(cli, mem_ctx, &domain_pol);
|
||||
rpccli_samr_close(cli, mem_ctx, &connect_pol);
|
||||
@ -1422,7 +1437,23 @@ static NTSTATUS cmd_samr_get_dispenum_index(struct rpc_pipe_client *cli,
|
||||
return result;
|
||||
}
|
||||
|
||||
/* Query display info index */
|
||||
|
||||
static NTSTATUS cmd_samr_get_dispenum_index(struct rpc_pipe_client *cli,
|
||||
TALLOC_CTX *mem_ctx,
|
||||
int argc, const char **argv)
|
||||
{
|
||||
return cmd_samr_get_dispenum_index_int(cli, mem_ctx, argc, argv, SAMR_GET_DISPENUM_INDEX);
|
||||
}
|
||||
|
||||
/* Query display info index2 */
|
||||
|
||||
static NTSTATUS cmd_samr_get_dispenum_index2(struct rpc_pipe_client *cli,
|
||||
TALLOC_CTX *mem_ctx,
|
||||
int argc, const char **argv)
|
||||
{
|
||||
return cmd_samr_get_dispenum_index_int(cli, mem_ctx, argc, argv, SAMR_GET_DISPENUM_INDEX2);
|
||||
}
|
||||
|
||||
/* Query domain info */
|
||||
|
||||
@ -2230,6 +2261,7 @@ struct cmd_set samr_commands[] = {
|
||||
{ "querydispinfo2", RPC_RTYPE_NTSTATUS, cmd_samr_query_dispinfo2, NULL, PI_SAMR, NULL, "Query display info 2", "" },
|
||||
{ "querydispinfo3", RPC_RTYPE_NTSTATUS, cmd_samr_query_dispinfo3, NULL, PI_SAMR, NULL, "Query display info 3", "" },
|
||||
{ "getdispenumindex", RPC_RTYPE_NTSTATUS, cmd_samr_get_dispenum_index, NULL, PI_SAMR, NULL, "Query display info index", "" },
|
||||
{ "getdispenumindex2", RPC_RTYPE_NTSTATUS, cmd_samr_get_dispenum_index2, NULL, PI_SAMR, NULL, "Query display info index", "" },
|
||||
{ "querydominfo", RPC_RTYPE_NTSTATUS, cmd_samr_query_dominfo, NULL, PI_SAMR, NULL, "Query domain info", "" },
|
||||
{ "enumdomusers", RPC_RTYPE_NTSTATUS, cmd_samr_enum_dom_users, NULL, PI_SAMR, NULL, "Enumerate domain users", "" },
|
||||
{ "enumdomgroups", RPC_RTYPE_NTSTATUS, cmd_samr_enum_dom_groups, NULL, PI_SAMR, NULL, "Enumerate domain groups", "" },
|
||||
|
Loading…
x
Reference in New Issue
Block a user