//=============================================================================* void BAR_CSCOnlineProxy::Login(const string& sRemoteHost, const string& sPassword) { //=== check if logging in is allowed if ( ! IsLoginAllowed() ) { Throw_AlreadyLoggedIn(); } BAR_TRACE1(2, "login started, host=%s", sRemoteHost.c_str()); m_sRemoteHost = sRemoteHost; ConnectToControl(sRemoteHost, sPassword); //=== finished BAR_TRACE1(2, "logged in, host=%s", sRemoteHost.c_str()); SetLoggedIn(true); }
void Player::OnLocationEntry() { Ve1ObjectChar::OnLocationEntry(); SceneNode* root = GetVe1SceneGraph()->GetRootNode(SceneGraph::AMJU_OPAQUE); if (root) { root->AddChild(m_arrow.GetPtr()); SetArrowVis(false); } m_nameTag = new PlayerNameNode(this); if (m_sceneNode) { if (m_nameTag) { m_sceneNode->AddChild(m_nameTag.GetPtr()); } if (m_effect) { m_sceneNode->AddChild(m_effect.GetPtr()); } } // TODO Portal should have a heading which you should face when you appear at the destination m_isMoving = false; SetVel(Vec3f(0, 0, 0)); // TODO walk out of doorway ? // TODO Set m_newPos ?? // Set appearance SetLoggedIn(IsLoggedIn()); // If we are carrying something, change its location too if (m_carrying) { TheObjectUpdater::Instance()->SendChangeLocationReq(m_carrying->GetId(), GetPos(), GetLocation()); } }
//=============================================================================* void BAR_CSCOnlineProxy::Logout() { if ( IsLoggedIn() ) { BAR_TRACE(2, "logout started"); } DisconnectFromControl(); //=== unregister type libs if any were registered if ( m_pTlbCSCOnlSrv != NULL ) { delete m_pTlbCSCOnlSrv; m_pTlbCSCOnlSrv = NULL; } //=== finished if ( IsLoggedIn() ) { BAR_TRACE(2, "logged out"); } SetLoggedIn(false); }
void LoginStateWidget::Logout() { SetLoggedIn(LoggedOut); emit LogoutClicked(); }
CWebSock::EPageReqResult CWebSock::OnPageRequestInternal(const CString& sURI, CString& sPageRet) { if (CZNC::Get().GetProtectWebSessions() && GetSession()->GetIP() != GetRemoteIP()) { DEBUG("Expected IP: " << GetSession()->GetIP()); DEBUG("Remote IP: " << GetRemoteIP()); PrintErrorPage(403, "Access denied", "This session does not belong to your IP."); return PAGE_DONE; } // Check that they really POSTed from one our forms by checking if they // know the "secret" CSRF check value. Don't do this for login since // CSRF against the login form makes no sense and the login form does a // cookies-enabled check which would break otherwise. if (IsPost() && GetParam("_CSRF_Check") != GetCSRFCheck() && sURI != "/login") { DEBUG("Expected _CSRF_Check: " << GetCSRFCheck()); DEBUG("Actual _CSRF_Check: " << GetParam("_CSRF_Check")); PrintErrorPage(403, "Access denied", "POST requests need to send " "a secret token to prevent cross-site request forgery attacks."); return PAGE_DONE; } SendCookie("SessionId", GetSession()->GetId()); if (GetSession()->IsLoggedIn()) { m_sUser = GetSession()->GetUser()->GetUserName(); m_bLoggedIn = true; } // Handle the static pages that don't require a login if (sURI == "/") { if(!m_bLoggedIn && GetParam("cookie_check", false).ToBool() && GetRequestCookie("SessionId").empty()) { GetSession()->AddError("Your browser does not have cookies enabled for this site!"); } return PrintTemplate("index", sPageRet); } else if (sURI == "/favicon.ico") { return PrintStaticFile("/pub/favicon.ico", sPageRet); } else if (sURI == "/robots.txt") { return PrintStaticFile("/pub/robots.txt", sPageRet); } else if (sURI == "/logout") { GetSession()->SetUser(NULL); SetLoggedIn(false); Redirect("/"); // We already sent a reply return PAGE_DONE; } else if (sURI == "/login") { if (GetParam("submitted").ToBool()) { m_sUser = GetParam("user"); m_sPass = GetParam("pass"); m_bLoggedIn = OnLogin(m_sUser, m_sPass); // AcceptedLogin()/RefusedLogin() will call Redirect() return PAGE_DEFERRED; } Redirect("/"); // the login form is here return PAGE_DONE; } else if (sURI.Left(5) == "/pub/") { return PrintStaticFile(sURI, sPageRet); } else if (sURI.Left(11) == "/skinfiles/") { CString sSkinName = sURI.substr(11); CString::size_type uPathStart = sSkinName.find("/"); if (uPathStart != CString::npos) { CString sFilePath = sSkinName.substr(uPathStart + 1); sSkinName.erase(uPathStart); m_Template.ClearPaths(); m_Template.AppendPath(GetSkinPath(sSkinName) + "pub"); if (PrintFile(m_Template.ExpandFile(sFilePath))) { return PAGE_DONE; } else { return PAGE_NOTFOUND; } } return PAGE_NOTFOUND; } else if (sURI.Left(6) == "/mods/" || sURI.Left(10) == "/modfiles/") { ParsePath(); // Make sure modules are treated as directories if (sURI.Right(1) != "/" && sURI.find(".") == CString::npos && sURI.TrimLeft_n("/mods/").TrimLeft_n("/").find("/") == CString::npos) { Redirect(sURI + "/"); return PAGE_DONE; } CModule *pModule = CZNC::Get().GetModules().FindModule(m_sModName); if (!pModule) { // Check if GetSession()->GetUser() is NULL and display // an error in that case if (!ForceLogin()) return PAGE_DONE; pModule = GetSession()->GetUser()->GetModules().FindModule(m_sModName); } if (!pModule) { return PAGE_NOTFOUND; } else if (pModule->WebRequiresLogin() && !ForceLogin()) { return PAGE_PRINT; } else if (pModule->WebRequiresAdmin() && !GetSession()->IsAdmin()) { PrintErrorPage(403, "Forbidden", "You need to be an admin to access this module"); return PAGE_DONE; } else if (!pModule->IsGlobal() && pModule->GetUser() != GetSession()->GetUser()) { PrintErrorPage(403, "Forbidden", "You must login as " + pModule->GetUser()->GetUserName() + " in order to view this page"); return PAGE_DONE; } else if (pModule->OnWebPreRequest(*this, m_sPage)) { return PAGE_DEFERRED; } VWebSubPages& vSubPages = pModule->GetSubPages(); for (unsigned int a = 0; a < vSubPages.size(); a++) { TWebSubPage& SubPage = vSubPages[a]; bool bActive = (m_sModName == pModule->GetModName() && m_sPage == SubPage->GetName()); if (bActive && SubPage->RequiresAdmin() && !GetSession()->IsAdmin()) { PrintErrorPage(403, "Forbidden", "You need to be an admin to access this page"); return PAGE_DONE; } } if (pModule && !pModule->IsGlobal() && (!IsLoggedIn() || pModule->GetUser() != GetSession()->GetUser())) { AddModLoop("UserModLoop", *pModule); } if (sURI.Left(10) == "/modfiles/") { m_Template.AppendPath(GetSkinPath(GetSkinName()) + "/mods/" + m_sModName + "/files/"); m_Template.AppendPath(pModule->GetModDataDir() + "/files/"); if (PrintFile(m_Template.ExpandFile(m_sPage.TrimLeft_n("/")))) { return PAGE_PRINT; } else { return PAGE_NOTFOUND; } } else { SetPaths(pModule, true); /* if a module returns false from OnWebRequest, it does not want the template to be printed, usually because it did a redirect. */ if (pModule->OnWebRequest(*this, m_sPage, m_Template)) { // If they already sent a reply, let's assume // they did what they wanted to do. if (SentHeader()) { return PAGE_DONE; } return PrintTemplate(m_sPage, sPageRet, pModule); } if (!SentHeader()) { PrintErrorPage(404, "Not Implemented", "The requested module does not acknowledge web requests"); } return PAGE_DONE; } } else { CString sPage(sURI.Trim_n("/")); if (sPage.length() < 32) { for (unsigned int a = 0; a < sPage.length(); a++) { unsigned char c = sPage[a]; if ((c < '0' || c > '9') && (c < 'a' || c > 'z') && (c < 'A' || c > 'Z') && c != '_') { return PAGE_NOTFOUND; } } return PrintTemplate(sPage, sPageRet); } } return PAGE_NOTFOUND; }
void Player::SetKeyVal(const std::string& key, const std::string& val) { Ve1ObjectChar::SetKeyVal(key, val); static ChatConsole* cc = TheChatConsole::Instance(); static GSMain* gsm = TheGSMain::Instance(); if (key == "loggedin") { bool isLoggedIn = (val == "y"); SetLoggedIn(isLoggedIn); SetLoggedInPlayer(this, m_isLoggedIn); gsm->SetNumPlayersOnline(CountOnlinePlayers()); // So we can notify if current recipient logs in or out cc->SetPlayerLoggedIn(this, isLoggedIn); } else if (key == "istyping") { int recipId = ToInt(val); bool isTyping = (recipId > 0); cc->SetPlayerIsTyping(isTyping, GetId(), recipId); } else if (key == "beat_up_by") { if (val != "0" && IsLocalPlayer()) { TheObjectUpdater::Instance()->SendUpdateReq(GetId(), "beat_up_by", "0"); int oppId = ToInt(val); static int prevOpp = 0; Player* opp = dynamic_cast<Player*>(TheGame::Instance()->GetGameObject(oppId).GetPtr()); std::string s = "You just got beat up!"; if (opp && !opp->GetName().empty()) { s = "You just got beat up by " + opp->GetName(); if (oppId == prevOpp) { s += " again!"; } else { s += "!"; } } prevOpp = oppId; // remember previous opponent LurkMsg lm(s, LURK_FG, LURK_BG, AMJU_CENTRE); TheLurker::Instance()->Queue(lm); ShowAttacked(); } } else if (key == FUELCELL_KEY) { if (IsLocalPlayer()) { int fc = ToInt(val); // Lurk msg - total number of fuel cells ever brought to ship std::string s; if (m_totalFuelCells != -1) { if (fc == 1) { s = "You brought a fuel cell to the ship!"; } else { s = "You have brought a total of " + val + " fuel cells to the ship!"; } LurkMsg lm(s, LURK_FG, LURK_BG, AMJU_CENTRE); TheLurker::Instance()->Queue(lm); } m_totalFuelCells = fc; if (fc > 0 && !HasWonAchievement(ACH_FUEL_CELL_TO_SHIP_1)) { OnWinAchievement(ACH_FUEL_CELL_TO_SHIP_1, "You brought your first fuel cell back to the ship!"); } if (fc >= 5 && !HasWonAchievement(ACH_FUEL_CELL_TO_SHIP_5)) { OnWinAchievement(ACH_FUEL_CELL_TO_SHIP_5, "You brought 5 fuel cells back to the ship!"); } if (fc >= 10 && !HasWonAchievement(ACH_FUEL_CELL_TO_SHIP_10)) { OnWinAchievement(ACH_FUEL_CELL_TO_SHIP_10, "You brought 10 fuel cells back to the ship!"); } // etc } } else if (key == LAST_MSG_SENT_KEY) { TheMsgManager::Instance()->CheckForNewMsgs(); } }