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

📄 lan_ip_adduser.c

📁 计费部分源程序。我认为该软件极好
💻 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 + -