What is Megaphone?

What is Megaphone?
The Megaphone project is about enhancing open source chat software. Specifically, the goal is to allow ejabberd to support 1,000,000 simultaneous users. See The Plan page for more details on how I plan to solve this problem. See the About this Blog page for more details on why I created this blog.

Tuesday, December 20, 2011

Two Steps Forward One Step Back

Previously

  • IT'S ALIVE!
  • I started coding up mod_megaphone
  • I had some success with trying to send messages around

Made some good progress on mod_megaphone, though I made a (possibly bad) mistake.  The good news is that I've added some code to send packets from mod_megaphone to ECM.  The bad news is that I bought a somewhat early Christmas present in the form of Star Wars: the Old Republic (SW:TOR).

On the progress side I dug around  a little just to find something similar to the old trusty sprintf function equivalent in erlang.  It turns out that this is something called io_lib:format.  I wanted to create a zero-padded string to hold the packet size.  The call ended up being:

    io_lib:format("~<digits>..0B", [ PacketSize ])


Unfortunately, this returns returns a somewhat strange list within list structure so the final form for this snippet ends up being:


    lists:flatten(io_lib:format("~<digits>..0B", [ Number ]))


Don't ask me why you have to flatten the output of io_lib:format.  I have enough aggravations.


SW:TOR is a more insidious threat, that has the potential to latch onto me when I'm feeling down when something isn't working.  


SWTOR won't judge you...
SWTOR cares about you...
SWTOR feels that you are an epic, galaxy-hopping hero...


I must resist the temptation!


The next steps are to:

  • Find that portion of the modified HTTP BIND system that accepts packets from the client
  • Modify that part of the system to accept packets from mod_mephone.
  • Intercept the packets going back out of the system.
  • Send the packets over ECM instead.

No comments:

Post a Comment