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

📄 um.c

📁 一个典型的用于嵌入式Linux环境的Webserver
💻 C
📖 第 1 页 / 共 3 页
字号:
	return umGetNextRowData(UM_USER_TABLENAME, UM_NAME, userLast);}/******************************************************************************//* *	umUserExists()	Returns TRUE if userid exists. */bool_t umUserExists(char_t *user){	a_assert(user && *user);	if (dbSearchStr(didUM, UM_USER_TABLENAME, UM_NAME, user, 0) >= 0) {		return TRUE;	} else {		return FALSE;	}}/******************************************************************************//* *	umGetUserPassword() returns a de-crypted copy of the user password */char_t *umGetUserPassword(char_t *user){	char_t	*password;	int		row;	a_assert(user && *user);	password = NULL;	row = dbSearchStr(didUM, UM_USER_TABLENAME, UM_NAME, user, 0);	if (row >= 0) {		char_t *pass = NULL;		dbReadStr(didUM, UM_USER_TABLENAME, UM_PASS, row, &pass);/* *		Decrypt	password *		Note, this function returns a copy of the password, which must *		be deleted at some time in the future. */		password = bstrdup(B_L, pass);		umEncryptString(password);	}	return password;}/******************************************************************************//* *	umSetUserPassword() updates the user password in the user "table" after *						encrypting the given password */int	umSetUserPassword(char_t *user, char_t *pass){	int		row, nRet;	char_t	*password;	a_assert(user && *user);	a_assert(pass && *pass);	trace(3, T("UM: Attempting to change the password for user <%s>\n"), user);/* *	Find the row of the user */	if ((row = dbSearchStr(didUM, UM_USER_TABLENAME, UM_NAME, user, 0)) < 0) {		return UM_ERR_NOT_FOUND;	}	password = bstrdup(B_L, pass);	umEncryptString(password);	nRet = dbWriteStr(didUM, UM_USER_TABLENAME, UM_PASS, row, password);	bfree(B_L, password);	return nRet;}/******************************************************************************//* *	umGetUserGroup() returns the name of the user group */char_t *umGetUserGroup(char_t *user){	char_t	*group;	int		row;	a_assert(user && *user);	group = NULL;/* *	Find the row of the user */	row = dbSearchStr(didUM, UM_USER_TABLENAME, UM_NAME, user, 0);	if (row >= 0) {		dbReadStr(didUM, UM_USER_TABLENAME, UM_GROUP, row, &group);	}	return group;}/******************************************************************************//* *	umSetUserGroup() Sets the name of the user group for the user */int	umSetUserGroup(char_t *user, char_t *group){	int row;	a_assert(user && *user);	a_assert(group && *group);/* *	Find the row of the user */	row = dbSearchStr(didUM, UM_USER_TABLENAME, UM_NAME, user, 0);	if (row >= 0) {		return dbWriteStr(didUM, UM_USER_TABLENAME, UM_GROUP, row, group);	} else {		return UM_ERR_NOT_FOUND;	}}/******************************************************************************//* *	umGetUserEnabled() - returns if the user is enabled *	Returns FALSE if the user is not found. */bool_t	umGetUserEnabled(char_t *user){	int disabled, row;	a_assert(user && *user);	disabled = 1;/* *	Find the row of the user */	row = dbSearchStr(didUM, UM_USER_TABLENAME, UM_NAME, user, 0);	if (row >= 0) {		dbReadInt(didUM, UM_USER_TABLENAME, UM_DISABLE, row, &disabled);	}	return (bool_t)!disabled;}/******************************************************************************//* *	umSetUserEnabled() Enables/disables the user */int	umSetUserEnabled(char_t *user, bool_t enabled){	int row;	a_assert(user && *user);/* *	Find the row of the user */	row = dbSearchStr(didUM, UM_USER_TABLENAME, UM_NAME, user, 0);	if (row >= 0) {		return dbWriteInt(didUM, UM_USER_TABLENAME, UM_DISABLE, row, !enabled);	} else {		return UM_ERR_NOT_FOUND;	}}/******************************************************************************//* *	umGetUserProtected() - determine deletability of user */bool_t umGetUserProtected(char_t *user){	int protect, row;	a_assert(user && *user);/* *	Find the row of the user */	row = dbSearchStr(didUM, UM_USER_TABLENAME, UM_NAME, user, 0);	protect = FALSE;	if (row >= 0) {		dbReadInt(didUM, UM_USER_TABLENAME, UM_PROT, row, &protect);	}	return (bool_t)protect;}/******************************************************************************//* *	umSetUserProtected() sets the delete protection for the user */int	umSetUserProtected(char_t *user, bool_t protect){	int row;	a_assert(user && *user);/* *	Find the row of the user */	row = dbSearchStr(didUM, UM_USER_TABLENAME, UM_NAME, user, 0);	if (row >= 0) {		return dbWriteInt(didUM, UM_USER_TABLENAME, UM_PROT, row, protect);	} else {		return UM_ERR_NOT_FOUND;	}}/******************************************************************************//* *	umAddGroup() adds a group to the "Group" table */int	umAddGroup(char_t *group, short priv, accessMeth_t am, 			   bool_t prot, bool_t disabled){	int row;	a_assert(group && *group);	trace(3, T("UM: Adding group <%s>\n"), group);	/* *	Do not allow duplicates */	if (umGroupExists(group)) {		return UM_ERR_DUPLICATE;	}/* *	Only allow valid characters in key field */	if (!umCheckName(group)) {		return UM_ERR_BAD_NAME;	}/* *	Add a new row to the table */	if ((row = dbAddRow(didUM, UM_GROUP_TABLENAME)) < 0) {		return UM_ERR_GENERAL;	}/* *	Write the key field */	if (dbWriteStr(didUM, UM_GROUP_TABLENAME, UM_NAME, row, group) != 0) {		return UM_ERR_GENERAL;	}/* *	Write the remaining fields */	dbWriteInt(didUM, UM_GROUP_TABLENAME, UM_PRIVILEGE, row, priv);	dbWriteInt(didUM, UM_GROUP_TABLENAME, UM_METHOD, row, (int) am);	dbWriteInt(didUM, UM_GROUP_TABLENAME, UM_PROT, row, prot);	dbWriteInt(didUM, UM_GROUP_TABLENAME, UM_DISABLE, row, disabled);	return 0;}/******************************************************************************//* *	umDeleteGroup() - Delete a user group, if not protected */int	umDeleteGroup(char_t *group){	int row;	a_assert(group && *group);	trace(3, T("UM: Deleting Group <%s>\n"), group);/* *	Check to see if the group is in use */	if (umGetGroupInUse(group)) {		return UM_ERR_IN_USE;	} /* *	Check to see if the group is delete-protected */	if (umGetGroupProtected(group)) {		return UM_ERR_PROTECTED;	} /* *	Find the row of the group to delete */	if ((row = dbSearchStr(didUM, UM_GROUP_TABLENAME, UM_NAME, group, 0)) < 0) {		return UM_ERR_NOT_FOUND;	}	return dbDeleteRow(didUM, UM_GROUP_TABLENAME, row);}/******************************************************************************//* *	umGroupExists() returns TRUE if group exists, FALSE otherwise */bool_t umGroupExists(char_t *group){	a_assert(group && *group);	if (dbSearchStr(didUM, UM_GROUP_TABLENAME, UM_NAME, group, 0) >= 0) {		return TRUE;	} else {		return FALSE;	}}/******************************************************************************//* *	umGetGroupInUse() returns TRUE if the group is referenced by a user or by *  an access limit. */bool_t umGetGroupInUse(char_t *group){	a_assert(group && *group);/* *	First, check the user table */	if (dbSearchStr(didUM, UM_USER_TABLENAME, UM_GROUP, group, 0) >= 0) {		return TRUE;	} /* *	Second, check the access limit table */	if (dbSearchStr(didUM, UM_ACCESS_TABLENAME, UM_GROUP, group, 0) >= 0) {		return TRUE;	} 	return FALSE;}/******************************************************************************//* *	umGetFirstGroup() - return a pointer to the first non-blank group name */char_t *umGetFirstGroup(){	return umGetFirstRowData(UM_GROUP_TABLENAME, UM_NAME);}/******************************************************************************//* *	umGetNextGroup() -	return a pointer to the first non-blank group name *						following the given group name */char_t *umGetNextGroup(char_t *groupLast){	return umGetNextRowData(UM_GROUP_TABLENAME, UM_NAME, groupLast);}/******************************************************************************//* *	Returns the default access method to use for a given group */accessMeth_t umGetGroupAccessMethod(char_t *group){	int am, row;	a_assert(group && *group);	row = dbSearchStr(didUM, UM_GROUP_TABLENAME, UM_NAME, group, 0);	if (row >= 0) {		dbReadInt(didUM, UM_GROUP_TABLENAME, UM_METHOD, row, (int *)&am);	} else {		am = AM_INVALID;	}	return (accessMeth_t) am;}/******************************************************************************//* *	Set the default access method to use for a given group */int	umSetGroupAccessMethod(char_t *group, accessMeth_t am){	int row;	a_assert(group && *group);	row = dbSearchStr(didUM, UM_GROUP_TABLENAME, UM_NAME, group, 0);	if (row >= 0) {		return dbWriteInt(didUM, UM_GROUP_TABLENAME, UM_METHOD, row, (int) am);	} else {		return UM_ERR_NOT_FOUND;	}}/******************************************************************************//* *	Returns the privilege mask for a given group */short umGetGroupPrivilege(char_t *group){	int privilege, row;	a_assert(group && *group);	privilege = -1;	row = dbSearchStr(didUM, UM_GROUP_TABLENAME, UM_NAME, group, 0);	if (row >= 0) {		dbReadInt(didUM, UM_GROUP_TABLENAME, UM_PRIVILEGE, row, &privilege);	}	return (short) privilege;}/******************************************************************************//* *	Set the privilege mask for a given group */int	umSetGroupPrivilege(char_t *group, short privilege){	int row;	a_assert(group && *group);	row = dbSearchStr(didUM, UM_GROUP_TABLENAME, UM_NAME, group, 0);	if (row >= 0) {		return dbWriteInt(didUM, UM_GROUP_TABLENAME, UM_PRIVILEGE, row, 			(int)privilege);	} else {		return UM_ERR_NOT_FOUND;	}}/******************************************************************************//* *	Returns the enabled setting for a given group. *	Returns FALSE if group is not found. */bool_t umGetGroupEnabled(char_t *group){	int disabled, row;	a_assert(group && *group);	row = dbSearchStr(didUM, UM_GROUP_TABLENAME, UM_NAME, group, 0);	disabled = 1;	if (row >= 0) {		dbReadInt(didUM, UM_GROUP_TABLENAME, UM_DISABLE, row, &disabled);	}	return (bool_t) !disabled;}/******************************************************************************//* *	Sets the enabled setting for a given group. */int umSetGroupEnabled(char_t *group, bool_t enabled){	int row;

⌨️ 快捷键说明

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