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

📄 opendhcpd.cpp

📁 Linux下的DHCP服务器程序源代码, 实现DHCP Server端协议
💻 CPP
📖 第 1 页 / 共 5 页
字号:
		{			if (target != dp)			{				*dp = 0;				dp++;			}			kount++;		}		found = false;		*dp = *source;		dp++;		source++;	}	*dp = 0;	dp++;	*dp = 0;	//printf("%s\n", target);	return kount;}char* myTrim(char *target, char *source){	while ((*source) && (*source) <= 32)		source++;	int i = 0;	for (; i < 511 && source[i]; i++)		target[i] = source[i];	target[i] = source[i];	i--;	for (; i >= 0 && target[i] <= 32; i--)		target[i] = 0;	return target;}void mySplit(char *name, char *value, char *source, char splitChar){	int i = 0;	int j = 0;	int k = 0;	for (; source[i] && j <= 510 && source[i] != splitChar; i++, j++)	{		name[j] = source[i];	}	if (source[i])	{		i++;		for (; k <= 510 && source[i]; i++, k++)		{			value[k] = source[i];		}	}	name[j] = 0;	value[k] = 0;	myTrim(name, name);	myTrim(value, value);	//printf("%s %s\n", name, value);}char *strqtype(char *buff, BYTE qtype){	switch (qtype)	{		case 1:			strcpy(buff, "A");			break;		case 2:			strcpy(buff, "NS");			break;		case 3:			strcpy(buff, "MD");			break;		case 4:			strcpy(buff, "MF");			break;		case 5:			strcpy(buff, "CNAME");			break;		case 6:			strcpy(buff, "SOA");			break;		case 7:			strcpy(buff, "MB");			break;		case 8:			strcpy(buff, "MG");			break;		case 9:			strcpy(buff, "MR");			break;		case 10:			strcpy(buff, "NULL");			break;		case 11:			strcpy(buff, "WKS");			break;		case 12:			strcpy(buff, "PTR");			break;		case 13:			strcpy(buff, "HINFO");			break;		case 14:			strcpy(buff, "MINFO");			break;		case 15:			strcpy(buff, "MX");			break;		case 16:			strcpy(buff, "TXT");			break;		case 28:			strcpy(buff, "AAAA");			break;		case 251:			strcpy(buff, "IXFR");			break;		case 252:			strcpy(buff, "AXFR");			break;		case 253:			strcpy(buff, "MAILB");			break;		case 254:			strcpy(buff, "MAILA");			break;		default:			strcpy(buff, "ANY");			break;	}	return buff;}WORD listSections(char *buffer, int sizeofbuffer, char *fileName){	WORD kount = 0;	char buff[512];	FILE *f = fopen(fileName, "rt");	while (f && fgets(buff, 511, f))	{		if (strchr(buff, '[') == buff)		{			char *secend = strchr(buff, ']');			if (secend)			{				*secend = 0;				buffer += sprintf(buffer, "%s", &buff[1]);				buffer++;				kount++;			}		}	}	if (f)		fclose(f);	else if (iniFile[0])	{		sprintf(logBuff, "Warning: Failed to open ini File %s", iniFile);		logMess(logBuff, 1);	}	*buffer = 0;	buffer++;	*buffer = 0;	return kount;}bool getSection(char *sectionName, char *buffer, BYTE serial, char *fileName){	//printf("%s=%s\n",fileName,sectionName);	char section[128];	sprintf(section, "[%s]", sectionName);	myUpper(section);	FILE *f = fopen(fileName, "rt");	char buff[512];	BYTE found = 0;	if (f)	{		while (fgets(buff, 511, f))		{			myUpper(buff);			myTrim(buff, buff);			if (strstr(buff, section) == buff)			{				found++;				if (found == serial)				{					//printf("%s=%s\n",fileName,sectionName);					while (fgets(buff, 511, f))					{						myTrim(buff, buff);						if (strstr(buff, "[") == buff)							break;						if ((*buff) >= '0' && (*buff) <= '9' || (*buff) >= 'A' && (*buff) <= 'Z' || (*buff) >= 'a' && (*buff) <= 'z' || ((*buff) && strchr("/\\?*", (*buff))))						{							buffer += sprintf(buffer, "%s", buff);							buffer++;						}					}					break;				}			}		}		fclose(f);	}	*buffer = 0;	*(buffer + 1) = 0;	return (found == serial);}DWORD getClassNetwork(DWORD ip){	data15 data;	data.ip = ip;	data.octate[3] = 0;	if (data.octate[0] < 192)		data.octate[2] = 0;	if (data.octate[0] < 128)		data.octate[1] = 0;	return data.ip;}/*char *IP2Auth(DWORD ip){data15 data;data.ip = ip;if (data.octate[0] >= 192)sprintf(tempbuff, "%u.%u.%u", data.octate[2], data.octate[1], data.octate[0]);else if (data.octate[0] >= 128)sprintf(tempbuff, "%u.%u", data.octate[1], data.octate[0]);elsesprintf(tempbuff, "%u", data.octate[0]);strcat(tempbuff, arpa);return tempbuff;}*/char *IP2String(char *target, DWORD ip){	data15 inaddr;	inaddr.ip = ip;	sprintf(target, "%u.%u.%u.%u", inaddr.octate[0], inaddr.octate[1], inaddr.octate[2], inaddr.octate[3]);	return target;}bool addServer(DWORD *array, DWORD ip){	for (BYTE i = 0; i < MAX_SERVERS; i++)	{		if (!ip || array[i] == ip)			return 0;		else if (!array[i])		{			array[i] = ip;			return 1;		}	}	return 0;}DWORD *findServer(DWORD *array, DWORD ip){	if (ip)	{		for (BYTE i = 0; i < MAX_SERVERS && array[i]; i++)		{			if (array[i] == ip)				return &(array[i]);		}	}	return 0;}bool isIP(char *string){	int j = 0;	for (; *string; string++)	{		if (*string == '.')			j++;		else if (*string < '0' || *string > '9')			return 0;	}	if (j == 3)		return 1;	else		return 0;}char *toBase64(BYTE *source, BYTE length){	BYTE a = 0, b = 0, i = 0;	char *t = tempbuff;	for (; length; length--, source++)	{		i += 2;		a = (*source) >> i;		*t = base64[a + b];		t++;		b = (*source) << (8 - i);		b >>= 2;		if (i == 6)		{			*t = base64[b];			t++;			i = b = 0;		}	}	if (i)	{		*t = base64[b];		t++;	}	*t = 0;	//printf("%s\n",tempbuff);	return tempbuff;}BYTE getBaseValue(BYTE a){	if (a >= 'A' && a <= 'Z')		a -= 'A';	else if (a >= 'a' && a <= 'z')		a = a - 'a' + 26;	else if (a >= '0' && a <= '9')		a = a - '0' + 52;	else if (a == '+')		a = 62;	else if (a == '/')		a = 63;	else		a = 255;	return a;}BYTE fromBase64(BYTE *target, char *source){	//printf("SOURCE=%s\n", source);	BYTE b = 0;	BYTE shift = 4;	BYTE bp_hlen = (3*strlen(source))/4;	if (*source)	{		b = getBaseValue(*source);		*target = b << 2;		source++;		while (*source)		{			b = getBaseValue(*source);			(*target) += (b >> (8 - shift));			target++;			(*target) = (b << shift);			shift += 2;			if (shift > 8)			{				source++;				if (*source)				{					b = getBaseValue(*source);					*target = b << 2;					shift = 4;				}				else					break;			}			source++;		}	}	//printf("SIZE=%u\n", bp_hlen);	return bp_hlen;}char *hex2String(char *target, BYTE *hex, BYTE bytes, char sepChar){	char *dp = target;	dp += sprintf(target, "%02x", *hex);	for (int i = 1; i < bytes; i++)		if (sepChar)			dp += sprintf(dp, "%c%02x", sepChar, *(hex + i));		else			dp += sprintf(dp, "%02x", *(hex + i));	return target;}char *IP62String(char *target, BYTE *hex){	BYTE i = 0;	*target = 0;	bool thisZero = false;	bool prevZero = false;	char *dp;	while (true)	{		prevZero = thisZero;		thisZero = true;		if (*(hex + i))		{			thisZero = false;			dp = target + strlen(target);			sprintf(dp, "%x", *(hex + i));		}		i++;		if (*(hex + i))		{			thisZero = false;			dp = target + strlen(target);			sprintf(dp, "%x", *(hex + i));		}		i++;		if (i >= 15)			break;		if (!thisZero || !prevZero)		{			dp = target + strlen(target);			strcat(dp, ":");		}	}	return target;}char *getHexValue(BYTE *target, char *source, BYTE *size){	if (*size)		memset(target, 0, (*size));	for ((*size) = 0; (*source) && (*size) < UCHAR_MAX; (*size)++, target++)	{		if ((*source) >= '0' && (*source) <= '9')		{			(*target) = (*source) - '0';		}		else if ((*source) >= 'a' && (*source) <= 'f')		{			(*target) = (*source) - 'a' + 10;		}		else if ((*source) >= 'A' && (*source) <= 'F')		{			(*target) = (*source) - 'A' + 10;		}		else		{			return source;		}		source++;		if ((*source) >= '0' && (*source) <= '9')		{			(*target) *= 16;			(*target) += ((*source) - '0');		}		else if ((*source) >= 'a' && (*source) <= 'f')		{			(*target) *= 16;			(*target) += (((*source) - 'a') + 10);		}		else if ((*source) >= 'A' && (*source) <= 'F')		{			(*target) *= 16;			(*target) += (((*source) - 'A') + 10);		}		else if ((*source) == ':')		{			source++;			continue;		}		else if (*source)		{			return source;		}		else		{			continue;		}		source++;		if ((*source) == ':')		{			source++;		}		else if (*source

⌨️ 快捷键说明

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