예제 #1
0
static BOOL account_policy_set_default_on_empty(int account_policy)
{

	uint32 value;

	if (!account_policy_get(account_policy, &value) && 
	    !account_policy_get_default(account_policy, &value)) {
		return False;
	}

	return account_policy_set(account_policy, value);
}
예제 #2
0
파일: pdbedit.c 프로젝트: Gazzonyx/samba
static int reinit_account_policies (void)
{
	int i;

	for (i=1; decode_account_policy_name(i) != NULL; i++) {
		uint32_t policy_value;
		if (!account_policy_get_default(i, &policy_value)) {
			fprintf(stderr, "Can't get default account policy\n");
			return -1;
		}
		if (!account_policy_set(i, policy_value)) {
			fprintf(stderr, "Can't set account policy in tdb\n");
			return -1;
		}
	}

	return 0;
}
예제 #3
0
static NTSTATUS add_new_domain_account_policies(struct smbldap_state *ldap_state,
						const char *domain_name)
{
	NTSTATUS ntstatus = NT_STATUS_UNSUCCESSFUL;
	int i, rc;
	uint32_t policy_default;
	const char *policy_attr = NULL;
	char *dn = NULL;
	LDAPMod **mods = NULL;
	char *escape_domain_name;

	DEBUG(3,("add_new_domain_account_policies: Adding new account policies for domain\n"));

	escape_domain_name = escape_rdn_val_string_alloc(domain_name);
	if (!escape_domain_name) {
		DEBUG(0, ("Out of memory!\n"));
		return NT_STATUS_NO_MEMORY;
	}

	if (asprintf(&dn, "%s=%s,%s",
		get_attr_key2string(dominfo_attr_list, LDAP_ATTR_DOMAIN),
		escape_domain_name, lp_ldap_suffix(talloc_tos())) < 0) {
		SAFE_FREE(escape_domain_name);
		return NT_STATUS_NO_MEMORY;
	}

	SAFE_FREE(escape_domain_name);

	for (i=1; decode_account_policy_name(i) != NULL; i++) {
		char *val = NULL;

		policy_attr = get_account_policy_attr(i);
		if (!policy_attr) {
			DEBUG(0,("add_new_domain_account_policies: ops. no policy!\n"));
			continue;
		}

		if (!account_policy_get_default(i, &policy_default)) {
			DEBUG(0,("add_new_domain_account_policies: failed to get default account policy\n"));
			SAFE_FREE(dn);
			return ntstatus;
		}

		DEBUG(10,("add_new_domain_account_policies: adding \"%s\" with value: %d\n", policy_attr, policy_default));

		if (asprintf(&val, "%d", policy_default) < 0) {
			SAFE_FREE(dn);
			return NT_STATUS_NO_MEMORY;
		}

		smbldap_set_mod( &mods, LDAP_MOD_REPLACE, policy_attr, val);

		rc = smbldap_modify(ldap_state, dn, mods);

		SAFE_FREE(val);

		if (rc!=LDAP_SUCCESS) {
			char *ld_error = NULL;
			ldap_get_option(ldap_state->ldap_struct, LDAP_OPT_ERROR_STRING, &ld_error);
			DEBUG(1,("add_new_domain_account_policies: failed to add account policies to dn= %s with: %s\n\t%s\n",
				dn, ldap_err2string(rc),
				ld_error ? ld_error : "unknown"));
			SAFE_FREE(ld_error);
			SAFE_FREE(dn);
			ldap_mods_free(mods, True);
			return ntstatus;
		}
	}

	SAFE_FREE(dn);
	ldap_mods_free(mods, True);

	return NT_STATUS_OK;
}