/mcproxy

Minecraft protocol proxy daemon written in C.

Primary LanguageCMIT LicenseMIT

Minecraft Protocol Proxy (mcproxy)
(c) Copyright 2011 Michał Siejak, Dylan Lukes

Version 0.3.1, Oct 26 2011

1. About
========

mcproxy is a modular Minecraft protocol proxy daemon written in C.
Its main use is to manipulate and/or analyze Minecraft protocol data
in real-time on either server- or client-side being completely transparent
to both parties.

A functional proxy consists of two parts: the core (mcproxy binary) and at
least one handler library. 

The core takes care of networking, threading, protocol decoding
and encoding, memory management etc.

A handler library registers a set of callback functions to the core which
get called whenever specific event occurs (for example new client connects 
or specific type of protocol packet arrives).  It is here where required
logic has to be implemented.

The core publishes its API for use by handler libraries in the form of a
static library (libproxyapi) which all handler libraries are required
to link to.

2. Currently implemented handler libraries
==========================================

  * libnoop
    No-operation handler library. Passes through protocol data without
    any intervention.

  * libserverlog
    ServerLog handler library. Logs certain player actions to a log file
    and provides few useful features like MOTD or player accessible /list
    command.

3. Supported platforms
======================

mcproxy has been tested on GNU/Linux but should work in any POSIX 
compliant environment with functional pthreads and BSD sockets
implementation provided dependencies are met.

4. Dependencies
===============

  * cmake (for building)
  * pthreads
  * iconv
  * glib

On Debian based systems you will need to have the following packages
installed:

  * build-essential
  * cmake
  * libglib2.0-dev

5. Building
===========

Standard cmake building procedure applies:

  $ cd $MCPROXY_SOURCE_TREE
  $ mkdir build; cd build
  $ cmake ..
  $ make

6. Contact the Author
=====================

Feel free to contact me at <my_name@my_surname.pl>.