예제 #1
0
void Config::ReadUserFile(Path& path)
{
	INIParser ip = INIParser::OpenFile(path);
	BOOST_FOREACH(const ptree::value_type &cvar, ip.GetPT())
	{
		Request(cvar.first, cvar.second.get_value<std::string>());
	}
}
예제 #2
0
void AdBlockPlus::loadContent(INIParser& parser, const std::wstring& content)
{
	// split content into lines, process with INIParser one by one
	size_t lastPos = 0;
	wchar_t lastCh = 0;
	for (size_t i = 0; i < content.length(); i++)
	{
		wchar_t ch = content[i];
		// accept CR, LF and CRLF sequence
		if (ch == L'\r' || (ch == L'\n' && lastCh != L'\r'))
		{
			parser.process(content.substr(lastPos, i - lastPos), false);
		}
		if (ch == L'\r' || ch == L'\n')
			lastPos = i + 1;
		lastCh = ch;
	}
	if (lastPos < content.length())
		parser.process(content.substr(lastPos, content.length() - lastPos), false);
	parser.process(L"", true);
}
예제 #3
0
unsigned int AdBlockPlus::asyncLoader(void* ppathname)
{
	wstring* pstr = reinterpret_cast<wstring*>(ppathname);
	wstring pathname = *pstr;
	delete pstr;

	bool loaded = false;

	// then load stuff
	CFile file;
	if (file.Open(pathname.c_str(), CFile::modeRead | CFile::shareDenyWrite))
	{
		wstring content;
		bool success = Utils::File::readFile(file, content);
		file.Close();
		if (success)
		{
			WriterLock wl(s_mutex);
			clearFiltersInternal(true);

			INIParser parser;
			
			// split content into lines, process with INIParser one by one
			size_t lastPos = 0;
			wchar_t lastCh = 0;
			for (size_t i = 0; i < content.length(); i++)
			{
				wchar_t ch = content[i];
				// accept CR, LF and CRLF sequence
				if (ch == L'\r' || (ch == L'\n' && lastCh != L'\r'))
				{
					parser.process(content.substr(lastPos, i - lastPos), false);
				}
				if (ch == L'\r' || ch == L'\n')
					lastPos = i + 1;
				lastCh = ch;
			}
			if (lastPos < content.length())
				parser.process(content.substr(lastPos, content.length() - lastPos), false);
			parser.process(L"", true);

			// put everything in INIParser::filters into the matcher
			for (auto iter = parser.filters.begin(); iter != parser.filters.end(); ++iter)
			{
				ActiveFilter* filter = *iter;
				if (!filter || filter->isDisabled()) continue;

				RegExpFilter* regexpFilter = filter->toRegExpFilter();
				if (regexpFilter)
				{
					regexpMatcher.add(regexpFilter);
					continue;
				}

				ElemHideFilter* elemhideFilter = filter->toElemHideFilter();
				if (elemhideFilter)
					elemhideMatcher.add(elemhideFilter);
			}
			// generate the general filter list for elemhideMatcher to improve speed
			elemhideMatcher.generateGeneralFilters();
			loaded = true;
		}
	}

	// Notify main thread about load completion
	CIEHostWindow* pWindow = CIEHostWindow::GetAnyUtilsWindow();
	if (pWindow)
		pWindow->RunAsync([=]
		{
			filterLoadedCallback(loaded);
			pWindow->SendMessage(UserMessage::WM_USER_MESSAGE,
				loaded ? UserMessage::WPARAM_ABP_FILTER_LOADED : UserMessage::WPARAM_ABP_LOAD_FAILURE, 0);
		});
	else
		filterLoadedCallback(loaded);

	return 0;
}
예제 #4
0
//player_profile_set [SET/VIEW] [Field] [Name/*]
//ex: player_profile_set VIEW LDON_MMC Jess
int main(int argc, char* argv[])
{
	INIParser *ini = new INIParser("database.ini");
	std::string host = ini->GetOption("host");
	std::string user = ini->GetOption("user");
	std::string pass = ini->GetOption("password");
	std::string datab = ini->GetOption("db");

	if(argc != 5)
	{
		std::cout << "Usage: player_profile_set [SET/VIEW] [Field] [Value] [Name/*]" << std::endl;
		std::cout << "Ex: player_profile_set VIEW LDON_MMC 0 Jess" << std::endl;
		std::cout << "Would view the number of LDoN MMC points earned by Jess" << std::endl << std::endl;
		std::cout << "Ex: player_profile_set SET LDON_TOTAL 0 *" << std::endl;
		std::cout << "Would view the number of LDoN MMC points earned by All players to 0" << std::endl;
		delete ini;
		ini = 0;
		exit(1);
	}

	std::string program_action = argv[1];
	std::string program_field = argv[2];
	std::string program_value = argv[3];
	std::string player_name = argv[4];
	program_action = EQEmuString::ToUpper(program_action);
	program_field = EQEmuString::ToUpper(program_field);
	
	emu_db = new EQEmuDatabase(host.c_str(), datab.c_str(), user.c_str(), pass.c_str());
	if(!emu_db->Connected())
	{
		delete ini;
		ini = 0;
		delete emu_db;
		emu_db = 0;
		exit(1);
	}

	if(player_name == "*")
		emu_db->GetPlayers();
	else
		emu_db->GetPlayer(player_name);

	std::vector<player_entry>::iterator iter = player_list.begin();

	while(iter != player_list.end())
	{
		player_entry pe = (*iter);
		PlayerProfile_Struct *m_pp = (PlayerProfile_Struct*)pe.data;
		
		if(program_action == "SET")
		{
			m_pp->ldon_points_available = 0;
			m_pp->ldon_points_guk = 0;
			m_pp->ldon_points_mir = 0;
			m_pp->ldon_points_mmc = 0;
			m_pp->ldon_points_ruj = 0;
			m_pp->ldon_points_tak = 0;
			emu_db->StorePlayer(pe.id, pe.data);
		}
		else if(program_action == "VIEW")
		{
			std::cout << m_pp->name << std::endl;
			std::cout << m_pp->ldon_points_available << std::endl;
			std::cout << m_pp->ldon_points_guk << std::endl;
			std::cout << m_pp->ldon_points_mir << std::endl;
			std::cout << m_pp->ldon_points_mmc << std::endl;
			std::cout << m_pp->ldon_points_ruj << std::endl;
			std::cout << m_pp->ldon_points_tak << std::endl;
		}
		else
		{
			std::cout << "Unknown action specified" << std::endl;
		}
		delete[] pe.data;
		pe.data = 0;
		iter++;
	}
	player_list.clear();

	delete ini;
	ini = 0;
	delete emu_db;
	emu_db = 0;

	std::cout << "Press enter to exit...";
	std::cin.get();
	exit(0);
}
예제 #5
0
int main(int argc, char *argv[])
{
	printf(" ==============================================================================\r\n");
	printf("                                  Tabula Rasa                                  \r\n");
	printf("                             Authentication Server                             \r\n\r\n");
	printf("  Version 0.4.1                                                     Salsa Crew \r\n");
	printf(" ==============================================================================\r\n");
	printf("Loading...\r\n");

#ifdef _WIN32
	WSADATA Winsock;
	WSAStartup(MAKEWORD(2,2), &Winsock);
#endif

	printf("Reading configuration file...\r\n\r\n");
	INIParser* Parser = new INIParser("config.ini");

	Port = Parser->GetInt("Auth Server", "port", 2106);
	printf("Authentication port: %i\r\n", Port);

	MaxClients = Parser->GetInt("Auth Server", "maxclients", 25);
	printf("Allowed simultaneous clients: %i\r\n", MaxClients);

	uint32_t sessiontimeout = Parser->GetInt("Auth Server",	"sessiontimeout", 50);
	printf("Time before sessions expire: %i\r\n", sessiontimeout);
	uint32_t servertimeout = Parser->GetInt("Auth Server",	"servertimeout", 120);
	printf("Time before servers expire: %i\r\n\r\n", servertimeout);

	std::string dbhost  = Parser->GetString("Auth Server Database",	"host",		"localhost");
	uint32_t    dbport  = Parser->GetInt   ("Auth Server Database",	"port",		10061);
	std::string dbname  = Parser->GetString("Auth Server Database",	"name",		"ir_authentication");
	std::string dbuser  = Parser->GetString("Auth Server Database",	"user",		"root");
	std::string dbpass  = Parser->GetString("Auth Server Database",	"password", "usbw");

	printf("Database Host: %s\r\n", dbhost.c_str());
	printf("Database Port: %u\r\n", dbport);
	printf("Database Name: %s\r\n\r\n", dbname.c_str());
	printf("Database User: %s\r\n", dbuser.c_str());
	printf("Database Pass: %s\r\n", dbpass.c_str());

	printf("Loading Database Manager...");
	DBManager::Create(dbhost.c_str(), dbport, dbuser.c_str(), dbpass.c_str(), dbname.c_str());
	printf("Done\r\n");

	printf("Loading Sessions Manager...");
	SessionManager::Create(sessiontimeout, servertimeout);
	printf("Done\r\n");

	printf("Loading Cryptography Manager...");
	CryptManager::Create();
	printf("Done\r\n\r\n");

	printf("Deleting old sessions...");
	SessionManager::Instance()->WipeSessions();
	printf("Done\r\n");
	printf("Deleting old servers...");
	SessionManager::Instance()->WipeServers();
	printf("Done\r\n\r\n");

	AcceptedLogins = 0;

	printf("Creating Threads...");

	std::thread playersThread{PlayersThread};   // start player handling thread
	std::thread maintThread{MaintenanceThread}; // start maintenance thread
	// TODO: handle error with try catch

	printf("Done\r\n\r\n");
	printf("Authentication Server running\r\n");
	
	if (argc == 2 && !strcmp(argv[1], "-hidden"))
	{
#ifdef _WIN32
		printf("Hidden mode enabled, going underground\r\n");
		HWND hWnd = GetConsoleWindow();
		ShowWindow(hWnd, SW_HIDE);
#else
		// TODO: daemonize
		printf("Hidden mode not supported on this OS\r\n");
#endif
	}
	printf("Type q to close the server\r\n");
	while(ServerRunning)
	{
		char c = getchar();
		if (c == 'q')
			ServerRunning = false;
	}
	printf("Finishing threads...");
	maintThread.join();
	playersThread.join();
	printf("Done\r\n");
	printf("Exiting Server...");
	return 0;
}