diff options
Diffstat (limited to 'source3/rpcclient/cmd_srvsvc.c')
-rw-r--r-- | source3/rpcclient/cmd_srvsvc.c | 172 |
1 files changed, 70 insertions, 102 deletions
diff --git a/source3/rpcclient/cmd_srvsvc.c b/source3/rpcclient/cmd_srvsvc.c index 53ee7300da3..d6e01eee85e 100644 --- a/source3/rpcclient/cmd_srvsvc.c +++ b/source3/rpcclient/cmd_srvsvc.c @@ -131,51 +131,38 @@ static char *get_server_type_str(uint32 type) return typestr; } -static void display_server(char *sname, uint32 type, const char *comment) +static void display_server(const char *sname, uint32 type, const char *comment) { printf("\t%-15.15s%-20s %s\n", sname, get_server_type_str(type), comment); } -static void display_srv_info_101(SRV_INFO_101 *sv101) +static void display_srv_info_101(struct srvsvc_NetSrvInfo101 *sv101) { - fstring name; - fstring comment; - - unistr2_to_ascii(name, &sv101->uni_name, sizeof(name) - 1); - unistr2_to_ascii(comment, &sv101->uni_comment, sizeof(comment) - 1); - - display_server(name, sv101->srv_type, comment); + display_server(sv101->server_name, sv101->server_type, sv101->comment); printf("\tplatform_id :\t%d\n", sv101->platform_id); - printf("\tos version :\t%d.%d\n", sv101->ver_major, - sv101->ver_minor); + printf("\tos version :\t%d.%d\n", sv101->version_major, + sv101->version_minor); - printf("\tserver type :\t0x%x\n", sv101->srv_type); + printf("\tserver type :\t0x%x\n", sv101->server_type); } -static void display_srv_info_102(SRV_INFO_102 *sv102) +static void display_srv_info_102(struct srvsvc_NetSrvInfo102 *sv102) { - fstring name; - fstring comment; - fstring usr_path; - - unistr2_to_ascii(name, &sv102->uni_name, sizeof(name) - 1); - unistr2_to_ascii(comment, &sv102->uni_comment, sizeof(comment) - 1); - unistr2_to_ascii(usr_path, &sv102->uni_usr_path, sizeof(usr_path) - 1); - - display_server(name, sv102->srv_type, comment); + display_server(sv102->server_name, sv102->server_type, + sv102->comment); printf("\tplatform_id :\t%d\n", sv102->platform_id); - printf("\tos version :\t%d.%d\n", sv102->ver_major, - sv102->ver_minor); + printf("\tos version :\t%d.%d\n", sv102->version_major, + sv102->version_minor); printf("\tusers :\t%x\n", sv102->users); printf("\tdisc, hidden :\t%x, %x\n", sv102->disc, sv102->hidden); printf("\tannounce, delta :\t%d, %d\n", sv102->announce, - sv102->ann_delta); + sv102->anndelta); printf("\tlicenses :\t%d\n", sv102->licenses); - printf("\tuser path :\t%s\n", usr_path); + printf("\tuser path :\t%s\n", sv102->userpath); } /* Server query info */ @@ -184,7 +171,7 @@ static WERROR cmd_srvsvc_srv_query_info(struct rpc_pipe_client *cli, int argc, const char **argv) { uint32 info_level = 101; - SRV_INFO_CTR ctr; + union srvsvc_NetSrvInfo ctr; WERROR result; if (argc > 2) { @@ -195,7 +182,7 @@ static WERROR cmd_srvsvc_srv_query_info(struct rpc_pipe_client *cli, if (argc == 2) info_level = atoi(argv[1]); - result = rpccli_srvsvc_net_srv_get_info(cli, mem_ctx, info_level, + result = rpccli_srvsvc_NetSrvGetInfo(cli, mem_ctx, NULL, info_level, &ctr); if (!W_ERROR_IS_OK(result)) { @@ -206,10 +193,10 @@ static WERROR cmd_srvsvc_srv_query_info(struct rpc_pipe_client *cli, switch (info_level) { case 101: - display_srv_info_101(&ctr.srv.sv101); + display_srv_info_101(ctr.info101); break; case 102: - display_srv_info_102(&ctr.srv.sv102); + display_srv_info_102(ctr.info102); break; default: printf("unsupported info level %d\n", info_level); @@ -220,53 +207,34 @@ static WERROR cmd_srvsvc_srv_query_info(struct rpc_pipe_client *cli, return result; } -static void display_share_info_1(SRV_SHARE_INFO_1 *info1) +static void display_share_info_1(struct srvsvc_NetShareInfo1 *info1) { - fstring netname = "", remark = ""; - - rpcstr_pull_unistr2_fstring(netname, &info1->info_1_str.uni_netname); - rpcstr_pull_unistr2_fstring(remark, &info1->info_1_str.uni_remark); - - printf("netname: %s\n", netname); - printf("\tremark:\t%s\n", remark); + printf("netname: %s\n", info1->name); + printf("\tremark:\t%s\n", info1->comment); } -static void display_share_info_2(SRV_SHARE_INFO_2 *info2) +static void display_share_info_2(struct srvsvc_NetShareInfo2 *info2) { - fstring netname = "", remark = "", path = "", passwd = ""; - - rpcstr_pull_unistr2_fstring(netname, &info2->info_2_str.uni_netname); - rpcstr_pull_unistr2_fstring(remark, &info2->info_2_str.uni_remark); - rpcstr_pull_unistr2_fstring(path, &info2->info_2_str.uni_path); - rpcstr_pull_unistr2_fstring(passwd, &info2->info_2_str.uni_passwd); - - printf("netname: %s\n", netname); - printf("\tremark:\t%s\n", remark); - printf("\tpath:\t%s\n", path); - printf("\tpassword:\t%s\n", passwd); + printf("netname: %s\n", info2->name); + printf("\tremark:\t%s\n", info2->comment); + printf("\tpath:\t%s\n", info2->path); + printf("\tpassword:\t%s\n", info2->password); } -static void display_share_info_502(SRV_SHARE_INFO_502 *info502) +static void display_share_info_502(struct srvsvc_NetShareInfo502 *info502) { - fstring netname = "", remark = "", path = "", passwd = ""; - - rpcstr_pull_unistr2_fstring(netname, &info502->info_502_str.uni_netname); - rpcstr_pull_unistr2_fstring(remark, &info502->info_502_str.uni_remark); - rpcstr_pull_unistr2_fstring(path, &info502->info_502_str.uni_path); - rpcstr_pull_unistr2_fstring(passwd, &info502->info_502_str.uni_passwd); - - printf("netname: %s\n", netname); - printf("\tremark:\t%s\n", remark); - printf("\tpath:\t%s\n", path); - printf("\tpassword:\t%s\n", passwd); - - printf("\ttype:\t0x%x\n", info502->info_502.type); - printf("\tperms:\t%d\n", info502->info_502.perms); - printf("\tmax_uses:\t%d\n", info502->info_502.max_uses); - printf("\tnum_uses:\t%d\n", info502->info_502.num_uses); + printf("netname: %s\n", info502->name); + printf("\tremark:\t%s\n", info502->comment); + printf("\tpath:\t%s\n", info502->path); + printf("\tpassword:\t%s\n", info502->password); + + printf("\ttype:\t0x%x\n", info502->type); + printf("\tperms:\t%d\n", info502->permissions); + printf("\tmax_uses:\t%d\n", info502->max_users); + printf("\tnum_uses:\t%d\n", info502->current_users); - if (info502->info_502_str.sd) - display_sec_desc(info502->info_502_str.sd); + if (info502->sd) + display_sec_desc(info502->sd); } @@ -275,10 +243,11 @@ static WERROR cmd_srvsvc_net_share_enum(struct rpc_pipe_client *cli, int argc, const char **argv) { uint32 info_level = 2; - SRV_SHARE_INFO_CTR ctr; + union srvsvc_NetShareCtr ctr; WERROR result; - ENUM_HND hnd; + uint32 hnd; uint32 preferred_len = 0xffffffff, i; + uint32 numentries; if (argc > 2) { printf("Usage: %s [infolevel]\n", argv[0]); @@ -288,28 +257,29 @@ static WERROR cmd_srvsvc_net_share_enum(struct rpc_pipe_client *cli, if (argc == 2) info_level = atoi(argv[1]); - init_enum_hnd(&hnd, 0); + hnd = 0; - result = rpccli_srvsvc_net_share_enum( - cli, mem_ctx, info_level, &ctr, preferred_len, &hnd); + result = rpccli_srvsvc_NetShareEnum( + cli, mem_ctx, NULL, &info_level, &ctr, preferred_len, &numentries, + &hnd); - if (!W_ERROR_IS_OK(result) || !ctr.num_entries) + if (!W_ERROR_IS_OK(result) || !numentries) goto done; /* Display results */ switch (info_level) { case 1: - for (i = 0; i < ctr.num_entries; i++) - display_share_info_1(&ctr.share.info1[i]); + for (i = 0; i < numentries; i++) + display_share_info_1(&ctr.ctr1->array[i]); break; case 2: - for (i = 0; i < ctr.num_entries; i++) - display_share_info_2(&ctr.share.info2[i]); + for (i = 0; i < numentries; i++) + display_share_info_2(&ctr.ctr2->array[i]); break; case 502: - for (i = 0; i < ctr.num_entries; i++) - display_share_info_502(&ctr.share.info502[i]); + for (i = 0; i < numentries; i++) + display_share_info_502(&ctr.ctr502->array[i]); break; default: printf("unsupported info level %d\n", info_level); @@ -325,7 +295,7 @@ static WERROR cmd_srvsvc_net_share_get_info(struct rpc_pipe_client *cli, int argc, const char **argv) { uint32 info_level = 502; - SRV_SHARE_INFO info; + union srvsvc_NetShareInfo info; WERROR result; if (argc > 3) { @@ -336,7 +306,7 @@ static WERROR cmd_srvsvc_net_share_get_info(struct rpc_pipe_client *cli, if (argc == 3) info_level = atoi(argv[2]); - result = rpccli_srvsvc_net_share_get_info(cli, mem_ctx, argv[1], info_level, &info); + result = rpccli_srvsvc_NetShareGetInfo(cli, mem_ctx, NULL, argv[1], info_level, &info); if (!W_ERROR_IS_OK(result)) goto done; @@ -345,13 +315,13 @@ static WERROR cmd_srvsvc_net_share_get_info(struct rpc_pipe_client *cli, switch (info_level) { case 1: - display_share_info_1(&info.share.info1); + display_share_info_1(info.info1); break; case 2: - display_share_info_2(&info.share.info2); + display_share_info_2(info.info2); break; case 502: - display_share_info_502(&info.share.info502); + display_share_info_502(info.info502); break; default: printf("unsupported info level %d\n", info_level); @@ -367,8 +337,9 @@ static WERROR cmd_srvsvc_net_share_set_info(struct rpc_pipe_client *cli, int argc, const char **argv) { uint32 info_level = 502; - SRV_SHARE_INFO info_get; + union srvsvc_NetShareInfo info_get; WERROR result; + uint32 parm_error; if (argc > 3) { printf("Usage: %s [sharename] [comment]\n", argv[0]); @@ -376,26 +347,22 @@ static WERROR cmd_srvsvc_net_share_set_info(struct rpc_pipe_client *cli, } /* retrieve share info */ - result = rpccli_srvsvc_net_share_get_info(cli, mem_ctx, argv[1], info_level, &info_get); + result = rpccli_srvsvc_NetShareGetInfo(cli, mem_ctx, NULL, argv[1], info_level, &info_get); if (!W_ERROR_IS_OK(result)) goto done; - info_get.switch_value = info_level; - info_get.ptr_share_ctr = 1; - init_unistr2(&(info_get.share.info502.info_502_str.uni_remark), argv[2], UNI_STR_TERMINATE); - /* set share info */ - result = rpccli_srvsvc_net_share_set_info(cli, mem_ctx, argv[1], info_level, &info_get); + result = rpccli_srvsvc_NetShareSetInfo(cli, mem_ctx, NULL, argv[1], info_level, info_get, &parm_error); if (!W_ERROR_IS_OK(result)) goto done; /* re-retrieve share info and display */ - result = rpccli_srvsvc_net_share_get_info(cli, mem_ctx, argv[1], info_level, &info_get); + result = rpccli_srvsvc_NetShareGetInfo(cli, mem_ctx, NULL, argv[1], info_level, &info_get); if (!W_ERROR_IS_OK(result)) goto done; - display_share_info_502(&info_get.share.info502); + display_share_info_502(info_get.info502); done: return result; @@ -405,9 +372,9 @@ static WERROR cmd_srvsvc_net_remote_tod(struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, int argc, const char **argv) { - TIME_OF_DAY_INFO tod; fstring srv_name_slash; WERROR result; + struct srvsvc_NetRemoteTODInfo tod; if (argc > 1) { printf("Usage: %s\n", argv[0]); @@ -415,7 +382,7 @@ static WERROR cmd_srvsvc_net_remote_tod(struct rpc_pipe_client *cli, } fstr_sprintf(srv_name_slash, "\\\\%s", cli->cli->desthost); - result = rpccli_srvsvc_net_remote_tod( + result = rpccli_srvsvc_NetRemoteTOD( cli, mem_ctx, srv_name_slash, &tod); if (!W_ERROR_IS_OK(result)) @@ -430,10 +397,11 @@ static WERROR cmd_srvsvc_net_file_enum(struct rpc_pipe_client *cli, int argc, const char **argv) { uint32 info_level = 3; - SRV_FILE_INFO_CTR ctr; + union srvsvc_NetFileCtr ctr; WERROR result; - ENUM_HND hnd; + uint32 hnd; uint32 preferred_len = 0xffff; + uint32 numentries; if (argc > 2) { printf("Usage: %s [infolevel]\n", argv[0]); @@ -443,12 +411,12 @@ static WERROR cmd_srvsvc_net_file_enum(struct rpc_pipe_client *cli, if (argc == 2) info_level = atoi(argv[1]); - init_enum_hnd(&hnd, 0); + hnd = 0; ZERO_STRUCT(ctr); - result = rpccli_srvsvc_net_file_enum( - cli, mem_ctx, info_level, NULL, &ctr, preferred_len, &hnd); + result = rpccli_srvsvc_NetFileEnum( + cli, mem_ctx, NULL, NULL, NULL, &info_level, &ctr, preferred_len, &numentries, &hnd); if (!W_ERROR_IS_OK(result)) goto done; |