svn commit: samba r8558 - in branches/SAMBA_4_0/source: scripting/libjs setup

tridge at samba.org tridge at samba.org
Mon Jul 18 23:58:19 GMT 2005


Author: tridge
Date: 2005-07-18 23:58:18 +0000 (Mon, 18 Jul 2005)
New Revision: 8558

WebSVN: http://websvn.samba.org/cgi-bin/viewcvs.cgi?view=rev&root=samba&rev=8558

Log:
move newuser logic into the provision.js lib


Modified:
   branches/SAMBA_4_0/source/scripting/libjs/provision.js
   branches/SAMBA_4_0/source/setup/newuser


Changeset:
Modified: branches/SAMBA_4_0/source/scripting/libjs/provision.js
===================================================================
--- branches/SAMBA_4_0/source/scripting/libjs/provision.js	2005-07-18 23:57:37 UTC (rev 8557)
+++ branches/SAMBA_4_0/source/scripting/libjs/provision.js	2005-07-18 23:58:18 UTC (rev 8558)
@@ -226,4 +226,88 @@
 	return subobj;
 }
 
+/*
+  search for one attribute as a string
+ */
+function searchone(ldb, expression, attribute)
+{
+	var attrs = new Array(attribute);
+	res = ldb.search(expression, attrs);
+	if (res.length != 1 ||
+	    res[0][attribute] == undefined) {
+		return undefined;
+	}
+	return res[0][attribute];
+}
+
+/*
+  add a new user record
+*/
+function newuser(username, unixname, password, message)
+{
+	var samdb = lpGet("sam database");
+	var ldb = ldb_init();
+
+	/* connect to the sam */
+	var ok = ldb.connect(samdb);
+	assert(ok);
+
+	/* find the DNs for the domain and the domain users group */
+	var domain_dn = searchone(ldb, "objectClass=domainDNS", "dn");
+	assert(domain_dn != undefined);
+	var dom_users = searchone(ldb, "name=Domain Users", "dn");
+	assert(dom_users != undefined);
+
+	var user_dn = sprintf("CN=%s,CN=Users,%s", 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, username, username, dom_users,
+			   unixname, randguid(), 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 = ldb.add(ldif);
+	if (ok != true) {
+		message("Failed to add %s - %s\n", user_dn, ldb.errstring());
+		return false;
+	}
+
+	message("Modifying group %s\n", dom_users);
+	ok = ldb.modify(modgroup);
+	if (ok != true) {
+		message("Failed to modify %s - %s\n", dom_users, ldb.errstring());
+		return false;
+	}
+
+	return true;
+}
+
+
 return 0;

Modified: branches/SAMBA_4_0/source/setup/newuser
===================================================================
--- branches/SAMBA_4_0/source/setup/newuser	2005-07-18 23:57:37 UTC (rev 8557)
+++ branches/SAMBA_4_0/source/setup/newuser	2005-07-18 23:58:18 UTC (rev 8558)
@@ -21,8 +21,8 @@
 }
 
 libinclude("base.js");
+libinclude("provision.js");
 
-var samdb = lpGet("sam database");
 
 /*
   print a message if quiet is not set
@@ -35,20 +35,6 @@
 }
 
 /*
-  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
 */
 function ShowHelp()
@@ -82,61 +68,6 @@
 	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;



More information about the samba-cvs mailing list