GetTor was created as a program for serving Tor and related files over SMTP, thus avoiding direct and indirect _censorship_ of Tor's software, in particular, the Tor Browser Bundle (TBB).
Go to file
2021-01-23 17:46:20 -05:00
.github Add .github/FUNDING.yml 2019-09-12 15:41:59 +02:00
bin Document scripts and service files 2019-12-11 16:06:44 +01:00
config Import ilv PR introduce major refactoring and restructure to use Twisted 2019-05-13 20:45:42 +02:00
doc Remove old upload documentation 2020-04-13 16:44:39 -04:00
gettor fix minor spelling error 2021-01-23 17:46:20 -05:00
scripts Fix typo in new gitlab links 2020-06-12 11:45:35 -04:00
share Add signature verification instructions to email 2020-03-18 16:12:10 -04:00
tests Only parse email subject and body 2021-01-12 14:00:11 -05:00
.coveragerc Import ilv PR introduce major refactoring and restructure to use Twisted 2019-05-13 20:45:42 +02:00
.gitignore Start twitter responder 2019-10-09 19:23:46 +02:00
.test.requirements.txt Fix tests 2019-05-13 20:51:07 +02:00
.travis.requirements.txt Refactor code base folders structure 2019-01-28 17:01:12 +01:00
AUTHORS Update setup.py and requirements.txt 2020-03-18 13:33:25 -04:00
CHANGELOG Refactor code base folders structure 2019-01-28 17:01:12 +01:00
gettor.conf.json.example Fix typo in json 2019-10-15 16:04:02 +02:00
LICENSE Update license 2020-04-13 16:40:54 -04:00
README.md Expand tests for database functions in gettor 2020-02-19 14:40:28 -05:00
requirements.txt Update setup.py and requirements.txt 2020-03-18 13:33:25 -04:00
setup.cfg Refactor code base folders structure 2019-01-28 17:01:12 +01:00
setup.py Update setup.py and requirements.txt 2020-03-18 13:33:25 -04:00

GetTor Revamp

GetTor Revamp done during the Google Summer of Code 2014 for the Tor Project. This repository continues to being used for improvements and further development.

What is GetTor?

GetTor was created as a program for serving Tor and related files over SMTP, thus avoiding direct and indirect censorship of Tor's software, in particular, the Tor Browser Bundle (TBB). Users interacted with GetTor by sending emails to a specific email address. After the user specified his OS and language, GetTor would send him an email with an attachment containing the requested package. This worked well for a while, but the bundles started to get too large for being sent as attachments in most email providers. In order to fix this, GetTor started to send (Dropbox) links instead of attachments.

What are the goals of the new GetTor?

Here is a list of the main goals the new GetTor should accomplish:

  • Safe. Remember we are serving people under heavy censorship.
  • Easy to use. The fewer user interactions, the better.
  • Clean code. It should be clear to other developers/contributors how GetTor works and how it can be improved.
  • Automated. We should try to automate things as much as possible.
  • Language and provider friendly. It should be easy to support new languages and to add new providers for storing packages and generate links.

Installing GetTor

To install gettor locally please install the following packages (on debian):

python3-coverage python3-dkim python3-dns python3-internetarchive python3-openssl python3-pytest python3-requests-oauthlib python3-service-identity python3-twisted sqlite3

The following packages are needed to run a gettor instance:

internetarchive jq rclone

Specifically: internetarchive is needed to send Tor Browser files via command line to the internet archive. jq is a json parser that is used to find out about the new tor browser releases. Both internetarchive and jq are used in: scripts/update_files

The following packages are instead needed to deploy gettor via ansible:

ansible ansible-lint

Gettor ansible playbooks live at: https://gitweb.torproject.org/admin/services/gettor.git/

Finally the following package is used store Tor Browser files via git and support large files: git-lfs

Once gettor is installed you can run it with:

$ ./bin/gettor_service start

Running tests

GetTor includes PyTest unit tests. To run the tests, first install the dependencies above and then run:

$ python3 scripts/create_db -n -c -o -f tests/gettor.db
$ python3 scripts/add_links_to_db -f tests/gettor.db
$ pytest-3 -s -v tests/