From fa4385c74fe779740075800cd497bab5fc8f7e26 Mon Sep 17 00:00:00 2001 From: "False.Genesis" Date: Fri, 12 Jan 2007 14:03:08 +0000 Subject: [PATCH] prerelease version + implemented logfile support --- src/Client/DefScript/VarSet.cpp | 4 +- src/Client/DefScriptInterface.cpp | 6 +- src/Client/PseuWoW.cpp | 125 ++++------------------- src/Client/PseuWoW.h | 1 + src/Client/Realm/RealmSocket.cpp | 147 +++++---------------------- src/Client/World/CMSGConstructor.cpp | 3 +- src/Client/World/Player.cpp | 18 ++-- src/Client/World/WorldSession.cpp | 43 ++++---- src/Client/main.cpp | 1 + src/PseuWoW.vcproj | 6 ++ src/shared/common.h | 1 - src/shared/tools.cpp | 3 +- 12 files changed, 86 insertions(+), 272 deletions(-) diff --git a/src/Client/DefScript/VarSet.cpp b/src/Client/DefScript/VarSet.cpp index a77ea9e..78ec9e2 100644 --- a/src/Client/DefScript/VarSet.cpp +++ b/src/Client/DefScript/VarSet.cpp @@ -158,9 +158,9 @@ bool VarSet::ReadVarsFromFile(std::string fn) vn=prefix+v; vv=line.substr(pos+1,line.length()-1); Set(vn,vv); - #ifdef _DEBUG +#ifdef _DEBUG printf("DEBUG: Var import [%s] = %s\n",vn.c_str(),vv.c_str()); - #endif +#endif } // else invalid line, must have '=' } diff --git a/src/Client/DefScriptInterface.cpp b/src/Client/DefScriptInterface.cpp index 77c25eb..105e2bf 100644 --- a/src/Client/DefScriptInterface.cpp +++ b/src/Client/DefScriptInterface.cpp @@ -22,7 +22,7 @@ bool DefScriptPackage::SCpause(CmdSet Set){ bool DefScriptPackage::SCSendChatMessage(CmdSet Set){ if(!(((PseuInstance*)parentMethod)->GetWSession() && ((PseuInstance*)parentMethod)->GetWSession()->IsValid())) { - printf("Invalid Script call: SCSendChatMessage: WorldSession not valid\n"); + log("Invalid Script call: SCSendChatMessage: WorldSession not valid"); return false; } std::stringstream ss; @@ -64,7 +64,7 @@ bool DefScriptPackage::SCemote(CmdSet Set){ return true; if(!(((PseuInstance*)parentMethod)->GetWSession() && ((PseuInstance*)parentMethod)->GetWSession()->IsValid())) { - printf("Invalid Script call: SCEmote: WorldSession not valid\n"); + log("Invalid Script call: SCEmote: WorldSession not valid"); return false; } uint32 id=atoi(Set.defaultarg.c_str()); @@ -103,7 +103,7 @@ void DefScriptPackage::My_LoadUserPermissions(VarSet &vs) { usr = variables[i].name.substr(strlen(prefix), variables[i].name.length() - strlen(prefix)); my_usrPermissionMap[usr] = atoi(variables[i].value.c_str()); - DEBUG( printf("Player '%s' permission = %u\n",usr.c_str(),atoi(variables[i].value.c_str())); ) + DEBUG( log("Player '%s' permission = %u",usr.c_str(),atoi(variables[i].value.c_str())); ) } } } diff --git a/src/Client/PseuWoW.cpp b/src/Client/PseuWoW.cpp index 0997b04..4984729 100644 --- a/src/Client/PseuWoW.cpp +++ b/src/Client/PseuWoW.cpp @@ -68,6 +68,7 @@ PseuInstance::~PseuInstance() } bool PseuInstance::Init(void) { + log_prepare("logfile.txt",this); if(_confdir.empty()) _confdir="./conf/"; @@ -78,7 +79,7 @@ bool PseuInstance::Init(void) { RAND_set_rand_method(RAND_SSLeay()); // init openssl randomizer if(SDL_Init(0)==-1) { - printf("SDL_Init: %s\n", SDL_GetError()); + log("SDL_Init: %s", SDL_GetError()); return false; } @@ -86,53 +87,57 @@ bool PseuInstance::Init(void) { _scp->SetParentMethod((void*)this); _conf=new PseuInstanceConf(); + log("Reading PseuWoW.conf..."); if(!_scp->variables.ReadVarsFromFile(_confdir + "PseuWoW.conf")) { - printf("Error reading conf file [%s]",_confdir.append("PseuWoW.conf").c_str()); + log("Error reading conf file [%s]",_confdir.append("PseuWoW.conf").c_str()); return false; } + logdetail("Applying configuration..."); _conf->ApplyFromVarSet(_scp->variables); + log("Reading user permissions..."); if(_scp->variables.ReadVarsFromFile(_confdir + "users.conf")) { - printf("-> Done reading users.\n"); + log("-> Done reading users."); } else { - printf("Error reading conf file [%s] - NO PERMISSIONS SET!\n",_confdir.append("users.conf").c_str()); + log("Error reading conf file [%s] - NO PERMISSIONS SET!",_confdir.append("users.conf").c_str()); } -// //DEBUG1(printf("Main_Init: Setting up DefScripts path '%s'\n",defScpPath.c_str());); + logdebug("Setting up DefScripts path '%s'",_scpdir.c_str()); _scp->SetPath(_scpdir); - // //DEBUG1(printf("Main_Init: Setting up predefined DefScript macros...\n");); + logdebug("Setting up predefined DefScript macros..."); _scp->variables.Set("@version_short",_ver_short); _scp->variables.Set("@version",_ver); + logdetail("Applying user permissions..."); _scp->My_LoadUserPermissions(_scp->variables); - - // //DEBUG1(printf("Main_Init: Loading DefScripts from folder '%s'\n",defScpPath.c_str());); + log("Loading DefScripts from folder '%s'",_scpdir.c_str()); if(!_scp->RunScript("_startup",NULL)) { - printf("Main_Init: Error executing '_startup.def'\n"); + printf("Error executing '_startup.def'"); } if(GetConf()->enablecli) { + log("Starting CLI..."); _cli = new CliRunnable(this); ZThread::Thread t(_cli); } if(_stop){ - printf("Errors while initializing, proc halted!!\n"); + log("Errors while initializing, proc halted!!"); if(GetConf()->exitonerror) exit(0); while(true)SDL_Delay(1000); } -// if(DEBUG)printf("Main_Init: Init complete.\n"); + log("Init complete.\n"); _initialized=true; return true; } @@ -167,10 +172,10 @@ void PseuInstance::Run(void) if(_fastquit) { - printf("Aborting Instance...\n"); + log("Aborting Instance..."); return; } - printf("Shutting down instance...\n"); + log("Shutting down instance..."); SaveAllCache(); @@ -223,100 +228,6 @@ void PseuInstance::Sleep(uint32 msecs) - /* - printf("%s\n",ver); - for(unsigned int temp=0;temp<=strlen(ver);temp++)printf("~");printf("\n"); - printf("[Compiled on: %s , %s]\n\n",__DATE__,__TIME__); - if (!initproc()) quitproc_error(); - - bool _auth_sent=false; - bool _first_wpacket=true; - clock_t ping_time=clock()-25000; - - while (true) { - - if(something_went_wrong){ - if(inworld){ - SendChatMessage(CHAT_MSG_YELL,0,"ERROR! Something went wrong, exiting...",""); - } - printf("!!! Something went wrong, proc halted.!!!\n"); - ctrlCon.Close(); - worldCon.Close(); - realmCon.Close(); - if(exitonerror)quitproc(); - while(true)SDL_Delay(1000); - } - - if( !realmCon.IsConnected() && !worldCon.IsConnected() && !something_went_wrong){ - printf("Opening realm TCP connection <%s:%d>\n",realmlist,rs_port); - while(!realmCon.ConnectTo(realmlist,rs_port)); - _auth_sent=false; - } - - if(realmCon.IsConnected() && !worldCon.IsConnected() && !something_went_wrong){ - if(!_auth_sent){ - CLIENT_LOGON_CHALLENGE(accname, accpass); - _auth_sent=true; - } - } - if(realmCon.HasData()){ - Buf buf; - buf=realmCon.GetData(); - rs_parser(buf.str,buf.len); // TODO: change type to Buf (also the func arg!) - } - - - - while(worldCon.GetBufferLevel()>1){ - ////DEBUG3( - // printf("WS_IN, %d bytes. Buffer Level=%u\n",worldCon.GetKeepData().len,worldCon.GetBufferLevel()); - // printchex(worldCon.GetKeepData().str,worldCon.GetKeepData().len,true); - //) - //_first_wpacket=false; - ByteBuffer pk2; - pk2.append(worldCon.GetDataString()); - pk2.resize(pk2.size()-1); - HandleWorldPacket(pk2); - } - - // this covers the first serverseed packet, which get sometimes merged into 1 packet instead of 2 - if(worldCon.HasData() && _first_wpacket && worldCon.GetKeepData().len==8){ - _first_wpacket=false; - ByteBuffer pk2; - pk2.append(worldCon.GetDataString()); - pk2.resize(pk2.size()-1); - HandleWorldPacket(pk2); - } - - - if(!worldCon.IsConnected() && inworld){ - printf("Disconnected from World server!\n"); - inworld=false; - _first_wpacket=true; - _auth_sent=false; - } - - if(clock()-ping_time>30000) - { - ping_time=clock(); - SendPing(ping_time); - } - - - SDL_Delay(idleSleepTime); - if (error)return error; - - - - -void _SaveAllCache(void){ - bool result; - result=plrNameCache.SaveToFile(); - // +++ -} -*/ - - PseuInstanceConf::PseuInstanceConf() { } diff --git a/src/Client/PseuWoW.h b/src/Client/PseuWoW.h index 7e26ed8..490ba83 100644 --- a/src/Client/PseuWoW.h +++ b/src/Client/PseuWoW.h @@ -3,6 +3,7 @@ #define _PSEUWOW_H #include "common.h" +#include "log.h" #include "Auth/BigNumber.h" #include "DefScript/DefScript.h" #include "Network/SocketHandler.h" diff --git a/src/Client/Realm/RealmSocket.cpp b/src/Client/Realm/RealmSocket.cpp index 8634f66..ebd3ff2 100644 --- a/src/Client/Realm/RealmSocket.cpp +++ b/src/Client/Realm/RealmSocket.cpp @@ -132,8 +132,6 @@ void RealmSocket::_HandleRealmList(void) uint16 len; uint8 cmd,count; realmbuf >> cmd >> len >> unk >> count; - - printf("DEBUG: Realm cmd=%u, count=%u, size=%u, unk=%u\n",cmd,count,len,unk); // no realm? if(count==0) @@ -163,16 +161,13 @@ void RealmSocket::_HandleRealmList(void) { realmAddr=realms[i].addr_port; } - printf("Realm: %s (%s)",realms[i].name.c_str(),realms[i].addr_port.c_str()); - printf("[chars:%d][population:%f][timezone:%d]",realms[i].chars_here,realms[i].population,realms[i].timezone); - printf("\n"); + log("Realm: %s (%s)",realms[i].name.c_str(),realms[i].addr_port.c_str()); + logdetail(" [chars:%d][population:%f][timezone:%d]",realms[i].chars_here,realms[i].population,realms[i].timezone); } // now setup where the woldserver is and how to login there if(realmAddr.empty()){ - printf("Realm \"%s\" was not found on the realmlist!\n",GetInstance()->GetConf()->realmname.c_str()); - //something_went_wrong=true; - //realmCon.Close(); + log("Realm \"%s\" was not found on the realmlist!",GetInstance()->GetConf()->realmname.c_str()); return; } @@ -196,7 +191,7 @@ void RealmSocket::OnRead(void) { TcpSocket::OnRead(); bool known=false; - printf("RealmSocket::OnRead() %u bytes\n",ibuf.GetLength()); + //printf("RealmSocket::OnRead() %u bytes\n",ibuf.GetLength()); if(!ibuf.GetLength()) return; uint8 cmd, i=0; @@ -212,96 +207,17 @@ void RealmSocket::OnRead(void) } if(!known) { - printf("RealmSocket: Got unknown packet, cmd=%u\n",cmd); + log("RealmSocket: Got unknown packet, cmd=%u",cmd); } ibuf.Remove(ibuf.GetLength()); // if we have data crap left on the buf, delete it } -/* - switch(rs_state){ - unsigned int i; - case 1:{ - if(pkt[2]==4){ - printf("Realm Server did not find account \"%s\"!\n",accname); - something_went_wrong=true; - realmCon.Close(); - } else - if(pkt[2]==6){ - printf("Account \"%s\" is already logged in!\n",accname); - realmCon.Close(); - something_went_wrong=true; - } else - if(pkt[2]!=0){ - printf("Unknown realm server response! opcode=0x%x\n",(unsigned char)pkt[2]); - something_went_wrong=true; - realmCon.Close(); - } else - if(pkt[2]==0){ - //DEBUG1(printf("Login successful, now calculating proof packet...\n");); - ProcessClientLogonProof(pkt); - rs_state=2; // 2=waiting for server proof - } - }break; - - case 2:{ - if(pkt[1]==4){ - printf("Wrong password!\n"); - something_went_wrong=true; - realmCon.Close(); - } else - if(pkt[0]==1 && pkt[1]==0 && memcmp(&pkt[2],Auth_M2,20)!=0){ - printf("Something with Authenticating went wrong, although the password seems correct!\n"); - //DEBUG1(printf("-> expected M2=");printchex(Auth_M2,20,true);) - //DEBUG1(printf("-> got M2=");printchex(&pkt[2],20,true);) - something_went_wrong=true; - realmCon.Close(); - } else - if(pkt[0]==1 && pkt[1]==0 && memcmp(&pkt[2],Auth_M2,20)==0){ - printf("Password is correct!! Requesting Realmlist.\n"); - rs_state=3; // requesting realmlist - // Request Realmlist - char realmrequest[]={0x10,0,0,0,0}; // 0x10 is opcode, rest is an uint32, nulled - realmCon.Send(realmrequest,5); - } - else { - printf("Unknown ErrorID recieved, check the packet hexdump.\n"); - printf("-> IDs=");printchex(pkt,2,true); - something_went_wrong=true; - realmCon.Close(); - } - }break; - - case 3:{ - if(pkt[0]!=0x10){ - printf("Expected a realmlist packet, got something different. opcode=0x%x\n",(unsigned char)pkt[0]); - something_went_wrong=true; - realmCon.Close(); - } - ByteBuffer bbuf; - bbuf.append(pkt,size); - if(HandleRealmList(bbuf)==true){ - printf("Connecting to realm \"%s\" at \"%s\", port %d\n",realmname,worldhost.c_str(),ws_port); - while(!worldCon.IsConnected()){ - worldCon.ConnectTo((char*)worldhost.c_str(),ws_port); // init world server connection, we have all info we need to enter - } - realmCon.Close(); // close the realm server connection, its no longer needed now - } - }break; - // more? - default:{ - //... - } - } -} -*/ - - void RealmSocket::SendLogonChallenge(void) { if(!this->Ready()) { - printf("Error sending AUTH_LOGON_CHALLENGE, port is not ready!\n"); + log("Error sending AUTH_LOGON_CHALLENGE, port is not ready!\n"); return; } std::string acc = stringToUpper(GetInstance()->GetConf()->accname); @@ -322,8 +238,6 @@ void RealmSocket::SendLogonChallenge(void) packet << (uint8)acc.length(); // length of acc name without \0 packet.append(acc.c_str(),acc.length()); // append accname, skip \0 - packet.hexlike(); - SendBuf((char*)packet.contents(),packet.size()); } @@ -335,21 +249,21 @@ PseuInstance *RealmSocket::GetInstance(void) void RealmSocket::_HandleLogonChallenge(void) { - printf("RealmSocket: Got AUTH_LOGON_CHALLENGE [%u of %u bytes]\n",ibuf.GetLength(),sizeof(sAuthLogonChallenge_S)); + logdebug("RealmSocket: Got AUTH_LOGON_CHALLENGE [%u of %u bytes]",ibuf.GetLength(),sizeof(sAuthLogonChallenge_S)); sAuthLogonChallenge_S lc; ibuf.Read((char*)&lc, sizeof(sAuthLogonChallenge_S)); switch (lc.error) { case 4: - printf("Realm Server did not find account \"%s\"!\n",GetInstance()->GetConf()->accname.c_str()); + log("Realm Server did not find account \"%s\"!",GetInstance()->GetConf()->accname.c_str()); break; case 6: - printf("Account \"%s\" is already logged in!\n",GetInstance()->GetConf()->accname.c_str()); + log("Account \"%s\" is already logged in!",GetInstance()->GetConf()->accname.c_str()); break; case 0: { - printf("Login successful, now calculating proof packet...\n"); + logdetail("Login successful, now calculating proof packet..."); // now lets start calculating BigNumber N,A,B,a,u,x,v,S,salt,unk1,g,k(3); // init BNs, default k to 3 @@ -362,17 +276,6 @@ void RealmSocket::_HandleLogonChallenge(void) salt.SetBinary(lc.salt,32); unk1.SetBinary(lc.unk3,16); - /* - // debug output - //DEBUG3(printchex(B_str,BNLEN,true);) - //DEBUG3(printchex(g_str,1,true);) - //DEBUG3(printchex(N_str,BNLEN,true);) - //DEBUG3(printchex(salt_str,BNLEN,true);) - //DEBUG3(printchex(unk1_str,16,true);) - */ - - // client-side BN calculations: - ////DEBUG3(printf("--> k=%s\n",k.AsHexStr());) a.SetRand(19*8); Sha1Hash userhash,xhash,uhash; userhash.UpdateData(_authstr); @@ -381,23 +284,23 @@ void RealmSocket::_HandleLogonChallenge(void) xhash.UpdateData(userhash.GetDigest(),userhash.GetLength()); xhash.Finalize(); x.SetBinary(xhash.GetDigest(),xhash.GetLength()); - ////DEBUG3(printf("--> x=%s\n",x.AsHexStr());) + logdebug("--> x=%s",x.AsHexStr()); v=g.ModExp(x,N); - ////DEBUG3(printf("--> v=%s\n",v.AsHexStr());) + logdebug("--> v=%s",v.AsHexStr()); A=g.ModExp(a,N); - ////DEBUG3(printf("--> A=%s\n",A.AsHexStr());) + logdebug("--> A=%s",A.AsHexStr()); uhash.UpdateBigNumbers(&A, &B, NULL); uhash.Finalize(); u.SetBinary(uhash.GetDigest(), 20); - ////DEBUG3(printf("--> u=%s\n",u.AsHexStr());) + logdebug("--> u=%s",u.AsHexStr()); S=(B - k*g.ModExp(x,N) ).ModExp((a + u * x),N); - ////DEBUG3(printf("--> S=%s\n",S.AsHexStr());) + logdebug("--> S=%s",S.AsHexStr()); // calc M1 & M2 unsigned int i=0; char S1[16+1],S2[16+1]; // 32/2=16 :) +1 for \0 // split it into 2 seperate strings, interleaved - for(i=0;i<=15;i++){ + for(i=0;i<16;i++){ S1[i]=S.AsByteArray()[i*2]; S2[i]=S.AsByteArray()[i*2+1]; } @@ -445,10 +348,8 @@ void RealmSocket::_HandleLogonChallenge(void) M2hash.Finalize(); - ////DEBUG3( - printf("--> M1=");printchex((char*)M1hash.GetDigest(),20,true); - printf("--> M2=");printchex((char*)M2hash.GetDigest(),20,true); - //) + //logdebug("--> M1=");printchex((char*)M1hash.GetDigest(),20,true); + //logdebug("--> M2=");printchex((char*)M2hash.GetDigest(),20,true); // Calc CRC & CRC_hash // i don't know yet how to calc it, so set it to zero @@ -475,7 +376,7 @@ void RealmSocket::_HandleLogonChallenge(void) break; default: - printf("Unknown realm server response! opcode=0x%x\n",(unsigned char)lc.error); + log("Unknown realm server response! opcode=0x%x\n",(unsigned char)lc.error); break; } } @@ -483,10 +384,10 @@ void RealmSocket::_HandleLogonChallenge(void) void RealmSocket::_HandleLogonProof(void) { - printf("RealmSocket: Got AUTH_LOGON_PROOF [%u of %u bytes]\n",ibuf.GetLength(),26); + logdetail("RealmSocket: Got AUTH_LOGON_PROOF [%u of %u bytes]\n",ibuf.GetLength(),26); sAuthLogonProof_S lp; ibuf.Read((char*)&lp, 26); // the compiler didnt like 'sizeof(sAuthLogonProof_S)', said it was 28 - printchex((char*)&lp, sizeof(sAuthLogonProof_S),true); + //printchex((char*)&lp, sizeof(sAuthLogonProof_S),true); if(!memcmp(lp.M2,this->_m2,20)) { // auth successful @@ -497,7 +398,7 @@ void RealmSocket::_HandleLogonProof(void) } else { - printf("Auth failed, M2 differs!\n"); + log("Auth failed, M2 differs!"); printf("My M2 :"); printchex((char*)_m2,20,true); printf("Srv M2:"); printchex((char*)lp.M2,20,true); @@ -506,12 +407,12 @@ void RealmSocket::_HandleLogonProof(void) void RealmSocket::OnConnect() { - printf("DEBUG: RealmSocket connected!\n"); + logdetail("RealmSocket connected!"); SendLogonChallenge(); } void RealmSocket::OnConnectFailed(void) { - printf("RealmSocket::OnConnectFailed()\n"); + log("Connecting to Realm failed!"); } diff --git a/src/Client/World/CMSGConstructor.cpp b/src/Client/World/CMSGConstructor.cpp index 9b411de..35bb865 100644 --- a/src/Client/World/CMSGConstructor.cpp +++ b/src/Client/World/CMSGConstructor.cpp @@ -17,7 +17,6 @@ void WorldSession::SendChatMessage(uint32 type, uint32 lang, std::string msg, st case CHAT_MSG_GUILD: case CHAT_MSG_OFFICER: // not sure about that packet<: \"%s\"\n",msg.c_str());); break; case CHAT_MSG_WHISPER: if(to.empty()) @@ -51,7 +50,7 @@ void WorldSession::SendPing(uint32 ping){ packet << ping; packet.SetOpcode(CMSG_PING); SendWorldPacket(packet); - //DEBUG2(printf("Sent CMSG_PING, clock=%u\n",ping);); + logdebug("Sent CMSG_PING, clock=%u",ping); } void WorldSession::SendEmote(uint32 id){ diff --git a/src/Client/World/Player.cpp b/src/Client/World/Player.cpp index 1915b8a..0ccbc1a 100644 --- a/src/Client/World/Player.cpp +++ b/src/Client/World/Player.cpp @@ -38,13 +38,13 @@ uint64 PlayerNameCache::GetGuid(std::string name){ } bool PlayerNameCache::SaveToFile(void){ - printf("Saving PlayerNameCache...\n"); + log("Saving PlayerNameCache..."); char *fn="./cache/playernames.cache"; std::fstream fh; fh.open(fn, std::ios_base::out | std::ios_base::binary); if(!fh) { - printf("ERROR: could not write to file '%s'!\n",fn); + log("ERROR: could not write to file '%s'!",fn); return false; } uint32 size=_cache.size(); @@ -59,22 +59,22 @@ bool PlayerNameCache::SaveToFile(void){ len=(*i)->_name.length(); fh.write( (char*)&len,sizeof(uint8) ); fh.write( (char*)(*i)->_name.c_str(),len ); - DEBUG(printf( "PlayerNameCache << " I64FMT " -> %s\n", (*i)->_guid, (*i)->_name.c_str());); + DEBUG(log( "PlayerNameCache << " I64FMT " -> %s", (*i)->_guid, (*i)->_name.c_str());); } fh.close(); - printf("PlayerNameCache saved successfully.\n"); + log("PlayerNameCache saved successfully."); return true; } bool PlayerNameCache::ReadFromFile(void){ char *fn="./cache/playernames.cache"; - printf("Loading PlayerNameCache...\n"); + log("Loading PlayerNameCache..."); bool success=true; std::fstream fh; fh.open(fn, std::ios_base::in | std::ios_base::binary); if(!fh) { - printf("ERROR: could not open file '%s'!\n",fn); + log("ERROR: could not open file '%s'!",fn); return false; } uint32 size; @@ -90,8 +90,8 @@ bool PlayerNameCache::ReadFromFile(void){ fh.read((char*)&(cacheItem->_guid),sizeof(uint64)); fh.read((char*)&len,sizeof(uint8)); if(len>12 || len<2){ - printf("\nERROR: PlayerNameCache data seem corrupt [namelength=%d, should be <=12}]\n",len); - printf("-> Clearing cache, creating new.\n"); + log("\nERROR: PlayerNameCache data seem corrupt [namelength=%d, should be <=12}]",len); + log("-> Clearing cache, creating new.\n"); _cache.clear(); success=false; break; @@ -106,7 +106,7 @@ bool PlayerNameCache::ReadFromFile(void){ delete nameptr; fh.close(); if(success) - printf("PlayerNameCache successfully loaded.\n"); + log("PlayerNameCache successfully loaded."); return success; } diff --git a/src/Client/World/WorldSession.cpp b/src/Client/World/WorldSession.cpp index 852e470..f69dd53 100644 --- a/src/Client/World/WorldSession.cpp +++ b/src/Client/World/WorldSession.cpp @@ -41,7 +41,7 @@ WorldSession::~WorldSession() void WorldSession::Start(void) { - printf("Connecting to '%s' on port %u\n",GetInstance()->GetConf()->worldhost.c_str(),GetInstance()->GetConf()->worldport); + log("Connecting to '%s' on port %u",GetInstance()->GetConf()->worldhost.c_str(),GetInstance()->GetConf()->worldport); _socket->Open(GetInstance()->GetConf()->worldhost,GetInstance()->GetConf()->worldport); GetInstance()->GetRSession()->SetCloseAndDelete(); // realm socket is no longer needed _valid=true; @@ -108,7 +108,7 @@ void WorldSession::Update(void) || ((!known) && GetInstance()->GetConf()->showopcodes==2) || (GetInstance()->GetConf()->showopcodes==3) ) { - printf(">> Opcode %u [%s]\n",packet->GetOpcode(),LookupName(packet->GetOpcode(),g_worldOpcodeNames)); + log(">> Opcode %u [%s]",packet->GetOpcode(),LookupName(packet->GetOpcode(),g_worldOpcodeNames)); } @@ -214,7 +214,7 @@ void WorldSession::_HandleAuthChallengeOpcode(WorldPacket& recvPacket) std::string acc = stringToUpper(GetInstance()->GetConf()->accname); uint32 serverseed; recvPacket >> serverseed; - printf("W:auth: serverseed=0x%X\n",serverseed); + logdebug("Auth: serverseed=0x%X",serverseed); Sha1Hash digest; digest.UpdateData(acc); uint32 unk=0; @@ -235,10 +235,6 @@ void WorldSession::_HandleAuthChallengeOpcode(WorldPacket& recvPacket) auth<<(uint32)0; // no addons? no idea, but seems to work. MaNGOS doesnt accept without this. auth.SetOpcode(CMSG_AUTH_SESSION); - //DEBUG3( - // printf("CMSG_AUTH_SESSION="); - // printchex((char*)outpkt.contents(),outpkt.size(),true); - //) SendWorldPacket(auth); // note that if the sessionkey/auth is wrong or failed, the server sends the following packet UNENCRYPTED! @@ -254,12 +250,12 @@ void WorldSession::_HandleAuthResponseOpcode(WorldPacket& recvPacket) uint8 errcode; recvPacket >> errcode; if(errcode==0xC){ - //DEBUG1(printf("World Authentication successful, preparing for char list request...\n");); + logdetail("World Authentication successful, preparing for char list request..."); WorldPacket pkt; pkt.SetOpcode(CMSG_CHAR_ENUM); SendWorldPacket(pkt); } else { - printf("World Authentication failed, errcode=0x%X\n",(unsigned char)errcode); + log("World Authentication failed, errcode=0x%X",(unsigned char)errcode); } } @@ -272,11 +268,11 @@ void WorldSession::_HandleCharEnumOpcode(WorldPacket& recvPacket) recvPacket >> num; if(num==0){ - printf("W:No chars found!\n"); + log("No chars found!\n"); GetInstance()->Stop(); return; } - printf("W: Chars in list: %u\n",num); + logdetail("W: Chars in list: %u\n",num); for(unsigned int i=0;i> plr[i]._guid; recvPacket >> plr[i]._name; @@ -308,10 +304,10 @@ void WorldSession::_HandleCharEnumOpcode(WorldPacket& recvPacket) } bool char_found=false; for(unsigned int i=0;i coords: map=%u zone=%u x=%f y=%f z=%f\n", - // plr[i]._mapId,plr[i]._zoneId,plr[i]._x,plr[i]._y,plr[i]._z);) + logdetail("-> coords: map=%u zone=%u x=%f y=%f z=%f", + plr[i]._mapId,plr[i]._zoneId,plr[i]._x,plr[i]._y,plr[i]._z); if(plr[i]._name==GetInstance()->GetConf()->charname){ char_found=true; _myGUID=plr[i]._guid; @@ -319,11 +315,11 @@ void WorldSession::_HandleCharEnumOpcode(WorldPacket& recvPacket) } if(!char_found){ - printf("W: Character \"%s\" was not found on char list!\n",GetInstance()->GetConf()->charname.c_str()); + log("Character \"%s\" was not found on char list!",GetInstance()->GetConf()->charname.c_str()); GetInstance()->Stop(); return; } else { - printf("W: Entering World with Character \"%s\"...\n",GetInstance()->GetConf()->charname.c_str()); + log("Entering World with Character \"%s\"...",GetInstance()->GetConf()->charname.c_str()); WorldPacket pkt; pkt.SetOpcode(CMSG_PLAYER_LOGIN); pkt << _myGUID; @@ -377,11 +373,11 @@ void WorldSession::_HandleMessageChatOpcode(WorldPacket& recvPacket) recvPacket >> msglen >> msg; if (type == CHAT_MSG_SYSTEM){ - printf("W:SYSMSG: \"%s\"\n",msg.c_str()); + log("SYSMSG: \"%s\"",msg.c_str()); } else if (type==CHAT_MSG_WHISPER ){ - printf("W:WHISP: %s [%s]: %s\n",plrname.c_str(),LookupName(lang,langNames),msg.c_str()); + log("W:WHISP: %s [%s]: %s",plrname.c_str(),LookupName(lang,langNames),msg.c_str()); } else { - printf("W:CHAT: %s [%s]: %s\n",plrname.c_str(),LookupName(lang,langNames),msg.c_str()); + log("W:CHAT: %s [%s]: %s",plrname.c_str(),LookupName(lang,langNames),msg.c_str()); } if(target_guid!=_myGUID && msg.length()>1 && msg.at(0)=='-' && GetInstance()->GetConf()->allowgamecmd) @@ -439,10 +435,9 @@ void WorldSession::_HandleNameQueryResponseOpcode(WorldPacket& recvPacket) // rest of the packet is not interesting for now if(plrNameCache.AddInfo(pguid,pname)) { - printf("CACHE: Assigned new player name: '%s'",pname.c_str()); - SendChatMessage(CHAT_MSG_SAY,0,"Player "+pname+" added to cache.",""); - //DEBUG2(printf(" to guid "I64FMTD,pguid);); - printf("\n"); + logdetail("CACHE: Assigned new player name: '%s' = " I64FMTD ,pname.c_str(),pguid); + if(GetInstance()->GetConf()->debug > 1) + SendChatMessage(CHAT_MSG_SAY,0,"Player "+pname+" added to cache.",""); } } @@ -450,7 +445,7 @@ void WorldSession::_HandlePongOpcode(WorldPacket& recvPacket) { uint32 pong; recvPacket >> pong; - printf("Recieved Ping reply: %u ms latency.\n",clock()-pong); + log("Recieved Ping reply: %u ms latency.",clock()-pong); } void WorldSession::_HandleTradeStatusOpcode(WorldPacket& recvPacket) { diff --git a/src/Client/main.cpp b/src/Client/main.cpp index 8f2cff2..1983e7a 100644 --- a/src/Client/main.cpp +++ b/src/Client/main.cpp @@ -71,6 +71,7 @@ void abortproc(void) int main(int argc, char* argv[]) { try { + printf("\n (C) 2006, Snowstorm Software\n\n\n"); _HookSignals(); diff --git a/src/PseuWoW.vcproj b/src/PseuWoW.vcproj index 2dc6fff..22d61cf 100644 --- a/src/PseuWoW.vcproj +++ b/src/PseuWoW.vcproj @@ -159,6 +159,12 @@ + + + + diff --git a/src/shared/common.h b/src/shared/common.h index 7e38017..222f1b5 100644 --- a/src/shared/common.h +++ b/src/shared/common.h @@ -26,6 +26,5 @@ #include "DebugStuff.h" #include "tools.h" - #endif diff --git a/src/shared/tools.cpp b/src/shared/tools.cpp index e8674be..1aeb544 100644 --- a/src/shared/tools.cpp +++ b/src/shared/tools.cpp @@ -197,7 +197,7 @@ std::string getDateString(void) { time_t t = time(NULL); tm* aTm = localtime(&t); - char str[19]; + char str[30]; // YYYY year // MM month (2 digits 01-12) // DD day (2 digits 01-31) @@ -207,3 +207,4 @@ std::string getDateString(void) sprintf(str,"%-4d-%02d-%02d %02d:%02d:%02d ",aTm->tm_year+1900,aTm->tm_mon+1,aTm->tm_mday,aTm->tm_hour,aTm->tm_min,aTm->tm_sec); return std::string(str); } +