mirror of
https://gitlab.torproject.org/tpo/core/tor.git
synced 2024-11-30 15:43:32 +01:00
Remove various outdated documents.
doc/TODO and doc/spec/README were placeholders to tell people where to look for the real TODO and README stuff -- we replaced them years ago, though. authority-policy, v3-authority-howto, and torel-design.txt belong in torspec. I'm putting them in attic there since I think they may be in large part obsolete, but someone can rescue them if they're not. translations.txt is outdated, and refers to lots of programs other than Tor. We have much better translation resources on the website now. tor-win32-mingw-creation.txt is pending review of a revised version for 0.2.5 (see ticket #4520), but there's no reason to ship this one while we're waiting for an accurate version. the tor-rpm-creation.txt isn't obsolete AFAIK, but it belongs in doc/contrib if anywhere. Resolves bug #8965.
This commit is contained in:
parent
75b7cc1785
commit
a3f6f3316a
3
changes/bug8965
Normal file
3
changes/bug8965
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
o Removed documentation:
|
||||||
|
- Remove some of the older contents of doc/ as obsolete; move others
|
||||||
|
to torspec.git. Fixes bug 8965.
|
3
doc/TODO
3
doc/TODO
@ -1,3 +0,0 @@
|
|||||||
|
|
||||||
We no longer track our TODO lists in git. To see open Tor tasks, visit
|
|
||||||
our bugtracker and wiki at trac.torproject.org.
|
|
@ -1,89 +0,0 @@
|
|||||||
|
|
||||||
0. Overview.
|
|
||||||
|
|
||||||
This document contains various informal policies for how to operate
|
|
||||||
a directory authority, how to choose new ones, etc.
|
|
||||||
|
|
||||||
1. How to pick a new directory authority.
|
|
||||||
|
|
||||||
Here's our current guidelines for how to pick new directory
|
|
||||||
authorities.
|
|
||||||
|
|
||||||
(These won't ever be formal criteria -- we need to keep this flexible
|
|
||||||
so we can adapt to new situations.)
|
|
||||||
|
|
||||||
o Stability:
|
|
||||||
- Must be a low-downtime Tor server (computer as well as network).
|
|
||||||
- Must have a static IP.
|
|
||||||
- The operator must have been running a stable Tor server for at least
|
|
||||||
3 months.
|
|
||||||
- Must intend for this server to stick around for the next 12 months
|
|
||||||
or more.
|
|
||||||
- Must not hibernate.
|
|
||||||
- Should not be an exit node (as this increases the risk both of
|
|
||||||
downtime and of key compromise).
|
|
||||||
|
|
||||||
o Performance:
|
|
||||||
- Must have sufficient bandwidth: at least 10mbit/s symmetric,
|
|
||||||
though in practice the inbound traffic can be considerably less.
|
|
||||||
|
|
||||||
o Availability:
|
|
||||||
- Must be available to upgrade within a few days in most cases.
|
|
||||||
(While we're still developing Tor, we periodically find bugs that
|
|
||||||
impact the whole network and require authority upgrades.)
|
|
||||||
- Should have a well-known way to contact the administrator
|
|
||||||
via PGP-encrypted message.
|
|
||||||
|
|
||||||
o Integrity:
|
|
||||||
- Must promise not to censor or attack the network and users.
|
|
||||||
- Should be run by somebody that Tor (i.e. Roger) knows.
|
|
||||||
- Should be widely regarded as fair/trustworthy, or at least
|
|
||||||
known, by many people.
|
|
||||||
- If somebody asks you to backdoor or change your server, legally or
|
|
||||||
otherwise, you will fight it to the extent of your abilities. If
|
|
||||||
you fail to fight it, you must shut down the Tor server and notify
|
|
||||||
us that you have.
|
|
||||||
|
|
||||||
o Diversity
|
|
||||||
- We should avoid situations that make it likelier for multiple
|
|
||||||
authority failures to happen at the same time. Therefore...
|
|
||||||
- It's good when authorities are not all in the same country.
|
|
||||||
- It's good when authorities are not all in the same jurisdictions.
|
|
||||||
- It's good when authorities are not all running the same OS.
|
|
||||||
- It's good when authorities are not all using the same ISP.
|
|
||||||
- It's good when authorities are not all running the same
|
|
||||||
version of Tor.
|
|
||||||
- No two authorities should have the same operator.
|
|
||||||
- Maximal diversity, however, is not always practical. Sometimes,
|
|
||||||
for example, there is only one version of Tor that provides a
|
|
||||||
given consensus generation algorithm.
|
|
||||||
- A small group of authorities with the same country/jurisdiction/OS is
|
|
||||||
not a problem, until that group's size approaches quorum (half the
|
|
||||||
authorities).
|
|
||||||
|
|
||||||
2. How to choose the recommended versions
|
|
||||||
|
|
||||||
The policy, in a nutshell, is to not remove versions without a good
|
|
||||||
reason. So this means we should recommend all versions except:
|
|
||||||
|
|
||||||
- Versions that no longer conform to the spec. That is, if they wouldn't
|
|
||||||
actually interact correctly with the current Tor network.
|
|
||||||
- Versions that have known security problems.
|
|
||||||
- Versions that have frequent crash or assert problems.
|
|
||||||
- Versions that harm the performance or stability of the current Tor
|
|
||||||
network or the anonymity of other users. For example, a version
|
|
||||||
that load balances wrong, or a version that hammers the authorities
|
|
||||||
too much.
|
|
||||||
|
|
||||||
|
|
||||||
> some use the slight variant of requiring a *good* reason.
|
|
||||||
> excellent reasons include "there's a security flaw"
|
|
||||||
> good reasons include "that crashes every time you start it. you would think
|
|
||||||
+tor is dumb if you tried to use that version and think of it as tor."
|
|
||||||
> good reasons include "those old clients do their load balancing wrong, and
|
|
||||||
+they're screwing up the whole network"
|
|
||||||
> reasons include "the old one is really slow, clients should prefer the new
|
|
||||||
+one"
|
|
||||||
> i try to draw the line at 'good reasons and above'
|
|
||||||
|
|
||||||
|
|
@ -1,181 +0,0 @@
|
|||||||
Design For A Tor DNS-based Exit List
|
|
||||||
|
|
||||||
Status:
|
|
||||||
|
|
||||||
This is a suggested design for a DNS Exit List (DNSEL) for Tor exit nodes.
|
|
||||||
See http://exitlist.torproject.org/ for an implementation.
|
|
||||||
|
|
||||||
Why?
|
|
||||||
|
|
||||||
It's useful for third parties to be able to tell when a given connection
|
|
||||||
is coming from a Tor exit node. Potential applications range from
|
|
||||||
"anonymous user" cloaks on IRC networks like oftc, to networks like
|
|
||||||
Freenode that apply special authentication rules to users from these
|
|
||||||
IPs, to systems like Wikipedia that may want to make a priority of
|
|
||||||
_unblocking_ shared IPs more liberally than non-shared IPs, since shared
|
|
||||||
IPs presumably have non-abusive users as well as abusive ones.
|
|
||||||
|
|
||||||
Since Tor provides exit policies, not every Tor server will connect to
|
|
||||||
every address:port combination on the Internet. Unless you're trying to
|
|
||||||
penalize hosts for supporting anonymity, it makes more sense to answer
|
|
||||||
the fine-grained question "which Tor servers will connect to _me_?" than
|
|
||||||
the coarse-grained question "which Tor servers exist?" The fine-grained
|
|
||||||
approach also helps Tor server ops who share an IP with their Tor
|
|
||||||
server: if they want to access a site that blocks Tor users, they
|
|
||||||
can exclude that site from their exit policy, and the site can learn
|
|
||||||
that they won't send it anonymous connections.
|
|
||||||
|
|
||||||
Tor already ships with a tool (the "contrib/exitlist" script) to
|
|
||||||
identify which Tor nodes might open anonymous connections to any given
|
|
||||||
exit address. But this is a bit tricky to set up, so only sites like
|
|
||||||
Freenode and OFTC that are dedicated to privacy use it.
|
|
||||||
Conversely, providers of some DNSEL implementations are providing
|
|
||||||
coarse-grained lists of Tor hosts -- sometimes even listing servers that
|
|
||||||
permit no exit connections at all. This is rather a problem, since
|
|
||||||
support for DNSEL is pretty ubiquitous.
|
|
||||||
|
|
||||||
|
|
||||||
How?
|
|
||||||
|
|
||||||
Keep a running Tor instance, and parse the cached-routers and
|
|
||||||
cached-routers.new files as new routers arrive. To tell whether a given
|
|
||||||
server allows connections to a certain address:port combo, look at the
|
|
||||||
definitions in dir-spec.txt or follow the logic of the current exitlist
|
|
||||||
script. If bug 405 is still open when you work on this
|
|
||||||
(https://bugs.torproject.org/flyspray/index.php?do=details&id=405), you'll
|
|
||||||
probably want to extend it to look at only the newest descriptor for
|
|
||||||
each server, so you don't use obsolete exit policy data.
|
|
||||||
|
|
||||||
FetchUselessDescriptors would probably be a good torrc option to enable.
|
|
||||||
|
|
||||||
If you're also running a directory cache, you get extra-fresh
|
|
||||||
information.
|
|
||||||
|
|
||||||
|
|
||||||
The DNS interface
|
|
||||||
|
|
||||||
Standard DNSEL, if I understand right, looks like this: There's some
|
|
||||||
authoritative name server for foo.example.com. You want to know if
|
|
||||||
1.2.3.4 is in the list, so you query for an A record for
|
|
||||||
4.3.2.1.foo.example.com. If the record exists and has the value
|
|
||||||
127.0.0.2[DNSBL-EMAIL], 1.2.3.4 is in the list. If you get an NXDOMAIN
|
|
||||||
error, 1.2.3.4 is not in the list. If you ask for a domain name outside
|
|
||||||
of the foo.example.com zone, you get a Server Failure error[RFC 1035].
|
|
||||||
|
|
||||||
Assume that the DNSEL answers queries authoritatively for some zone,
|
|
||||||
torhosts.example.com. Below are some queries that could be supported,
|
|
||||||
though some of them are possibly a bad idea.
|
|
||||||
|
|
||||||
|
|
||||||
Query type 1: "General IP:Port"
|
|
||||||
|
|
||||||
Format:
|
|
||||||
{IP1}.{port}.{IP2}.ip-port.torhosts.example.com
|
|
||||||
|
|
||||||
Rule:
|
|
||||||
Iff {IP1} is a Tor server that permits connections to {port} on
|
|
||||||
{IP2}, then there should be an A record with the value 127.0.0.2.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
"1.0.0.10.80.4.3.2.1.ip-port.torhosts.example.com" should have the
|
|
||||||
value 127.0.0.2 if and only if there is a Tor server at 10.0.0.1
|
|
||||||
that allows connections to port 80 on 1.2.3.4.
|
|
||||||
|
|
||||||
Example use:
|
|
||||||
I'm running an IRC server at w.x.y.z:9999, and I want to tell
|
|
||||||
whether an incoming connection is from a Tor server. I set
|
|
||||||
up my IRC server to give a special mask to any user coming from
|
|
||||||
an IP listed in 9999.z.y.x.w.ip-port.torhosts.example.com.
|
|
||||||
|
|
||||||
Later, when I get a connection from a.b.c.d, my ircd looks up
|
|
||||||
"d.c.b.a.9999.z.y.x.w.ip-port.torhosts.example.com" to see
|
|
||||||
if it's a Tor server that allows connections to my ircd.
|
|
||||||
|
|
||||||
|
|
||||||
Query type 2: "IP-port group"
|
|
||||||
|
|
||||||
Format:
|
|
||||||
{IP}.{listname}.list.torhosts.example.com
|
|
||||||
|
|
||||||
Rule:
|
|
||||||
Iff this Tor server is configured with an IP:Port list named
|
|
||||||
{listname}, and {IP} is a Tor server that permits connections to
|
|
||||||
any member of {listname}, then there exists an A record.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
Suppose torhosts.example.com has a list of IP:Port called "foo".
|
|
||||||
There is an A record for 4.3.2.1.foo.list.torhosts.example.com
|
|
||||||
if and only if 1.2.3.4 is a Tor server that permits connections
|
|
||||||
to one of the addresses in list "foo".
|
|
||||||
|
|
||||||
Example use:
|
|
||||||
Suppose torhosts.example.com has a list of hosts in "examplenet",
|
|
||||||
a popular IRC network. Rather than having them each set up to
|
|
||||||
query the appropriate "ip-port" list, they could instead all be
|
|
||||||
set to query a central examplenet.list.torhosts.example.com.
|
|
||||||
|
|
||||||
Problems:
|
|
||||||
We'd be better off if each individual server queried about hosts
|
|
||||||
that allowed connections to itself. That way, if I wanted to
|
|
||||||
allow anonymous connections to foonet, but I wanted to be able to
|
|
||||||
connect to foonet from my own IP without being marked, I could add
|
|
||||||
just a few foonet addresses to my exit policy.
|
|
||||||
|
|
||||||
|
|
||||||
Query type 3: "My IP, with port"
|
|
||||||
|
|
||||||
Format:
|
|
||||||
{IP}.{port}.me.torhosts.example.com
|
|
||||||
|
|
||||||
Rule:
|
|
||||||
An A record exists iff there is a tor server at {IP} that permits
|
|
||||||
connections to {port} on the host that requested the lookup.
|
|
||||||
|
|
||||||
Example:
|
|
||||||
"4.3.2.1.80.me.torhosts.example.com" should have an A record if
|
|
||||||
and only if there is a Tor server at 1.2.3.4 that allows
|
|
||||||
connections to port 80 of the querying host.
|
|
||||||
|
|
||||||
Example use:
|
|
||||||
Somebody wants to set up a quick-and-dirty Tor detector for a
|
|
||||||
single webserver: just point them at 80.me.torhosts.example.com.
|
|
||||||
|
|
||||||
Problem:
|
|
||||||
This would be easiest to use, but DNS gets in the way. If you
|
|
||||||
create DNS records that give different results depending on who is
|
|
||||||
asking, you mess up caching. There could be a fix here, but might
|
|
||||||
not.
|
|
||||||
|
|
||||||
|
|
||||||
RECOMMENDATION: Just build ip-port for now, and see what demand is
|
|
||||||
like. There's no point in building mechanisms nobody wants.
|
|
||||||
|
|
||||||
Web interface:
|
|
||||||
|
|
||||||
Should provide the same data as the dns interface.
|
|
||||||
|
|
||||||
Other issues:
|
|
||||||
|
|
||||||
After a Tor server op turns off their server, it stops publishing server
|
|
||||||
descriptors. We should consider that server's IP address to still
|
|
||||||
represent a Tor node until 48 hours after its last descriptor was
|
|
||||||
published.
|
|
||||||
|
|
||||||
30-60 minutes is not an unreasonable TTL.
|
|
||||||
|
|
||||||
There could be some demand for address masks and port lists. Address
|
|
||||||
masks wider than /8 make me nervous here, as do port ranges.
|
|
||||||
|
|
||||||
We need an answer for what to do about hosts which exit from different
|
|
||||||
IPs than their advertised IP. One approach would be for the DNSEL
|
|
||||||
to launch periodic requests to itself through all exit servers whose
|
|
||||||
policies allow it -- and then see where the requests actually come from.
|
|
||||||
|
|
||||||
References:
|
|
||||||
|
|
||||||
[DNSBL-EMAIL] Levine, J., "DNS Based Blacklists and Whitelists for
|
|
||||||
E-Mail", http://tools.ietf.org/html/draft-irtf-asrg-dnsbl-02, November
|
|
||||||
2005.
|
|
||||||
|
|
||||||
[RFC 1035] Mockapetris, P., "Domain Names - Implementation and
|
|
||||||
Specification", RFC 1035, November 1987.
|
|
@ -36,8 +36,6 @@ endif
|
|||||||
|
|
||||||
EXTRA_DIST+= doc/HACKING doc/asciidoc-helper.sh \
|
EXTRA_DIST+= doc/HACKING doc/asciidoc-helper.sh \
|
||||||
$(html_in) $(man_in) $(txt_in) \
|
$(html_in) $(man_in) $(txt_in) \
|
||||||
doc/tor-rpm-creation.txt \
|
|
||||||
doc/tor-win32-mingw-creation.txt doc/spec/README \
|
|
||||||
doc/state-contents.txt
|
doc/state-contents.txt
|
||||||
|
|
||||||
docdir = @docdir@
|
docdir = @docdir@
|
||||||
|
@ -1,11 +0,0 @@
|
|||||||
The Tor specifications and proposals have moved to a new repository.
|
|
||||||
|
|
||||||
To browse the specifications, go to
|
|
||||||
https://gitweb.torproject.org/torspec.git/tree
|
|
||||||
|
|
||||||
To check out the specification repository, run
|
|
||||||
git clone git://git.torproject.org/torspec.git
|
|
||||||
|
|
||||||
For other information on the repository, see
|
|
||||||
https://gitweb.torproject.org/torspec.git
|
|
||||||
|
|
@ -1,119 +0,0 @@
|
|||||||
##
|
|
||||||
## Instructions for building Tor with MinGW (http://www.mingw.org/)
|
|
||||||
##
|
|
||||||
|
|
||||||
Stage One: Download and Install MinGW.
|
|
||||||
---------------------------------------
|
|
||||||
|
|
||||||
Download mingw:
|
|
||||||
http://prdownloads.sf.net/mingw/MinGW-5.1.6.exe?download
|
|
||||||
|
|
||||||
Download msys:
|
|
||||||
http://prdownloads.sf.net/ming/MSYS-1.0.11.exe?download
|
|
||||||
|
|
||||||
Download msysDTK:
|
|
||||||
http://sourceforge.net/projects/mingw/files/MSYS%20Supplementary%20Tools/msysDTK-1.0.1/msysDTK-1.0.1.exe/download
|
|
||||||
|
|
||||||
Install MinGW, msysDTK, and MSYS in that order.
|
|
||||||
|
|
||||||
Make sure your PATH includes C:\MinGW\bin. You can verify this by right
|
|
||||||
clicking on "My Computer", choose "Properties", choose "Advanced",
|
|
||||||
choose "Environment Variables", select PATH.
|
|
||||||
|
|
||||||
Start MSYS(rxvt).
|
|
||||||
|
|
||||||
Create a directory called "tor-mingw".
|
|
||||||
|
|
||||||
Stage Two: Download, extract, compile openssl
|
|
||||||
----------------------------------------------
|
|
||||||
|
|
||||||
Download openssl:
|
|
||||||
http://www.openssl.org/source/openssl-0.9.8l.tar.gz
|
|
||||||
|
|
||||||
Extract openssl:
|
|
||||||
Copy the openssl tarball into the "tor-mingw" directory.
|
|
||||||
Type "cd tor-mingw/"
|
|
||||||
Type "tar zxf openssl-0.9.8l.tar.gz"
|
|
||||||
(Note: There are many symlink errors because Windows doesn't support
|
|
||||||
symlinks. You can ignore these errors.)
|
|
||||||
|
|
||||||
Make openssl libraries:
|
|
||||||
Type "cd tor-mingw/openssl-0.9.8l/"
|
|
||||||
Type "./Configure -no-idea -no-rc5 -no-mdc2 mingw"
|
|
||||||
Edit Makefile and remove the "test:" and "tests:" sections.
|
|
||||||
Type "rm -rf ./test"
|
|
||||||
Type "cd crypto/"
|
|
||||||
Type "find ./ -name "*.h" -exec cp {} ../include/openssl/ \;"
|
|
||||||
Type "cd ../ssl/"
|
|
||||||
Type "find ./ -name "*.h" -exec cp {} ../include/openssl/ \;"
|
|
||||||
Type "cd .."
|
|
||||||
Type "cp *.h include/openssl/"
|
|
||||||
Type "find ./fips -type f -name "*.h" -exec cp {} include/openssl/ \;"
|
|
||||||
# The next steps can take up to 30 minutes to complete.
|
|
||||||
Type "make"
|
|
||||||
Type "make install"
|
|
||||||
|
|
||||||
|
|
||||||
Stage Three: Download, extract, compile zlib
|
|
||||||
---------------------------------------------
|
|
||||||
|
|
||||||
Download zlib source:
|
|
||||||
http://www.zlib.net/zlib-1.2.3.tar.gz
|
|
||||||
|
|
||||||
Extract zlib:
|
|
||||||
Copy the zlib tarball into the "tor-mingw" directory
|
|
||||||
Type "cd tor-mingw/"
|
|
||||||
Type "tar zxf zlib-1.2.3.tar.gz"
|
|
||||||
|
|
||||||
CHOICE:
|
|
||||||
|
|
||||||
Make zlib.a:
|
|
||||||
Type "cd tor-mingw/zlib-1.2.3/"
|
|
||||||
Type "./configure"
|
|
||||||
Type "make"
|
|
||||||
Type "make install"
|
|
||||||
|
|
||||||
Done.
|
|
||||||
|
|
||||||
|
|
||||||
Stage Four: Download, extract, and compile libevent
|
|
||||||
------------------------------------------------------
|
|
||||||
|
|
||||||
Download the latest libevent release:
|
|
||||||
http://www.monkey.org/~provos/libevent/
|
|
||||||
|
|
||||||
Copy the libevent tarball into the "tor-mingw" directory.
|
|
||||||
Type "cd tor-mingw"
|
|
||||||
|
|
||||||
Extract libevent.
|
|
||||||
|
|
||||||
Type "./configure --enable-static --disable-shared"
|
|
||||||
Type "make"
|
|
||||||
Type "make install"
|
|
||||||
|
|
||||||
Stage Five: Build Tor
|
|
||||||
----------------------
|
|
||||||
|
|
||||||
Download the current Tor alpha release source code from https://torproject.org/download.html.
|
|
||||||
Copy the Tor tarball into the "tor-mingw" directory.
|
|
||||||
Extract Tor:
|
|
||||||
Type "tar zxf latest-tor-alpha.tar.gz"
|
|
||||||
|
|
||||||
cd tor-<version>
|
|
||||||
Type "./configure"
|
|
||||||
Type "make"
|
|
||||||
|
|
||||||
You now have a tor.exe in src/or/. This is Tor.
|
|
||||||
You now have a tor-resolve.exe in src/tools/.
|
|
||||||
|
|
||||||
Stage Six: Build the installer
|
|
||||||
-------------------------------
|
|
||||||
|
|
||||||
Install the latest NSIS:
|
|
||||||
http://nsis.sourceforge.net/Download
|
|
||||||
|
|
||||||
Run the package script in contrib:
|
|
||||||
From the Tor build directory above, run:
|
|
||||||
"./contrib/package_nsis-mingw.sh"
|
|
||||||
|
|
||||||
The resulting Tor installer executable is in ./win_tmp/.
|
|
@ -1,182 +0,0 @@
|
|||||||
## Instructions for helping translate text for Vidalia, TorButton
|
|
||||||
## and TorCheck
|
|
||||||
## ( More translation information for Tor related apps will accumulate here )
|
|
||||||
|
|
||||||
Our translations are handled in one of two places. The Tor Translation Portal
|
|
||||||
handles all of the translations for Vidalia, Torbutton and TorCheck. The Tor
|
|
||||||
website itself is currently handled by hand translations using subversion.
|
|
||||||
|
|
||||||
-------------------------------------------------------------------------
|
|
||||||
|
|
||||||
For the Tor website, you'll need a Tor SVN account.
|
|
||||||
If you do not have one and you need one, please run this command with your
|
|
||||||
desired username in place of 'USERNAME':
|
|
||||||
htdigest -c passwd.tmp "Tor subversion repository" USERNAME
|
|
||||||
and send us the contents of passwd.tmp.
|
|
||||||
|
|
||||||
-------------------------------------------------------------------------
|
|
||||||
|
|
||||||
For the Portal-based projects, all three check in their respective .po
|
|
||||||
files into the following subversion urls:
|
|
||||||
|
|
||||||
https://tor-svn.freehaven.net/svn/translation/trunk/projects/torbutton
|
|
||||||
https://tor-svn.freehaven.net/svn/translation/trunk/projects/torcheck
|
|
||||||
https://svn.vidalia-project.net/svn/vidalia/trunk/src/vidalia/i18n/
|
|
||||||
|
|
||||||
The current pootle configuration is checked into subversion as well:
|
|
||||||
|
|
||||||
https://tor-svn.freehaven.net/svn/translation/trunk/pootle
|
|
||||||
|
|
||||||
---------------------------- TorCheck -------------------------------
|
|
||||||
|
|
||||||
TorCheck uses our translation portal to accept translations. Users use
|
|
||||||
the portal to check in their changes. To make use of the translations
|
|
||||||
that users have committed to the translations/ subversion module, you'll
|
|
||||||
need to ensure that you have a current checked out copy of TorCheck:
|
|
||||||
|
|
||||||
cd check/trunk/i18n/
|
|
||||||
check/trunk/i18n$ svn up
|
|
||||||
|
|
||||||
You should see something like the following:
|
|
||||||
|
|
||||||
Fetching external item into 'pootle'
|
|
||||||
External at revision 15300.
|
|
||||||
|
|
||||||
At revision 15300.
|
|
||||||
|
|
||||||
Now if you had changes, you'd simply want to move the newly updated .po files
|
|
||||||
into the current stable directory. Moving the .po files from
|
|
||||||
'check/trunk/i18n/pootle/' into 'check/trunk/i18n' properly naming the files
|
|
||||||
for their respective locale.
|
|
||||||
|
|
||||||
Here's an example of how to move all of the current pootle translations into
|
|
||||||
the svn trunk area of TorCheck:
|
|
||||||
|
|
||||||
cd check/trunk/i18n/
|
|
||||||
for locale in `ls -1 pootle/|grep -v template`;
|
|
||||||
do
|
|
||||||
mv -v pootle/$locale/TorCheck_$locale.po TorCheck_$locale.po;
|
|
||||||
done
|
|
||||||
|
|
||||||
Now check the differences (ensure the output looks reasonable):
|
|
||||||
|
|
||||||
svn diff
|
|
||||||
|
|
||||||
Ensure that msgfmt has no errors:
|
|
||||||
|
|
||||||
msgfmt -C *.po
|
|
||||||
|
|
||||||
And finally check in the changes:
|
|
||||||
|
|
||||||
svn commit
|
|
||||||
|
|
||||||
---------------------------- Torbutton -------------------------------
|
|
||||||
|
|
||||||
Torbutton uses our translation portal to accept translations. Users use
|
|
||||||
the portal to check in their changes.
|
|
||||||
|
|
||||||
To make use of the translations that users have committed to the translations/
|
|
||||||
subversion module, you'll need to ensure that you have a current checked out
|
|
||||||
copy of them in your torbutton git checkout:
|
|
||||||
|
|
||||||
cd torbutton.git/trans_tools
|
|
||||||
torbutton.git/trans_tools$ svn co https://tor-svn.freehaven.net/svn/translation/trunk/projects/torbutton pootle
|
|
||||||
|
|
||||||
You should see something like the following:
|
|
||||||
|
|
||||||
Checked out revision 21092.
|
|
||||||
|
|
||||||
If you made changes to strings in Torbutton, you need to rebuild the
|
|
||||||
templates in torbutton.git/trans_tools/pootle/templates. This is done with
|
|
||||||
the following command from within the torbutton.git checkout directory:
|
|
||||||
|
|
||||||
moz2po -P -i src/chrome/locale/en/ -o trans_tools/pootle/templates/
|
|
||||||
|
|
||||||
You now have two options:
|
|
||||||
|
|
||||||
Option 1 (The [shitty] Pootle Web UI Way):
|
|
||||||
|
|
||||||
View then commit the changes to the template with:
|
|
||||||
|
|
||||||
cd trans_tools/pootle
|
|
||||||
svn diff templates
|
|
||||||
svn commit templates
|
|
||||||
|
|
||||||
Then poke Jake to 'svn up' on the Pootle side. If you do this enough
|
|
||||||
times, he may give you a button to click to update templates in Pootle,
|
|
||||||
or maybe even an account on the Pootle server. Persistence is a virtue.
|
|
||||||
|
|
||||||
You then need to go to the Pootle website and click the checkbox next to
|
|
||||||
every language on:
|
|
||||||
https://translation.torproject.org/projects/torbutton/admin.html
|
|
||||||
and then click "Update Languages" at the bottom.
|
|
||||||
|
|
||||||
You then need to go to each language and go to "Editing Options" and click
|
|
||||||
"Commit" for each one.
|
|
||||||
|
|
||||||
You then need to 'svn up' locally, and follow the procedure above for
|
|
||||||
rebuilding your .dtd and .properties files.
|
|
||||||
|
|
||||||
Yes, this sucks. :/
|
|
||||||
|
|
||||||
Option 2 (Use your own msgmerge: YMMV, may change .po flags and formatting):
|
|
||||||
|
|
||||||
Run msgmerge yourself for each language:
|
|
||||||
|
|
||||||
cd trans_tools
|
|
||||||
for i in `ls -1 pootle`
|
|
||||||
do
|
|
||||||
msgmerge -U ./pootle/$i/torbutton.dtd.po ./pootle/templates/torbutton.dtd.pot
|
|
||||||
msgmerge -U ./pootle/$i/torbutton.properties.po ./pootle/templates/torbutton.properties.pot
|
|
||||||
done
|
|
||||||
svn diff pootle
|
|
||||||
svn commit pootle
|
|
||||||
|
|
||||||
Then poke Jake to 'svn up' on the Pootle side. If you do this enough times,
|
|
||||||
he may give you a button on Pootle, or maybe even an account on the Pootle
|
|
||||||
server. Persistence is a virtue.
|
|
||||||
|
|
||||||
You may notice that some .po file flags and string formatting have changed
|
|
||||||
with this method, depending on your gettext version. It is unclear if this
|
|
||||||
is a problem. Please update this doc if you hit a landmine and everything
|
|
||||||
breaks :)
|
|
||||||
|
|
||||||
After this process is done, you then need to regenerate the mozilla
|
|
||||||
.dtd and .properties files as specified above.
|
|
||||||
|
|
||||||
|
|
||||||
Regardless of whether or not you had changes in the torbutton strings, if there
|
|
||||||
were updated strings in pootle that you checked out from svn you now need to
|
|
||||||
convert from .po and move the newly updated mozilla files into the current
|
|
||||||
stable locale directory. First convert them with the 'mkmoz.sh' script and
|
|
||||||
then move the proper mozilla files from 'torbutton.git/trans_tools/moz/' into
|
|
||||||
'torbutton.git/src/chrome/locale/' directory while properly naming the files
|
|
||||||
for their respective locale.
|
|
||||||
|
|
||||||
Here's an example of how to move all of the current pootle translations into
|
|
||||||
the svn trunk area of Torbutton:
|
|
||||||
|
|
||||||
cd trans_tools
|
|
||||||
./mkmoz.sh
|
|
||||||
for locale in `ls -1 moz/`;
|
|
||||||
do
|
|
||||||
mv -v moz/$locale/*.{dtd,properties} ../src/chrome/locale/$locale/
|
|
||||||
done
|
|
||||||
|
|
||||||
Now check the differences to your git branch to ensure the output looks
|
|
||||||
reasonable:
|
|
||||||
|
|
||||||
cd ..
|
|
||||||
git diff
|
|
||||||
|
|
||||||
And finally check in the changes:
|
|
||||||
|
|
||||||
cd src/chrome/locale
|
|
||||||
git commit .
|
|
||||||
|
|
||||||
---------------------------- Vidalia -------------------------------
|
|
||||||
|
|
||||||
Vidalia uses our translation portal to accept translations. Users use the
|
|
||||||
portal to check in their changes. No conversion or moving is required other
|
|
||||||
than normal pootle usage.
|
|
||||||
|
|
@ -1,84 +0,0 @@
|
|||||||
|
|
||||||
How to add a v3 directory authority.
|
|
||||||
|
|
||||||
What we'll be doing:
|
|
||||||
|
|
||||||
We'll be configuring your Tor server as a v3 directory authority,
|
|
||||||
generating a v3 identity key plus certificates, and adding your v3
|
|
||||||
identity fingerprint to the list of default directory authorities.
|
|
||||||
|
|
||||||
The steps:
|
|
||||||
|
|
||||||
0) Make sure you're running ntp, and that your time is correct.
|
|
||||||
|
|
||||||
Make sure you have Tor version at least r12724. In the short term,
|
|
||||||
running a working authority may mean running the latest version of
|
|
||||||
Tor from SVN trunk. Later on, we hope that it will become easier
|
|
||||||
and you can just run a recent development release (and later still,
|
|
||||||
a recent stable release).
|
|
||||||
|
|
||||||
1) First, you'll need a certificate. Run ./src/tools/tor-gencert to
|
|
||||||
generate one.
|
|
||||||
|
|
||||||
Run tor-gencert in a separate, very secure directory. Maybe even on
|
|
||||||
a more secure computer. The first time you run it, you will need to
|
|
||||||
run it with the --create-identity-key option to make a v3 authority
|
|
||||||
identity key. Subsequent times, you can just run it as-is.
|
|
||||||
|
|
||||||
tor-gencert will make 3 files:
|
|
||||||
|
|
||||||
authority_identity_key -- THIS IS VERY SECRET AND VERY SENSITIVE.
|
|
||||||
DO NOT LEAK IT. DO NOT LOSE IT.
|
|
||||||
|
|
||||||
authority_signing_key -- A key for signing votes and v3 conensuses.
|
|
||||||
|
|
||||||
authority_certificate -- A document authenticating your signing key
|
|
||||||
with your identity-key.
|
|
||||||
|
|
||||||
You will need to rotate your signing key periodically. The current
|
|
||||||
default lifetime is 1 year. We'll probably take this down to a month or
|
|
||||||
two some time soon. To rotate your key, run tor-gencert as before,
|
|
||||||
but without the --create-identity-key option.
|
|
||||||
|
|
||||||
2) Copy authority_signing_key and authority_certificate to your Tor keys
|
|
||||||
directory.
|
|
||||||
|
|
||||||
For example if your data directory is /var/lib/tor/, you should run
|
|
||||||
cp authority_signing_key authority_certificate /var/lib/tor/keys/
|
|
||||||
|
|
||||||
You will need to repeat this every time you rotate your certificate.
|
|
||||||
|
|
||||||
3) Tell your Tor to be a v3 authority by adding these lines to your torrc:
|
|
||||||
|
|
||||||
AuthoritativeDirectory 1
|
|
||||||
V3AuthoritativeDirectory 1
|
|
||||||
|
|
||||||
4) Now your authority is generating a networkstatus opinion (called a
|
|
||||||
"vote") every period, but none of the other authorities care yet. The
|
|
||||||
next step is to get a Tor developer (likely Roger or Nick) to add
|
|
||||||
your v3 identity fingerprint to the default list of dirservers.
|
|
||||||
|
|
||||||
First, you need to learn your authority's v3 identity fingerprint.
|
|
||||||
It should be in your authority_certificate file in a line like:
|
|
||||||
|
|
||||||
fingerprint 3041632465FA8847A98B2C5742108C72325532D9
|
|
||||||
|
|
||||||
One of the Tor developers then needs to add this fingerprint to
|
|
||||||
the add_default_trusted_dirservers() function in config.c, using
|
|
||||||
the syntax "v3ident=<fingerprint>". For example, if moria1's new v3
|
|
||||||
identity fingerprint is FOO, the moria1 dirserver line should now be:
|
|
||||||
|
|
||||||
DirServer moria1 v1 orport=9001 v3ident=FOO 128.31.0.34:9031 FFCB 46DB 1339 DA84 674C 70D7 CB58 6434 C437 0441
|
|
||||||
|
|
||||||
The v3ident item must appear after the nickname and before the IP.
|
|
||||||
|
|
||||||
5) Once your fingerprint has been added to config.c, we will try to
|
|
||||||
get a majority of v3 authorities to upgrade, so they know about you
|
|
||||||
too. At that point your vote will automatically be included in the
|
|
||||||
networkstatus consensus, and you'll be a fully-functioning contributing
|
|
||||||
v3 authority.
|
|
||||||
|
|
||||||
Note also that a majority of the configured v3 authorities need to
|
|
||||||
agree in order to generate a consensus: so this is also the point
|
|
||||||
where extended downtime on your server means missing votes.
|
|
||||||
|
|
Loading…
Reference in New Issue
Block a user