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>()); } }
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); }
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; }
//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); }
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; }