Jump to content

GaME - Yet Another MaNGOS GUI application


Recommended Posts

  • 39 years later...

GaME: Gamemasters Mangos Editor

GaME is a set of two programs: a client and a server. The server connects to your Mangos realm and database servers, while the client connects to that server to obtain up-to-date status information, account lookups, creature updates etc. It allows GM's to make small manipulations to the server without needing database access, and gives them near-realtime information on server stats through an easy to use GUI application.

Trac project page can be found at http://game-trac.fragfrog.nl/.

Latest update: 0.1.198, 17/04/10

- Chat panel updates.

Operations Layout

GaME consists of two parts: a client and server. The server runs continously and connects to both the database as well as a world server. It handles incoming commands from clients, allowing them to search for and modify characters, creatures and accounts, as well as view current server status information (uptime, amount of players, memory usage) and view & edit (account) bans. It's quite small, requires about 10~20Mb of ram to run, and very little in the way of processing power.

The client only requires a GM account (and the address of the server-part, though that is set in a config file). GM's can use it to login directly from their own PC's, which means they can edit creature templates for instance without access to the database and without the need to run a webserver that does. This too is written in JAVA. It closes to the system tray so GM's can easily keep track of server status, and when they need to edit anything they can simply bring it up by doubleclicking it. An access control panel allows admins to configure exactly which sections a GM can see, and which sections they can update - for example, you can set it such that GM1's cannot view creature details, GM2's can view them, and GM3s can also update creatures.

Main goal is to provide additional information to GM's and the ability for them to perform small changes - like change a creature's faction, edit the message for a ban, change the password for an account, kick or mute a troublemaker, handle a ticket or simply see a quick list of someone's characters. Members of your staff can use it to fix small problems themselfs, without giving them actual access to your database and without them needing to log in on a GM account. A logfile keeps track of all changes made by a GM, as well as a lot of server information and commands used depending on loglevel.

Screenshots

Login screen - Accounts panel -Characters panel - Creatures panel - Ban list - Server status - Access panel - Ticket handling - Chat panel - System Tray.

Features

- View & edit characters (level, exp, gold, account, etc).

- Send characters ingame mail, alerts.

- Mute / kick ingame characters.

- View & edit accounts (password, IP, lock, GM level, expansion, e-mail, characters).

- View & edit creatures (stats, scripts, faction, etc).

- View & edit account bans (bandate, banned by, reason).

- View & handle ingame tickets (close / reply & close / reply).

- View server status (uptime, players online / max, OS, memory usage).

- Chat with other connected GM's.

Compatibility

Mangos-wise, this should work with any version above ~ 6000, both TBC as well as WotLK. The client is tested to work on all major windows versions (XP, 2003, Vista, 7) and at least works on Ubuntu and OS-X (though with a few graphical glitches), server works on all major windows versions and probably also on linux (though untested - please let me know if it works for you!). Of course, an up-to-date JAVA virtual machine is required, which can be downloaded here.

Some functions (like kick / mute online player, logged in users) also require the Mangos SOAP library, introduced in 9466.

Download

Latest versions can be found in the SVN repository.

Releases: http://mangos.fragfrog.nl/GaME/release/

JAVA Source: http://mangos.fragfrog.nl/GaME/source/

Documentation: http://mangos.fragfrog.nl/GaME/documentation/

Plans for the future

Trac tickets - incomplete, but the most accurate list to date. Includes plans for new tabs for items, quests and bans, as well as more direct server functionality - like restart the server, make announcements, reload templates, etc.

Purpose of this topic

Basicly, feedback. I would like to know if there are any good suggestions for new functionality, or changes to existing functionality. Bugs can occur since this is still very much an alpha release, but anything major is good to know as well.

Link to comment
Share on other sites

From the lack of reactions here I suppose there is no interest then, but since I created the basic version anyway you can find it at the following SVN address:

http://mangos.fragfrog.nl/GaME/

Mostly contains a few more improvements security-wise (for instance, not allow GM's to give a higher GM level than their own) and a status notice upon account updates. There's a short installation guide as well, if anyone still wants to give it a try :)

Link to comment
Share on other sites

  • 1 month later...

Hah, figured I might as well, it's actually starting to become somewhat of a fun project for me to work on now. JAVA is a nice language to work in, although the Mangos remote console interface is a bugger.

I have added a Trac project page by the way, http://game-trac.fragfrog.nl/, should make it easier to keep track of new features, issues and bugs.

Link to comment
Share on other sites

This is the first time I even hear of EJB modules to be frank, I'm still fairly new to JAVA development, but it looks interesting :)

As for the RA console: it is somewhat ambigous in my experience. Sometimes no response is send for some reason without closing the connection, if the server is shut down the connection is not properly closed and even if you do get a connection it sometimes accepts login commands while at other times it just ignores them.

My solution so far has been to simply keep track of what is send back (when it is send back) and detect empty-lines (in which case the connection is dropped and reestablished), login failures (in which case the connection is merely dropped), succesfull connections without response (in which case several more login attempts are made before dropping and reconnecting) and finally the case where we get a succesfull user login response and non-empty lines from write operations, in which case the connection is kept.

From this behaviour I would guess the RA connection is a non-blocking connection in the main thread of the server - if it has time, it'll reply, but if not, it simply won't, or later. Maybe a better way to handle it would be to create a non-blocking client which always listens and handles replies when it can, I am thinking of rewriting it to reflect this, will probably be neater.

Link to comment
Share on other sites

Sometimes no response is send for some reason without closing the connection, if the server is shut down the connection is not properly closed

Are you sure about that? I guess mangos uses TCP as layer4 for RA, so you should get RST if you try to send something to a closed port.

Link to comment
Share on other sites

I have only tested it under Windows by closing the Mangos window - not through a proper .server shutdown. The former seems more plausible in case of a servercrash though.

JAVA's Connection class has special methods to detect closed, shutdown, unbound or unconnected connections - none of those seem to correctly detect when the server goes offline unfortunately. Might just be my implementation though :D

Link to comment
Share on other sites

I have only tested it under Windows by closing the Mangos window - not through a proper .server shutdown. The former seems more plausible in case of a servercrash though.

JAVA's Connection class has special methods to detect closed, shutdown, unbound or unconnected connections - none of those seem to correctly detect when the server goes offline unfortunately. Might just be my implementation though :D

Well, what's your definition of "closed connection detection"? I don't know how java does it, but it should be similar.

In C, we have this nice connect() function, which is able to establish a TCP connection. We have also send() and recv() to write and read data. As you may know, in TCP world, everything needs confirmation, ie. an ACK reply packet, so each time you send(), the kernel send a piece of data and waits for an TCP ACK reply before returning. If the remote side has no listening service bound to a specific port and address, the remote machine's kernel send a TCP RST packet, telling you to "go fish" with your connection requests. Thus, if I'm not mistaken about the return-after-ack thing, you should be able to check for something like ECONNRESET or ENOTCONN. If you detect such error, you can be sure the connection is no longer usable.

Link to comment
Share on other sites

  • 2 weeks later...

If you are having a trouble with Telnet in java then i can recommend JTATelnet which can be found here

www.javassh.org, its GPL and adds telnet functionality to java and is easy to use.

I use it in MaNGOLin and if you need some hints on how to use it download the MaNGOLin source code and take a look at the MangosTelnet.java file.

Im assuming of course that your own code is GPL as well.

Its a far easier solution than writing your own telnet code which is definately a bugger to do :)

MaNGOLin code can be found here www.caledoniacomputers.com

Link to comment
Share on other sites

Thanks! Writing your own telnet code is definately a bugger I found, though by now my implementation seems fairly stable. The connection problems between client and server are fixed as well now, turned out there still was an old debug command active sending bogus data to the clients - I found this to be a good guide for creating a stable socket connection in JAVA :)

Link to comment
Share on other sites

  • 2 months later...

Update

Added a whole lot of features and bugfixes since the last post here, see startpost for updated info :)

Work under *NIX?

I've tested the client, and it works on Ubuntu now (had to make a few changes to the code, but I expect it'll run on pretty much anything). Few graphical issues, mostly fonts, but nothing to worry about. Have not tested the server yet, but I expect it will work with no problems as long as you have an up-to-date Java VM installed.

Link to comment
Share on other sites

  • 2 months later...

Update

Added some more functionality recently, including ticket handling & more character edit options. Also rewrote a great deal of the underlying communication protocol (now mostly uses serialized java objects instead of data strings), should fix most random lockup bugs but might have introduced a few new ones so any feedback is of course still welcome ^^

Link to comment
Share on other sites

  • 2 months later...

I see a real world possibility for this under the real servers....fragfrog...if this accually worked and you could get blizzard to listen then you would finnaly have a linux client and people wouldn't have to use wine or some other emulator just to run WoW....Your a Genius!...go get them Tiger!...

Link to comment
Share on other sites

  • 1 year later...
  • 3 weeks later...

Im getting this error when starting the Server GaMED,jar on my LAN server

[01:05.54] Starting up server.

[01:05.54] Listening on port 9002

[01:05.54] Server listener activated

[01:05.54] Attempting to connect to gameserver.

[01:05.54] Running SOAP interface.

[01:05.54] Server operational.

[01:05.54] Exception occured while obtaining last ticket ID

What should I do?

Link to comment
Share on other sites

Guest
This topic is now closed to further replies.
 Share

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. Privacy Policy Terms of Use