📄 lan_ip_modifyuserop.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 + -