[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[minion-cvs] Batch of changes for 0.0.3rc1
Update of /home/minion/cvsroot/src/minion
In directory moria.mit.edu:/tmp/cvs-serv18039
Modified Files:
README TODO setup.py
Log Message:
Batch of changes for 0.0.3rc1
README:
- Document changes and new features in 0.0.3
setup.py:
- Bump version number to 0.0.3rc1
ClientMain:
- Change directory URL, so that 0.0.3 clients will look for a
directory at a different place.
- Add support for recommended versions
- Update directory cache format
- Finish documentation
- Notice early if we have no unused SURBs
Main:
- Fix bug in 'mixminion version'.
Packet:
- Increment packet version number
ServerInfo, ServerList:
- Add 'Recommended-Software' section to directories.
test:
- Temporarily disable testStallingTransmission
- Add test for counter mode consistency
ServerMain:
- documentation
aes_ctr.c:
- Break backward compatibility by fixing bug in counter mode.
Index: README
===================================================================
RCS file: /home/minion/cvsroot/src/minion/README,v
retrieving revision 1.28
retrieving revision 1.29
diff -u -d -r1.28 -r1.29
--- README 9 Jan 2003 06:56:54 -0000 1.28
+++ README 13 Feb 2003 10:56:39 -0000 1.29
@@ -1,9 +1,9 @@
$Id$
-Below are the release notes from Mixminion 0.0.2.1. You have a more recent
-version from CVS; these may not be completely accurate any more.
-
======================================================================
-This is Mixminion version 0.0.2.1.
+This is Mixminion version 0.0.3rc1.
+
+ WARNING! Mixminion 0.0.3 breaks backward compatibility with version 0.0.2.
+ Versions older than 0.0.3 are no longer supported; you should upgrade now.
CONTENTS:
I. Overview
@@ -41,6 +41,48 @@
II. WHAT'S NEW IN THIS VERSION?
===============================
+NEW IN VERSION 0.0.3rc1:
+
+ CLIENT:
+ - Single-use reply blocks (SURBs) are fully supported and available.
+ - You can use client-side pooling holds messages until you're ready to
+ send them. Pooling also prevents you from losing messages when the
+ first hop in your path is down.
+ - You can now decode binary messages or reply messages from the command
+ line.
+ - We now time out faster when servers are down.
+ - Many error messages are far friendlier.
+ - It's now safe to run multiple instances of the client at once.
+ BUILD:
+ - It's easier to build with different OpenSSL installations.
+ SERVERS:
+ - Servers now have a lightly multithreaded design to prevent extreme
+ stalling under heavy loads. Now the network should remain fairly
+ responsive under far more traffic than before.
+ - When a message delivery fails, the retry schedule is more reasonable.
+ By default, a server will retry an undeliverable message every
+ 30 minutes for a day, then every 7 hours for 5 days.
+ - All modules that use SMTP now set a "X-Anonymous: yes" header.
+ CONFORMANCE:
+ - We now implement MMTP correctly; before, we didn't accept junk
+ packets; handle protocol negotiation right; or do support key
+ renegotiation.
+ - DROP packets have random payloads.
+ - A nasty bug in our implementation of counter mode is fixed. On
+ the bright side, big-endian and little-endian hosts should now,
+
+ finally, be compatible. On the minus side, we lose backward
+ compatibility.
+ - Server descriptors and directories now follow a more forward-
+ compatible format: we can add sections and entries in the future
+ with less risk of breaking existing clients.
+
+NEW IN VERSION 0.0.2.2:
+ - Fixed a bug that crashed your server when another server's KeyID was
+ incorrect.
+ - Add minimal handlers for TERM and HUP signals.
+ - Add a disclaimer to main usage message.
+
NEW IN VERSION 0.0.2.1:
- BUGFIX: A nasty bug is fixed that could, under just the right
circumstances, send the server into an infinite loop and fill up your
@@ -76,31 +118,28 @@
- You can send anonymous email via these servers.
STILL NOT IN THIS VERSION:
- - There is no client interface for sending replies or generating reply
- blocks (the code is written but not exposed).
- We could use some man pages.
- IP-based restrictions don't work.
- No automatic key generation or server publication.
- No support for distributed directories.
- - MMTP does not exactly follow the specification yet.
- Other stuff too numerous to mention; see TODO.
-III. HOW TO UPGRADE FROM MIXMINION 0.0.1
+III. HOW TO UPGRADE FROM MIXMINION 0.0.2
========================================
-Just follow the installation instructions below. :)
+Just follow the installation instructions below.
-Be aware that the client command line has changed significantly since version
-0.0.1, and there are important new options in the server configuration file.
+If you're running a server, you may want to configure the new 'Retry' options
+in your mixminiond.conf file; see ./etc/mixmioniond.conf for examples.
IV. HOW TO INSTALL MIXMINION
============================
The quick version.
------------------
- <download and unpack http://www.mixminion.net/dist/Mixminion-0.0.2.1.tar.gz>
+ <download and unpack http://www.mixminion.net/dist/Mixminion-0.0.3rc1.tar.gz>
- % cd Mixminion-0.0.2.1
+ % cd Mixminion-0.0.3rc1
% make download-openssl
% make build-openssl
% make
@@ -120,7 +159,7 @@
If you don't have Python >=v2.0, go install it. You can find source and
binary distributions at http://www.python.org/.
- 2) If you have OpenSSL version 0.9.7beta3 or later, go to step 4.
+ 2) If you have OpenSSL version 0.9.7beta3 or later, go to step 5.
Otherwise, continue.
3) Run "make download-openssl".
@@ -129,8 +168,21 @@
correctly on your system. Go read contrib/openssl/INSTALL, and make
OpenSSL build.
- 5) Run "make". If you get any errors, please report them to
- <nickm@freehaven.net>.
+ 5) Run "make". If you don't get any error messages, go to step 6.
+
+ If you have OpenSSL 0.9.7 installed, but the build script doesn't find
+ it, you can force it to look in a particular location (say, "/home/ssl")
+ with:
+ make OPENSSL_PREFIX=/home/ssl
+ This will make the scripts look for headers in $OPENSSL_PREFIX/include
+ and libraries in $OPENSSL_PREFIX/lib.
+
+ If the scripts *still* can't find OpenSSL 0.9.7, you can override the
+ compile and link options directly, like this:
+ make OPENSSL_CFLAGS='-I/home/ssl/include' \
+ OPENSSL_LDFLAGS='-L/home/ssl/libraries -lssl097 -lcrypto097'
+
+ If you get any other errors, please report them to <nickm@freehaven.net>.
6) Run "make test" to run Mixminion's unit tests. If you get any errors,
please report them to <nickm@freehaven.net>.
@@ -220,7 +272,101 @@
mixminion send -t drop -P '*,Foo'
mixminion send -t drop -H 8
+[NEW IN 0.0.3] To pool a message for later transmission, run "mixminion pool"
+instead of "mixminion send":
+
+ mixminion pool -t <address> -i <file> -P <path>
+
+ To see all the packets waiting in the pool:
+
+ mixminion inspect-pool
+
+ To attempt to deliver all messages waiting in the pool:
+
+ mixminion flush
+ (POOL NOTE: By default, when "mixminion send" fails to deliver a
+ message, it leaves that message in the pool to be reattempted later.
+ To suppress this behavior, use the "--no-pool" option:
+ mixminion send --no-pool -t <address> -i <file> -P <path>
+ Also, as a final sidenote, "mixminion send --pool" is a synonym for
+ "mixminion pool".)
+
+[NEW IN 0.0.3] To decode a message you have received, type:
+
+ mixminion decode -i <input-file> -o <output-file>.
+
+ Or, to send output to stdout:
+
+ mixminion decode -i <input-file>
+
+ (When you receive a message with non-printing characters via email, it
+ will be encoded in base64 before delivery. When you receive a reply,
+ its contents will be encrypted. The "mixminion decode" command
+ extracts the original text from either kind of message as best it can.)
+
+[NEW IN 0.0.3] To generate a reply block, type:
+
+ mixminion generate-surb -t <target-address>
+
+ To send the reply block to a file, instead of to stdout:
+
+ mixminion generate-surb -t <target-address> -o <filename>
+
+ If you specify a "SURBAddress" field in ~/.mixminionrc, you may
+ omit the target address:
+
+ mixminion generate-surb
+
+ Also, you can control path selection in the same way as with
+ sending messages:
+
+ mixminion generate-surb -H 3 (a 3-hop path)
+ mixminion generate-surb -P '*,Foo' (end with server foo)
+ mixminion generate-surb -P 'Bar,*' (start with server bar)
+
+ You can use the '-n' option to generate many reply blocks at once:
+
+ mixminion generate-surb -n 100 (generate 100 reply blocks)
+
+ To save space, you can specify binary (as opposed to text) encoding
+ for your reply blocks:
+
+ mixminion generate-surb -b -o <filename>
+
+ By default, the client will choose servers to make sure that your
+ reply blocks will still function for 7 days. To choose a different
+ lifetime:
+ mixminion generate-surb --lifetime=1 (1 day)
+ Note that if you choose an overlong lifetime, there may not be enough
+ servers whose keys will be valid for the entire period.
+
+[NEW IN 0.0.3] Once you have a reply block for a user, you can send reply
+messages by typing:
+
+ mixminion send -R <reply-block-filename> -i <input-filename>
+
+ The other options to 'send' and 'pool' still apply; the reply block
+ takes the place of the destination address:
+ mixminion send -R <reply-block> (Read from stdin)
+ mixminion send -R <reply-block> -D yes (Reload directory)
+ mixminion send -R <reply-block> -H 4 (Use 4 hops before reply.)
+ mixminion send -R <reply-block> -P 'Z,*' (Start with server "Z".)
+ mixminion pool -R <reply-block> (Pool the message.)
+
+ IMPORTANT: Mixminion reply blocks can only be used once! (Thus,
+ SURB="Single Use Reply Block".) The program will remember which
+ reply blocks it has used in the past, but if you give a single reply
+ block to 2 users, it will only work for one of them, once.
+
+ As a convenience, if you have a file containing many reply blocks,
+ you can use it with '-R': the client will choose the first reply
+ block from the file which has not expired, and which you have not
+ yet used.
+
+ To inspect the reply blocks in a file, you can run:
+ mixminion inspect-surbs <filename>
+
If you need to use a proxy server to use the web you can specify it using the
http_proxy environment variable:
Index: TODO
===================================================================
RCS file: /home/minion/cvsroot/src/minion/TODO,v
retrieving revision 1.76
retrieving revision 1.77
diff -u -d -r1.76 -r1.77
--- TODO 13 Feb 2003 06:30:20 -0000 1.76
+++ TODO 13 Feb 2003 10:56:39 -0000 1.77
@@ -108,7 +108,7 @@
approach that may be good enough.)
o Perhaps 'make install' should nuke dead files. (Queue.py)
o Support people who _do_ have OpenSSL 0.9.7 installed.
- . Client
+ o Client
o Faster (adjustable?) timeout on client connect
failure.
o Implement client timeout (sigalrm?)
@@ -116,7 +116,7 @@
o Unit tests
o Refactor the heck out of argument parsing.
o Add "don't use me for anonymity" boilerplate.
- . Client support for reply blocks.
+ o Client support for reply blocks.
o Recheck spec on external reply block format
o Implement external reply block format
o Test external reply block format
@@ -126,18 +126,18 @@
o Remember used reply blocks
o Examine reply block
o Use first reply block in a file.
- - Refactor and document
- . Read Base64-encoded messages and zbomb messages.
+ o Refactor and document
+ o Read Base64-encoded messages and zbomb messages.
o Implement backend
o Test backend
o Implement frontend
o Test frontend
o Refactor until clean
- - Document
- . Client-side pooling.
+ o Document
+ o Client-side pooling.
o Design
o Implement
- - Test
+ o Test
o Make client code multiprocess-safe: locking on
cache (if needed!); locking on pool.
o Move lock functionality into Common.
@@ -149,31 +149,33 @@
o Make path parsing accept space around the commas and colon.
o Make paths print more cleanly.
o Better command breakdown for pulling directories.
- - Break backward compatibility :P
- - Fix aes_ctr128 and bump packet version and write
+ o Break backward compatibility :P
+ o Directories include an "allowable version" section.
+ o Make client check 'Recommended-Software' against
+ current version.
+ o Fix aes_ctr128 and bump packet version and write
unit tests for counter mode.
- - Increment packet minor number; make client check
- packet minor number.
- - Add fields to serverinfo, server directory.
o Bugs
o mixminion generate-surb > x should work
- . Release
+ o Release candidate 1
o Note all places that need documentation comments or
additional testing.
o Check all usage messages
o Triage XXXX's
- . Resolve XXXX003's
- - Bump version numbers
- - Update README
- - What's new?
- - Document how to use new features
- - Installation insns for weird OpenSSL situations
- - Note that we break backward compatibility
+ o Resolve XXXX003's
+ o Bump version numbers
+ o Update README
+ o What's new?
+ o Document how to use new features
+ o Installation insns for weird OpenSSL situations
+ o Note that we break backward compatibility
+ - Release
+ - Come up with way to deal with servers as they
+ upgrade.
+ - Go over CVS commit logs for all contents of 'what's
+ new?'
Originally scheduled for 0.0.3, but delayed:
- - Directories include an "allowable version" section.
- - Make client check 'Recommended-Software' against
- current version.
- UI
. Good user error reporting strategy.
- Beautify list-servers output.
Index: setup.py
===================================================================
RCS file: /home/minion/cvsroot/src/minion/setup.py,v
retrieving revision 1.43
retrieving revision 1.44
diff -u -d -r1.43 -r1.44
--- setup.py 12 Feb 2003 01:23:24 -0000 1.43
+++ setup.py 13 Feb 2003 10:56:39 -0000 1.44
@@ -22,9 +22,9 @@
os.umask(022)
-VERSION = '0.0.3alpha'
+VERSION = '0.0.3rc1'
# System: 0==alpha, 50==beta, 99==release candidate, 100==release
-VERSION_INFO = (0,0,3,0,-1)
+VERSION_INFO = (0,0,3,99,1)
# Function to pull openssl version number out of an opensslv.h file. This
# isn't a real C preprocessor, but it seems to work well enough.