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

📄 lan_ip_modifyuserop.c

📁 计费部分源程序。我认为该软件极好
💻 C
字号:
/**************************************************************************************
			融海Intranet用户管理系统
修改用户信息.
修改用户组ID,密码,类型和剩余数据量
注意:当该用户在上网时,修改用户组ID,密码,类型将失败。
**************************************************************************************/
#include "lan_ip_jf-cgi.h"


int opType;/*用户选择的操作类型*/
int bakOpType;/*用户选择的操作类型*/

/*
处理从用户进程来的消息
UM---User Managemant
*/
void RecieveMessageFromUM()
{
	int rtn;
	rtn = msgrcv(CGIInMessageID, &CGIInMessage, sizeof(struct msg_scs), pid, 0); 

	if (rtn <= 0)
		exit(1);
	if (CGIInMessage.command == MODIFY_USER_SUCCESS)
		exit(0);
	exit(1);
}
/*
处理发送给用户进程的消息
*/
void SendMessageToUM()
{
	int rtn;
	rtn = msgsnd(CGIOutMessageID, &CGIOutMessage,sizeof (struct msg_scs), 0); 
	if (rtn == 0)
	{
		RecieveMessageFromUM();
		return;
	}

	exit(1);
}

/*
产生错误信息,并返回给用户
*/
void ErrorInfo(int no)
{
	exit(no);
}
/*
得到用户选择的操作类型
*/
int GetOpType(char* str)
{
	if (str == NULL)
		return -1;
	if (strcmp(str,"changeGroupID") == 0)
		return MODIFY_USER_GROUPID;/*修改用户的组ID操作*/
	if (strcmp(str,"changepass") == 0)
		return MODIFY_USER_PASS;/*修改密码操作*/
	if (strcmp(str,"changeType") == 0)
		return MODIFY_USER_LEVEL;/*修改用户的级别*/
	if (strcmp(str,"changeData") == 0)
		return ADD_USER_DATA;/*修改用户的可用字节数*/
	return -1;
}
/*
主程序开始
参数1:userName
参数2:password
*/
int main(argc,argv)
int argc;
char** argv;
{
	char userName[USER_NAME_LEN];
	char ipAddr[20];
	char *groupIDStr;
	char newPassword1[USER_PASS_LEN];
	char newPassword2[USER_PASS_LEN];
	char startDate[DATE_LEN],endDate[DATE_LEN];
	char remainDataStr[20];
	char* opstr = "changepass";
	char* use;
	int level,groupID;
	long remainData;


	/*得到应用程序所在的路径PATH和本机的IP地址HOSTIP*/
	GetPATHAndHOSTIPFromFile();

	opType = GetOpType(opstr);
	bakOpType = opType;
	TangStrncpy(userName,argv[1],USER_NAME_LEN);
	/*检查用户名*/
	if (CheckString(userName) == 0)
		exit(1);

	/*初始化消息结构*/
	InitMessage();
	/*得到本进程的ID号*/
	pid = getpid();

	if (opType == -1)
	{
		exit(1);
	}
	switch (opType)
	{
		case MODIFY_USER_GROUPID:/*修改用户的组ID操作*/
			/*
			字符串格式:username|groupID
			*/
			groupIDStr = argv[2];
			/*检查组ID*/
			if (groupIDStr == NULL)
				exit(1);
			groupID = GetGroupIDByName(groupIDStr);

			CGIOutMessage.mtype = pid;
			CGIOutMessage.command = MODIFY_USER_GROUPID;
			sprintf(CGIOutMessage.value,"%s|%d",userName,groupID);
			
			break;
		case MODIFY_USER_PASS:/*修改密码操作*/
			/*
			字符串格式:0|username|password
			*/
			TangStrncpy(newPassword1,argv[2],USER_PASS_LEN);
			TangStrncpy(newPassword2,argv[2],USER_PASS_LEN);
			/*检查2个新密码是否一致*/
			if (strcmp(newPassword1,newPassword2) != 0)
				exit(1);
			CGIOutMessage.mtype = pid;
			CGIOutMessage.command = MODIFY_USER_PASS;
			sprintf(CGIOutMessage.value,"0|%s|%s",userName,newPassword1);

			break;
		case MODIFY_USER_LEVEL:/*修改用户的级别*/
			/*
			字符串格式:username|level
			*/
			/*设置用户的级别level*/
			use = argv[2];
			if ((use != NULL) && (strcmp(use,"NoLimitUse") == 0))
			{
				level = SUPPER_USER;
			}
			else level = NORMAL_USER;
			CGIOutMessage.mtype = pid;
			CGIOutMessage.command = MODIFY_USER_LEVEL;
			sprintf(CGIOutMessage.value,"%s|%d",userName,level);

			break;
		case ADD_USER_DATA:/*修改用户的可用字节数*/
			/*
			字符串格式:username|remainData
			*/
			TangStrncpy(remainDataStr,argv[2],20);
			/*检查剩余数据域是否为空*/
			if (CheckString(remainDataStr) == 0)
				exit(1);
			remainData = atol(remainDataStr);
			CGIOutMessage.mtype = pid;
			CGIOutMessage.command = ADD_USER_DATA;
			sprintf(CGIOutMessage.value,"%s|%ld",userName,remainData);

			break;
		default:
			exit(1); 

	}

	/*发送命令给用户管理进程*/
	SendMessageToUM();

	exit(0);
}

⌨️ 快捷键说明

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