[SCM] Samba Shared Repository - branch v3-2-test updated - initial-v3-2-test-1918-ged16b2f

Günther Deschner gd at samba.org
Wed Feb 6 01:09:46 GMT 2008


The branch, v3-2-test has been updated
       via  ed16b2f63b532a7b1a3c227a6045326a2e57a344 (commit)
       via  370973c101a59546bb50dcc82ae4419da2119279 (commit)
      from  d4dc2781add71712705f4f244e8896683b701e77 (commit)

http://gitweb.samba.org/?p=samba.git;a=shortlog;h=v3-2-test


- Log -----------------------------------------------------------------
commit ed16b2f63b532a7b1a3c227a6045326a2e57a344
Author: Günther Deschner <gd at samba.org>
Date:   Tue Feb 5 15:54:52 2008 +0100

    Use rpccli_samr_QueryDomainInfo() in rpcclient.
    
    Guenther

commit 370973c101a59546bb50dcc82ae4419da2119279
Author: Günther Deschner <gd at samba.org>
Date:   Tue Feb 5 15:08:31 2008 +0100

    Use pidl for _samr_SetDomainInfo().
    
    Guenther

-----------------------------------------------------------------------

Summary of changes:
 source/rpc_server/srv_samr.c    |   23 +-------
 source/rpc_server/srv_samr_nt.c |   50 +++++---------
 source/rpcclient/cmd_samr.c     |  132 ++++++++++++++++++--------------------
 3 files changed, 82 insertions(+), 123 deletions(-)


Changeset truncated at 500 lines:

diff --git a/source/rpc_server/srv_samr.c b/source/rpc_server/srv_samr.c
index 2508ed4..1d6c1a3 100644
--- a/source/rpc_server/srv_samr.c
+++ b/source/rpc_server/srv_samr.c
@@ -832,28 +832,7 @@ static bool api_samr_query_domain_info2(pipes_struct *p)
 
 static bool api_samr_set_dom_info(pipes_struct *p)
 {
-	SAMR_Q_SET_DOMAIN_INFO q_u;
-	SAMR_R_SET_DOMAIN_INFO r_u;
-	prs_struct *data = &p->in_data.data;
-	prs_struct *rdata = &p->out_data.rdata;
-
-	ZERO_STRUCT(q_u);
-	ZERO_STRUCT(r_u);
-
-	if(!samr_io_q_set_domain_info("", &q_u, data, 0)) {
-		DEBUG(0,("api_samr_set_dom_info: unable to unmarshall SAMR_Q_SET_DOMAIN_INFO.\n"));
-		return False;
-	}
-
-	r_u.status = _samr_set_dom_info(p, &q_u, &r_u);
-
-	/* store the response in the SMB stream */
-	if(!samr_io_r_set_domain_info("", &r_u, rdata, 0)) {
-		DEBUG(0,("api_samr_set_dom_info: unable to marshall SAMR_R_SET_DOMAIN_INFO.\n"));
-		return False;
-	}
-
-	return True;
+	return proxy_samr_call(p, NDR_SAMR_SETDOMAININFO);
 }
 
 /*******************************************************************
diff --git a/source/rpc_server/srv_samr_nt.c b/source/rpc_server/srv_samr_nt.c
index 16b7064..652f66c 100644
--- a/source/rpc_server/srv_samr_nt.c
+++ b/source/rpc_server/srv_samr_nt.c
@@ -5045,40 +5045,38 @@ NTSTATUS _samr_QueryDomainInfo2(pipes_struct *p,
 }
 
 /*******************************************************************
- _samr_set_dom_info
+ _samr_SetDomainInfo
  ********************************************************************/
 
-NTSTATUS _samr_set_dom_info(pipes_struct *p, SAMR_Q_SET_DOMAIN_INFO *q_u, SAMR_R_SET_DOMAIN_INFO *r_u)
+NTSTATUS _samr_SetDomainInfo(pipes_struct *p,
+			     struct samr_SetDomainInfo *r)
 {
 	time_t u_expire, u_min_age;
 	time_t u_logout;
 	time_t u_lock_duration, u_reset_time;
 
-	r_u->status = NT_STATUS_OK;
-
-	DEBUG(5,("_samr_set_dom_info: %d\n", __LINE__));
+	DEBUG(5,("_samr_SetDomainInfo: %d\n", __LINE__));
 
 	/* find the policy handle.  open a policy on it. */
-	if (!find_policy_by_hnd(p, &q_u->domain_pol, NULL))
+	if (!find_policy_by_hnd(p, r->in.domain_handle, NULL))
 		return NT_STATUS_INVALID_HANDLE;
 
-	DEBUG(5,("_samr_set_dom_info: switch_value: %d\n", q_u->switch_value));
+	DEBUG(5,("_samr_SetDomainInfo: level: %d\n", r->in.level));
 
-	switch (q_u->switch_value) {
+	switch (r->in.level) {
         	case 0x01:
-			u_expire=nt_time_to_unix_abs(&q_u->ctr->info.inf1.expire);
-			u_min_age=nt_time_to_unix_abs(&q_u->ctr->info.inf1.min_passwordage);
-
-			pdb_set_account_policy(AP_MIN_PASSWORD_LEN, (uint32)q_u->ctr->info.inf1.min_length_password);
-			pdb_set_account_policy(AP_PASSWORD_HISTORY, (uint32)q_u->ctr->info.inf1.password_history);
-			pdb_set_account_policy(AP_USER_MUST_LOGON_TO_CHG_PASS, (uint32)q_u->ctr->info.inf1.password_properties);
+			u_expire=nt_time_to_unix_abs((NTTIME *)&r->in.info->info1.max_password_age);
+			u_min_age=nt_time_to_unix_abs((NTTIME *)&r->in.info->info1.min_password_age);
+			pdb_set_account_policy(AP_MIN_PASSWORD_LEN, (uint32)r->in.info->info1.min_password_length);
+			pdb_set_account_policy(AP_PASSWORD_HISTORY, (uint32)r->in.info->info1.password_history_length);
+			pdb_set_account_policy(AP_USER_MUST_LOGON_TO_CHG_PASS, (uint32)r->in.info->info1.password_properties);
 			pdb_set_account_policy(AP_MAX_PASSWORD_AGE, (int)u_expire);
 			pdb_set_account_policy(AP_MIN_PASSWORD_AGE, (int)u_min_age);
             		break;
         	case 0x02:
 			break;
 		case 0x03:
-			u_logout=nt_time_to_unix_abs(&q_u->ctr->info.inf3.logout);
+			u_logout=nt_time_to_unix_abs((NTTIME *)&r->in.info->info3.force_logoff_time);
 			pdb_set_account_policy(AP_TIME_TO_LOGOUT, (int)u_logout);
 			break;
 		case 0x05:
@@ -5088,25 +5086,23 @@ NTSTATUS _samr_set_dom_info(pipes_struct *p, SAMR_Q_SET_DOMAIN_INFO *q_u, SAMR_R
 		case 0x07:
 			break;
 		case 0x0c:
-			u_lock_duration=nt_time_to_unix_abs(&q_u->ctr->info.inf12.duration);
+			u_lock_duration=nt_time_to_unix_abs((NTTIME *)&r->in.info->info12.lockout_duration);
 			if (u_lock_duration != -1)
 				u_lock_duration /= 60;
 
-			u_reset_time=nt_time_to_unix_abs(&q_u->ctr->info.inf12.reset_count)/60;
+			u_reset_time=nt_time_to_unix_abs((NTTIME *)&r->in.info->info12.lockout_window)/60;
 
 			pdb_set_account_policy(AP_LOCK_ACCOUNT_DURATION, (int)u_lock_duration);
 			pdb_set_account_policy(AP_RESET_COUNT_TIME, (int)u_reset_time);
-			pdb_set_account_policy(AP_BAD_ATTEMPT_LOCKOUT, (uint32)q_u->ctr->info.inf12.bad_attempt_lockout);
+			pdb_set_account_policy(AP_BAD_ATTEMPT_LOCKOUT, (uint32)r->in.info->info12.lockout_threshold);
 			break;
 		default:
 			return NT_STATUS_INVALID_INFO_CLASS;
 	}
 
-	init_samr_r_set_domain_info(r_u, NT_STATUS_OK);
-
-	DEBUG(5,("_samr_set_dom_info: %d\n", __LINE__));
+	DEBUG(5,("_samr_SetDomainInfo: %d\n", __LINE__));
 
-	return r_u->status;
+	return NT_STATUS_OK;
 }
 
 /****************************************************************
@@ -5132,16 +5128,6 @@ NTSTATUS _samr_EnumDomains(pipes_struct *p,
 /****************************************************************
 ****************************************************************/
 
-NTSTATUS _samr_SetDomainInfo(pipes_struct *p,
-			     struct samr_SetDomainInfo *r)
-{
-	p->rng_fault_state = true;
-	return NT_STATUS_NOT_IMPLEMENTED;
-}
-
-/****************************************************************
-****************************************************************/
-
 NTSTATUS _samr_EnumDomainGroups(pipes_struct *p,
 				struct samr_EnumDomainGroups *r)
 {
diff --git a/source/rpcclient/cmd_samr.c b/source/rpcclient/cmd_samr.c
index 332a67e..b8bcd61 100644
--- a/source/rpcclient/cmd_samr.c
+++ b/source/rpcclient/cmd_samr.c
@@ -150,98 +150,90 @@ static void display_password_properties(uint32_t password_properties)
 		printf("\tDOMAIN_REFUSE_PASSWORD_CHANGE\n");
 }
 
-static void display_sam_unk_info_1(SAM_UNK_INFO_1 *info1)
+static void display_sam_dom_info_1(struct samr_DomInfo1 *info1)
 {
-	
-	printf("Minimum password length:\t\t\t%d\n", info1->min_length_password);
-	printf("Password uniqueness (remember x passwords):\t%d\n", info1->password_history);
+	printf("Minimum password length:\t\t\t%d\n",
+		info1->min_password_length);
+	printf("Password uniqueness (remember x passwords):\t%d\n",
+		info1->password_history_length);
 	display_password_properties(info1->password_properties);
-	printf("password expire in:\t\t\t\t%s\n", display_time(info1->expire));
-	printf("Min password age (allow changing in x days):\t%s\n", display_time(info1->min_passwordage));
+	printf("password expire in:\t\t\t\t%s\n",
+		display_time(info1->max_password_age));
+	printf("Min password age (allow changing in x days):\t%s\n",
+		display_time(info1->min_password_age));
 }
 
-static void display_sam_unk_info_2(SAM_UNK_INFO_2 *info2)
+static void display_sam_dom_info_2(struct samr_DomInfo2 *info2)
 {
-	fstring name;
+	printf("Domain:\t\t%s\n", info2->domain_name.string);
+	printf("Server:\t\t%s\n", info2->primary.string);
+	printf("Comment:\t%s\n", info2->comment.string);
 
-	unistr2_to_ascii(name, &info2->uni_domain, sizeof(name));
-	printf("Domain:\t\t%s\n", name);
+	printf("Total Users:\t%d\n", info2->num_users);
+	printf("Total Groups:\t%d\n", info2->num_groups);
+	printf("Total Aliases:\t%d\n", info2->num_aliases);
 
-	unistr2_to_ascii(name, &info2->uni_server, sizeof(name));
-	printf("Server:\t\t%s\n", name);
+	printf("Sequence No:\t%llu\n", (unsigned long long)info2->sequence_num);
 
-	unistr2_to_ascii(name, &info2->uni_comment, sizeof(name));
-	printf("Comment:\t%s\n", name);
-
-	printf("Total Users:\t%d\n", info2->num_domain_usrs);
-	printf("Total Groups:\t%d\n", info2->num_domain_grps);
-	printf("Total Aliases:\t%d\n", info2->num_local_grps);
-	
-	printf("Sequence No:\t%llu\n", (unsigned long long)info2->seq_num);
+	printf("Force Logoff:\t%d\n",
+		(int)nt_time_to_unix_abs(&info2->force_logoff_time));
 
-	printf("Force Logoff:\t%d\n", (int)nt_time_to_unix_abs(&info2->logout));
-
-	printf("Unknown 4:\t0x%x\n", info2->unknown_4);
-	printf("Server Role:\t%s\n", server_role_str(info2->server_role));
-	printf("Unknown 6:\t0x%x\n", info2->unknown_6);
+	printf("Unknown 2:\t0x%x\n", info2->unknown2);
+	printf("Server Role:\t%s\n", server_role_str(info2->role));
+	printf("Unknown 3:\t0x%x\n", info2->unknown3);
 }
 
-static void display_sam_unk_info_3(SAM_UNK_INFO_3 *info3)
+static void display_sam_dom_info_3(struct samr_DomInfo3 *info3)
 {
-	printf("Force Logoff:\t%d\n", (int)nt_time_to_unix_abs(&info3->logout));
+	printf("Force Logoff:\t%d\n",
+		(int)nt_time_to_unix_abs(&info3->force_logoff_time));
 }
 
-static void display_sam_unk_info_4(SAM_UNK_INFO_4 *info4)
+static void display_sam_dom_info_4(struct samr_DomInfo4 *info4)
 {
-	fstring name;
-
-	unistr2_to_ascii(name, &info4->uni_comment, sizeof(name));
-	printf("Comment:\t%s\n", name);
+	printf("Comment:\t%s\n", info4->comment.string);
 }
 
-static void display_sam_unk_info_5(SAM_UNK_INFO_5 *info5)
+static void display_sam_dom_info_5(struct samr_DomInfo5 *info5)
 {
-	fstring name;
-
-	unistr2_to_ascii(name, &info5->uni_domain, sizeof(name));
-	printf("Domain:\t\t%s\n", name);
+	printf("Domain:\t\t%s\n", info5->domain_name.string);
 }
 
-static void display_sam_unk_info_6(SAM_UNK_INFO_6 *info6)
+static void display_sam_dom_info_6(struct samr_DomInfo6 *info6)
 {
-	fstring name;
-
-	unistr2_to_ascii(name, &info6->uni_server, sizeof(name));
-	printf("Server:\t\t%s\n", name);
+	printf("Server:\t\t%s\n", info6->primary.string);
 }
 
-static void display_sam_unk_info_7(SAM_UNK_INFO_7 *info7)
+static void display_sam_dom_info_7(struct samr_DomInfo7 *info7)
 {
-	printf("Server Role:\t%s\n", server_role_str(info7->server_role));
+	printf("Server Role:\t%s\n", server_role_str(info7->role));
 }
 
-static void display_sam_unk_info_8(SAM_UNK_INFO_8 *info8)
+static void display_sam_dom_info_8(struct samr_DomInfo8 *info8)
 {
-	printf("Sequence No:\t%llu\n", (unsigned long long)info8->seq_num);
+	printf("Sequence No:\t%llu\n", (unsigned long long)info8->sequence_num);
 	printf("Domain Create Time:\t%s\n", 
 		http_timestring(nt_time_to_unix(info8->domain_create_time)));
 }
 
-static void display_sam_unk_info_9(SAM_UNK_INFO_9 *info9)
+static void display_sam_dom_info_9(struct samr_DomInfo9 *info9)
 {
 	printf("unknown:\t%d (0x%08x)\n", info9->unknown, info9->unknown);
 }
 
-static void display_sam_unk_info_12(SAM_UNK_INFO_12 *info12)
+static void display_sam_dom_info_12(struct samr_DomInfo12 *info12)
 {
-	printf("Bad password lockout duration:               %s\n", display_time(info12->duration));
-	printf("Reset Lockout after:                         %s\n", display_time(info12->reset_count));
-	printf("Lockout after bad attempts:                  %d\n", info12->bad_attempt_lockout);
+	printf("Bad password lockout duration:               %s\n",
+		display_time(info12->lockout_duration));
+	printf("Reset Lockout after:                         %s\n",
+		display_time(info12->lockout_window));
+	printf("Lockout after bad attempts:                  %d\n",
+		info12->lockout_threshold);
 }
 
-static void display_sam_unk_info_13(SAM_UNK_INFO_13 *info13)
+static void display_sam_dom_info_13(struct samr_DomInfo13 *info13)
 {
-	printf("Sequence No:\t%llu\n", (unsigned long long)info13->seq_num);
+	printf("Sequence No:\t%llu\n", (unsigned long long)info13->sequence_num);
 	printf("Domain Create Time:\t%s\n", 
 		http_timestring(nt_time_to_unix(info13->domain_create_time)));
 	printf("Unknown1:\t%d\n", info13->unknown1);
@@ -1410,7 +1402,7 @@ static NTSTATUS cmd_samr_query_dominfo(struct rpc_pipe_client *cli,
 	NTSTATUS result = NT_STATUS_UNSUCCESSFUL;
 	uint32 switch_level = 2;
 	uint32 access_mask = MAXIMUM_ALLOWED_ACCESS;
-	SAM_UNK_CTR ctr;
+	union samr_DomainInfo *info = NULL;
 
 	if (argc > 3) {
 		printf("Usage: %s [info level] [access mask]\n", argv[0]);
@@ -1444,8 +1436,10 @@ static NTSTATUS cmd_samr_query_dominfo(struct rpc_pipe_client *cli,
 
 	/* Query domain info */
 
-	result = rpccli_samr_query_dom_info(cli, mem_ctx, &domain_pol,
-					 switch_level, &ctr);
+	result = rpccli_samr_QueryDomainInfo(cli, mem_ctx,
+					     &domain_pol,
+					     switch_level,
+					     &info);
 
 	if (!NT_STATUS_IS_OK(result))
 		goto done;
@@ -1454,37 +1448,37 @@ static NTSTATUS cmd_samr_query_dominfo(struct rpc_pipe_client *cli,
 
 	switch (switch_level) {
 	case 1:
-		display_sam_unk_info_1(&ctr.info.inf1);
+		display_sam_dom_info_1(&info->info1);
 		break;
 	case 2:
-		display_sam_unk_info_2(&ctr.info.inf2);
+		display_sam_dom_info_2(&info->info2);
 		break;
 	case 3:
-		display_sam_unk_info_3(&ctr.info.inf3);
+		display_sam_dom_info_3(&info->info3);
 		break;
 	case 4:
-		display_sam_unk_info_4(&ctr.info.inf4);
+		display_sam_dom_info_4(&info->info4);
 		break;
 	case 5:
-		display_sam_unk_info_5(&ctr.info.inf5);
+		display_sam_dom_info_5(&info->info5);
 		break;
 	case 6:
-		display_sam_unk_info_6(&ctr.info.inf6);
+		display_sam_dom_info_6(&info->info6);
 		break;
 	case 7:
-		display_sam_unk_info_7(&ctr.info.inf7);
+		display_sam_dom_info_7(&info->info7);
 		break;
 	case 8:
-		display_sam_unk_info_8(&ctr.info.inf8);
+		display_sam_dom_info_8(&info->info8);
 		break;
 	case 9:
-		display_sam_unk_info_9(&ctr.info.inf9);
+		display_sam_dom_info_9(&info->info9);
 		break;
 	case 12:
-		display_sam_unk_info_12(&ctr.info.inf12);
+		display_sam_dom_info_12(&info->info12);
 		break;
 	case 13:
-		display_sam_unk_info_13(&ctr.info.inf13);
+		display_sam_dom_info_13(&info->info13);
 		break;
 
 	default:
@@ -2346,8 +2340,8 @@ static NTSTATUS cmd_samr_chgpasswd3(struct rpc_pipe_client *cli,
 	result = rpccli_samr_chgpasswd3(cli, mem_ctx, user, newpass, oldpass, &info, &reject);
 
 	if (NT_STATUS_EQUAL(result, NT_STATUS_PASSWORD_RESTRICTION)) {
-	
-		display_sam_unk_info_1(&info);
+
+		/*display_sam_dom_info_1(&info);*/
 
 		switch (reject.reject_reason) {
 			case SAMR_REJECT_TOO_SHORT:


-- 
Samba Shared Repository


More information about the samba-cvs mailing list