summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source3/param/loadparm.c4
-rw-r--r--source3/rpc_server/srv_samr_nt.c14
2 files changed, 15 insertions, 3 deletions
diff --git a/source3/param/loadparm.c b/source3/param/loadparm.c
index da25d526a1..7df701e1d3 100644
--- a/source3/param/loadparm.c
+++ b/source3/param/loadparm.c
@@ -146,6 +146,7 @@ typedef struct
char *szDelGroupScript;
char *szAddUserToGroupScript;
char *szDelUserToGroupScript;
+ char *szAddMachineScript;
char *szWINSHook;
#ifdef WITH_UTMP
char *szUtmpDir;
@@ -876,6 +877,7 @@ static struct parm_struct parm_table[] = {
{"delete group script", P_STRING, P_GLOBAL, &Globals.szDelGroupScript, NULL, NULL, 0},
{"add user to group script", P_STRING, P_GLOBAL, &Globals.szAddUserToGroupScript, NULL, NULL, 0},
{"delete user from group script", P_STRING, P_GLOBAL, &Globals.szDelUserToGroupScript, NULL, NULL, 0},
+ {"add machine script", P_STRING, P_GLOBAL, &Globals.szAddMachineScript, NULL, NULL, 0},
{"logon script", P_STRING, P_GLOBAL, &Globals.szLogonScript, NULL, NULL, 0},
{"logon path", P_STRING, P_GLOBAL, &Globals.szLogonPath, NULL, NULL, 0},
@@ -1451,6 +1453,8 @@ FN_GLOBAL_STRING(lp_delgroup_script, &Globals.szDelGroupScript)
FN_GLOBAL_STRING(lp_addusertogroup_script, &Globals.szAddUserToGroupScript)
FN_GLOBAL_STRING(lp_deluserfromgroup_script, &Globals.szDelUserToGroupScript)
+FN_GLOBAL_STRING(lp_addmachine_script, &Globals.szAddMachineScript)
+
FN_GLOBAL_STRING(lp_wins_hook, &Globals.szWINSHook)
FN_GLOBAL_STRING(lp_domain_admin_group, &Globals.szDomainAdminGroup)
FN_GLOBAL_STRING(lp_domain_guest_group, &Globals.szDomainGuestGroup)
diff --git a/source3/rpc_server/srv_samr_nt.c b/source3/rpc_server/srv_samr_nt.c
index fb2dcf03cc..829218008d 100644
--- a/source3/rpc_server/srv_samr_nt.c
+++ b/source3/rpc_server/srv_samr_nt.c
@@ -1860,10 +1860,18 @@ uint32 _api_samr_create_user(pipes_struct *p, SAMR_Q_CREATE_USER *q_u, SAMR_R_CR
* JFM (2/3/2001), to clear any possible bad understanding (-:
*/
- pstrcpy(add_script, lp_adduser_script());
+ pstrcpy(add_script, lp_addmachine_script());
- if(*add_script)
- smb_create_user(mach_acct, NULL);
+ if (!*add_script) {
+ pstrcpy(add_script, lp_adduser_script());
+ }
+
+ if(*add_script) {
+ int add_ret;
+ all_string_sub(add_script, "%u", mach_acct, sizeof(mach_acct));
+ add_ret = smbrun(add_script,NULL);
+ DEBUG(3,("_api_samr_create_user: Running the command `%s' gave %d\n",add_script,add_ret));
+ }
/* add the user in the smbpasswd file or the Samba authority database */
if (!local_password_change(mach_acct, local_flags, NULL, err_str,