Jump to content
erlendftw

Developers - Queue API/Access (ElysiumStatus)

Recommended Posts

Hi Elysium team, first of all, thanks for your wonderful work. Its a joy experiencing vanilla again with Elysium.

I am the developer of the quite popular elysiumstatus.com where I am providing your players with a third party platform that monitors your services. In the event of server outages hundreds of players visit the site immediately (When you guys just restarted the servers, the visitor count got up to 700..).

Someone at Apple once said (I don't remember who) that having a set of services based on your service (creating an ecosystem) was the number one step to increase popularity and success, and I must say - I believe them on this point.

The case

A lot of players have asked me If there were any way I could provide live queue status on ElysiumStatus.com. At first I thought I'd not do it, hence the technical difficulties involved. But then I later changed my mind and started on a project I have called Elysium Auto Queue (EAQ)EAQ is an automated software that logs in using the world of warcraft client to gather information about the queues. It does this by literally clicking buttons, filling out fields and reading off screen using OCR.

And - this works. ElysiumStatus now shows queue times. However, I am currently using my own desktop computer to run this solution. Since the software actually navigates through the game client it is quite buggy and unstable - and may break whenever something unexpected happens. On top of that, I can't use my desktop computer for anything else than AQL. 

My question to you

To improve the quality of ElysiumStatus and the experience for your players - Could you (the developers) add some sort of API (Open, public or closed) where ElysiumStatus.com can regularly fetch the queue statuses from your services? This would help the service a lot (and me personally).. On top of that I think that your users would be very grateful.

If capacity is the problem, then I'd be happy to help If my competence can be used. I am fairly good in C#, JS/NODE and a handful of other languages.

 

Hoping for a positive response,

Best regards,

Erlend Ellingsen

Edited by erlendftw

Share this post


Link to post
Share on other sites

You already have an API and API credentials, by definition, the login server is an API and your login information is your API credential.

Analyzing the pcap from capturing WoW traffic with Little Snitch, I was able to determine the exact packet the login server expects from my account and I was able to reverse-engineer the "Position in queue" data from received TCP packets.

When you're in queue, the login server sends you packets that end in a 4-byte little endian hex value that is your position in queue. For example, this screenshot of the pcap file was taken when I was position #3729 in queue:

zHcHOsk.png

91 0e 00 00 = 3729. In big endian notation, for those of you who like to calculate hex values in your head, that is 0x0e91 == 3729.

 

When I went down to position 3726 in queue, this is the next packet I received from the server:

VzT2A0l.png

0x0e8e == 3726.

So instead of using OCR, you could use a script to analyze TCPdump // wireshark // Little Snitch and scan the TCP packets for the last 4 bytes. If you want to get really crazy with this, you could write a thin client that emulates logging in via command-line, so you don't have to run WINE on a Linux box or use a physical PC in your basement (which it sounds like is close to your current situation).

Edited by metagame

Share this post


Link to post
Share on other sites
11 hours ago, Staden said:

Nice work on the site - a great resource for the community! I'll talk to those running the website to see if we can get something sorted.

Thanks for your reply. I'm glad to see this response! Hoping for the best.

Share this post


Link to post
Share on other sites
19 hours ago, erlendftw said:

However, I am currently using my own desktop computer to run this solution. Since the software actually navigates through the game client it is quite buggy and unstable - and may break whenever something unexpected happens. On top of that, I can't use my desktop computer for anything else than AQL. 

 

There are open source solutions that let you login to a realm with a headless client. 

Share this post


Link to post
Share on other sites
12 hours ago, metagame said:

You already have an API and API credentials, by definition, the login server is an API and your login information is your API credential.

Analyzing the pcap from capturing WoW traffic with Little Snitch, I was able to determine the exact packet the login server expects from my account and I was able to reverse-engineer the "Position in queue" data from received TCP packets.

When you're in queue, the login server sends you packets that end in a 4-byte little endian hex value that is your position in queue. For example, this screenshot of the pcap file was taken when I was position #3729 in queue:

zHcHOsk.png

91 0e 00 00 = 3729. In big endian notation, for those of you who like to calculate hex values in your head, that is 0x0e91 == 3729.

 

When I went down to position 3726 in queue, this is the next packet I received from the server:

VzT2A0l.png

0x0e8e == 3726.

So instead of using OCR, you could use a script to analyze TCPdump // wireshark // Little Snitch and scan the TCP packets for the last 4 bytes. If you want to get really crazy with this, you could write a thin client that emulates logging in via command-line, so you don't have to run WINE on a Linux box or use a physical PC in your basement (which it sounds like is close to your current situation).

Thanks. I thought of this possibility myself - but I am not extremely familiar with networks and packets etc, and I can see myself sitting for quite some time trying to figure out what to look for.

The current solution is not optimal, but it works (And hey, after a day of uptime it's quite stable actually). 

 

Share this post


Link to post
Share on other sites

Great -- if it is working keep it going for now.

Burdening the Elysium staff with *another* software package to maintain/update is less than ideal. If they provide a simpler API, that would be great, we would not need to look much further into this project. However, they are already maintaining the login server, and it currently functions correctly serving the needed information. In the absence of an official API, I think a hosted solution would be the most robust. I will create a thin client used for login and capture of this data, test it out on my own Digital Ocean server, and implement a database to store queue information chronologically. The code will be open-sourced and released on gitlab.

1 hour ago, Athena said:

There are open source solutions that let you login to a realm with a headless client. 

If you would, please PM me with any resources you find, I would like to compare my search results with the software you know of.

Again, if Elysium staff choose to provide this API as a service, that would be the simplest and best solution. If they are not interested in going down that path, I'll create the thin client and Erlend can use it to populate the queue data on his site.

Edited by metagame

Share this post


Link to post
Share on other sites
8 minutes ago, metagame said:

If you would, please PM me with any resources you find, I would like to compare my search results with the software you know of.

If you are creating something yourself, why don't you use one of the emulator projects (Mangos?) to check what packages to send. 

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

×