netapi: add more infolevels to NetUserSetInfo example.
authorGünther Deschner <gd@samba.org>
Tue, 26 Aug 2008 22:31:20 +0000 (00:31 +0200)
committerGünther Deschner <gd@samba.org>
Fri, 29 Aug 2008 11:57:54 +0000 (13:57 +0200)
Guenther
(This used to be commit 5ad217be7a12211a8340052f7f4481cf2f239f8d)

source3/lib/netapi/examples/user/user_setinfo.c

index ec464232e940c7c7bb600fd5a523918c6805f02b..4f02ae778111a02f97ad7c7baf42318bbdb16afc 100644 (file)
@@ -33,10 +33,34 @@ int main(int argc, const char **argv)
        struct libnetapi_ctx *ctx = NULL;
        const char *hostname = NULL;
        const char *username = NULL;
-       uint32_t level = 1007;
+       uint32_t level = 0;
        uint32_t parm_err = 0;
-
+       uint8_t *buffer = NULL;
+       const char *val = NULL;
+
+       struct USER_INFO_0 u0;
+       struct USER_INFO_1 u1;
+       struct USER_INFO_2 u2;
+       struct USER_INFO_3 u3;
+       struct USER_INFO_4 u4;
+       struct USER_INFO_21 u21;
+       struct USER_INFO_22 u22;
+       struct USER_INFO_1003 u1003;
+       struct USER_INFO_1005 u1005;
+       struct USER_INFO_1006 u1006;
        struct USER_INFO_1007 u1007;
+       struct USER_INFO_1008 u1008;
+       struct USER_INFO_1009 u1009;
+       struct USER_INFO_1010 u1010;
+       struct USER_INFO_1011 u1011;
+       struct USER_INFO_1012 u1012;
+       struct USER_INFO_1014 u1014;
+       struct USER_INFO_1017 u1017;
+       struct USER_INFO_1020 u1020;
+       struct USER_INFO_1024 u1024;
+       struct USER_INFO_1051 u1051;
+       struct USER_INFO_1052 u1052;
+       struct USER_INFO_1053 u1053;
 
        poptContext pc;
        int opt;
@@ -70,18 +94,104 @@ int main(int argc, const char **argv)
        }
        username = poptGetArg(pc);
 
-       if (poptPeekArg(pc)) {
-               level = atoi(poptGetArg(pc));
+       if (!poptPeekArg(pc)) {
+               poptPrintHelp(pc, stderr, 0);
+               goto out;
+       }
+       level = atoi(poptGetArg(pc));
+
+       if (!poptPeekArg(pc)) {
+               poptPrintHelp(pc, stderr, 0);
+               goto out;
        }
+       val = poptGetArg(pc);
 
        /* NetUserSetInfo */
 
-       u1007.usri1007_comment = "NetApi test comment";
+       switch (level) {
+               case 0:
+                       u0.usri0_name = val;
+                       buffer = (uint8_t *)&u0;
+                       break;
+               case 1:
+               case 2:
+               case 3:
+               case 4:
+                       break;
+               case 21:
+                       break;
+               case 22:
+                       break;
+               case 1003:
+                       u1003.usri1003_password = val;
+                       buffer = (uint8_t *)&u1003;
+                       break;
+               case 1005:
+                       u1005.usri1005_priv = atoi(val);
+                       buffer = (uint8_t *)&u1005;
+                       break;
+               case 1006:
+                       u1006.usri1006_home_dir = val;
+                       buffer = (uint8_t *)&u1006;
+                       break;
+               case 1007:
+                       u1007.usri1007_comment = val;
+                       buffer = (uint8_t *)&u1007;
+                       break;
+               case 1008:
+                       u1008.usri1008_flags = atoi(val);
+                       buffer = (uint8_t *)&u1008;
+                       break;
+               case 1009:
+                       u1009.usri1009_script_path = val;
+                       buffer = (uint8_t *)&u1009;
+                       break;
+               case 1010:
+                       u1010.usri1010_auth_flags = atoi(val);
+                       buffer = (uint8_t *)&u1010;
+                       break;
+               case 1011:
+                       u1011.usri1011_full_name = val;
+                       buffer = (uint8_t *)&u1011;
+                       break;
+               case 1012:
+                       u1012.usri1012_usr_comment = val;
+                       buffer = (uint8_t *)&u1012;
+                       break;
+               case 1014:
+                       u1014.usri1014_workstations = val;
+                       buffer = (uint8_t *)&u1014;
+                       break;
+               case 1017:
+                       u1017.usri1017_acct_expires = atoi(val);
+                       buffer = (uint8_t *)&u1017;
+                       break;
+               case 1020:
+                       break;
+               case 1024:
+                       u1024.usri1024_country_code = atoi(val);
+                       buffer = (uint8_t *)&u1024;
+                       break;
+               case 1051:
+                       u1051.usri1051_primary_group_id = atoi(val);
+                       buffer = (uint8_t *)&u1051;
+                       break;
+               case 1052:
+                       u1052.usri1052_profile = val;
+                       buffer = (uint8_t *)&u1052;
+                       break;
+               case 1053:
+                       u1053.usri1053_home_dir_drive = val;
+                       buffer = (uint8_t *)&u1053;
+                       break;
+               default:
+                       break;
+       }
 
        status = NetUserSetInfo(hostname,
                                username,
                                level,
-                               (uint8_t *)&u1007,
+                               buffer,
                                &parm_err);
        if (status != 0) {
                printf("NetUserSetInfo failed with: %s\n",