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@appelbaum.net, Christian Fromme kaner@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@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@moria:~/tmp$ cd gettor/ - gettor@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@moria:~/tmp/gettor$ cd ~/opt/gettor - gettor@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@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@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@moria:~/opt/gettor$ ./GetTor.py -s seCreTpAssworD - -Finally, you need to setup email forwarding to the GetTor bot like so: - - gettor@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@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@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@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@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@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@moria:~/opt/gettor$ ./GetTor.py -b someone@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@moria:~/opt/gettor$ ./GetTor.py -w someone@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@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@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.""" - )
tor-commits@lists.torproject.org