Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Index: src/ascent-logonserver/AccountCache.cpp
- ===================================================================
- --- src/ascent-logonserver/AccountCache.cpp (revision 4331)
- +++ src/ascent-logonserver/AccountCache.cpp (working copy)
- @@ -217,6 +217,34 @@
- }
- }
- +void AccountMgr::CreateAccount(uint32 id, const char *username, const char *password, uint8 *EncryptedPassword, const char *GMFlags, uint32 Banned, const char *email, uint8 AccountFlags, const char *forceLanguage, uint32 Muted)
- +{
- + Account *acct = new Account;
- + acct->AccountId = id;
- + acct->AccountFlags = AccountFlags;
- + acct->Banned = Banned;
- + acct->SetGMFlags(GMFlags);
- + if(strcmp(forceLanguage, "enUS"))
- + {
- + // non-standard language forced
- + memcpy(acct->Locale, forceLanguage, 4);
- + acct->forcedLocale = true;
- + }
- + else
- + {
- + acct->Locale[0] = 'e';
- + acct->Locale[1] = 'n';
- + acct->Locale[2] = 'U';
- + acct->Locale[3] = 'S';
- + acct->forcedLocale = false;
- + }
- + acct->Muted = Muted;
- + memcpy(acct->SrpHash, EncryptedPassword, 20);
- +
- + AccountDatabase[username] = acct;
- + acct->UsernamePtr = (std::string*)&AccountDatabase.find(username)->first;
- +}
- +
- void AccountMgr::ReloadAccountsCallback()
- {
- ReloadAccounts(true);
- Index: src/ascent-logonserver/AccountCache.h
- ===================================================================
- --- src/ascent-logonserver/AccountCache.h (revision 4331)
- +++ src/ascent-logonserver/AccountCache.h (working copy)
- @@ -147,6 +147,7 @@
- return pAccount;
- }
- + void CreateAccount(uint32 id, const char * username, const char * password, uint8 * EncryptedPassword, const char * GMFlags, uint32 Banned, const char * email, uint8 AccountFlags, const char * forceLanguage, uint32 Muted);
- void UpdateAccount(Account * acct, Field * field);
- void ReloadAccounts(bool silent);
- void ReloadAccountsCallback();
- Index: src/ascent-logonserver/LogonCommServer.cpp
- ===================================================================
- --- src/ascent-logonserver/LogonCommServer.cpp (revision 4331)
- +++ src/ascent-logonserver/LogonCommServer.cpp (working copy)
- @@ -487,9 +487,127 @@
- recvData >> ip;
- if( sIPBanner.Remove( ip.c_str() ) )
- - sLogonSQL->Execute("DELETE FROM ipbans WHERE ip = \"%s\")", sLogonSQL->EscapeString(ip).c_str());
- + sLogonSQL->Execute("DELETE FROM ipbans WHERE ip = \"%s\"", sLogonSQL->EscapeString(ip).c_str());
- }break;
- + case 6: // set password
- + {
- + string account;
- + string password;
- + recvData >> account >> password;
- +
- + // remember we expect this in uppercase
- + ASCENT_TOUPPER(account);
- +
- + Account *pAccount = sAccountMgr.GetAccount(account);
- + if (pAccount == NULL)
- + return;
- +
- + /* Hash the password */
- + Sha1Hash hash;
- + string password2 = password;
- + ASCENT_TOUPPER(password2);
- + hash.UpdateData(account + ":" + password2);
- + hash.Finalize();
- + uint8 *EncryptedPassword = hash.GetDigest();
- +
- + memcpy(pAccount->SrpHash, EncryptedPassword, 20);
- +
- + // update it in the sql (duh)
- + uint8 *temp = (uint8*)malloc(20);
- + for (size_t i = 0; i < 20; ++i)
- + temp[i] = EncryptedPassword[20 - i - 1];
- + BigNumber bn;
- + bn.SetBinary(temp, 20);
- + free(temp);
- + sLogonSQL->Execute("UPDATE accounts SET password = \"%s\", encrypted_password = \"%s\" WHERE login = \"%s\"", sLogonSQL->EscapeString(password).c_str(), bn.AsHexStr(), sLogonSQL->EscapeString(account).c_str());
- + }break;
- +
- + case 7: // set flags
- + {
- + string account;
- + uint32 flags;
- + recvData >> account >> flags;
- +
- + // remember we expect this in uppercase
- + ASCENT_TOUPPER(account);
- +
- + Account *pAccount = sAccountMgr.GetAccount(account);
- + if (pAccount == NULL)
- + return;
- +
- + pAccount->AccountFlags = flags;
- +
- + // update it in the sql (duh)
- + sLogonSQL->Execute("UPDATE accounts SET flags = %u WHERE login = \"%s\"", flags, sLogonSQL->EscapeString(account).c_str());
- + }break;
- +
- + case 8: // set email
- + {
- + string account;
- + string email;
- + recvData >> account >> email;
- +
- + // remember we expect this in uppercase
- + ASCENT_TOUPPER(account);
- +
- + Account *pAccount = sAccountMgr.GetAccount(account);
- + if (pAccount == NULL)
- + return;
- +
- + // update it in the sql (duh)
- + sLogonSQL->Execute("UPDATE accounts SET email = \"%s\" WHERE login = \"%s\"", sLogonSQL->EscapeString(email).c_str(), sLogonSQL->EscapeString(account).c_str());
- + }break;
- +
- + case 9: // create
- + {
- + string username;
- + string password;
- + string gm;
- + string email;
- + uint8 flags;
- + recvData >> username >> password >> gm >> email >> flags;
- +
- + string account = username;
- + // remember we expect this in uppercase
- + ASCENT_TOUPPER(account);
- +
- + /* Check if we already have an account with that username */
- + Account *pAccount = sAccountMgr.GetAccount(account);
- + if (pAccount != NULL)
- + return;
- +
- + /* Get the highest account ID */
- + uint32 highId;
- + QueryResult *result = sLogonSQL->Query("SELECT MAX(acct) FROM accounts");
- + if (result == NULL)
- + {
- + delete result;
- + return;
- + }
- + highId = result->Fetch()[0].GetUInt32() + 1;
- + delete result;
- +
- + /* Hash the password */
- + Sha1Hash hash;
- + string password2 = password;
- + ASCENT_TOUPPER(password2);
- + hash.UpdateData(account + ":" + password2);
- + hash.Finalize();
- + uint8 *EncryptedPassword = hash.GetDigest();
- +
- + sAccountMgr.CreateAccount(highId, account.c_str(), password2.c_str(), EncryptedPassword, gm.c_str(), 0, email.c_str(), flags, "enUS", 0);
- +
- + // update it in the sql (duh)
- + uint8 *temp = (uint8*)malloc(20);
- + for (size_t i = 0; i < 20; ++i)
- + temp[i] = EncryptedPassword[20 - i - 1];
- + BigNumber bn;
- + bn.SetBinary(temp, 20);
- + free(temp);
- + sLogonSQL->Execute("INSERT INTO accounts (acct, login, password, encrypted_password, gm, banned, email, flags, forceLanguage, muted) VALUES (%u, \"%s\", \"%s\", \"%s\", \"%s\", 0, \"%s\", %u, \"enUS\", 0)", highId, sLogonSQL->EscapeString(username).c_str(), sLogonSQL->EscapeString(password).c_str(), bn.AsHexStr(), sLogonSQL->EscapeString(gm).c_str(), sLogonSQL->EscapeString(email).c_str(), flags);
- + }break;
- +
- }
- }
- Index: src/ascent-world/Chat.cpp
- ===================================================================
- --- src/ascent-world/Chat.cpp (revision 4331)
- +++ src/ascent-world/Chat.cpp (working copy)
- @@ -377,7 +378,11 @@
- {
- { "ban", 'a', &ChatHandler::HandleAccountBannedCommand, "Ban account. .account ban name timeperiod", NULL, 0, 0, 0 },
- { "unban", 'z', &ChatHandler::HandleAccountUnbanCommand, "Unbans account x.", NULL, 0, 0, 0 },
- + { "create", 'z', &ChatHandler::HandleCreateAccountCommand, "Create account. Pass it username password email.", NULL, 0, 0, 0 },
- + { "email", 'z', &ChatHandler::HandleAccountEmailCommand, "Sets email address on account. Pass it username email_address.", NULL, 0, 0, 0},
- + { "flags", 'z', &ChatHandler::HandleAccountFlagsCommand, "Sets flags on account. Pass it username and 0 for Non-TBC or 8 for TBC.", NULL, 0, 0, 0},
- { "level", 'z', &ChatHandler::HandleAccountLevelCommand, "Sets gm level on account. Pass it username and 0,1,2,3,az, etc.", NULL, 0, 0, 0 },
- + { "password", 'z', &ChatHandler::HandleAccountPasswordCommand, "Sets password on account. Pass it username password.", NULL, 0, 0, 0},
- { "mute", 'a', &ChatHandler::HandleAccountMuteCommand, "Mutes account for <timeperiod>.", NULL, 0, 0, 0 },
- { "unmute", 'a', &ChatHandler::HandleAccountUnmuteCommand, "Unmutes account <x>", NULL, 0, 0, 0 },
- Index: src/ascent-world/Chat.h
- ===================================================================
- --- src/ascent-world/Chat.h (revision 4331)
- +++ src/ascent-world/Chat.h (working copy)
- @@ -336,7 +346,11 @@
- bool HandleSetBattlefieldStatusCommand(const char* args, WorldSession *m_session);
- bool HandleNpcReturnCommand(const char* args, WorldSession* m_session);
- bool HandleAccountBannedCommand(const char * args, WorldSession * m_session);
- + bool HandleAccountPasswordCommand(const char * args, WorldSession * m_session);
- + bool HandleAccountEmailCommand(const char * args, WorldSession * m_session);
- bool HandleAccountLevelCommand(const char * args, WorldSession * m_session);
- + bool HandleAccountFlagsCommand(const char * args, WorldSession * m_session);
- + bool HandleCreateAccountCommand(const char* args, WorldSession *m_session);
- bool HandleResetTalentsCommand(const char* args, WorldSession *m_session);
- bool HandleResetSpellsCommand(const char* args, WorldSession *m_session);
- bool HandleNpcFollowCommand(const char* args, WorldSession * m_session);
- Index: src/ascent-world/ConsoleCommands.cpp
- ===================================================================
- --- src/ascent-world/ConsoleCommands.cpp (revision 4331)
- +++ src/ascent-world/ConsoleCommands.cpp (working copy)
- @@ -215,14 +215,13 @@
- if(strlen(username) == 0 || strlen(password) == 0 || strlen(email) == 0)
- return false;
- - /*string susername = CharacterDatabase.EscapeString(string(username));
- + string susername = CharacterDatabase.EscapeString(string(username));
- string spassword = CharacterDatabase.EscapeString(string(password));
- string semail = CharacterDatabase.EscapeString(string(email));
- - sLogonCommHandler.LogonDatabaseSQLExecute("INSERT INTO accounts (login, password, email, flags) VALUES('%s','%s','%s',%u)",susername.c_str(), spassword.c_str(),
- - semail.c_str(), flags);
- + sLogonCommHandler.Account_Create(susername.c_str(), spassword.c_str(), "", semail.c_str(), flags);
- - pConsole->Write("Account created.\r\n");*/
- + pConsole->Write("Account created.\r\n");
- return true;
- }
- Index: src/ascent-world/Level3.cpp
- ===================================================================
- --- src/ascent-world/Level3.cpp (revision 4331)
- +++ src/ascent-world/Level3.cpp (working copy)
- @@ -778,11 +886,36 @@
- sLogonCommHandler.Account_SetGM( account, gmlevel );
- GreenSystemMessage(m_session, "Account '%s' level has been updated to '%s'. The change will be effective immediately.", account, gmlevel);
- - sGMLog.writefromsession(m_session, "set account %s flags to %s", account, gmlevel);
- + sGMLog.writefromsession(m_session, "set account %s GM flags to %s", account, gmlevel);
- + WorldSession *pSession = sWorld.FindSessionByName(account);
- + if (pSession != NULL)
- + {
- + pSession->SetSecurity(gmlevel);
- + pSession->SystemMessage("Your account level has been updated to '%s'.", gmlevel);
- + }
- +
- return true;
- }
- +bool ChatHandler::HandleAccountPasswordCommand(const char * args, WorldSession * m_session)
- +{
- + if(!*args) return false;
- +
- + char account[100];
- + char password[100];
- + int argc = sscanf(args, "%s %s", account, password);
- + if(argc != 2)
- + return false;
- +
- + sLogonCommHandler.Account_SetPassword(account, password);
- +
- + GreenSystemMessage(m_session, "Account '%s' password has been changed to '%s'. The change will be effective immediately.", account, password);
- + sGMLog.writefromsession(m_session, "set account %s password to %s", account, password);
- +
- + return true;
- +}
- +
- bool ChatHandler::HandleAccountUnbanCommand(const char * args, WorldSession * m_session)
- {
- if(!*args) return false;
- @@ -883,6 +1016,66 @@
- return true;
- }
- +bool ChatHandler::HandleAccountFlagsCommand(const char * args, WorldSession * m_session)
- +{
- + if(!*args) return false;
- +
- + char account[100];
- + unsigned int flags;
- + int argc = sscanf(args, "%s %u", account, &flags);
- + if(argc != 2)
- + return false;
- +
- + sLogonCommHandler.Account_SetFlags(account, flags);
- +
- + GreenSystemMessage(m_session, "Account '%s' flags have been updated. The change will be effective immediately.", account);
- + sGMLog.writefromsession(m_session, "set account %s flags to %u", account, flags);
- +
- + WorldSession *pSession = sWorld.FindSessionByName(account);
- + if (pSession != NULL)
- + {
- + pSession->SetAccountFlags(flags);
- + pSession->SystemMessage("Your account flags have been updated by %s.", m_session->GetPlayer()->GetName());
- + }
- +
- + return true;
- +}
- +
- +bool ChatHandler::HandleAccountEmailCommand(const char * args, WorldSession * m_session)
- +{
- + if(!*args) return false;
- +
- + char account[100];
- + char email[100];
- + int argc = sscanf(args, "%s %s", account, email);
- + if(argc != 2)
- + return false;
- +
- + sLogonCommHandler.Account_SetEmail(account, email);
- +
- + GreenSystemMessage(m_session, "Account '%s' email has been updated to '%s'. The change will be effective immediately.", account, email);
- + sGMLog.writefromsession(m_session, "set account %s email to %s", account, email);
- +
- + return true;
- +}
- +
- +bool ChatHandler::HandleCreateAccountCommand(const char* args, WorldSession *m_session)
- +{
- + char *user = strtok((char *)args, " ");
- + if(!user) return false;
- + char *pass = strtok(NULL, " ");
- + if(!pass) return false;
- + char *email = strtok(NULL, "\n");
- + if(!email) return false;
- +
- + sLogonCommHandler.Account_Create(user, pass, "", email, 0);
- +
- + GreenSystemMessage(m_session, "Created account '%s' with password '%s' and email '%s'. The account will be active immediately.", user, pass, email);
- + sGMLog.writefromsession(m_session, "created account %s with password %s and email %s", user, pass, email);
- +
- + return true;
- +}
- +
- bool ChatHandler::HandleGetTransporterTime(const char* args, WorldSession* m_session)
- {
- //Player *plyr = m_session->GetPlayer();
- Index: src/ascent-world/LogonCommHandler.cpp
- ===================================================================
- --- src/ascent-world/LogonCommHandler.cpp (revision 4331)
- +++ src/ascent-world/LogonCommHandler.cpp (working copy)
- @@ -519,4 +519,71 @@
- itr->second->SendPacket(&data, false);
- }
- +void LogonCommHandler::Account_SetPassword(const char *account, const char *password)
- +{
- + map<LogonServer *, LogonCommClientSocket *>::iterator itr = logons.begin();
- + if (logons.size() == 0 || itr->second == 0)
- + {
- + // No valid logonserver is connected.
- + return;
- + }
- +
- + WorldPacket data(RCMSG_MODIFY_DATABASE, 50);
- + data << uint32(6); // 6 = set password
- + data << account;
- + data << password;
- + itr->second->SendPacket(&data, false);
- +}
- +
- +void LogonCommHandler::Account_SetFlags(const char *account, unsigned int flags)
- +{
- + map<LogonServer *, LogonCommClientSocket *>::iterator itr = logons.begin();
- + if (logons.size() == 0 || itr->second == 0)
- + {
- + // No valid logonserver is connected.
- + return;
- + }
- +
- + WorldPacket data(RCMSG_MODIFY_DATABASE, 50);
- + data << uint32(7); // 7 = set flags
- + data << account;
- + data << flags;
- + itr->second->SendPacket(&data, false);
- +}
- +
- +void LogonCommHandler::Account_SetEmail(const char *account, const char *email)
- +{
- + map<LogonServer *, LogonCommClientSocket *>::iterator itr = logons.begin();
- + if (logons.size() == 0 || itr->second == 0)
- + {
- + // No valid logonserver is connected.
- + return;
- + }
- +
- + WorldPacket data(RCMSG_MODIFY_DATABASE, 50);
- + data << uint32(8); // 8 = set password
- + data << account;
- + data << email;
- + itr->second->SendPacket(&data, false);
- +}
- +
- +void LogonCommHandler::Account_Create(const char *username, const char *password, const char *gm, const char *email, uint8 flags)
- +{
- + map<LogonServer *, LogonCommClientSocket *>::iterator itr = logons.begin();
- + if (logons.size() == 0 || itr->second == 0)
- + {
- + // No valid logonserver is connected.
- + return;
- + }
- +
- + WorldPacket data(RCMSG_MODIFY_DATABASE, 50);
- + data << uint32(9); // 9 = create
- + data << username;
- + data << password;
- + data << gm;
- + data << email;
- + data << flags;
- + itr->second->SendPacket(&data, false);
- +}
- +
- #endif
- Index: src/ascent-world/LogonCommHandler.h
- ===================================================================
- --- src/ascent-world/LogonCommHandler.h (revision 4331)
- +++ src/ascent-world/LogonCommHandler.h (working copy)
- @@ -95,6 +95,10 @@
- void Account_SetMute(const char * account, uint32 muted);
- void IPBan_Add(const char * ip, uint32 duration);
- void IPBan_Remove(const char * ip);
- + void Account_SetPassword(const char * account, const char * password);
- + void Account_SetFlags(const char * account, unsigned int flags);
- + void Account_SetEmail(const char * account, const char * email);
- + void Account_Create(const char * username, const char * password, const char * gm, const char * email, uint8 flags);
- void LoadRealmConfiguration();
- void AddServer(string Name, string Address, uint32 Port);
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement