📄 lan_ip_adduser.c
字号:
/**************************************************************************************
融海Intranet登录系统
发送给用户管理进程的字符串格式:
userID|userName|userPassword|groupID|remainData|level|flag||address Num|Address Type|Ip or Net Address|Net Mask|....
**************************************************************************************/
#include "lan_ip_jf-cgi.h"
/************************************************************
following is for massege comunication
以下程序用于进行消息通讯
************************************************************/
/*
处理从用户进程来的消息
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 == ADD_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);
}
/*
主程序开始
参数1:userName
参数2:password
参数3:groupName
*/
int main(argc,argv)
int argc;
char** argv;
{
char userID[10];
char userName[USER_NAME_LEN];
char *groupIDStr;
char userPassword[USER_PASS_LEN];
char newPassword1[USER_PASS_LEN];
char newPassword2[USER_PASS_LEN];
char ipAddr[20],LimitPlace1[20],LimitPlace2[20];
char LimitMask1[20] = "192.0.2.255";
char LimitMask2[20] = "192.0.2.255";
char remainDataStr[20];
char tmpStr[20];
char* place;
char* use = "NoLimitUse";
int groupID;
int flag = 0;
int level = 0;
int place1 = 0,place2 = 0;/*代表两个地址是否合法*/
/*得到应用程序所在的路径PATH和本机的IP地址HOSTIP*/
GetPATHAndHOSTIPFromFile();
TangStrncpy(userName, argv[1],USER_NAME_LEN);
groupIDStr = argv[3];
TangStrncpy(newPassword1,argv[2],USER_PASS_LEN);
TangStrncpy(newPassword2,argv[2],USER_PASS_LEN);
TangStrncpy(remainDataStr,"0",20);
/*检查用户名*/
if (CheckString(userName) == 0)
exit(1);
/*检查组ID*/
if (groupIDStr == NULL)
exit(1);
groupID = GetGroupIDByName(groupIDStr);
/*检查2个新密码是否一致*/
if (strcmp(newPassword1,newPassword2) != 0)
exit(1);
/*设置用户的级别level*/
if ((use != NULL) && (strcmp(use,"NoLimitUse") == 0))
{
level = SUPPER_USER;
}
else level = NORMAL_USER;
/*设置用户的标识flag*/
/*
TangStrncpy(LimitPlace1,cgiFormGetVal("LimitPlace1"),20);
TangStrncpy(LimitPlace2,cgiFormGetVal("LimitPlace2"),20);
place = cgiFormGetVal("Place");
if (strcmp(place,"LimitPlace") == 0)
{
flag |= LIMIT_LOGIN_LOCATION;/*限制用户在某些地址登陆;
/*判断两个地址是否合法
place1 = CheckIp(LimitPlace1);
place2 = CheckIp(LimitPlace1);
}
*/
/*初始化消息结构*/
InitMessage();
/*得到本进程的ID号*/
pid = getpid();
/*增加用户*/
/*发送命令给用户管理进程*/
/*
发送给用户管理进程的字符串格式:
userID|userName|userPassword|groupID|remainData|level|flag||address Num|Address Type|Ip or Net Address|Net Mask|....
*/
CGIOutMessage.mtype = pid;
CGIOutMessage.command = ADD_USER;
sprintf(CGIOutMessage.value,"1|%s|%s|%d|%s|%d|%d|%d",userName,newPassword1,groupID,remainDataStr,level,flag,place1+place2);
/*
if (flag & LIMIT_LOGIN_LOCATION)
{
if (place1)
{
sprintf(tmpStr,"%s|%s|%s","1",LimitPlace1,LimitMask1);
strcat(CGIOutMessage.value,tmpStr);
}
if (place2)
{
sprintf(tmpStr,"%s|%s|%s","1",LimitPlace2,LimitMask2);
strcat(CGIOutMessage.value,tmpStr);
}
}
*/
SendMessageToUM();
exit(1);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -