bool Socket::HandleVerpassInput() { Player* mob = GetPlayer(); std::string input = PopCommand(); if (!IsValidPassword(input)) { Write("That password isn't valid, please try again.\n"); return true; } mob->SetTempPassword(input); //passwords did not match, transfer control back to new password. if (!mob->ComparePassword()) { Write("That password isn't valid, please try again.\n"); SetConnectionType(ConnectionType::Newpass); return true; } Write(TELNET_ECHO_OFF); Write("What is your gender? Please enter male or female.\n"); SetConnectionType(ConnectionType::Gender); return true; }
/** Checks that a UserInfo is in a valid form as specified in RFC 3261. @return A boolean value of ETrue if uri contains valid UserInfo, EFalse if it does not. */ TBool TValidatorSip::IsValidUserInfo() const { const TDesC8& userInfo = iUri.Extract(EUriUserinfo); if (IsEmpty(userInfo)) { // The '@' UserInfo sparator was found in the URI but no username/password // is present return EFalse; } TInt separatorPos = userInfo.Locate(KUserPwdSeparator); if (separatorPos != KErrNotFound) { // seperator found so there is a username and password // the username is left of the separator if (!IsValidUser(userInfo.Left(separatorPos))) { return EFalse; } // the password is right of the separator return IsValidPassword(userInfo.Right(userInfo.Length() - separatorPos-1)); } // there is no password element return IsValidUser(userInfo); }
// // Check password is legal for a new account/password // bool CAccountManager::IsValidNewPassword( const SString& strPassword ) { if ( !IsValidPassword( strPassword ) ) return false; // Extra restrictions for new account passwords if ( strPassword == "*****" ) return false; return true; }
void COleDBConnectionDlg::OnOK() { UpdateData(); g_sDBDNS ? m_props.m_strServerName : m_props.m_strDSN; //g_sDBDNS = m_props.m_strServerName; g_sDBPassword = m_props.m_strPassword; g_sDBUser = m_props.m_strLoginName; g_sDBName = m_props.m_strDatabaseName; if(!IsValidPassword()) return; CDialog::OnOK(); }
bool CAccountManager::LogIn ( CClient* pClient, CClient* pEchoClient, const char* szNick, const char* szPassword ) { // Is he already logged in? if ( pClient->IsRegistered () ) { if ( pEchoClient ) pEchoClient->SendEcho ( "login: You are already logged in" ); return false; } // Get the players details if relevant string strPlayerName, strPlayerIP, strPlayerSerial; if ( pClient->GetClientType () == CClient::CLIENT_PLAYER ) { CPlayer* pPlayer = static_cast < CPlayer* > ( pClient ); strPlayerIP = pPlayer->GetSourceIP (); strPlayerName = pPlayer->GetNick (); strPlayerSerial = pPlayer->GetSerial (); } if ( m_AccountProtect.IsFlooding ( strPlayerIP.c_str () ) ) { if ( pEchoClient ) pEchoClient->SendEcho ( SString( "login: Account locked", szNick ).c_str() ); CLogger::AuthPrintf ( "LOGIN: Ignoring %s trying to log in as '%s' (IP: %s Serial: %s)\n", strPlayerName.c_str (), szNick, strPlayerIP.c_str (), strPlayerSerial.c_str () ); return false; } // Grab the account on his nick if any CAccount* pAccount = g_pGame->GetAccountManager ()->Get ( szNick ); if ( !pAccount ) { if ( pEchoClient ) pEchoClient->SendEcho( SString( "login: No known account for '%s'", szNick ).c_str() ); CLogger::AuthPrintf ( "LOGIN: %s tried to log in as '%s' (Unknown account) (IP: %s Serial: %s)\n", strPlayerName.c_str (), szNick, strPlayerIP.c_str (), strPlayerSerial.c_str () ); return false; } if ( pAccount->GetClient () ) { if ( pEchoClient ) pEchoClient->SendEcho ( SString( "login: Account for '%s' is already in use", szNick ).c_str() ); return false; } if ( !IsValidPassword( szPassword ) || !pAccount->IsPassword ( szPassword ) ) { if ( pEchoClient ) pEchoClient->SendEcho ( SString( "login: Invalid password for account '%s'", szNick ).c_str() ); CLogger::AuthPrintf ( "LOGIN: %s tried to log in as '%s' with an invalid password (IP: %s Serial: %s)\n", strPlayerName.c_str (), szNick, strPlayerIP.c_str (), strPlayerSerial.c_str () ); m_AccountProtect.AddConnect ( strPlayerIP.c_str () ); return false; } // Try to log him in return LogIn ( pClient, pEchoClient, pAccount ); }
bool Socket::HandleNewpassInput() { std::string input; Player* mob = GetPlayer(); input=PopCommand(); if (!IsValidPassword(input)) { Write("That password isn't valid, please try again.\n"); return true; } //transfer control to password verification Write("Please re-enter your password for varification.\n"); mob->SetPassword(input); SetConnectionType(ConnectionType::Verpass); return true; }
bool CAccountManager::LogIn ( CClient* pClient, CClient* pEchoClient, const char* szAccountName, const char* szPassword ) { // Is he already logged in? if ( pClient->IsRegistered () ) { if ( pEchoClient ) pEchoClient->SendEcho ( "login: You are already logged in" ); return false; } if ( pClient->GetClientType () != CClient::CLIENT_PLAYER ) { if ( pEchoClient ) pEchoClient->SendEcho ( "login: Only players can log in" ); return false; } // Get the players details CPlayer* pPlayer = static_cast < CPlayer* > ( pClient ); SString strPlayerName = pPlayer->GetNick (); SString strPlayerIP = pPlayer->GetSourceIP (); SString strPlayerSerial = pPlayer->GetSerial (); if ( m_AccountProtect.IsFlooding ( strPlayerIP.c_str () ) ) { if ( pEchoClient ) pEchoClient->SendEcho ( SString( "login: Account locked", szAccountName ).c_str() ); CLogger::AuthPrintf ( "LOGIN: Ignoring %s trying to log in as '%s' (IP: %s Serial: %s)\n", strPlayerName.c_str (), szAccountName, strPlayerIP.c_str (), strPlayerSerial.c_str () ); return false; } // Grab the account on his nick if any CAccount* pAccount = g_pGame->GetAccountManager ()->Get ( szAccountName ); if ( !pAccount ) { if ( pEchoClient ) pEchoClient->SendEcho( SString( "login: No known account for '%s'", szAccountName ).c_str() ); CLogger::AuthPrintf ( "LOGIN: %s tried to log in as '%s' (Unknown account) (IP: %s Serial: %s)\n", strPlayerName.c_str (), szAccountName, strPlayerIP.c_str (), strPlayerSerial.c_str () ); return false; } if ( pAccount->GetClient () ) { if ( pEchoClient ) pEchoClient->SendEcho ( SString( "login: Account for '%s' is already in use", szAccountName ).c_str() ); return false; } if ( !IsValidPassword( szPassword ) || !pAccount->IsPassword ( szPassword ) ) { if ( pEchoClient ) pEchoClient->SendEcho ( SString( "login: Invalid password for account '%s'", szAccountName ).c_str() ); CLogger::AuthPrintf ( "LOGIN: %s tried to log in as '%s' with an invalid password (IP: %s Serial: %s)\n", strPlayerName.c_str (), szAccountName, strPlayerIP.c_str (), strPlayerSerial.c_str () ); m_AccountProtect.AddConnect ( strPlayerIP.c_str () ); return false; } // Check serial authorization if ( IsAuthorizedSerialRequired( pAccount ) ) { pAccount->AddSerialForAuthorization( strPlayerSerial, strPlayerIP ); if ( !pAccount->IsSerialAuthorized( strPlayerSerial ) ) { if ( pEchoClient ) pEchoClient->SendEcho( SString( "login: Serial pending authorization for account '%s' - See https:""//mtasa.com/authserial", szAccountName ) ); CLogger::AuthPrintf( "LOGIN: %s tried to log in as '%s' with an unauthorized serial (IP: %s Serial: %s)\n", *strPlayerName, szAccountName, *strPlayerIP, *strPlayerSerial ); CLogger::AuthPrintf( "LOGIN: See https:""//mtasa.com/authserial\n" ); return false; } } // Log him in CAccount* pCurrentAccount = pClient->GetAccount (); pClient->SetAccount ( pAccount ); pAccount->SetClient ( pClient ); // Call the onPlayerLogin script event CLuaArguments Arguments; Arguments.PushAccount ( pCurrentAccount ); Arguments.PushAccount ( pAccount ); Arguments.PushBoolean ( false ); // was bAutoLogin if ( !pPlayer->CallEvent ( "onPlayerLogin", Arguments ) ) { // DENIED! pClient->SetAccount ( pCurrentAccount ); pAccount->SetClient ( NULL ); return false; } // Success is here pAccount->OnLoginSuccess ( strPlayerSerial, strPlayerIP ); SString strGroupList = SString::Join ( ", ", g_pGame->GetACLManager ()->GetObjectGroupNames ( pAccount->GetName (), CAccessControlListGroupObject::OBJECT_TYPE_USER ) ); CLogger::AuthPrintf ( "LOGIN: (%s) %s successfully logged in as '%s' (IP: %s Serial: %s)\n", strGroupList.c_str (), pClient->GetNick (), pAccount->GetName ().c_str (), strPlayerIP.c_str (), strPlayerSerial.c_str () ); // Tell the player if ( pEchoClient ) { pEchoClient->SendEcho ( "login: You successfully logged in" ); } // Update who was info if ( pClient->GetClientType () == CClient::CLIENT_PLAYER ) g_pGame->GetConsole ()->GetWhoWas ()->OnPlayerLogin ( static_cast < CPlayer* > ( pClient ) ); // Delete the old account if it was a guest account if ( !pCurrentAccount->IsRegistered () ) delete pCurrentAccount; return true; }