erlendftw 0 Report post Posted January 12, 2017 (edited) 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 January 12, 2017 by erlendftw 0 Share this post Link to post Share on other sites
hep 0 Report post Posted January 12, 2017 Good stuff right here! 0 Share this post Link to post Share on other sites
metagame 8 Report post Posted January 13, 2017 (edited) 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: 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: 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 January 13, 2017 by metagame 0 Share this post Link to post Share on other sites
erlendftw 0 Report post Posted January 13, 2017 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. 0 Share this post Link to post Share on other sites
Athena 3 Report post Posted January 13, 2017 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. 0 Share this post Link to post Share on other sites
erlendftw 0 Report post Posted January 13, 2017 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: 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: 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). 0 Share this post Link to post Share on other sites
metagame 8 Report post Posted January 13, 2017 (edited) 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 January 13, 2017 by metagame 0 Share this post Link to post Share on other sites
Athena 3 Report post Posted January 13, 2017 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. 0 Share this post Link to post Share on other sites