[SCM] Samba Shared Repository - branch v3-3-test updated -
release-3-2-0pre2-2989-gac5aaf2
Günther Deschner
gd at samba.org
Wed Jun 25 07:56:44 GMT 2008
The branch, v3-3-test has been updated
via ac5aaf29004584d0f1821689eb985d837cda1aa1 (commit)
via 5d06891238d7dddedeb6fe2aca677c765b90c74a (commit)
via f4ce6887103d0f50bf9a91251e2aceb77674604f (commit)
via 397d305e90e90f475b6de0efac7dd9630d698efd (commit)
via 7020a5bd6e90c178085bb8d04325ac5ba83b4c3d (commit)
from b47899195e0c190445953243fe80da4e92994dd1 (commit)
http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v3-3-test
- Log -----------------------------------------------------------------
commit ac5aaf29004584d0f1821689eb985d837cda1aa1
Author: Günther Deschner <gd at samba.org>
Date: Wed Jun 25 00:47:17 2008 +0200
netapi: add NetUserChangePassword() example code.
Guenther
commit 5d06891238d7dddedeb6fe2aca677c765b90c74a
Author: Günther Deschner <gd at samba.org>
Date: Wed Jun 25 00:47:41 2008 +0200
netapi: add NetUserChangePassword() to public headers.
Guenther
commit f4ce6887103d0f50bf9a91251e2aceb77674604f
Author: Günther Deschner <gd at samba.org>
Date: Wed Jun 25 00:32:02 2008 +0200
netapi: add NetUserChangePassword skeleton.
Guenther
commit 397d305e90e90f475b6de0efac7dd9630d698efd
Author: Günther Deschner <gd at samba.org>
Date: Wed Jun 25 00:29:25 2008 +0200
re-run make idl.
Guenther
commit 7020a5bd6e90c178085bb8d04325ac5ba83b4c3d
Author: Günther Deschner <gd at samba.org>
Date: Wed Jun 25 00:29:06 2008 +0200
netapi: add NetUserChangePassword() to IDL.
Guenther
-----------------------------------------------------------------------
Summary of changes:
source/lib/netapi/examples/Makefile.in | 6 +++
.../{group/group_adduser.c => user/user_chgpwd.c} | 30 ++++++++-----
source/lib/netapi/libnetapi.c | 46 ++++++++++++++++++++
source/lib/netapi/libnetapi.h | 8 +++
source/lib/netapi/netapi.h | 20 +++++++++
source/lib/netapi/user.c | 18 ++++++++
source/librpc/gen_ndr/libnetapi.h | 15 ++++++
source/librpc/gen_ndr/ndr_libnetapi.c | 25 +++++++++++
source/librpc/gen_ndr/ndr_libnetapi.h | 31 ++++++++------
source/librpc/idl/libnetapi.idl | 11 +++++
10 files changed, 186 insertions(+), 24 deletions(-)
copy source/lib/netapi/examples/{group/group_adduser.c => user/user_chgpwd.c} (74%)
Changeset truncated at 500 lines:
diff --git a/source/lib/netapi/examples/Makefile.in b/source/lib/netapi/examples/Makefile.in
index 4b5ce25..8e6a59a 100644
--- a/source/lib/netapi/examples/Makefile.in
+++ b/source/lib/netapi/examples/Makefile.in
@@ -26,6 +26,7 @@ PROGS = bin/getdc at EXEEXT@ \
bin/user_del at EXEEXT@ \
bin/user_enum at EXEEXT@ \
bin/user_dispinfo at EXEEXT@ \
+ bin/user_chgpwd at EXEEXT@ \
bin/group_add at EXEEXT@ \
bin/group_del at EXEEXT@ \
bin/group_setinfo at EXEEXT@ \
@@ -74,6 +75,7 @@ USERADD_OBJ = user/user_add.o $(CMDLINE_OBJ)
USERDEL_OBJ = user/user_del.o $(CMDLINE_OBJ)
USERENUM_OBJ = user/user_enum.o $(CMDLINE_OBJ)
USERDISPINFO_OBJ = user/user_dispinfo.o $(CMDLINE_OBJ)
+USERCHGPWD_OBJ = user/user_chgpwd.o $(CMDLINE_OBJ)
GROUPADD_OBJ = group/group_add.o $(CMDLINE_OBJ)
GROUPDEL_OBJ = group/group_del.o $(CMDLINE_OBJ)
GROUPSETINFO_OBJ = group/group_setinfo.o $(CMDLINE_OBJ)
@@ -122,6 +124,10 @@ bin/user_dispinfo at EXEEXT@: $(BINARY_PREREQS) $(USERDISPINFO_OBJ)
@echo Linking $@
@$(CC) $(FLAGS) -o $@ $(USERDISPINFO_OBJ) $(LDFLAGS) $(DYNEXP) $(CMDLINE_LIBS)
+bin/user_chgpwd at EXEEXT@: $(BINARY_PREREQS) $(USERCHGPWD_OBJ)
+ @echo Linking $@
+ @$(CC) $(FLAGS) -o $@ $(USERCHGPWD_OBJ) $(LDFLAGS) $(DYNEXP) $(CMDLINE_LIBS)
+
bin/group_add at EXEEXT@: $(BINARY_PREREQS) $(GROUPADD_OBJ)
@echo Linking $@
@$(CC) $(FLAGS) -o $@ $(GROUPADD_OBJ) $(LDFLAGS) $(DYNEXP) $(CMDLINE_LIBS)
diff --git a/source/lib/netapi/examples/group/group_adduser.c b/source/lib/netapi/examples/user/user_chgpwd.c
similarity index 74%
copy from source/lib/netapi/examples/group/group_adduser.c
copy to source/lib/netapi/examples/user/user_chgpwd.c
index 253b3c5..8b37ec2 100644
--- a/source/lib/netapi/examples/group/group_adduser.c
+++ b/source/lib/netapi/examples/user/user_chgpwd.c
@@ -1,6 +1,6 @@
/*
* Unix SMB/CIFS implementation.
- * NetGroupAddUser query
+ * NetUserChangePassword query
* Copyright (C) Guenther Deschner 2008
*
* This program is free software; you can redistribute it and/or modify
@@ -32,8 +32,9 @@ int main(int argc, const char **argv)
NET_API_STATUS status;
struct libnetapi_ctx *ctx = NULL;
const char *hostname = NULL;
- const char *groupname = NULL;
const char *username = NULL;
+ const char *old_password = NULL;
+ const char *new_password = NULL;
poptContext pc;
int opt;
@@ -49,9 +50,9 @@ int main(int argc, const char **argv)
return status;
}
- pc = poptGetContext("group_adduser", argc, argv, long_options, 0);
+ pc = poptGetContext("user_chgpwd", argc, argv, long_options, 0);
- poptSetOtherOptionHelp(pc, "hostname groupname username");
+ poptSetOtherOptionHelp(pc, "hostname username old_password new_password");
while((opt = poptGetNextOpt(pc)) != -1) {
}
@@ -65,21 +66,28 @@ int main(int argc, const char **argv)
poptPrintHelp(pc, stderr, 0);
goto out;
}
- groupname = poptGetArg(pc);
+ username = poptGetArg(pc);
if (!poptPeekArg(pc)) {
poptPrintHelp(pc, stderr, 0);
goto out;
}
- username = poptGetArg(pc);
+ old_password = poptGetArg(pc);
+
+ if (!poptPeekArg(pc)) {
+ poptPrintHelp(pc, stderr, 0);
+ goto out;
+ }
+ new_password = poptGetArg(pc);
- /* NetGroupAddUser */
+ /* NetUserChangePassword */
- status = NetGroupAddUser(hostname,
- groupname,
- username);
+ status = NetUserChangePassword(hostname,
+ username,
+ old_password,
+ new_password);
if (status != 0) {
- printf("NetGroupAddUser failed with: %s\n",
+ printf("NetUserChangePassword failed with: %s\n",
libnetapi_get_error_string(ctx, status));
}
diff --git a/source/lib/netapi/libnetapi.c b/source/lib/netapi/libnetapi.c
index 173c4d3..659c4c7 100644
--- a/source/lib/netapi/libnetapi.c
+++ b/source/lib/netapi/libnetapi.c
@@ -586,6 +586,52 @@ NET_API_STATUS NetUserEnum(const char * server_name /* [in] [unique] */,
}
/****************************************************************
+ NetUserChangePassword
+****************************************************************/
+
+NET_API_STATUS NetUserChangePassword(const char * domain_name /* [in] */,
+ const char * user_name /* [in] */,
+ const char * old_password /* [in] */,
+ const char * new_password /* [in] */)
+{
+ struct NetUserChangePassword r;
+ struct libnetapi_ctx *ctx = NULL;
+ NET_API_STATUS status;
+ WERROR werr;
+
+ status = libnetapi_getctx(&ctx);
+ if (status != 0) {
+ return status;
+ }
+
+ /* In parameters */
+ r.in.domain_name = domain_name;
+ r.in.user_name = user_name;
+ r.in.old_password = old_password;
+ r.in.new_password = new_password;
+
+ /* Out parameters */
+
+ if (DEBUGLEVEL >= 10) {
+ NDR_PRINT_IN_DEBUG(NetUserChangePassword, &r);
+ }
+
+ if (LIBNETAPI_LOCAL_SERVER(domain_name)) {
+ werr = NetUserChangePassword_l(ctx, &r);
+ } else {
+ werr = NetUserChangePassword_r(ctx, &r);
+ }
+
+ r.out.result = W_ERROR_V(werr);
+
+ if (DEBUGLEVEL >= 10) {
+ NDR_PRINT_OUT_DEBUG(NetUserChangePassword, &r);
+ }
+
+ return r.out.result;
+}
+
+/****************************************************************
NetQueryDisplayInformation
****************************************************************/
diff --git a/source/lib/netapi/libnetapi.h b/source/lib/netapi/libnetapi.h
index 12be1cc..1364a4c 100644
--- a/source/lib/netapi/libnetapi.h
+++ b/source/lib/netapi/libnetapi.h
@@ -100,6 +100,14 @@ WERROR NetUserEnum_r(struct libnetapi_ctx *ctx,
struct NetUserEnum *r);
WERROR NetUserEnum_l(struct libnetapi_ctx *ctx,
struct NetUserEnum *r);
+NET_API_STATUS NetUserChangePassword(const char * domain_name /* [in] */,
+ const char * user_name /* [in] */,
+ const char * old_password /* [in] */,
+ const char * new_password /* [in] */);
+WERROR NetUserChangePassword_r(struct libnetapi_ctx *ctx,
+ struct NetUserChangePassword *r);
+WERROR NetUserChangePassword_l(struct libnetapi_ctx *ctx,
+ struct NetUserChangePassword *r);
NET_API_STATUS NetQueryDisplayInformation(const char * server_name /* [in] [unique] */,
uint32_t level /* [in] */,
uint32_t idx /* [in] */,
diff --git a/source/lib/netapi/netapi.h b/source/lib/netapi/netapi.h
index 9496d77..113a72c 100644
--- a/source/lib/netapi/netapi.h
+++ b/source/lib/netapi/netapi.h
@@ -511,6 +511,26 @@ NET_API_STATUS NetUserEnum(const char * server_name /* [in] */,
/************************************************************//**
*
+ * NetUserChangePassword
+ *
+ * @brief Change the password for a user on a given server or in a given domain
+ *
+ * @param[in] domain_name The server or domain name to connect to
+ * @param[in] user_name The user account to change the password for
+ * @param[in] old_password The user account's old password
+ * @param[in] old_password The user account's new password
+ * @return NET_API_STATUS
+ *
+ * example user/user_chgpwd.c
+ ***************************************************************/
+
+NET_API_STATUS NetUserChangePassword(const char * domain_name /* [in] */,
+ const char * user_name /* [in] */,
+ const char * old_password /* [in] */,
+ const char * new_password /* [in] */);
+
+/************************************************************//**
+ *
* NetQueryDisplayInformation
*
* @brief Enumerate accounts on a server
diff --git a/source/lib/netapi/user.c b/source/lib/netapi/user.c
index 53a307a..0d8065d 100644
--- a/source/lib/netapi/user.c
+++ b/source/lib/netapi/user.c
@@ -833,3 +833,21 @@ WERROR NetQueryDisplayInformation_l(struct libnetapi_ctx *ctx,
{
return WERR_NOT_SUPPORTED;
}
+
+/****************************************************************
+****************************************************************/
+
+WERROR NetUserChangePassword_r(struct libnetapi_ctx *ctx,
+ struct NetUserChangePassword *r)
+{
+ return WERR_NOT_SUPPORTED;
+}
+
+/****************************************************************
+****************************************************************/
+
+WERROR NetUserChangePassword_l(struct libnetapi_ctx *ctx,
+ struct NetUserChangePassword *r)
+{
+ return WERR_NOT_SUPPORTED;
+}
diff --git a/source/librpc/gen_ndr/libnetapi.h b/source/librpc/gen_ndr/libnetapi.h
index 5d2efcf..d6b8d99 100644
--- a/source/librpc/gen_ndr/libnetapi.h
+++ b/source/librpc/gen_ndr/libnetapi.h
@@ -334,6 +334,21 @@ struct NetUserEnum {
};
+struct NetUserChangePassword {
+ struct {
+ const char * domain_name;
+ const char * user_name;
+ const char * old_password;
+ const char * new_password;
+ } in;
+
+ struct {
+ enum NET_API_STATUS result;
+ } out;
+
+};
+
+
struct NetQueryDisplayInformation {
struct {
const char * server_name;/* [unique] */
diff --git a/source/librpc/gen_ndr/ndr_libnetapi.c b/source/librpc/gen_ndr/ndr_libnetapi.c
index 238cfdf..4bc966f 100644
--- a/source/librpc/gen_ndr/ndr_libnetapi.c
+++ b/source/librpc/gen_ndr/ndr_libnetapi.c
@@ -904,6 +904,31 @@ _PUBLIC_ void ndr_print_NetUserEnum(struct ndr_print *ndr, const char *name, int
ndr->depth--;
}
+_PUBLIC_ void ndr_print_NetUserChangePassword(struct ndr_print *ndr, const char *name, int flags, const struct NetUserChangePassword *r)
+{
+ ndr_print_struct(ndr, name, "NetUserChangePassword");
+ ndr->depth++;
+ if (flags & NDR_SET_VALUES) {
+ ndr->flags |= LIBNDR_PRINT_SET_VALUES;
+ }
+ if (flags & NDR_IN) {
+ ndr_print_struct(ndr, "in", "NetUserChangePassword");
+ ndr->depth++;
+ ndr_print_string(ndr, "domain_name", r->in.domain_name);
+ ndr_print_string(ndr, "user_name", r->in.user_name);
+ ndr_print_string(ndr, "old_password", r->in.old_password);
+ ndr_print_string(ndr, "new_password", r->in.new_password);
+ ndr->depth--;
+ }
+ if (flags & NDR_OUT) {
+ ndr_print_struct(ndr, "out", "NetUserChangePassword");
+ ndr->depth++;
+ ndr_print_NET_API_STATUS(ndr, "result", r->out.result);
+ ndr->depth--;
+ }
+ ndr->depth--;
+}
+
_PUBLIC_ void ndr_print_NetQueryDisplayInformation(struct ndr_print *ndr, const char *name, int flags, const struct NetQueryDisplayInformation *r)
{
ndr_print_struct(ndr, name, "NetQueryDisplayInformation");
diff --git a/source/librpc/gen_ndr/ndr_libnetapi.h b/source/librpc/gen_ndr/ndr_libnetapi.h
index 422c702..fa7b586 100644
--- a/source/librpc/gen_ndr/ndr_libnetapi.h
+++ b/source/librpc/gen_ndr/ndr_libnetapi.h
@@ -30,31 +30,33 @@
#define NDR_NETUSERENUM (0x0b)
-#define NDR_NETQUERYDISPLAYINFORMATION (0x0c)
+#define NDR_NETUSERCHANGEPASSWORD (0x0c)
-#define NDR_NETGROUPADD (0x0d)
+#define NDR_NETQUERYDISPLAYINFORMATION (0x0d)
-#define NDR_NETGROUPDEL (0x0e)
+#define NDR_NETGROUPADD (0x0e)
-#define NDR_NETGROUPSETINFO (0x0f)
+#define NDR_NETGROUPDEL (0x0f)
-#define NDR_NETGROUPGETINFO (0x10)
+#define NDR_NETGROUPSETINFO (0x10)
-#define NDR_NETGROUPADDUSER (0x11)
+#define NDR_NETGROUPGETINFO (0x11)
-#define NDR_NETGROUPDELUSER (0x12)
+#define NDR_NETGROUPADDUSER (0x12)
-#define NDR_NETLOCALGROUPADD (0x13)
+#define NDR_NETGROUPDELUSER (0x13)
-#define NDR_NETLOCALGROUPDEL (0x14)
+#define NDR_NETLOCALGROUPADD (0x14)
-#define NDR_NETLOCALGROUPGETINFO (0x15)
+#define NDR_NETLOCALGROUPDEL (0x15)
-#define NDR_NETLOCALGROUPSETINFO (0x16)
+#define NDR_NETLOCALGROUPGETINFO (0x16)
-#define NDR_NETREMOTETOD (0x17)
+#define NDR_NETLOCALGROUPSETINFO (0x17)
-#define NDR_LIBNETAPI_CALL_COUNT (24)
+#define NDR_NETREMOTETOD (0x18)
+
+#define NDR_LIBNETAPI_CALL_COUNT (25)
enum ndr_err_code ndr_push_NET_API_STATUS(struct ndr_push *ndr, int ndr_flags, enum NET_API_STATUS r);
enum ndr_err_code ndr_pull_NET_API_STATUS(struct ndr_pull *ndr, int ndr_flags, enum NET_API_STATUS *r);
void ndr_print_NET_API_STATUS(struct ndr_print *ndr, const char *name, enum NET_API_STATUS r);
@@ -118,6 +120,9 @@ void ndr_print_NetUserDel(struct ndr_print *ndr, const char *name, int flags, co
enum ndr_err_code ndr_push_NetUserEnum(struct ndr_push *ndr, int flags, const struct NetUserEnum *r);
enum ndr_err_code ndr_pull_NetUserEnum(struct ndr_pull *ndr, int flags, struct NetUserEnum *r);
void ndr_print_NetUserEnum(struct ndr_print *ndr, const char *name, int flags, const struct NetUserEnum *r);
+enum ndr_err_code ndr_push_NetUserChangePassword(struct ndr_push *ndr, int flags, const struct NetUserChangePassword *r);
+enum ndr_err_code ndr_pull_NetUserChangePassword(struct ndr_pull *ndr, int flags, struct NetUserChangePassword *r);
+void ndr_print_NetUserChangePassword(struct ndr_print *ndr, const char *name, int flags, const struct NetUserChangePassword *r);
enum ndr_err_code ndr_push_NetQueryDisplayInformation(struct ndr_push *ndr, int flags, const struct NetQueryDisplayInformation *r);
enum ndr_err_code ndr_pull_NetQueryDisplayInformation(struct ndr_pull *ndr, int flags, struct NetQueryDisplayInformation *r);
void ndr_print_NetQueryDisplayInformation(struct ndr_print *ndr, const char *name, int flags, const struct NetQueryDisplayInformation *r);
diff --git a/source/librpc/idl/libnetapi.idl b/source/librpc/idl/libnetapi.idl
index 07b640d..c260b30 100644
--- a/source/librpc/idl/libnetapi.idl
+++ b/source/librpc/idl/libnetapi.idl
@@ -199,6 +199,17 @@ interface libnetapi
);
/*******************************************/
+ /* NetUserChangePassword */
+ /*******************************************/
+
+ [nopush,nopull] NET_API_STATUS NetUserChangePassword(
+ [in] string domain_name,
+ [in] string user_name,
+ [in] string old_password,
+ [in] string new_password
+ );
+
+ /*******************************************/
/* NetQueryDisplayInformation */
/*******************************************/
--
Samba Shared Repository
More information about the samba-cvs
mailing list