easy-wi / developer

Gameserver, Voiceserver Webinterface
https://easy-wi.com
GNU General Public License v3.0
225 stars 82 forks source link

GameQ, statuscheck.php, UT1/99, UT2004 #280

Closed DNW-Donzi closed 10 years ago

DNW-Donzi commented 10 years ago

Sry, wir sind etwas langsamer mit der 4.2

Query's werden in der statuscheck.php mit

Zeile 181

$row['gameq'], 'host' => $row['serverip'] . ':' . $row['port']);

abgefragt. Allerdings trifft das nicht auf UT99, UT2003/4 zu.

Der UDP-Queryport für eine UT-Abfrage in GameQ liegt eins über dem Gameport (7777 -> 7778), nicht wie bei qstat UT99 +1 und UT2kx +10.

Wundert mich selbst.

Ich hab testweise den Eintrag $row['port']); auf $row['port2']); gelegt (port2 beim UT99 hab ich den Queryport), dann bekomm ich die korrekte Anzeige.

Auszug aus der Shell:

php ./statuscheck.php
Checking Gameserver and Voiceserver
Checking 11 server(s) with GameQ query
Server 95.156.230.70:27015 is running as Left 4 Dead 2. The name converted to ISO-8859-1 is *** DNW Despe Networks *** Left4Dead 2 Testserver.
Server 95.156.230.73:22350 is running as Teeworlds. The name converted to ISO-8859-1 is !    *** DNW Despe.de *** Teeworlds DM!.
Server 95.156.230.70:44400 is running as WarSow. The name converted to ISO-8859-1 is ^7 [CA] FunServer ^5by DNW.
Restarting: 95.156.230.70:11337

# mit geändertem port2

php ./statuscheck.php
Checking Gameserver and Voiceserver
Checking 11 server(s) with GameQ query
Restarting: 95.156.230.70:27015
Restarting: 95.156.230.73:22350
Restarting: 95.156.230.70:44400
Server 95.156.230.70:11337 is running as UT99 MapvoteX. The name converted to ISO-8859-1 is zp| * * *  UTzone.de  * * *  iCTF #1     [ P U R E INSTAGIB ] by DNW.

Ich hab das mit der Standalone von GameQ ausprobiert und es stimmt auch für UT2004, was mich sehr verwundert, aber ich wurde eines besseren gelehrt.

GameQ-Standalone-Version: gameq-standalone

Leider ist es ein Produktiv-System, ich muss erstmal zurück auf 4.1

Dennoch, an alle einen :+1:

ulrichblock commented 10 years ago

Da ich etwas Mühe habe dein Anliegen zu verstehen: Default Verhalten von UT und UT2004 ist Queryport = Gameport +1

Auf was guckt GameQ nun bei Easy-Wi und was bei Standalone?

Ich verstehe gerade, dass es funktioniert, wenn man GameQ alleine nutzt, aber nicht, wenn man die GameQ von Easy-Wi nutzt.

DNW-Donzi commented 10 years ago

Sry, haste recht :/ war ne lange Update/Restore-Nacht

Laut Zeile 181 (4.2) wird der erste Port abgefragt und auch an GameQ-Intern zum Abfragen weitergeleitet (?) Richtig? Ich kanns irgendwie auch net loggen, was abgefragt wird, finds nich :/

Die UT-Server werden alle restartet, da sie nicht erreicht werden. Also hab ich nen bisl rumgeschraubt:

Für UT das Template mal geändert Port= gameport Port2=gameport+1 (bekannter Queryport für UT) Port3=gameport+1 (UDP-Queryport)

Für bzw.UT2004, ebenso das Template geändert Port= gameport Port2=gameport+10 (bekannter Queryport für UT2004) Port3=gameport+1 (UDP-Queryport)

Und hab in die Zeile 181 testweise port3 eingesetzt und da bekamm ich übers easy den Status aller UT-Server "online". (Allerdings, klar, andere Server nicht)

GameQ Extern fragt wie es sein soll den GamePort +1 ab, ob UT oder UT2004 bsp ist online http://utzone.de/go/3l

//Edit Manchmal haperts...... Ich finde in der statuscheck.php keine Gameport+1, damit es an GameQ-Intern weitergegeben wird, evtl. hilft das besser :/

DNW-Donzi commented 10 years ago

Es hat mir keine Ruhe gelassen :)

Github-Version Test, auf frischer lokalen vm-Deb-Wheezy

Nur den UT99-Server genommen, Default-GameServerTemplate, Debugmodus gefunden ^^

root@debian:/var/www# php ./statuscheck.php
Checking Gameserver and Voiceserver
Checking 1 server(s) with GameQ query
Array
(
    [gq_address] => 192.168.1.120
    [gq_dedicated] =>
    [gq_gametype] =>
    [gq_hostname] =>
    [gq_joinlink] =>
    [gq_mapname] =>
    [gq_maxplayers] =>
    [gq_mod] =>
    [gq_numplayers] =>
    [gq_online] =>
    [gq_password] =>
    [gq_port] => 7777
    [gq_protocol] => gamespy
    [gq_transport] => udp
    [gq_type] => ut
    [players] => Array
        (
        )

    [teams] => Array
        (
        )

)
Restarting: 192.168.1.120:7777
Array
(
    [1] => Array
        (
            [0] => sudo -u test-1 ./control.sh addserver test-1 1_ut99 192.168.1.120_7777
            [1] => sudo -u test-1 ./control.sh grestart test-1 "192.168.1.120_7777/ut99/System" "./ucc-bin server DM-Codex.unr?Game=Botpack.DeathMatchPlus?MaxPlayers=12 -ini=UnrealTournament.ini -log=server.log -multihome=192.168.1.120 -port=7777 -queryport=7778 -WebServerListenPort=7779 -nohomedir" unprotected ucc-bin ""
        )

)
Checking TSDNS
root@debian:/var/www##

[gq_port] => 7777 solllaut GameQ 7778 sein

Folgendes Umgeschrieben:

UT99-Template: Gameserverport: 7778 Port 2: 7777 Befehle für Gamemods [DM = default] %map%?Game=Botpack.DeathMatchPlus?MaxPlayers=%slots% -ini=UnrealTournament.ini -log=server.log -multihome=%ip% -port=%port2% -queryport=%port% -WebServerListenPort=%port3% -nohomedir

Dem GameServer selbst ebenso die Ports geändert: Gameserverport: 7778 Port 2: 7777

Ergebnis:

Restart done
sudo -u test-1 ./control.sh addserver test-1 1_ut99 192.168.1.120_7778
sudo -u test-1 ./control.sh grestart test-1 "192.168.1.120_7778/ut99/System" "./ucc-bin server DM-Codex.unr?Game=Botpack.DeathMatchPlus?MaxPlayers=12 -ini=UnrealTournament.ini -log=server.log -multihome=192.168.1.120 -port=7777 -queryport=7778 -WebServerListenPort=7779 -nohomedir" unprotected ucc-bin "" 
root@debian:/var/www# php ./statuscheck.php
Checking Gameserver and Voiceserver
Checking 1 server(s) with GameQ query
Server 192.168.1.120:7778 is running as Unreal Tournament. The name converted to ISO-8859-1 is Linux UT Server by DNW.
Array
(
)
Checking TSDNS
root@debian:/var/www#

Der Server läuft nun korrekt auf GamePort 7777, Queryport 7778 und wird von GameQ auch auf Port 7778 abgefragt. Ich geh ma davon aus, für UT2004 wirds ähnlich sein, übertrieben gesagt in der statuscheck.php für unreal-engines einen +1 setzen, oder gleich auf Port2 setzen. (UT3 ausgenommen, die Abfrage liegt auf Port 6500, auch hier besser Port2 als Abfrage, da is nix mit +1)

Hab da was im 4.1 gesehen ;)

$query = ($qstat == 'mtasa') ? serverQuery($serverip, ($port + 123), $qstat) :

Auch hier, ich hoffe ich konnt helfen :)

ulrichblock commented 10 years ago

Ich denke das beste wird sein, dass man in der statuscheck.php einen Check nach UT Spielen einbaut. Wenn UT, dann nutze Port2 als Queryport.