1
0
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:
Kai Blin 2008-05-19 15:55:34 +02:00
parent 7ba0724f80
commit f3d86100b8

View File

@ -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);
}