[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[minion-cvs] Checkpoint documentation status
Update of /home/minion/cvsroot/src/minion
In directory moria.mit.edu:/tmp/cvs-serv6221
Modified Files:
TODO HACKING README
Log Message:
Checkpoint documentation status
Index: TODO
===================================================================
RCS file: /home/minion/cvsroot/src/minion/TODO,v
retrieving revision 1.40
retrieving revision 1.41
diff -u -d -r1.40 -r1.41
--- TODO 15 Dec 2002 05:55:29 -0000 1.40
+++ TODO 16 Dec 2002 01:37:52 -0000 1.41
@@ -9,37 +9,6 @@
NEEDS TO BE WRITTEN
-FOR 0.0.1: (The first alpha)
- [Requirements: hackers can use this system to try sending messages
- around. At least one delivery method works. The code may be
- DOS'able, but must not have remote exploits. Dirservers need not
- work. There need not be an interface for replies. Key rotation
- need not be automated.]
-
- o Build
- o Marginal 'make install'
- o Marginal 'make dist'
- o Stability:
- o Do some basic locking to keep other processes from
- using same queue set.
- o Make startup not spew to stderr when we request it
- not to.
- o Really daemonize ourselves.
- o Take it easy with the fork calls!
- . Integration testing
- - Automated tests for several servers running on one machine.
- - Tests for servers on several different machines.
- - Documentation
- - Contributor's guide
- o Basic HOWTO
- - Difference between XXXX FFFF ????
- - Overall design
- - More readable mixminiond.conf
- - Patch specification:
- - SPEC comments from code
- o Incorporate e2e mixminin design
- - Rename stateful, stateless SURBs
-
Required for "1.0":
[These features must be in place before we can take the system out
of alpha. We'll do a series of point releases between 0.0.1 and
@@ -149,6 +118,11 @@
SPEC o Patch to address George's 15August attack
- Testing
- Test on other (non-redhat, non-linux) systems
+ - Integration tests
+ - Automated tests for several servers running
+ on one machine.
+ - Tests for servers on several different
+ machines.
- Repeatable CLI tests.
- For client
- For server
Index: HACKING
===================================================================
RCS file: /home/minion/cvsroot/src/minion/HACKING,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -d -r1.9 -r1.10
--- HACKING 7 Dec 2002 03:53:01 -0000 1.9
+++ HACKING 16 Dec 2002 01:37:52 -0000 1.10
@@ -1,25 +1,14 @@
-Hacking Mixminion
+Hacking Mixminion -*- Text -*-
Requirements:
Python 2.0-2.2 (see PORTING NOTES below)
OpenSSL 0.9.7 (You'll need to download a beta. As of 1 December 2002,
- that's http//www.openssl.org/source/openssl-0.9.7-beta4.tar.gz)
+ that's http//www.openssl.org/source/openssl-0.9.7-beta4.tar.gz).
+ Don't worry; the makefile knows how to download it for you.
A working /dev/urandom (see PORTING NOTES below)
-Setting up:
- 1) Get python 2.2. You can download RPMS from www.python.org.
- 2) Get the mixminion source.
- 3) EITHER Unpack openssl 0.9.7 into minion/contrib/openssl
- cd minion/contrib/openssl; ./config; make
- OR make download-openssl; make build-openssl
-
-Things to try:
- make
- make test
- make time
-
Things to hack:
See the TODO list.
@@ -30,34 +19,17 @@
operations you need.
- "Premature optimization is the route of all evil." -Knuth
Resist the temptation to optimize until it becomes a necessity.
-
- - Here's the conceptual layout. XXXX EXPLAIN MORE
-
- -------------
- I User code I
- -------------
- I
- V
- -----------------------------------------
- I MM library code I
- -----------------------------------------
- I I ^
- V I I
- ------------------ I I
- ..| Network client | V I
- . ------------------<==--------- ----------
- net | Queue |<=====>| Engine |
- . ------------------==>--------- ----------
- ..| Network server |
- ------------------
CODING STYLE:
- See PEP-0008: "Style Guide For Python Code". I believe in most of it.
(http://www.python.org/peps/pep-0008.html)
- Also see PEP-0257 for documentation; we're not there yet, but it's
happening. (http://www.python.org/peps/pep-0257.html)
- - The magic string "XXXX" indicates a defect in the code. "FFFF" indicates
- a missing feature, and "????" indicates an untested or iffy block.
+ - Magic strings:
+ "XXXX" indicates a defect in the code.
+ "FFFF" indicates a missing feature.
+ "????" indicates an untested or iffy block.
+ "DOCDOC" indicates missing documentation.
PORTABILITY NOTES:
- I've already backported to Python 2.0. (I refuse to backport to 1.5 or
@@ -82,13 +54,40 @@
PORTING TO NON-LINUX PLATFORMS:
- If you need to run on a system without an acceptable /dev/*random,
you'll need to write an acceptable fallback for mixminion.Crypto.trng()
- to use.
- - We assume the existence of a /usr/bin/shred to securely delete
- files. This is now configurable, but I'd like to know a few other
- alternatives.
+ to use.
CAVEATS:
- If I haven't got a test for it in tests.py, assume it doesn't work.
- The code isn't threadsafe. It will become so only if it must.
+
+FINDING YOUR WAY AROUND THE CODE.
+ - All the C code is in src/. Right now, this is just a set of thin
+ Python wrappers for the OpenSSL functionality we use.
+ - The Python code lives in lib/mixminion (for client and shared code)
+ and lib/mixminion/server (for server code only). The main loop is
+ in lib/mixminion/server/ServerMain; the asynchronous server code is
+ in lib/mixminion/server/MMMTPServer.
+ - A message coming in to a Mixminion server takes the following path:
+
+ Received in MMTPServer;
+ V
+ Stored in an 'Incoming' queue, implemented in ServerMain and Queue.
+ V
+ Validated, decrypted, padded by code in PacketHandler.
+ V
+ Stored in a 'Mix' pool, implemented in ServerMain and Queue.
+ V
+ A batch of messages is selected by the 'Mix pool' for delivery.
+ V
+ ---Some are placed in an 'Outgoing' queue...
+ I V
+ I ... and delivered to other Mixminion servers via MMTPServer
+ V
+ ---Others are queued and delivered by other exit methods,
+ implemented and selected by ModuleManager.
+
+CONTRIBUTING PATCHES:
+ - Send them to the list mixminion-dev@freehaven.net, or to me
+ (nickm@freehaven.net).
--Nick
Index: README
===================================================================
RCS file: /home/minion/cvsroot/src/minion/README,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -d -r1.1 -r1.2
--- README 15 Dec 2002 03:47:26 -0000 1.1
+++ README 16 Dec 2002 01:37:52 -0000 1.2
@@ -1,8 +1,11 @@
This is Mixminion version 0.0.1.
-XXXX More Flavor text here.
+Mixminion is the standard implementation for the Type-III anonymous Mix
+protocol, which lets you send very anonymous email.
-IN THIS VERSION: (XXXX Be more verbose)
+XXXX MORE TEXT HERE!
+
+IN THIS VERSION:
- You can run a rudimentary server that uses Mixmaster to deliver SMTP, or
that sends SMTP directly to a preconfigured set of addresses.
- You can send anonymous email.
@@ -18,16 +21,23 @@
- No automatic key generation.
- No automatic path selection.
- MMTP is not exactly as specified.
+ - Cottrell batching is disabled; the mix interval is set to a ridiculously
+ low 5 minutes for testing.
HOW TO BUILD, TEST, AND INSTALL MIXMINION: The quick version.
+ <download and unpack http://www.mixminion.net/dist/Mixminion-0.0.1.tar.gz>
+
% cd Mixminion-0.0.1
% make download-openssl
% make build-openssl
% make
% make test
- % su
- Password:
- # make install
+ EITHER:
+ % su
+ Password:
+ # make install
+ OR:
+ % make install PREFIX=~
HOW TO BUILD, TEST, AND INSTALL MIXMINION: The verbose version.
1) You must have Python version 2.0 or later installed on your system. The
@@ -80,7 +90,7 @@
-i <filename to send, or - to read from stdin>.
Example:
- mixminion client -t nosuchuser@mixminion.org --path1=server1,server9 \
+ mixminion client -t nosuchuser@mixminion.net --path1=server1,server9 \
--path2=server5,server10 -i /etc/motd
HOW TO RUN YOUR OWN MIXMINION SERVER:
@@ -103,8 +113,4 @@
in their "~/.mixminion/servers" directory.
To get your server advertised to the rest of the world, please
- send it to XXXXemail.
-
- 5) OPTIONAL. XXXXHow to set up MBOX
-
- 6) OPTIONAL. XXXXHow to set up SMTP-via-Mixmaster.
+ send the file to XXXXemail.