svn commit: samba r18556 - in branches/SAMBA_3_0/source/utils: .

vlendec at samba.org vlendec at samba.org
Fri Sep 15 15:27:13 GMT 2006


Author: vlendec
Date: 2006-09-15 15:27:13 +0000 (Fri, 15 Sep 2006)
New Revision: 18556

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

Log:
Implement "net sam policy", thanks to Karolin Seeger <ks at sernet.de>.

Volker

Modified:
   branches/SAMBA_3_0/source/utils/net_sam.c


Changeset:
Modified: branches/SAMBA_3_0/source/utils/net_sam.c
===================================================================
--- branches/SAMBA_3_0/source/utils/net_sam.c	2006-09-15 14:42:24 UTC (rev 18555)
+++ branches/SAMBA_3_0/source/utils/net_sam.c	2006-09-15 15:27:13 UTC (rev 18556)
@@ -387,6 +387,80 @@
 }
 
 /*
+ * Change account policies
+ */
+
+static int net_sam_policy(int argc, const char **argv)
+{
+	
+	const char *account_policy = NULL;
+	uint32 value, old_value;
+	int field;
+
+	if ((argc < 1) || (argc > 2)) {
+		d_fprintf(stderr, "usage: net sam policy \"<account policy>\" "
+			  "-> show current value\n");
+		d_fprintf(stderr, "usage: net sam policy \"<account policy>\" "
+			  "<value> -> set a new value\n");
+		return -1;
+	}
+
+	account_policy = argv[0];
+	field = account_policy_name_to_fieldnum(account_policy);
+
+	if (field == 0) {
+		char *apn = account_policy_names_list();
+		d_fprintf(stderr, "No account policy by that name!\n");
+		if (apn) {
+			d_fprintf(stderr, "Valid account policies "
+				  "are:\n%s\n", apn);
+		}
+		SAFE_FREE(apn);
+		return -1;
+	}
+
+	if (!pdb_get_account_policy(field, &old_value)) {
+		fprintf(stderr, "Valid account policy, but unable to "
+			"fetch value!\n");
+		return -1;
+	}
+
+	if (argc == 1) {
+		/*
+		 * Just read the value
+		 */
+
+		printf("Account policy \"%s\" description: %s\n",
+		       account_policy, account_policy_get_desc(field));
+		printf("Account policy \"%s\" value is: %d\n", account_policy,
+		       old_value);
+		return 0;
+	}
+
+	/*
+	 * Here we know we have 2 args, so set it
+	 */
+	
+	value = strtoul(argv[1], NULL, 10);
+
+	printf("Account policy \"%s\" description: %s\n", account_policy,
+	       account_policy_get_desc(field));
+	printf("Account policy \"%s\" value was: %d\n", account_policy,
+	       old_value);
+
+	if (!pdb_set_account_policy(field, value)) {
+		d_fprintf(stderr, "Setting account policy %s to %u failed \n",
+			  account_policy, value);
+	}
+
+	printf("Account policy \"%s\" value is now: %d\n", account_policy,
+	       value);
+
+	return 0;
+}
+
+
+/*
  * Map a unix group to a domain group
  */
 
@@ -1232,6 +1306,8 @@
 		  "Show details of a SAM entry" },
 		{ "set", net_sam_set,
 		  "Set details of a SAM account" },
+		{ "policy", net_sam_policy,
+		  "Set account policies" },
 #ifdef HAVE_LDAP
 		{ "provision", net_sam_provision,
 		  "Provision a clean User Database" },



More information about the samba-cvs mailing list