Die Accounterstellung befindet sich in der
LogonConsole.h und in der
LogonConsole.cpp.
Folgender Quellcode:
Code:
void LogonConsole::CreateAccount(char* str)
{
char name[ 512 ];
char password[ 512 ];
char email[ 512 ];
int count = sscanf(str, "%s %s %s", name, password, email);
if(count != 3)
{
std::cout << "usage: createaccount <name> <password> <email>" << std::endl;
std::cout << "example: createaccount ghostcrawler Ih4t3p4l4dins
" << std::endl;
return;
}
{
// need to pass uppercase names to check if account exists
std::string aname(name);
for(std::string::iterator itr = aname.begin(); itr != aname.end(); ++itr)
*itr = toupper(*itr);
if(AccountMgr::getSingleton().GetAccount(aname) != NULL)
{
std::cout << "There's already an account with name " << name << std::endl;
return;
}
}
std::string pass;
pass.assign(name);
pass.push_back(':');
pass.append(password);
std::stringstream query;
query << "INSERT INTO `accounts`( `login`,`password`,`encrypted_password`,`gm`,`banned`,`email`,`flags`,`banreason`) VALUES ( '";
query << name << "','',";
query <<[B] "SHA( UPPER( '" << pass << "' ) ),'0','0','";[/B]
query << email << "','";
query << 24 << "','' );";
if(!sLogonSQL->WaitExecuteNA(query.str().c_str()))
{
std::cout << "Couldn't save new account to database. Aborting." << std::endl;
return;
}
AccountMgr::getSingleton().ReloadAccounts(true);
std::cout << "Account created." << std::endl;
}
Es ist eine SHA Verschlüsselung. Du kannst die Passwörter aber auch unverschlüsselt eintragen. Es funktioniert beides.