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

📄 umui.c

📁 一个典型的用于嵌入式Linux环境的Webserver
💻 C
📖 第 1 页 / 共 2 页
字号:
/* * umui.c -- User Management GoForm Processing * * Copyright (c) GoAhead Software Inc., 1995-2000. All Rights Reserved. * * See the file "license.txt" for usage and redistribution license requirements * *	$Id: umui.c,v 1.2 2002/10/24 14:44:50 bporter Exp $ *//******************************** Description *********************************//* *	This module provides GoForm functions for User management *//********************************* Includes ***********************************/#include	"wsIntrn.h"#include	"um.h"/********************************* Defines ************************************/#define		NONE_OPTION		T("<NONE>")#define		MSG_START		T("<body><h2>")#define		MSG_END			T("</h2></body>")/**************************** Forward Declarations ****************************/static void		formAddUser(webs_t wp, char_t *path, char_t *query);static void		formDeleteUser(webs_t wp, char_t *path, char_t *query);static void		formDisplayUser(webs_t wp, char_t *path, char_t *query);static int		aspGenerateUserList(int eid, webs_t wp, 									int argc, char_t **argv);static void		formAddGroup(webs_t wp, char_t *path, char_t *query);static void		formDeleteGroup(webs_t wp, char_t *path, char_t *query);static int		aspGenerateGroupList(int eid, webs_t wp, 									 int argc, char_t **argv);static void		formAddAccessLimit(webs_t wp, char_t *path, char_t *query);static void		formDeleteAccessLimit(webs_t wp, char_t *path, char_t *query);static int		aspGenerateAccessLimitList(int eid, webs_t wp, 										   int argc, char_t **argv);static int		aspGenerateAccessMethodList(int eid, webs_t wp, 											int argc, char_t **argv);static int		aspGeneratePrivilegeList(int eid, webs_t wp, 										 int argc, char_t **argv);static void		formSaveUserManagement(webs_t wp, char_t *path, char_t *query);static void		formLoadUserManagement(webs_t wp, char_t *path, char_t *query);static void		websMsgStart(webs_t wp);static void		websMsgEnd(webs_t wp);/*********************************** Code *************************************//* *	Set up the User Management form handlers */void formDefineUserMgmt(void){	websAspDefine(T("MakeGroupList"), aspGenerateGroupList);	websAspDefine(T("MakeUserList"), aspGenerateUserList);	websAspDefine(T("MakeAccessLimitList"), aspGenerateAccessLimitList);	websAspDefine(T("MakeAccessMethodList"), aspGenerateAccessMethodList);	websAspDefine(T("MakePrivilegeList"), aspGeneratePrivilegeList);	websFormDefine(T("AddUser"), formAddUser);	websFormDefine(T("DeleteUser"), formDeleteUser);	websFormDefine(T("DisplayUser"), formDisplayUser);	websFormDefine(T("AddGroup"), formAddGroup);	websFormDefine(T("DeleteGroup"), formDeleteGroup);	websFormDefine(T("AddAccessLimit"), formAddAccessLimit);	websFormDefine(T("DeleteAccessLimit"), formDeleteAccessLimit);	websFormDefine(T("SaveUserManagement"), formSaveUserManagement);	websFormDefine(T("LoadUserManagement"), formLoadUserManagement);}/******************************************************************************//* *  Add a user */static void formAddUser(webs_t wp, char_t *path, char_t *query){	char_t	*userid, *pass1, *pass2, *group, *enabled, *ok;	bool_t bDisable;	int	nCheck;	a_assert(wp);	userid = websGetVar(wp, T("user"), T("")); 	pass1 = websGetVar(wp, T("password"), T("")); 	pass2 = websGetVar(wp, T("passconf"), T("")); 	group = websGetVar(wp, T("group"), T("")); 	enabled = websGetVar(wp, T("enabled"), T("")); 	ok = websGetVar(wp, T("ok"), T("")); 	websHeader(wp);	websMsgStart(wp);	if (gstricmp(ok, T("ok")) != 0) {		websWrite(wp, T("Add User Cancelled"));	} else if (gstrcmp(pass1, pass2) != 0) {		websWrite(wp, T("Confirmation Password did not match."));	} else {		if (enabled && *enabled && (gstrcmp(enabled, T("on")) == 0)) {			bDisable = FALSE;		} else {			bDisable = TRUE;		}		nCheck = umAddUser(userid, pass1, group, 0, bDisable);		if (nCheck != 0) {			char_t * strError;			switch (nCheck) {			case UM_ERR_DUPLICATE:				strError = T("User already exists.");				break;			case UM_ERR_BAD_NAME:				strError = T("Invalid user name.");				break;			case UM_ERR_BAD_PASSWORD:				strError = T("Invalid password.");				break;			case UM_ERR_NOT_FOUND:				strError = T("Invalid or unselected group.");				break;			default:				strError = T("Error writing user record.");				break;			}			websWrite(wp, T("Unable to add user, \"%s\".  %s"),				userid, strError);		} else {			websWrite(wp, T("User, \"%s\" was successfully added."),				userid);		}	}	websMsgEnd(wp);	websFooter(wp);	websDone(wp, 200);}/******************************************************************************//* *  Delete a user */static void formDeleteUser(webs_t wp, char_t *path, char_t *query){	char_t	*userid, *ok;	a_assert(wp);	userid = websGetVar(wp, T("user"), T("")); 	ok = websGetVar(wp, T("ok"), T("")); 	websHeader(wp);	websMsgStart(wp);	if (gstricmp(ok, T("ok")) != 0) {		websWrite(wp, T("Delete User Cancelled"));	} else if (umUserExists(userid) == FALSE) {		websWrite(wp, T("ERROR: User \"%s\" not found"), userid);	} else if (umGetUserProtected(userid)) {		websWrite(wp, T("ERROR: User, \"%s\" is delete-protected."), userid);	} else if (umDeleteUser(userid) != 0) {		websWrite(wp, T("ERROR: Unable to delete user, \"%s\" "), userid);	} else {		websWrite(wp, T("User, \"%s\" was successfully deleted."), userid);	}	websMsgEnd(wp);	websFooter(wp);	websDone(wp, 200);}/******************************************************************************//* *  Display the user info */static void formDisplayUser(webs_t wp, char_t *path, char_t *query){	char_t	*userid, *ok, *temp;	bool_t	enabled;	a_assert(wp);	userid = websGetVar(wp, T("user"), T("")); 	ok = websGetVar(wp, T("ok"), T("")); 	websHeader(wp);	websWrite(wp, T("<body>"));	if (gstricmp(ok, T("ok")) != 0) {		websWrite(wp, T("Display User Cancelled"));	} else if (umUserExists(userid) == FALSE) {		websWrite(wp, T("ERROR: User <b>%s</b> not found.\n"), userid);	} else {		websWrite(wp, T("<h2>User ID: <b>%s</b></h2>\n"), userid);		temp = umGetUserGroup(userid);		websWrite(wp, T("<h3>User Group: <b>%s</b></h3>\n"), temp);		enabled = umGetUserEnabled(userid);		websWrite(wp, T("<h3>Enabled: <b>%d</b></h3>\n"), enabled);	}	websWrite(wp, T("</body>\n"));	websFooter(wp);	websDone(wp, 200);}/******************************************************************************//* *  Generate HTML to create a list box containing the users */static int aspGenerateUserList(int eid, webs_t wp, int argc, char_t **argv){	char_t	*userid;	int		row, nBytesSent, nBytes;	a_assert(wp);	nBytes = websWrite(wp, 		T("<SELECT NAME=\"user\" SIZE=\"3\" TITLE=\"Select a User\">"));	row = 0;	userid = umGetFirstUser();	nBytesSent = 0;	while (userid && (nBytes > 0)) {		nBytes = websWrite(wp, T("<OPTION VALUE=\"%s\">%s\n"), 			userid, userid);		userid = umGetNextUser(userid);		nBytesSent += nBytes;	}	nBytesSent += websWrite(wp, T("</SELECT>"));	return nBytesSent;}/******************************************************************************//* *  Add a group */static void formAddGroup(webs_t wp, char_t *path, char_t *query){	char_t			*group, *enabled, *privilege, *method, *ok, *pChar;	int				nCheck;	short			priv;	accessMeth_t	am;	bool_t			bDisable;	a_assert(wp);	group = websGetVar(wp, T("group"), T("")); 	method = websGetVar(wp, T("method"), T("")); 	enabled = websGetVar(wp, T("enabled"), T("")); 	privilege = websGetVar(wp, T("privilege"), T("")); 	ok = websGetVar(wp, T("ok"), T("")); 	websHeader(wp);	websMsgStart(wp);	if (gstricmp(ok, T("ok")) != 0) {		websWrite(wp, T("Add Group Cancelled."));	} else if ((group == NULL) || (*group == 0)) {		websWrite(wp, T("No Group Name was entered."));	} else if (umGroupExists(group)) {		websWrite(wp, T("ERROR: Group, \"%s\" already exists."), group);	} else {		if (privilege && *privilege) {/* *			privilege is a mulitple <SELECT> var, and must be parsed. *			Values for these variables are space delimited. */			priv = 0;			for (pChar = privilege; *pChar; pChar++) {				if (*pChar == ' ') {					*pChar = '\0';					priv |= gatoi(privilege);					*pChar = ' ';					privilege = pChar + 1;				}			}			priv |= gatoi(privilege);		} else {			priv = 0;		}		if (method && *method) {			am = (accessMeth_t) gatoi(method);		} else {			am = AM_FULL;		}		if (enabled && *enabled && (gstrcmp(enabled, T("on")) == 0)) {			bDisable = FALSE;		} else {			bDisable = TRUE;		}		nCheck = umAddGroup(group, priv, am, 0, bDisable);		if (nCheck != 0) {			websWrite(wp, T("Unable to add group, \"%s\", code: %d "),				group, nCheck);		} else {			websWrite(wp, T("Group, \"%s\" was successfully added."), 

⌨️ 快捷键说明

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