⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 pdb_sql.c

📁 samba-3.0.22.tar.gz 编译smb服务器的源码
💻 C
📖 第 1 页 / 共 2 页
字号:
	query = talloc_asprintf(mem_ctx, "DELETE FROM %s WHERE %s = '%s'",			 config_value(data, "table", CONFIG_TABLE_DEFAULT),			 config_value_read(data, "username column",							   CONFIG_USERNAME_DEFAULT), esc);	return query;}char *sql_account_query_update(TALLOC_CTX *mem_ctx, const char *location, const SAM_ACCOUNT *newpwd, char isupdate){	char *ret;	pstring temp;	fstring sid_str;	pdb_sql_query *query; 	int some_field_affected = 0;	query = talloc(mem_ctx, pdb_sql_query);	query->update = isupdate;	/* I know this is somewhat overkill but only the talloc 	 * functions have asprint_append and the 'normal' asprintf 	 * is a GNU extension */	query->part2 = talloc_asprintf(query, "%s", "");	if (query->update) {		query->part1 =			talloc_asprintf(query, "UPDATE %s SET ",							config_value(location, "table",										 CONFIG_TABLE_DEFAULT));	} else {		query->part1 =			talloc_asprintf(query, "INSERT INTO %s (",							config_value(location, "table",										 CONFIG_TABLE_DEFAULT));	}	if (!isupdate || IS_SAM_CHANGED(newpwd, PDB_ACCTCTRL)) { 		some_field_affected = 1;		pdb_sql_int_field(query,						config_value_write(location, "acct ctrl column",										   CONFIG_ACCT_CTRL_DEFAULT),						pdb_get_acct_ctrl(newpwd));	}	if (!isupdate || IS_SAM_CHANGED(newpwd, PDB_LOGONTIME)) { 		some_field_affected = 1;		pdb_sql_int_field(query,							config_value_write(location,											   "logon time column",											   CONFIG_LOGON_TIME_DEFAULT),							pdb_get_logon_time(newpwd));	}	if (!isupdate || IS_SAM_CHANGED(newpwd, PDB_LOGOFFTIME)) { 		some_field_affected = 1;		pdb_sql_int_field(query,							config_value_write(location,											   "logoff time column",											   CONFIG_LOGOFF_TIME_DEFAULT),							pdb_get_logoff_time(newpwd));	}	if (!isupdate || IS_SAM_CHANGED(newpwd, PDB_KICKOFFTIME)) { 		some_field_affected = 1;		pdb_sql_int_field(query,							config_value_write(location,											   "kickoff time column",											   CONFIG_KICKOFF_TIME_DEFAULT),							pdb_get_kickoff_time(newpwd));	}	if (!isupdate || IS_SAM_CHANGED(newpwd, PDB_CANCHANGETIME)) { 		some_field_affected = 1;		pdb_sql_int_field(query,							config_value_write(location,											   "pass can change time column",											   CONFIG_PASS_CAN_CHANGE_TIME_DEFAULT),							pdb_get_pass_can_change_time(newpwd));	}	if (!isupdate || IS_SAM_CHANGED(newpwd, PDB_MUSTCHANGETIME)) { 		some_field_affected = 1;		pdb_sql_int_field(query,							config_value_write(location,											   "pass must change time column",											   CONFIG_PASS_MUST_CHANGE_TIME_DEFAULT),							pdb_get_pass_must_change_time(newpwd));	}	if (!isupdate || IS_SAM_CHANGED(newpwd, PDB_PASSLASTSET)) { 		some_field_affected = 1;		pdb_sql_int_field(query,							config_value_write(location,											   "pass last set time column",											   CONFIG_PASS_LAST_SET_TIME_DEFAULT),							pdb_get_pass_last_set_time(newpwd));	}	if (!isupdate || IS_SAM_CHANGED(newpwd, PDB_HOURSLEN)) { 		some_field_affected = 1;		pdb_sql_int_field(query,							config_value_write(location,											   "hours len column",											   CONFIG_HOURS_LEN_DEFAULT),							pdb_get_hours_len(newpwd));	}	if (!isupdate || IS_SAM_CHANGED(newpwd, PDB_LOGONDIVS)) { 		some_field_affected = 1;		pdb_sql_int_field(query,							config_value_write(location,											   "logon divs column",											   CONFIG_LOGON_DIVS_DEFAULT),							pdb_get_logon_divs(newpwd));	}	if (!isupdate || IS_SAM_CHANGED(newpwd, PDB_USERSID)) { 		some_field_affected = 1;		pdb_sql_string_field(query,						   config_value_write(location, "user sid column",											  CONFIG_USER_SID_DEFAULT),						   sid_to_string(sid_str, 										 pdb_get_user_sid(newpwd)));	}	if (!isupdate || IS_SAM_CHANGED(newpwd, PDB_GROUPSID)) { 		some_field_affected = 1;		pdb_sql_string_field(query,						   config_value_write(location, "group sid column",											  CONFIG_GROUP_SID_DEFAULT),						   sid_to_string(sid_str,										 pdb_get_group_sid(newpwd)));	}	if (!isupdate || IS_SAM_CHANGED(newpwd, PDB_USERNAME)) { 		some_field_affected = 1;		pdb_sql_string_field(query,						   config_value_write(location, "username column",											  CONFIG_USERNAME_DEFAULT),						   pdb_get_username(newpwd));	}	if (!isupdate || IS_SAM_CHANGED(newpwd, PDB_DOMAIN)) { 		some_field_affected = 1;		pdb_sql_string_field(query,						   config_value_write(location, "domain column",											  CONFIG_DOMAIN_DEFAULT),						   pdb_get_domain(newpwd));	}	if (!isupdate || IS_SAM_CHANGED(newpwd, PDB_USERNAME)) { 		some_field_affected = 1;		pdb_sql_string_field(query,						   config_value_write(location,											  "nt username column",											  CONFIG_NT_USERNAME_DEFAULT),						   pdb_get_nt_username(newpwd));	}	if (!isupdate || IS_SAM_CHANGED(newpwd, PDB_FULLNAME)) { 		some_field_affected = 1;		pdb_sql_string_field(query,						   config_value_write(location, "fullname column",											  CONFIG_FULLNAME_DEFAULT),						   pdb_get_fullname(newpwd));	}	if (!isupdate || IS_SAM_CHANGED(newpwd, PDB_LOGONSCRIPT)) { 		some_field_affected = 1;		pdb_sql_string_field(query,						   config_value_write(location,											  "logon script column",											  CONFIG_LOGON_SCRIPT_DEFAULT),						   pdb_get_logon_script(newpwd));	}	if (!isupdate || IS_SAM_CHANGED(newpwd, PDB_PROFILE)) { 		some_field_affected = 1;		pdb_sql_string_field(query,						   config_value_write(location,											  "profile path column",											  CONFIG_PROFILE_PATH_DEFAULT),						   pdb_get_profile_path(newpwd));	}	if (!isupdate || IS_SAM_CHANGED(newpwd, PDB_DRIVE)) { 		some_field_affected = 1;		pdb_sql_string_field(query,						   config_value_write(location, "dir drive column",											  CONFIG_DIR_DRIVE_DEFAULT),						   pdb_get_dir_drive(newpwd));	}	if (!isupdate || IS_SAM_CHANGED(newpwd, PDB_SMBHOME)) { 		some_field_affected = 1;		pdb_sql_string_field(query,						   config_value_write(location, "home dir column",											  CONFIG_HOME_DIR_DEFAULT),						   pdb_get_homedir(newpwd));	}	if (!isupdate || IS_SAM_CHANGED(newpwd, PDB_WORKSTATIONS)) { 		some_field_affected = 1;		pdb_sql_string_field(query,						   config_value_write(location,											  "workstations column",											  CONFIG_WORKSTATIONS_DEFAULT),						   pdb_get_workstations(newpwd));	}	if (!isupdate || IS_SAM_CHANGED(newpwd, PDB_UNKNOWNSTR)) { 		some_field_affected = 1;		pdb_sql_string_field(query,						   config_value_write(location,											  "unknown string column",											  CONFIG_UNKNOWN_STR_DEFAULT),						   pdb_get_workstations(newpwd));	}	if (!isupdate || IS_SAM_CHANGED(newpwd, PDB_LMPASSWD)) {		some_field_affected = 1;		pdb_sethexpwd(temp, pdb_get_lanman_passwd(newpwd),					  pdb_get_acct_ctrl(newpwd));		pdb_sql_string_field(query,						   config_value_write(location,											  "lanman pass column",											  CONFIG_LM_PW_DEFAULT), temp);	}	if (!isupdate || IS_SAM_CHANGED(newpwd, PDB_NTPASSWD)) {		some_field_affected = 1;		pdb_sethexpwd(temp, pdb_get_nt_passwd(newpwd),					  pdb_get_acct_ctrl(newpwd));		pdb_sql_string_field(query,						   config_value_write(location, "nt pass column",											  CONFIG_NT_PW_DEFAULT), temp);	} 	if (!isupdate || IS_SAM_CHANGED(newpwd, PDB_HOURS)) { 		some_field_affected = 1; 		pdb_sql_string_field(query, 							config_value_write(location, 											   "logon hours column", 											   CONFIG_LOGON_HOURS), 							(const char *)pdb_get_hours(newpwd)); 	} 	if (!some_field_affected) {		talloc_free(query); 		return NULL; 	}	if (query->update) {		query->part1[strlen(query->part1) - 1] = '\0';		query->part1 = talloc_asprintf(			mem_ctx, "%s WHERE %s = '%s'", query->part1,			config_value_read(location,					  "user sid column",					  CONFIG_USER_SID_DEFAULT),			sid_to_string(sid_str, pdb_get_user_sid (newpwd)));	} else {		query->part2[strlen(query->part2) - 1] = ')';		query->part1[strlen(query->part1) - 1] = ')';		query->part1 =			talloc_asprintf_append(query->part1,								   " VALUES (%s", query->part2);	}	ret = talloc_strdup(mem_ctx, query->part1);	talloc_free(query);	return ret;}BOOL sql_account_config_valid(const char *data){	const char *sid_column, *username_column;	    sid_column = config_value_read(data, "user sid column", CONFIG_USER_SID_DEFAULT);    username_column = config_value_read(data, "username column", CONFIG_USERNAME_DEFAULT);	    if(!strcmp(sid_column,"NULL") || !strcmp(username_column, "NULL")) {        DEBUG(0,("Please specify both a valid 'user sid column' and a valid 'username column' in smb.conf\n"));        return False;    }	return True;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -