r23178: add simple js code I use for testing and which starts to look like
authorRafal Szczesniak <mimir@samba.org>
Tue, 29 May 2007 05:49:35 +0000 (05:49 +0000)
committerGerald (Jerry) Carter <jerry@samba.org>
Wed, 10 Oct 2007 19:53:00 +0000 (14:53 -0500)
ejsnet command line utility (perhaps to be moved to utils later...)

rafal
(This used to be commit 43f9d9ba71f51007e80b340600a55fb07d89fd4c)

testprogs/ejs/ejsnet.js
testprogs/ejs/ejsnet/nethost.js [new file with mode: 0644]
testprogs/ejs/ejsnet/netusr.js [new file with mode: 0644]

index b39d888c3950f69bcc4340c9ed90f8036d14ba6d..a5570de34c902581d7e6e9eaa649ed0b52dabd3a 100755 (executable)
@@ -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 (file)
index 0000000..9e11ae8
--- /dev/null
@@ -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 (file)
index 0000000..da6e851
--- /dev/null
@@ -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);
+       }
+}