[tor-commits] r24259: {} gettor moved to git (projects/gettor)

Sebastian Hahn tor-svn-commits at sebastianhahn.net
Wed Feb 23 11:55:04 UTC 2011


Author: sebastian
Date: 2011-02-23 11:55:04 +0000 (Wed, 23 Feb 2011)
New Revision: 24259

Added:
   projects/gettor/README-THIS-REPO-HAS-MOVED-TO-GIT.TXT
Removed:
   projects/gettor/GetTor.py
   projects/gettor/LICENSE
   projects/gettor/MANIFEST.in
   projects/gettor/MakeStat.py
   projects/gettor/README
   projects/gettor/README.USER-HOWTO
   projects/gettor/README.locale-spec-draft
   projects/gettor/TODO
   projects/gettor/lib/
   projects/gettor/po/
   projects/gettor/sample-emails/
   projects/gettor/sample-gettorrc
   projects/gettor/setup.cfg
   projects/gettor/setup.py
Log:
gettor moved to git

Deleted: projects/gettor/GetTor.py
===================================================================
--- projects/gettor/GetTor.py	2011-02-23 00:21:44 UTC (rev 24258)
+++ projects/gettor/GetTor.py	2011-02-23 11:55:04 UTC (rev 24259)
@@ -1,129 +0,0 @@
-#!/usr/bin/python2.5
-# -*- coding: utf-8 -*-
-
-__program__ = 'GetTor.py'
-__url__ = 'https://svn.torproject.org/svn/projects/gettor'
-__author__ = 'Jacob Appelbaum <jacob at appelbaum.net>, Christian Fromme <kaner at strace.org>'
-__copyright__ = 'Copyright (c) 2008, 2009, The Tor Project'
-__license__ = 'See LICENSE for licensing information'
-
-try:
-    from future import antigravity
-except ImportError:
-    antigravity = None
-
-import sys
-
-import gettor.gtlog
-import gettor.opt
-import gettor.config
-import gettor.requests
-import gettor.responses
-import gettor.utils
-
-log = gettor.gtlog.getLogger()
-
-def processFail(conf, rawMessage, reqval, failedAction, e=None):
-    """This routine gets called when something went wrong with the processing
-    """
-    log.error("Failing to " + failedAction)
-    if e is not None:
-        log.error("Here is the exception I saw: %s" % sys.exc_info()[0])
-        log.error("Detail: %s" %e)
-    # Keep a copy of the failed email for later reference
-    log.info("We'll keep a record of this mail.")
-    gettor.utils.dumpMessage(conf, rawMessage)
-    # Send out notification to user, if possible
-    #if reqval.toField != "" or reqval.sendTo != "":
-    #    if not gettor.responses.sendNotification(conf, reqval.toField, reqval.sendTo):
-    #        log.error("Also failed to send the user a proper notification. :-/")
-    #    else:
-    #        log.info("Failure notification sent to user %s" % reqval.sendTo)
-
-def dumpInfo(reqval):
-    """Dump some info to the logfile
-    """
-    log.info("Request From: %s To: %s Package: %s Lang: %s Split: %s Signature: %s Cmdaddr: %s" % (reqval.replyTo, reqval.toField, reqval.pack, reqval.lang, reqval.split, reqval.sign, reqval.cmdAddr))
-
-def processMail(conf):
-    """All mail processing happens here. Processing goes as follows:
-       - Parse request. This means: Find out everything we need to reply in 
-         an appropriate manner. Reply address, language, package name.
-         Also try to find out if the user wants split packages and if he has 
-         a valid signature on his mail.
-       - Send reply. Use all information gathered from the request and pass
-         it on to the reply class/method to decide what to do.
-    """
-    rawMessage = ""
-    reqval = None
-    log.info("Processing mail..")
-    # Retrieve request from stdin and parse it
-    try:
-        request = gettor.requests.requestMail(conf)
-        rawMessage = request.getRawMessage()
-        # reqval contains all important information we need from the request
-        reqval = request.parseMail()
-        dumpInfo(reqval)
-    except Exception, e:
-        processFail(conf, rawMessage, reqval, "process request", e)
-        return False
-
-    # Ok, request information aquired. Initiate reply sequence
-    try:
-        reply = gettor.responses.Response(conf, reqval)
-        if not reply.sendReply():
-            processFail(conf, rawMessage, reqval, "send reply")
-            return False
-        return True
-    except Exception, e:
-        processFail(conf, rawMessage, reqval, "send reply (got exception)", e)
-        return False
-
-def processOptions(options, conf):
-    """Do everything that's not part of parsing a mail. Prepare GetTor usage,
-       install files, fetch packages, do some black/whitelist voodoo and so on
-    """ 
-    # Order matters!
-    if options.insttrans:
-        m = gettor.utils.installTranslations(conf, options.i18ndir)
-    if options.fetchpackages:
-        gettor.utils.fetchPackages(conf, options.mirror)
-    if options.preppackages:
-       gettor.utils.prepPackages(conf)
-    if options.installcron:
-        gettor.utils.installCron()
-    if options.whitelist:
-        gettor.utils.addWhitelistEntry(conf, options.whitelist)
-    if options.blacklist:
-        gettor.utils.addBlacklistEntry(conf, options.blacklist)
-    if options.lookup:
-        gettor.utils.lookupAddress(conf, options.lookup)
-    if options.clearwl:
-        gettor.utils.clearWhitelist(conf)
-    if options.days:
-        gettor.utils.clearBlacklist(conf, options.days)
-    if options.cmdpass:
-        gettor.utils.setCmdPassword(conf, options.cmdpass)
-
-def main():
-    """Parse command line, setup config and logging
-    """
-    options, arguments = gettor.opt.parseOpts()
-    config = gettor.config.Config(options.configfile)
-    gettor.gtlog.initialize()
-
-    if sys.stdin.isatty():
-        # We separate this because we need a way to know how we reply to the 
-        # caller: Send mail or just dump to stdout/stderr.
-        processOptions(options, config)
-    else:
-        # We've got mail
-        if processMail(config):
-            log.info("Processing mail finished")
-        else:
-            log.error("Processing mail failed")
-
-    log.info("Done.")
-
-if __name__ == "__main__":
-    main()

Deleted: projects/gettor/LICENSE
===================================================================
--- projects/gettor/LICENSE	2011-02-23 00:21:44 UTC (rev 24258)
+++ projects/gettor/LICENSE	2011-02-23 11:55:04 UTC (rev 24259)
@@ -1,31 +0,0 @@
-gettor is distributed under this license:
-
-Copyright (c) 2008, The Tor Project, Inc.
-
-Redistribution and use in source and binary forms, with or without
-modification, are permitted provided that the following conditions are
-met:
-
-    * Redistributions of source code must retain the above copyright
-notice, this list of conditions and the following disclaimer.
-
-    * Redistributions in binary form must reproduce the above
-copyright notice, this list of conditions and the following disclaimer
-in the documentation and/or other materials provided with the
-distribution.
-
-    * Neither the names of the copyright owners nor the names of its
-contributors may be used to endorse or promote products derived from
-this software without specific prior written permission.
-
-THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
-"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
-LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
-OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
-SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
-LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
-DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
-THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
-(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
-OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

Deleted: projects/gettor/MANIFEST.in
===================================================================
--- projects/gettor/MANIFEST.in	2011-02-23 00:21:44 UTC (rev 24258)
+++ projects/gettor/MANIFEST.in	2011-02-23 11:55:04 UTC (rev 24259)
@@ -1,2 +0,0 @@
-include README TODO README.USER-HOWTO README.locale-spec-draft
-recursive-include po *

Deleted: projects/gettor/MakeStat.py
===================================================================
--- projects/gettor/MakeStat.py	2011-02-23 00:21:44 UTC (rev 24258)
+++ projects/gettor/MakeStat.py	2011-02-23 11:55:04 UTC (rev 24259)
@@ -1,130 +0,0 @@
-#!/usr/bin/python
-
-
-import sys
-import os
-import re
-import string
-
-def emptyPacks(packs):
-    for k, v in packs.iteritems():
-        packs[k] = 0
-    return packs
-
-def makestats(filename, days):
-    day = None
-    pack = None
-    lang = None
-    packages = {"None": 0,
-                "tor-browser-bundle": 0,
-                "tor-im-browser-bundle": 0,
-                "tor-browser-bundle_en": 0,
-                "tor-im-browser-bundle_en": 0,
-                "tor-browser-bundle_de": 0,
-                "tor-im-browser-bundle_de": 0,
-                "tor-browser-bundle_ar": 0,
-                "tor-im-browser-bundle_ar": 0,
-                "tor-browser-bundle_es": 0,
-                "tor-im-browser-bundle_es": 0,
-                "tor-browser-bundle_fa": 0,
-                "tor-im-browser-bundle_fa": 0,
-                "tor-browser-bundle_fr": 0,
-                "tor-im-browser-bundle_fr": 0,
-                "tor-browser-bundle_it": 0,
-                "tor-im-browser-bundle_it": 0,
-                "tor-browser-bundle_nl": 0,
-                "tor-im-browser-bundle_nl": 0,
-                "tor-browser-bundle_pl": 0,
-                "tor-im-browser-bundle_pl": 0,
-                "tor-browser-bundle_pt": 0,
-                "tor-im-browser-bundle_pt": 0,
-                "tor-browser-bundle_ru": 0,
-                "tor-im-browser-bundle_ru": 0,
-                "tor-browser-bundle_zh_CN": 0,
-                "tor-im-browser-bundle_zh_CN": 0,
-                "source-bundle": 0,
-                "macosx-ppc-bundle": 0,
-                "macosx-i386-bundle": 0}
-
-    try:
-        logFile = open(filename, 'r')
-    except:
-        print "Couldn't open logfile %s" % filename
-        sys.exit(1)
-    readData = logFile.read().split('\n')
-    for line in readData:
-        match = re.match(".*Request from.*cmdaddr None.*", line, re.DOTALL)
-        if match:
-            splitline = string.split(line)
-            if len(splitline) > 12:
-                day = splitline[0]
-                pack = splitline[7]
-                lang = splitline[9]
-                if not re.match("[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]", day):
-                    continue
-                pack = pack.strip(',')
-                lang = lang.strip(',')
-                if day in days:
-                    packs = days[day]
-                else:
-                    packs = emptyPacks(packages).copy()
-                if pack is not None:
-                    if pack in packs:
-                        packs[pack] += 1
-                days[day] = packs
-        else:
-            match = re.match(".*Request From.*Cmdaddr: None.*", line, re.DOTALL)
-            if match:
-                splitline = string.split(line)
-                if len(splitline) > 12:
-                    day = splitline[0]
-                    pack = splitline[9]
-                    lang = splitline[11]
-                    if not re.match("[0-9][0-9][0-9][0-9]-[0-9][0-9]-[0-9][0-9]", day):
-                        continue
-                    pack = pack.strip(',')
-                    lang = lang.strip(',')
-                    if day in days:
-                        packs = days[day]
-                    else:
-                        packs = emptyPacks(packages).copy()
-                    if pack is not None:
-                        if pack in packs:
-                            packs[pack] += 1
-                    days[day] = packs
-
-def printStatsStdout(days):
-    for day in sorted(days.iterkeys()):
-        packs = days[day]
-        daystr = "%s -" % day
-        print daystr, 
-        for pack in sorted(packs.iterkeys()):
-            packstr = "%s:%s" % (pack, packs[pack])
-            print packstr,
-        print ""
-
-def printStatsGNUPlot(days):
-    for day in sorted(days.iterkeys()):
-        packs = days[day]
-        print day,
-        for pack in sorted(packs.iterkeys()):
-            print packs[pack],
-        print ""
-
-def main():
-    days = {}
-    
-    if len(sys.argv) < 2:
-        print >> sys.stderr, "Usage: %s LOGDIR" % sys.argv[0]
-        sys.exit(1)
-    for arg in sys.argv:
-        if not os.path.isfile(arg):
-            print >> sys.stderr, "Not a file: %s" % arg
-            sys.exit(1)
-        makestats(arg, days)
-
-    printStatsStdout(days)
-    #printStatsGNUPlot(days)
-
-if __name__ == "__main__":
-    main()

Deleted: projects/gettor/README
===================================================================
--- projects/gettor/README	2011-02-23 00:21:44 UTC (rev 24258)
+++ projects/gettor/README	2011-02-23 11:55:04 UTC (rev 24259)
@@ -1,262 +0,0 @@
-OVERVIEW
---------
-GetTor is a program for serving Tor and related files over SMTP. Users interact
-with GetTor by sending it email.
-
-The following document explains how to setup GetTor for a server admin.
-
-PREREQUISITES
--------------
-
-To deploy GetTor, you'll want a machine that invokes .forward files
-for users. You'll also want to have python (>= 2.5) and rsync installed.
-
-There are some limits with smtp software for outgoing email sizes. You should
-check your software to ensure that you can send files that are as large
-as the largest files Tor distributes. For postfix, you may want to have a line
-that looks like the following in /etc/postfix/main.cf:
-
-    message_size_limit = 50360000
-
-In Exim, the default message size is now 50MB, which should be sufficient. The
-value is also adaptable through the config file parameter 'message_size_limit'
-in case you need to.
-
-SETUP
------
-
-This setup descripton presumes that you have access to the latest gettor svn 
-trunk somewhere in your local file system.
-
-    gettor at moria:~/tmp$ svn co https://freehaven.net/svn/projects/gettor gettor
-
-After checking out the GetTor source code, you will need to install everything
-as follows:
-
-    gettor at moria:~/tmp$ cd gettor/
-    gettor at moria:~/tmp/gettor$ python setup.py install
-
-This will copy necessary files to ~/opt/gettor.
-
-Next, configure your ~/.gettorrc file (see "Configuration", below).
-
-After that, you will want to ensure that you have a properly configured set
-of mo files for each translation. Generate and install mo files as follows:
-
-    gettor at moria:~/tmp/gettor$ cd ~/opt/gettor
-    gettor at moria:~/opt/gettor$ ./GetTor.py -r
-
-You'll see something like this upon success:
-
-    2009-06-21 20:06:01,324 (6136) Installing translation files done.
-
-Once you have everything installed, you'll want to initialize the file store:
-
-    gettor at moria:~/opt/gettor$ ./GetTor.py -fp
-
-You should see an rsync and finally something like:
-
-    sent 1637 bytes  received 415792532 bytes  9558486.64 bytes/sec
-    total size is 415735925  speedup is 1.00
-    2009-01-05 16:49:29,226 (9222) Syncing Tor packages done.
-    2009-01-05 16:49:30,155 (9222) Building packages done.
-
-Now you'll install the cronjob. This clears the blacklist and updates packages 
-daily:
-
-    gettor at moria:~/opt/gettor$ ./GetTor.py -i
-    2009-01-05 17:34:53,911 (16646) Installing cron donee
-
-Set up a password for package forwarding commands if you wish to use that 
-feature:
-
-    gettor at moria:~/opt/gettor$ ./GetTor.py -s seCreTpAssworD
-
-Finally, you need to setup email forwarding to the GetTor bot like so:
-
-    gettor at moria:~$ echo "|/home/gettor/opt/gettor/GetTor.py" > ~/.forward
-
-Now GetTor.py is installed, prepared and ready to serve files. Send it email!
-
-TRANSLATION FILES
------------------
-Provided there is a working locale environment, GetTor will compile and setup
-locale files for you as follows:
-
-    gettor at moria:~/opt/gettor$ ./GetTor.py -r
-    2009-01-08 12:18:09,041 (19287) Installing translation files done.
-
-You can also configure the .mo files to live in another place by telling GetTor
-so in the config file, for example:
-
-    localeDir = /home/gettor/gettor/po
-
-This will result in GetTor expecting the English .mo file in the directory
-
-    /home/gettor/gettor/po/en/gettor.mo
-
-Also, in case your .po files for some reason live in a different directory
-than po/ (relative to GetTor.py, as provided by GetTor), you can tell this
-to GetTor as follows:
-
-    gettor at moria:~/opt/gettor$ ./GetTor.py -r -d /path/to/my/pofiles/directory
-
-Note that GetTor will expect the same directory structure as provided under
-po/ in the GetTor source package, e.g. 'po/en/gettor.po',
-'po/de/gettor.po', and so on.
-
-To add a new language to GetTor, one must create a new .po file in subversion
-in the proper directory. For Korean, one would create po/ko/ and add the
-untranslated file (called gettor.po) to that directory. This file should be
-translated but partial translations are allowed. Once this file has been
-created, the GetTor program does not need to be modified.
-
-However, if a user wished to add support in responses to users, they will need
-to modiy the 'requests.py' file like so:
-
-    defaultLang = "en"
-    supportedLangs = { "en": "English",·
-                       "ko": "Korean",·
-                       "de": "Deutsch" }
-
-CONFIGURATION
--------------
-A proper GetTor configuration file is expected in the user's home directory
-and should look like this:
-
-    gettor at moria:~$ cat .gettorrc
-    [global]
-    stateDir        = /home/gettor/gettor/state/
-    blStateDir      = /home/gettor/gettor/bl/
-    wlStateDir      = /home/gettor/gettor/wl/
-    distDir         = /home/gettor/gettor/distdir/
-    packDir         = /home/gettor/gettor/packdir/
-    locale          = en
-    logSubSystem    = stdout
-    logFile         = /home/gettor/gettor/logs/logfile
-    localeDir       =  /home/gettor/gettor/po/
-    cmdPassFile     = /home/gettor/gettor/pass
-    dumpFile        = /home/gettor/gettor/failedmails
-
-You can leave any of these lines out, and it will choose a suitable
-default.
-
-Here is what each of them is used for individually:
-
-blStateDir:    Blacklisted (hashed) email addresses go here
-wlStateDir:    Whitelisted (hashed) email addresses go here
-distDir:       Pristine Tor packages as downloaded by rsync will be found here
-packDir:       Processed Tor packages ready to be handed out to the user will
-               be found here
-srcEmail:      The email containing the Tor package will use this as 'From:'
-locale:        Choose your default mail locale
-logFile:       If 'file' logging is chosen, log to this file
-logSubSystem:  This has to be one of the following strings:
-               'nothing':  Nothing is logged anywhere (Recommended)
-               'stdout':   Log to stdout
-               'syslog':   Log messages will be written to syslog
-               'file':     Log messages will be written to a file (Not that
-                           this needs the 'logFile' option in the config file
-                           also set to something useful
-localeDir:     This is where the 'en/LC_MESSAGES/gettor.mo' or
-               'whateverlang/LC_MESSAGES/gettor.mo' should go
-cmdPassFile:   The file containing the hashed command password
-dumpFile:      All failed mails are recorded here
-
-WHAT'S DKIM / WHY DKIM?
------------------------
-
-People who send mail to gettor need to either use a mail provider that
-signs outgoing mail with DKIM, or have their email address or domain
-added to the whitelist.
-
-"DomainKeys Identified Mail", aka DKIM, is a mechanism that lets the mail
-provider prove that the mail is really coming from the domain and sender
-it claims to be from.
-
-Currently GMail and Yahoo both support DKIM, along with other more
-esoteric domains like paypal, AOL, earthlink, linkedin, etc. You can
-check if your mail provider uses DKIM by examining the headers of emails
-you send. If there's a "DomainKey-Signature:" header, then you're in
-good shape.
-
-If we didn't check the DKIM signature, people could abuse gettor into
-mailbombing innocent email addresses -- one short email resulting in a
-15MB attachment sent to an address of their choice is quite an attack
-multiplier.
-
-There are a few other alternative options (for example, Microsoft uses its
-own proprietary design called 'Sender ID'), but since GMail is already
-very common for users in blocked countries, we figured DKIM was a good
-starting point.
-
-And last, be aware that the set of domains that technically support
-DKIM is probably not exactly the same set that we should recommend for
-our users, due to other properties of each mail provider like their
-privacy policies.
-
-VALIDATION OF REQUESTED FILES
------------------------------
-
-When a user submits a successful request, GetTor will respond with an email
-that has one attachment. This attachment is a zip file with a .z file
-extension. The compressed file currently consists of two files: the requested
-tool and a gpg signature from the packager of the respective file.
-
-FILE SIZE ISSUES
-----------------
-
-Some email providers may not be happy with the files GetTor sends.
-Gmail provides documentation of their incoming and outgoing file sizes. It is
-currently 20MB (though we have sent around 21MB without issue):
-
-	http://mail.google.com/support/bin/answer.py?hl=en&answer=8770
-
-Other providers are not as transparent and this may cause failures.
-
-SPAM / ABUSE PREVENTION
-------------------------------
-
-GetTor does some spam/abuse prevention. This is primarily because we don't want 
-to hammer innocent inboxes with huge amounts of tor packages.
-
-First of all, there is a DKIM checker (see "WHAT'S DKIM / WHY DKIM" above) that
-prevents GetTor from answering useless spam emails. On top of that, there are 
-some hard-coded checks being performed on the sender address. Only mails coming
-from yahoo.com.cn, yahoo.com and gmail.com are allowed. However, DKIM checking 
-and hard-coded domain checks are currently disabled in GetTor. Mails from all
-addresses are being passed to GetTor processing.
-
-On top of that, there is a blacklisting mechanism. It works as follows: Each 
-unique email address is allowed to mail GetTor the same type of mail once each
-7 days. Mail types are sendDelayAlert, sendPackage, sendPackageHelp, 
-sendSplitPackage. Blacklists are stored in the form of hashed email files under
-directories. In reality, that looks as follows:
-
-    gettor at moria:~/opt/gettor$ ls -d /home/gettor/gettor/bl/*
-        /home/gettor/gettor/bl/general
-        /home/gettor/gettor/bl/sendPackage
-        /home/gettor/gettor/bl/sendSplitPackage
-        /home/gettor/gettor/bl/sendDelayAlert
-        /home/gettor/gettor/bl/sendPackageHelp
-
-    gettor at moria:~/opt/gettor$ ls /home/gettor/gettor/bl/sendDelayAlert \
-                                                                    | head -n 2
-     0154d8584c0afa6290e21098e7ab4cc635b7d50a
-     02a33e16feece8671f1274de62de32068a67cf20
-
-In addition to this automatic whitelisting, there is the possibility to add
-blacklist entries by hand as follows:
-
-    gettor at moria:~/opt/gettor$ ./GetTor.py -b someone at evil.org
-
-Email addresses that are added this way, go to the general/ directory in the 
-blacklist directory.
-
-Besides the blacklisting mechanism, there is a whitelisting mechanism. It works
-analogous to the manual blacklisting mechanism:
-
-    gettor at moria:~/opt/gettor$ ./GetTor.py -w someone at evil.org
-
-Whitelisting wins over blacklisting. If a user if blacklisted for X, but also
-whitelisted, he will be allowed to do X.

Added: projects/gettor/README-THIS-REPO-HAS-MOVED-TO-GIT.TXT
===================================================================
--- projects/gettor/README-THIS-REPO-HAS-MOVED-TO-GIT.TXT	                        (rev 0)
+++ projects/gettor/README-THIS-REPO-HAS-MOVED-TO-GIT.TXT	2011-02-23 11:55:04 UTC (rev 24259)
@@ -0,0 +1,5 @@
+This repo is now in git. You may view it either via the web:
+https://gitweb.torproject.org/gettor
+
+Or clone it:
+git://git.torproject.org/gettor.git

Deleted: projects/gettor/README.USER-HOWTO
===================================================================
--- projects/gettor/README.USER-HOWTO	2011-02-23 00:21:44 UTC (rev 24258)
+++ projects/gettor/README.USER-HOWTO	2011-02-23 11:55:04 UTC (rev 24259)
@@ -1,90 +0,0 @@
-
-This document explains how a user may request Tor or Tor-related
-software via email with the GetTor program.
-
-FINDING GETTOR
---------------
-
-It is assumed that a user has a method of finding a valid GetTor email robot.
-Currently the best known GetTor email is gettor @ torproject.org. This should
-be the most current stable GetTor robot as it is operated by the Tor Project.
-
-
-REQUIREMENTS FOR USING GETTOR
------------------------------
-
-Users communicate with the GetTor robot by sending messages via email. The
-messages are currently English keywords. The user must use an email provider
-that signs their email with DKIM. A user will be alerted if their email
-provider is unsupported.
-
-USING GETTOR
-------------
-
-Currently, users have a limited set of options. It is best to send an email
-with a message body (the subject line can be blank) that consists of only the
-word 'help' to receive instructions. This will send the most current set of
-choices. An example reply to a request for help follows:
-
-   Hello, This is the "gettor" robot.
-
-   I am sorry, but your request was not understood. Please select one of the
-   following package names:
-
-       panther-bundle
-       source-bundle
-       windows-bundle
-       tiger-bundle
-       tor-browser-bundle
-       tor-im-browser-bundle
-
-   Please send me another email. It only needs a single package name anywhere
-   in the body of your email.
-
-For example, it is possible to fetch the most current Windows bundle. A user may
-send a request with only the word 'windows-bundle' in the body of the email. An
-example reply would look something like the following:
-
-   Hello! This is the "gettor" robot.
-
-   Here's your requested software as a zip file. Please unzip the
-   package and verify the signature.
-
-   Hint: If your computer has GnuPG installed, use the gpg
-   commandline tool as follows after unpacking the zip file:
-
-      gpg --verify <packagename>.asc <packagename>
-
-   The output should look somewhat like this:
-
-      gpg: Good signature from "Roger Dingledine <arma at mit.edu>"
-
-   If you're not familiar with commandline tools, try looking for
-   a graphical user interface for GnuPG on this website:
-
-      http://www.gnupg.org/related_software/frontends.html
-
-   Have fun.
-
-The email should also include an attachment with the name 'windows-bundle.z'
-that can be downloaded by the user. The user must now unpack the zip file and
-if they wish, they may verify that the file is from the Tor Project.
-
-UNPACKING AND VERIFYING THE REQUESTED FILES
--------------------------------------------
-
-A user should have software for decompressing .zip files. It will contain at
-least two files, the requested bundle and its digital signature. Before a user
-installs the bundle, they should verify the signature.
-
-Users should follow the most current instructions for signature verification
-as detailed by the Tor Project website:
-   https://www.torproject.org/verifying-signatures.html
-
-INSTALLING THE REQUESTED FILES
-------------------------------
-
-After verifying that the file is valid, a user should simply run the program.
-If a user requested the source code to Tor, we assume that they're able to
-follow the build instructions contained within the source itself.
-

Deleted: projects/gettor/README.locale-spec-draft
===================================================================
--- projects/gettor/README.locale-spec-draft	2011-02-23 00:21:44 UTC (rev 24258)
+++ projects/gettor/README.locale-spec-draft	2011-02-23 11:55:04 UTC (rev 24259)
@@ -1,61 +0,0 @@
-OVERVIEW
---------
-
-This document explains how GetTor handles locale parsing for both the operator
-and the end of user of GetTor. This allows non-English speaking users to
-operate GetTor in their language and to serve users in all other supported
-languages. It is currently a draft and will be reformatted, rewritten and
-changed until further notice.
-
-LOCALES FOR END USERS
----------------------
-
-Users should be able to send an indicator that they wish to have a localized
-response. All responses will be localized and localized binaries will be sent.
-
-SUPPORTED LOCALES
------------------
-
-All supported locales will be advertised by gettor in all emails.
-
-LOW TECH LOCALE PARSING
------------------------
-
-If no locale is specified, GetTor will default to English in the locale 'en-US'
-for all output.
-
-If a user wishes, they may set the locale for all responses. The locale must be
-passed by the end user as a single line. The start of the line must begin with
-'Lang: ' and be followed by the desired locale. The locale must be at the end
-of the line. An example follows on the following line:
-
-    Lang: de
-
-The first valid Locale line found in the message will designate the response
-locale.
-
-AUTOMATED LOCALE PARSING
-------------------------
-
-If possible and supported by the server, GetTor will attempt to automatically
-parse the desired locale by using plus addressing. The user should append the
-desired locale to the email address of the GetTor robot. An example for setting
-all responses into German (Locale: de) follows below:
-
-        gettor+de at torproject.org
-
-This will allow the user to interact without any knowledge of locales.
-
-GENERATING .po/.pot FILES
--------------------------
-
-In the top level directory of the gettor source, run the following command:
-
-    xgettext lib/gettor/constants.py -d gettor -o po/templates/gettor.pot
-
-Commit your pot file. Then log into the pootle server, commit any
-outstanding changes in ~/gettor/, and do an svn update. Then log into the
-pootle web interface, choose gettor, choose 'admin', click each check box
-(ugh), click 'update languages' at the bottom. Then log into the pootle
-server and do an svn commit of all the new po files.
-

Deleted: projects/gettor/TODO
===================================================================
--- projects/gettor/TODO	2011-02-23 00:21:44 UTC (rev 24258)
+++ projects/gettor/TODO	2011-02-23 11:55:04 UTC (rev 24259)
@@ -1,26 +0,0 @@
-These are planned changes to the gettor system.
-
-- Split (at least) tiger bundle into several smaller archives to avoid ~20MB
-- React in some way if the user requested a split download but no split 
-  downloads are available for that specific package (maybe send out the non-
-  split version of the package?)
-- Update https://www.torproject.org/gettor/ 
-- Write instructions on the website on how to use GetTor. Put that site into
-  pootle for translation so for example chinese and iranian users have a
-  reference for help
-- Package names that are sent out to the user are currently hard-coded. Return
-  to a more dynamic approach, also: Add a nice little note about the size of 
-  the files users may request
-- Remove 'localhost:25' to send mail and use '/usr/bin/sendmail' instead
-  (suggested by weasel)
-- Implement test (-t switch) functionality
-- Add torbutton (Mike, please sign torbutton and populate a proper .asc)
-- Add GetTor to GetTor and it will be able to distribute itself
-- Merge checkInternalEarlyBlacklist() in requests.py with the real blacklist
-  mechanism of GetTor
-  Related:
-  - Make blacklists learn wildcards: Something like "*@torproject.org" as a 
-    reply-to address should really be blacklisted, for instance.
-- Come up with something more elegant than torSpecialPackageExpansion() in
-  requests.py. Hardcoding package names in other places than packages.py is
-  inviting bugs.

Deleted: projects/gettor/sample-gettorrc
===================================================================
--- projects/gettor/sample-gettorrc	2011-02-23 00:21:44 UTC (rev 24258)
+++ projects/gettor/sample-gettorrc	2011-02-23 11:55:04 UTC (rev 24259)
@@ -1,16 +0,0 @@
-# Put this into the home directory of the user who runs gettor.py:
-# ~/.gettorrc
-#
-[global]
-stateDir        = /tmp/gettor
-blstatedir      = /tmp/gettor/bl/
-wlstatedir      = /tmp/gettor/wl/
-distdir         = /tmp/gettor/distdir/
-packdir         = /tmp/gettor/packdir/
-locale          = en
-delayalert      = True
-logSubSystem    = stdout
-logFile         = /tmp/gettor/logfile
-localDir        = /tmp/gettor/po/
-cmdPassFile     = /tmp/gettor/pass
-dumpFile        = /tmp/gettor/dumpfile

Deleted: projects/gettor/setup.cfg
===================================================================
--- projects/gettor/setup.cfg	2011-02-23 00:21:44 UTC (rev 24258)
+++ projects/gettor/setup.cfg	2011-02-23 11:55:04 UTC (rev 24259)
@@ -1,4 +0,0 @@
-[install]
-install-purelib=$HOME/opt/gettor
-install-scripts=$HOME/opt/gettor
-install-data=$HOME/opt/gettor

Deleted: projects/gettor/setup.py
===================================================================
--- projects/gettor/setup.py	2011-02-23 00:21:44 UTC (rev 24258)
+++ projects/gettor/setup.py	2011-02-23 11:55:04 UTC (rev 24259)
@@ -1,36 +0,0 @@
-#!/usr/bin/python2.5
-# (c) 2009 The Tor project
-# GetTor installer & packer
-
-import glob
-import os
-import sys
-
-from distutils.core import setup
-
-TRANSLATION_DIR='po'
-data_files = dict()
-for filename in os.listdir(TRANSLATION_DIR):
-    if filename.endswith('.svn'):
-        continue
-    dir = os.path.join(TRANSLATION_DIR, filename)
-    if dir.endswith('templates'):
-        file = "gettor.pot"
-    else:
-        file = "gettor.po"
-    pofile = os.path.join(dir, file)
-    data_files[dir] = [pofile]
-
-setup(name='GetTor',
-      version='0.1',
-      description='GetTor enables users to obtain Tor via email',
-      author='Jacob Appelbaum, Christian Fromme',
-      author_email='jacob at appelbaum dot net, kaner at strace dot org',
-      url='https://www.torproject.org/gettor/',
-      package_dir={'': 'lib'},
-      packages=['gettor'],
-      data_files = data_files.items(),
-      scripts = ["GetTor.py", "MakeStat.py"],
-      py_modules=['GetTor'],
-      long_description = """Really long text here."""
-     )



More information about the tor-commits mailing list