summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source3/include/proto.h5
-rw-r--r--source3/libnet/libnet_samsync_passdb.c60
-rw-r--r--source3/passdb/passdb.c60
3 files changed, 60 insertions, 65 deletions
diff --git a/source3/include/proto.h b/source3/include/proto.h
index f6b2b3ca2d..81fc1c061f 100644
--- a/source3/include/proto.h
+++ b/source3/include/proto.h
@@ -4333,11 +4333,6 @@ bool get_trust_pw_hash(const char *domain, uint8 ret_pwd[16],
const char **account_name, uint32 *channel);
struct samr_LogonHours get_logon_hours_from_pdb(TALLOC_CTX *mem_ctx,
struct samu *pw);
-NTSTATUS smb_create_user(TALLOC_CTX *mem_ctx,
- uint32_t acct_flags,
- const char *account,
- struct passwd **passwd_p);
-
/* The following definitions come from passdb/pdb_compat.c */
uint32 pdb_get_user_rid (const struct samu *sampass);
diff --git a/source3/libnet/libnet_samsync_passdb.c b/source3/libnet/libnet_samsync_passdb.c
index 95e8448828..27c7aac7e7 100644
--- a/source3/libnet/libnet_samsync_passdb.c
+++ b/source3/libnet/libnet_samsync_passdb.c
@@ -226,6 +226,66 @@ static NTSTATUS sam_account_from_delta(struct samu *account,
return NT_STATUS_OK;
}
+
+/****************************************************************
+****************************************************************/
+
+static NTSTATUS smb_create_user(TALLOC_CTX *mem_ctx,
+ uint32_t acct_flags,
+ const char *account,
+ struct passwd **passwd_p)
+{
+ struct passwd *passwd;
+ char *add_script = NULL;
+
+ passwd = Get_Pwnam_alloc(mem_ctx, account);
+ if (passwd) {
+ *passwd_p = passwd;
+ return NT_STATUS_OK;
+ }
+
+ /* Create appropriate user */
+ if (acct_flags & ACB_NORMAL) {
+ add_script = talloc_strdup(mem_ctx, lp_adduser_script());
+ } else if ( (acct_flags & ACB_WSTRUST) ||
+ (acct_flags & ACB_SVRTRUST) ||
+ (acct_flags & ACB_DOMTRUST) ) {
+ add_script = talloc_strdup(mem_ctx, lp_addmachine_script());
+ } else {
+ DEBUG(1, ("Unknown user type: %s\n",
+ pdb_encode_acct_ctrl(acct_flags, NEW_PW_FORMAT_SPACE_PADDED_LEN)));
+ return NT_STATUS_UNSUCCESSFUL;
+ }
+
+ if (!add_script) {
+ return NT_STATUS_NO_MEMORY;
+ }
+
+ if (*add_script) {
+ int add_ret;
+ add_script = talloc_all_string_sub(mem_ctx, add_script,
+ "%u", account);
+ if (!add_script) {
+ return NT_STATUS_NO_MEMORY;
+ }
+ add_ret = smbrun(add_script, NULL);
+ DEBUG(add_ret ? 0 : 1,("fetch_account: Running the command `%s' "
+ "gave %d\n", add_script, add_ret));
+ if (add_ret == 0) {
+ smb_nscd_flush_user_cache();
+ }
+ }
+
+ /* try and find the possible unix account again */
+ passwd = Get_Pwnam_alloc(mem_ctx, account);
+ if (!passwd) {
+ return NT_STATUS_NO_SUCH_USER;
+ }
+
+ *passwd_p = passwd;
+
+ return NT_STATUS_OK;
+}
/****************************************************************
****************************************************************/
diff --git a/source3/passdb/passdb.c b/source3/passdb/passdb.c
index c36cda5ecd..6aab5e377c 100644
--- a/source3/passdb/passdb.c
+++ b/source3/passdb/passdb.c
@@ -2348,63 +2348,3 @@ struct samr_LogonHours get_logon_hours_from_pdb(TALLOC_CTX *mem_ctx,
return hours;
}
-
-/****************************************************************
-****************************************************************/
-
-NTSTATUS smb_create_user(TALLOC_CTX *mem_ctx,
- uint32_t acct_flags,
- const char *account,
- struct passwd **passwd_p)
-{
- struct passwd *passwd;
- char *add_script = NULL;
-
- passwd = Get_Pwnam_alloc(mem_ctx, account);
- if (passwd) {
- *passwd_p = passwd;
- return NT_STATUS_OK;
- }
-
- /* Create appropriate user */
- if (acct_flags & ACB_NORMAL) {
- add_script = talloc_strdup(mem_ctx, lp_adduser_script());
- } else if ( (acct_flags & ACB_WSTRUST) ||
- (acct_flags & ACB_SVRTRUST) ||
- (acct_flags & ACB_DOMTRUST) ) {
- add_script = talloc_strdup(mem_ctx, lp_addmachine_script());
- } else {
- DEBUG(1, ("Unknown user type: %s\n",
- pdb_encode_acct_ctrl(acct_flags, NEW_PW_FORMAT_SPACE_PADDED_LEN)));
- return NT_STATUS_UNSUCCESSFUL;
- }
-
- if (!add_script) {
- return NT_STATUS_NO_MEMORY;
- }
-
- if (*add_script) {
- int add_ret;
- add_script = talloc_all_string_sub(mem_ctx, add_script,
- "%u", account);
- if (!add_script) {
- return NT_STATUS_NO_MEMORY;
- }
- add_ret = smbrun(add_script, NULL);
- DEBUG(add_ret ? 0 : 1,("fetch_account: Running the command `%s' "
- "gave %d\n", add_script, add_ret));
- if (add_ret == 0) {
- smb_nscd_flush_user_cache();
- }
- }
-
- /* try and find the possible unix account again */
- passwd = Get_Pwnam_alloc(mem_ctx, account);
- if (!passwd) {
- return NT_STATUS_NO_SUCH_USER;
- }
-
- *passwd_p = passwd;
-
- return NT_STATUS_OK;
-}