[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[minion-cvs] Committing first version of mixminion code to CVS repos...



Update of /home/minion/cvsroot/src/minion
In directory moria.seul.org:/tmp/cvs-serv22386

Added Files:
	.cvsignore HACKING LICENSE Makefile TODO setup.py 
Log Message:
Committing first version of mixminion code to CVS repository.  Right
now, the code to generate and handle messages is in place, but we're
still missing all the networking logic... along with everything else
mentioned in TODO.

See HACKING if you want to make it go.

See TODO it you want to make it better.

Please don't circulate this beyond the list until we have more of it
working.

I'm going to have to work on my day job for a while, so I may be slow
writing more of this.  Nevertheless, I hope to get the
buildMessage/serverProcess logic well tested and debugged by this
weekend.


--- NEW FILE: .cvsignore ---
build

--- NEW FILE: HACKING ---
(This appears to be a binary file; contents omitted.)

--- NEW FILE: LICENSE ---
XXXX PICK A LICENSE, FOLKS!

Licensing for the Mixminion system 

We haven't picked a license yet.  We should do so before we release
code.  There seems to be the following tensions:
   A) Between wanting universal adoption, and not wanting Microsoft
        embrace-and-extend our server code.
   B) Between wanting a simple, friendly license; and preventing
        people from running modified servers without notice.

Once we get something chosen, it should go here.

Personally, I find the following options most realistic:
1)
   Separate server-only modules from client-and-server modules.  License
   the former under GPL; licens the latter under LGPL.

2) 
   License everything under modified BSD (X11).

I'm still looking at the ARPL as suggested by David Mazieres; it has
some nice anti-Fed features, but its fringeness may scare people off.
Perhaps we can achieve its goals through other means.

-- Nick

--- NEW FILE: Makefile ---

PYTHON=python2.2

all: do_build

do_build:
	$(PYTHON) setup.py build

clean:
	$(PYTHON) setup.py clean
	rm -rf build
	find . -name '*~' -print0 |xargs -0 rm -f

test: do_build
	( export PYTHONPATH=.; cd build/lib*; $(PYTHON) ./mixminion/test.py )

time: do_build
	( export PYTHONPATH=.; cd build/lib*; $(PYTHON) ./mixminion/benchmark.py)

lines:
	wc -l src/*.[ch] lib/*/*.py
--- NEW FILE: TODO ---

NEEDS TO BE WRITTEN

- Queue for incoming messages
- Queue for outgoing messages
- Manager process
- Configuration code
- Logging/debugging code
- Network code to receive
- Network code to send
- Client code
- memlockall wrapper
- Server description blocks
- Key management
- Path selection
- Publishing to directory servers
- Downloading from directory servers
- Key rotation

WRITTEN, BUT UNTESTED

- BuildMessages.py
- ServerProcess.py
- Some of Formats.py


--- NEW FILE: setup.py ---
#!/usr/bin/python

# Copyright 2002 Nick Mathewson.  See LICENSE for licensing information.
# $Id: setup.py,v 1.1 2002/05/29 03:52:13 nickm Exp $

import os
from distutils.core import setup, Extension

VERSION= '0.1'

# For now, we assume that openssl-0.9.7 hasn't been released.  When this
# changes, we can fix this rigamarole.
SSL_DIR="contrib/openssl"

#====================================================================

extmodule = Extension("mixminion._minionlib",
                      ["src/crypt.c", "src/aes_ctr.c", "src/main.c"],
                      library_dirs=[SSL_DIR],
                      include_dirs=[SSL_DIR+"/include", "src"],
                      libraries=["ssl", "crypto"],
                      extra_compile_args=["-Wno-strict-prototypes"])

setup(name='Mixminion',
      version=VERSION,
      description="Mixminion: Python implementation of the Type III MIX protocol (ALPHA)",
      author="Nick Mathewson",
      package_dir={ '' : 'lib' },
      packages=['mixminion'],
      ext_modules=[extmodule])