亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? dualserver.cpp

?? Combined DHCP/DNS Server. DHCP Server allots addresses and DNS Server first try resolving from DHCP
?? CPP
?? 第 1 頁 / 共 5 頁
字號:

						if (FD_ISSET(cfig.forwConn.sock, &readfds))
						{
							if (frdnmess(&dnsr))
							{
								sdnmess(&dnsr);
								if (cfig.logLevel == 2)
								{
									if (dnsr.dnsp->header.ancount)
										sprintf(logBuff, "%s resolved from Forwarding server as %s", dnsr.query, getResult(dnsr.dnsp));
									else
										sprintf(logBuff, "%s not found by Forwarding Server", dnsr.query, getResult(dnsr.dnsp));

									logMess(logBuff, 2);
								}
							}
						}

					}
				}

				if (zoneChanged)
				{
					cacheInd = 1 - cacheInd;
					zoneChanged = false;
				}
			}
			while (WaitForSingleObject(stopServiceEvent, 0) == WAIT_TIMEOUT);
		}
		else
		{
			serviceStatus.dwWin32ExitCode = ERROR_SERVICE_SPECIFIC_ERROR;
			serviceStatus.dwServiceSpecificExitCode = 1;
		}

		serviceStatus.dwCurrentState = SERVICE_STOP_PENDING;
		SetServiceStatus(serviceStatusHandle, &serviceStatus);

		if (dhcpService)
		{
			for (int i = 0; i < MAX_SERVERS && cfig.dhcpConn[i].server; i++)
				closesocket(cfig.dhcpConn[i].sock);

			if (cfig.replication)
				closesocket(cfig.dhcpReplConn.sock);
		}

		if (dnsService)
		{
			for (int i = 0; i < MAX_SERVERS && cfig.dnsUdpConn[i].server; i++)
				closesocket(cfig.dnsUdpConn[i].sock);

			for (int i = 0; i < MAX_SERVERS && cfig.dnsTcpConn[i].server; i++)
				closesocket(cfig.dnsTcpConn[i].sock);

			closesocket(cfig.forwConn.sock);
		}

		WSACleanup();

		CloseHandle(stopServiceEvent);
		stopServiceEvent = 0;

		serviceStatus.dwControlsAccepted &= ~(SERVICE_ACCEPT_STOP | SERVICE_ACCEPT_SHUTDOWN);
		serviceStatus.dwCurrentState = SERVICE_STOPPED;
		SetServiceStatus(serviceStatusHandle, &serviceStatus);
	}
}

void runService()
{
	SERVICE_TABLE_ENTRY serviceTable[] =
	    {
	        {serviceName, ServiceMain},
	        {0, 0}
	    };

	StartServiceCtrlDispatcher(serviceTable);
}

bool stopService(SC_HANDLE service)
{
	if (service)
	{
		SERVICE_STATUS serviceStatus;
		QueryServiceStatus(service, &serviceStatus);
		if (serviceStatus.dwCurrentState != SERVICE_STOPPED)
		{
			ControlService(service, SERVICE_CONTROL_STOP, &serviceStatus);
			printf("Stopping Service.");
			for (int i = 0; i < 100; i++)
			{
				QueryServiceStatus(service, &serviceStatus);
				if (serviceStatus.dwCurrentState == SERVICE_STOPPED)
				{
					printf("Stopped\n");
					return true;
				}
				else
				{
					Sleep(500);
					printf(".");
				}
			}
			printf("Failed\n");
			return false;
		}
	}
	return true;
}

void installService()
{
	SC_HANDLE serviceControlManager = OpenSCManager(0, 0, SC_MANAGER_CREATE_SERVICE);

	if (serviceControlManager)
	{
		SC_HANDLE service = OpenService(serviceControlManager,
		                                serviceName, SERVICE_QUERY_STATUS);
		if (service)
		{
			printf("Service Already Exists..\n");
			CloseServiceHandle(service);
		}
		else
		{
			TCHAR path[ _MAX_PATH + 1 ];
			if (GetModuleFileName(0, path, sizeof(path) / sizeof(path[0])) > 0)
			{
				SC_HANDLE service = CreateService(serviceControlManager,
				                                  serviceName, displayName,
				                                  SERVICE_ALL_ACCESS, SERVICE_WIN32_OWN_PROCESS,
				                                  SERVICE_AUTO_START, SERVICE_ERROR_IGNORE, path,
				                                  0, 0, 0, 0, 0);
				if (service)
				{
					printf("Successfully installed.. !\n");
					CloseServiceHandle(service);
					//runService();
				}
				else
					printf("Installation Failed..\n");
			}
		}
		CloseServiceHandle(serviceControlManager);
	}
}

void uninstallService()
{
	SC_HANDLE serviceControlManager = OpenSCManager(0, 0, SC_MANAGER_CONNECT);

	if (serviceControlManager)
	{
		SC_HANDLE service = OpenService(serviceControlManager,
		                                serviceName, SERVICE_QUERY_STATUS | SERVICE_STOP | DELETE);
		if (service)
		{
			if (stopService(service))
			{
				DeleteService(service);
				printf("Successfully Removed !\n");
			}
			else
				printf("Failed to Stop Service..\n");

			CloseServiceHandle(service);
		}
		else
			printf("Service Not Found..\n");

		CloseServiceHandle(serviceControlManager);
	}
}

int main(int argc, TCHAR* argv[])
{
	OSVERSIONINFO osvi;
	osvi.dwOSVersionInfoSize = sizeof(osvi);
	bool result = GetVersionEx(&osvi);

	if (result && osvi.dwPlatformId >= VER_PLATFORM_WIN32_NT)
	{
		if (argc > 1 && lstrcmpi(argv[1], TEXT("-i")) == 0)
		{
			installService();
		}
		else if (argc > 1 && lstrcmpi(argv[1], TEXT("-u")) == 0)
		{
			uninstallService();
		}
		else if (argc > 1 && lstrcmpi(argv[1], TEXT("-v")) == 0)
		{
			SC_HANDLE serviceControlManager = OpenSCManager(0, 0, SC_MANAGER_CONNECT);
			bool serviceStopped = true;

			if (serviceControlManager)
			{
				SC_HANDLE service = OpenService(serviceControlManager,
				                                serviceName, SERVICE_QUERY_STATUS | SERVICE_STOP);
				if (service)
				{
					serviceStopped = stopService(service);
					CloseServiceHandle(service);
				}
				CloseServiceHandle(serviceControlManager);
			}

			if (serviceStopped)
				runProg();
			else
				printf("Failed to Stop Service\n");
		}
		else
			runService();
	}
	else if (argc == 1 || lstrcmpi(argv[1], TEXT("-v")) == 0)
		runProg();
	else
		printf("This option is not available on Windows95/98/ME\n");

	return 0;
}

void runProg()
{
	//printf("%i\n",time(NULL));
	//printf("%i\n",sizeof(data7));
	//printf("%d\n",dnsCache[cacheInd].max_size());
	verbatim = true;
	init();
	data1 dhcpr;
	data5 dnsr;
	tv.tv_sec = 20;
	tv.tv_usec = 0;

	if (cfig.dhcpConn[0].server || cfig.dnsUdpConn[0].server)
	{
		while (true)
		{
			//printf("Cache1=%u Cache2=%u Expiry=%u dhcp=%u\n", dnsCache[0].size(),dnsCache[1].size(),dnsAge.size(),dhcpCache.size());

			FD_ZERO(&readfds);

			if (dhcpService)
				for (int i = 0; i < MAX_SERVERS && cfig.dhcpConn[i].server; i++)
					FD_SET(cfig.dhcpConn[i].sock, &readfds);

			if (dnsService)
			{
				for (int i = 0; i < MAX_SERVERS && cfig.dnsUdpConn[i].server; i++)
					FD_SET(cfig.dnsUdpConn[i].sock, &readfds);

				FD_SET(cfig.forwConn.sock, &readfds);

				for (int i = 0; i < MAX_SERVERS && cfig.dnsTcpConn[i].server; i++)
					FD_SET(cfig.dnsTcpConn[i].sock, &readfds);
			}

			//printf("dhcpCache=%u,dns0=%u,dns1=%u\n",dhcpCache.size(),dnsCache[0].size(),dnsCache[1].size());

			//printf("%i\n",select(USHRT_MAX, &readfds, NULL, NULL, &tv));
			if (select(cfig.maxFD, &readfds, NULL, NULL, &tv))
			{
				if (dhcpService)
				{
					for (int i = 0; i < MAX_SERVERS && cfig.dhcpConn[i].server; i++)
					{
						if (FD_ISSET(cfig.dhcpConn[i].sock, &readfds))
						{
							if (gdmess(&dhcpr, i))
							{
								if (sdmess(&dhcpr))
								{
									if (alad(&dhcpr))
									{
										if (dhcpr.lease)
											printf("Host %s alotted %s for %u seconds\n", dhcpr.hostname, IP2String(tempbuff, dhcpr.dhcpp.header.bp_yiaddr), dhcpr.lease);
										else
											printf("Host %s alotted %s\n", dhcpr.hostname, IP2String(tempbuff, dhcpr.dhcpp.header.bp_yiaddr));
									}
								}
							}
						}
					}
				}

				if (dnsService)
				{
					for (int i = 0; i < MAX_SERVERS && cfig.dnsUdpConn[i].server; i++)
					{
						if (FD_ISSET(cfig.dnsUdpConn[i].sock, &readfds))
						{
							if (gdnmess(&dnsr, i))
							{
								if (dnsr.dnsp->header.rcode == RCODE_REFUSED)
								{
									printf("Client %s, DNS Query, Access Denied\n", inet_ntoa(dnsr.addr.sin_addr));
									sdnmess(&dnsr);
								}
								else if (dnsr.dnsp->header.rcode == RCODE_NOTIMPL)
								{
									printf("Client %s, DNS Query Type %u not supported\n", inet_ntoa(dnsr.addr.sin_addr), dnsr.qtype);
									sdnmess(&dnsr);
								}
								else if (scanloc(&dnsr))
								{
									if (dnsr.dnsp->header.rcode == RCODE_NOTIMPL)
									{
										printf("Client %s, DNS Query Type %u not supported\n", inet_ntoa(dnsr.addr.sin_addr), dnsr.qtype);
									}
									else if (dnsr.dnsp->header.rcode == RCODE_NOTAUTH)
									{
										if (cfig.logLevel)
										{
											sprintf(logBuff, "Client %s, Server is not Authorized for Zone %s", inet_ntoa(dnsr.addr.sin_addr), dnsr.query);
											logMess(logBuff, 1);
										}
									}
									else if (htons(dnsr.dnsp->header.ancount))
									{
										if (dnsr.qtype == DNS_TYPE_SOA)
											printf("Client %s, SOA Sent\n", inet_ntoa(dnsr.addr.sin_addr));
										else if (dnsr.qtype == DNS_TYPE_NS)
											printf("Client %s, NS Sent\n", inet_ntoa(dnsr.addr.sin_addr));
										else if (dnsr.cache.dataType == CACHED)
											printf("%s resolved from Cache to %s\n", dnsr.query, getResult(dnsr.dnsp));
										else
											printf("%s resolved Locally to %s\n", dnsr.query, getResult(dnsr.dnsp));
									}
									else
										printf("%s not found\n", dnsr.cname);

									sdnmess(&dnsr);
								}
								else if (!fdnmess(&dnsr))
								{
									if (dnsr.localCode == 2)
										printf("%s not found\n", dnsr.query);
									else
										printf("Failed to Forward %s\n", dnsr.query);
								}
							}
						}
					}

					for (int i = 0; i < MAX_SERVERS && cfig.dnsTcpConn[i].server; i++)
					{
						if (FD_ISSET(cfig.dnsTcpConn[i].sock, &readfds))
						{
							data5 *req = (data5*)calloc(sizeof(data5), 1);
							if (!req)
							{
								printf("Memory Error\n");
								continue;
							}

							req->sockInd = i;
							req->sockLen = sizeof(req->addr);
							errno = 0;
							req->sock = accept(cfig.dnsTcpConn[i].sock, (sockaddr*)&req->addr, &req->sockLen);

							if (req->sock == -1)
							{
								printf("Accept Failed, Error=%u\n", WSAGetLastError());
								free(req);
								continue;
							}

							if (_beginthread(
								procTCP,              		// thread function
								0,                         	// default security attributes
								req) < 0)        			// argument to thread function
							{
								printf("Thread Creation Failed\n");
								free(req);
							}
						}
					}

					if (FD_ISSET(cfig.forwConn.sock, &readfds))
					{
						if (frdnmess(&dnsr))
						{
							sdnmess(&dnsr);
							if (dnsr.dnsp->header.ancount)
								printf("%s resolved from Forwarding server as %s\n", dnsr.query, getResult(dnsr.dnsp));
							else
								printf("%s not found by Forwarding Server\n", dnsr.query);
						}
					}
				}
			}

			if (zoneChanged)
			{
				cacheInd = 1 - cacheInd;
				zoneChanged = false;
			}
		}
	}

	if (dhcpService)
	{
		for (int i = 0; i < MAX_SERVERS && cfig.dhcpConn[i].server; i++)
			closesocket(cfig.dhcpConn[i].sock);

		if (cfig.replication)
			closesocket(cfig.dhcpReplConn.sock);
	}

	if (dnsService)
	{
		for (int i = 0; i < MAX_SERVERS && cfig.dnsUdpConn[i].server; i++)
			closesocket(cfig.dnsUdpConn[i].sock);

		for (int i = 0; i < MAX_SERVERS && cfig.dnsTcpConn[i].server; i++)
			closesocket(cfig.dnsTcpConn[i].sock);

		closesocket(cfig.forwConn.sock);
	}

	WSACleanup();
}

bool chkQu(char *query)
{
	if (strlen(query) >= 255)
		return 0;

	while (true)
	{
		char *i = strchr(query, '.');
		if (i)
		{
			WORD size = (DWORD)i - (DWORD)query;
			if (size >= 64)
				return 0;
			query += (size + 1);
		}
		else if (strlen(query) >= 64)
			return 0;
		else
			return 1;
	}
}

WORD fQu(char *query, dnsPacket *mess, char *raw)
{
	BYTE *xname = (BYTE*)query;
	BYTE *xraw = (BYTE*)raw;
	WORD retvalue = 0;
	bool goneout = false;
	while (true)
	{
		WORD size = (BYTE) * xraw;
		xraw++;
		if (!size)
		{
			break;
		}
		else if (size <= 63)
		{
			if (!goneout)
				retvalue += (size + 1);
			memcpy(xname, xraw, size);
			xname += size;
			xraw += size;
			if (!*xraw)
				break;
			*xname = '.';
			xname++;
		}
		else
		{
			if (!goneout)
				retvalue += 2;

			goneout = true;
			size %= 128;
			size %= 64;
			size *= 256;
			size += *xraw;
			xraw = (BYTE*)mess + size;
		}
	}
	*xname = 0;

	if (!goneout)
		retvalue++;

	return retvalue;
}

WORD fQu(char *query, char *raw)
{

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩欧美一区电影| 精品国内二区三区| 久久精品久久精品| 亚洲欧洲国产日韩| 日韩一区二区三区高清免费看看| 国产宾馆实践打屁股91| 亚洲一区成人在线| 国产精品女人毛片| 欧美另类一区二区三区| 国产精品一二三区在线| 五月婷婷激情综合| 国产精品女主播av| 欧美变态口味重另类| 91国偷自产一区二区开放时间 | 国产精品国产三级国产专播品爱网| 欧美三级日本三级少妇99| 国产乱对白刺激视频不卡| 亚洲大片在线观看| 亚洲视频你懂的| 久久亚洲欧美国产精品乐播| 欧美日韩一区国产| 99久久精品免费看| 国产一区二区精品在线观看| 五月婷婷久久综合| 一级特黄大欧美久久久| 久久久蜜臀国产一区二区| 欧美片在线播放| 色哟哟一区二区| 成人激情校园春色| 国产精品乡下勾搭老头1| 裸体健美xxxx欧美裸体表演| 一区二区在线观看视频| 国产精品欧美精品| 亚洲国产精品t66y| 久久精品亚洲国产奇米99| 日韩一级黄色片| 欧美日韩国产小视频| 色婷婷亚洲综合| 成人夜色视频网站在线观看| 国产精品资源网| 国产精品一色哟哟哟| 精品中文字幕一区二区小辣椒| 日日夜夜免费精品视频| 亚洲一区成人在线| 亚洲国产精品自拍| 一区二区三区丝袜| 亚洲最大成人综合| 亚洲精品日韩一| 亚洲精品中文在线影院| 一二三区精品视频| 一区二区三区国产精品| 一区二区免费在线播放| 亚洲高清视频的网址| 午夜久久电影网| 午夜精品在线视频一区| 日韩电影一区二区三区| 美女国产一区二区三区| 麻豆成人久久精品二区三区红| 精品一区二区精品| 激情五月播播久久久精品| 久久97超碰色| 国产a精品视频| 成人午夜私人影院| 91麻豆视频网站| 欧美色精品在线视频| 91精品婷婷国产综合久久性色| 欧美一区二区三区小说| 久久亚洲免费视频| 日本一区二区免费在线观看视频| 国产精品麻豆99久久久久久| 亚洲天天做日日做天天谢日日欢| 亚洲一区二区精品视频| 蜜桃视频免费观看一区| 国产盗摄一区二区| 99国内精品久久| 欧美日韩精品福利| 亚洲精品一区二区三区蜜桃下载| 欧美韩日一区二区三区四区| 亚洲最大成人综合| 久久99精品国产麻豆不卡| 91视频国产资源| 欧美裸体bbwbbwbbw| 欧美r级在线观看| 亚洲欧美怡红院| 石原莉奈在线亚洲三区| 加勒比av一区二区| 91蜜桃在线观看| 在线不卡一区二区| 久久久久国产一区二区三区四区 | av爱爱亚洲一区| 欧美亚洲一区二区在线| 精品久久一二三区| 亚洲欧美另类久久久精品2019| 蜜臀久久久99精品久久久久久| 波多野结衣精品在线| 欧美福利视频一区| 中文字幕第一区二区| 日韩高清不卡一区二区| 成人激情视频网站| 欧美一区二区不卡视频| 国产精品电影院| 久久精品久久精品| 91成人在线免费观看| 久久久噜噜噜久久人人看| 亚洲自拍与偷拍| 国产91丝袜在线播放| 91精品国产综合久久精品 | 国产精品久久久久久久久晋中| 亚洲r级在线视频| 粉嫩aⅴ一区二区三区四区五区| 欧美日韩国产不卡| 国产精品福利一区| 韩国毛片一区二区三区| 欧美日韩中文国产| 中文字幕一区视频| 国产真实乱子伦精品视频| 欧美日韩国产另类一区| 亚洲精品午夜久久久| 成人午夜av影视| 久久久噜噜噜久噜久久综合| 日本成人在线电影网| 在线免费视频一区二区| 中文字幕日韩一区二区| 国产乱国产乱300精品| 欧美成人一区二区三区片免费| 亚洲制服丝袜一区| 97精品久久久久中文字幕 | 欧美国产在线观看| 免费观看30秒视频久久| 欧美三级在线播放| 一级女性全黄久久生活片免费| 成人性生交大片| 亚洲精品一区二区三区四区高清| 亚洲观看高清完整版在线观看| 91免费观看在线| 最新欧美精品一区二区三区| 成人综合日日夜夜| 国产欧美视频一区二区| 国产精品一区二区三区乱码 | 精品999在线播放| 日本sm残虐另类| 7777精品伊人久久久大香线蕉的 | 欧美区视频在线观看| 亚洲午夜精品在线| 欧美日韩一区不卡| 亚洲国产成人91porn| 欧美日韩精品福利| 日韩av电影天堂| 在线不卡的av| 午夜精品在线看| 7777精品久久久大香线蕉| 日韩二区三区在线观看| 制服丝袜一区二区三区| 另类欧美日韩国产在线| 日韩免费福利电影在线观看| 麻豆国产欧美一区二区三区| 精品国产麻豆免费人成网站| 毛片一区二区三区| 日韩一区二区在线看| 久久99深爱久久99精品| 久久影院电视剧免费观看| 国产suv精品一区二区6| 亚洲色图欧洲色图| 欧美视频中文一区二区三区在线观看| 亚洲综合另类小说| 欧美一区二区三区在线| 国产乱国产乱300精品| 国产精品久久久久一区| 在线精品视频免费播放| 偷拍与自拍一区| 精品欧美一区二区三区精品久久| 国产乱人伦偷精品视频不卡| 日韩美女视频一区二区| 欧美日韩成人在线| 国产伦理精品不卡| 亚洲欧美一区二区三区极速播放| 欧美性生交片4| 久久精品99国产精品| 国产亚洲精品免费| 色悠久久久久综合欧美99| 午夜久久久影院| 久久久久久**毛片大全| 欧美最猛性xxxxx直播| 免费观看久久久4p| 综合久久久久综合| 欧美一区二区大片| 成年人国产精品| 丝瓜av网站精品一区二区| 久久久99精品久久| 欧美日韩国产免费| 国产成人av资源| 视频在线在亚洲| 国产精品无码永久免费888| 欧美在线免费观看亚洲| 国产乱码精品一品二品| 亚洲在线一区二区三区| 久久天天做天天爱综合色| 91国模大尺度私拍在线视频| 国产一区二区调教| 午夜国产不卡在线观看视频|