void RSSManager::load(SimpleXML& aXml) { { CFlyLock(g_csFeed); aXml.resetCurrentChild(); if (aXml.findChild("Rss")) { aXml.stepIn(); while (aXml.findChild("Feed")) { const string& realURL = aXml.getChildData(); if (realURL.empty()) { continue; } const string& sourceName = aXml.getChildAttrib("Name"); const string& codeingType = aXml.getChildAttrib("Codeing"); const size_t iCodeingType = Util::toInt(codeingType); // add only unique RSS feeds addNewFeed(realURL, sourceName, getCodeing(iCodeingType)); } aXml.stepOut(); } } updateFeeds(); }
void RawManager::loadActionRaws(SimpleXML& aXml) { aXml.resetCurrentChild(); while(aXml.findChild("Action")) { Action* a = NULL; try { a = addAction(aXml.getIntChildAttrib("ID"), aXml.getChildAttrib("Name"), aXml.getBoolChildAttrib("Enabled")); } catch(const Exception&) { continue; } aXml.stepIn(); while(aXml.findChild("Raw")) { try { Raw r; r.setEnabled(aXml.getBoolChildAttrib("Enabled")); r.setId(aXml.getIntChildAttrib("ID")); r.setName(aXml.getChildAttrib("Name")); r.setRaw(aXml.getChildAttrib("Raw")); r.setTime(aXml.getIntChildAttrib("Time")); r.setLua(aXml.getBoolChildAttrib("UseLua")); addRaw(a, r); } catch(const Exception&) { // ... } } aXml.stepOut(); } }
void MessageManager::loadUsers() { try { SimpleXML xml; SettingsManager::loadSettingFile(xml, CONFIG_DIR, CONFIG_NAME); auto cm = ClientManager::getInstance(); if (xml.findChild("Ignored")) { xml.stepIn(); xml.resetCurrentChild(); if (xml.findChild("Users")) { xml.stepIn(); while (xml.findChild("User")) { UserPtr user = cm->getUser(CID(xml.getChildAttrib("CID"))); { WLock(cm->getCS()); cm->addOfflineUser(user, xml.getChildAttrib("Nick"), xml.getChildAttrib("Hub"), (uint32_t)xml.getIntChildAttrib("LastSeen")); } WLock l(Ignorecs); ignoredUsers.emplace(user); user->setFlag(User::IGNORED); } xml.stepOut(); } xml.stepOut(); } } catch (const Exception& e) { LogManager::getInstance()->message(STRING_F(LOAD_FAILED_X, CONFIG_NAME % e.getError()), LogManager::LOG_ERROR); } }
/* * Loads existing nodes from disk */ void KBucket::loadNodes(SimpleXML& xml) { xml.resetCurrentChild(); if(xml.findChild("Nodes")) { xml.stepIn(); while(xml.findChild("Node")) { CID cid = CID(xml.getChildAttrib("CID")); string i4 = xml.getChildAttrib("I4"); uint16_t u4 = static_cast<uint16_t>(xml.getIntChildAttrib("U4")); if(Utils::isGoodIPPort(i4, u4)) { UDPKey udpKey; string key = xml.getChildAttrib("key"); string keyIp = xml.getChildAttrib("keyIP"); if(!key.empty() && !keyIp.empty()) { udpKey.key = CID(key); udpKey.ip = keyIp; } //addUser(cid, i4, u4); BootstrapManager::getInstance()->addBootstrapNode(i4, u4, cid, udpKey); } } xml.stepOut(); } }
void WebUserManager::on(WebServerManagerListener::LoadSettings, SimpleXML& xml_) noexcept { if (xml_.findChild("WebUsers")) { xml_.stepIn(); while (xml_.findChild("WebUser")) { const auto& username = xml_.getChildAttrib("Username"); const auto& password = xml_.getChildAttrib("Password"); if (username.empty() || password.empty()) { continue; } const auto& permissions = xml_.getChildAttrib("Permissions"); // Set as admin mainly for compatibility with old accounts if no permissions were found auto user = std::make_shared<WebUser>(username, password, permissions.empty()); user->setLastLogin(xml_.getIntChildAttrib("LastLogin")); if (!permissions.empty()) { user->setPermissions(permissions); } users.emplace(username, user); } xml_.stepOut(); } xml_.resetCurrentChild(); }
/* * Loads existing indexes from disk */ void IndexManager::loadIndexes(SimpleXML& xml) { xml.resetCurrentChild(); if(xml.findChild("Files")) { xml.stepIn(); while(xml.findChild("File")) { const TTHValue tth = TTHValue(xml.getChildAttrib("TTH")); SourceList sources; xml.stepIn(); while(xml.findChild("Source")) { Source source; source.setCID(CID(xml.getChildAttrib("CID"))); source.setIp(xml.getChildAttrib("I4")); source.setUdpPort(static_cast<uint16_t>(xml.getIntChildAttrib("U4"))); source.setSize(xml.getLongLongChildAttrib("SI")); source.setExpires(xml.getLongLongChildAttrib("EX")); source.setPartial(false); sources.push_back(source); } tthList.insert(std::make_pair(tth, sources)); xml.stepOut(); } xml.stepOut(); } }
void HighlightManager::load(SimpleXML& aXml) { aXml.resetCurrentChild(); if(aXml.findChild("Highlights")) { aXml.stepIn(); while(aXml.findChild("Highlight")) { ColorSettings cs; cs.setMatch( Text::utf8ToWide( aXml.getChildAttrib("Match") ) ); cs.setBold( aXml.getBoolChildAttrib("Bold") ); cs.setItalic( aXml.getBoolChildAttrib("Italic") ); cs.setUnderline( aXml.getBoolChildAttrib("Underline") ); cs.setStrikeout( aXml.getBoolChildAttrib("Strikeout") ); cs.setIncludeNickList( aXml.getBoolChildAttrib("IncludeNickList") ); cs.setCaseSensitive( aXml.getBoolChildAttrib("CaseSensitive") ); cs.setWholeLine( aXml.getBoolChildAttrib("WholeLine") ); cs.setWholeWord( aXml.getBoolChildAttrib("WholeWord") ); cs.setPopup( aXml.getBoolChildAttrib("Popup") ); cs.setTab( aXml.getBoolChildAttrib("Tab") ); cs.setPlaySound( aXml.getBoolChildAttrib("PlaySound") ); cs.setLog( aXml.getBoolChildAttrib("LastLog") ); cs.setFlashWindow( aXml.getBoolChildAttrib("FlashWindow") ); cs.setMatchType( aXml.getIntChildAttrib("MatchType") ); cs.setHasFgColor( aXml.getBoolChildAttrib("HasFgColor") ); cs.setHasBgColor( aXml.getBoolChildAttrib("HasBgColor") ); cs.setBgColor( (int)aXml.getLongLongChildAttrib("BgColor") ); cs.setFgColor( (int)aXml.getLongLongChildAttrib("FgColor") ); cs.setSoundFile( Text::utf8ToWide( aXml.getChildAttrib("SoundFile") ) ); colorSettings.push_back(cs); } aXml.stepOut(); } else { aXml.resetCurrentChild(); } }
void HighlightManager::load(SimpleXML& aXml){ aXml.resetCurrentChild(); if(aXml.findChild("Highlights")) { aXml.stepIn(); while(aXml.findChild("Highlight")) { try{ ColorSettings cs; cs.setContext(aXml.getIntChildAttrib("Context")); cs.setMatch( Text::utf8ToWide( aXml.getChildAttrib("Match") ) ); cs.setBold( aXml.getBoolChildAttrib("Bold") ); cs.setItalic( aXml.getBoolChildAttrib("Italic") ); cs.setUnderline( aXml.getBoolChildAttrib("Underline") ); cs.setStrikeout( aXml.getBoolChildAttrib("Strikeout") ); //Convert old setting to correct context if(aXml.getBoolChildAttrib("IncludeNickList") == true) cs.setContext(CONTEXT_NICKLIST); cs.setCaseSensitive( aXml.getBoolChildAttrib("CaseSensitive") ); cs.setWholeLine( aXml.getBoolChildAttrib("WholeLine") ); cs.setWholeWord( aXml.getBoolChildAttrib("WholeWord") ); cs.setPopup( aXml.getBoolChildAttrib("Popup") ); cs.setTab( aXml.getBoolChildAttrib("Tab") ); cs.setPlaySound( aXml.getBoolChildAttrib("PlaySound") ); //cs.setLog( aXml.getBoolChildAttrib("LastLog") ); cs.setFlashWindow( aXml.getBoolChildAttrib("FlashWindow") ); cs.setMatchType( aXml.getIntChildAttrib("MatchType") ); cs.setHasFgColor( aXml.getBoolChildAttrib("HasFgColor") ); cs.setHasBgColor( aXml.getBoolChildAttrib("HasBgColor") ); cs.setBgColor( (int)aXml.getLongLongChildAttrib("BgColor") ); cs.setFgColor( (int)aXml.getLongLongChildAttrib("FgColor") ); cs.setSoundFile( Text::utf8ToWide( aXml.getChildAttrib("SoundFile") ) ); cs.setMatchColumn(aXml.getIntChildAttrib("MatchColumn")); cs.setRegexp(); colorSettings.push_back(cs); }catch(...) { } } aXml.stepOut(); } else { aXml.resetCurrentChild(); } //convert the old setting to highlights if(!SETTING(HIGHLIGHT_LIST).empty()) { ColorSettings cs; cs.setContext(CONTEXT_FILELIST); cs.setMatch(Text::toT(SETTING(HIGHLIGHT_LIST))); cs.setHasFgColor(true); cs.setFgColor( SETTING(LIST_HL_COLOR) ); cs.setHasBgColor(true); cs.setBgColor( SETTING(LIST_HL_BG_COLOR) ); SettingsManager::getInstance()->set(SettingsManager::HIGHLIGHT_LIST, ""); SettingsManager::getInstance()->set(SettingsManager::USE_HIGHLIGHT, true); colorSettings.push_back(cs); } }
void FireResourceManager::loadLanguage(const string& aFile) { try { File f(aFile, File::READ, File::OPEN); SimpleXML xml; xml.fromXML(f.read()); HASH_MAP<string, int> h; //FireDC++ start HASH_MAP<string, int> e; //FireDC++ end for(int i = 0; i < LAST; ++i) { h[names[i]] = i; } //FireDC++ start for(int i = 0; i < LASTTWO; ++i) { e[namesTwo[i]] = i; } //FireDC++ end if(xml.findChild("Language")) { rtl = xml.getBoolChildAttrib("RightToLeft"); xml.stepIn(); if(xml.findChild("Strings")) { xml.stepIn(); while(xml.findChild("String")) { HASH_MAP<string, int>::iterator j = h.find(xml.getChildAttrib("Name")); if(j != h.end()) { strings[j->second] = xml.getChildData(); } } createWide(); } //FireDC++ start xml.stepOut(); if(xml.findChild("StringsTwo")) { xml.stepIn(); while(xml.findChild("StringTwo")) { HASH_MAP<string, int>::iterator j = e.find(xml.getChildAttrib("Name")); if(j != e.end()) { stringsTwo[j->second] = xml.getChildData(); } } createWideTwo(); } //FireDC++ end } } catch(const Exception&) { // ... } }
bool CAGEmotionSetup::LoadEmotion(const string& p_file_name) { const string l_fileName = Util::getDataPath() + "EmoPacks\\" + p_file_name + ".xml"; if ((p_file_name == "Disabled") || !Util::fileExists(l_fileName)) { return true; } try { SimpleXML xml; xml.fromXML(File(l_fileName, File::READ, File::OPEN).read()); if (xml.findChild("Emoticons")) { xml.stepIn(); while (xml.findChild("Emoticon")) { string strEmotionText = xml.getChildAttrib("PasteText"); if (strEmotionText.empty()) { strEmotionText = xml.getChildAttrib("Expression"); } while (strEmotionText[0] == ' ') // ltrim strEmotionText.erase(0, 1); if (!strEmotionText.empty()) { // dcdebug("CAGEmotionSetup::Create: emotion:[%s]\n", Text::fromT(strEmotionText).c_str()); if (m_FilterEmotiion.count(strEmotionText)) { // dcdebug("CAGEmotionSetup::Create: dup emotion:[%s]\n", strEmotionText.c_str()); continue; } m_FilterEmotiion.insert(strEmotionText); string strEmotionBmpPath = xml.getChildAttrib("Bitmap"); if (strEmotionBmpPath.size() > 0) { if (strEmotionBmpPath[0] == '.') { // Relativni cesta - dame od aplikace strEmotionBmpPath = Util::getDataPath() + "EmoPacks\\" + strEmotionBmpPath; } else strEmotionBmpPath = "EmoPacks\\" + strEmotionBmpPath; } CAGEmotion* pEmotion = new CAGEmotion(); //[!]PPA for lock bmp //File* l__f = new File (Util::getDataPath() + strEmotionBmpPath, File::READ, File::OPEN); if (!pEmotion->Create(Text::toT(strEmotionText), strEmotionBmpPath)) { delete pEmotion; continue; } m_CountSelEmotions++; EmotionsList.push_back(pEmotion); } } xml.stepOut(); } } catch(const Exception& e) { dcdebug("CAGEmotionSetup::Create: %s\n", e.getError().c_str()); return false; } return true; }
void HubSettings::load(SimpleXML& xml) { for(uint8_t i = 0; i < StringCount; ++i) { strings[i] = xml.getChildAttrib(stringNames[i]); } for(uint8_t i = 0; i < BoolCount; ++i) { bools[i] = to3boolXml(xml.getIntChildAttrib(boolNames[i])); } for(uint8_t i = 0; i < IntCount; ++i) { auto tmp = xml.getChildAttrib(intNames[i]); if (!tmp.empty()) ints[i] = Util::toInt(tmp); } }
void MessageManager::load(SimpleXML& aXml) { if (aXml.findChild("ChatFilterItems")) { aXml.stepIn(); while (aXml.findChild("ChatFilterItem")) { WLock l(Ignorecs); ChatFilterItems.push_back(ChatFilterItem(aXml.getChildAttrib("Nick"), aXml.getChildAttrib("Text"), (StringMatch::Method)aXml.getIntChildAttrib("NickMethod"), (StringMatch::Method)aXml.getIntChildAttrib("TextMethod"), aXml.getBoolChildAttrib("MC"), aXml.getBoolChildAttrib("PM"), aXml.getBoolChildAttrib("Enabled"))); } aXml.stepOut(); } loadUsers(); }
void BootstrapManager::on(HttpConnectionListener::Complete, HttpConnection*, string const&, bool /*fromCoral*/) throw() { if(!nodesXML.empty()) { try { uLongf destLen = BUFSIZE; boost::scoped_array<uint8_t> destBuf; // decompress incoming packet int result; do { destLen *= 2; destBuf.reset(new uint8_t[destLen]); result = uncompress(&destBuf[0], &destLen, (Bytef*)nodesXML.data(), nodesXML.length()); } while (result == Z_BUF_ERROR); if(result != Z_OK) { // decompression error!!! throw Exception("Decompress error."); } SimpleXML remoteXml; remoteXml.fromXML(string((char*)&destBuf[0], destLen)); remoteXml.stepIn(); while(remoteXml.findChild("Node")) { CID cid = CID(remoteXml.getChildAttrib("CID")); string i4 = remoteXml.getChildAttrib("I4"); string u4 = remoteXml.getChildAttrib("U4"); addBootstrapNode(i4, static_cast<uint16_t>(Util::toInt(u4)), cid, UDPKey()); } remoteXml.stepOut(); } catch(Exception& e) { LogManager::getInstance()->message("DHT bootstrap error: " + e.getError()); } } }
void ResourceManager::loadLanguage(const string& aFile) { try { File f(aFile, File::READ, File::OPEN); SimpleXML xml; xml.fromXML(f.read()); unordered_map<string, int> h; for(int i = 0; i < LAST; ++i) { h[names[i]] = i; } if(xml.findChild("Language")) { rtl = xml.getBoolChildAttrib("RightToLeft"); xml.stepIn(); if(xml.findChild("Strings")) { xml.stepIn(); while(xml.findChild("String")) { unordered_map<string, int>::const_iterator j = h.find(xml.getChildAttrib("Name")); if(j != h.end()) { strings[j->second] = xml.getChildData(); } } createWide(); } } } catch(const Exception&) { // ... } }
void ShareManager::load(SimpleXML& aXml) { Lock l(cs); aXml.resetCurrentChild(); if(aXml.findChild("Share")) { aXml.stepIn(); while(aXml.findChild("Directory")) { string realPath = aXml.getChildData(); if(realPath.empty()) { continue; } // make sure realPath ends with a PATH_SEPARATOR if(realPath[realPath.size() - 1] != PATH_SEPARATOR) { realPath += PATH_SEPARATOR; } const string& virtualName = aXml.getChildAttrib("Virtual"); string vName = validateVirtual(virtualName.empty() ? Util::getLastDir(realPath) : virtualName); shares[move(realPath)] = vName; if(directories.find(vName) == directories.end()) { directories[vName] = Directory::create(vName); } } aXml.stepOut(); } }
void IgnoreManager::load(SimpleXML& aXml) { if(aXml.findChild("IgnoreList")) { aXml.stepIn(); while(aXml.findChild("User")) { ignoredUsers.insert(Text::toT(aXml.getChildAttrib("Nick"))); } aXml.stepOut(); } }
void ClientManager::loadUsers() { try { SimpleXML xml; xml.fromXML(File(getUsersFile(), File::READ, File::OPEN).read()); if(xml.findChild("Users")) { xml.stepIn(); { Lock l(cs); while(xml.findChild("User")) { nicks[CID(xml.getChildAttrib("CID"))] = std::make_pair(xml.getChildAttrib("Nick"), false); } } xml.stepOut(); } } catch(const Exception&) { } }
void EmoticonsManager::Load() { setUseEmoticons(false); if((SETTING(EMOTICONS_FILE) == "Disabled") || !Util::fileExists(Util::getPath(Util::PATH_EMOPACKS) + SETTING(EMOTICONS_FILE) + ".xml" )) { return; } try { SimpleXML xml; xml.fromXML(File(Util::getPath(Util::PATH_EMOPACKS) + SETTING(EMOTICONS_FILE) + ".xml", File::READ, File::OPEN).read()); if(xml.findChild("Emoticons")) { xml.stepIn(); while(xml.findChild("Emoticon")) { tstring strEmotionText = Text::toT(xml.getChildAttrib("PasteText")); if (strEmotionText.empty()) { strEmotionText = Text::toT(xml.getChildAttrib("Expression")); } string strEmotionBmpPath = xml.getChildAttrib("Bitmap"); if (!strEmotionBmpPath.empty()) { if (strEmotionBmpPath[0] == '.') { // change relative path strEmotionBmpPath = Util::getPath(Util::PATH_EMOPACKS) + strEmotionBmpPath; } else { strEmotionBmpPath = "EmoPacks\\" + strEmotionBmpPath; } } emoticons.push_back(new Emoticon(strEmotionText, strEmotionBmpPath)); } xml.stepOut(); } } catch(const Exception& e) { dcdebug("EmoticonsManager::Create: %s\n", e.getError().c_str()); return; } setUseEmoticons(true); }
void HighlightManager::load(SimpleXML& aXml){ aXml.resetCurrentChild(); if(aXml.findChild("Highlights")) { aXml.stepIn(); while(aXml.findChild("Highlight")) { try{ ColorSettings cs; cs.setContext(aXml.getIntChildAttrib("Context")); cs.setMatch( Text::toT( aXml.getChildAttrib("Match") ) ); cs.setBold( aXml.getBoolChildAttrib("Bold") ); cs.setItalic( aXml.getBoolChildAttrib("Italic") ); cs.setUnderline( aXml.getBoolChildAttrib("Underline") ); cs.setStrikeout( aXml.getBoolChildAttrib("Strikeout") ); //Convert old setting to correct context if(aXml.getBoolChildAttrib("IncludeNickList") == true) cs.setContext(CONTEXT_NICKLIST); cs.setCaseSensitive( aXml.getBoolChildAttrib("CaseSensitive") ); cs.setWholeLine( aXml.getBoolChildAttrib("WholeLine") ); cs.setWholeWord( aXml.getBoolChildAttrib("WholeWord") ); cs.setPopup( aXml.getBoolChildAttrib("Popup") ); cs.setTab( aXml.getBoolChildAttrib("Tab") ); cs.setPlaySound( aXml.getBoolChildAttrib("PlaySound") ); //cs.setLog( aXml.getBoolChildAttrib("LastLog") ); cs.setFlashWindow( aXml.getBoolChildAttrib("FlashWindow") ); cs.setMatchType( aXml.getIntChildAttrib("MatchType") ); cs.setHasFgColor(aXml.getBoolChildAttrib("HasFgColor")); cs.setHasBgColor(aXml.getBoolChildAttrib("HasBgColor")); cs.setBgColor(aXml.getIntChildAttrib("BgColor")); cs.setFgColor(aXml.getIntChildAttrib("FgColor")); cs.setSoundFile(aXml.getChildAttrib("SoundFile")); cs.setMatchColumn(aXml.getIntChildAttrib("MatchColumn")); cs.setRegexp(); colorSettings.push_back(cs); }catch(...) { } } aXml.stepOut(); } else { aXml.resetCurrentChild(); } }
void IpManager::loadWatch(SimpleXML& aXml){ aXml.resetCurrentChild(); if(aXml.findChild("IPWatch")) { aXml.stepIn(); while(aXml.findChild("IPWatch")) { addWatch(aXml.getIntChildAttrib("Mode"), aXml.getChildAttrib("Pattern"), aXml.getIntChildAttrib("Task"), aXml.getIntChildAttrib("Action"), aXml.getBoolChildAttrib("DisplayCheat"), aXml.getChildAttrib("Cheat"), aXml.getIntChildAttrib("MatchType"), aXml.getChildAttrib("ISP")); } aXml.stepOut(); aXml.resetCurrentChild(); if(aXml.findChild("RevisionInfo")) { aXml.stepIn(); if(aXml.findChild("Version")) { setIpWatchVersion(aXml.getChildData()); aXml.resetCurrentChild(); } aXml.stepOut(); } } }
bool IpGuard::load() { if (noSave) { Lock l(cs); noSave = false; try { SimpleXML xml; xml.fromXML(File(Util::getPath(Util::PATH_USER_CONFIG) + "IPGuard.xml", File::READ, File::OPEN).read()); if (xml.findChild("IpRanges")) { xml.stepIn(); while (xml.findChild("Range")) { uint32_t start = Util::toUInt32(xml.getChildAttrib("Start")); uint32_t end = Util::toUInt32(xml.getChildAttrib("End")); ranges.push_front(range(++lastRange, xml.getChildAttrib("Comment"), ip(std::min(start, end)), ip(std::max(start, end)))); } xml.resetCurrentChild(); xml.stepOut(); } } catch (const Exception& e) { dcdebug("IpGuard::load: %s\n", e.getError().c_str()); } // Optimize ranges ranges.sort(); ranges.unique(merger); return true; } return false; }
void WebShortcuts::load(SimpleXML& xml) { xml.resetCurrentChild(); if(xml.findChild("WebShortcuts")){ xml.stepIn(); clear(); while(xml.findChild("WebShortcut")){ auto tmp = new WebShortcut(); tmp->name = xml.getChildAttrib("Name"); tmp->key = xml.getChildAttrib("Key"); tmp->url = xml.getChildAttrib("URL"); tmp->clean = xml.getBoolChildAttrib("Clean"); list.push_back(tmp); } xml.stepOut(); } }
void ToolbarManager::load(SimpleXML& aXml) { if(aXml.findChild("Rebars")) { aXml.stepIn(); while(aXml.findChild("Rebar")) { ToolbarEntry* t = new ToolbarEntry(); t->setName(aXml.getChildAttrib("Name")); t->setID(aXml.getChildAttrib("ID")); t->setCX(aXml.getChildAttrib("CX")); t->setBreakLine(aXml.getChildAttrib("BreakLine")); t->setBandCount(aXml.getIntChildAttrib("BandCount")); toolbarEntries.push_back(t); } aXml.stepOut(); } else { // Default toolbar layout - for MainFrame rebar ToolbarEntry* t = new ToolbarEntry(); t->setName("MainToolBar"); t->setID("60160,60163,60161,60162"); t->setCX("1056,214,731,268"); t->setBreakLine("1,0,1,0"); t->setBandCount(4); toolbarEntries.push_back(t); } }
void ResourceManager::loadLanguage(const string& aFile) { try { File f(aFile, File::READ, File::OPEN, File::BUFFER_SEQUENTIAL, false); SimpleXML xml; xml.fromXML(f.read()); unordered_map<string, int> h; for(int i = 0; i < LAST; ++i) { h[names[i]] = i; } string childName = "String"; string attribName = "Name"; if (xml.findChild("Language")) { rtl = xml.getBoolChildAttrib("RightToLeft"); xml.stepIn(); if (xml.findChild("Strings")) { xml.stepIn(); } } else { xml.resetCurrentChild(); if (xml.findChild("resources")) { xml.stepIn(); childName = "string"; attribName = "name"; } else { throw Exception("Invalid format"); } } while (xml.findChild(childName)) { const auto j = h.find(xml.getChildAttrib(attribName)); if(j != h.end()) { strings[j->second] = xml.getChildData(); } } createWide(); } catch(const Exception& e) { LogManager::getInstance()->message("Failed to load the language file " + aFile + ": " + e.getError(), LogManager::LOG_ERROR); } }
void SettingsManager::load(string const& aFileName) { try { SimpleXML xml; xml.fromXML(File(aFileName, File::READ, File::OPEN).read()); xml.resetCurrentChild(); xml.stepIn(); if(xml.findChild("Settings")) { xml.stepIn(); int i; for(i=STR_FIRST; i<STR_LAST; i++) { const string& attr = settingTags[i]; dcassert(attr.find("SENTRY") == string::npos); if(xml.findChild(attr)) set(StrSetting(i), xml.getChildData()); xml.resetCurrentChild(); } for(i=INT_FIRST; i<INT_LAST; i++) { const string& attr = settingTags[i]; dcassert(attr.find("SENTRY") == string::npos); if(xml.findChild(attr)) set(IntSetting(i), Util::toInt(xml.getChildData())); xml.resetCurrentChild(); } for(i=FLOAT_FIRST; i<FLOAT_LAST; i++) { const string& attr = settingTags[i]; dcassert(attr.find("SENTRY") == string::npos); if(xml.findChild(attr)) set(FloatSetting(i), Util::toInt(xml.getChildData()) / 1000.); xml.resetCurrentChild(); } for(i=INT64_FIRST; i<INT64_LAST; i++) { const string& attr = settingTags[i]; dcassert(attr.find("SENTRY") == string::npos); if(xml.findChild(attr)) set(Int64Setting(i), Util::toInt64(xml.getChildData())); xml.resetCurrentChild(); } xml.stepOut(); } xml.resetCurrentChild(); if(xml.findChild("SearchTypes")) { try { searchTypes.clear(); xml.stepIn(); while(xml.findChild("SearchType")) { const string& extensions = xml.getChildData(); if(extensions.empty()) { continue; } const string& name = xml.getChildAttrib("Id"); if(name.empty()) { continue; } searchTypes[name] = StringTokenizer<string>(extensions, ';').getTokens(); } xml.stepOut(); } catch(const SimpleXMLException&) { setSearchTypeDefaults(); } } if(SETTING(PRIVATE_ID).length() != 39 || CID(SETTING(PRIVATE_ID)).isZero()) { set(PRIVATE_ID, CID::generate().toBase32()); } double v = Util::toDouble(SETTING(CONFIG_VERSION)); // if(v < 0.x) { // Fix old settings here } if(v <= 0.674) { // Formats changed, might as well remove these... unset(LOG_FORMAT_POST_DOWNLOAD); unset(LOG_FORMAT_POST_UPLOAD); unset(LOG_FORMAT_MAIN_CHAT); unset(LOG_FORMAT_PRIVATE_CHAT); unset(LOG_FORMAT_STATUS); unset(LOG_FORMAT_SYSTEM); unset(LOG_FILE_MAIN_CHAT); unset(LOG_FILE_STATUS); unset(LOG_FILE_PRIVATE_CHAT); unset(LOG_FILE_UPLOAD); unset(LOG_FILE_DOWNLOAD); unset(LOG_FILE_SYSTEM); } if(SETTING(SET_MINISLOT_SIZE) < 64) set(SET_MINISLOT_SIZE, 64); if(SETTING(AUTODROP_INTERVAL) < 1) set(AUTODROP_INTERVAL, 1); if(SETTING(AUTODROP_ELAPSED) < 1) set(AUTODROP_ELAPSED, 1); if(SETTING(AUTO_SEARCH_LIMIT) > 5) set(AUTO_SEARCH_LIMIT, 5); else if(SETTING(AUTO_SEARCH_LIMIT) < 1) set(AUTO_SEARCH_LIMIT, 1); #ifdef _DEBUG set(PRIVATE_ID, CID::generate().toBase32()); #endif setDefault(UDP_PORT, SETTING(TCP_PORT)); File::ensureDirectory(SETTING(TLS_TRUSTED_CERTIFICATES_PATH)); fire(SettingsManagerListener::Load(), xml); xml.stepOut(); } catch(const Exception&) { if(CID(SETTING(PRIVATE_ID)).isZero()) set(PRIVATE_ID, CID::generate().toBase32()); } if (SETTING(DHT_KEY).length() != 39 || CID(SETTING(DHT_KEY)).isZero()) set(DHT_KEY, CID::generate().toBase32()); }