summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xtestprogs/ejs/ejsnet.js54
-rw-r--r--testprogs/ejs/ejsnet/nethost.js45
-rw-r--r--testprogs/ejs/ejsnet/netusr.js86
3 files changed, 155 insertions, 30 deletions
diff --git a/testprogs/ejs/ejsnet.js b/testprogs/ejs/ejsnet.js
index b39d888c39..a5570de34c 100755
--- a/testprogs/ejs/ejsnet.js
+++ b/testprogs/ejs/ejsnet.js
@@ -1,52 +1,46 @@
#!/usr/bin/env smbscript
+libinclude("base.js");
+
+/* note: these require specifying a proper path in "js include" parameter */
+libinclude("ejsnet/netusr.js");
+libinclude("ejsnet/nethost.js");
+
+function PrintNetHelp()
+{
+ println("Usage: ejsnet.js <cmd> [options]");
+}
+
+/* here we start */
+
var options = GetOptions(ARGV,
"POPT_AUTOHELP",
"POPT_COMMON_SAMBA",
"POPT_COMMON_CREDENTIALS");
if (options == undefined) {
- println("Failed to parse options");
- return -1;
+ PrintNetHelp();
+ return -1;
}
-if (options.ARGV.length != 2) {
- println("Usage: ejsnet.js <DOMAIN> <NEW USER NAME>");
- return -1;
+if (options.ARGV.length < 1) {
+ PrintNetHelp();
+ return -1;
}
/* use command line creds if available */
var creds = options.get_credentials();
-
var ctx = NetContext(creds);
-var usr_ctx = ctx.UserMgr(options.ARGV[0]);
-if (usr_ctx == undefined) {
- println("Couldn't get user management context.");
- return -1;
-}
-var status = usr_ctx.Create(options.ARGV[1]);
-if (status.is_ok != true) {
- println("Failed to create user account " + options.ARGV[1] + ": " + status.errstr);
- return -1;
-}
+var cmd = options.ARGV[0];
+if (cmd == "user") {
+ UserManager(ctx, options);
+} else if (cmd == "host") {
+ HostManager(ctx, options);
-var info = usr_ctx.Info(options.ARGV[1]);
-if (info != null) {
- println("UserInfo.AccountName = " + info.AccountName);
- println("UserInfo.Description = " + info.Description);
- println("UserInfo.FullName = " + info.FullName);
- println("UserInfo.AcctExpiry = " + info.AcctExpiry);
} else {
- println("Null UserInfo returned - account unknown");
-}
-
-
-var status = usr_ctx.Delete(options.ARGV[1]);
-if (status.is_ok != true) {
- println("Failed to delete user account " + options.ARGV[1] + ": " + status.errstr);
+ PrintNetHelp();
return -1;
}
-print ("OK\n");
return 0;
diff --git a/testprogs/ejs/ejsnet/nethost.js b/testprogs/ejs/ejsnet/nethost.js
new file mode 100644
index 0000000000..9e11ae89c5
--- /dev/null
+++ b/testprogs/ejs/ejsnet/nethost.js
@@ -0,0 +1,45 @@
+function PrintNetHostHelp()
+{
+ println("Host management - available commands:");
+ println("\t domainlist - list users in specified domain");
+}
+
+
+function ListDomains(hostCtx)
+{
+ var domain;
+
+ var list = hostCtx.DomainList();
+ if (list == undefined) {
+ println("Error when listing domains");
+ return -1;
+ }
+
+ for (var i = 0; i < list.Count; i++) {
+ domain = list.Domains[i];
+ printf("%s\n", domain.Name);
+ }
+
+ printf("\nResult: %s\n", list.Status.errstr);
+}
+
+
+function HostManager(ctx, options)
+{
+ var hostCtx;
+
+ if (options.ARGV.length < 2) {
+ PrintNetHostHelp();
+ return -1;
+ }
+
+ var hostCmd = options.ARGV[1];
+
+ if (hostCmd == "domainlist") {
+ hostCtx = ctx.HostMgr();
+ ListDomains(hostCtx);
+
+ } else {
+ println("unknown command");
+ }
+}
diff --git a/testprogs/ejs/ejsnet/netusr.js b/testprogs/ejs/ejsnet/netusr.js
new file mode 100644
index 0000000000..da6e851ce7
--- /dev/null
+++ b/testprogs/ejs/ejsnet/netusr.js
@@ -0,0 +1,86 @@
+function PrintNetUsrHelp(options)
+{
+ println("User management - available commands:");
+ println("\t list - list users in specified domain");
+ println("\t info - display user account information");
+}
+
+
+function ListUsers(usrCtx)
+{
+ var list, user;
+ var finished = false;
+
+ for (list = usrCtx.List(list); list.Status.is_ok && !finished; list = usrCtx.List(list)) {
+ for (i = 0; i < list.Count; i++) {
+ user = list.Users[i];
+ printf("%s\n", user.Username);
+ }
+
+ finished = list.EndOfList;
+ }
+
+ printf("\nResult: %s\n", list.Status.errstr);
+}
+
+
+function UserInfo(usrCtx, username)
+{
+ var info;
+
+ info = usrCtx.Info(username);
+ if (info == null) {
+ println("Account unknown");
+ return -1;
+ }
+
+ println("User account info:\n");
+ printf("AccountName = %s\n", info.AccountName);
+ printf("Description = %s\n", info.Description);
+ printf("FullName = %s\n", info.FullName);
+ printf("AcctExpiry = %s\n", info.AcctExpiry);
+}
+
+
+function UserManager(ctx, options)
+{
+ var usrCtx;
+
+ if (options.ARGV.length < 2) {
+ PrintNetUsrHelp(options);
+ return -1;
+
+ }
+
+ var usrCmd = options.ARGV[1];
+
+ if (usrCmd == "create") {
+
+ } else if (usrCmd == "info") {
+ var userName;
+
+ if (options.ARGV.length > 2) {
+ userName = options.ARGV[2];
+ } else {
+ println("No username provided");
+ return -1;
+ }
+ usrCtx = ctx.UserMgr();
+
+ UserInfo(usrCtx, userName);
+
+ } else if (usrCmd == "list") {
+
+ if (options.ARGV.length > 2) {
+ usrCtx = ctx.UserMgr(options.ARGV[2]);
+ } else {
+ usrCtx = ctx.UserMgr();
+ }
+
+ ListUsers(usrCtx);
+
+ } else {
+ println("Unknown command specified.");
+ PrintNetUsrHelp(options);
+ }
+}