//static void HippoGridInfo::onXmlCharacterData(void* userData, const XML_Char* s, int len) { HippoGridInfo* self = (HippoGridInfo*)userData; switch (self->mXmlState) { case XML_GRIDNICK: { if (self->mGridNick == "") { self->mGridNick.assign(s, len); self->mGridNick = sanitizeGridNick(self->mGridNick); } break; } case XML_PLATFORM: { std::string platform(s, len); self->setPlatform(platform); break; } case XML_LOGINURI: { self->setLoginUri(std::string(s, len)); break; } case XML_HELPERURI: { self->setHelperUri(std::string(s, len)); break; } case XML_SEARCH: { self->mSearchUrl.assign(s, len); //sanitizeQueryUrl(mSearchUrl); break; } case XML_GRIDNAME: { if (self->mGridName == "") { self->mGridName.assign(s, len); } break; } case XML_LOGINPAGE: self->mLoginPage.assign(s, len); break; case XML_WEBSITE: self->mWebSite.assign(s, len); break; case XML_SUPPORT: self->mSupportUrl.assign(s, len); break; case XML_REGISTER: self->mRegisterUrl.assign(s, len); break; case XML_PASSWORD: self->mPasswordUrl.assign(s, len); break; case XML_MESSAGE: self->mGridMessage.assign(s, len); break; case XML_VOID: break; } }
void HippoGridManager::parseData(LLSD &gridInfo, bool mergeIfNewer) { if (mergeIfNewer) { LLSD::array_const_iterator it, end = gridInfo.endArray(); for (it = gridInfo.beginArray(); it != end; ++it) { LLSD gridMap = *it; if (gridMap.has("default_grids_version")) { int version = gridMap["default_grids_version"]; if (version <= mDefaultGridsVersion) return; else break; } } if (it == end) { llwarns << "Grid data has no version number." << llendl; return; } } llinfos << "Loading grid data." << llendl; LLSD::array_const_iterator it, end = gridInfo.endArray(); for (it = gridInfo.beginArray(); it != end; ++it) { LLSD gridMap = *it; if (gridMap.has("default_grids_version")) { mDefaultGridsVersion = gridMap["default_grids_version"]; } else if (gridMap.has("gridnick") && gridMap.has("loginuri")) { std::string gridnick = gridMap["gridnick"]; HippoGridInfo *grid; GridIterator it = mGridInfo.find(gridnick); bool newGrid = (it == mGridInfo.end()); if (newGrid) { // create new grid info grid = new HippoGridInfo(gridnick); } else { // update existing grid info grid = it->second; } grid->setLoginUri(gridMap["loginuri"]); if (gridMap.has("platform")) grid->setPlatform(gridMap["platform"]); if (gridMap.has("gridname")) grid->setGridName(gridMap["gridname"]); if (gridMap.has("loginpage")) grid->setLoginPage(gridMap["loginpage"]); if (gridMap.has("helperuri")) grid->setHelperUri(gridMap["helperuri"]); if (gridMap.has("website")) grid->setWebSite(gridMap["website"]); if (gridMap.has("support")) grid->setSupportUrl(gridMap["support"]); if (gridMap.has("register")) grid->setRegisterUrl(gridMap["register"]); if (gridMap.has("password")) grid->setPasswordUrl(gridMap["password"]); //if (gridMap.has("search")) grid->setSearchUrl(gridMap["search"]); if (gridMap.has("render_compat")) grid->setRenderCompat(gridMap["render_compat"]); if (gridMap.has("firstname")) grid->setFirstName(gridMap["firstname"]); if (gridMap.has("lastname")) grid->setLastName(gridMap["lastname"]); if (gridMap.has("avatarpassword")) grid->setAvatarPassword(gridMap["avatarpassword"]); if (newGrid) addGrid(grid); } } }
void HippoGridManager::parseData(LLSD &gridInfo, bool mergeIfNewer) { LLSD::array_const_iterator it, end = gridInfo.endArray(); for (it = gridInfo.beginArray(); it != end; ++it) { LLSD gridMap = *it; if (gridMap.has("gridnick") && gridMap.has("loginuri")) { std::string gridnick = gridMap["gridnick"]; HippoGridInfo *grid; GridIterator it = mGridInfo.find(gridnick); bool newGrid = (it == mGridInfo.end()); if (gridMap.has("version")) { int version = gridMap["version"]; if (version == -1) { // delete grid if (!newGrid) mGridInfo.erase(it); continue; } else if (mergeIfNewer && !newGrid && (version <= it->second->getVersion())) { // don't update if version is not newer continue; } } if (newGrid) { // create new grid info grid = new HippoGridInfo(gridnick); } else { // update existing grid info grid = it->second; } grid->setLoginUri(gridMap["loginuri"]); if (gridMap.has("platform")) grid->setPlatform(gridMap["platform"]); if (gridMap.has("gridname")) grid->setGridName(gridMap["gridname"]); if (gridMap.has("lastlogin_fname")) grid->setLastFName(gridMap["lastlogin_fname"]); if (gridMap.has("lastlogin_lname")) grid->setLastLName(gridMap["lastlogin_lname"]); if (gridMap.has("loginpage")) grid->setLoginPage(gridMap["loginpage"]); if (gridMap.has("helperuri")) grid->setHelperUri(gridMap["helperuri"]); if (gridMap.has("website")) grid->setWebSite(gridMap["website"]); if (gridMap.has("support")) grid->setSupportUrl(gridMap["support"]); if (gridMap.has("register")) grid->setRegisterUrl(gridMap["register"]); if (gridMap.has("password")) grid->setPasswordUrl(gridMap["password"]); //if (gridMap.has("search")) grid->setSearchUrl(gridMap["search"]); if (gridMap.has("render_compat")) grid->setRenderCompat(gridMap["render_compat"]); if (gridMap.has("version")) grid->setVersion(gridMap["version"]); if (newGrid) addGrid(grid); } } }
void FloaterGridManager::applyChanges() { HippoGridInfo* gridInfo = gHippoGridManager->getGrid(mCurGrid); if (gridInfo) { if (gridInfo->getGridNick() == childGetValue("gridnick").asString()) { gridInfo->setGridName(childGetValue("gridname")); gridInfo->setLoginUri(childGetValue("loginuri")); gridInfo->setLoginPage(childGetValue("loginpage")); gridInfo->setHelperUri(childGetValue("helperuri")); gridInfo->setWebSite(childGetValue("website")); gridInfo->setSupportUrl(childGetValue("support")); gridInfo->setRegisterUrl(childGetValue("register")); gridInfo->setPasswordUrl(childGetValue("password")); gridInfo->setSearchUrl(childGetValue("search")); gridInfo->setRenderCompat(childGetValue("render_compat")); gridInfo->setFirstName(childGetValue("first_name")); gridInfo->setLastName(childGetValue("last_name")); if(childGetValue("avatar_password").asString().empty()) gridInfo->setAvatarPassword(std::string("")); else if(childGetValue("avatar_password").asString() != std::string(PASSWORD_FILLER)) { // store account authentication data std::string auth_password = childGetValue("avatar_password"); std::string hashed_password; hashPassword(auth_password, hashed_password); gridInfo->setAvatarPassword(hashed_password); } //this bug was a feature -Patrick Sapinski (Friday, August 21, 2009) //LLPanelLogin::setFields(gridInfo->getFirstName(), gridInfo->getLastName(), // gridInfo->getAvatarPassword(), true); } else { llwarns << "Grid nickname mismatch, ignoring changes." << llendl; } } }
// returns false, if adding new grid failed bool HippoPanelGridsImpl::saveCurGrid() { HippoGridInfo *gridInfo = 0; gridInfo = gHippoGridManager->getGrid(mCurGrid); //gridInfo->retrieveGridInfo(); refresh(); std::string gridname = childGetValue("gridname"); if (gridname == "<required>") gridname = ""; std::string loginuri = childGetValue("loginuri"); if (loginuri == "<required>") loginuri = ""; if (gridname.empty() && !loginuri.empty()) this->retrieveGridInfo(); if ((mState == ADD_NEW) || (mState == ADD_COPY)) { // check nickname std::string gridname = childGetValue("gridname"); childSetValue("gridname", (gridname != "")? gridname: "<required>"); if (gridname == "") { LLNotificationsUtil::add("GridsNoNick"); return false; } if (gHippoGridManager->getGrid(gridname)) { LLSD args; args["NAME"] = gridname; LLNotificationsUtil::add("GridExists", args); return false; } // check login URI if (loginuri == "") { LLSD args; args["NAME"] = gridname; LLNotificationsUtil::add("GridsNoLoginUri", args); return false; } mState = NORMAL; mCurGrid = gridname; gridInfo = new HippoGridInfo(gridname); gHippoGridManager->addGrid(gridInfo); gridInfo->retrieveGridInfo(); } if (!gridInfo) { llwarns << "Grid not found, ignoring changes." << llendl; return true; } gridInfo->setPlatform(childGetValue("platform")); gridInfo->setGridName(childGetValue("gridname")); gridInfo->setLoginUri(childGetValue("loginuri")); gridInfo->setLoginPage(childGetValue("loginpage")); gridInfo->setHelperUri(childGetValue("helperuri")); gridInfo->setWebSite(childGetValue("website")); gridInfo->setSupportUrl(childGetValue("support")); gridInfo->setRegisterUrl(childGetValue("register")); gridInfo->setPasswordUrl(childGetValue("password")); gridInfo->setSearchUrl(childGetValue("search")); gridInfo->setRenderCompat(childGetValue("render_compat")); refresh(); return true; }
// returns false, if adding new grid failed bool HippoPanelGridsImpl::saveCurGrid() { HippoGridInfo *gridInfo = 0; gridInfo = gHippoGridManager->getGrid(mCurGrid); //gridInfo->getGridInfo(); refresh(); std::string gridname = childGetValue("gridname"); if (gridname == "<required>") gridname = ""; std::string loginuri = childGetValue("loginuri"); if (loginuri == "<required>") loginuri = ""; if (gridname.empty() && !loginuri.empty()) this->retrieveGridInfo(); if ((mState == ADD_NEW) || (mState == ADD_COPY)) { // check nickname std::string gridname = childGetValue("gridname"); childSetValue("gridname", (gridname != "")? gridname: "<required>"); if (gridname == "") { LLNotificationsUtil::add("GridsNoNick"); return false; } if (gHippoGridManager->getGrid(gridname)) { LLSD args; args["NAME"] = gridname; LLNotificationsUtil::add("GridExists", args); return false; } // check login URI if (loginuri == "") { LLSD args; args["NAME"] = gridname; LLNotificationsUtil::add("GridsNoLoginUri", args); return false; } mState = NORMAL; mCurGrid = gridname; gridInfo = new HippoGridInfo(gridname); gHippoGridManager->addGrid(gridInfo); try { gridInfo->getGridInfo(); } catch (AIAlert::ErrorCode const& error) { if (error.getCode() == HTTP_NOT_FOUND || error.getCode() == HTTP_METHOD_NOT_ALLOWED) { // Ignore this error; it might be a user entered entry for a grid that has no get_grid_info support. llwarns << AIAlert::text(error) << llendl; } else if (error.getCode() == HTTP_OK) { // XML parse error. AIAlert::add("GridInfoError", error); } else { // Append GridInfoErrorInstruction to error message. AIAlert::add("GridInfoError", AIAlert::Error(AIAlert::Prefix(), AIAlert::not_modal, error, "GridInfoErrorInstruction")); } } } if (!gridInfo) { llwarns << "Grid not found, ignoring changes." << llendl; return true; } gridInfo->setPlatform(childGetValue("platform")); gridInfo->setGridName(childGetValue("gridname")); gridInfo->setLoginUri(childGetValue("loginuri")); gridInfo->setLoginPage(childGetValue("loginpage")); gridInfo->setHelperUri(childGetValue("helperuri")); gridInfo->setWebSite(childGetValue("website")); gridInfo->setSupportUrl(childGetValue("support")); gridInfo->setRegisterUrl(childGetValue("register")); gridInfo->setPasswordUrl(childGetValue("password")); gridInfo->setSearchUrl(childGetValue("search")); gridInfo->setRenderCompat(childGetValue("render_compat")); refresh(); return true; }
bool FloaterGridManager::createNewGrid() { // check nickname std::string gridnick = childGetValue("gridnick"); if (gridnick == "<required>") { gridnick = ""; } if (gridnick.empty()) { LLNotifications::instance().add("GridsNoNick"); return false; } if (gHippoGridManager->getGrid(gridnick)) { LLSD args; args["[NAME]"] = gridnick; LLNotifications::instance().add("GridExists", args); return false; } // check login URI std::string loginuri = childGetValue("loginuri"); if ((loginuri.empty()) || (loginuri == "<required>")) { LLSD args; args["[NAME]"] = gridnick; LLNotifications::instance().add("GridsNoLoginUri", args); return false; } // create new grid HippoGridInfo* grid = new HippoGridInfo(gridnick); grid->setGridName(childGetValue("gridname")); grid->setLoginUri(loginuri); grid->setLoginPage(childGetValue("loginpage")); grid->setHelperUri(childGetValue("helperuri")); grid->setWebSite(childGetValue("website")); grid->setSupportUrl(childGetValue("support")); grid->setRegisterUrl(childGetValue("register")); grid->setPasswordUrl(childGetValue("password")); grid->setSearchUrl(childGetValue("search")); grid->setRenderCompat(childGetValue("render_compat")); gHippoGridManager->addGrid(grid); grid->setFirstName(childGetValue("first_name")); grid->setLastName(childGetValue("last_name")); if(childGetValue("avatar_password").asString().empty()) grid->setAvatarPassword(std::string("")); else { std::string hashed_password; hashPassword(childGetValue("avatar_password"), hashed_password); grid->setAvatarPassword(hashed_password); } setCurGrid(gridnick); return true; }
void HippoGridManager::parseData(LLSD &gridInfo, bool mergeIfNewer) { if (mergeIfNewer) { LLSD::array_const_iterator it, end = gridInfo.endArray(); for (it = gridInfo.beginArray(); it != end; ++it) { LLSD gridMap = *it; if (gridMap.has("default_grids_version")) { int version = gridMap["default_grids_version"]; if (version <= mDefaultGridsVersion) return; else break; } } if (it == end) { llwarns << "Grid data has no version number." << llendl; return; } } llinfos << "Loading grid data." << llendl; LLSD::array_const_iterator it, end = gridInfo.endArray(); for (it = gridInfo.beginArray(); it != end; ++it) { LLSD gridMap = *it; if (gridMap.has("default_grids_version")) { mDefaultGridsVersion = gridMap["default_grids_version"]; } else if ((gridMap.has("gridnick") || gridMap.has("gridname")) && gridMap.has("loginuri")) { std::string gridnick = gridMap["gridnick"]; std::string gridname = gridMap["gridname"]; HippoGridInfo* grid; GridIterator it = mGridInfo.end(); for (it = mGridInfo.begin(); it != mGridInfo.end(); ++it) { if(!gridnick.empty() && (it->second->getGridNick() == gridnick)) { break; } if(gridnick.empty() && !gridname.empty() && (it->first == gridname)) { break; } } bool newGrid = (it == mGridInfo.end()); if (newGrid || !it->second) { if(gridname.empty()) { gridname = gridnick; } // create new grid info grid = new HippoGridInfo(gridname); } else { // update existing grid info grid = it->second; } grid->setLoginUri(gridMap["loginuri"]); if (gridMap.has("platform")) grid->setPlatform(gridMap["platform"]); if (gridMap.has("gridname")) grid->setGridName(gridMap["gridname"]); if (gridMap.has("gridnick")) grid->setGridNick(gridMap["gridnick"]); if (gridMap.has("loginpage")) grid->setLoginPage(gridMap["loginpage"]); if (gridMap.has("helperuri")) grid->setHelperUri(gridMap["helperuri"]); if (gridMap.has("website")) grid->setWebSite(gridMap["website"]); if (gridMap.has("support")) grid->setSupportUrl(gridMap["support"]); if (gridMap.has("register")) grid->setRegisterUrl(gridMap["register"]); if (gridMap.has("password")) grid->setPasswordUrl(gridMap["password"]); if (gridMap.has("search")) grid->setSearchUrl(gridMap["search"]); if (gridMap.has("render_compat")) grid->setRenderCompat(gridMap["render_compat"]); if (gridMap.has("inventory_links")) grid->setSupportsInvLinks(gridMap["inventory_links"]); if (gridMap.has("auto_update")) grid->mAutoUpdate = gridMap["auto_update"]; if (gridMap.has("locked")) grid->mLocked = gridMap["locked"]; if (newGrid) addGrid(grid); } } }