1
0
mirror of https://github.com/samba-team/samba.git synced 2025-10-29 04:23:51 +03:00

r8558: move newuser logic into the provision.js lib

This commit is contained in:
Andrew Tridgell
2005-07-18 23:58:18 +00:00
committed by Gerald (Jerry) Carter
parent 21ca972d06
commit b6ef32ddd1
2 changed files with 86 additions and 71 deletions

View File

@@ -21,8 +21,8 @@ if (ok == false) {
}
libinclude("base.js");
libinclude("provision.js");
var samdb = lpGet("sam database");
/*
print a message if quiet is not set
@@ -34,20 +34,6 @@ function message()
}
}
/*
search for one attribute as a string
*/
function search(db, expression, attribute)
{
var attrs = new Array(attribute);
res = ldbSearch(db, expression, attrs);
if (res.length != 1 ||
res[0][attribute] == undefined) {
return undefined;
}
return res[0][attribute];
}
/*
show some help
*/
@@ -82,61 +68,6 @@ if (getpwnam(options.unixname) == undefined) {
exit(1);
}
if (search(samdb, "name=" + options.username, "dn") != undefined) {
printf("ERROR: User '%s' already exists\n", options.username);
exit(1);
}
newuser(options.username, options.unixname, options.password, message);
var domain_dn = search(samdb, "objectClass=domainDNS", "dn");
assert(domain_dn != undefined);
var dom_users = search(samdb, "name=Domain Users", "dn");
assert(dom_users != undefined);
var user_dn = sprintf("CN=%s,CN=Users,%s", options.username, domain_dn);
/*
the new user record. note the reliance on the samdb module to fill
in a sid, guid etc
*/
var ldif = sprintf("
dn: %s
sAMAccountName: %s
name: %s
memberOf: %s
unixName: %s
objectGUID: %s
unicodePwd: %s
objectClass: user
",
user_dn, options.username, options.username, dom_users,
options.unixname, randguid(), options.password);
/*
add the user to the users group as well
*/
var modgroup = sprintf("
dn: %s
changetype: modify
add: member
member: %s
", dom_users, user_dn);
/*
now the real work
*/
message("Adding user %s\n", user_dn);
ok = ldbAdd(samdb, ldif);
if (ok != true) {
message("Failed to add %s\n", user_dn);
exit(1);
}
message("Modifying group %s\n", dom_users);
ok = ldbModify(samdb, modgroup);
if (ok != true) {
message("Failed to modify %s\n", dom_users);
exit(1);
}
message("All OK\n");
return 0;