コード例 #1
0
ファイル: statichosts.c プロジェクト: 476210180/dnsforwarder
int Hosts_InitContainer(HostsContainer	*Container)
{
	if( StringList_Init(&(Container -> Domains), NULL, ',') != 0 )
	{
		return -1;
	}

	if( StringChunk_Init(&(Container -> Ipv4Hosts), &(Container -> Domains)) != 0 )
	{
		return -2;
	}
	if( StringChunk_Init(&(Container -> Ipv6Hosts), &(Container -> Domains)) != 0 )
	{
		return -3;
	}
	if( StringChunk_Init(&(Container -> CNameHosts), &(Container -> Domains)) != 0 )
	{
		return -4;
	}
	if( StringChunk_Init(&(Container -> ExcludedDomains), &(Container -> Domains)) != 0 )
	{
		return -4;
	}
	if( ExtendableBuffer_Init(&(Container ->IPs), 0, -1) != 0 )
	{
		return -6;
	}

	return 0;
}
コード例 #2
0
ファイル: stringchunk.c プロジェクト: bcxa/dnsforwarder
int StringChunk_Init(StringChunk *dl, int InitialCount /* For no-wildcard domain */)
{
	if( StringList_Init(&(dl -> List), NULL, 0) != 0 )
	{
		return -1;
	}

	if( HashTable_Init(&(dl -> List_Pos), sizeof(EntryForString), InitialCount, NULL) != 0 )
	{
		StringList_Free(&(dl -> List));
		return -2;
	}

	if( StringList_Init(&(dl -> List_W), NULL, 0) != 0 )
	{
		StringList_Free(&(dl -> List));
		HashTable_Free(&(dl -> List_Pos));
		return -3;
	}

	if( Array_Init(&(dl -> List_W_Pos), sizeof(EntryForString), 0, FALSE, NULL) != 0 )
	{
		StringList_Free(&(dl -> List));
		HashTable_Free(&(dl -> List_Pos));
		StringList_Free(&(dl -> List_W));
		return -4;
	}

	if( ExtendableBuffer_Init(&(dl -> AdditionalDataChunk), 0, -1) != 0 )
	{
		StringList_Free(&(dl -> List));
		HashTable_Free(&(dl -> List_Pos));
		StringList_Free(&(dl -> List_W));
		Array_Free(&(dl -> List_W_Pos));
		return -5;
	}

	return 0;
}
コード例 #3
0
ファイル: main.c プロジェクト: 1way/dnsforwarder
void Probe(int Threshold)
{
	static const char *Servers[] = {
		"8.8.8.8",
		"208.67.220.220",
		"199.85.126.10",
		"4.2.2.1",
		"8.26.56.26",
	};

	static const char *Domains[] = {
		"www.youtube.com",
		"www.googlevideo.com",
		"twitter.com",
		"www.facebook.com"
	};

	int	Pass = 0;

	StringList	l;

	StringChunk	s;

	StringList_Init(&l, NULL, ',');
	StringChunk_Init(&s, NULL);

	while( Threshold > 0 )
	{
		printf("; Pass %d:\n", Pass + 1);

		if( ProbeFakeAddresses(Servers[Pass % (sizeof(Servers) / sizeof(const char *))], Domains[Pass % (sizeof(Domains) / sizeof(const char *))], &l) > 0 )
		{
			const char *Itr = NULL;
			int NumberOfNew = 0;

			Itr = StringList_GetNext(&l, NULL);

			while( Itr != NULL )
			{
				if( StringChunk_Match_NoWildCard(&s, Itr, NULL, NULL) == FALSE )
				{
					StringChunk_Add(&s, Itr, NULL, 0);
					printf("%s\n", Itr);
					++NumberOfNew;
				}

				Itr = StringList_GetNext(&l, Itr);
			}

			if( NumberOfNew == 0 )
			{
				--Threshold;
			} else {
				Threshold += 2;
			}
		} else {
			--Threshold;
		}

		StringList_Clear(&l);

		++Pass;
	}

	StringList_Free(&l);
	StringChunk_Free(&s, TRUE);
}