[tor-commits] [obfsproxy/master] Added HACKING.
nickm at torproject.org
nickm at torproject.org
Fri Jun 10 19:44:52 UTC 2011
commit 30c330e51fb647e07118d3d71fcec0be602ab9c5
Author: George Kadianakis <desnacked at gmail.com>
Date: Tue Jun 7 02:17:04 2011 +0200
Added HACKING.
---
doc/HACKING | 43 +++++++++++++++++++++++++++++++++++++++++++
1 files changed, 43 insertions(+), 0 deletions(-)
diff --git a/doc/HACKING b/doc/HACKING
new file mode 100644
index 0000000..88bccb9
--- /dev/null
+++ b/doc/HACKING
@@ -0,0 +1,43 @@
+ obfproxy codebase tour
+
+main.[ch] - entry point
+network.[ch] - network functions
+protocol.[ch] - protocol abstraction layer
+socks.[ch] - SOCKS server
+util.[ch] - utility functions
+protocols/ - protocol specific files
+
+ DIY pluggable transports
+
+Everything starts from protocol.c:set_up_protocol(), that's where your
+protocol's init function is called.
+
+Init function:
+ Your protocol's init function must parse the cli protocol line [1] and
+ fill the protocol_params_t struct appropriately. It should also do
+ anything else you want to do only once for the runtime of your
+ protocol [2]. Finally and most importantly each protocol has a
+ function table and your init function should populate it.
+
+obfsproxy currently provides the following functions for protocols
+(protocol.h:protocol_vtable):
+ (*create): Where you fill the protocol_params_t struct and
+ create a protocol state if you feel like it.
+ Called for every connection.
+ (*destroy): Where you free the protocol state and anything
+ else you might have created.
+ Called for every connection.
+ (*handshake): Where you send a handshake message to the
+ other party.
+ Called right after the listener is created
+ and the necessary network stuff are set up.
+ (*send): Where you specify how the data is send according to
+ your protocol.
+ (*recv): Where you specify how the data is received
+ according to your protocol.
+Note that (*handshake) and (*destroy) are optional.
+
+[1]: For example:
+ 'your_protocol --additional-parameter=yes server 127.0.0.1:666'
+[2]: For example setting up the crypto subsystem. You shouldn't be
+ doing this for every connection, just once is enough.
More information about the tor-commits
mailing list