Author: vlendec
Date: 2005-02-10 17:38:49 +0000 (Thu, 10 Feb 2005)
New Revision: 5316

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=5316

Log:
Get 'net afskey' into a subcommand of its own, 'net afs key'.

Implement 'net afs impersonate', generate a token for a specified user. You
obviously need to be root for this operation.

Volker
Modified:
   branches/SAMBA_3_0/source/utils/net.c
   branches/SAMBA_3_0/source/utils/net_help.c


Changeset:
Modified: branches/SAMBA_3_0/source/utils/net.c
===================================================================
--- branches/SAMBA_3_0/source/utils/net.c       2005-02-10 13:36:33 UTC (rev 
5315)
+++ branches/SAMBA_3_0/source/utils/net.c       2005-02-10 17:38:49 UTC (rev 
5316)
@@ -552,14 +552,16 @@
 
 #ifdef WITH_FAKE_KASERVER
 
-int net_afskey_usage(int argc, const char **argv)
+int net_help_afs(int argc, const char **argv)
 {
-       d_printf("  net afskey filename\n"
+       d_printf("  net afs key filename\n"
                 "\tImports a OpenAFS KeyFile into our secrets.tdb\n\n");
+       d_printf("  net afs impersonate <user> <cell>\n"
+                "\tCreates a token for [EMAIL PROTECTED]");
        return -1;
 }
 
-static int net_afskey(int argc, const char **argv)
+static int net_afs_key(int argc, const char **argv)
 {
        int fd;
        struct afs_keyfile keyfile;
@@ -592,6 +594,42 @@
        return 0;
 }
 
+static int net_afs_impersonate(int argc, const char **argv)
+{
+       char *token;
+
+       if (argc != 2) {
+               fprintf(stderr, "Usage: net afs impersonate <user> <cell>\n");
+               exit(1);
+       }
+
+       token = afs_createtoken_str(argv[0], argv[1]);
+
+       if (token == NULL) {
+               fprintf(stderr, "Could not create token\n");
+               exit(1);
+       }
+
+       if (!afs_settoken_str(token)) {
+               fprintf(stderr, "Could not set token into kernel\n");
+               exit(1);
+       }
+
+       printf("Success: [EMAIL PROTECTED]", argv[0], argv[1]);
+       return 0;
+}
+
+static int net_afs(int argc, const char **argv)
+{
+       struct functable func[] = {
+               {"key", net_afs_key},
+               {"impersonate", net_afs_impersonate},
+               {"help", net_help_afs},
+               {NULL, NULL}
+       };
+       return net_run_function(argc, argv, func, net_help_afs);
+}
+
 #endif /* WITH_FAKE_KASERVER */
 
 static uint32 get_maxrid(void)
@@ -707,7 +745,7 @@
        {"STATUS", net_status},
        {"USERSIDLIST", net_usersidlist},
 #ifdef WITH_FAKE_KASERVER
-       {"AFSKEY", net_afskey},
+       {"AFS", net_afs},
 #endif
 
        {"HELP", net_help},

Modified: branches/SAMBA_3_0/source/utils/net_help.c
===================================================================
--- branches/SAMBA_3_0/source/utils/net_help.c  2005-02-10 13:36:33 UTC (rev 
5315)
+++ branches/SAMBA_3_0/source/utils/net_help.c  2005-02-10 17:38:49 UTC (rev 
5316)
@@ -269,7 +269,7 @@
                {"LOOKUP", net_lookup_usage},
                {"USERSIDLIST", net_usersidlist_usage},
 #ifdef WITH_FAKE_KASERVER
-               {"AFSKEY", net_afskey_usage},
+               {"AFS", net_help_afs},
 #endif
 
                {"HELP", help_usage},

Reply via email to