diff options
Diffstat (limited to 'examples/libmsrpc/cacusermgr/mgr_group.c')
-rw-r--r-- | examples/libmsrpc/cacusermgr/mgr_group.c | 209 |
1 files changed, 0 insertions, 209 deletions
diff --git a/examples/libmsrpc/cacusermgr/mgr_group.c b/examples/libmsrpc/cacusermgr/mgr_group.c deleted file mode 100644 index 37c89db8133..00000000000 --- a/examples/libmsrpc/cacusermgr/mgr_group.c +++ /dev/null @@ -1,209 +0,0 @@ -/* - * Unix SMB/CIFS implementation. - * cacusermgr group implementation. - * - * Copyright (C) Chris Nicholls 2005 - * - * This program is free software; you can redistribute it and/or modify it - * under the terms of the GNU General Public License as published by the - * Free Software Foundation; either version 3 of the License, or (at your - * option) any later version. - * - * This program is distributed in the hope that it will be useful, but WITHOUT - * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for - * more details. - * - * You should have received a copy of the GNU General Public License along with - * this program; if not, see <http://www.gnu.org/licenses/>. */ - -#include "cacusermgr.h" - -CacGroupInfo *get_group_info(CacServerHandle *hnd, TALLOC_CTX *mem_ctx, POLICY_HND *group_hnd) { - struct SamGetGroupInfo getinfo; - - if(!hnd || !mem_ctx ||!group_hnd) - return NULL; - - ZERO_STRUCT(getinfo); - getinfo.in.group_hnd = group_hnd; - - if(!cac_SamGetGroupInfo(hnd, mem_ctx, &getinfo)) - printerr("Could not get group info.", hnd->status); - - return getinfo.out.info; -} - -void print_group_info(CacGroupInfo *info) { - if(!info) - return; - - printf(" Group Name : %s\n", info->name); - printf(" Description : %s\n", info->description); - printf(" Number of Members : %d\n", info->num_members); -} - -CacGroupInfo *modify_group_info(CacServerHandle *hnd, TALLOC_CTX *mem_ctx, POLICY_HND *group_hnd) { - struct SamSetGroupInfo setinfo; - CacGroupInfo *info = NULL; - fstring tmp; - - info = get_group_info(hnd, mem_ctx, group_hnd); - - if(!info) - return NULL; - - printf("Description [%s]: ", info->description); - mgr_getline(tmp); - if(tmp[0] != '\0') - info->description = talloc_strdup(mem_ctx, tmp); - - ZERO_STRUCT(setinfo); - setinfo.in.group_hnd = group_hnd; - setinfo.in.info = info; - - if(!cac_SamSetGroupInfo(hnd, mem_ctx, &setinfo)) { - printerr("Could not set info.", hnd->status); - info = NULL; - } - - return info; -} - -void group_menu(CacServerHandle *hnd, TALLOC_CTX *mem_ctx, POLICY_HND *dom_hnd, POLICY_HND *group_hnd) { - CacGroupInfo *info = NULL; - int rid_type = 0; - - fstring in; - - char *buf; - - struct SamGetGroupMembers getmem; - struct SamGetNamesFromRids getnames; - struct SamAddGroupMember add; - struct SamRemoveGroupMember del; - - info = get_group_info(hnd, mem_ctx, group_hnd); - - printf("\n"); - print_group_info(info); - - while(in[0] != 'b' && in[0] != 'B' && in[0] != 'q' && in[0] != 'Q') { - printf("\n"); - printf("[m] List Group Members\n"); - printf("[a] Add User To Group\n"); - printf("[r] Remove User From Group\n"); - printf("[l] List Users\n"); - printf("[v] View Group Info\n"); - printf("[d] Set Group Description\n"); - printf("[x] Delete Group\n"); - printf("[b] Back\n\n"); - - printf("Command: "); - mgr_getline(in); - - printf("\n"); - - switch(in[0]) { - case 'a': /*add member to group*/ - case 'A': - ZERO_STRUCT(add); - add.in.group_hnd = group_hnd; - - printf("Enter RID or Name: "); - rid_type = rid_or_name(hnd, mem_ctx, dom_hnd, &add.in.rid, &buf); - - if(rid_type != CAC_USER_RID) { - printf("Invalid User.\n"); - break; - } - - if(!cac_SamAddGroupMember(hnd, mem_ctx, &add)) { - printerr("Could not add user to group.", hnd->status); - } - break; - - case 'r': /*remove user from group*/ - case 'R': - ZERO_STRUCT(del); - del.in.group_hnd = group_hnd; - - printf("Enter RID or Name: "); - rid_type = rid_or_name(hnd, mem_ctx, dom_hnd, &del.in.rid, &buf); - - if(rid_type != CAC_USER_RID) { - printf("Invalid User.\n"); - break; - } - - if(!cac_SamRemoveGroupMember(hnd, mem_ctx, &del)) { - printerr("Could not remove use from group.", hnd->status); - } - break; - - case 'l': /*list users*/ - case 'L': - list_users(hnd, mem_ctx, dom_hnd); - break; - - case 'm': /*list members*/ - case 'M': - ZERO_STRUCT(getmem); - getmem.in.group_hnd = group_hnd; - - if(!cac_SamGetGroupMembers(hnd, mem_ctx, &getmem)) { - printerr("Could not get members.", hnd->status); - break; - } - - ZERO_STRUCT(getnames); - getnames.in.dom_hnd = dom_hnd; - getnames.in.rids = getmem.out.rids; - getnames.in.num_rids = getmem.out.num_members; - - if(!cac_SamGetNamesFromRids(hnd, mem_ctx, &getnames)) { - printerr("Could not lookup names.", hnd->status); - break; - } - - printf("Group has %d members:\n", getnames.out.num_names); - print_lookup_records(getnames.out.map, getnames.out.num_names); - - break; - - case 'd': /*set description*/ - case 'D': - info = modify_group_info(hnd, mem_ctx, group_hnd); - - if(info) - printf("Set Group Info.\n"); - break; - - case 'v': /*view info*/ - case 'V': - info = get_group_info(hnd, mem_ctx, group_hnd); - print_group_info(info); - break; - - case 'x': /*delete group*/ - case 'X': - if(!cac_SamDeleteGroup(hnd, mem_ctx, group_hnd)) - printerr("Could Not Delete Group.", hnd->status); - - /*we want to go back to the main menu*/ - in[0] = 'b'; - break; - - case 'b': /*back*/ - case 'B': - case 'q': - case 'Q': - break; - - default: - printf("Invalid Command.\n"); - } - } - - cac_SamClose(hnd, mem_ctx, group_hnd); -} |