mirror of
https://github.com/samba-team/samba.git
synced 2025-01-24 02:04:21 +03:00
net: Make "net groupmap" use functable3
(This used to be commit c328b3e30b17866f4a0fd344d01efca826215cbc)
This commit is contained in:
parent
7ba0724f80
commit
f3d86100b8
@ -79,6 +79,16 @@ static int net_groupmap_list(struct net_context *c, int argc, const char **argv)
|
||||
size_t i;
|
||||
fstring ntgroup = "";
|
||||
fstring sid_string = "";
|
||||
const char list_usage_str[] = "net groupmap list [verbose] "
|
||||
"[ntgroup=NT group] [sid=SID]\n"
|
||||
" verbose\tPrint verbose list\n"
|
||||
" ntgroup\tNT group to list\n"
|
||||
" sid\tSID of group to list";
|
||||
|
||||
if (c->display_usage) {
|
||||
d_printf("Usage:\n%s\n", list_usage_str);
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (c->opt_verbose || c->opt_long_list_entries)
|
||||
long_list = true;
|
||||
@ -104,6 +114,7 @@ static int net_groupmap_list(struct net_context *c, int argc, const char **argv)
|
||||
}
|
||||
else {
|
||||
d_fprintf(stderr, "Bad option: %s\n", argv[i]);
|
||||
d_printf("Usage:\n%s\n", list_usage_str);
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
@ -163,6 +174,10 @@ static int net_groupmap_add(struct net_context *c, int argc, const char **argv)
|
||||
GROUP_MAP map;
|
||||
|
||||
const char *name_type;
|
||||
const char add_usage_str[] = "net groupmap add {rid=<int>|sid=<string>}"
|
||||
" unixgroup=<string> "
|
||||
"[type=<domain|local|builtin>] "
|
||||
"[ntgroup=<string>] [comment=<string>]";
|
||||
|
||||
ZERO_STRUCT(map);
|
||||
|
||||
@ -170,6 +185,11 @@ static int net_groupmap_add(struct net_context *c, int argc, const char **argv)
|
||||
map.sid_name_use = SID_NAME_DOM_GRP;
|
||||
name_type = "domain group";
|
||||
|
||||
if (c->display_usage) {
|
||||
d_printf("Usage\n%s\n", add_usage_str);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* get the options */
|
||||
for ( i=0; i<argc; i++ ) {
|
||||
if ( !StrnCaseCmp(argv[i], "rid", strlen("rid")) ) {
|
||||
@ -237,7 +257,7 @@ static int net_groupmap_add(struct net_context *c, int argc, const char **argv)
|
||||
}
|
||||
|
||||
if ( !unixgrp[0] ) {
|
||||
d_printf("Usage: net groupmap add {rid=<int>|sid=<string>} unixgroup=<string> [type=<domain|local|builtin>] [ntgroup=<string>] [comment=<string>]\n");
|
||||
d_printf("Usage:\n%s\n", add_usage_str);
|
||||
return -1;
|
||||
}
|
||||
|
||||
@ -315,6 +335,16 @@ static int net_groupmap_modify(struct net_context *c, int argc, const char **arg
|
||||
enum lsa_SidType sid_type = SID_NAME_UNKNOWN;
|
||||
int i;
|
||||
gid_t gid;
|
||||
const char modify_usage_str[] = "net groupmap modify "
|
||||
"{ntgroup=<string>|sid=<SID>} "
|
||||
"[comment=<string>] "
|
||||
"[unixgroup=<string>] "
|
||||
"[type=<domain|local>]";
|
||||
|
||||
if (c->display_usage) {
|
||||
d_printf("Usage:\n%s\n", modify_usage_str);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* get the options */
|
||||
for ( i=0; i<argc; i++ ) {
|
||||
@ -366,7 +396,7 @@ static int net_groupmap_modify(struct net_context *c, int argc, const char **arg
|
||||
}
|
||||
|
||||
if ( !ntgroup[0] && !sid_string[0] ) {
|
||||
d_printf("Usage: net groupmap modify {ntgroup=<string>|sid=<SID>} [comment=<string>] [unixgroup=<string>] [type=<domain|local>]\n");
|
||||
d_printf("Usage:\n%s\n", modify_usage_str);
|
||||
return -1;
|
||||
}
|
||||
|
||||
@ -441,6 +471,13 @@ static int net_groupmap_delete(struct net_context *c, int argc, const char **arg
|
||||
fstring ntgroup = "";
|
||||
fstring sid_string = "";
|
||||
int i;
|
||||
const char delete_usage_str[] = "net groupmap delete "
|
||||
"{ntgroup=<string>|sid=<SID>}";
|
||||
|
||||
if (c->display_usage) {
|
||||
d_printf("Usage:\n%s\n", delete_usage_str);
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* get the options */
|
||||
for ( i=0; i<argc; i++ ) {
|
||||
@ -465,7 +502,7 @@ static int net_groupmap_delete(struct net_context *c, int argc, const char **arg
|
||||
}
|
||||
|
||||
if ( !ntgroup[0] && !sid_string[0]) {
|
||||
d_printf("Usage: net groupmap delete {ntgroup=<string>|sid=<SID>}\n");
|
||||
d_printf("Usage:\n%s\n", delete_usage_str);
|
||||
return -1;
|
||||
}
|
||||
|
||||
@ -496,7 +533,7 @@ static int net_groupmap_set(struct net_context *c, int argc, const char **argv)
|
||||
GROUP_MAP map;
|
||||
bool have_map = false;
|
||||
|
||||
if ((argc < 1) || (argc > 2)) {
|
||||
if ((argc < 1) || (argc > 2) || c->display_usage) {
|
||||
d_printf("Usage: net groupmap set \"NT Group\" "
|
||||
"[\"unix group\"] [-C \"comment\"] [-L] [-D]\n");
|
||||
return -1;
|
||||
@ -604,6 +641,13 @@ static int net_groupmap_cleanup(struct net_context *c, int argc, const char **ar
|
||||
GROUP_MAP *map = NULL;
|
||||
size_t i, entries;
|
||||
|
||||
if (c->display_usage) {
|
||||
d_printf("Usage:\n"
|
||||
"net groupmap cleanup\n"
|
||||
" Delete all group mappings\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (!pdb_enum_group_mapping(NULL, SID_NAME_UNKNOWN, &map, &entries,
|
||||
ENUM_ALL_MAPPED)) {
|
||||
d_fprintf(stderr, "Could not list group mappings\n");
|
||||
@ -633,6 +677,7 @@ static int net_groupmap_addmem(struct net_context *c, int argc, const char **arg
|
||||
DOM_SID alias, member;
|
||||
|
||||
if ( (argc != 2) ||
|
||||
c->display_usage ||
|
||||
!string_to_sid(&alias, argv[0]) ||
|
||||
!string_to_sid(&member, argv[1]) ) {
|
||||
d_printf("Usage: net groupmap addmem alias-sid member-sid\n");
|
||||
@ -652,7 +697,8 @@ static int net_groupmap_delmem(struct net_context *c, int argc, const char **arg
|
||||
{
|
||||
DOM_SID alias, member;
|
||||
|
||||
if ( (argc != 2) ||
|
||||
if ( (argc != 2) ||
|
||||
c->display_usage ||
|
||||
!string_to_sid(&alias, argv[0]) ||
|
||||
!string_to_sid(&member, argv[1]) ) {
|
||||
d_printf("Usage: net groupmap delmem alias-sid member-sid\n");
|
||||
@ -674,7 +720,8 @@ static int net_groupmap_listmem(struct net_context *c, int argc, const char **ar
|
||||
DOM_SID *members;
|
||||
size_t i, num;
|
||||
|
||||
if ( (argc != 1) ||
|
||||
if ( (argc != 1) ||
|
||||
c->display_usage ||
|
||||
!string_to_sid(&alias, argv[0]) ) {
|
||||
d_printf("Usage: net groupmap listmem alias-sid\n");
|
||||
return -1;
|
||||
@ -730,7 +777,8 @@ static int net_groupmap_memberships(struct net_context *c, int argc, const char
|
||||
TALLOC_CTX *mem_ctx;
|
||||
DOM_SID *domain_sid, *builtin_sid, member;
|
||||
|
||||
if ( (argc != 1) ||
|
||||
if ( (argc != 1) ||
|
||||
c->display_usage ||
|
||||
!string_to_sid(&member, argv[0]) ) {
|
||||
d_printf("Usage: net groupmap memberof sid\n");
|
||||
return -1;
|
||||
@ -758,51 +806,93 @@ static int net_groupmap_memberships(struct net_context *c, int argc, const char
|
||||
return 0;
|
||||
}
|
||||
|
||||
int net_groupmap_usage(struct net_context *c, int argc, const char **argv)
|
||||
{
|
||||
d_printf("net groupmap add"\
|
||||
"\n Create a new group mapping\n");
|
||||
d_printf("net groupmap modify"\
|
||||
"\n Update a group mapping\n");
|
||||
d_printf("net groupmap delete"\
|
||||
"\n Remove a group mapping\n");
|
||||
d_printf("net groupmap addmem"\
|
||||
"\n Add a foreign alias member\n");
|
||||
d_printf("net groupmap delmem"\
|
||||
"\n Delete a foreign alias member\n");
|
||||
d_printf("net groupmap listmem"\
|
||||
"\n List foreign group members\n");
|
||||
d_printf("net groupmap memberships"\
|
||||
"\n List foreign group memberships\n");
|
||||
d_printf("net groupmap list"\
|
||||
"\n List current group map\n");
|
||||
d_printf("net groupmap set"\
|
||||
"\n Set group mapping\n");
|
||||
d_printf("net groupmap cleanup"\
|
||||
"\n Remove foreign group mapping entries\n");
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
/***********************************************************
|
||||
migrated functionality from smbgroupedit
|
||||
**********************************************************/
|
||||
int net_groupmap(struct net_context *c, int argc, const char **argv)
|
||||
{
|
||||
struct functable func[] = {
|
||||
{"add", net_groupmap_add},
|
||||
{"modify", net_groupmap_modify},
|
||||
{"delete", net_groupmap_delete},
|
||||
{"set", net_groupmap_set},
|
||||
{"cleanup", net_groupmap_cleanup},
|
||||
{"addmem", net_groupmap_addmem},
|
||||
{"delmem", net_groupmap_delmem},
|
||||
{"listmem", net_groupmap_listmem},
|
||||
{"memberships", net_groupmap_memberships},
|
||||
{"list", net_groupmap_list},
|
||||
{"help", net_groupmap_usage},
|
||||
{NULL, NULL}
|
||||
struct functable3 func[] = {
|
||||
{
|
||||
"add",
|
||||
net_groupmap_add,
|
||||
NET_TRANSPORT_LOCAL,
|
||||
"Create a new group mapping",
|
||||
"net groupmap add\n"
|
||||
" Create a new group mapping"
|
||||
},
|
||||
{
|
||||
"modify",
|
||||
net_groupmap_modify,
|
||||
NET_TRANSPORT_LOCAL,
|
||||
"Update a group mapping",
|
||||
"net groupmap modify\n"
|
||||
" Modify an existing group mapping"
|
||||
},
|
||||
{
|
||||
"delete",
|
||||
net_groupmap_delete,
|
||||
NET_TRANSPORT_LOCAL,
|
||||
"Remove a group mapping",
|
||||
"net groupmap delete\n"
|
||||
" Remove a group mapping"
|
||||
},
|
||||
{
|
||||
"set",
|
||||
net_groupmap_set,
|
||||
NET_TRANSPORT_LOCAL,
|
||||
"Set group mapping",
|
||||
"net groupmap set\n"
|
||||
" Set a group mapping"
|
||||
},
|
||||
{
|
||||
"cleanup",
|
||||
net_groupmap_cleanup,
|
||||
NET_TRANSPORT_LOCAL,
|
||||
"Remove foreign group mapping entries",
|
||||
"net groupmap cleanup\n"
|
||||
" Remove foreign group mapping entries"
|
||||
},
|
||||
{
|
||||
"addmem",
|
||||
net_groupmap_addmem,
|
||||
NET_TRANSPORT_LOCAL,
|
||||
"Add a foreign alias member",
|
||||
"net groupmap addmem\n"
|
||||
" Add a foreign alias member"
|
||||
},
|
||||
{
|
||||
"delmem",
|
||||
net_groupmap_delmem,
|
||||
NET_TRANSPORT_LOCAL,
|
||||
"Delete foreign alias member",
|
||||
"net groupmap delmem\n"
|
||||
" Delete foreign alias member"
|
||||
},
|
||||
{
|
||||
"listmem",
|
||||
net_groupmap_listmem,
|
||||
NET_TRANSPORT_LOCAL,
|
||||
"List foreign group members",
|
||||
"net groupmap listmem\n"
|
||||
" List foreign alias members"
|
||||
},
|
||||
{
|
||||
"memberships",
|
||||
net_groupmap_memberships,
|
||||
NET_TRANSPORT_LOCAL,
|
||||
"List foreign group memberships",
|
||||
"net groupmap memberships\n"
|
||||
" List foreign group memberships"
|
||||
},
|
||||
{
|
||||
"list",
|
||||
net_groupmap_list,
|
||||
NET_TRANSPORT_LOCAL,
|
||||
"List current group map",
|
||||
"net groupmap list\n"
|
||||
" List current group map"
|
||||
},
|
||||
{NULL, NULL, 0, NULL, NULL}
|
||||
};
|
||||
|
||||
/* we shouldn't have silly checks like this */
|
||||
@ -811,9 +901,6 @@ int net_groupmap(struct net_context *c, int argc, const char **argv)
|
||||
return -1;
|
||||
}
|
||||
|
||||
if ( argc )
|
||||
return net_run_function(c,argc, argv, func, net_groupmap_usage);
|
||||
|
||||
return net_groupmap_usage(c, argc, argv);
|
||||
return net_run_function3(c,argc, argv, "net groupmap", func);
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user