Wanparty.dk

Spil => Minecraft => Emne startet af: Wishbone på 13. Februar '11 kl. 23:15



Titel: MineCraft server monitor
Besked af: Wishbone13. Februar '11 kl. 23:15
PS: Hvis i støder på en web-baseret server monitor til MC (a la de andre vi har på forsiden), vil jeg gerne høre om det. Jeg har ikke kunnet finde nogen, så måske skal jeg bare selv prøve at tyde protokollen med Wireshark, men det ville være nemmere hvis nogen havde gjort det allerede.
Well, nogen må have gjort det for at lave dette webadmin tool (https://www.minecraftwiki.net/wiki/McMyAdmin), men om det inkluderer en monitor man kan sætte på hjemmesiden, ved jeg ikke.


Titel: MineCraft server monitor
Besked af: Wishbone15. Februar '11 kl. 00:15
PS: Hvis i støder på en web-baseret server monitor til MC (a la de andre vi har på forsiden), vil jeg gerne høre om det. Jeg har ikke kunnet finde nogen, så måske skal jeg bare selv prøve at tyde protokollen med Wireshark, men det ville være nemmere hvis nogen havde gjort det allerede.
Hmm, nu har jeg kigget lidt på det, og...

Tja, jeg har decompilet serveren. Hvis du kan komme op med en god idé til hvordan klientsiden af server monitoren skal skrues sammen, og kan fortælle mig hvordan du gerne vil have data leveret, så kan jeg muligvis lave et server mod som kan levere dataene. Jeg vil tro det nemmeste er at outputte dem i en XML fil og så opdatere den periodisk. Det er vel ikke så mange data der skal til. Det eneste som muligvis er lidt tricky er at afgøre om serveren i det hele taget er online. Det eneste jeg umiddelbart kan komme op med er at timestampe filerne, og så lave en logik i monitoren som siger at hvis filen er over x sekunder gammel, så er serveren offline. Man kan selvfølgelig skrive til filen under shutdown, men det hjælper jo ikke hvis serveren crasher.

Hvorom alting er, så er det da en interessant opgave. Det er ikke sikkert jeg kan gøre det, men jeg er da villig til at give det et forsøg.


Titel: Sv: MineCraft server monitor
Besked af: Geddeth15. Februar '11 kl. 09:32
Tja, jeg har decompilet serveren.
:o ;D
Tjek om dette kan være til hjælp, de gør vist noget af det samme: https://mcp.ocean-labs.de/index.php/MCP_Releases (https://mcp.ocean-labs.de/index.php/MCP_Releases)

Jeg havde egentlig fået opfattelsen af, at serveren var open source, men det lader det ikke til alligevel. Jeg kan i hvert fald ikke finde kildekoden. Men disse servere er det i hvert fald: https://www.minecraftwiki.net/wiki/Custom_server_list (https://www.minecraftwiki.net/wiki/Custom_server_list)

Måske er der inspiration at hente i noget af deres kode.

Hvis du kan komme op med en god idé til hvordan klientsiden af server monitoren skal skrues sammen, og kan fortælle mig hvordan du gerne vil have data leveret, så kan jeg muligvis lave et server mod som kan levere dataene. Jeg vil tro det nemmeste er at outputte dem i en XML fil og så opdatere den periodisk. Det er vel ikke så mange data der skal til. Det eneste som muligvis er lidt tricky er at afgøre om serveren i det hele taget er online. Det eneste jeg umiddelbart kan komme op med er at timestampe filerne, og så lave en logik i monitoren som siger at hvis filen er over x sekunder gammel, så er serveren offline. Man kan selvfølgelig skrive til filen under shutdown, men det hjælper jo ikke hvis serveren crasher.
Jeg vil helt klar helst have dem serveret som XML via HTTP. Dvs. serveren skal åbne en seperat query port, som udelukkende har til formål at spytte XML ud på request. Det gør stort set alle andre spilservere, bortset fra at kun et fåtal af dem er intelligente nok til at bruge XML som dataformat. Det vil også løse problemet med om serveren er online, fordi den ganske enkelt ikke vil svare på HTTP-forespørgslen, hvis den ikke er online. Så er det op til den forespørgende part at håndtere den situation korrekt.
Hvis du kan få dette wrappet rundt om en vanilla Beta-server, tror jeg du bliver en helt på MC forums  8)

Jeg kan dog forestille mig, at det bliver svært, hvis det skal gøres via de/re-obfuscation af koden. Det eneste mod til Beta-serveren jeg har set, er på denne liste: https://www.minecraftwiki.net/wiki/Mods (https://www.minecraftwiki.net/wiki/Mods)
Og det er bare nogle ekstra konsol-kommandoer, ikke noget fancy som dette.

Hvorom alting er, så er det da en interessant opgave. Det er ikke sikkert jeg kan gøre det, men jeg er da villig til at give det et forsøg.

Well, give it a shot. Vi bør måske lige researche lidt dybere, og overveje løsningen ordentligt inden. Måske kan nogen i MC server forummet give indspark til hvordan det skal gøres.


Titel: Sv: MineCraft server monitor
Besked af: Geddeth15. Februar '11 kl. 09:38
... og nu tænker jeg så lige højt: hvis man kan lave en seperat monitor (altså et seperat program/proces), som serverer data via XML/HTTP, så kan det være man kan få den til at spørge Beta-serveren via konsol-kommandoen "/list", som jo lister spillerne og deres navne. Det er jo dybest det eneste man skal vide.

Jeg blev inspireret af denne sætning om server management mods:
   "They are frequently implemented as "wrappers" which do not actually modify the main server .jar file, instead monitoring its output and sending commands to it. "

Det er vist også sådan Tztk er implementeret (i Perl): https://www.minecraftwiki.net/wiki/Mods/Tztk (https://www.minecraftwiki.net/wiki/Mods/Tztk)


Titel: Sv: MineCraft server monitor
Besked af: Wishbone15. Februar '11 kl. 09:54
Tja, jeg har decompilet serveren.
:o ;D
Tjek om dette kan være til hjælp, de gør vist noget af det samme: https://mcp.ocean-labs.de/index.php/MCP_Releases (https://mcp.ocean-labs.de/index.php/MCP_Releases)

Det var sådan jeg decompilede den ;-)

Jeg vil helt klar helst have dem serveret som XML via HTTP. Dvs. serveren skal åbne en seperat query port, som udelukkende har til formål at spytte XML ud på request. Det gør stort set alle andre spilservere, bortset fra at kun et fåtal af dem er intelligente nok til at bruge XML som dataformat. Det vil også løse problemet med om serveren er online, fordi den ganske enkelt ikke vil svare på HTTP-forespørgslen, hvis den ikke er online. Så er det op til den forespørgende part at håndtere den situation korrekt.
Hvis du kan få dette wrappet rundt om en vanilla Beta-server, tror jeg du bliver en helt på MC forums  8)

Altså en regulær webservice? Tja, det ville selvfølgelig være at foretrække. Men også noget sværere end bare at generere en fil. Still, der må være mindst tusind eksempler på webservices i Java jeg kan stjæle fra nettet.

Jeg kan dog forestille mig, at det bliver svært, hvis det skal gøres via de/re-obfuscation af koden. Det eneste mod til Beta-serveren jeg har set, er på denne liste: https://www.minecraftwiki.net/wiki/Mods (https://www.minecraftwiki.net/wiki/Mods)
Og det er bare nogle ekstra konsol-kommandoer, ikke noget fancy som dette.

Well, så fancy er det jo heller ikke. Men hvis det er ekstra konsol kommandoer må det også være en replacement af selve server klassen (de er nemlig implementeret der), hvilket desværre næsten er en nødvendighed for at lave den slags tiltag. For at kunne hive data ud af serverens runtime objekter er man nødt til at have en "snabel" ind i selve serverkoden.


Titel: Sv: MineCraft server monitor
Besked af: Wishbone15. Februar '11 kl. 09:59
... og nu tænker jeg så lige højt: hvis man kan lave en seperat monitor (altså et seperat program/proces), som serverer data via XML/HTTP, så kan det være man kan få den til at spørge Beta-serveren via konsol-kommandoen "/list", som jo lister spillerne og deres navne. Det er jo dybest det eneste man skal vide.

Mnjoe, men kræver det ikke at den er "logget ind"? Er der en standard admin account man kan bruge?

I teorien kunne man jo muligvis hive alle mulige data ud og lave statistikker på dem. "Mobs killed", "Blocks removed", "Blocks placed", "Player deaths", etc. Men jo, til en almindelig server monitor er antallet (og muligvis navnene) på spillerne vel det vigtigste. Oh, og én oplysning det kunne være helt vildt cool at vise er time of day på serveren.


Titel: Sv: MineCraft server monitor
Besked af: Geddeth15. Februar '11 kl. 10:06
... og nu tænker jeg så lige højt: hvis man kan lave en seperat monitor (altså et seperat program/proces), som serverer data via XML/HTTP, så kan det være man kan få den til at spørge Beta-serveren via konsol-kommandoen "/list", som jo lister spillerne og deres navne. Det er jo dybest det eneste man skal vide.

Mnjoe, men kræver det ikke at den er "logget ind"? Er der en standard admin account man kan bruge?

MC serveren starter i "interactive mode", så du kan skrive konsol kommandoer til den ligesom du kan inde i spillet. "say"-kommandoen gør fx. at jeg kan chatte med spillerne, og "list" giver mig spillernes navne. Så en simpel wrapper rundt om serveren (ligesom Tztk) kan hente output fra list-kommandeon og sende det videre som XML/HTTP.


Titel: Sv: MineCraft server monitor
Besked af: Geddeth15. Februar '11 kl. 17:09
Et andet sted at hente info er hos Minecraft Coalition, https://wiki.vg/Main_Page (https://wiki.vg/Main_Page)


Titel: Sv: MineCraft server monitor
Besked af: Geddeth15. Februar '11 kl. 17:16
Og så har jeg fundet en gratis service, der måske kan hjælpe os lidt i mellemtiden:
https://www.minecraftforum.net/viewtopic.php?f=10&t=1515 (https://www.minecraftforum.net/viewtopic.php?f=10&t=1515)

Den viser bare en grafik som indikerer om serveren er online eller offline: (https://res.public-craft.com/hb.pyc?ip=88.198.25.145&port=25565)

Og den gør det ved at logge en anonym bruger på serveren for at tjekke :(