summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source3/utils/net.c327
-rw-r--r--source3/utils/net.h2
2 files changed, 285 insertions, 44 deletions
diff --git a/source3/utils/net.c b/source3/utils/net.c
index 3bea5f60eb..b56ca7e26c 100644
--- a/source3/utils/net.c
+++ b/source3/utils/net.c
@@ -313,51 +313,293 @@ static int net_maxrid(struct net_context *c, int argc, const char **argv)
}
/* main function table */
-static struct functable2 net_func[] = {
- {"rpc", net_rpc, "Run functions using RPC transport"},
- {"rap", net_rap, "Run functions using RAP transport"},
- {"ads", net_ads, "Run functions using ADS transport"},
+static struct functable3 net_func[] = {
+ {
+ "rpc",
+ net_rpc,
+ NET_TRANSPORT_RPC,
+ "Run functions using RPC transport",
+ " Use 'net help rpc' to get more extensive information about "
+ "'net rpc' commands."
+ },
+ {
+ "rap",
+ net_rap,
+ NET_TRANSPORT_RAP,
+ "Run functions using RAP transport",
+ " Use 'net help rap' to get more extensive information about "
+ "'net rap' commands."
+ },
+ {
+ "ads",
+ net_ads,
+ NET_TRANSPORT_ADS,
+ "Run functions using ADS transport",
+ " Use 'net help ads' to get more extensive information about "
+ "'net ads' commands."
+ },
/* eventually these should auto-choose the transport ... */
- {"file", net_file, "Functions on remote opened files"},
- {"share", net_share, "Functions on shares"},
- {"session", net_rap_session, "FIXME"},
- {"server", net_rap_server, "FIXME"},
- {"domain", net_rap_domain, "FIXME"},
- {"printq", net_rap_printq, "FIXME"},
- {"user", net_user, "Manage users"},
- {"group", net_group, "Manage groups"},
- {"groupmap", net_groupmap, "Manage group mappings"},
- {"sam", net_sam, "Functions on the SAM database"},
- {"validate", net_rap_validate, "FIXME"},
- {"groupmember", net_rap_groupmember, "FIXME"},
- {"admin", net_rap_admin, "FIXME"},
- {"service", net_rap_service, "FIXME"},
- {"password", net_rap_password, "FIXME"},
- {"changetrustpw", net_changetrustpw, "Change the trust password"},
- {"changesecretpw", net_changesecretpw, "Change the secret password"},
- {"time", net_time, "Show/set time"},
- {"lookup", net_lookup, "Look up host names/IP addresses"},
- {"join", net_join, "Join a domain/AD"},
- {"dom", net_dom, "Join/unjoin (remote) machines to/from a domain/AD"},
- {"cache", net_cache, "Operate on the cache tdb file"},
- {"getlocalsid", net_getlocalsid, "Get the SID for the local domain"},
- {"setlocalsid", net_setlocalsid, "Set the SID for the local domain"},
- {"setdomainsid", net_setdomainsid, "Get domain SID on member servers"},
- {"getdomainsid", net_getdomainsid, "Set domain SID on member servers"},
- {"maxrid", net_maxrid, "Display the maximul RID currently used"},
- {"idmap", net_idmap, "IDmap functions"},
- {"status", net_status, "Display server status"},
- {"usershare", net_usershare, "Manage user-modifiable shares"},
- {"usersidlist", net_usersidlist, "Display list of all users with SID"},
- {"conf", net_conf, "Manage Samba registry based configuration"},
- {"registry", net_registry, "Manage the Samba registry"},
+ {
+ "file",
+ net_file,
+ NET_TRANSPORT_RPC | NET_TRANSPORT_RAP,
+ "Functions on remote opened files",
+ " Use 'net help file' to get more information about 'net "
+ "file' commands."
+ },
+ {
+ "share",
+ net_share,
+ NET_TRANSPORT_RPC | NET_TRANSPORT_RAP,
+ "Functions on shares",
+ " Use 'net help share' to get more information about 'net "
+ "share' commands."
+ },
+ {
+ "session",
+ net_rap_session,
+ NET_TRANSPORT_RAP,
+ "Manage sessions",
+ " Use 'net help session' to get more information about 'net "
+ "session' commands."
+ },
+ {
+ "server",
+ net_rap_server,
+ NET_TRANSPORT_RAP,
+ "List servers in workgroup",
+ " Use 'net help server' to get more information about 'net "
+ "server' commands."
+ },
+ {
+ "domain",
+ net_rap_domain,
+ NET_TRANSPORT_RAP,
+ "List domains/workgroups on network",
+ " Use 'net help domain' to get more information about 'net "
+ "domain' commands."
+ },
+ {
+ "printq",
+ net_rap_printq,
+ NET_TRANSPORT_RAP,
+ "Modify printer queue",
+ " Use 'net help printq' to get more information about 'net "
+ "printq' commands."
+ },
+ {
+ "user",
+ net_user,
+ NET_TRANSPORT_ADS | NET_TRANSPORT_RPC | NET_TRANSPORT_RAP,
+ "Manage users",
+ " Use 'net help user' to get more information about 'net "
+ "user' commands."
+ },
+ {
+ "group",
+ net_group,
+ NET_TRANSPORT_ADS | NET_TRANSPORT_RPC | NET_TRANSPORT_RAP,
+ "Manage groups",
+ " Use 'net help group' to get more information about 'net "
+ "group' commands."
+ },
+ {
+ "groupmap",
+ net_groupmap,
+ NET_TRANSPORT_LOCAL,
+ "Manage group mappings",
+ " Use 'net help groupmap' to get more information about 'net "
+ "groupmap' commands."
+ },
+ {
+ "sam",
+ net_sam,
+ NET_TRANSPORT_LOCAL,
+ "Functions on the SAM database",
+ " Use 'net help sam' to get more information about 'net sam' "
+ "commands."
+ },
+ {
+ "validate",
+ net_rap_validate,
+ NET_TRANSPORT_RAP,
+ "Validate username and password",
+ " Use 'net help validate' to get more information about 'net "
+ "validate' commands."
+ },
+ {
+ "groupmember",
+ net_rap_groupmember,
+ NET_TRANSPORT_RAP,
+ "Modify group memberships",
+ " Use 'net help groupmember' to get more information about "
+ "'net groupmember' commands."
+ },
+ { "admin",
+ net_rap_admin,
+ NET_TRANSPORT_RAP,
+ "Execute remote command on a remote OS/2 server",
+ " Use 'net help admin' to get more information about 'net "
+ "admin' commands."
+ },
+ { "service",
+ net_rap_service,
+ NET_TRANSPORT_RAP,
+ "List/modify running services",
+ " Use 'net help service' to get more information about 'net "
+ "service' commands."
+ },
+ {
+ "password",
+ net_rap_password,
+ NET_TRANSPORT_RAP,
+ "Change user password on target server",
+ " Use 'net help password' to get more information about 'net "
+ "password' commands."
+ },
+ { "changetrustpw",
+ net_changetrustpw,
+ NET_TRANSPORT_ADS | NET_TRANSPORT_RPC,
+ "Change the trust password",
+ " Use 'net help changetrustpw' to get more information about "
+ "'net changetrustpw'."
+ },
+ { "changesecretpw",
+ net_changesecretpw,
+ NET_TRANSPORT_LOCAL,
+ "Change the secret password",
+ " net [options] changesecretpw\n"
+ " Change the ADS domain member machine account password in "
+ "secrets.tdb.\n"
+ " Do NOT use this function unless you know what it does.\n"
+ " Requires the -f flag to work."
+ },
+ { "time",
+ net_time,
+ NET_TRANSPORT_LOCAL,
+ "Show/set time",
+ " Use 'net help time' to get more information about 'net "
+ "time' commands."
+ },
+ { "lookup",
+ net_lookup,
+ NET_TRANSPORT_LOCAL,
+ "Look up host names/IP addresses",
+ " Use 'net help lookup' to get more information about 'net "
+ "lookup' commands."
+ },
+ { "join",
+ net_join,
+ NET_TRANSPORT_ADS | NET_TRANSPORT_RPC,
+ "Join a domain/AD",
+ " Use 'net help join' to get more information about 'net "
+ "join'."
+ },
+ { "dom",
+ net_dom,
+ NET_TRANSPORT_LOCAL,
+ "Join/unjoin (remote) machines to/from a domain/AD",
+ " Use 'net help dom' to get more information about 'net dom' "
+ "commands."
+ },
+ { "cache",
+ net_cache,
+ NET_TRANSPORT_LOCAL,
+ "Operate on the cache tdb file",
+ " Use 'net help cache' to get more information about 'net "
+ "cache' commands."
+ },
+ { "getlocalsid",
+ net_getlocalsid,
+ NET_TRANSPORT_LOCAL,
+ "Get the SID for the local domain",
+ " net getlocalsid"
+ },
+ { "setlocalsid",
+ net_setlocalsid,
+ NET_TRANSPORT_LOCAL,
+ "Set the SID for the local domain",
+ " net setlocalsid S-1-5-21-x-y-z"
+ },
+ { "setdomainsid",
+ net_setdomainsid,
+ NET_TRANSPORT_LOCAL,
+ "Set domain SID on member servers",
+ " net setdomainsid S-1-5-21-x-y-z"
+ },
+ { "getdomainsid",
+ net_getdomainsid,
+ NET_TRANSPORT_LOCAL,
+ "Get domain SID on member servers",
+ " net getdomainsid"
+ },
+ { "maxrid",
+ net_maxrid,
+ NET_TRANSPORT_LOCAL,
+ "Display the maximul RID currently used",
+ " net maxrid"
+ },
+ { "idmap",
+ net_idmap,
+ NET_TRANSPORT_LOCAL,
+ "IDmap functions",
+ " Use 'net help idmap to get more information about 'net "
+ "idmap' commands."
+ },
+ { "status",
+ net_status,
+ NET_TRANSPORT_LOCAL,
+ "Display server status",
+ " Use 'net help status' to get more information about 'net "
+ "status' commands."
+ },
+ { "usershare",
+ net_usershare,
+ NET_TRANSPORT_LOCAL,
+ "Manage user-modifiable shares",
+ " Use 'net help usershare to get more information about 'net "
+ "usershare' commands."
+ },
+ { "usersidlist",
+ net_usersidlist,
+ NET_TRANSPORT_RPC,
+ "Display list of all users with SID",
+ " Use 'net help usersidlist' to get more information about "
+ "'net usersidlist'."
+ },
+ { "conf",
+ net_conf,
+ NET_TRANSPORT_LOCAL,
+ "Manage Samba registry based configuration",
+ " Use 'net help conf' to get more information about 'net "
+ "conf' commands."
+ },
+ { "registry",
+ net_registry,
+ NET_TRANSPORT_LOCAL,
+ "Manage the Samba registry",
+ " Use 'net help registry' to get more information about 'net "
+ "registry' commands."
+ },
#ifdef WITH_FAKE_KASERVER
- {"afs", net_afs, "FIXME"},
+ { "afs",
+ net_afs,
+ NET_TRANSPORT_LOCAL,
+ "Manage AFS tokens",
+ " Use 'net help afs' to get more information about 'net afs' "
+ "commands."
+ },
#endif
- {"help", net_help, "Print usage information"},
- {NULL, NULL, NULL}
+ { "help",
+ net_help,
+ NET_TRANSPORT_LOCAL,
+ "Print usage information",
+ " Use 'net help help' to list usage information for 'net' "
+ "commands."
+ },
+ {NULL, NULL, 0, NULL, NULL}
};
@@ -429,8 +671,7 @@ static struct functable2 net_func[] = {
while((opt = poptGetNextOpt(pc)) != -1) {
switch (opt) {
case 'h':
- net_help(c, argc, argv);
- exit(0);
+ c->display_usage = true;
break;
case 'e':
c->smb_encrypt = true;
@@ -517,7 +758,7 @@ static struct functable2 net_func[] = {
c->opt_password = getenv("PASSWD");
}
- rc = net_run_function2(c, argc_new-1, argv_new+1, "net", net_func);
+ rc = net_run_function3(c, argc_new-1, argv_new+1, "net", net_func);
DEBUG(2,("return code = %d\n", rc));
diff --git a/source3/utils/net.h b/source3/utils/net.h
index b816aec4e6..b89caca856 100644
--- a/source3/utils/net.h
+++ b/source3/utils/net.h
@@ -68,7 +68,7 @@ struct net_context {
#define NET_TRANSPORT_LOCAL 0x01
#define NET_TRANSPORT_RAP 0x02
#define NET_TRANSPORT_RPC 0x04
-#define NET_TRANSPROT_ADS 0x08
+#define NET_TRANSPORT_ADS 0x08
struct functable {
const char *funcname;