📄 net_rap.c
字号:
struct cli_state *cli; int ret; if (argc == 0) return net_rap_printq_usage(argc, argv); if (!(cli = net_make_ipc_connection(0))) return -1; d_printf(PRINTQ_ENUM_DISPLAY, cli->desthost); /* list header */ ret = cli_NetPrintQGetInfo(cli, argv[0], enum_queue, enum_jobs); cli_shutdown(cli); return ret;}static int rap_printq_delete(int argc, const char **argv){ struct cli_state *cli; int ret; if (argc == 0) return net_rap_printq_usage(argc, argv); if (!(cli = net_make_ipc_connection(0))) return -1; ret = cli_printjob_del(cli, atoi(argv[0])); cli_shutdown(cli); return ret;}int net_rap_printq(int argc, const char **argv){ struct cli_state *cli; int ret; struct functable func[] = { {"INFO", rap_printq_info}, {"DELETE", rap_printq_delete}, {NULL, NULL} }; if (argc == 0) { if (!(cli = net_make_ipc_connection(0))) return -1; d_printf(PRINTQ_ENUM_DISPLAY, cli->desthost); /* list header */ ret = cli_NetPrintQEnum(cli, enum_queue, enum_jobs); cli_shutdown(cli); return ret; } return net_run_function(argc, argv, func, net_rap_printq_usage);} static int net_rap_user_usage(int argc, const char **argv){ return net_help_user(argc, argv);} static void user_fn(const char *user_name, void *state){ d_printf("%-21.21s\n", user_name);}static void long_user_fn(const char *user_name, const char *comment, const char * home_dir, const char * logon_script, void *state){ d_printf("%-21.21s %s\n", user_name, comment);}static void group_member_fn(const char *user_name, void *state){ d_printf("%-21.21s\n", user_name);}static int rap_user_delete(int argc, const char **argv){ struct cli_state *cli; int ret; if (argc == 0) { d_printf("\n\nUser name not specified\n"); return net_rap_user_usage(argc, argv); } if (!(cli = net_make_ipc_connection(0))) return -1; ret = cli_NetUserDelete(cli, argv[0]); cli_shutdown(cli); return ret;}static int rap_user_add(int argc, const char **argv){ struct cli_state *cli; int ret; RAP_USER_INFO_1 userinfo; if (argc == 0) { d_printf("\n\nUser name not specified\n"); return net_rap_user_usage(argc, argv); } if (!(cli = net_make_ipc_connection(0))) return -1; safe_strcpy(userinfo.user_name, argv[0], sizeof(userinfo.user_name)-1); if (opt_flags == -1) opt_flags = 0x21; userinfo.userflags = opt_flags; userinfo.reserved1 = '\0'; userinfo.comment = smb_xstrdup(opt_comment); userinfo.priv = 1; userinfo.home_dir = NULL; userinfo.logon_script = NULL; ret = cli_NetUserAdd(cli, &userinfo); cli_shutdown(cli); return ret;}static int rap_user_info(int argc, const char **argv){ struct cli_state *cli; int ret; if (argc == 0) { d_printf("\n\nUser name not specified\n"); return net_rap_user_usage(argc, argv); } if (!(cli = net_make_ipc_connection(0))) return -1; ret = cli_NetUserGetGroups(cli, argv[0], group_member_fn, NULL); cli_shutdown(cli); return ret;}int net_rap_user(int argc, const char **argv){ int ret = -1; struct functable func[] = { {"ADD", rap_user_add}, {"INFO", rap_user_info}, {"DELETE", rap_user_delete}, {NULL, NULL} }; if (argc == 0) { struct cli_state *cli; if (!(cli = net_make_ipc_connection(0))) goto done; if (opt_long_list_entries) { d_printf("\nUser name Comment"\ "\n-----------------------------\n"); ret = cli_RNetUserEnum(cli, long_user_fn, NULL); cli_shutdown(cli); goto done; } ret = cli_RNetUserEnum0(cli, user_fn, NULL); cli_shutdown(cli); goto done; } ret = net_run_function(argc, argv, func, net_rap_user_usage); done: if (ret != 0) { DEBUG(1, ("Net user returned: %d\n", ret)); } return ret;}int net_rap_group_usage(int argc, const char **argv){ return net_help_group(argc, argv);}static void long_group_fn(const char *group_name, const char *comment, void *state){ d_printf("%-21.21s %s\n", group_name, comment);}static void group_fn(const char *group_name, void *state){ d_printf("%-21.21s\n", group_name);}static int rap_group_delete(int argc, const char **argv){ struct cli_state *cli; int ret; if (argc == 0) { d_printf("\n\nGroup name not specified\n"); return net_rap_group_usage(argc, argv); } if (!(cli = net_make_ipc_connection(0))) return -1; ret = cli_NetGroupDelete(cli, argv[0]); cli_shutdown(cli); return ret;}static int rap_group_add(int argc, const char **argv){ struct cli_state *cli; int ret; RAP_GROUP_INFO_1 grinfo; if (argc == 0) { d_printf("\n\nGroup name not specified\n"); return net_rap_group_usage(argc, argv); } if (!(cli = net_make_ipc_connection(0))) return -1; /* BB check for length 21 or smaller explicitly ? BB */ safe_strcpy(grinfo.group_name, argv[0], sizeof(grinfo.group_name)-1); grinfo.reserved1 = '\0'; grinfo.comment = smb_xstrdup(opt_comment); ret = cli_NetGroupAdd(cli, &grinfo); cli_shutdown(cli); return ret;}int net_rap_group(int argc, const char **argv){ struct functable func[] = { {"ADD", rap_group_add}, {"DELETE", rap_group_delete}, {NULL, NULL} }; if (argc == 0) { struct cli_state *cli; int ret; if (!(cli = net_make_ipc_connection(0))) return -1; if (opt_long_list_entries) { d_printf("Group name Comment\n"); d_printf("-----------------------------\n"); ret = cli_RNetGroupEnum(cli, long_group_fn, NULL); cli_shutdown(cli); return ret; } ret = cli_RNetGroupEnum0(cli, group_fn, NULL); cli_shutdown(cli); return ret; } return net_run_function(argc, argv, func, net_rap_group_usage);}int net_rap_groupmember_usage(int argc, const char **argv){ d_printf( "net rap groupmember LIST <group> [misc. options] [targets]"\ "\n\t Enumerate users in a group\n"\ "\nnet rap groupmember DELETE <group> <user> [misc. options] "\ "[targets]\n\t Delete sepcified user from specified group\n"\ "\nnet rap groupmember ADD <group> <user> [misc. options] [targets]"\ "\n\t Add specified user to specified group\n"); net_common_flags_usage(argc, argv); return -1;}static int rap_groupmember_add(int argc, const char **argv){ struct cli_state *cli; int ret; if (argc != 2) { d_printf("\n\nGroup or user name not specified\n"); return net_rap_groupmember_usage(argc, argv); } if (!(cli = net_make_ipc_connection(0))) return -1; ret = cli_NetGroupAddUser(cli, argv[0], argv[1]); cli_shutdown(cli); return ret;}static int rap_groupmember_delete(int argc, const char **argv){ struct cli_state *cli; int ret; if (argc != 2) { d_printf("\n\nGroup or user name not specified\n"); return net_rap_groupmember_usage(argc, argv); } if (!(cli = net_make_ipc_connection(0))) return -1; ret = cli_NetGroupDelUser(cli, argv[0], argv[1]); cli_shutdown(cli); return ret;}static int rap_groupmember_list(int argc, const char **argv){ struct cli_state *cli; int ret; if (argc == 0) { d_printf("\n\nGroup name not specified\n"); return net_rap_groupmember_usage(argc, argv); } if (!(cli = net_make_ipc_connection(0))) return -1; ret = cli_NetGroupGetUsers(cli, argv[0], group_member_fn, NULL ); cli_shutdown(cli); return ret;}int net_rap_groupmember(int argc, const char **argv){ struct functable func[] = { {"ADD", rap_groupmember_add}, {"LIST", rap_groupmember_list}, {"DELETE", rap_groupmember_delete}, {NULL, NULL} }; return net_run_function(argc, argv, func, net_rap_groupmember_usage);}int net_rap_validate_usage(int argc, const char **argv){ d_printf("net rap validate <username> [password]\n"\ "\tValidate user and password to check whether they"\ " can access target server or domain\n"); net_common_flags_usage(argc, argv); return -1;}int net_rap_validate(int argc, const char **argv){ return errmsg_not_implemented();}int net_rap_service_usage(int argc, const char **argv){ d_printf("net rap service [misc. options] [targets] \n"\ "\tlists all running service daemons on target server\n"); d_printf("\nnet rap service START <name> [service startup arguments]"\ " [misc. options] [targets]"\ "\n\tStart named service on remote server\n"); d_printf("\nnet rap service STOP <name> [misc. options] [targets]\n"\ "\n\tStop named service on remote server\n"); net_common_flags_usage(argc, argv); return -1;}static int rap_service_start(int argc, const char **argv){ return errmsg_not_implemented();}static int rap_service_stop(int argc, const char **argv){ return errmsg_not_implemented();}static void service_fn(const char *service_name, const char *dummy, void *state){ d_printf("%-21.21s\n", service_name);}int net_rap_service(int argc, const char **argv){ struct functable func[] = { {"START", rap_service_start}, {"STOP", rap_service_stop}, {NULL, NULL} }; if (argc == 0) { struct cli_state *cli; int ret; if (!(cli = net_make_ipc_connection(0))) return -1; if (opt_long_list_entries) { d_printf("Service name Comment\n"); d_printf("-----------------------------\n"); ret = cli_RNetServiceEnum(cli, long_group_fn, NULL); } ret = cli_RNetServiceEnum(cli, service_fn, NULL); cli_shutdown(cli); return ret; } return net_run_function(argc, argv, func, net_rap_service_usage);}int net_rap_password_usage(int argc, const char **argv){ d_printf( "net rap password <user> <oldpwo> <newpw> [misc. options] [target]\n"\ "\tchanges the password for the specified user at target\n"); return -1;}int net_rap_password(int argc, const char **argv){ struct cli_state *cli; int ret; if (argc < 3) return net_rap_password_usage(argc, argv); if (!(cli = net_make_ipc_connection(0))) return -1; /* BB Add check for password lengths? */ ret = cli_oem_change_password(cli, argv[0], argv[2], argv[1]); cli_shutdown(cli); return ret;}int net_rap_admin_usage(int argc, const char **argv){ d_printf( "net rap admin <remote command> [cmd args [env]] [misc. options] [targets]"\ "\n\texecutes a remote command on an os/2 target server\n"); return -1;}int net_rap_admin(int argc, const char **argv){ return errmsg_not_implemented();}/* The help subsystem for the RAP subcommand */int net_rap_usage(int argc, const char **argv){ d_printf(" net rap domain \tto list domains \n"\ " net rap file \t\tto list open files on a server \n"\ " net rap group \tto list user groups \n"\ " net rap groupmember \tto list users in a group \n"\ " net rap password \tto change the password of a user\n"\ " net rap printq \tto list the print queues on a server\n"\ " net rap server \tto list servers in a domain\n"\ " net rap session \tto list clients with open sessions to a server\n"\ " net rap share \tto list shares exported by a server\n"\ " net rap user \t\tto list users\n"\ " net rap validate \tto check whether a user and the corresponding password are valid\n"\ " net rap help\n"\ "\nType \"net help <option>\" to get more information on that option\n\n"); net_common_flags_usage(argc, argv); return -1;}/* handle "net rap help *" subcommands*/int net_rap_help(int argc, const char **argv){ struct functable func[] = { {"FILE", net_rap_file_usage}, {"SHARE", net_rap_share_usage}, {"SESSION", net_rap_session_usage}, {"SERVER", net_rap_server_usage}, {"DOMAIN", net_rap_domain_usage}, {"PRINTQ", net_rap_printq_usage}, {"USER", net_rap_user_usage}, {"GROUP", net_rap_group_usage}, {"VALIDATE", net_rap_validate_usage}, {"GROUPMEMBER", net_rap_groupmember_usage}, {"ADMIN", net_rap_admin_usage}, {"SERVICE", net_rap_service_usage}, {"PASSWORD", net_rap_password_usage}, {NULL, NULL}}; return net_run_function(argc, argv, func, net_rap_usage);}/* Entry-point for all the RAP functions. */int net_rap(int argc, const char **argv){ struct functable func[] = { {"FILE", net_rap_file}, {"SHARE", net_rap_share}, {"SESSION", net_rap_session}, {"SERVER", net_rap_server}, {"DOMAIN", net_rap_domain}, {"PRINTQ", net_rap_printq}, {"USER", net_rap_user}, {"GROUP", net_rap_group}, {"VALIDATE", net_rap_validate}, {"GROUPMEMBER", net_rap_groupmember}, {"ADMIN", net_rap_admin}, {"SERVICE", net_rap_service}, {"PASSWORD", net_rap_password}, {"HELP", net_rap_help}, {NULL, NULL} }; return net_run_function(argc, argv, func, net_rap_usage);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -