Jump to content
  • Announcements

    • Xmat

      Pravidlo pro postování v TTT

      Do sekce Tipy, triky, tutoriály nepatří žádné dotazy.   Postujte sem vaše návody, tipy a různé další věci jež uznáte za vhodné sdělit zdejšímu osazenstvu, ale veškeré dotazy směřujte do sekce Všeobecná diskuse.
    • Replik

      Seznam návodů a důležitých témat v této sekci

      Pro lepší přehlednost jsem vytvořil tento seznam, který vás, méně zkušené, lépe provede touto sekcí. Věřím, že zde najdete, co hledáte. Vypsané jsou návody, které jsou oficiálně uznané jako návody. Běžné diskuze, které neposkytují postupy a rady zvěřejněny nejsou.   Instalace vlastního MaNGOS Serveru Díky těmto návodům budete (měli by jste být) schopni vytvořit a následně spustit váš vlastní server. Nastavení je pro verze s i bez datadisku.   Instalace MaNGOS Serveru (bez datadisku TBC) - Autor Benny Instalace MaNGOS Serveru (s datadiskem TBC) - Autor Malfik Instalace MaNGOS Serveru v prostředí Linux - Autor charlie Instalace MaNGOS Serveru v prostředí Linux - Autor kupkoid   Chyby a jejich řešení při přihlašování k serveru - Autor Cybe   Zálohování uživatelských dat   Dávkový soubor (BAT soubor) pro vytvoření SQL záloh - Autor Replik   Kompilování - tvoření vlastních release (revizí)   Tvorba kompilací pro Win32 (MangoScript) - Autor bLuma   Ostatní - těžko zařaditelné, ale neznamená to, že nejsou dobré   VIP Systém - Autor charlie Tvorba Webových stránek pro MaNGOS - Autor zahuba Tvorba teleportačních NPC (MangoScript) - Autor Replik Registrační web (původně předělaná SPORA) Funkční pro Antrix i MaNGOS - Autor Replik Nastavení a spuštění Minimanager pro MaNGOS - Autor BlackMartin Nastavení MaNGOS Website - Autor Artorius   Samozřejmě jsou zde i jiné návody, ale tyto jsou nejvíce používané, proto věřím, že vám budou nápomocné. Tuto sekci budeme upravovat podle potřeby. Pokud by jste něco nenašli nebo si nevěděli rady, hledejte na fóru a teprve potom založte vlastní topik. Pokud nějaký autor vytvoří kvalitní návod a chtěl by ho zveřejnit i v tomto seznamu, doporučuji, aby mi napsal zprávu skrze PM.   Díky a přeji hezký den na WoWResource   Replik
    • Aristo

      Příspěvky tam, kde nemají co dělat

      Dodržujte zákaz přispívání do topiků s repaky pokud si to zakladatelé nepřejí!! Opakované psaní příspěvků bude trestáno warnem.
    • Aristo

      Používání spoilerů

      Poslední dobou má většina uživatelů fora zvláštní nutkání postovat extrémně dlouhé texty nebo kódy, které zabírají v nejedenom případu i 80% obsahu celé stránky a hodně tak zvedají nepřehlednost v topiku. Chtěl bych všechny uživatele požádat, aby při postování citací, jakýchkoliv kódů, errorů, atp... delších než 30 řádků používali funkci spoileru.   Funkci vyvoláte příkazem [spoiler] text [/spoiler]   Ukázka:  
Sign in to follow this  
Xardas123

Authentication failed

Recommended Posts

Core Account Authentication error

 

Dobrý den, zdravím všechny. Píši s nutnou prosbou o pomoc.

Na mém 3.3.5a TC serveru se mi objevila závažná chyba v core s kterou si nikdo koho znám neví rady, nevím přesně od kdy tam tato chyba je, je možné že už od začátku co jsme začal pracovat na této verzi core, ale nemusel sem si ji všimnout. Cirka z 40% hráče nepustí server do hry, při logování na herní account zůstane přihlášení vyset na authetication nebo Retriving Character List, do logu se loguje chyba:

WorldSocket::HandleAuthSession: Authentication failed for account:

Někdo to do hry nepustí a chybu to ani nezaloguje.

 

Myslím že kdybych stáhl nejnovější core problém by tam už nebyl, ale bohužel world database má zřejmě lehce pofidérní strukturu a nelze ji updatovat na vyšší verzy.

 

Nevím přesně kde se chyba nachází každopádně to má něco společného s chary, protože když tato chyba nastane a já manuálně v db odstraním charactery z accountu, jde se normálně přihlásit, poté charactery dám zpět a chyba je pryč. Někdy pomůže vypnout wow a smazat cache, někdy ne. Někdy pomůže několikrát za sebou pustit wow zkusit se přihlásti vypnout wow a znovu, někdy ne.

Někdy to na acc nepustí po dobu několika sekund někdy ani po pul hodině.

Žádné zásahy jsem v core neprováděl, vlastní scripty jsem odstranil a chyba je tu pořád, jediné co je upravené je že:

BG dává item za kill a při přijmutí duelu se resetne mana/hp a resetnou se all cd.

Databasi mám updatovanou, auth i char jsem kontroloval ještě znovu dodatečně (world je samozřejmě také updatovaný na verzy TDB 335a.50)

Os našeho serveru na kterém běží wow server je Ubuntu.

Verze: TDB 335.50 - 2013/01/14

1 parent cdafb60 d4398eaafe54d7b358766d587aafd0579c280e61

 

 

Logování errou je v \src\server\game\Server\WorldSocket.cpp

 

// Check that Key and account name are the same on client and server
uint32 t = 0;
uint32 seed = m_Seed;
sha.UpdateData(account);
sha.UpdateData((uint8*)&t, 4);
sha.UpdateData((uint8*)&clientSeed, 4);
sha.UpdateData((uint8*)&seed, 4);
sha.UpdateBigNumbers(&k, NULL);
sha.Finalize();
std::string address = GetRemoteAddress();
if (memcmp(sha.GetDigest(), digest, 20))
{
	SendAuthResponseError(AUTH_FAILED);
	TC_LOG_ERROR(LOG_FILTER_NETWORKIO, "WorldSocket::HandleAuthSession: Authentication failed for account: %u ('%s') address: %s", id, account.c_str(), address.c_str());
	return -1;
}
TC_LOG_DEBUG(LOG_FILTER_NETWORKIO, "WorldSocket::HandleAuthSession: Client '%s' authenticated successfully from %s.",
	account.c_str(),
	address.c_str());

Ale nevím co tento script přesně volá a kde by tedy mohla být chyba, nebo čím je způsobena...

 

Dále nevím jestli je možné že to dělá špatná web registrace??? Ale ta by měla být v pořádku...

mysql_connect($ip,$user,$pass) or die ("Spojení se serverem $ip nebylo uspěšné");
 mysql_select_db($auth) or die ("Spojení s databasí nebylo uspěšné");

 function validateEmail($mail){if(eregi("^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,4})$", $mail)) return true;else return false;}
 function hashPassword($account,$password){return sha1(strtoupper($account).':'.strtoupper($password));}
 // sem kokot ..
 // #total_wasted_time 1h30m
 if($_POST){
  $_SESSION['data0']=$_POST;
  $error = 0;			
  if(!strlen($_POST['acc']) || strlen($_POST['acc'])!=strlen(addslashes($_POST['acc']))){
   $_SESSION['error']=  "<font color=FF4242>Uživatelské jméno je špatně zadané!</font><br />";
	$error++;
  } else if(mysql_num_rows(mysql_query("SELECT id FROM account WHERE username LIKE '".mysql_escape_string(strtoupper($_POST['acc']))."' LIMIT 1;"))){
	$_SESSION['error']= "<font color=FF4242>Uživatelské jméno už používá někdo jiný!!!</font><br />";
	$error++;	  
  } else if($_POST['pass']!=$_POST['pass2']){
	$_SESSION['error']=  "<font color=FF4242>Zadaná hesla se neshodují!</font><br />";
	$error++;
  } else if(!strlen($_POST['pass'])) {
	$_SESSION['error']=  "<font color=FF4242>Heslo není vyplněno!</font><br />";
	$error++;
  } else if(!validateEmail($_POST['email'])){
	$_SESSION['error'] =  "<font color=FF4242>Emailová adresa je neplatná!</font><br />";
	$error++;
  } else if(mysql_num_rows(mysql_query("SELECT id FROM account WHERE email LIKE '".mysql_escape_string($_POST['email'])."' LIMIT 1;"))){
	$_SESSION['error']=  "<font color=FF4242>Emailovou adresu už používá někdo jiný!!!</font>";
	$error++;
  }
  // konec validace

  if(!$error){
	 mysql_query("INSERT INTO account (username,sha_pass_hash,email,expansion,locked) VALUES('".mysql_escape_string($_POST['acc'])."','".hashPassword($_POST['acc'], $_POST['pass'])."','".mysql_escape_string($_POST['email'])."','2','0');");	  
	 $_SESSION['registred']=$_POST['acc'];
  unset($_SESSION['data0']);
  header("location: register.php");
  exit;
 }
 }

 

Někdo mi říkal že by to mohla dělat neshoda ipek a portu v db a v configach, ale to jsem také vše překontroloval a mělo by to být v pořádku.

CFG:

RealmID = 1
LoginDatabaseInfo	 = "127.0.0.2;3306;root;root;auth"
WorldDatabaseInfo	 = "127.0.0.2;3306;root;root;world"
CharacterDatabaseInfo = "127.0.0.2;3306;root;root;characters"
WorldServerPort = 8086
BindIP = "0.0.0.0"

 

DB:

db.png

 

Opravdu už nemám nejmenší tušení jak bych tuto chybu vyřešil, pokud někdo bude tak hodný a pomůže my nebo alespoň poradí, byl bych opravdu velice vděčný... Mám v serveru už přes 1000 hodin práce, dělám ho přes třičtvrtě roku, kvůli osobnímu životu jsem při práci měl občas několika týdenní pauzy, nyní jsem se dostal do fáze kdy je server připravený k hraní. Snažím se ho rozjet, ale bohužel s touto chybou je velice těžké nabrat populaci, zatím se držím kolem 10 online, ale bohužel spousty hráčů odradí jen to že je to nepustí do hry, moc my na tom záleží, děkuji předem všem alespoň za snahu, s pozdravem InnI.

 

Odkaz na download mé revize: TrinityCore

Web: InfinityWoW

Edited by Xardas123

Share this post


Link to post
Share on other sites

bylo by dobre poslat celou tu funkci

 

No ono není vůbec jisté jestli se to nachází ta chyba v tom worldSocketu...

 

WorldSocket.cpp

 

#include <ace/Message_Block.h>
#include <ace/OS_NS_string.h>
#include <ace/OS_NS_unistd.h>
#include <ace/os_include/arpa/os_inet.h>
#include <ace/os_include/netinet/os_tcp.h>
#include <ace/os_include/sys/os_types.h>
#include <ace/os_include/sys/os_socket.h>
#include <ace/OS_NS_string.h>
#include <ace/Reactor.h>
#include <ace/Auto_Ptr.h>
#include "WorldSocket.h"
#include "Common.h"
#include "Player.h"
#include "Util.h"
#include "World.h"
#include "WorldPacket.h"
#include "SharedDefines.h"
#include "ByteBuffer.h"
#include "Opcodes.h"
#include "DatabaseEnv.h"
#include "BigNumber.h"
#include "SHA1.h"
#include "WorldSession.h"
#include "WorldSocketMgr.h"
#include "Log.h"
#include "PacketLog.h"
#include "ScriptMgr.h"
#include "AccountMgr.h"

celí script....

Edited by Xardas123

Share this post


Link to post
Share on other sites

zaprve bych asi porovnal lidi kterym to de a kterym ne jestli se jim nejak nelisi zaznamy v DB, pak az bych hledal chybu v Core

Share this post


Link to post
Share on other sites

zaprve bych asi porovnal lidi kterym to de a kterym ne jestli se jim nejak nelisi zaznamy v DB, pak az bych hledal chybu v Core

 

Ta chyba je naprosto náhodná... Někomu se to stane 6x, někomu jednou, někomu trvá 10 sekund než ho to tam pustí někomu 30 minut.

Share this post


Link to post
Share on other sites

jaky je to commit jadra ?

Máš tam na stažení celou mojí revizi, můžeš se na to mrknout... :-)

Podle mě je chyba, někde v ověřování sessionkeye, nevím podle jakého algoritmu to koduje a ověřuje, ani kde to pžesně je, ale myslím že je problém někde tam. těžko říci, každopádně když se to stalo i mě že mě to nechtělo pustit smazal sem sessionkey, v a s a přihlásilo mě to uplně normálně... nejsem si 100% jist jestli to reagovalo na to,ale asi ano. Stejně jako když sem si smazal charactery, také to vždy pomohlo.

Edited by Xardas123

Share this post


Link to post
Share on other sites

Docela mě mrzí že já radím úplně všem, pomohl jsem už tolika lidem se stavbou serveru, dokonce sem si kvůli tomu udělal i své malé forum kde dávám rady, typy a pomáhám, ale když se dostanu do úzkých já, není nikdo schopný mi alespoň poradit.. :-(

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this  

×