Clan x86

Technical (Development, Security, etc.) => General Programming => Topic started by: nslay on April 18, 2007, 01:58:01 pm

Title: bunker bnet
Post by: nslay on April 18, 2007, 01:58:01 pm
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/
Title: Re: bunker bnet
Post by: mynameistmp on April 21, 2007, 12:48:22 am
  Additionally, it does not use a viral license like that of the GPL (our license is not an open source license for obvious reasons). 

What're the obvious reasons that it is not an open source license?
Title: Re: bunker bnet
Post by: Blaze on April 21, 2007, 02:23:39 am
When you said Rob I thought I knew who you were talking about.. till I read your website.  Who's Rob again?  :\
Title: Re: bunker bnet
Post by: Joe on April 21, 2007, 08:50:43 am
  Additionally, it does not use a viral license like that of the GPL (our license is not an open source license for obvious reasons). 

What're the obvious reasons that it is not an open source license?

Copyright infringement.
Title: Re: bunker bnet
Post by: nslay on April 21, 2007, 04:13:46 pm
  Additionally, it does not use a viral license like that of the GPL (our license is not an open source license for obvious reasons). 

What're the obvious reasons that it is not an open source license?

Copyright infringement.

Yes potential copyright infringement...though I don't think protocols alone should be copyrightable.
I want full control of the souce and executable so if a day comes when we do get a complaint from battle.net, we can easily pull it or modify it with no harm no foul.

In fact, the plan is to make a transition from battle.net protocols (for backwards compatibility) to a new protocol.  As an example, IPCC is a new protocol that bunker supports.  Although it can be used for chatting it is mainly for manipulating the bunker daemon without even logging in.
For example
Quote
%./bunkerctl -m -l nslay
Password:
Account created successfully!
This uses an AF_UNIX SOCK_STREAM socket, connects and sends an IPC_COMMAND_MAKEACCT packet to bunker and awaits a response.
Title: Re: bunker bnet
Post by: nslay on April 21, 2007, 04:16:00 pm
When you said Rob I thought I knew who you were talking about.. till I read your website.  Who's Rob again?  :\

Rob is a software engineer who got dragged into bot development in 2004 by a fellow battle.net junky. 
Title: Re: bunker bnet
Post by: Blaze on April 21, 2007, 06:13:19 pm
Okay...  ???
Title: Re: bunker bnet
Post by: Joe on April 21, 2007, 10:50:00 pm
Joe is a software enginner and software reverse enginner who got dragged in to bot dvelopment in 2002 by a fellow battle.net junky.

I don't actually remember when I started botdev. It seems like 5 years ago, but that would leave me at 11/12 years old..