rpcclient/cmd_srvsvc.c

ソースコードを見る。

関数

static char * get_server_type_str (uint32 type)
static void display_server (char *sname, uint32 type, const char *comment)
static void display_srv_info_101 (SRV_INFO_101 *sv101)
static void display_srv_info_102 (SRV_INFO_102 *sv102)
static WERROR cmd_srvsvc_srv_query_info (struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, int argc, const char **argv)
static void display_share_info_1 (SRV_SHARE_INFO_1 *info1)
static void display_share_info_2 (SRV_SHARE_INFO_2 *info2)
static void display_share_info_502 (SRV_SHARE_INFO_502 *info502)
static WERROR cmd_srvsvc_net_share_enum (struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, int argc, const char **argv)
static WERROR cmd_srvsvc_net_share_get_info (struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, int argc, const char **argv)
static WERROR cmd_srvsvc_net_share_set_info (struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, int argc, const char **argv)
static WERROR cmd_srvsvc_net_remote_tod (struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, int argc, const char **argv)
static WERROR cmd_srvsvc_net_file_enum (struct rpc_pipe_client *cli, TALLOC_CTX *mem_ctx, int argc, const char **argv)

変数

cmd_set srvsvc_commands []


関数

static char* get_server_type_str ( uint32  type  )  [static]

cmd_srvsvc.c29 行で定義されています。

参照元 display_server().

00030 {
00031         static fstring typestr;
00032         int i;
00033 
00034         if (type == SV_TYPE_ALL) {
00035                 fstrcpy(typestr, "All");
00036                 return typestr;
00037         }
00038                 
00039         typestr[0] = 0;
00040 
00041         for (i = 0; i < 32; i++) {
00042                 if (type & (1 << i)) {
00043                         switch (1 << i) {
00044                         case SV_TYPE_WORKSTATION:
00045                                 fstrcat(typestr, "Wk ");
00046                                 break;
00047                         case SV_TYPE_SERVER:
00048                                 fstrcat(typestr, "Sv ");
00049                                 break;
00050                         case SV_TYPE_SQLSERVER:
00051                                 fstrcat(typestr, "Sql ");
00052                                 break;
00053                         case SV_TYPE_DOMAIN_CTRL:
00054                                 fstrcat(typestr, "PDC ");
00055                                 break;
00056                         case SV_TYPE_DOMAIN_BAKCTRL:
00057                                 fstrcat(typestr, "BDC ");
00058                                 break;
00059                         case SV_TYPE_TIME_SOURCE:
00060                                 fstrcat(typestr, "Tim ");
00061                                 break;
00062                         case SV_TYPE_AFP:
00063                                 fstrcat(typestr, "AFP ");
00064                                 break;
00065                         case SV_TYPE_NOVELL:
00066                                 fstrcat(typestr, "Nov ");
00067                                 break;
00068                         case SV_TYPE_DOMAIN_MEMBER:
00069                                 fstrcat(typestr, "Dom ");
00070                                 break;
00071                         case SV_TYPE_PRINTQ_SERVER:
00072                                 fstrcat(typestr, "PrQ ");
00073                                 break;
00074                         case SV_TYPE_DIALIN_SERVER:
00075                                 fstrcat(typestr, "Din ");
00076                                 break;
00077                         case SV_TYPE_SERVER_UNIX:
00078                                 fstrcat(typestr, "Unx ");
00079                                 break;
00080                         case SV_TYPE_NT:
00081                                 fstrcat(typestr, "NT ");
00082                                 break;
00083                         case SV_TYPE_WFW:
00084                                 fstrcat(typestr, "Wfw ");
00085                                 break;
00086                         case SV_TYPE_SERVER_MFPN:
00087                                 fstrcat(typestr, "Mfp ");
00088                                 break;
00089                         case SV_TYPE_SERVER_NT:
00090                                 fstrcat(typestr, "SNT ");
00091                                 break;
00092                         case SV_TYPE_POTENTIAL_BROWSER:
00093                                 fstrcat(typestr, "PtB ");
00094                                 break;
00095                         case SV_TYPE_BACKUP_BROWSER:
00096                                 fstrcat(typestr, "BMB ");
00097                                 break;
00098                         case SV_TYPE_MASTER_BROWSER:
00099                                 fstrcat(typestr, "LMB ");
00100                                 break;
00101                         case SV_TYPE_DOMAIN_MASTER:
00102                                 fstrcat(typestr, "DMB ");
00103                                 break;
00104                         case SV_TYPE_SERVER_OSF:
00105                                 fstrcat(typestr, "OSF ");
00106                                 break;
00107                         case SV_TYPE_SERVER_VMS:
00108                                 fstrcat(typestr, "VMS ");
00109                                 break;
00110                         case SV_TYPE_WIN95_PLUS:
00111                                 fstrcat(typestr, "W95 ");
00112                                 break;
00113                         case SV_TYPE_ALTERNATE_XPORT:
00114                                 fstrcat(typestr, "Xpt ");
00115                                 break;
00116                         case SV_TYPE_LOCAL_LIST_ONLY:
00117                                 fstrcat(typestr, "Dom ");
00118                                 break;
00119                         case SV_TYPE_DOMAIN_ENUM:
00120                                 fstrcat(typestr, "Loc ");
00121                                 break;
00122                         }
00123                 }
00124         }
00125 
00126         i = strlen(typestr) - 1;
00127 
00128         if (typestr[i] == ' ')
00129                 typestr[i] = 0;
00130         
00131         return typestr;
00132 }

static void display_server ( char *  sname,
uint32  type,
const char *  comment 
) [static]

cmd_srvsvc.c134 行で定義されています。

参照先 get_server_type_str()printf().

参照元 display_srv_info_101()display_srv_info_102().

00135 {
00136         printf("\t%-15.15s%-20s %s\n", sname, get_server_type_str(type), 
00137                comment);
00138 }

static void display_srv_info_101 ( SRV_INFO_101 sv101  )  [static]

cmd_srvsvc.c140 行で定義されています。

参照先 display_server()namesrv_info_101_info::platform_idprintf()srv_info_101_info::srv_typesrv_info_101_info::uni_commentsrv_info_101_info::uni_nameunistr2_to_ascii()srv_info_101_info::ver_majorsrv_info_101_info::ver_minor.

参照元 cmd_srvsvc_srv_query_info().

00141 {
00142         fstring name;
00143         fstring comment;
00144 
00145         unistr2_to_ascii(name, &sv101->uni_name, sizeof(name) - 1);
00146         unistr2_to_ascii(comment, &sv101->uni_comment, sizeof(comment) - 1);
00147 
00148         display_server(name, sv101->srv_type, comment);
00149 
00150         printf("\tplatform_id     :\t%d\n", sv101->platform_id);
00151         printf("\tos version      :\t%d.%d\n", sv101->ver_major, 
00152                sv101->ver_minor);
00153 
00154         printf("\tserver type     :\t0x%x\n", sv101->srv_type);
00155 }

static void display_srv_info_102 ( SRV_INFO_102 sv102  )  [static]

cmd_srvsvc.c157 行で定義されています。

参照先 srv_info_102_info::ann_deltasrv_info_102_info::announcesrv_info_102_info::discdisplay_server()srv_info_102_info::hiddensrv_info_102_info::licensesnamesrv_info_102_info::platform_idprintf()srv_info_102_info::srv_typesrv_info_102_info::uni_commentsrv_info_102_info::uni_namesrv_info_102_info::uni_usr_pathunistr2_to_ascii()srv_info_102_info::userssrv_info_102_info::ver_majorsrv_info_102_info::ver_minor.

参照元 cmd_srvsvc_srv_query_info().

00158 {
00159         fstring name;
00160         fstring comment;
00161         fstring usr_path;
00162         
00163         unistr2_to_ascii(name, &sv102->uni_name, sizeof(name) - 1);
00164         unistr2_to_ascii(comment, &sv102->uni_comment, sizeof(comment) - 1);
00165         unistr2_to_ascii(usr_path, &sv102->uni_usr_path, sizeof(usr_path) - 1);
00166 
00167         display_server(name, sv102->srv_type, comment);
00168 
00169         printf("\tplatform_id     :\t%d\n", sv102->platform_id);
00170         printf("\tos version      :\t%d.%d\n", sv102->ver_major, 
00171                sv102->ver_minor);
00172 
00173         printf("\tusers           :\t%x\n", sv102->users);
00174         printf("\tdisc, hidden    :\t%x, %x\n", sv102->disc, sv102->hidden);
00175         printf("\tannounce, delta :\t%d, %d\n", sv102->announce, 
00176                sv102->ann_delta);
00177         printf("\tlicenses        :\t%d\n", sv102->licenses);
00178         printf("\tuser path       :\t%s\n", usr_path);
00179 }

static WERROR cmd_srvsvc_srv_query_info ( struct rpc_pipe_client cli,
TALLOC_CTX mem_ctx,
int  argc,
const char **  argv 
) [static]

cmd_srvsvc.c182 行で定義されています。

参照先 clidisplay_srv_info_101()display_srv_info_102()printf()resultrpccli_srvsvc_net_srv_get_info()srv_info_ctr_info::srvsrv_info_ctr_info::sv101srv_info_ctr_info::sv102.

00185 {
00186         uint32 info_level = 101;
00187         SRV_INFO_CTR ctr;
00188         WERROR result;
00189 
00190         if (argc > 2) {
00191                 printf("Usage: %s [infolevel]\n", argv[0]);
00192                 return WERR_OK;
00193         }
00194 
00195         if (argc == 2)
00196                 info_level = atoi(argv[1]);
00197 
00198         result = rpccli_srvsvc_net_srv_get_info(cli, mem_ctx, info_level,
00199                                              &ctr);
00200 
00201         if (!W_ERROR_IS_OK(result)) {
00202                 goto done;
00203         }
00204 
00205         /* Display results */
00206 
00207         switch (info_level) {
00208         case 101:
00209                 display_srv_info_101(&ctr.srv.sv101);
00210                 break;
00211         case 102:
00212                 display_srv_info_102(&ctr.srv.sv102);
00213                 break;
00214         default:
00215                 printf("unsupported info level %d\n", info_level);
00216                 break;
00217         }
00218 
00219  done:
00220         return result;
00221 }

static void display_share_info_1 ( SRV_SHARE_INFO_1 info1  )  [static]

cmd_srvsvc.c223 行で定義されています。

参照先 share_info_1_info::info_1_strprintf()rpcstr_pull_unistr2_fstring()str_share_info1::uni_netnamestr_share_info1::uni_remark.

参照元 cmd_srvsvc_net_share_enum()cmd_srvsvc_net_share_get_info()rpc_share_list_internals().

00224 {
00225         fstring netname = "", remark = "";
00226 
00227         rpcstr_pull_unistr2_fstring(netname, &info1->info_1_str.uni_netname);
00228         rpcstr_pull_unistr2_fstring(remark, &info1->info_1_str.uni_remark);
00229 
00230         printf("netname: %s\n", netname);
00231         printf("\tremark:\t%s\n", remark);
00232 }

static void display_share_info_2 ( SRV_SHARE_INFO_2 info2  )  [static]

cmd_srvsvc.c234 行で定義されています。

参照先 share_info_2_info::info_2_strprintf()rpcstr_pull_unistr2_fstring()str_share_info2::uni_netnamestr_share_info2::uni_passwdstr_share_info2::uni_pathstr_share_info2::uni_remark.

参照元 cmd_srvsvc_net_share_enum()cmd_srvsvc_net_share_get_info().

00235 {
00236         fstring netname = "", remark = "", path = "", passwd = "";
00237 
00238         rpcstr_pull_unistr2_fstring(netname, &info2->info_2_str.uni_netname);
00239         rpcstr_pull_unistr2_fstring(remark, &info2->info_2_str.uni_remark);
00240         rpcstr_pull_unistr2_fstring(path, &info2->info_2_str.uni_path);
00241         rpcstr_pull_unistr2_fstring(passwd, &info2->info_2_str.uni_passwd);
00242 
00243         printf("netname: %s\n", netname);
00244         printf("\tremark:\t%s\n", remark);
00245         printf("\tpath:\t%s\n", path);
00246         printf("\tpassword:\t%s\n", passwd);
00247 }

static void display_share_info_502 ( SRV_SHARE_INFO_502 info502  )  [static]

cmd_srvsvc.c249 行で定義されています。

参照先 display_sec_desc()share_info_502_info::info_502share_info_502_info::info_502_strptr_share_info502::max_usesptr_share_info502::num_usesptr_share_info502::permsprintf()rpcstr_pull_unistr2_fstring()str_share_info502::sdptr_share_info502::typestr_share_info502::uni_netnamestr_share_info502::uni_passwdstr_share_info502::uni_pathstr_share_info502::uni_remark.

参照元 cmd_srvsvc_net_share_enum()cmd_srvsvc_net_share_get_info()cmd_srvsvc_net_share_set_info().

00250 {
00251         fstring netname = "", remark = "", path = "", passwd = "";
00252 
00253         rpcstr_pull_unistr2_fstring(netname, &info502->info_502_str.uni_netname);
00254         rpcstr_pull_unistr2_fstring(remark, &info502->info_502_str.uni_remark);
00255         rpcstr_pull_unistr2_fstring(path, &info502->info_502_str.uni_path);
00256         rpcstr_pull_unistr2_fstring(passwd, &info502->info_502_str.uni_passwd);
00257 
00258         printf("netname: %s\n", netname);
00259         printf("\tremark:\t%s\n", remark);
00260         printf("\tpath:\t%s\n", path);
00261         printf("\tpassword:\t%s\n", passwd);
00262 
00263         printf("\ttype:\t0x%x\n", info502->info_502.type);
00264         printf("\tperms:\t%d\n", info502->info_502.perms);
00265         printf("\tmax_uses:\t%d\n", info502->info_502.max_uses);
00266         printf("\tnum_uses:\t%d\n", info502->info_502.num_uses);
00267         
00268         if (info502->info_502_str.sd)
00269                 display_sec_desc(info502->info_502_str.sd);
00270 
00271 }

static WERROR cmd_srvsvc_net_share_enum ( struct rpc_pipe_client cli,
TALLOC_CTX mem_ctx,
int  argc,
const char **  argv 
) [static]

cmd_srvsvc.c273 行で定義されています。

参照先 clidisplay_share_info_1()display_share_info_2()display_share_info_502()srv_share_info_ctr_info::info1srv_share_info_ctr_info::info2srv_share_info_ctr_info::info502init_enum_hnd()srv_share_info_ctr_info::num_entriesprintf()resultrpccli_srvsvc_net_share_enum()srv_share_info_ctr_info::share.

00276 {
00277         uint32 info_level = 2;
00278         SRV_SHARE_INFO_CTR ctr;
00279         WERROR result;
00280         ENUM_HND hnd;
00281         uint32 preferred_len = 0xffffffff, i;
00282 
00283         if (argc > 2) {
00284                 printf("Usage: %s [infolevel]\n", argv[0]);
00285                 return WERR_OK;
00286         }
00287 
00288         if (argc == 2)
00289                 info_level = atoi(argv[1]);
00290 
00291         init_enum_hnd(&hnd, 0);
00292 
00293         result = rpccli_srvsvc_net_share_enum(
00294                 cli, mem_ctx, info_level, &ctr, preferred_len, &hnd);
00295 
00296         if (!W_ERROR_IS_OK(result) || !ctr.num_entries)
00297                 goto done;
00298 
00299         /* Display results */
00300 
00301         switch (info_level) {
00302         case 1:
00303                 for (i = 0; i < ctr.num_entries; i++)
00304                         display_share_info_1(&ctr.share.info1[i]);
00305                 break;
00306         case 2:
00307                 for (i = 0; i < ctr.num_entries; i++)
00308                         display_share_info_2(&ctr.share.info2[i]);
00309                 break;
00310         case 502:
00311                 for (i = 0; i < ctr.num_entries; i++)
00312                         display_share_info_502(&ctr.share.info502[i]);
00313                 break;
00314         default:
00315                 printf("unsupported info level %d\n", info_level);
00316                 break;
00317         }
00318 
00319  done:
00320         return result;
00321 }

static WERROR cmd_srvsvc_net_share_get_info ( struct rpc_pipe_client cli,
TALLOC_CTX mem_ctx,
int  argc,
const char **  argv 
) [static]

cmd_srvsvc.c323 行で定義されています。

参照先 clidisplay_share_info_1()display_share_info_2()display_share_info_502()srv_share_info::info1srv_share_info::info2srv_share_info::info502printf()resultrpccli_srvsvc_net_share_get_info()srv_share_info::share.

00326 {
00327         uint32 info_level = 502;
00328         SRV_SHARE_INFO info;
00329         WERROR result;
00330 
00331         if (argc > 3) {
00332                 printf("Usage: %s [sharename] [infolevel]\n", argv[0]);
00333                 return WERR_OK;
00334         }
00335 
00336         if (argc == 3)
00337                 info_level = atoi(argv[2]);
00338 
00339         result = rpccli_srvsvc_net_share_get_info(cli, mem_ctx, argv[1], info_level, &info);
00340 
00341         if (!W_ERROR_IS_OK(result))
00342                 goto done;
00343 
00344         /* Display results */
00345 
00346         switch (info_level) {
00347         case 1:
00348                 display_share_info_1(&info.share.info1);
00349                 break;
00350         case 2:
00351                 display_share_info_2(&info.share.info2);
00352                 break;
00353         case 502:
00354                 display_share_info_502(&info.share.info502);
00355                 break;
00356         default:
00357                 printf("unsupported info level %d\n", info_level);
00358                 break;
00359         }
00360 
00361  done:
00362         return result;
00363 }

static WERROR cmd_srvsvc_net_share_set_info ( struct rpc_pipe_client cli,
TALLOC_CTX mem_ctx,
int  argc,
const char **  argv 
) [static]

cmd_srvsvc.c365 行で定義されています。

参照先 clidisplay_share_info_502()srv_share_info::info502share_info_502_info::info_502_strinit_unistr2()printf()srv_share_info::ptr_share_ctrresultrpccli_srvsvc_net_share_get_info()rpccli_srvsvc_net_share_set_info()srv_share_info::sharesrv_share_info::switch_valuestr_share_info502::uni_remarkUNI_STR_TERMINATE.

00368 {
00369         uint32 info_level = 502;
00370         SRV_SHARE_INFO info_get;
00371         WERROR result;
00372 
00373         if (argc > 3) {
00374                 printf("Usage: %s [sharename] [comment]\n", argv[0]);
00375                 return WERR_OK;
00376         }
00377 
00378         /* retrieve share info */
00379         result = rpccli_srvsvc_net_share_get_info(cli, mem_ctx, argv[1], info_level, &info_get);
00380         if (!W_ERROR_IS_OK(result))
00381                 goto done;
00382 
00383         info_get.switch_value = info_level;
00384         info_get.ptr_share_ctr = 1;
00385         init_unistr2(&(info_get.share.info502.info_502_str.uni_remark), argv[2], UNI_STR_TERMINATE);
00386         
00387         /* set share info */
00388         result = rpccli_srvsvc_net_share_set_info(cli, mem_ctx, argv[1], info_level, &info_get);
00389 
00390         if (!W_ERROR_IS_OK(result))
00391                 goto done;
00392 
00393         /* re-retrieve share info and display */
00394         result = rpccli_srvsvc_net_share_get_info(cli, mem_ctx, argv[1], info_level, &info_get);
00395         if (!W_ERROR_IS_OK(result))
00396                 goto done;
00397 
00398         display_share_info_502(&info_get.share.info502);
00399         
00400  done:
00401         return result;
00402 }

static WERROR cmd_srvsvc_net_remote_tod ( struct rpc_pipe_client cli,
TALLOC_CTX mem_ctx,
int  argc,
const char **  argv 
) [static]

cmd_srvsvc.c404 行で定義されています。

参照先 clicli_state::desthostfstr_sprintf()printf()resultrpccli_srvsvc_net_remote_tod().

00407 {
00408         TIME_OF_DAY_INFO tod;
00409         fstring srv_name_slash;
00410         WERROR result;
00411 
00412         if (argc > 1) {
00413                 printf("Usage: %s\n", argv[0]);
00414                 return WERR_OK;
00415         }
00416 
00417         fstr_sprintf(srv_name_slash, "\\\\%s", cli->cli->desthost);
00418         result = rpccli_srvsvc_net_remote_tod(
00419                 cli, mem_ctx, srv_name_slash, &tod);
00420 
00421         if (!W_ERROR_IS_OK(result))
00422                 goto done;
00423 
00424  done:
00425         return result;
00426 }

static WERROR cmd_srvsvc_net_file_enum ( struct rpc_pipe_client cli,
TALLOC_CTX mem_ctx,
int  argc,
const char **  argv 
) [static]

cmd_srvsvc.c428 行で定義されています。

参照先 cliinit_enum_hnd()printf()resultrpccli_srvsvc_net_file_enum().

00431 {
00432         uint32 info_level = 3;
00433         SRV_FILE_INFO_CTR ctr;
00434         WERROR result;
00435         ENUM_HND hnd;
00436         uint32 preferred_len = 0xffff;
00437 
00438         if (argc > 2) {
00439                 printf("Usage: %s [infolevel]\n", argv[0]);
00440                 return WERR_OK;
00441         }
00442 
00443         if (argc == 2)
00444                 info_level = atoi(argv[1]);
00445 
00446         init_enum_hnd(&hnd, 0);
00447 
00448         ZERO_STRUCT(ctr);
00449 
00450         result = rpccli_srvsvc_net_file_enum(
00451                 cli, mem_ctx, info_level, NULL, &ctr, preferred_len, &hnd);
00452 
00453         if (!W_ERROR_IS_OK(result))
00454                 goto done;
00455 
00456  done:
00457         return result;
00458 }


変数

struct cmd_set srvsvc_commands[]

初期値:

 {

        { "SRVSVC" },

        { "srvinfo",     RPC_RTYPE_WERROR, NULL, cmd_srvsvc_srv_query_info, PI_SRVSVC, NULL, "Server query info", "" },
        { "netshareenum",RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_share_enum, PI_SRVSVC, NULL, "Enumerate shares", "" },
        { "netsharegetinfo",RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_share_get_info, PI_SRVSVC, NULL, "Get Share Info", "" },
        { "netsharesetinfo",RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_share_set_info, PI_SRVSVC, NULL, "Set Share Info", "" },
        { "netfileenum", RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_file_enum,  PI_SRVSVC, NULL, "Enumerate open files", "" },
        { "netremotetod",RPC_RTYPE_WERROR, NULL, cmd_srvsvc_net_remote_tod, PI_SRVSVC, NULL, "Fetch remote time of day", "" },

        { NULL }
}

cmd_srvsvc.c462 行で定義されています。


Sambaに対してSat Aug 29 21:24:24 2009に生成されました。  doxygen 1.4.7