ScriptingManager::~ScriptingManager() { //dtor // save trusted scripts set ConfigManagerContainer::StringToStringMap myMap; int i = 0; TrustedScripts::iterator it; for (it = m_TrustedScripts.begin(); it != m_TrustedScripts.end(); ++it) { if (!it->second.permanent) continue; wxString key = wxString::Format(_T("trust%d"), i++); wxString value = wxString::Format(_T("%s?%x"), it->first.c_str(), it->second.crc); myMap.insert(myMap.end(), std::make_pair(key, value)); } Manager::Get()->GetConfigManager(_T("security"))->Write(_T("/trusted_scripts"), myMap); SquirrelVM::Shutdown(); }
void CfgPanel::OnApply() { LogManager *m = LogManager::Get(); for (ConfigManagerContainer::StringToStringMap::iterator i = c2l.begin(); i != c2l.end(); ++i) { if (!!i->second.IsEmpty()) { int slot = 0; while (slot <= LogManager::max_logs && m->Slot(slot).title != i->second) ++slot; m->SetLog(m->New(i->second), slot); } } // since we use ConfigManagerContainer::StringToStringMap, we could store whatever settings we have like: // ConfigManager::Get()->Write(_T("/loghacker/c2l"), c2l); // ConfigManager::Get()->Write(_T("/loghacker/c2f"), c2f); }
void ScriptingManager::RefreshTrusts() { // reload trusted scripts set m_TrustedScripts.clear(); ConfigManagerContainer::StringToStringMap myMap; Manager::Get()->GetConfigManager(_T("security"))->Read(_T("/trusted_scripts"), &myMap); ConfigManagerContainer::StringToStringMap::iterator it; for (it = myMap.begin(); it != myMap.end(); ++it) { wxString key = it->second.BeforeFirst(_T('?')); wxString value = it->second.AfterFirst(_T('?')); TrustedScriptProps props; props.permanent = true; unsigned long tmp; value.ToULong(&tmp, 16); props.crc = tmp; m_TrustedScripts.insert(m_TrustedScripts.end(), std::make_pair(key, props)); } }
void ConfigManager::Write(const wxString& name, const ConfigManagerContainer::StringToStringMap& map) { wxString key(name); TiXmlElement* e = AssertPath(key); TiXmlElement *leaf = GetUniqElement(e, key); TiXmlElement *mNode; mNode = GetUniqElement(leaf, _T("ssmap")); leaf->RemoveChild(mNode); mNode = GetUniqElement(leaf, _T("ssmap")); for (ConfigManagerContainer::StringToStringMap::const_iterator it = map.begin(); it != map.end(); ++it) { TiXmlElement s(cbU2C(it->first)); TiXmlText t(cbU2C(it->second)); t.SetCDATA(true); s.InsertEndChild(t); mNode->InsertEndChild(s); } }