Working on Ruby Implementation of the Login Server

As the title probably describes, I am in the process of creating a Ruby implementation of the Login Server. The generic benefits of a Ruby implementation of the Login Server include Ruby on Rails and Heroku integration as well as proving the notion that Ruby is equally capable for server-side tasks as C++ is. I feel that this project might also bring some clarity to novice programmers, looking to learn from TrinityCore… Now, keep in mind that I am not looking for people who have skill with Ruby(not that it wouldn’t help). However, I am looking for someone who knows how the Login Server works. Someone who knows the purpose of every class, method, and variable involved in the Login Server. So far I have the basic code implemented however, right now I am blindly attempting to make the sockets simulate the real servers. I do not know what information the server needs to send and what information it receives that must be parsed. Also keep in mind that I have no experience with the ACE library and need to know how it works. I really just need someone who can answer such questions. Any insight would be greatly appreciated.

The best answers are already found in trinitcore’s source code, nobody will put that in words for you

Yeah. I figured out how the packets worked entirely, however it was not from TrinityCore’s source code. Instead I found much more sufficient documentation and organization in MaNGoS’ source code. I disagree with you when you say no one can put the source code into words as I know I can for what I know so far, which is sufficient for me to write a Ruby implementation of this login server.

Here is a good place to start. Create a TCPSocket bound to port 3724 (of course) and then try sending the following packet encoded with ASCII-8BIT that contains 0x00, 0x00, 0x0C for CMD_AUTH_LOGIN_CHALLENGE(0x00), Unknown(0x00), WOW_FAIL_SUSPENDED, respectively. This is what the first packet is comprised of if you wanted to state that the account is suspended. The client would then display the message that goes along the lines of “your account has been suspended”. That would have gotten me in the ball park. I could elaborate more as I have learned much more, but I am just trying to make my point.

he said nobody will, not nobody can /emoticons/default_tongue.png

Ah I see how it is. I guess I will search for someone in MaNGoS, who can spend 5 minutes to explain the contents of the packets at login time. I guess I have my answer that I will not get anything out of the TrinityCore community.

In case anyone was wondering, I have completed this project. Trust me, it is not too difficult to explain. I just wish someone would have explained some of even the basic parts so that I didn’t have to spend 50 hours on this task. Regardless, I will release the code soon for those who are interested. It will likely come in the form of a Rails Application with a simple guide.

Didn’t you learn more by doing it yourself?

We always learn more by our own!

Even when your at the gym and someone is helping you bench press, you feel like a sissy being able to carry 45 lb only because a beast is behind you!