For channel warring reasons, Rob and I started implementing a battle.net clone, named 'bunker'
It implements text and all game protocols up to (but not including) war 3... but only for chatting purposes. It does not, and will never support gaming.
bunker is written entirely in ANSI C and aims to be POSIX compliant where possible.
It supports the following
6112 (TCP/UDP) for clients
6113 (TCP) for server linking
/tmp/bunker (AF_UNIX) for IPC clients
Its database backend, for now, is dbm...we chose dbm because it is included in the Single Unix Specification (v2). Additionally, it does not use a viral license like that of the GPL (our license is not an open source license for obvious reasons). We might use BDB 1.85 later on. Authentication takes place over the server link which is in contrast to using a dedicated database server software (MySQL's library also blocks...another reason we don't want to use MySQL...this server relies on non-blocking!).
So, our progress at present
-text protocol is complete
-game protocol is complete but may need cleaning up
-chatting is nearly complete, need to implement all the standard commands
-IPC handling, and IPC client are in the works...IPC client is used for administration and it is given administrator status on connect (new product type [IPCC], Inter Process Communication Client)
-server linking is in the works
-authentication is complete
So we're about half way finished, maybe 40-50%
bunker is modular, everything is as general as possible. The server core is oblivious to the client's protocol, the protocols are modules that provide callbacks for the server to use. Bunker, for the time being is multiplexed with select(), but it shouldn't be too difficult to use kqueue/epoll...in fact I might add #ifdefs BSD and Linux platforms to take advantage of those.
I am aiming for the battle.net environment as it was before nbbot (but not including the vulnerabilities it had, as iago was kind enough to mention to me
. For example, "The Void" is a valid chatting channel. There is only allowed one CHAT client per IP (until a split happens, then the split server isn't aware of your other client). We anticipate real splits for much the same reason IRC servers split.
We will import features like the friend list, and the '/r' command pvpgn has for responding to whispers.
I'll keep you up to date on progress, but it looks terrific so far!
Comments and criticisms are welcome
P.S. If you have standard error/info responses, screenshots, etc...from those days, I'd really appreciate it if you could share them with me.
http://www.emadness.net/http://www.projectbunker.net/