tor-commits
Threads by month
- ----- 2025 -----
- June
- May
- April
- March
- February
- January
- ----- 2024 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2023 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2022 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2021 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2020 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2019 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2018 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2017 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2016 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2015 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2014 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2013 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2012 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
- January
- ----- 2011 -----
- December
- November
- October
- September
- August
- July
- June
- May
- April
- March
- February
March 2011
- 18 participants
- 683 discussions

r24297: {translation} wrote more text and reorganized a couple of things (translation/trunk/documentation)
by Runa Sandvik 03 Mar '11
by Runa Sandvik 03 Mar '11
03 Mar '11
Author: runa
Date: 2011-03-03 14:26:06 +0000 (Thu, 03 Mar 2011)
New Revision: 24297
Modified:
translation/trunk/documentation/howto.txt
Log:
wrote more text and reorganized a couple of things
Modified: translation/trunk/documentation/howto.txt
===================================================================
--- translation/trunk/documentation/howto.txt 2011-03-03 13:39:36 UTC (rev 24296)
+++ translation/trunk/documentation/howto.txt 2011-03-03 14:26:06 UTC (rev 24297)
@@ -151,7 +151,45 @@
and will not overwrite newer files. Use --help for more
information.
+All projects:
+ The method for pushing/adding/pulling source files and
+ translations to/from the Transifex server is the same for all
+ translation projects.
+
+ 1. Pulling Translations from the Transifex Server
+
+ To pull new translations from the server, cd to the 'po'
+ directory and run 'tx pull'. Remember to commit the changes to
+ SVN.
+
+ 2. Adding New Translation Resources to Transifex
+
+ To add new translation resources to Transifex, open up
+ 'po/.tx/config' and create entries for the new resources. Use an
+ existing entry as a template. Remember to commit the file to SVN.
+
+ 3. Pushing Files to the Transifex Server
+
+ To push new/updated source files or translations to the Transifex
+ server, cd to the 'po' directory and run 'tx push' with either
+ '-s' or '-t'.
+
+ The rest of this howto will talk about the different translation
+ projects; where you can find the Transifex configuration file,
+ source files, translations, how you convert the translations to a
+ useful format and how you create and/or update a translation
+ template file.
+
+Necessary packages:
+
+ You will want to install the following packages (available in both
+ Debian and Ubuntu, and probably other distributions as well):
+
+ 1. po4a: http://po4a.alioth.debian.org/
+ 2. gettext: http://www.gnu.org/software/gettext/
+ 3. translation-toolkit: http://translate.sourceforge.net/wiki/toolkit/index/
+
BridgeDB:
# TODO: document the translation workflow for BridgeDB when we have
@@ -168,14 +206,8 @@
be found here:
https://svn.torproject.org/vidalia/vidalia/trunk/src/vidalia/help/content/.
- 1. Pulling Translations from the Transifex Server
+ 1. Converting Translations to HTML
- To pull new translations from the server, cd to the 'po'
- directory and run 'tx pull'. Remember to commit the changes to
- SVN.
-
- 2. Converting Translations to HTML
-
Simply pulling translations from the Transifex server is not
enough. To make use of the translations, you will need to convert
the .po files to .html files.
@@ -183,10 +215,8 @@
You can use the following script to automate the process:
https://svn.torproject.org/vidalia/vidalia/trunk/src/vidalia/help/content/p…
- NOTE: You need to have the package 'po4a' installed before running the script.
+ 2. Creating/Updating Translation Template Files
- 3. Creating/Updating Translation Template Files
-
To create a .pot file from an .html file, run the following command:
$ po4a-gettextize -f html -m file.html -p file.pot
@@ -196,93 +226,43 @@
in 'po/templates' as a template. Remember to commit the file to
SVN.
- 4. Adding New Translation Resources to Transifex
-
- To add new translation resources to Transifex, open up
- 'po/.tx/config' and create entries for the new resources. Use an
- existing entry as a template. Remember to commit the file to SVN.
-
- 5. Pushing Files to the Transifex Server
-
- To push new/updated source files or translations to the Transifex
- server, cd to the 'po' directory and run 'tx push' with either
- '-s' or '-t'.
-
Vidalia Installer:
The Transifex configuration file, source file and translations can
be found here:
https://svn.torproject.org/vidalia/vidalia/trunk/pkg/win32/po/.
- 1. Pulling Translations from the Transifex Server
+ 1. Converting Translations
- To pull new translations from the server, run 'tx pull'. Remember
- to commit the changes to SVN.
+ # TODO: document how to convert translations to a useful format.
- 2. Converting Translations
+ 2. Creating/Updating Translation Template Files
- # TODO: document how to convert translations to a useful format.
+ # TODO: document how to convert from a useful format to .pot
- 3. Creating/Updating Translation Template Files
-
- # TODO: document how to convert from a useful format to .pot
-
- 4. Adding New Translation Resources to Transifex
-
- To add new translation resources to Transifex, open up
- '.tx/config' and create entries for the new resources. Use an
- existing entry as a template. Remember to commit the file to SVN.
-
- 5. Pushing Files to the Transifex Server
-
- To push new/updated source files or translations to the Transifex
- server, simply run 'tx push' with either '-s' or '-t'.
-
Vidalia:
The Transifex configuration file, source file and translations can
be found here:
https://svn.torproject.org/vidalia/vidalia/trunk/src/vidalia/i18n/po/.
- 1. Pulling Translations from the Transifex Server
+ 1. Converting Translations
- To pull new translations from the server, run 'tx pull'. Remember
- to commit the changes to SVN.
-
- 2. Converting Translations
-
# TODO: document how to convert translations to a useful format.
- 3. Creating/Updating Translation Template Files
+ 2. Creating/Updating Translation Template Files
# TODO: document how to convert from a useful format to .pot
- 4. Adding New Translation Resources to Transifex
-
- To add new translation resources to Transifex, open up
- '.tx/config' and create entries for the new resources. Use an
- existing entry as a template. Remember to commit the file to SVN.
-
- 5. Pushing Files to the Transifex Server
-
- To push new/updated source files or translations to the
- Transifex server, simply run 'tx push' with either '-s' or '-t'.
-
Orbot:
The Transifex configuration file, source file and translations can
be found here:
https://svn.torproject.org/svn/translation/trunk/projects/orbot/po/.
- 1. Pulling Translations from the Transifex Server
+ 1. Converting Translations to XML
- To pull new translations from the server, run 'tx pull'. Remember
- to commit the changes to SVN.
-
- 2. Converting Translations to XML
-
- Simply pulling translations from the Transifex server is not
- enough. To make use of the translations, you will need to convert
+ To make use of the translations, you will need to convert
the .po files to .xml files.
Start by checking out the following directory:
@@ -291,10 +271,8 @@
You can use the following script to convert translated .po files to .xml files:
https://svn.torproject.org/vidalia/vidalia/trunk/src/vidalia/help/content/p…
- NOTE: You need to have the package 'po4a' installed before running the script.
+ 2. Creating/Updating Translation Template Files
- 3. Creating/Updating Translation Template Files
-
To create a .pot file from an .xml file, run the following
command:
@@ -305,17 +283,6 @@
in 'orbot/po/templates' as a template. Remember to commit the
file to SVN.
- 4. Adding New Translation Resources to Transifex
-
- To add new translation resources to Transifex, open up
- '.tx/config' and create entries for the new resources. Use an
- existing entry as a template. Remember to commit the file to SVN.
-
- 5. Pushing Files to the Transifex Server
-
- To push new/updated source files or translations to the
- Transifex server, simply run 'tx push' with either '-s' or '-t'.
-
Torbutton and Torbutton-alpha:
The Transifex configuration file, source file and translations can
@@ -326,17 +293,11 @@
You will also need: https://gitweb.torproject.org/torbutton.git/.
- 1. Pulling Translations from the Transifex Server
+ 1. Converting Translations to Mozilla Files
- To pull new translations from the server, cd to the 'po'
- directory and run 'tx pull'. Remember to commit the changes to
- SVN.
-
- 2. Converting Translations to Mozilla Files
-
# TODO: document how to convert translations to mozilla files.
- 3. Creating/Updating Translation Template Files
+ 2. Creating/Updating Translation Template Files
If you made changes to strings in Torbutton, you need to rebuild
the templates in the 'po/templates' directory. This is done with
@@ -345,53 +306,32 @@
$ moz2po -P -i src/chrome/locale/en/ -o /path/to/po/templates
- 4. Adding New Translation Resources to Transifex
-
- To add new translation resources to Transifex, open up
- 'po/.tx/config' and create entries for the new resources. Use an
- existing entry as a template. Remember to commit the file to SVN.
-
- 5. Pushing Files to the Transifex Server
-
- To push new/updated source files or translations to the Transifex
- server, cd to the 'po' directory and run 'tx push' with either
- '-s' or '-t'.
-
Torcheck:
The Transifex configuration file, source file and translations can
be found here:
https://svn.torproject.org/svn/translation/trunk/projects/torcheck/.
- 1. Pulling Translations from the Transifex Server
+ You will also need the TorCheck subversion repository:
+ https://svn.torproject.org/svn/check/trunk/.
- To pull new translations from the server, cd to the 'po'
- directory and run 'tx pull'. Remember to commit the changes to
- SVN.
+ 1. Updating the Translations on the Server Hosting Torcheck
- 2. Updating the Translations on the Server Hosting Torcheck
-
After pulling new translations from Transifex, someone will have
to put the .po files on the server where Torcheck is running so
that TorCheck.py can find them.
- 3. Creating/Updating Translation Template Files
+ 2. Creating/Updating Translation Template Files
- # TODO: document this as well
- (xgettext cgi-bin/TorCheck.py -dTorCheck -oi18n/TorCheck.pot)
-
- 4. Adding New Translation Resources to Transifex
+ To update the translation template file for TorCheck, run the
+ following command inside the TorCheck directory:
- To add new translation resources to Transifex, open up
- 'po/.tx/config' and create entries for the new resources. Use an
- existing entry as a template. Remember to commit the file to SVN.
+ $ xgettext cgi-bin/TorCheck.py -dTorCheck -oi18n/TorCheck.pot
- 5. Pushing Files to the Transifex Server
+ You will then have to copy TorCheck.pot to
+ translation/projects/torcheck/po/templates and commit the
+ changes.
- To push new/updated source files or translations to the Transifex
- server, cd to the 'po' directory and run 'tx push' with either
- '-s' or '-t'.
-
The Website:
The Transifex configuration file, source file and translations can
@@ -401,50 +341,61 @@
You will also need to check out the wml files for the website:
https://svn.torproject.org/svn/website/trunk/.
- 1. Pulling Translations from the Transifex Server
+ 1. Converting Translations to WML
- To pull new translations from the server, cd to the 'po'
- directory in the translation module and run 'tx pull'. Remember
- to commit the changes to SVN.
+ To make use of the translations, you will need to convert the .po
+ files to .wml files.
- 2. Converting Translations to WML
-
- Simply pulling translations from the Transifex server is not
- enough. To make use of the translations, you will need to convert
- the .po files to .wml files.
-
You can use the 'po2wml.sh' script inside the website module to
convert translated .po files to .wml. Make sure that you check
out the two subversion modules in the same directory, so that you
have (for example) ~/tor/website and ~/tor/translation.
- NOTE: You need to have the package 'po4a' installed before running the script.
+ 2. Creating/Updating Translation Template Files
- 3. Creating/Updating Translation Template Files
-
To create a .pot file from a new .wml file, or to update existing
.pot files when one or more website files are updated, run the
- 'wml2po.sh' script. Make sure that you check out the two
- subversion modules in the same directory, so that you have (for
- example) ~/tor/website and ~/tor/translation.
+ 'wml2po.sh' script. This script will update the headers of the
+ .pot files as well.
- 4. Adding New Translation Resources to Transifex
+ Make sure that you check out the two subversion modules in the
+ same directory, for example ~/tor/website and ~/tor/translation.
- To add new translation resources to Transifex, open up
- 'po/.tx/config' and create entries for the new resources. Use an
- existing entry as a template. Remember to commit the file to SVN.
-
- 5. Pushing Files to the Transifex Server
-
- To push new/updated source files or translations to the Transifex
- server, cd to the 'po' directory and run 'tx push' with either
- '-s' or '-t'.
-
Tor Manual Pages:
The Transifex configuration file, source file and translations can
be found here:
https://svn.torproject.org/svn/translation/trunk/projects/manpages/
- 1. Pulling Translations from the Transifex Server
+ You will also need to check out the Tor git repository:
+ git://git.torproject.org/tor/.
+ And the website: https://svn.torproject.org/svn/website/trunk/.
+
+ 1. Converting Translations to Text
+
+ To make use of the translations, you will need to convert the .po
+ files to .txt files.
+
+ You can use the 'po2man.sh' script inside the manpages directory
+ (located in the website subversion module) to convert translated
+ .po files to .txt. This script will also create the files
+ necessary to include translations of tor-manual-dev.html.en when
+ the website is built.
+
+ Make sure that you clone and check out the git and subversion
+ repositories in the same directory, for example ~/tor/tor,
+ ~/tor/website and ~/tor/translation.
+
+ 2. Creating/Updating Translation Template Files
+
+ To create a .pot file from a new .txt file, or to update existing
+ .pot files when one or more of the man pages are updated, run the
+ following command (for each file you want to convert):
+
+ $ po4a-gettextize -f text -m file.txt -p file.pot
+
+ You will need to edit the header of the .pot file once it has
+ been created. Use the header from one of the existing .pot files
+ in 'orbot/po/templates' as a template. Remember to commit the
+ file to SVN.
1
0

03 Mar '11
Author: runa
Date: 2011-03-03 13:39:36 +0000 (Thu, 03 Mar 2011)
New Revision: 24296
Added:
website/trunk/docs/ar/
website/trunk/docs/ar/tor-manual-dev.wml
website/trunk/docs/fr/
website/trunk/docs/fr/tor-manual-dev.wml
website/trunk/docs/my/
website/trunk/docs/my/tor-manual-dev.wml
website/trunk/docs/pl/
website/trunk/docs/pl/tor-manual-dev.wml
website/trunk/manpages/
website/trunk/manpages/ar/
website/trunk/manpages/ar/tor-resolve.1.txt
website/trunk/manpages/ar/tor.1.txt
website/trunk/manpages/ar/torify.1.txt
website/trunk/manpages/de/
website/trunk/manpages/de/tor-resolve.1.txt
website/trunk/manpages/eo/
website/trunk/manpages/eo/tor-resolve.1.txt
website/trunk/manpages/es/
website/trunk/manpages/es/tor-resolve.1.txt
website/trunk/manpages/es/torify.1.txt
website/trunk/manpages/et/
website/trunk/manpages/et/tor-resolve.1.txt
website/trunk/manpages/fr/
website/trunk/manpages/fr/tor-resolve.1.txt
website/trunk/manpages/fr/tor.1.txt
website/trunk/manpages/fr/torify.1.txt
website/trunk/manpages/it/
website/trunk/manpages/it/tor-resolve.1.txt
website/trunk/manpages/it/torify.1.txt
website/trunk/manpages/my/
website/trunk/manpages/my/tor-resolve.1.txt
website/trunk/manpages/my/tor.1.txt
website/trunk/manpages/my/torify.1.txt
website/trunk/manpages/pl/
website/trunk/manpages/pl/tor-resolve.1.txt
website/trunk/manpages/pl/tor.1.txt
website/trunk/manpages/pl/torify.1.txt
website/trunk/manpages/po2man.sh
website/trunk/manpages/ro/
website/trunk/manpages/ro/tor-resolve.1.txt
website/trunk/manpages/ru/
website/trunk/manpages/ru/tor-resolve.1.txt
website/trunk/manpages/ru/torify.1.txt
website/trunk/manpages/tor-manual-dev.wml
website/trunk/manpages/ur/
website/trunk/manpages/ur/tor-resolve.1.txt
website/trunk/manpages/zh-cn/
website/trunk/manpages/zh-cn/tor-resolve.1.txt
Log:
translated man pages for the website
Added: website/trunk/docs/ar/tor-manual-dev.wml
===================================================================
--- website/trunk/docs/ar/tor-manual-dev.wml (rev 0)
+++ website/trunk/docs/ar/tor-manual-dev.wml 2011-03-03 13:39:36 UTC (rev 24296)
@@ -0,0 +1,30 @@
+## translation metadata
+# Revision: $Revision: 23689 $
+
+#include "head.wmi" TITLE="Tor Project: manual"
+
+# Translators shouldn't translate this file, unless they want
+# to translate the whole man page too.
+<div id="content" class="clearfix">
+ <div id="breadcrumbs">
+ <a href="<page index>">Home » </a>
+ <a href="<page docs/documentation>">Documentation » </a>
+ <a href="<page docs/tor-doc-osx>">Tor Dev Manual</a>
+ </div>
+ <div id="maincol">
+ <:
+ die "Missing git clone" unless -d "$(TORGIT)";
+ my $man = `cat manpages/ar/tor.1.txt | asciidoc -d manpage -s -o - -`;
+ die "No manpage because of asciidoc error or file not available from git" unless $man;
+ print $man;
+ :>
+ </div>
+ <!-- END MAINCOL -->
+ <div id = "sidecol">
+#include "side.wmi"
+#include "info.wmi"
+ </div>
+ <!-- END SIDECOL -->
+</div>
+<!-- END CONTENT -->
+#include <foot.wmi>
Added: website/trunk/docs/fr/tor-manual-dev.wml
===================================================================
--- website/trunk/docs/fr/tor-manual-dev.wml (rev 0)
+++ website/trunk/docs/fr/tor-manual-dev.wml 2011-03-03 13:39:36 UTC (rev 24296)
@@ -0,0 +1,30 @@
+## translation metadata
+# Revision: $Revision: 23689 $
+
+#include "head.wmi" TITLE="Tor Project: manual"
+
+# Translators shouldn't translate this file, unless they want
+# to translate the whole man page too.
+<div id="content" class="clearfix">
+ <div id="breadcrumbs">
+ <a href="<page index>">Home » </a>
+ <a href="<page docs/documentation>">Documentation » </a>
+ <a href="<page docs/tor-doc-osx>">Tor Dev Manual</a>
+ </div>
+ <div id="maincol">
+ <:
+ die "Missing git clone" unless -d "$(TORGIT)";
+ my $man = `cat manpages/fr/tor.1.txt | asciidoc -d manpage -s -o - -`;
+ die "No manpage because of asciidoc error or file not available from git" unless $man;
+ print $man;
+ :>
+ </div>
+ <!-- END MAINCOL -->
+ <div id = "sidecol">
+#include "side.wmi"
+#include "info.wmi"
+ </div>
+ <!-- END SIDECOL -->
+</div>
+<!-- END CONTENT -->
+#include <foot.wmi>
Added: website/trunk/docs/my/tor-manual-dev.wml
===================================================================
--- website/trunk/docs/my/tor-manual-dev.wml (rev 0)
+++ website/trunk/docs/my/tor-manual-dev.wml 2011-03-03 13:39:36 UTC (rev 24296)
@@ -0,0 +1,30 @@
+## translation metadata
+# Revision: $Revision: 23689 $
+
+#include "head.wmi" TITLE="Tor Project: manual"
+
+# Translators shouldn't translate this file, unless they want
+# to translate the whole man page too.
+<div id="content" class="clearfix">
+ <div id="breadcrumbs">
+ <a href="<page index>">Home » </a>
+ <a href="<page docs/documentation>">Documentation » </a>
+ <a href="<page docs/tor-doc-osx>">Tor Dev Manual</a>
+ </div>
+ <div id="maincol">
+ <:
+ die "Missing git clone" unless -d "$(TORGIT)";
+ my $man = `cat manpages/my/tor.1.txt | asciidoc -d manpage -s -o - -`;
+ die "No manpage because of asciidoc error or file not available from git" unless $man;
+ print $man;
+ :>
+ </div>
+ <!-- END MAINCOL -->
+ <div id = "sidecol">
+#include "side.wmi"
+#include "info.wmi"
+ </div>
+ <!-- END SIDECOL -->
+</div>
+<!-- END CONTENT -->
+#include <foot.wmi>
Added: website/trunk/docs/pl/tor-manual-dev.wml
===================================================================
--- website/trunk/docs/pl/tor-manual-dev.wml (rev 0)
+++ website/trunk/docs/pl/tor-manual-dev.wml 2011-03-03 13:39:36 UTC (rev 24296)
@@ -0,0 +1,30 @@
+## translation metadata
+# Revision: $Revision: 23689 $
+
+#include "head.wmi" TITLE="Tor Project: manual"
+
+# Translators shouldn't translate this file, unless they want
+# to translate the whole man page too.
+<div id="content" class="clearfix">
+ <div id="breadcrumbs">
+ <a href="<page index>">Home » </a>
+ <a href="<page docs/documentation>">Documentation » </a>
+ <a href="<page docs/tor-doc-osx>">Tor Dev Manual</a>
+ </div>
+ <div id="maincol">
+ <:
+ die "Missing git clone" unless -d "$(TORGIT)";
+ my $man = `cat manpages/pl/tor.1.txt | asciidoc -d manpage -s -o - -`;
+ die "No manpage because of asciidoc error or file not available from git" unless $man;
+ print $man;
+ :>
+ </div>
+ <!-- END MAINCOL -->
+ <div id = "sidecol">
+#include "side.wmi"
+#include "info.wmi"
+ </div>
+ <!-- END SIDECOL -->
+</div>
+<!-- END CONTENT -->
+#include <foot.wmi>
Added: website/trunk/manpages/ar/tor-resolve.1.txt
===================================================================
--- website/trunk/manpages/ar/tor-resolve.1.txt (rev 0)
+++ website/trunk/manpages/ar/tor-resolve.1.txt 2011-03-03 13:39:36 UTC (rev 24296)
@@ -0,0 +1,49 @@
+// حقوق الطبع والنشر (c) مشروع تور, شركة.
+// انظر الترخيص للحصول على معلومات الترخيص
+// هذا ملف اسييدوك يستخدم لانشاء مرجع manpage/html.
+// تعلم الأسييدوك في http://www.methods.co.nz/asciidoc/userguide.html
+تور-ريسولف(1)
+======
+بيتر بالفريدر
+
+الاسم
+----
+تور-ريسولف - يقوم بحل اسم المستضيف الى عنوان IP عن طريق تور
+
+الخلاصة
+--------
+**تور-ريسولف** [-4|-5] [-v] [-x] __hostname__ [__sockshost__[:__socksport__]]
+
+الوصف
+-----------
+**تور-ريسولف** برنامج نصي بسيط للاتصال بوكيل SOCKS الذي يعرف عن
+أمر SOCKS RESOLVE, يسلّمه اسم المستضيف, ويقوم بإسترجاع عنوان IP.
+
+By default, **tor-resolve** uses the Tor server running on 127.0.0.1 on
+SOCKS port 9050. If this isn't what you want, you should specify an
+explicit __sockshost__ and/or __socksport__ on the command line.
+
+الخيارات
+-------
+**-v**::
+ تظهر المخرجات المطوّلة.
+
+**-x**::
+ إجراء عمليات بحث عكسية: الحصول على سجل PTR لعنوان (IPv4).
+
+**-5**::
+ إستخدام بروتوكول SOCKS5. (افتراضيا)
+
+**-4**::
+ استخدام بروتوكول SOCKS4a بدلا من بروتوكول SOCKS5 الافتراضي. لا يدعم
+ نظام أسماء النطاق (DNS) العكسي.
+
+أنظر ايضا
+--------
+**تور**(1), **توريفاي**(1). +
+
+أنظر doc/socks-extensions.txt في حزمة تور للحصول على تفاصيل البروتوكول.
+
+المؤلفون
+-------
+Roger Dingledine <arma(a)mit.edu>, Nick Mathewson <nickm(a)alum.mit.edu>.
Added: website/trunk/manpages/ar/tor.1.txt
===================================================================
--- website/trunk/manpages/ar/tor.1.txt (rev 0)
+++ website/trunk/manpages/ar/tor.1.txt 2011-03-03 13:39:36 UTC (rev 24296)
@@ -0,0 +1,1498 @@
+// حقوق الطبع والنشر (c) مشروع تور, شركة.
+// انظر الترخيص للحصول على معلومات الترخيص
+// هذا ملف اسييدوك يستخدم لانشاء مرجع manpage/html.
+// تعلم الأسييدوك في http://www.methods.co.nz/asciidoc/userguide.html
+تور(1)
+======
+
+الاسم
+----
+تور - جهاز توجيه (راوتر) الجيل الثاني من اونيون
+
+
+الخلاصة
+--------
+**tor** [__OPTION__ __value__]...
+
+الوصف
+-----------
+__تور__ هو خدمة اتصالات اخفاء الهوية المهيأ للاتصال. يقوم المستخدمون باختيار
+مسار لمصدر التوجيه من خلال مجموعة من العقد ومداولة "الدائرة الظاهرية" عبر
+الشبكة, والتي من خلالها تعرف كل عقدة من تسبقها ومن تليها, ولكن ليس
+غيرهم. تكون الحركة المتدفقة اسفل الدائرة مغلفة من قبل مفتاح متماثل في كل
+عقدة, والتي تكشف عن عقدة المصب. +
+
+بشكل اساسي __تور__ يوفر شبكة موزعة من الخوادم ("راوترات اونيون"). يعمل
+المستخدمون على ارتداد تيارات برنامج التعاون الفني (TCP) الخاصة بهم -- حركة
+المرور على الشبكة, بروتوكول نقل الملفات (ftp), بروتوكول الهيكل الآمن (ssh)
+وما الى ذلك -- حول الراوترات, المتلقين والمراقبين, وحتى الراوترات نفسها
+تواجه صعوبة في تتبع مصدر التيار.
+
+خيارات
+-------
+**-h**, **-help**::
+ تعرض رسالة مساعدة قصيرة ثم الخروج.
+
+**-f** __FILE__::
+ ملف يحتوي على مزيد من ازواج "option value". (افتراضيا: @CONFDIR@/torrc)
+
+**--hash-password**::
+ انشاء كلمة مرور مجزأة للوصول لمنفذ التحكم.
+
+**--list-fingerprint**::
+ انشاء مفاتيحك واخراج اسم الشهرة والبصمة الخاصة بك.
+
+**--verify-config**::
+ تحقق بأن ملف التكوين صالحا.
+
+**--nt-service**::
+ **--service [install|remove|start|stop]** تدير خدمة Windows
+NT/2000/XP لتور. التعليمات الحالية يمكن إيجادها في
+ https://wiki.torproject.org/noreply/TheOnionRouter/TorFAQ#WinNTService
+
+**--list-torrc-options**::
+ إدراج جميع الخيارات الصالحة.
+
+**--version**::
+ عرض اصدار تور ثم الخروج.
+
+**--quiet**::
+ لا تقم بتشغيل تور مع سجل وحدة التحكم مالم يطلب صراحة القيام بذلك.
+ (افتراضيا, يبدأ تور بتسجيل رسائل على مستوى "notice" او اعلى
+ الى وحدة التحكم, حتى يتم تحليل التكوين الخاص به.)
+
+Other options can be specified either on the command-line (--option
+ value), or in the configuration file (option value or option "value").
+ Options are case-insensitive. C-style escaped characters are allowed inside
+ quoted values. Options on the command line take precedence over
+ options found in the configuration file, except indicated otherwise. To
+ split one configuration entry into multiple lines, use a single \ before
+ the end of the line. Comments can be used in such multiline entries, but
+ they must start at the beginning of a line.
+
+**BandwidthRate** __N__ **bytes**|**KB**|**MB**|**GB**::
+ A token bucket limits the average incoming bandwidth usage on this node to
+ the specified number of bytes per second, and the average outgoing
+ bandwidth usage to that same value. If you want to run a relay in the
+ public network, this needs to be _at the very least_ 20 KB (that is,
+ 20480 bytes). (Default: 5 MB)
+
+**BandwidthBurst** __N__ **bytes**|**KB**|**MB**|**GB**::
+ يحد من الحجم الاقصى لدلو الرمز المميز (المعروف ايضا باسم الاندفاع) لعدد معين
+ من البايتات في كل اتجاه. (افتراضيا: 10 ميجا بايت)
+
+**MaxAdvertisedBandwidth** __N__ **bytes**|**KB**|**MB**|**GB**::
+ اذا تم الضبط, لن نعلن أكثر من مقدار عرض النطاق الترددي هذا
+ لمعدل BandwidthRate الخاص بنا. مشغلي الخادم الذين يريدون تقليل عدد العملاء
+ الذين يطلبون بناء دوائر من خلالهم (حيث ان هذا يتناسب مع
+ معدل عرض النطاق الترددي المعلن عنه) يمكن ان تؤدي بالتالي الى تقليل الطلب على وحدة المعالجة المركزية (CPU) في الخادم الخاص بهم
+ دون التأثير على أداء الشبكة.
+
+**RelayBandwidthRate** __N__ **bytes**|**KB**|**MB**|**GB**::
+ If not 0, a separate token bucket limits the average incoming bandwidth
+ usage for \_relayed traffic_ on this node to the specified number of bytes
+ per second, and the average outgoing bandwidth usage to that same value.
+ Relayed traffic currently is calculated to include answers to directory
+ requests, but that may change in future versions. (Default: 0)
+
+**RelayBandwidthBurst** __N__ **bytes**|**KB**|**MB**|**GB**::
+ If not 0, limit the maximum token bucket size (also known as the burst) for
+ \_relayed traffic_ to the given number of bytes in each direction.
+ (Default: 0)
+
+**PerConnBWRate** __N__ **bytes**|**KB**|**MB**|**GB**::
+ اذا تم الضبط, قم بفصل حد المعدل لكل اتصال من غير المرحّل.
+ لن تحتاج الى تغيير هذه القيمة ابدا, حيث ان قيمة اتساع الشبكة يتم
+ نشرها بالاجماع وسوف يقوم المرحّل الخاص بك باستخدام تلك القيمة. (افتراضيا: 0)
+
+**PerConnBWBurst** __N__ **bytes**|**KB**|**MB**|**GB**::
+ اذا تم الضبط, قم بفصل حد المعدل لكل اتصال من غير المرحّل.
+ لن تحتاج الى تغيير هذه القيمة ابدا, حيث ان قيمة اتساع الشبكة يتم
+ نشرها بالاجماع وسوف يقوم المرحّل الخاص بك باستخدام تلك القيمة. (افتراضيا: 0)
+
+**ConnLimit** __NUM__::
+ The minimum number of file descriptors that must be available to the Tor
+ process before it will start. Tor will ask the OS for as many file
+ descriptors as the OS will allow (you can find this by "ulimit -H -n").
+ If this number is less than ConnLimit, then Tor will refuse to start. +
+ +
+ You probably don't need to adjust this. It has no effect on Windows
+ since that platform lacks getrlimit(). (Default: 1000)
+
+**ConstrainedSockets** **0**|**1**::
+ اذا تم الضبط, سوف يخبر تور النواة بمحاولة تقليص التخزين المؤقت لجميع
+ المقابس للحجم المحدد في **ConstrainedSockSize**. هذا مفيد
+ للخوادم الظاهرية والبيئات الاخرى التي قد يكون فيها التخزين المؤقت لنظام مستوى بروتوكول التعاون الفني (TCP)
+ محدودا. اذا كنت تستخدم خادما ظاهريا وواجهتك الرسالة "Error
+creating network socket: No buffer space available", فأنت
+ على الارجح تعاني من هذه المشكلة. +
+ +
+ الحل الافضل هو جعل الاداري يزيد من تجمع التخزين المؤقت
+ للمستضيف نفسه عن طريق /proc/sys/net/ipv4/tcp_mem او وسيلة موازية;
+ خيار التكوين هذا يكون الملاذ الثاني. +
+ +
+ يجب عدم استخدام خيار DirPort ايضا اذا كان التخزين المؤقت لبروتوكول التعاون الفني (TCP) محدودا. طلبات دليل
+ التخزين المؤقت تستهلك مقابس اضافية مما يؤدي الى تفاقم
+ المشكلة. +
+ +
+ يجب عليك **عدم** تمكين هذه الميزة الا اذا كنت تواجه المشكلة "no buffer
+space available". الحد من التخزين المؤقت لبروتوكول التعاون الفني (TCP) يؤثر على حجم النافذة لتيار
+ بروتوكول التعاون الفني (TCP) وسوف يقلل الانتاجية بما يتناسب مع الوقت ذهابا وايابا
+ على مسارات طويلة. (افتراضيا: 0.)
+
+**ConstrainedSockSize** __N__ **bytes**|**KB**::
+ عند تمكين **ConstrainedSockets** فإن التخزين المؤقت للاستقبال والارسال
+ لجميع المقابس سوف يتم ضبطها لهذا الحد. يجب ان تكون قيمة بين 2048 و
+262144, في مضاعفات 1024 بايت. يوصى بالافتراضي 8192.
+
+**ControlPort** __منفذ__::
+ اذا تم الضبط, سوف يقوم تور بقبول الاتصالات على هذا المنفذ والسماح لتلك
+ الاتصالات بالتحكم بعملية تور باستخدام بروتوكول التحكم بتور
+ (الموصوف في ملف تكست control-spec.txt). ملاحظة: مالم تحدد أيضا واحد من
+ **HashedControlPassword** او **CookieAuthentication**, ضبط هذا الخيار سوف
+ يتسبب لتور بالسماح لأي عملية في المستضيف المحلي للتحكم به. هذا
+ الخيار مطلوب في العديد من متحكمات تور; المعظم يستخدم القيمة 9051.
+
+**ControlListenAddress** __IP__[:__منفذ__]::
+ ربط وحدة تحكم المستمع الى هذا العنوان. اذا قمت بتحديد منفذ, أربط
+ لهذا المنفذ بدلا من المحدد في ControlPort. نحن نوصيك
+ بشدة بترك هذا وحده الا اذا كنت تعرف ما تفعله,
+ حيث ان اعطاء المهاجمين امكانية الوصول الى وحدة تحكم المستمع الخاص بك هو امر
+ خطير للغاية. (افتراضيا: 127.0.0.1) يمكن تحديد هذا التوجيه عدة
+ لربطه بعدة عناوين/منافذ.
+
+**ControlSocket** __مسار__::
+ مثل ControlPort, لكن يستمع على مقبس نطاق يونيكس (Unix) بدلا من مقبس بروتوكول
+ التعاون الفني (TCP). (انظمة يونيكس (Unix) والانظمة الشبيهة به فقط.)
+
+**HashedControlPassword** __كلمة_مرور_مجزّأة__::
+ لا تسمح بأية اتصالات على منفذ التحكم الا اذا علمت العملية
+ الاخرى كلمة المرور والتي تجزئتها احادية الاتجاه هي __كلمة مرور_مجزأة__. يمكنك
+ حساب تجزئة كلمة مرور عن طريق تشغيل "tor --hash-password
+ __password__". يمكنك توفير العديد من كلمات المرور المقبولة باستخدام اكثر
+ من خط HashedControlPassword واحد.
+
+**CookieAuthentication** **0**|**1**::
+ اذا تم ضبط هذا الخيار الى 1, لا تسمح بأية اتصالات على منفذ التحكم
+ الا اذا علمت عملية الاتصال بمحتويات الملف المسمى
+ "control_auth_cookie", والذي سوف يعمل تور على انشائه في دليل البيانات الخاص به. طريقة
+ المصادقة هذه يجب استخدامها فقط على انظمة ذات حماية جيدة لنظام
+ الملفات. (افتراضيا: 0)
+
+**CookieAuthFile** __مسار__::
+ اذا تم الضبط, هذا الخيار يتجاوز الموقع الافتراضي واسم الملف
+ لملف تعريف الارتباط في تور. (أنظر CookieAuthentication أعلاه.)
+
+**CookieAuthFileGroupReadable** **0**|**1**|__اسم_مجموعة__::
+ اذا تم ضبط الخيار الى 0, لا تسمح لمجموعة filesystem بقراءة ملف
+ تعريف الارتباط. اذا تم ضبط الخيار الى 1, اجعل ملف تعريف الارتباط مقروءا من قبل هوية المجموعة الافتراضية (GID). [جعل الملف مقروءا من قبل مجموعة اخرى لم يتم تنفيذه
+ بعد; يرجى ابلاغنا اذا ما كنت في حاجة لهذا لسبب ما.] (افتراضيا: 0).
+
+**DataDirectory** __DIR__::
+ تخزين البيانات التي تعمل في DIR (افتراضيا: @LOCALSTATEDIR@/lib/tor)
+
+**DirServer** [__اسم_مستعار__] [**flags**] __عنوان__:__بصمة__ __المنفذ__::
+ استخدم خادم توجيهي موثوق غير قياسي في العنوان المتوفر
+ والمنفذ, مع بصمة المفتاح المحدد. يمكن تكرار هذا الخيار
+ مرات عديدة لعدة خوادم توجيهية موثوقة. الاشارات
+ تكون مفصولة بمسافات وتحدد طبيعة السلطة لهذا الدليل
+ . بشكل افتراضي, كل سلطة هي مخولة من اجل دلائل("v2")-style
+ الحالية, مالم يتم اعطاء الاشارة "no-v2". اذا كانت الاشارة "v1" معطى
+ , سوف يقوم تور باستخدام هذا الخادم كسلطة لدلائل النمط القديم(v1)
+ كذلك. (وجهات الدليل فقط تهتم بذلك.) سوف يستخدم تور هذا الخادم كسلطة لاخفاء معلومات الخدمة اذا تم ضبط اشارة "hs"
+ , او اذا تم ضبط اشارة "v1" واشارة "no-hs" **لم** تضبط.
+ سوف يستخدم تور هذه السلطة كدليل موثق للجسر اذا تم ضبط اشارة
+ "bridge". اذا اعطيت الاشارة "orport=**port**", سوف يقوم تور بإستخدام
+ المنفذ المعطى عند فتح انفاق مشفرة الى dirserver. أخيرا, اذا
+ أعطيت الاشارة "v3ident=**fp**", يكون dirserver هو v3 سلطة الدليل
+ الذي يكون مفتاح التوقيع طويل المدى v3 لديه البصمة **fp**. +
+ +
+ اذا لم يكن خط **dirserver** معطى, سوف يستخدم تور خوادم الدليل
+ الافتراضية. ملاحظة: يهدف هذا الخيار الى انشاء شبكة تور الخاصة
+ مع السلطات التوجيهية الخاصة به. اذا قمت بإستخدامه, سوف تكون
+ مميزا عن غيرك من المستخدمين, لانك لن تصدق نفس
+ السلطات التي يعملونها.
+
+**AlternateDirAuthority** [__اسم_مستعار__] [**flags**] __عنوان__:__بصمة__ __المنفذ__ +
+
+**AlternateHSAuthority** [__اسم مستعار__] [**flags**] __عنوان__:__بصمة__ __المنفذ__ +
+
+**AlternateBridgeAuthority** [__اسم مستعار__] [**flags**] __عنوان__:__بصمة__ __ المنفذ__::
+ مثل DirServer, لكن يستبدل بشكل اقل للسلطات التوجيهية الافتراضية. استخدام
+ AlternateDirAuthority يؤدي الى استبدال سلطات تور التوجيهية الافتراضية, لكن
+ يترك سلطات الخدمة الخفية وسلطات الجسر في مكانها.
+ وبالمثل, استخدام AlternateHSAuthority يؤدي الى استبدال سلطات الخدمة الخفية
+ الافتراضية, لكن ليس السلطات التوجيهية او سلطات الجسر.
+
+**DisableAllSwap** **0**|**1**::
+ اذا تم الضبط الى 1, سوف يحاول تور قفل جميع صفحات الذاكرة الحالية والمستقبلية,
+ حتى لا تمتليء الذاكرة بالصفحات. Windows, OS X و Solaris تكون حاليا
+ غير مدعومة. نحن نعتقد ان هذه الميزة تعمل على توزيعاتGnu/Linux
+ الحديثة, وأنه ينبغي ان تعمل على أنظمة *BSD (غير مجربة). هذا
+ الخيار يتطلب منك تشغيل تور الخاص بك كمصدر, ويجب عليك استخدام خيار
+ **User** للحد بشكل صحيح من امتيازات تور. (افتراضيا: 0)
+
+**FetchDirInfoEarly** **0**|**1**::
+ اذا تم الضبط الى 1, سوف يقوم تور دائما بجلب معلومات الدليل مثل مخازن
+ الدليل الآخر, حتى لو لم تفي المعايير الطبيعية للجلب
+ المبكر. يجب على المستخدمين العاديين تركه مغلقا. (افتراضيا: 0)
+
+**FetchDirInfoExtraEarly** **0**|**1**::
+ اذا تم الضبط الى 1, سوف يقوم تور بجلب معلومات الدليل قبل مخازن الدليل
+ الآخر. سوف يحاول تنزيل معلومات الدليل الاقرب الى
+ بدء فترة الإجماع. يجب على المستخدمين العاديين تركه مغلقا.
+ (افتراضيا: 0)
+
+**FetchHidServDescriptors** **0**|**1**::
+ اذا تم الضبط الى 0, لن يعمل تور على جلب أي من واصفات الخدمة الخفية من
+ الدلائل الملتقية. هذا الخيار مفيد فقط اذا كنت تستخدم تور
+ للتحكم والذي يعالج جلب الخدمة الخفية لك. (افتراضيا: 1)
+
+**FetchServerDescriptors** **0**|**1**::
+ اذا تم الضيط الى 0, لن يقوم تور بجلب أية ملخصات لحالة الشبكة او واصفات الخادم
+ من خوادم الدليل. هذا الخيار مفيد فقط اذا
+ كنت تستخدم تور للتحكم والذي يعالج جلب الدليل لك.
+ (افتراضيا: 1)
+
+**FetchUselessDescriptors** **0**|**1**::
+ اذا تم الضبط الى 1, سوف يقوم تور بجلب جميع الواصفات غير المتقادمة من
+ السلطات التي علمت عنها. والا, سوف يقوم بتجنب الواصفات عديمة
+ الفائدة, على سبيل المثال للراوترات التي لا تعمل. هذا الخيار يكون
+ مفيداً اذا كنت تستخدم البرنامج النصي المساهم "exitlist" لتعداد عقد تور
+ التي تخرج الى عناوين معينة. (افتراضيا: 0)
+
+**HTTPProxy** __المستضيف__[:__منفذ__]::
+ سوف يقوم تور بعمل جميع طلبات الدليل الخاصة به من خلال host:port هذا (او host:80
+ اذا لم يكن المنفذ محددا), بدلا من وصله مباشرة الى أي من خوادم
+ الدليل.
+
+**HTTPProxyAuthenticator** __اسم المستخدم:كلمة المرور__::
+ اذا تم التعريف, سوف يقوم تور باستخدام اسم المستخدم:كلمة المرور هذه لمصادقة وكيل بروتوكول نقل النص التشعبيHTTP(
+) الرئيسي, كما هو الحال في RFC 2617. هذا هو الشكل الوحيد حاليا لمصادقة وكيل بروتوكول نقل النص التشعبيHTTP(
+) الذي يدعمه تور; لا تتردد في تقديم تصحيح (patch) اذا كنت تريد ذلك
+ لدعم الآخرين.
+
+**HTTPSProxy** __المستضيف__[:__منفذ__]::
+ سوف يقوم تور بعمل جميع اتصالات OR (SSL) الخاصه به من خلال host:port هذا (او host:443 اذا لم يكن المنفذ محددا), عن طريق HTTP CONNECT بدلا من الوصل
+ الى الخوادم مباشرة. قد تحتاج الى ان تضبط **FascistFirewall** للحد من
+ مجموعة المنافذ التي قد تحاول الاتصال بها, اذا كان وكيل بروتوكول نقل النص التشعبي الآمن (HTTPS) الخاص بك يسمح فقط
+ بالإتصال بمنافذ معينة.
+
+**HTTPSProxyAuthenticator** __اسم المستخدم:كلمة المرور__::
+ اذا تم التعريف, سوف يقوم تور باستخدام اسم المستخدم:كلمة المرور هذه لمصادقة وكيل بروتوكول نقل النص التشعبي الآمنHTTPS(
+) الرئيسي, كما هو الحال في RFC 2617. هذا هو الشكل الوحيد حاليا لمصادقة وكيل بروتوكول نقل النص التشعبي الآمنHTTPS(
+)( الذي يدعمه تور; لا تتردد في تقديم تصحيح (patch) اذا كنت تريد ذلك
+ لدعم الآخرين.
+
+**Socks4Proxy** __المستضيف__[:__منفذ__]::
+ سوف يقوم تور بعمل جميع اتصالات OR من خلال وكيلSOCKS 4 على host:port
+ (او host:1080 اذا لم يكن المنفذ محددا).
+
+**Socks5Proxy** __المستضيف__[:__منفذ__]::
+ سوف يقوم تور بعمل جميع اتصالات OR من خلال وكيل SOCKS 5 على host:port
+ (او host:1080 اذا لم يكن المنفذ محددا).
+
+**Socks5ProxyUsername** __اسم المستخدم__ +
+
+**Socks5ProxyPassword** __كلمة المرور__::
+ اذا تم التعريف, قم بالمصادقة لخادم SOCKS 5 باستخدام اسم المستخدم وكلمة المرور
+ وفقا الى RFC 1929. يجب ان يكون كلا من اسم المستخدم وكلمة المرور بين 1 و
+ 255 حرفا.
+
+**KeepalivePeriod** __NUM__::
+ للحفاظ على جدران الحماية من الاتصالات المنتهية الصلاحية, ارسل خلية keepalive مبطنة
+ في كل ثانية معدودة بشأن الاتصالات المفتوحة والتي هي قيد الاستخدام. اذا لم يكن لدى الاتصال
+ دوائر مفتوحة, سوف يغلق بعد ثواني معدودة من الخمول
+ بدلا من ذلك. (افتراضيا: 5 دقائق)
+
+**Log** __أدنى_خطورة__[-__أقصى_خطورة__] **stderr**|**stdout**|**syslog**::
+ ارسل جميع الرسائل بين __الخطورة الأدنى__ و __الخطورة الأقصى__ الى تيار
+ الاخراج القياسي, تيار العطل القياسي, او الى سجل النظام. (تكون قيمة
+ "syslog" مدعومة فقط في يونيكس -Unix-.) مستويات الخطورة المعترف بها هي
+ تصحيح, معلومات, إنذار, تحذير, و خطأ. ننصح بإستخدام "notice" في معظم الحالات,
+ حيث ان أي شيء اكثر من المسهب يمكن ان يوفر معلومات حساسة
+ للمهاجم الذي يحصل على السجلات. اذا اعطي مستوى خطورة واحد فقط, سوف يتم
+ ارسال جميع الرسائل لذلك المستوى او اعلى الى الوجهة المدرجة.
+
+**Log** __أدنى_خطورة__[-__أقصى_خطورة__] **file** __اسم_الملف__::
+ كما ذكر في الاعلى, لكن ارسل رسائل السجل الى اسم الملف المدرج. يمكن ان يظهر الخيار
+ "Log" اكثر من مرة واحدة في ملف التكوين.
+ يتم ارسال الرسائل الى جميع السجلات التي تتطابق مع
+ مستوى خطورتهم.
+
+**Log** **[**__domain__,...**]**__minSeverity__[-__maxSeverity__] ... **file** __FILENAME__ +
+
+**Log** **[**__domain__,...**]**__minSeverity__[-__maxSeverity__] ... **stderr**|**stdout**|**syslog** ::
+ As above, but select messages by range of log severity __and__ by a
+ set of "logging domains". Each logging domain corresponds to an area of
+ functionality inside Tor. You can specify any number of severity ranges
+ for a single log statement, each of them prefixed by a comma-separated
+ list of logging domains. You can prefix a domain with $$~$$ to indicate
+ negation, and use * to indicate "all domains". If you specify a severity
+ range without a list of domains, it matches all domains. +
+ +
+ This is an advanced feature which is most useful for debugging one or two
+ of Tor's subsystems at a time. +
+ +
+ The currently recognized domains are: general, crypto, net, config, fs,
+ protocol, mm, http, app, control, circ, rend, bug, dir, dirserv, or, edge,
+ acct, hist, and handshake. Domain names are case-insensitive. +
+ +
+ For example, "`Log [handshake]debug [~net,~mm]info notice stdout`" sends
+ to stdout: all handshake messages of any severity, all info-and-higher
+ messages from domains other than networking and memory management, and all
+ messages of severity notice or higher.
+
+**LogMessageDomains** **0**|**1**::
+ If 1, Tor includes message domains with each log message. Every log
+ message currently has at least one domain; most currently have exactly
+ one. This doesn't affect controller log messages. (Default: 0)
+
+**OutboundBindAddress** __IP__::
+ اجعل كافة الاتصالات الصادرة تنشأ من عنوان IP محدد. هذا
+ مفيد فقط عندما يكون لديك واجهات متعددة لشبكة الاتصال, وتريد جميع اتصالات تور الصادرة ان تستخدم واجهة واحدة. سوف يتم
+ تجاهل هذا الضبط للاتصالات الى عناوين الاسترجاع (127.0.0.0/8 و ::1).
+
+**PidFile** __ملف__::
+ عند بدء التشغيل, اكتب PID الخاص بنا للملف. عند الاغلاق النظيف, ازل
+ الملف.
+
+**ProtocolWarnings** **0**|**1**::
+ في الحالة 1, سوف يقوم تور بتسجيل حالات مختلفة من خطورة \'warn' للاطراف الاخرى التي لا
+ تتبع مواصفات تور. وإلا, قاموا بالتسجيل مع خطورة
+ \'info'. (افتراضيا: 0)
+
+**RunAsDaemon** **0**|**1**::
+ في الحالة 1, تقوم تور بتفريع وتشويه الخلفية. ليس لهذا الخيار أي تأثير على ويندوز; بدلا من ذلك يجب عليك استخدام خيار --خط أمر الخدمة.
+ (افتراضيا: 0)
+
+**LogTimeGranularity** __NUM__::
+ Set the resolution of timestamps in Tor's logs to NUM milliseconds.
+ NUM must be positive and either a divisor or a multiple of 1 second.
+ Note that this option only controls the granularity written by Tor to
+ a file or console log. Tor does not (for example) "batch up" log
+ messages to affect times logged by a controller, times attached to
+ syslog messages, or the mtime fields on log files. (Default: 1 second)
+
+**SafeLogging** **0**|**1**|**relay**::
+ يستطيع تور مسح السلاسل الحساسة المحتملة من رسائل السجل (على سبيل المثال:
+ العناوين) عن طريق استبدالهم بسلسلة [منقية]. بهذه الطريقة يمكن ان تبقى السجلات
+ مفيدة, لكنها لا تترك وراءها معلومات تحديد شخصية
+ حول أي المواقع قد قام بزيارتها المستخدم. +
+ +
+ اذا تم ضبط هذا الخيار الى 0, لن يقوم تور بأداء أي تنقية, اذا تم
+ ضبطها الى 1, تستبدل جميع السلاسل الحساسة المحتملة. اذا تم ضبطها
+ للتتابع, تنشأ جميع رسائل السجل عندما بوصف تتابعها بالتطهيري, لكن
+ جميع الرسائل تنشأ عندما توصف كعميل ليس كذلك. (افتراضيا: 1)
+
+**User** __UID__::
+ عند بدء التشغيل, اضبط رمز المستخدم لهذا المستخدم واضبط هوية المجموعة لمجموعتهم الرئيسية.
+
+**HardwareAccel** **0**|**1**::
+ اذا كان غير صفري, حاول استخدام تسريع اجهزة التشفير المدمج (ثابت) عندما
+ تكون متاحة. (افتراضيا: 0)
+
+**AccelName** __اسم__::
+ عند استخدام تسريع اجهزة التشفير OpenSSL حاول تحميل المحرك الديناميكي
+ لهذا الاسم. يجب استخدام هذا لأي محرك اجهزة ديناميكي.
+ يمكن التحقق من الاسماء مع امر محرك openssl.
+
+**AccelDir** __DIR__::
+ حدد هذا الخيار اذا كان استخدام تسريع الاجهزة الديناميكي ومكتبة تطبيق
+ المحرك يتواجد في مكان غير OpenSSL الافتراضي.
+
+**AvoidDiskWrites** **0**|**1**::
+ اذا كان غير صفري, حاول ان تكتب للديسك بأقل كثيرا منا خلافا ذلك.
+ هذا مفيد عندما يعمل على ذاكرة فلاش او أي وسيلة اخرى تدعم
+ فقط عدد محدود من الكتابة. (افتراضيا: 0)
+
+**TunnelDirConns** **0**|**1**::
+ اذا كان غير صفري, اذا كان خادم الدليل الذي قمنا بالاتصال به يدعمه, سوف نبني
+ دائرة الوثبة الواحدة واجراء اتصال مشفر عن طريق ORPort الخاص به.
+ (افتراضيا: 1)
+
+**PreferTunneledDirConns** **0**|**1**::
+ اذا كان غير صفري, سوف نتجنب خوادم الدليل التي لا تدعم
+ اتصالات الدليل النفقية عندما يكون ذلك ممكنا. (افتراضيا: 1)
+
+**CircuitPriorityHalflife** __NUM1__::
+ اذا تم ضبط هذه القيمة, نتجاوز الخوارزمية الافتراضية لاختيار أي
+ خلية للدائرة سيتم ايصالها او ترحيلها المقبل. عندما تكون القيمة 0, نقوم بالتنقل
+ ذهابا وايابا بين الدوائر النشطة للاتصال, لايصال خلية
+ واحدة من كل واحدة بالمقابل. عندما تكون القيمة ايجابية, نفضل إيصال
+ الخلايا من أي اتصال لديه اقل عدد من الخلايا المرجحة, حيث
+ يتم ترجيح الخلايا بشكل كبير وفقا لقيمة
+ CircuitPriorityHalflife المزودة (في ثواني). اذا لم يتم ضبط هذا الخيار على
+ الإطلاق, نستخدم السلوك الموصى به في إجماع
+ حالة الشبكة (networkstatus) الحالي. هذا خيار متقدم; عموما لا يجب عليك
+ العبث به. (افتراضيا: غير مضبط.)
+
+**DisableIOCP** **0**|**1**::
+ If Tor was built to use the Libevent's "bufferevents" networking code
+ and you're running on Windows, setting this option to 1 will tell Libevent
+ not to use the Windows IOCP networking API. (Default: 1)
+
+خيارات العميل
+--------------
+
+الخيارات التالية مفيدة فقط للعملاء (هذا, اذا كان **SocksPort** غير صفري):
+
+**AllowInvalidNodes** **entry**|**exit**|**middle**|**introduction**|**rendezvous**|**...**::
+ اذا كان بعض خوادم تور لا يعمل جيدا بشكل واضح, يمكن وضع
+ علامة يدويا على سلطات الدليل لتدل على انها غير صالحة, بمعنى انه من غير
+ الموصى به أن تستخدمه في وضعيات المدخل والمخرج في الدوائر الخاصة. يمكنك
+ اختيار استخدامها في بعض وضعيات الدائرة, برغم ذلك. الافتراضي هو
+ "middle,rendezvous", والخيارات الاخرى لا ينصح بها.
+
+**ExcludeSingleHopRelays** **0**|**1**::
+ This option controls whether circuits built by Tor will include relays with
+ the AllowSingleHopExits flag set to true. If ExcludeSingleHopRelays is set
+ to 0, these relays will be included. Note that these relays might be at
+ higher risk of being seized or observed, so they are not normally
+ included. Also note that relatively few clients turn off this option,
+ so using these relays might make your client stand out.
+ (Default: 1)
+
+**Bridge** __IP__:__ORPort__ [بصمة]::
+ عند الضبط جنبا الى جنب مع UseBridges, ارشد تور لاستخدام المرحل على
+ "IP:ORPort" "كجسر" ترحيل الى شبكة تور. اذا تم تزويد "البصمة"
+ (باستخدام نفس صيغة DirServer), سوف نتحقق بأن المرحل على
+ ذلك الموقع لديه البصمة الصحيحة. نستخدم ايضا
+ البصمة للبحث عن واصفات الجسر في سلطة الجسر, اذا
+ تم تزويدها واذا تم ضبط UpdateBridgesFromAuthority أيضا.
+
+**LearnCircuitBuildTimeout** **0**|**1**::
+ If 0, CircuitBuildTimeout adaptive learning is disabled. (Default: 1)
+
+**CircuitBuildTimeout** __NUM__::
+
+ Try for at most NUM seconds when building circuits. If the circuit isn't
+ open in that time, give up on it. If LearnCircuitBuildTimeout is 1, this
+ value serves as the initial value to use before a timeout is learned. If
+ LearnCircuitBuildTimeout is 0, this value is the only value used.
+ (Default: 60 seconds.)
+
+**CircuitIdleTimeout** __NUM__::
+ اذا ابقينا الدائرة نظيفة (غير مستخدمة) لعدد من الثواني, اغلقها,
+ بعد ذلك. بهذه الطريقة عندما يكون عميل تور ساكنا تماما, يمكن ان تنتهي صلاحية جميع
+ دوائره, ثم تنتهي صلاحية اتصالات أمان طبقة النقل (TLS). أيضا, اذا انتهى بنا المطاف
+ بعمل دائرة غير مفيدة للخروج من الطلبات التي نتلقاها, لن تستغرق الفتحة في قائمة الدائرة الى الابد. (افتراضيا: 1
+ ساعة.)
+
+**CircuitStreamTimeout** __NUM__::
+ اذا كان غير صفري, يتجاوز هذ الخيار جدول المهلة الزمنية الداخلي الخاص بنا لعدد
+ الثواني حتى نفصل تيار من دائرة وتجربة دائرة جديدة.
+ اذا كانت شبكتك بطيئة بشكل خاص, قد ترغب في ضبط هذا الى
+ رقم مثل 60. (افتراضيا: 0)
+
+**ClientOnly** **0**|**1**::
+ اذا تم الضبط الى 1, سوف يعمل تور تحت أي ظرف من الظروف كخادم او يخدم
+ طلبات الدليل. الافتراضي هو التشغيل كعميل مالم يتم تكوين ORPort
+ . (عادة, لا تحتاج لضبط هذا; تور ذكي جدا في
+ معرفة اذا كنت موثوقا وذات نطاق تردد عالي بما فيه الكفاية لتكون
+ خادما مفيدا.) (افتراضيا: 0)
+
+**ExcludeNodes** __عقدة__,__عقدة__,__...__::
+ قائمة ببصمات الهوية, الاسماء المستعارة, رموز البلد وأنماط عنوان
+ للعقد لعدم استخدامها عند بناء دائرة. (مثال:
+ ExcludeNodes SlowServer, $ EFFFFFFFFFFFFFFF, \{cc}, 255.254.0.0/8)
+
+**ExcludeExitNodes** __عقدة__,__عقدة__,__...__::
+ قائمة ببصمات الهوية, الاسماء المستعارة, رموز البلد وأنماط عنوان
+ للعقد لعدم استخدامها عند اختيار عقدة مخرج. لاحظ أن أي
+ عقدة مدرجة في ExcludeNodes تعتبر تلقائيا جزء من هذه
+ القائمة.
+
+**EntryNodes** __عقدة__,__عقدة__,__...__::
+ قائمة ببصمات الهوية, الاسماء المستعارة, رموز البلد وأنماط عنوان
+ للعقد لاستخدامها للقفزة الاولى في الدوائر العادية. هذه
+ تتم معاملتها فقط كأفضليات مالم يتم ضبط StrictNodes (أنظر أسفل) أيضا.
+
+**ExitNodes** __عقدة__,__عقدة__,__...__::
+ قائمة ببصمات الهوية, الاسماء المستعارة, رموز البلد وأنماط عنوان
+ للعقد لاستخدامها للقفزة الاخيرة في دوائر الخروج العادية. هؤلاء
+ تتم معاملتهم فقط كأفضليات مالم يتم ضبط StrictNodes (أنظر أسفل) أيضا.
+
+**StrictNodes** **0**|**1**::
+ اذا تم ضبط 1 و خيار تكوين EntryNodes, لن يقوم تور باستخدام أي عقد
+ الى جانب تلك المذكورة في EntryNodes للقفزة الاولى للدائرة العادية.
+ اذا تم ضبط 1 وخيار تكوين ExitNodes, لن يقوم تور باستخدام أي عقد
+ الى جانب تلك المذكورة في ExitNodes للقفزة الاخيرة لدائرة المخرج
+ العادية. لاحظ أن تور قد لا يزال يستخدم تلك العقد لدوائر غير المخرج
+ مثل جلب دليل القفزة الواحدة أو دوائر دعم الخدمة الخفية.
+
+**FascistFirewall** **0**|**1**::
+ في حالة 1, سوف يعمل تور على انشاء اتصالات صادرة الى ORs تعمل على المنافذ
+ التي يسمح بها جدار الحماية الخاص بك (الافتراضيات الى 80 و 443; أنظر **FirewallPorts**).
+ هذا سوف يسمح لك بتشغيل تور كعميل خلف جدار الحماية مع
+ سياسات تقييدية, لكن لن يسمح لك بالتشغيل كخادم خلف جدار حماية
+ من هذا القبيل. اذا كنت تفضل المزيد من المراقبة التفصيلية الدقيقة, استخدم
+ ReachableAddresses بدلا من ذلك.
+
+**FirewallPorts** __منافذ__::
+ قائمة بالمنافذ التي يسمح بها جدار الحماية الخاص بك بالاتصال بها. المستخدمة فقط عندما يكون
+ **FascistFirewall** مضبوطا. هذا الخيار منتقد; استخدم ReachableAddresses
+ بدلا من ذلك. (افتراضيا: 80, 443)
+
+**HidServAuth** __عنوان-اونيون__ __مصاقة-ملف-تعريف-الارتباط__ [__اسم-الخدمة__]::
+ إذن العميل لخدمة خفية. عناوين اونيون الصالحة تحتوي 16
+ حرفا كالتالي a-z2-7 plus ".اونيون", وملفات الارتباط المصادقة الصالحة تحتوي 22
+ حرفا كالتالي A-Za-z0-9+/. يستخدم اسم الخدمة لأغراض داخلية
+ فقط, على سبيل المثال: لمتحكمات تور. يمكن استخدام هذا الخيار عدة مرات
+ لعدة خدمات خفية. اذا استخدمت خدمة خفية تفويضا و
+ كان هذا الخيار غير مضبوطا, فإن الخدمة الخفية لا يمكن الوصول اليها. يمكن تكوين
+ الخدمات الخفية لتطلب تفويضا باستخدام خيار
+ **HiddenServiceAuthorizeClient**.
+
+**ReachableAddresses** __عنوان__[/__قناع__][:__منفذ__]...::
+ القائمة المفصولة بفاصلة لعناوين IP والمنافذ التي يسمح لك
+ جدار الحماية الخاص بك بالاتصال بها. الشكل هو كما للعناوين في ExitPolicy, بإستثناء أن
+ "accept" تكون مفهومة مالم تكن "reject" منصوص عليها صراحة. على سبيل
+ المثال, \'ReachableAddresses 99.0.0.0/8, reject 18.0.0.0/8:80, accept
+ \*:80' يعني ذلك ان جدار الحماية الخاص بك يسمح بالاتصالات الى كل شيء داخل الشبكة
+ 99, رفض اتصالات المنفذ 80 الى الشبكة 18, وقبول الاتصالات الى المنفذ
+ 80 خلافا لذلك. (افتراضيا: \'accept \*:*'.)
+
+**ReachableDirAddresses** __عنوان__[/__قناع__][:__منفذ__]...::
+ مثل **ReachableAddresses**, قائمة من العناوين والمنافذ. سوف يطيع تور
+ تلك القيود عند جلب معلومات الدليل, بإستخدام طلبات HTTP
+ GET القياسية. اذا لم يتم الضبط بشكل صريح فإن قيمة
+ **ReachableAddresses** تستخدم عندها. اذا تم ضبط **HTTPProxy** فإن تلك
+ الاتصالات سوف تمر من خلال هذا الوكيل.
+
+**ReachableORAddresses** __ADDR__[/__MASK__][:__PORT__]...::
+ مثل **ReachableAddresses**, قائمة من العناوين والمنافذ. سوف يطيع تور
+ تلك القيود عند الاتصال براوترات اونيون, بإستخدام أمان طبقة النقل (TLS)/طبقة المقبس الآمنة (SSL). اذا لم يتم
+ الضبط بشكل صريح فإن قيمة **ReachableAddresses** تستخدم عندها. اذا تم ضبط
+ **HTTPSProxy** فإن تلك الاتصالات سوف تمر من خلال هذا الوكيل. +
+ +
+ الفصل بين **ReachableORAddresses** و
+ **ReachableDirAddresses** يكون مثير للاهتمام فقط عند اتصالك
+ من خلال الوكلاء (أنظر **HTTPProxy** و **HTTPSProxy**). معظم الوكلاء يحد من اتصالات
+ أمان طبقة النقل (TLS) (والتي تستخدمه تور للاتصال براوترات اونيون) الى المنفذ 443,
+ والبعض يحد من طلبات HTTP GET (والتي تستخدمه تور لجلب معلومات
+ الدليل) الى المنفذ 80.
+
+**LongLivedPorts** __منافذ__::
+ قائمة من المنافذ والخدمات التي تميل الى أن تكون إتصالات طويلة الأمد
+ (على سبيل المثال: الدردشة والهياكل التفاعلية). الدوائر للتيارات التي تستخدم تلك
+ المنافذ سوف تحتوي فقط على عقد عالية الجهوزية, لتقليل فرصة أن العقدة
+ ستنخفض قبل انتهاء التيار. (افتراضيا: 21, 22, 706, 1863,
+ 5050, 5190, 5222, 5223, 6667, 6697, 8300)
+
+**MapAddress** __عنوان__ __عنوان_جديد__::
+ عند وصول طلب لعنوان الى تور, سوف يقوم بإعادة كتابته الى عنوان جديد
+ قبل معالجته. على سبيل المثال, اذا كنت تريد دائما إتصالات الى
+ www.indymedia.org للخروج عن طريق __خادم تور__ (حيث __خادم_تور__هوالاسم المستعار للخادم), إستخدم "MapAddress www.indymedia.org
+ www.indymedia.org.torserver.exit".
+
+**NewCircuitPeriod** __NUM__::
+ كل ثانية معدودة يتم اعتبارها فيما اذا تم بناء دائرة جديدة. (افتراضيا: 30
+ ثانية)
+
+**MaxCircuitDirtiness** __NUM__::
+ لا تتردد في إعادة إستخدام الدائرة التي إستخدمت لأول مرة لأكثر من ثواني معدودة مضت,
+ لكن لا ترفق أبدا تيارا جديد الى دائرة قديمة جدا. (افتراضيا: 10
+ دقائق)
+
+**NodeFamily** __node__,__node__,__...__::
+ The Tor servers, defined by their identity fingerprints or nicknames,
+ constitute a "family" of similar or co-administered servers, so never use
+ any two of them in the same circuit. Defining a NodeFamily is only needed
+ when a server doesn't list the family itself (with MyFamily). This option
+ can be used multiple times. In addition to nodes, you can also list
+ IP address and ranges and country codes in {curly braces}.
+
+**EnforceDistinctSubnets** **0**|**1**::
+ في حالة 1, تور لن يقوم بوضع خادمين ذات عنوان IP "متقارب جدا" على
+ نفس الدائرة. حاليا, هناك عنوانين "متقاربين جدا" اذا كانا يكمنان في
+ نفس/ 16 نطاق. (افتراضيا: 1)
+
+**SocksPort** __منفذ__::
+ أعلن عن هذا المنفذ للاستماع للاتصالات من التطبيقات التي تستخدم بروتوكول Socks
+ . أضبط هذا الى الصفر اذا كنت لا تريد السماح لاتصالات
+ التطبيق. (افتراضيا: 9050)
+
+**SocksListenAddress** __IP__[:__منفذ__]::
+ أربط لهذا العنوان للاستماع للاتصالات من التطبيقات التي تستخدم بروتوكول Socks
+ . (افتراضيا: 127.0.0.1) يمكنك أيضا تحديد منفذ (على سبيل المثال:
+192.168.0.1:9100). يمكنك تحديد هذا التوجيه عدة مرات لربطه
+ الى عدة عناوين/منافذ.
+
+**SocksPolicy** __سياسة__,__سياسة__,__...__::
+ أضبط سياسة مدخل لهذا الخادم, للحد من الذي يستطيع الاتصال بمنافذ
+ SocksPort و DNSPort. السياسات لديها نفس شكل سياسات المخرج
+ أدناه.
+
+**SocksTimeout** __NUM__::
+ دع اتصال socks ينتظر لعدة ثواني, وانتظار عدد من الثواني
+ غير مرتبطة لدائرة مناسبة, قبل ان نفشل في ذلك. (افتراضيا:
+ 2 دقيقة.)
+
+**TrackHostExits** __مستضيف__,__.نطاق__,__...__::
+ لكل قيمة في القائمة المفصولة بفاصلة, سوف يقوم تور بتتبع الاتصالات
+ الاخيرة الى المستضيفين التي تطابق هذه القيمة ومحاولة اعادة استخدام نفس
+ عقدة المخرج لكل واحدة. اذا إنتهت القيمة الإعدادية ب \'.\', تعامل على أساس
+ مطابقة نطاق كامل. اذا كانت احدى القيم هي مجرد \'.', هذا يعني
+ مطابقة كل شيء. هذا الخيار مفيد اذا قمت بالاتصال كثيرا بالمواقع
+ التي تقوم بإنهاء ملفات تعريف الارتباط المصادقة الخاصة بك (على سبيل المثال: تسجل خروجك) اذا
+ تم تغيير عنوان IP الخاص بك. لاحظ أن هذا الخيار لديه مساوئ
+ في جعله أكثر وضوحا بحيث أن تاريخ معين يكون مرتبط بمستخدم
+ واحد. مع ذلك, معظم الناس الذين يرغبون في مراقبة هذا سوف يراقبونه
+ من خلال ملفات تعريف الارتباط او غيرها من وسائل خصائص البروتوكول بأية حال.
+
+**TrackHostExitsExpire** __NUM__::
+ حيث أن خوادم المخرج تصعد وتهبط, من المستحسن انهاء
+ العلاقة بين المستضيف وخادم المخرج بعد عدد من الثواني. الافتراضي هو
+ 1800 ثانية (30 دقيقة).
+
+**UpdateBridgesFromAuthority** **0**|**1**::
+ عند الضبط (جنبا الى جنب مع UseBridges), سوف يقوم تور بمحاولة جلب واصفات الجسر
+ من سلطات الجسر المتكونة عندما يكون ذلك ممكنا. سوف يرتد الى
+ طلب مباشر اذا استجابت السلطة مع 404. (افتراضيا: 0)
+
+**UseBridges** **0**|**1**::
+ عند الضبط, سوف يقوم تور بإحضار واصفات لكل جسر مدرجة في خطوط تكوين"Bridge"
+ , واستخدام تلك المرحلات كحرّاس مدخل وحرّاس
+ دليل. (افتراضيا: 0)
+
+**UseEntryGuards** **0**|**1**::
+ اذا تم ضبط هذا الخيار الى 1, نختار عدد قليل من خوادم المدخل طويلة المدى ومحاولة
+ ضمهم مع بعض. هذا امر مرغوب به لأن الخوادم المتغيرة بإستمرار
+ تزيد من احتمالات ان الخصم الذي يملك بعض الخوادم سوف يراقب
+ جزء من مساراتك. (افتراضيا الى 1.)
+
+**NumEntryGuards** __NUM__::
+ اذا تم ضبط UseEntryGuards الى 1, سوف نقوم بمحاولة اختيار إجمالي عدد من الراوترات
+ كمداخل طويلة المدى لدوائرنا. (افتراضيا الى 3.)
+
+**SafeSocks** **0**|**1**::
+ عند تمكين هذا الخيار, سوف يقوم تور برفض اتصالات التطبيق التي
+ تستخدم متغيرات غير آمنة لبروتوكول socks -- تلك التي تزود عنوان IP
+ , بمعنى ان التطبيق يقوم بحل نظام إسم النطاق (DNS) أولا.
+ على وجه التحديد, هؤلاء هم socks4 و socks5 عند عدم القيام بالتحكم بنظام إسم النطاق (DNS).
+ (افتراضيا الى 0.)
+
+**TestSocks** **0**|**1**::
+ عند تمكين هذا الخيار, سوف يقوم تور بإدخال سجل مستوى الإنذار
+ لكل اتصال الى منفذ Socks والذي يشير الى اذا ما كان الطلب يستخدم
+ بروتوكول Socks آمن أو غير آمن (أنظر أعلاه المدخل على بروتوكول SafeSocks). هذا
+ يساعد على تحديد ما اذا كان التطبيق بإستخدام تور ربما يسرب طلبات
+ نظام إسم النطاق (DNS). (افتراضيا: 0)
+
+**WarnUnsafeSocks** **0**|**1**::
+ When this option is enabled, Tor will warn whenever a request is
+ received that only contains an IP address instead of a hostname. Allowing
+ applications to do DNS resolves themselves is usually a bad idea and
+ can leak your location to attackers. (Default: 1)
+
+**VirtualAddrNetwork** __Address__/__bits__::
+ When Tor needs to assign a virtual (unused) address because of a MAPADDRESS
+ command from the controller or the AutomapHostsOnResolve feature, Tor
+ picks an unassigned address from this range. (Default:
+ 127.192.0.0/10) +
+ +
+ When providing proxy server service to a network of computers using a tool
+ like dns-proxy-tor, change this address to "10.192.0.0/10" or
+ "172.16.0.0/12". The default **VirtualAddrNetwork** address range on a
+ properly configured machine will route to the loopback interface. For
+ local use, no change to the default VirtualAddrNetwork setting is needed.
+
+**AllowNonRFC953Hostnames** **0**|**1**::
+ عند تعطيل هذا الخيار, يقوم تور بمنع اسماء المضيفين التي تحتوي على أحرف
+ غير قانونية (مثل @ و :) بدلا من إرسالهم الى عقدة مخرج
+ لحلها. يساعد هذا على إعتراض المحاولات العرضية لحل محددات موقع المعلومات (URLs) وهكذا.
+ (افتراضيا: 0)
+
+**AllowDotExit** **0**|**1**::
+ If enabled, we convert "www.google.com.foo.exit" addresses on the
+ SocksPort/TransPort/NATDPort into "www.google.com" addresses that exit from
+ the node "foo". Disabled by default since attacking websites and exit
+ relays can use it to manipulate your path selection. (Default: 0)
+
+**FastFirstHopPK** **0**|**1**::
+ عند تعطيل هذا الخيار, يستخدم تور خطوة المفتاح العام للقفزة الاولى
+ لإنشاء الدوائر. تخطيها بشكل عام يعتبر آمنا حيث أننا
+ قد بدأنا إستخدام أمان طبقة النقل (TLS) لمصادقة المرحل وإنشاء مفاتيح تأمين
+ الأمام. إغلاق هذا الخيار يجعل بناء الدائرة أبطأ. +
+ +
+ لاحظ أن تور سوف يستخدم خطوة المفتاح العام دائما للقفزة الاولى اذا تم
+ تشغيله كمرحّل, ولن يستخدم خطوة المفتاح أبدا اذا لم
+ يتعرف بعد على مفتاح اونيون للقفزة الاولى. (افتراضيا: 1)
+
+**TransPort** __منفذ__::
+ اذا كان غير صفري, تمكين دعم الوكيل الشفاف على __PORT__ (بالاتفاقية, 9040). يتطلب دعم نظام تشغيل (OS) للوكلاء الشفافين, مثل BSDs' pf او
+جداول عنوان IP لينوكس (Linux). اذا كنت تخطط لاستخدام تور كوكيل شفاف
+ لشبكة, سوف تحتاج الى فحص وتغيير VirtualAddrNetwork من
+ الضبط الافتراضي. سوف تحتاج أيضا الى ضبط خيار TransListenAddress للشبكة
+ التي تريد للوكيل. (افتراضيا: 0).
+
+**TransListenAddress** __IP__[:__منفذ__]::
+ أربط لهذا العنوان للاستماع الى اتصالات الوكيل الشفاف. (افتراضيا:
+127.0.0.1). هذا مفيد لتصدير خادم الوكيل الشفاف الى
+ الشبكة بالكامل.
+
+**NATDPort** __منفذ__::
+ السماح للإصدارات القديمة من جدار حماية عنوان بروتوكول الانترنت (ipfw) (كما هو مشمول في اصدارات (FreeBSD) القديمة,... إلخ.)
+ بإرسال اتصالات من خلال تور بإستخدام بروتوكول (NATD). هذا الخيار هو
+ فقط للأشخاص الذين لا يستطيعون إستخدام TransPort.
+
+**NATDListenAddress** __IP__[:__منفذ__]::
+ أربط لهذا العنوان للاستماع الى اتصالات (NATD). (افتراضيا: 127.0.0.1).
+
+**AutomapHostsOnResolve** **0**|**1**::
+ عند تمكين هذا الخيار, وحصلنا على طلب لحل العنوان
+ الذي ينتهي بواحد من اللواحق في **AutomapHostsSuffixes**, نعيّن
+ العنوان الظاهري غير المستخدم لذلك العنوان, ونرجع العنوان الظاهري الجديد. هذا مفيد في جعل عناوين "onion" تعمل مع التطبيقات التي
+ تعمل على حل عنوان ثم الاتصال به. (افتراضيا: 0).
+
+**AutomapHostsSuffixes** __لاحقة__,__لاحقة__,__...__::
+ قائمة اللواحق المفصولة بفاصلة للاستخدام مع **AutomapHostsOnResolve**.
+ اللاحقة "." تعادل "جميع العناوين." (افتراضيا: .exit,.onion).
+
+**DNSPort** __منفذ__::
+ اذا كان غير صفري, يستمع تور لطلبات بروتوكول مخطط بيانات المستخدم (UDP) ونظام إسم النطاق (DNS) على هذا المنفذ وحلهم
+ بشكل مجهول. (افتراضيا: 0).
+
+**DNSListenAddress** __IP__[:__منفذ__]::
+ أربط لهذا العنوان للاستماع الى اتصالات نظام إسم النطاق (DNS). (افتراضيا: 127.0.0.1).
+
+**ClientDNSRejectInternalAddresses** **0**|**1**::
+ اذا كان صحيحا, تور لا يعتقد بأي جواب نظام إسم النطاق (DNS) مسترجع بشكل مجهول والذي
+ يأمره ان يحل عنوان الى عنوان داخلي (مثل 127.0.0.1 أو
+192.168.0.1). يمنع هذا الخيار هجمات معينة مستندة الى المتصفح; لا
+ تغلقه مالم تكن تعرف ما تفعله. (افتراضيا: 1).
+
+**ClientRejectInternalAddresses** **0**|**1**::
+ If true, Tor does not try to fulfill requests to connect to an internal
+ address (like 127.0.0.1 or 192.168.0.1) __unless a exit node is
+ specifically requested__ (for example, via a .exit hostname, or a
+ controller request). (Default: 1).
+
+**DownloadExtraInfo** **0**|**1**::
+ اذا كان صحيحا, يقوم تور بتنزيل وتخزين وثائق "extra-info". تحتوي هذه الوثائق
+ على معلومات حول الخوادم غير المعلومات في
+ واصفات الراوتر العادية الخاص بهم. تور لا يستخدم هذه المعلومات لأي شيء
+ بحد ذاته; لحفظ عرض النطاق الترددي, أترك هذا الخيار مغلقا. (افتراضيا: 0).
+
+**FallbackNetworkstatusFile** __اسم_ملف__::
+ اذا لم يكن لدى تور ملف networkstatus, يبدأ بإستخدام هذا
+ بدلا منه. حتى لو كان هذا الملف قديما, يمكن ان يستمر تور في استخدامه
+ لمعرفة المزيد حول مرايا الدليل, حتى لا يحتاج لوضع حمل على
+ السلطات. (افتراضيا: لا يوجد).
+
+**WarnPlaintextPorts** __منفذ__,__منفذ__,__...__::
+ يأمر تور بإصدار تحذيرات كلما حاول المستخدم إجراء اتصال مجهول
+ الى واحد من هذه المنافذ. صمم هذا الخيار لتنبيه المستخدمين
+ الى الخدمات التي تخاطر بإرسال كلمات المرور بوضوح. (افتراضيا:
+ 23, 109, 110, 143).
+
+**RejectPlaintextPorts** __منفذ__,__منفذ__,__...__::
+ مثل WarnPlaintextPorts, ولكن بدلا من التحذير حول استخدامات المنفذ الخطرة, سوف يقوم تور
+ بدلا من ذلك برفض إجراء الاتصال. (افتراضيا: لا يوجد).
+
+**AllowSingleHopCircuits** **0**|**1**::
+ When this option is set, the attached Tor controller can use relays
+ that have the **AllowSingleHopExits** option turned on to build
+ one-hop Tor connections. (Default: 0)
+
+خيارات الخادم
+--------------
+
+الخيارات التالية مفيدة فقط للخوادم (وهذا, اذا كان ORPort غير صفري):
+
+**Address** __address__::
+ The IP address or fully qualified domain name of this server (e.g.
+ moria.mit.edu) You can leave this unset, and Tor will guess your IP
+ address. This IP address is the one used to tell clients and other
+ servers where to find your Tor server; it doesn't affect the IP that your
+ Tor client binds to. To bind to a different address, use the
+ *ListenAddress and OutboundBindAddress options.
+
+**AllowSingleHopExits** **0**|**1**::
+ This option controls whether clients can use this server as a single hop
+ proxy. If set to 1, clients can use this server as an exit even if it is
+ the only hop in the circuit. Note that most clients will refuse to use
+ servers that set this option, since most clients have
+ ExcludeSingleHopRelays set. (Default: 0)
+
+**AssumeReachable** **0**|**1**::
+ يستخدم هذا الخيار عند عمل تضخيم تشغيل لشبكة تور جديدة. اذا تم الضبط الى 1,
+ لا تقم بعمل اختبار إمكانية الوصول الذاتي; فقط حمّل الخادم الخاص بك
+ فورا. اذا تم ضبط **AuthoritativeDirectory** أيضا, هذا الخيار
+ يرشد dirserver لتجاوز اختبار إمكانية الوصول عن بعد أيضا وإدراج
+ جميع الخوادم المتصلة على أنها قيد التشغيل.
+
+**BridgeRelay** **0**|**1**::
+ Sets the relay to act as a "bridge" with respect to relaying connections
+ from bridge users to the Tor network. It mainly causes Tor to publish a
+ server descriptor to the bridge database, rather than publishing a relay
+ descriptor to the public directory authorities.
+
+**ContactInfo** __عنوان_بريد_إلكتروني__::
+ معلومات الاتصال الادارية للخادم. يمكن ان يتم اختيار هذا الخط
+ من قبل حصادات البريد المزعج, لذا قد تحتاج الى إخفاء حقيقة انه
+ عنوان بريد إلكتروني.
+
+**ExitPolicy** __سياسة__,__سياسة__,__...__::
+ أضبط سياسة مخرج لهذا الخادم. كل سياسة هي من النموذج
+ "**accept**|**reject** __عنوان__[/__قناع__][:__منفذ__]". اذا تم حذف /__القناع__ عندها
+ تنطبق هذه السياسة فقط على المستضيف المعطى. بدلا من إعطاء
+ مستضيف او شبكة يمكنك أيضا إستخدام "\*" لتدل على الكون (0.0.0.0/0).
+ __المنفذ__ يمكن ان تكون رقم منفذ وحيد, الفاصل الزمني للمنافذ
+ "__من_منفذ__-__الى_منفذ__", أو "\*". اذا تم حذف__المنفذ__ , هذا يعني
+ "\*". +
+ +
+ على سبيل المثال, "accept 18.7.22.69:\*,reject 18.0.0.0/8:\*,accept \*:\*" سترفض
+ أي حركة مرور متجهة الى MIT بإستثناء web.mit.edu, وقبول
+ أي شيء آخر. +
+ +
+ لتحديد جميع الشبكات الداخلية و عنوان الرابط المحلي (بما في ذلك 0.0.0.0/8,
+ 169.254.0.0/16, 127.0.0.0/8, 192.168.0.0/16, 10.0.0.0/8, و
+172.16.0.0/12), يمكنك استخدام الاسم المسنعار "private" بدلا من عنوان.
+ يتم رفض هذه العناوين افتراضيا (في بداية سياسة المخرج
+ الخاصة بك), جنبا الى جنب مع عنوان IP الخاص بك, مالم تضبط خيار
+ ExitPolicyRejectPrivate الى الصفر. على سبيل المثال, بمجرد الانتهاء
+ من ذلك, يمكنك السماح لبروتوكول نقل النص التشعبي (HTTP) الى 127.0.0.1 وحظر جميع الاتصالات الاخرى الى
+ الشبكات الداخلية مع "accept 127.0.0.1:80,reject private:\*", رغم ذلك
+ يمكن السماح أيضا بالاتصالات الى الكمبيوتر الخاص بك الموجهة الى
+ عنوان IP عام (خارجي) خاص به. أنظر RFC 1918 و RFC 3330 للمزيد من التفاصيل
+ حول مساحة عنوان IP الداخلية والمحفوظة. +
+ +
+ يمكن تحديد هذا التوجيه عدة مرات حتى لا تكون ملزما بوضع كل ذلك
+ على خط واحد. +
+ +
+ ينظر الى السياسات أولا الى الآخر , ويكسب أول تطابق. اذا
+ أردت \_إستبدال_ سياسة المخرج الافتراضية, قم بإنهاء سياسة المخرج الخاصة بك مع اختيار
+ إما reject \*:* أو accept \*:*. خلافا لذلك, أنت \_تزيد_
+ (معلق مسبقا الى) سياسة المخرج الافتراضية. سياسة المخرج الافتراضية هي: +
+
+ reject *:25
+ reject *:119
+ reject *:135-139
+ reject *:445
+ reject *:563
+ reject *:1214
+ reject *:4661-4666
+ reject *:6346-6429
+ reject *:6699
+ reject *:6881-6999
+ accept *:*
+
+**ExitPolicyRejectPrivate** **0**|**1**::
+ رفض جميع الشبكات الخاصة (المحلية), جنبا الى جنب مع عنوان IP العام الخاص بك,
+ عند بداية سياسة المخرج الخاصة بك. أنظر المدخل أعلاه على ExitPolicy.
+ (افتراضيا: 1)
+
+**MaxOnionsPending** __NUM__::
+ اذا كان لديك الكثير من رقم onionskins هذا تنتظر فك تشفيرها, قم برفض
+ الجديد منها. (افتراضيا: 100)
+
+**MyFamily** __عقدة__,__عقدة__,__...__::
+ يعلن ان خادم تور هذا يتم التحكم به او إدارته من قبل مجموعة او
+ منظمة مطابقة او مشابهة لتلك الخوادم الاخرى, محددة من قبل
+ بصمات الهوية او الاسماء المستعارة الخاصة بهم. عندما يتم الاعلان عن ان خادمين
+ هما من نفس \'العائلة', سوف لن يقوم عملاء تور بإستخدامهم في
+ نفس الدائرة. (كل خادم يحتاج فقط الى إدراج الخوادم الاخرى الى
+ عائلته; لا يحتاج لإدراج نفسه, ولكن ذلك لن يضر.)
+
+**Nickname** __اسم__::
+ أضبط إسم الخادم المستعار الى \'الاسم'. يجب ان تكون الاسماء المستعارة بين 1 و 19
+ حرفا شاملا, ويجب ان يحتوي على الاحرف [a-zA-Z0-9].
+
+**NumCPUs** __num__::
+ How many processes to use at once for decrypting onionskins and other
+ parallelizable operations. If this is set to 0, Tor will try to detect
+ how many CPUs you have, defaulting to 1 if it can't tell. (Default: 0)
+
+**ORPort** __منفذ__::
+ أعلن عن هذا المنفذ للاستماع الى الاتصالات من عملاء وخوادم تور.
+
+**ORListenAddress** __IP__[:__منفذ__]::
+ أربط لعنوان IP هذا للاستماع الى الاتصالات من وكلاء وخوادم
+ تور. اذا قمت بتحديد منفذ, أربط لهذا العنوان بدلا من المنفذ
+ المحدد في ORPort. (افتراضيا: 0.0.0.0) يمكن تحديد هذا التوجيه
+ عدة مرات لربطه الى عدة عناوين/منافذ.
+
+**PortForwarding** **0**|**1**::
+ Attempt to automatically forward the DirPort and ORPort on a NAT router
+ connecting this Tor server to the Internet. If set, Tor will try both
+ NAT-PMP (common on Apple routers) and UPnP (common on routers from other
+ manufacturers). (Default: 0)
+
+**PortForwardingHelper** __filename__|__pathname__::
+ If PortForwarding is set, use this executable to configure the forwarding.
+ If set to a filename, the system path will be searched for the executable.
+ If set to a path, only the specified path will be executed.
+ (Default: tor-fw-helper)
+
+**PublishServerDescriptor** **0**|**1**|**v1**|**v2**|**v3**|**bridge**,**...**::
+ This option specifies which descriptors Tor will publish when acting as
+ a relay. You can
+ choose multiple arguments, separated by commas.
+ +
+ If this option is set to 0, Tor will not publish its
+ descriptors to any directories. (This is useful if you're testing
+ out your server, or if you're using a Tor controller that handles directory
+ publishing for you.) Otherwise, Tor will publish its descriptors of all
+ type(s) specified. The default is "1",
+ which means "if running as a server, publish the
+ appropriate descriptors to the authorities".
+
+**ShutdownWaitLength** __NUM__::
+ عندما نحصل على SIGINT ونحن الخادم, نبدأ بالاغلاق:
+ نغلق المستمعين ونبدأ في رفض الدوائر الجديدة. بعد **NUM**
+ ثواني, نخرج. اذا حصلنا على SIGINT ثانية, نخرج حالا
+. (افتراضيا: 30 ثانية)
+
+**HeartbeatPeriod** __N__ **minutes**|**hours**|**days**|**weeks**::
+ Log a heartbeat message every **HeartbeatPeriod** seconds. This is
+ a log level __info__ message, designed to let you know your Tor
+ server is still alive and doing useful things. Settings this
+ to 0 will disable the heartbeat. (Default: 6 hours)
+
+**AccountingMax** __N__ **bytes**|**KB**|**MB**|**GB**|**TB**::
+ Never send more than the specified number of bytes in a given accounting
+ period, or receive more than that number in the period. For example, with
+ AccountingMax set to 1 GB, a server could send 900 MB and receive 800 MB
+ and continue running. It will only hibernate once one of the two reaches 1
+ GB. When the number of bytes gets low, Tor will stop accepting new
+ connections and circuits. When the number of bytes
+ is exhausted, Tor will hibernate until some
+ time in the next accounting period. To prevent all servers from waking at
+ the same time, Tor will also wait until a random point in each period
+ before waking up. If you have bandwidth cost issues, enabling hibernation
+ is preferable to setting a low bandwidth, since it provides users with a
+ collection of fast servers that are up some of the time, which is more
+ useful than a set of slow servers that are always "available".
+
+**AccountingStart** **day**|**week**|**month** [__اليوم__] __دقائق:ساعات__::
+ تحديد الى متى ستبقى الفترات الزمنية المحاسبية. اذا كانت **month** معطى, كل
+ فترة زمنية محاسبية تمتد من الوقت __دقائق:ساعات__ من اليوم __اليوم__ لشهر واحد
+ الى نفس اليوم والوقت للشهر الذي يليه. (يجب ان يكون اليوم بين 1 و
+ 28.) اذا كانت **week** معطى, كل فترة زمنية محاسبية تمتد من الوقت __دقائق:ساعات__
+ من اليوم __اليوم__ لأسبوع واحد الى نفس اليوم والوقت للأسبوع الذي يليه,
+ مع إعتبار ان الاثنين هو اليوم الاول والاحد هو اليوم السابع. اذا كانت **day** معطى, كل
+ فترة زمنية محاسبية تمتد من الوقت __دقائق:ساعات__ من كل يوم الى نفس الوقت
+ من اليوم الذي يليه. جميع الاوقات هي محلية, ومعطى في وقت من 24 ساعة. (افتراضيا الى
+ "شهر 1 0:00".)
+
+**RefuseUnknownExits** **0**|**1**|**auto**::
+ Prevent nodes that don't appear in the consensus from exiting using this
+ relay. If the option is 1, we always block exit attempts from such
+ nodes; if it's 0, we never do, and if the option is "auto", then we do
+ whatever the authorities suggest in the consensus. (Defaults to auto.)
+
+**ServerDNSResolvConfFile** __اسم_ملف__::
+ تجاوز تكوين نظام إسم النطاق الافتراضي (DNS) بالتكوين في
+ __اسم_الملف__. تنسيق الملف هو نفس ملف يونيكس (7) القياسي
+ "**resolv.conf**". هذا الخيار, مثل جميع خيارات ServerDNS الاخرى,
+ تؤثر فقط على عمليات البحث عن الاسم التي يقوم الخادم بعملها نيابة عن العملاء.
+ (افتراضيات لإستخدام تكوين نظام إسم النطاق (DNS) للنظام.)
+
+**ServerDNSAllowBrokenConfig** **0**|**1**::
+ اذا كان هذا الخيار خاطئ, يخرج تور حالا اذا كانت هناك مشكلات
+ تحلّل تكوين نظام إسم النطاق (DNS) للنظام او الاتصال بالخوادم.
+ خلافا لذلك, يواصل تور بشكل دوري محاولة الخوادم للنظام حتى
+ ينجح في النهاية. (افتراضيا الى "1".)
+
+**ServerDNSSearchDomains** **0**|**1**::
+ اذا تم الضبط الى1, عندها سوف نبحث عن عناوين في نطاق البحث المحلي.
+ هلى سبيل المثال, اذا تم تكوين هذا النظام للاعتقاد بأنه في
+ "example.com", وحاول عميل بالاتصال ب "www", سوف يتم وصل العميل
+ الى "www.example.com". هذا الخيار يؤثر فقط على عمليات بحث الاسم التي
+ يقوم بها الخادم الخاص بك بالنيابة عن العملاء. (افتراضيا الى "0".)
+
+**ServerDNSDetectHijacking** **0**|**1**::
+ عند ضبط هذا الخيار الى 1, سوف نقوم باختبار دوري لتحديد
+ ما اذا كان الخادم المحلي الخاص بنا قد تم تكوينه لخطف طلبات نظام إسم النطاق DNS)
+) الفاشلة (عادة الى موقع اعلاني). اذا كانوا كذلك, سوف نحاول
+ تصحيح هذا. هذا الخيار يؤثر فقط على عمليات بحث الاسم التي يقوم بها الخادم الخاص بك
+ بالنيابة عن العملاء. (افتراضيا الى "1".)
+
+**ServerDNSTestAddresses** __عنوان__,__عنوان__,__...__::
+ عندما نقوم بالكشف عن اختطاف نظام إسم النطاق (DNS), تأكد ان تلك العناوين __الصالحة__
+ لن يتم اعادة توجيهها. اذا تم ذلك, عندها يكون نظام إسم النطاق (DNS) الخاص بنا عديم الفائدة تماما,
+ وسوف نقوم بإعادة ضبط سياسة المخرج الخاصة بنا الى "reject *:*". هذا الخيار يؤثر فقط
+ على عمليات بحث الاسم التي يقوم بها الخادم الخاص بك بالنيابة عن العملاء. (افتراضيا الى
+ "www.google.com, www.mit.edu, www.yahoo.com, www.slashdot.org".)
+
+**ServerDNSAllowNonRFC953Hostnames** **0**|**1**::
+ عند تعطيل هذا الخيار, لا يحاول تور حلhostnames
+ التي تحتوي على احرف غير قانونية (مثل @ و :) بدلا من إرسالهم الى
+ عقدة مخرج لحلهم. يساعد هذا على إعتراض المحاولات العرضية لحل
+ عناوين المواقع (URLs) وهكذا. هذا الخيار بؤثر فقط على عمليات بحث الاسم التي يقوم بها الخادم الخاص بك
+ بالنيابة عن العملاء. (افتراضيا: 0)
+
+**BridgeRecordUsageByCountry** **0**|**1**::
+ عند تمكين هذا الخيار وتمكين مرحل الجسر أيضا, ولدينا
+بيانات الموقع الجغرافي لعنوان بروتوكول الانترنت (GeoIP), يحافظ تور على الاحتفاظ بعدد لكل دولة من عناوين العملاء
+ التي قامت بالاتصال به حيث أنه يمكن ان يعمل هذا على مساعدة سلطة الجسر على تخمين
+ ما هي البلدان التي منعت الوصول اليه. (افتراضيا: 1)
+
+**ServerDNSRandomizeCase** **0**|**1**::
+ عند ضبط هذا الخيار, يقوم تور بضبط حالة كل حرف عشوائيا في
+ طلبات نظام إسم النطاق (DNS) الصادرة, والتأكد ان الحالة تتطابق مع ردود نظام إسم النطاق DNS(.
+) هذا ما يسمى "0x20 hack" والذي يساعد على مقاومة بعض انواع هجوم نظام إسم النطاق (DNS) السام.
+ للمزيد من المعلومات, أنظر "Increased DNS Forgery Resistance through
+0x20-Bit Encoding". هذا الخيار يؤثر فقط على عمليات بحث الاسم التي يقوم بها الخادم الخاص بك
+ بالنيابة عن العملاء. (افتراضيا: 1)
+
+**GeoIPFile** __اسم_ملف__::
+ اسم ملف يحتوي بيانات الموقع الجغرافي لعنوان بروتوكول الانترنت (GeoIP), للاستخدام مع BridgeRecordUsageByCountry.
+
+**CellStatistics** **0**|**1**::
+ When this option is enabled, Tor writes statistics on the mean time that
+ cells spend in circuit queues to disk every 24 hours. (Default: 0)
+
+**DirReqStatistics** **0**|**1**::
+ When this option is enabled, Tor writes statistics on the number and
+ response time of network status requests to disk every 24 hours.
+ (Default: 0)
+
+**EntryStatistics** **0**|**1**::
+ When this option is enabled, Tor writes statistics on the number of
+ directly connecting clients to disk every 24 hours. (Default: 0)
+
+**ExitPortStatistics** **0**|**1**::
+ When this option is enabled, Tor writes statistics on the number of relayed
+ bytes and opened stream per exit port to disk every 24 hours. (Default: 0)
+
+**ConnDirectionStatistics** **0**|**1**::
+ When this option is enabled, Tor writes statistics on the bidirectional use
+ of connections to disk every 24 hours. (Default: 0)
+
+**ExtraInfoStatistics** **0**|**1**::
+ عند تمكين هذا الخيار, يقوم تور بشمل الاحصاءات التي جمعت سابقا في
+ وثائق المعلومات الاضافية الخاصة به والتي تحمل الى سلطات الدليل.
+ (افتراضيا: 0)
+
+خيارات خادم الدليل
+------------------------
+
+الخيارات التالية مفيدة فقط لخوادم الدليل (وهذا, اذا كان DirPort غير صفري):
+
+**AuthoritativeDirectory** **0**|**1**::
+ عند ضبط هذا الخيار الى 1, يعمل تور بمثابة خادم توجيهي
+ موثوق. بدلا من تخزين الدليل, يعمل على انشاء قائمته الخاصة من
+ الخوادم الجيدة, يضع علامة عليها, ويرسل هذا الى العملاء. الا اذا قد قام العملاء
+ بإدراجك كدليل موثوق, فإنك على الاغلب لا تريد
+ ضبط هذا الخيار. يرجى التنسيق مع الاداريين الآخرين على
+ tor-ops(a)torproject.org اذا كنت تعتقد انك يجب ان تكون دليلا.
+
+**DirPortFrontPage** __اسم_ملف__::
+ عند ضبط هذا الخيار, يقوم بأخذ ملف لغة توصيف النص التشعبي (HTML) ونشره مثل "/" على
+DirPort. يمكن الآن لمشغلات المرحّل بتزويد إخلاء بدون الحاجة
+ الى ضبط خادم ويب منفصل. هناك نموذج إخلاء في
+ contrib/tor-exit-notice.html.
+
+**V1AuthoritativeDirectory** **0**|**1**::
+ عندما يتم ضبط هذا الخيار بالاضافة الى **AuthoritativeDirectory**, يقوم تور
+ بتوليد دليل الاصدار 1 ووثائق الراوترات قيد التشغيل (للعملاء
+ تور القدماء تصل الى 0.1.0.x).
+
+**V2AuthoritativeDirectory** **0**|**1**::
+ عندما يتم ضبط هذا الخيار بالاضافة الى **AuthoritativeDirectory**, يقوم تور
+ بتوليد حالات الشبكة للاصدار 2 ويخدم الواصفات, إلخ كما
+ هو موصوف في doc/spec/dir-spec-v2.txt (لعملاء تور وتشغيل الخوادم
+ 0.1.1.x و 0.1.2.x).
+
+**V3AuthoritativeDirectory** **0**|**1**::
+ عند ضبط هذا الخيار بالاضافة الى **AuthoritativeDirectory**, يقوم تور
+ بتوليد حالات الشبكة للاصدار 3 ويخدم الواصفات, إلخ كما
+ هو موصوف في doc/spec/dir-spec.txt (لعملاء تور وتشغيل الخوادم على
+ الاقل 0.2.0.x).
+
+**VersioningAuthoritativeDirectory** **0**|**1**::
+ عند ضبط هذا الاخيار الى 1, يقوم تور بإضافة المعلومات حول أي من إصدارات تور
+ لا يزال يعتقد انها آمنة للاستخدام للدليل المنشور. كل
+ سلطة الاصدار 1 هي تلقائيا سلطة للاصدار; سلطات الاصدار 2
+ تقدم هذه الخدمة اختياريا. أنظر **RecommendedVersions**,
+ **RecommendedClientVersions**, و **RecommendedServerVersions**.
+
+**NamingAuthoritativeDirectory** **0**|**1**::
+ عند ضبط هذا الاصدار الى 1, عندها يقوم الخادم بالاعلان بأن لديه
+ آراء حول إرتباطات الاسم المستعار الى البصمة. سوف يقوم بشمل هذه
+ الآراء في صفحات حالة الشبكة المنشورة الخاصة به, عن طريق إدراج الخوادم مع العلامة "Named" اذا كان الربط الصحيح بين ذلك الاسم المستعار والبصمة
+ تم تسجيله مع خادم الدليل. تسمية خوادم الدليل سوف يؤدي الى رفض
+ قبول او نشر الواصفات التي تتعارض مع الربط المسجل. أنظر
+ **approved-routers** في قسم **الملفات** في الاسفل.
+
+**HSAuthoritativeDir** **0**|**1**::
+ When this option is set in addition to **AuthoritativeDirectory**, Tor also
+ accepts and serves v0 hidden service descriptors,
+ which are produced and used by Tor 0.2.1.x and older. (Default: 0)
+
+**HidServDirectoryV2** **0**|**1**::
+ عند ضبط هذا الخيار, يقوم تور بقبول وخدمة واصفات خدمة v2
+ الخفية. ضبط DirPort ليس مطلوبا لهذا, لأن العملاء
+ يقومون بالاتصال من خلال ORPort افتراضيا. (افتراضيا: 1)
+
+**BridgeAuthoritativeDir** **0**|**1**::
+ عند ضبط هذا الخيار بالاضافة الى **AuthoritativeDirectory**, يقوم تور
+ بقبول وخدمة واصفات الراوتر, ولكنه يخزن ويخدم وثائق
+حالة الشبكة الاساسية بدلا من توليد الوثائق الخاصة به. (افتراضيا: 0)
+
+**MinUptimeHidServDirectoryV2** __N__ **seconds**|**minutes**|**hours**|**days**|**weeks**::
+ الحد الادنى لجهوزية دليل خدمة v2 الخفية لتكون مقبولة على هذا النحو من قبل
+ الدلائل الموثوقة. (افتراضيا: 24 ساعة)
+
+**DirPort** __منفذ__::
+ أعلن عن خدمة الدليل على هذا المنفذ.
+
+**DirListenAddress** __IP__[:__منفذ__]::
+ أربط خدمة الدليل لهذا العنوان. اذا قمت بتحديد منفذ, أربط
+ لهذا المنفذ بدلا من المنفذ المحدد في DirPort. (افتراضيا: 0.0.0.0)
+ يمكن تحديد هذا التوجيه عدة مرات للربط الى عدة
+ عناوين/منافذ.
+
+**DirPolicy** __سياسة__,__سياسة__,__...__::
+ أضبط سياسة مدخل لهذا الخادم, للحد من الذين يستطيعون الاتصال
+ بمنافذ الدليل. يكون لدى السياسات نفس شكل سياسات المخرج أعلاه.
+
+خيارات خادم سلطة الدليل
+----------------------------------
+
+**RecommendedVersions** __سلسلة__::
+ السلسلة هي قائمة مفصولة بفاصلة لإصدارات تور التي يعتقد حاليا أنها
+ آمنة. تكون القائمة مشمولة في كل دليل, والعقد التي تستجوب
+ تعريف الدليل فيما اذا كانوا يحتاجون الى التطوير. يمكن ان يظهر هذا الخيار
+ عدة مرات: يتم الجمع بين القيم من خطوط مختلفة معا.عند
+ ضبط هذا, عندها يجب ضبط **VersioningAuthoritativeDirectory** أيضا.
+
+**RecommendedClientVersions** __سلسلة__::
+ السلسلة هي قائمة مفصولة بفاصلة لإصدارات تور التي يعتقد حاليا أنها
+ آمنة الاستخدام من قبل العملاء. هذه المعلومات تكون مشمولة في أدلة الاصدار 2
+ . اذا لم يتم ضبط هذا, فإن قيمة **RecommendedVersions**
+ تكون مستخدمة. عند ضبط هذا, فإن **VersioningAuthoritativeDirectory** يجب
+ ضبطه أيضا.
+
+**RecommendedServerVersions** __سلسلة__::
+ السلسلة هي قائمة مفصولة بفاصلة لإصدارات تور التي يعتقد حاليا أنها
+ آمنة الاستخدام للخوادم. هذه المعلومات تكون مشمولة في أدلة الاصدار 2
+ . اذا لم يتم ضبط هذا, فإن قيمة **RecommendedVersions**
+ تكون مستخدمة. عند ضبط هذا, فإن **VersioningAuthoritativeDirectory** يجب
+ ضبطه أيضا.
+
+**ConsensusParams** __سلسلة__::
+ السلسلة هي قائمة مفصولة بمسافة للمفتاح=أزواج القيمة التي سوف يقوم تور بشملها
+ في خط "params" لتصويت networkstatus الخاص به.
+
+**DirAllowPrivateAddresses** **0**|**1**::
+ اذا تم الضبط الى 1, سوف يقوم تور بقبول واصفات الراوتر مع مكونات "العنوان"
+ التعسفية. من ناحية أخرى, اذا كان العنوان ليس عنوانIP او كان عنوانIP
+ خاص, سوف يرفض واصف الراوتر. افتراضيا الى 0.
+
+**AuthDirBadDir** __نمط_العنوان...__::
+ الدلائل الموثوقة فقط. مجموعة من أنماط العنوان للخوادم التي
+ سوف يتم إدراجها كدلائل سيئة في أي وثيقة لحالة الشبكة
+ تنشرها هذه السلطة, اذا تم ضبط**AuthDirListBadDirs**.
+
+**AuthDirBadExit** __نمط_العنوان...__::
+ الدلائل الموثوقة فقط. مجموعة من أنماط العنوان للخوادم التي
+ سوف يتم إدراجها كمخارج سيئة في أي وثيقة لحالة الشبكة تنشرها هذه
+ السلطة, اذا تم ضبط **AuthDirListBadExits**.
+
+**AuthDirInvalid** __نمط_العنوان...__::
+ الدلائل الموثوقة فقط. مجموعة من أنماط العنوان للخوادم التي
+ التي سوف لن يتم إدراجها ك "valid" في أي وثيقة لحالة الشبكة التي
+ تنشرها هذه السلطة.
+
+**AuthDirReject** __نمط_العنوان__...::
+ الدلائل الموثوقة فقط. مجموعة من أنماط العنوان للخوادم التي
+ التي سوف لن يتم إدراجها على الإطلاق في أي وثيقة لحالة الشبكة التي
+ تنشرها هذه السلطة, او قبولها كعنوان OR في أي واصف
+ تقدم للنشر من قبل هذه السلطة.
+
+**AuthDirListBadDirs** **0**|**1**::
+ الدلائل الموثوقة فقط. اذا تم الضبط الى 1, لدى هذا الدليل بعض
+ الآراء حول أي العقد غير مناسبة كمخازن للدليل. (لا تقم بضبط
+ هذا الى 1 مالم تخطط لإدراج الدلائل التي لا تعمل على انها سيئة;
+ وإلا, فأنت تصوّت بفعالية لصالح كل دليل
+ معلن.)
+
+**AuthDirListBadExits** **0**|**1**::
+ الدلائل الموثوقة فقط. اذا تم الضبط الى 1, لدى هذا الدليل بعض
+ الآراء حول أي العقد غير مناسبة كعقدة مخرج. (لا تقم بضبط هذا
+ الى 1 مالم تخطط لإدراج المخارج التي لا تعمل على انها سيئة; وإلا, فأنت
+ تصوت بفعالية لصالح كل مخرج معلن كمخرج.)
+
+**AuthDirRejectUnlisted** **0**|**1**::
+ الدلائل الموثوقة فقط. اذا تم الضبط الى 1, يقوم خادم الدليل برفض
+ جميع واصفات الخادم المحمّلة التي لم يتم ادراجها صراحة في
+ ملف البصمات. يكون هذا بمثابة "زر الذعر" اذا تعرضنا للاصابة من هجوم سيبيلSybil
+ . (افتراضيا: 0)
+
+**AuthDirMaxServersPerAddr** __NUM__::
+ الدلائل الموثوقة فقط. أقصى عدد ممكن من الخوادم التي سوف نقوم
+ بإدراجها كخوادم مقبولة على عنوان IP وحيد. أضبط هذا الى "0" بالنسبة الى "no limit".
+ (افتراضيا: 2)
+
+**AuthDirMaxServersPerAuthAddr** __NUM__::
+ الدلائل الموثوقة فقط. مثل AuthDirMaxServersPerAddr, لكن ينطبق
+ على عناوين مشتركة مع سلطات الدليل. (افتراضيا: 5)
+
+**V3AuthVotingInterval** __N__ **minutes**|**hours**::
+ دلائل V3 الموثوقة فقط. تكوين فاصل التصويت الزمني المفضل
+ للخادم. لاحظ ان الاقتراع سوف يحدث __فعلا__ في الفترة الزمنية المختارة
+ بالإجماع من جميع الفترات الزمنية المفضلة للسلطات. هذا الوقت
+ يجب تقسيمه بالتساوي في اليوم. (افتراضيا: 1 ساعة)
+
+**V3AuthVoteDelay** __N__ **minutes**|**hours**::
+ دلائل V3 الموثوقة فقط. تكوين التأخير المفضل للخادم
+ بين نشر تصويته وعلى افتراض ان لديه جميع الاصوات من جميع
+ الدلائل الاخرى. لاحظ ان الوقت الفعلي المستخدم ليس الوقت المفضل
+ للخادم, بل هو بإجماع جميع الأفضليات. (افتراضيا: 5 دقائق.)
+
+**V3AuthDistDelay** __N__ **minutes**|**hours**::
+ دلائل V3 الموثوقة فقط. تكوين التأخير المفضل للخادم
+ بين نشر إجماعه وتوقيعه وعلى إفتراض ان لديه جميع
+ التوقيعات من جميع السلطات الاخرى. لاحظ ان الوقت الفعلي المستخدم
+ ليس الوقت المفضل للخادم, بل هو بإجماع جميع الأفضليات.
+ (افتراضيا: 5 دقائق.)
+
+**V3AuthNIntervalsValid** __NUM__::
+ دلائل V3 الموثوقة فقط. تكوين رقم VotingIntervals
+ الذي يجب ان يكون الإجماع صالحا له. إختيار الارقام الكبيرة
+ يزيد من مخاطر تقسيم الشبكة; إختيار الارقام الصغيرة يزيد من
+ حركة مرور الدليل. لاحظ ان الرقم الفعلي للفترات الزمنية المستخدم ليس
+ الرقم المفضل للخادم, بل هو بإجماع جميع الأفضليات. يجب ان يكون على
+ الاقل 2. (افتراضيا: 3.)
+
+**V3BandwidthsFile** __FILENAME__::
+ V3 authoritative directories only. Configures the location of the
+ bandiwdth-authority generated file storing information on relays' measured
+ bandwidth capacities. (Default: unset.)
+
+خيارات الخدمة الخفية
+----------------------
+
+تستخدم الخيارات التالية لتكوين خدمة خفية.
+
+**HiddenServiceDir** __دليل__::
+ يخزن ملفات البيانات لخدمة خفية في الدليل. كل خدمة خفية
+ يجب ان يكون لديها دليل منفصل. يمكنك استخدام هذا الخيار عدة مرات
+ لتحديد خدمات متعددة.
+
+**HiddenServicePort** __منفذ_ظاهري__ [__الهدف__]::
+ تكوين المنفذ الظاهري VIRTPORT لخدمة خفية. يمكنك استخدام هذا الخيار
+ عدة مرات; في كل مرة ينطبق على الخدمة بإستخدام
+ hiddenservicedir الأكثر حداثة. افتراضيا, يقوم هذا الخيار بتعيين المنفذ الظاهري الى
+ نفس المنفذ على 127.0.0.1. يمكنك تجاوز المنفذ المستهدف, العنوان المستهدف, او
+ كلاهما عن طريق تحديد هدف لعنوان, منفذ, او عنوان:منفذ. يمكن ان يكون لديك ايضا
+ عدة خطوط مع نفس المنفذ الظاهري: عند قيام مستخدم بالاتصال بذلك
+ المنفذ الظاهري, سيتم إختيار أحد الاهداف من تلك الخطوط عشوائيا.
+
+**PublishHidServDescriptors** **0**|**1**::
+ اذا تم الضبط الى 0, سوف يقوم تور بتشغيل أي خدمات خفية تكوّنها, لكن لن يقوم
+ بتعريض تعيين الدليل. يكون هذا الخيار مفيدا اذا
+ كنت تستخدم تحكم تور الذي يعالج نشر الخدمة الخفية لك.
+ (افتراضيا: 1)
+
+**HiddenServiceVersion** __إصدار__,__إصدار__,__...__::
+ قائمة بإصدارات واصف خدمة التعيين لنشر للخدمة
+ الخفية. حاليا, النسخة 2 فقط مدعومة. (افتراضيا: 2)
+
+**HiddenServiceAuthorizeClient** __نوع-المصادقة__ __اسم-العميل__,__اسم-العميل__,__...__::
+ اذا تم تكوينه, تكون الخدمة الخفية قابلة للوصول للعملاء المصرّح بهم
+ فقط. يمكن ان يكون نوع-المصادقة إما \'basic' لبروتوكول ترخيص
+ الأغراض العامة او \'stealth' لبروتوكول أقل تحجيما والذي أيضا
+ يقوم بإخفاء نشاط الخدمة عن العملاء غير المصرّح بهم. العملاء فقط
+ المدرجون هنا لديهم التصريح للوصول الى الخدمة الخفية. أسماء العملاء الصالحة
+ من 1 الى 19 حرفا واستخدم الاحرف فقط كما في A-Za-z0-9+-_ (بدون
+ مسافات). اذا تم ضبط هذا الخيار, لا يمكن الوصول للخدمة الخفية
+ بالنسبة للعملاء الذين ليس لديه تصريح. بيانات التفويض المولّدة يمكن
+ ايجادها في ملف hostname. يحتاج العملاء الى وضع بيانات التفويض هذه في
+ ملف التكوين الخاص بهم بإستخدام **HidServAuth**.
+
+**RendPostPeriod** __N__ **seconds**|**minutes**|**hours**|**days**|**weeks**::
+ Every time the specified period elapses, Tor uploads any rendezvous
+ service descriptors to the directory servers. This information is also
+ uploaded whenever it changes. (Default: 1 hour)
+
+إختبار خيارات الشبكة
+-----------------------
+
+تستخدم الخيارات التالية لتشغيل إختبار شبكة تور.
+
+**TestingTorNetwork** **0**|**1**::
+ اذا تم الضبط الى 1, يقوم تور بتعديل القيم الافتراضية لخيارات التكوين في الاسفل,
+ بحيث يصبح من السهل ضبط إختبار شبكة تور. يمكن ضبطه فقط اذا
+ كان ضبط DirServers اللا افتراضي قد تم ضبطه. لا يمكن إلغاء ضبطه أثناء تشغيل تور.
+ (افتراضيا: 0) +
+
+ ServerDNSAllowBrokenConfig 1
+ DirAllowPrivateAddresses 1
+ EnforceDistinctSubnets 0
+ AssumeReachable 1
+ AuthDirMaxServersPerAddr 0
+ AuthDirMaxServersPerAuthAddr 0
+ ClientDNSRejectInternalAddresses 0
+ ClientRejectInternalAddresses 0
+ ExitPolicyRejectPrivate 0
+ V3AuthVotingInterval 5 minutes
+ V3AuthVoteDelay 20 seconds
+ V3AuthDistDelay 20 seconds
+ MinUptimeHidServDirectoryV2 0 seconds
+ TestingV3AuthInitialVotingInterval 5 minutes
+ TestingV3AuthInitialVoteDelay 20 seconds
+ TestingV3AuthInitialDistDelay 20 seconds
+ TestingAuthDirTimeToLearnReachability 0 minutes
+ TestingEstimatedDescriptorPropagationTime 0 minutes
+
+**TestingV3AuthInitialVotingInterval** __N__ **minutes**|**hours**::
+ مثل V3AuthVotingInterval, لكن لفترة تصويت أولية قبل إنشاء
+ أول إجماع. تغيير هذا يتطلب ضبط
+ **TestingTorNetwork**. (افتراضيا: 30 دقيقة)
+
+**TestingV3AuthInitialVoteDelay** __N__ **minutes**|**hours**::
+ مثل TestingV3AuthInitialVoteDelay, لكن لفترة تصويت أولية قبل
+ إنشاء أول إجماع. تغيير هذا يتطلب ضبط
+ **TestingTorNetwork**. (افتراضيا: 5 دقائق)
+
+**TestingV3AuthInitialDistDelay** __N__ **minutes**|**hours**::
+ مثل TestingV3AuthInitialDistDelay, لكن لفترة تصويت أولية قبل
+ إنشاء أول إجماع. تغيير هذا يتطلب ضبط
+ **TestingTorNetwork**. (افتراضيا: 5 دقائق)
+
+**TestingAuthDirTimeToLearnReachability** __N__ **minutes**|**hours**::
+ بعد بدء التشغيل كسلطة, لا تقم بعمل مطالبات حول ما إذا كانت الراوترات
+ قيد التشغيل حتى إنقضاء الكثير من هذا الوقت. تغيير هذا يتطلب ضبط
+ **TestingTorNetwork**. (افتراضيا: 30 دقيقة)
+
+**TestingEstimatedDescriptorPropagationTime** __N__ **minutes**|**hours**::
+ يحاول العملاء تنزيل واصفات الراوتر من مخازن الدليل بعد هذا
+ الوقت. تغيير هذا يتطلب ضبط **TestingTorNetwork**. (افتراضيا:
+ 10 دقائق)
+
+إشارات
+-------
+
+يلتقط تور الاشارات التالية:
+
+**SIGTERM**::
+ سوف يلتقط تور هذا, يقوم بتنظيفه ومزامنته للقرص اذا لزم الامر, ثم الخروج.
+
+**SIGINT**::
+ عملاء تور يحسنون التصرف كما هو الحال مع SIGTERM; لكن خوادم تور سوف تقوم بإغلاق بطيء
+ متحكم به, إغلاق المستمعين والانتظار 30 ثانية قبل الخروج.
+ (يمكن تكوين التأخير مع خيار التكوين ShutdownWaitLength config.)
+
+**SIGHUP**::
+ The signal instructs Tor to reload its configuration (including closing and
+ reopening logs), and kill and restart its helper processes if applicable.
+
+**SIGUSR1**::
+ إحصاءات السجل حول الاتصالات الحالية, الاتصالات الماضية وتدفق التيار.
+
+**SIGUSR2**::
+ يقوم بتحويل جميع السجلات الى تصحيح مستوى التسجيل. يمكنك الرجوع الى المستويات السابقة عن طريق
+ إرسال SIGHUP.
+
+**SIGCHLD**::
+ يستقبل تور هذه الاشارة عند خروج أحد عمليات المساعد الخاص به, حتى
+ يتمكن من التنظيف.
+
+**SIGPIPE**::
+ يقوم تور بإلتقاط الاشارة وتجاهلها.
+
+**SIGXFSZ**::
+ اذا كانت هذه الاشارة موجودة في النظام الاساسي الخاص بك, يقوم تور بإلتقاطها وتجاهلها.
+
+ملفات
+-----
+
+**@CONFDIR@/torrc**::
+ ملف التكوين, والذي يحتوي أزواج من "قيمة الخيار".
+
+**@LOCALSTATEDIR@/lib/tor/**::
+ عملية تور تخزن المفاتيح والبيانات الاخرى هنا.
+
+__DataDirectory__**/cached-status/**::
+ وثيقة حالة الشبكة الأكثر تنزيلا مؤخرا لكل سلطة.
+ كل ملف يحمل وثيقة واحدة من هذا القبيل; أسماء الملفات هي بصمات مفتاح
+ الهوية الست عشرية لسلطات الدليل.
+
+__DataDirectory__**/cached-descriptors** و **cached-descriptors.new**::
+ هذه الملفات تحمل حالات الراوتر التي تم تنزيلها. بعض الراوترات يمكن ان تظهر أكثر
+ من مرة واحدة; اذا كان الامر كذلك, يتم إستخدام الواصف المنشور مؤخرا. الخطوط
+ التي تبدأ بعلامات @ هي شروح تحتوي مزيدا من المعلومات حول
+ الراوتر المعطى. ملف ".new" هو صحيفة إضافة فقط; عندما يصبح
+ كبيرا جدا, يتم دمج جميع المدخلات في ملف واصفات مؤقتة جديد.
+
+__DataDirectory__**/cached-routers** and **cached-routers.new**::
+ إصدارات قديمة من الواصفات المؤقتة والواصفات المؤقتة الجديدة. عندما
+ يعجز تور عن إيجاد الملفات الأحدث, يبحث هنا بدلا من ذلك.
+
+__DataDirectory__**/state**::
+ مجموعة من تعيينات قيمة المفتاح الثابتة. يتم توثيقهم في
+ الملف. تشمل هؤلاء:
+ - حراس المدخل الحالي وحالتهم.
+ - قيم عرض النطاق الترددي الحالية المحاسبية (غير مستخدم حتى الآن; أنظر
+ في الأسفل).
+ - متى تم كتابة الملف آخر مرة
+ - أي إصدار من تور يقوم بإنشاء ملف الحالة
+ - لمحة تاريخية موجزة عن استخدام عرض النطاق الترددي, كما أنتج في واصفات
+ الراوتر.
+
+__DataDirectory__**/bw_accounting**::
+ يستخدم لتتبّع قيم عرض النطاق الترددي المحاسبية (عندما تبدأ الفترة الحالية
+ وتنتهي; كمية قراءته وكتابته حتى الآن من هذه الفترة). هذا الملف
+ قديم, والبيانات الآن مخزّنة في ملف \'state' كذلك. يستخدم
+ فقط عندما يتم تمكين حساب عرض النطاق الترددي.
+
+__DataDirectory__**/control_auth_cookie**::
+ يستخدم لمصادقة ملفات تعريف الارتباط مع وحدة التحكم. يمكن تجاوز
+ الموقع عن طريق خيار التكوين CookieAuthFile. جدّدت عند بدء التشغيل. أنظر
+ control-spec.txt للمزيد من المعلومات. تستخدم فقط عندما تكون مصادقة ملفات تعريف الارتباط
+ ممكّنة.
+
+__DataDirectory__**/keys/***::
+ يستخدم فقط من قبل الخوادم. يحفظ مفاتيح الهوية ومفاتيح اونيون.
+
+__DataDirectory__**/fingerprint**::
+ يستخدم فقط من قبل الخوادم. يحفظ بصمة مفتاح هوية الخادم.
+
+__DataDirectory__**/approved-routers**::
+ فقط لتسمية خوادم الدليل الموثوق (أنظر
+ **NamingAuthoritativeDirectory**). يسرد هذا الملف الاسم المستعار لروابط
+ الهوية. كل خط يسرد اسم مستعار وبصمة مفصول
+ بمسافة. أنظر ملف **fingerprint** الخاص بك في __DataDirectory__ للحصول على
+ خط مثال. اذا تم رفض الاسم المستعار **!reject** فإن الواصفات من الهوية
+ المعطى (البصمة) ترفض من قبل هذا الخادم. اذا كان
+ **!invalid** فإن الواصفات تقبل ولكن توضع عليها علامة في الدليل بأنها
+ غير صالحة, وهذا, غير موصى به.
+
+__DataDirectory__**/router-stability**::
+ يستخدم فقط من قبل خوادم الدليل الموثوق. يتتبّع القياسات
+ لوقت الراوتر المتوسط بين الفشل حتى يكون لدى السلطات فكرة جيدة حول
+ كيفية ضبط الاشارات الثابتة الخاصة بهم.
+
+__HiddenServiceDirectory__**/hostname**::
+ اسم النطاق <base32-encoded-fingerprint>.هو اسم نطاق اونيون للخدمة الخفية هذه.
+ اذا تم تقييد الخدمة الخفية للعملاء المصرح بهم فقط, يحتوي هذا الملف
+ ايضا بيانات التفويض لجميع العملاء.
+
+__HiddenServiceDirectory__**/private_key**::
+ المفتاح الخاص للخدمة الخفية هذه.
+
+__HiddenServiceDirectory__**/client_keys**::
+ بيانات التفويض للخدمة الخفية القابلة للوصول من قبل
+ العملاء المصرح بهم فقط.
+
+أنظر ايضا
+--------
+**privoxy**(1), **tsocks**(1), **torify**(1) +
+
+**https://www.torproject.org/**
+
+
+الأخطاء
+----
+
+ربما الكثير. لا يزال تور في عملية التنمية. يرجى الابلاغ عنهم.
+
+المؤلفون
+-------
+Roger Dingledine [arma at mit.edu] Nick Mathewson [nickm at alum.mit.edu]
+
Added: website/trunk/manpages/ar/torify.1.txt
===================================================================
--- website/trunk/manpages/ar/torify.1.txt (rev 0)
+++ website/trunk/manpages/ar/torify.1.txt 2011-03-03 13:39:36 UTC (rev 24296)
@@ -0,0 +1,51 @@
+// حقوق التأليف والنشر (c) مشروع تور, شركة.
+// انظر الترخيص للحصول على معلومات الترخيص
+// هذا ملف اسييدوك يستخدم لانشاء مرجع manpage/html.
+// تعلم الأسييدوك في http://www.methods.co.nz/asciidoc/userguide.html
+توريفاي(1)
+======
+بيتر بالفريدر جيكوب ابلباوم
+
+الاسم
+----
+توريفاي - المجمّع لتورسكس (torsocks) او تسكس (tsocks) وتور
+
+الخلاصة
+--------
+**torify** __application__ [__application's__ __arguments__]
+
+الوصف
+-----------
+**توريفاي** هو مجمّع بسيط يحاول إيجاد افضل مجمّع تور كامن
+متاح على النظام. يسمى تورسكس (torsocks) او تسكس (tsocks) مع ملف تكوين
+تور المحدد. +
+
+تورسكس هو مجمّع متطور والذي يقوم صراحة برفض بروتوكول مخطط بيانات المستخدم
+(UDP), يحل عمليات بحث نظام أسماء النطاق (DNS) بأمان ويحمي اتصالات بروتوكول
+التعاون الفني (TCP) بشكل صحيح. +
+
+تسكس هو بحد ذاته مجمّع بين مكتبة تسكس والتطبيق الذي تريد تشغيله بحماية. +
+
+يرجى ملاحظة انه منذ استخدام كلا الاسلوبين LD_PRELOAD, لا يمكن تطبيق توريفاي
+(torify) ليناسب الثنائيات.
+
+تحذير
+-------
+يجب أن تكون على علم أيضا أن طريقة عمل تسكس الحالية على اتصالات بروتوكول
+التعاون الفني (TCP) فقط مدعومة. عليك ان تعلم ان هذا في معظم الحالات لا يشمل
+عمليات بحث اسم المستضيف التي لا تزال يتم توجيهها عبر محلّل النظام العادي
+الخاص بك الى حل اسماء الخوادم العاديين الخاصون بك. ان أداة **تور-ريسولف**(1)
+يمكن ان تكون مفيدة كحل في بعض الحالات. الاسئلة المتداولة (FAQ) لتور في
+https://wiki.torproject.org/noreply/TheOnionRouter/TorFAQ يمكن ان تحتوي على
+مزيد من المعلومات حول هذا الموضوع. +
+
+عند الاستخدام مع تورسكس (torsocks), يجب ان لا يقوم توريفاي (torify) بتسريب
+طلبات نظام أسماء النطاق (DNS) او بيانات بروتوكول مخطط بيانات المستخدم
+(UDP). +
+
+كلاهما سوف يقوم بتسريب بيانات بروتوكول رسائل تحكم الإنترنت (ICMP) .
+
+أنظر ايضا
+--------
+**tor**(1), **tor-resolve**(1), **torsocks**(1), **tsocks**(1),
+**tsocks.conf**(5).
Added: website/trunk/manpages/de/tor-resolve.1.txt
===================================================================
--- website/trunk/manpages/de/tor-resolve.1.txt (rev 0)
+++ website/trunk/manpages/de/tor-resolve.1.txt 2011-03-03 13:39:36 UTC (rev 24296)
@@ -0,0 +1,49 @@
+// Copyright (c) The Tor Project, Inc.
+// Siehe LICENSE für Lizenzinformationen
+// Dies ist eine asciidoc Datei welche dazu verwendet wird die manpage/html Referenz zu erstellen
+// Lerne asciidoc auf http://www.methods.co.nz/asciidoc/userguide.html
+tor-resolve(1)
+==============
+Peter Palfrader
+
+NAME
+----
+tor-resolve - löst einen Hostname zu einer IP Adresse per tor auf
+
+SYNOPSIS
+--------
+**tor-resolve** [-4|-5] [-v] [-x] __hostname__ [__sockshost__[:__socksport__]]
+
+BESCHREIBUNG
+-----------
+**tor-resolve** ist ein einfaches Skript um sich zu einem SOCKS proxy zu verbinden der den SOCKS RESOLVE
+Befehl kennt, übergib ihm einen Hostnamen und erhalte eine IP Adresse zurück.
+
+By default, **tor-resolve** uses the Tor server running on 127.0.0.1 on
+SOCKS port 9050. If this isn't what you want, you should specify an
+explicit __sockshost__ and/or __socksport__ on the command line.
+
+OPTIONEN
+-------
+**-v**::
+Zeige verbose Ausgabe.
+
+**-x**::
+Führt eine Rückwärtsauflösung aus: bekommt den PTR Eintrag für eine IPv4 Adresse zurück.
+
+**-5**::
+Benutze das SOCKS5 Protokoll. (Default)
+
+**-4**::
+Benutzt SOCKS4a statt dem Standard SOCKS5 Protokoll.
+Unterstützt keine DNS Rückwärtsauflösung.
+
+SIEHE AUCH
+--------
+**tor**(1), **torify**(1). +
+
+Siehe doc/socks-extensions.txt in dem Tor Paket für Protokoll Details.
+
+AUTOREN
+-------
+Roger Dingledine <arma(a)mit.edu>, Nick Mathewson <nickm(a)alum.mit.edu>.
Added: website/trunk/manpages/eo/tor-resolve.1.txt
===================================================================
--- website/trunk/manpages/eo/tor-resolve.1.txt (rev 0)
+++ website/trunk/manpages/eo/tor-resolve.1.txt 2011-03-03 13:39:36 UTC (rev 24296)
@@ -0,0 +1,49 @@
+// Aŭtorrajto de la Tor Projekto, Koporacio. (Copyright (c) The Tor Project, Inc.)
+// Vidu LICENSE por permesa informo.
+// Ĉi tio etas asciidoc dosiero uzata generi la manpage/html referenco.
+// Lernu asciidoc ĉe http://www.methods.co.nz/asciidoc/userguide.html
+tor-resolve(1)
+==============
+Peter Palfrader
+
+NOMO
+----
+tor-resolve - trovi gastignomon al IP addreso pri tor
+
+RESUMO
+--------
+**tor-resolve** [-4|-5] [-v] [-x] __hostname__ [__sockshost__[:__socksport__]]
+
+PRISKRIBO
+-----------
+**tor-resolve** estas simpla skripto por konekti al SOCKS prokurilo ke komprenas
+la SOCKS RESOLVE komandon, donu ĝin gastignomon kaj ĝi redonas IP adreson.
+
+By default, **tor-resolve** uses the Tor server running on 127.0.0.1 on
+SOCKS port 9050. If this isn't what you want, you should specify an
+explicit __sockshost__ and/or __socksport__ on the command line.
+
+OPCIOJ
+-------
+**-v**::
+Montri malkoncizan eligon.
+
+**-x**::
+Fari inversan trovon: akiri la PTR-an rikordon por IPv4 adreso.
+
+**-5**::
+Uzi la SOCKS5 protokolon. (Defaŭlto)
+
+**-4**::
+Uzi la SOCKS4a protokokon alie ol la defaŭltan SOCKS5 protokokon.
+Ne subtenas inversa DNS.
+
+VIDU ANKAŬ
+--------
+**tor**(1), **torify**(1). +
+
+Vidu doc/socks-extensions.txt en la Tor pako por detaloj.
+
+AŬTOROJ
+-------
+Roger Dingledine <arma(a)mit.edu>, Nick Mathewson <nickm(a)alum.mit.edu>.
Added: website/trunk/manpages/es/tor-resolve.1.txt
===================================================================
--- website/trunk/manpages/es/tor-resolve.1.txt (rev 0)
+++ website/trunk/manpages/es/tor-resolve.1.txt 2011-03-03 13:39:36 UTC (rev 24296)
@@ -0,0 +1,50 @@
+// Derechos de autor (c) The Tor Project, Inc.
+// Ver LICENSE para la información de licencia
+// Esto es un documento asscii empleado para generar las referencias de las páginas del muanual/html.
+// Aprender asciidoc en http://www.methods.co.nz/asciidoc/userguide.html
+tor-resolve(1)
+==============
+Peter Palfrader
+
+NOMBRE
+----
+tor-resolve - resolver un nombre de host a una dirección IP a través de Tor
+
+SINOPSIS
+--------
+**tor-resolve** [-4|-5] [-v] [-x] __hostname__ [__sockshost__[:__socksport__]]
+
+DESCRIPCION
+-----------
+**tor-resolve** es un simple script para conectarse a un proxy SOCKS conocido
+El comando de resolución de SOCKS, obtiene un nombre de host, y devuelve una dirección IP.
+
+By default, **tor-resolve** uses the Tor server running on 127.0.0.1 on
+SOCKS port 9050. If this isn't what you want, you should specify an
+explicit __sockshost__ and/or __socksport__ on the command line.
+
+OPCIONES
+-------
+**-v**::
+ Mostrar debug.
+
+**-x**::
+ Realizar una búsqueda inversa: obtener el registro PTR para una dirección IPv4.
+
+**-5**::
+ Utilice el protocolo SOCKS5. (Por Defecto)
+
+**-4**::
+ Utilice el protocolo SOCKS4a en lugar del protocolo predeterminado SOCKS5. No
+ soporta resolución de DNS inversa.
+
+VER TAMBIÉN
+--------
+**tor**(1), **torify**(1). +
+
+Véase el doc/socks-extensions.txt en el paquete Tor para los detalles de
+protocolo.
+
+AUTORES
+-------
+Roger Dingledine <arma(a)mit.edu>, Nick Mathewson <nickm(a)alum.mit.edu>.
Added: website/trunk/manpages/es/torify.1.txt
===================================================================
--- website/trunk/manpages/es/torify.1.txt (rev 0)
+++ website/trunk/manpages/es/torify.1.txt 2011-03-03 13:39:36 UTC (rev 24296)
@@ -0,0 +1,51 @@
+// Derechos de autor (c) The Tor Project, Inc.
+// Ver LICENSE para la información de licencia
+// Esto es un documento asscii empleado para generar las referencias de las páginas del muanual/html.
+// Aprender asciidoc en http://www.methods.co.nz/asciidoc/userguide.html
+torify(1)
+==============
+Peter Palfrader Jacob Appelbaum
+
+NOMBRE
+----
+torify - envoltorio para torsocks o tsocks y tor
+
+SINOPSIS
+--------
+**torify** __application__ [__application's__ __arguments__]
+
+DESCRIPCION
+-----------
+**torify** es un envoltorio sencillo que intenta encontrar el envoltorio Tor mejores subyacentes
+disponibles en un sistema. Hace un llamamiento torsocks o tsocks con un archivo de
+configuración específica tor. +
+
+torsocks es una capa mejorada que explictly rechaza UDP, con seguridad
+resuelve consultas de DNS y adecuadamente socksifies las conexiones TCP. +
+
+tsocks sí es un contenedor entre la biblioteca tsocks y la aplicación que
+desea ejecutar socksified. +
+
+Tenga en cuenta que ya que tanto el uso del método LD_PRELOAD, torify no se
+puede aplicar a los binarios suid.
+
+ADVERTENCIA
+-------
+También deben ser conscientes de que la forma tsocks actualmente sólo
+funciona conexiones TCP son socksified. Tenga en cuenta que esta voluntad no
+en la mayoría de circunstancias incluyen las búsquedas de nombre de host que
+aún se enrutan a través de su programa de resolución normal del sistema al
+teléfono de servidores de nombres habituales resolver. ** El tor-resolver **
+(1) herramienta puede ser útil como una solución en algunos casos. El Tor
+FAQ en la página https://wiki.torproject.org/noreply/TheOnionRouter/TorFAQ
+pueda disponer de información adicional sobre este tema. +
+
+Cuando se utiliza con torsocks, las solicitudes DNS torify no presente fugas
+o datos UDP. +
+
+Ambos se fuga de datos ICMP.
+
+VER TAMBIÉN
+--------
+**tor**(1), **tor-resolve**(1), **torsocks**(1), **tsocks**(1),
+**tsocks.conf**(5).
Added: website/trunk/manpages/et/tor-resolve.1.txt
===================================================================
--- website/trunk/manpages/et/tor-resolve.1.txt (rev 0)
+++ website/trunk/manpages/et/tor-resolve.1.txt 2011-03-03 13:39:36 UTC (rev 24296)
@@ -0,0 +1,49 @@
+// Copyright (c) The Tor Project, Inc.
+// Vaata faili LICENSE litsentseerimistingimuste jaoks.
+// See on asciidoc fail, mida kasutatakse manuaali/HTML ülevaate genereerimiseks.
+// Õpi asciidoc'i siin: http://www.methods.co.nz/asciidoc/userguide.html
+tor-resolve(1)
+==============
+Peter Palfrader
+
+NIMI
+----
+tor-resolve - tõlgi masina nimi läbi Tori võrgu IP aadressiks
+
+KOKKUVÕTE
+---------
+**tor-resolve** [-4|-5] [-v] [-x] __masinanimi__ [__sockshost__[:__socksport__]]
+
+KIRJELDUS
+---------
+**tor-resolve** on lihtne programm ühenduse loomiseks SOCKS vaheserveriga, mis teab
+SOCKS RESOLVE käsku, serverile masinanime edastamiseks ning IP-aadressi saamiseks.
+
+By default, **tor-resolve** uses the Tor server running on 127.0.0.1 on
+SOCKS port 9050. If this isn't what you want, you should specify an
+explicit __sockshost__ and/or __socksport__ on the command line.
+
+SUVANDID
+--------
+**-v**::
+ Näita palju informatsiooni.
+
+**-x**::
+ Teosta vastupidine päring: hangi PTR-kirje IPv4-addressi jaoks.
+
+**-5**::
+ Kasuta SOCKS5 protokolli. (Tavaline)
+
+**-4**::
+ Kasuta SOCKS4a protokolli SOCKS5 protokolli asemel. Ei toeta tagurpidist DNSI.
+
+VAATA KA
+--------
+**tor**(1), **torify**(1). +
+
+Vaata faili doc/socks-extensions.txt Tori pakettis protokolli detailide
+jaoks.
+
+AUTORID
+-------
+Roger Dingledine <arma(a)mit.edu>, Nick Mathewson <nickm(a)alum.mit.edu>.
Added: website/trunk/manpages/fr/tor-resolve.1.txt
===================================================================
--- website/trunk/manpages/fr/tor-resolve.1.txt (rev 0)
+++ website/trunk/manpages/fr/tor-resolve.1.txt 2011-03-03 13:39:36 UTC (rev 24296)
@@ -0,0 +1,50 @@
+//Droits d'auteur The Tor Project, Inc.
+//Se référer au fichier LICENSE pour toute information sur la license
+//Ceci est un fichier asciidoc utilisé pour générer la page principale manpage/html.
+//Apprenez asciidoc sur http://www.methods.co.nz/asciidoc/userguide.html
+TOR(1)
+======
+Peter Palfrader
+
+NOM
+----
+tor-resolve - trouver le nom d'hôte (hostname) à partir d'une addresse IP
+via tor
+
+SYNOPSIS
+--------
+**tor-resolve** [-4|-5] [-v] [-x] __hostname__ [__sockshost__[:__socksport__]]
+
+DESCRIPTION
+-----------
+**tor-resolve** est un script permettant de se connecter a un proxy SOCKS connaissant la commande SOCKS RESOLVE, lui donnant un nom d'hote (hostname)
+et retourner une addresse IP.
+
+By default, **tor-resolve** uses the Tor server running on 127.0.0.1 on
+SOCKS port 9050. If this isn't what you want, you should specify an
+explicit __sockshost__ and/or __socksport__ on the command line.
+
+OPTIONS
+-------
+**-v**::
+Afficher le résultat.
+
+**-x**::
+Effectuer une recherche inverse: obtenir le PTR record avec une addresse IPv4.
+
+**-5**::
+Utiliser le protocole SOCKS5. (Par défault)
+
+**-4**::
+Utiliser le protocole SOCKS4a plutot que le protocole SOCKS5. Ne peut plus effectuer de recherche DNS inverse.
+
+VOIR AUSSI
+--------
+**tor**(1), **torify**(1). +
+
+Se référer au document doc/socks-extensions.txt dans le pack Tor pour plus
+de détails sur les protocoles utilisés.
+
+AUTEURS
+-------
+Roger Dingledine <arma(a)mit.edu>, Nick Mathewson <nickm(a)alum.mit.edu>.
Added: website/trunk/manpages/fr/tor.1.txt
===================================================================
--- website/trunk/manpages/fr/tor.1.txt (rev 0)
+++ website/trunk/manpages/fr/tor.1.txt 2011-03-03 13:39:36 UTC (rev 24296)
@@ -0,0 +1,1527 @@
+// Droits d'auteur The Tor Project, Inc.
+// Se référer au fichier LICENSE pour toute information sur la license
+// Ceci est un fichier asciidoc utilisé pour générer la page principale manpage/html.
+// Apprenez asciidoc sur http://www.methods.co.nz/asciidoc/userguide.html
+TOR(1)
+======
+
+NOM
+----
+tor - Le routeur Onion de deuxième génération
+
+
+SYNOPSIS
+--------
+**tor** [__OPTION__ __value__]...
+
+DESCRIPTION
+-----------
+__tor__ est un service de communication qui cible les communications
+anonymes. Les utilisateurs choisissent un chemin routé à travers une série
+de noeuds et négotient un "circuit virtuel" à travers ce réseau au sein
+duquel, chaque noeud connaît son prédécesseur et son successeur mais n'a
+aucune information sur les autres. Le trafic qui circule dans le circuit est
+déchiffré par une clef symétrique à chaque noeud, ce qui révèle le prochain
+noeud. +
+
+A la base, __tor__ met à disposition un réseau distribué de serveurs («
+routeurs oignon »). L'utilisateur fait rebondir ses flux de communication
+TCP -- trafic du Web, FTP, SSH -- autour du réseau, de façon à ce que
+receveurs, observateurs, et les routeurs eux mêmes ont difficulté à
+apprendre la provenance de ces flux.
+
+OPTIONS
+-------
+**-h**, **-help**::
+Afficher un court message d'aide et quitter.
+
+**-f** __FICHIER__::
+FICHIER contient d'avantage de paires « option paramètre » (@CONFDIR@/torrc par défaut)
+
+**--hash-password**::
+ Génère un mot de passe haché pour l'accès au port de contrôle.
+
+**--list-fingerprint**::
+ Génère vos clefs et affiche votre surnom et une empreinte.
+
+**--verify-config**::
+Vérifier que le fichier de configuration est valide.
+
+**--nt-service**::
+ **--service [install|remove|start|stop]** Gestion du service Tor
+ sur Windows NT/2000/XP. Vous trouverez davantage d'instructions sur
+ https://wiki.torproject.org/noreply/TheOnionRouter/TorFAQ#WinNTService
+
+**--list-torrc-options**::
+Enumerer les options valides.
+
+**--version**::
+Afficher la version de Tor et quitter.
+
+**--quiet**::
+ Démarre Tor sans console de journal à moins que cela soit indiqué explicitement.
+ (Par défaut, Tor démarre avec un niveau de journalisation à "notice" ou plus sur
+ la console, jusqu'à ce qu'il ait complètement intégré sa configuration.)
+
+Other options can be specified either on the command-line (--option
+ value), or in the configuration file (option value or option "value").
+ Options are case-insensitive. C-style escaped characters are allowed inside
+ quoted values. Options on the command line take precedence over
+ options found in the configuration file, except indicated otherwise. To
+ split one configuration entry into multiple lines, use a single \ before
+ the end of the line. Comments can be used in such multiline entries, but
+ they must start at the beginning of a line.
+
+**BandwidthRate** __N__ **bytes**|**KB**|**MB**|**GB**::
+ A token bucket limits the average incoming bandwidth usage on this node to
+ the specified number of bytes per second, and the average outgoing
+ bandwidth usage to that same value. If you want to run a relay in the
+ public network, this needs to be _at the very least_ 20 KB (that is,
+ 20480 bytes). (Default: 5 MB)
+
+**BandwidthBurst** __N__ **bytes**|**KB**|**MB**|**GB**::
+ Limite la taille maximale de jetons (également connu sous le terme burst) au chiffre
+ en nombre d'octets indiqué, dans chaque direction. (Défaut: 10 MB)
+
+**MaxAdvertisedBandwidth** __N__ **bytes**|**KB**|**MB**|**GB**::
+ Aucune bande passante supérieure à cette option ne sera affichée comme
+ BandwithRate, si cette option est spécifiée. Les opérateurs de serveur qui désirent
+ réduire leur nombre de clients qui veulent construire des circuits à traver eux (
+ puisque c'est proportionnel à la bande passante affichée) peuvent réduire ainsi
+ leur consommation CPU sans impacter leurs performances réseau.
+
+**RelayBandwidthRate** __N__ **bytes**|**KB**|**MB**|**GB**::
+ If not 0, a separate token bucket limits the average incoming bandwidth
+ usage for \_relayed traffic_ on this node to the specified number of bytes
+ per second, and the average outgoing bandwidth usage to that same value.
+ Relayed traffic currently is calculated to include answers to directory
+ requests, but that may change in future versions. (Default: 0)
+
+**RelayBandwidthBurst** __N__ **bytes**|**KB**|**MB**|**GB**::
+ If not 0, limit the maximum token bucket size (also known as the burst) for
+ \_relayed traffic_ to the given number of bytes in each direction.
+ (Default: 0)
+
+**PerConnBWRate** __N__ **bytes**|**KB**|**MB**|**GB**::
+ Si spécifiée, limite la bande passante pour chaque connexion non issue
+ d'un relais. Vous ne devriez jamais avoir besoin de modifier cette valeur car
+ elle est définie pour tout le réseau dans le consensus. Votre relais utilisera
+ cette valeur par défaut. (Défaut: 0)
+
+**PerConnBWBurst** __N__ **bytes**|**KB**|**MB**|**GB**::
+ Si spécifiée, limite la bande passante pour chaque connexion non issue
+ d'un relais. Vous ne devriez jamais avoir besoin de modifier cette valeur car
+ elle est définie pour tout le réseau dans le consensus. Votre relais utilisera
+ cette valeur par défaut. (Défaut: 0)
+
+**ConnLimit** __NUM__::
+ The minimum number of file descriptors that must be available to the Tor
+ process before it will start. Tor will ask the OS for as many file
+ descriptors as the OS will allow (you can find this by "ulimit -H -n").
+ If this number is less than ConnLimit, then Tor will refuse to start. +
+ +
+ You probably don't need to adjust this. It has no effect on Windows
+ since that platform lacks getrlimit(). (Default: 1000)
+
+**ConstrainedSockets** **0**|**1**::
+ Lorsque cette option est indiquée, Tor indiquera au noyau d'essayer de
+ compresser les tampons de toutes les sockets à la taille indiquée dans
+ **ConstrainedSockSize**. Elle est utile pour les serveurs virtuels et les autres
+ environnements où les tampons TCP sont limités au niveau système. Si vous
+ êtes sur un serveur virtuel et que vous rencontrez le message: "Error
+ creating network socket: No buffer space available", c'est que vous faîtes
+ face à ce problème précis. +
+ +
+ La solution la plus adaptée est que l'administrateur augmente lui-même la
+ quantité de tampon pour la machine via /proc/sys/net/ipv4/tcp_mem ou un
+ équivalent. Cette option de configuration intervient en second niveau. +
+ +
+ L'option DirPort ne devrait pas être utilisée si les tampons TCP sont rares. Le
+ cache des requêtes d'annuaire consomme des sockets supplémentaires qui
+ intensifient le problème. +
+ +
+ Vous ne devriez **pas** autoriser cette option à moins de rencontre le problème
+ "pas assez d'espace de tampon disponible". Réduire la taille des tampons TCP
+ modifie la taille de la fenêtre des flux TCP et réduira le flot proportionnellement au
+ temps de parcours sur les connexions entre deux hôtes très éloignés. (Défaut: 0.)
+
+**ConstrainedSockSize** __N__ **bytes**|**KB**::
+ Lorsque **ConstrainedSockets** est activée, les tampons de réception et de
+ transmission de toutes les sockets seront fixée à cette limite. La valeur doit être
+ comprise entre 2048 et 262114 en incréments de 1024 octets. Par défaut, la
+ valeur de 8192 est recommandée.
+
+**ControlPort** __Port__::
+ Si indiqué, Tor acceptera des connexions sur ce port et leur permettra
+ de contrôler le processus Tor en utilisant le protocole de contrôle de Tor
+ (décrit dans control-spec.txt). Note: À moins d'avoir renseigné l'option
+ **HashedControlPassword** ou **CookieAuthentication**, cette option permettra
+ à n'importe quel processus de l'hôte local de contrôler Tor. Cette option est indispensable pour
+ de nombreux contrôleurs Tor lesquels utilisent majoritairement la valeur de 9051.
+
+**ControlListenAddress** __IP__[:__PORT__]::
+ Lie la socket du contrôleur sur cette adresse. Si vous avez spécifier un port,
+ il sera utilisé à la place de ControlPort. Nous vous recommandons fortement de
+ laisser cette option vide à moins de savoir ce que vous faîtes donner l'accès au
+ port de contrôle pour des attaquants est très dangereux. (Défaut: 127.0.0.1)
+ Cette directive peut être indiquée plusieurs fois pour lier plusieurs adresses/ports.
+
+**ControlSocket** __Chemin__::
+ Identique à ControlPort, mais écoute sur une socket Unix au lieu d'une socket
+ TCP. (Pour les systèmes Unix et Unix-like seulement.)
+
+**HashedControlPassword** __mot_de_passe_haché__::
+ Les connexions au port de contrôle ne sont pas autorisées si le processus ne connaît pasDon't allow any connections on the control port except when the other
+ le mot de passe dont le hash est __mot_de_pass_haché__. Vous pouvez hacher le
+ mot de passe en lançant la commande "tor --hash-password
+ __password__". Vous pouvez fournir plusieurs mots de passe acceptables en utilisant
+ plusieurs lignes HashedControlPassword.
+
+**CookieAuthentication** **0**|**1**::
+ Lorsque cette option est renseignée à 1, les connexions sur le port de contrôle sont rejetées
+ à moins que le processus connaisse le contenu d'un fichier nommé
+ "control_auth_cookie", que Tor créé dans son répertoire de données. Cette
+ méthode d'authentification ne devrait être utilisée que sur des systèmes avec un
+ système de fichiers bien sécurisé. (Défaut: 0)
+
+**CookieAuthFile** __Chemin__::
+ Si indiquée, cette option modifie le chemin et le nom de fichier par défaut
+ pour le fichier de cookies de Tor. (Consultez CookieAuthentication ci-dessus.)
+
+**CookieAuthFileGroupReadable** **0**|**1**|__Nom_de_Groupe__::
+ Si cette option est mise à 0, le groupe du système de fichier mentionné
+ ne pourra pas lire le fichier de cookie. Si cette option est à 1, le fichier sera
+ lisible par le GID par défaut. [Rendre le fichier lisible par d'autres groupes n'
+ est pas encore implémenté; merci de nous faire savoir si vous avez besoin
+ de cette fonctionnalité.] (Défaut: 0).
+
+**DataDirectory** __DIR__::
+ Enregistre les données de travail dans DIR (Défaut: @LOCALSTATEDIR@/lib/tor)
+
+**DirServer** [__nickname__] [**flags**] __address__:__port__ __fingerprint__::
+ Use a nonstandard authoritative directory server at the provided address
+ and port, with the specified key fingerprint. This option can be repeated
+ many times, for multiple authoritative directory servers. Flags are
+ separated by spaces, and determine what kind of an authority this directory
+ is. By default, every authority is authoritative for current ("v2")-style
+ directories, unless the "no-v2" flag is given. If the "v1" flags is
+ provided, Tor will use this server as an authority for old-style (v1)
+ directories as well. (Only directory mirrors care about this.) Tor will
+ use this server as an authority for hidden service information if the "hs"
+ flag is set, or if the "v1" flag is set and the "no-hs" flag is **not** set.
+ Tor will use this authority as a bridge authoritative directory if the
+ "bridge" flag is set. If a flag "orport=**port**" is given, Tor will use the
+ given port when opening encrypted tunnels to the dirserver. Lastly, if a
+ flag "v3ident=**fp**" is given, the dirserver is a v3 directory authority
+ whose v3 long-term signing key has the fingerprint **fp**. +
+ +
+ If no **dirserver** line is given, Tor will use the default directory
+ servers. NOTE: this option is intended for setting up a private Tor
+ network with its own directory authorities. If you use it, you will be
+ distinguishable from other users, because you won't believe the same
+ authorities they do.
+
+**AlternateDirAuthority** [__nickname__] [**flags**] __address__:__port__ __fingerprint__ +
+
+**AlternateHSAuthority** [__nickname__] [**flags**] __address__:__port__ __fingerprint__ +
+
+**AlternateBridgeAuthority** [__nickname__] [**flags**] __address__:__port__ __ fingerprint__::
+ As DirServer, but replaces less of the default directory authorities. Using
+ AlternateDirAuthority replaces the default Tor directory authorities, but
+ leaves the hidden service authorities and bridge authorities in place.
+ Similarly, Using AlternateHSAuthority replaces the default hidden service
+ authorities, but not the directory or bridge authorities.
+
+**DisableAllSwap** **0**|**1**::
+ Si mise à 1, Tor tentera de vérouiller toutes les pages mémoires actuelles
+ et futures, de manière à ce que la mémoire ne puisse être paginée. Windows,
+ OS X et Solaris ne sont pas gérés pour le moment. Nous pensons que cette
+ fonctionnalité marche bien sous les distributions modernes GNU/Linux et qu'elle
+ devrait bien fonctionner sous les systèmes *BSD (non testé). Cette option
+ impose de lancer Tor sous le compte root et vous devriez utiliser l'option
+ **User** pour réduire proprement les privilèges de Tor. (Défaut: 0)
+
+**FetchDirInfoEarly** **0**|**1**::
+ Si activée à 1, Tor récupèrera toujours les information d'annuaire comme les
+ caches d'annuaire, même si vous ne satisfaisez pas les critères normaux
+ de récupération en amont. Les utilisateurs normaux ne devraient pas modifier
+ cette option. (Défaut: 0)
+
+**FetchDirInfoExtraEarly** **0**|**1**::
+ Si mise à 1, Tor récupérera les informations d'annuaire avant les autres
+ caches. Il essayera de télécharger les informations d'annuaire peu après
+ le début de la période de consensus. Les utilisateurs ne devraient pas
+ utiliser cette option. (Défaut: 1)
+
+**FetchHidServDescriptors** **0**|**1**::
+ Si mise à 0, Tor ne rapatriera pas les descripteurs de service caché
+ des autorités de rendez-vous. Cette option est utile uniquement si
+ vous utilisez un contrôleur qui gère le chargement des données de
+ service caché pour vous. (Défaut: 1)
+
+**FetchServerDescriptors** **0**|**1**::
+ Si mise à 0, Tor ne rapatriera pas les résumés d'état réseau ou les
+ descripteurs de serveurs des autorités d'annuaire. Cette option est
+ utile uniquement si vous utilisez un contrôleur qui gère le chargement
+ des données d'annuaire pour vous. (Défaut: 1)
+
+**FetchHidServDescriptors** **0**|**1**::
+ Si mise à 1, Tor rapatriera tout descripteur non obsolète qu'il trouvera
+ sur les autorités d'annuaire. Sinon, il évitera de charger ces descripteurs
+ inutiles, par exemple, ceux des routeurs qui ne fonctionnent pas. Cette
+ option est utile uniquement si vous utilisez le script "exitlist" qui énumère
+ les noeuds existants à une certaine adresse. (Défaut: 0)
+
+**HTTPProxy** __host__[:__port__]::
+ Tor lancera ses requêtes vers les annuaires à travers cet hôte:port (ou hôte:80
+ si le port n'est pas indiqué), au lieu de se connecter directement aux serveurs
+ d'annuaires.
+
+**HTTPProxyAuthenticator** __nomèutilisateur:mot_de_passe__::
+ Si défini, Tor utilisera ces éléments pour l'authentification BASIC vers les proxy HTTP
+ , telle que spécifiée dans la RFC 2617. C'est actuellement la seule forme de proxy HTTP
+ que Tor gère; n'hésitez pas à envoyer un patch si vous désirez en supporter
+ d'autres.
+
+**HTTPSProxy** __hôte__[:__port__]::
+ Tor effectuera ses connexions OR (SSL) à travers cet hôte:port (ou
+ hôte:443 si le port n'est pas indiqué), via HTTP CONNECT plutôt qu'en se connectant
+ directement aux serveurs. Vous pouvez renseigner l'option **FascistFirewall** pour
+ réduire le nombre de ports auxquels vous pouvez vous connecter, si votre proxy HTTPS
+ ne permet de se connecter qu'à certains ports.
+
+**HTTPSProxyAuthenticator** __utilisateur:mot_de_passe__::
+ Si définie, Tor utilisera le couple utilisateur:mot_de_passe pour l'authentification
+ en mode Basic sur un proxy HTTPS, comme dans la RFC 2617. C'est pour l'instant,
+ la seule forme d'authentification de proxy HTTPS gérée par Tor; merci de nous
+ envoyer un patch si vous voulez en gérer d'autres.
+
+**Socks4Proxy** __hôte__[:__port__]::
+ Tor effectuera toutes ses connexions OR à travers le proxy SOCKS 4 sur hôte:port
+ (ou hôte:1080 si le port n'est pas indiqué).
+
+**Socks5Proxy** __hôte__[:__port__]::
+ Tor effectuera toutes ses connexions OR à travers le proxy SOCKS 5 sur hôte:port
+ (ou hôte:1080 si le port n'est pas indiqué).
+
+**Socks5ProxyUsername** __nom_utilisateur__ +
+
+**Socks5ProxyPassword** __password__::
+ Si renseigné, l'authentification au serveur SOCKS 5 utilisera l'identifiant et le mot de passe
+ selon le respect de la RFC 1929. L'identifiant et le mot de passe doivent comporter entre 1 et
+ 255 charactères tous les deux.
+
+**KeepalivePeriod** __NUM__::
+ Pour empêcher les pare-feux de fermer les connexions, cette option permet d'envoyer une cellule
+ keepalive toutes les NUM secondes sur les connexions ouvertes utilisées. Si la connexion
+ n' pas de circuit ouvert, elle sera fermée après NUM secondes d'
+ inactivité. (Défaut: 5 minutes)
+
+**Log** __SévéritéMin__[-__SévéritéMax__] **stderr**|**stdout**|**syslog**::
+ Envoie tous les messages entre __SévéritéMin__ et __SévéritéMax__ sur le flux
+ standard de sortie, le flux standard d'erreur ou vers le système de journalisation. (
+ la valeur "syslog" est gérée uniquement sous Unix.) Les niveaux de sévérité reconnus
+ sont debug, info, notice, warn et err. Nous vous conseillons d'utiliser "notice" dans la
+ plupart des cas car tout ce qui sera plus verbeux peut révéler de l'information sensible
+ à un attaquant disposant de ces journaux. Si un seul niveau de sévérité est donné, tous
+ les messages de ce niveau ou supérieur à ce niveau seront envoyés à la destination listée.
+
+**Log** __minSeverity__[-__maxSeverity__] **file** __NOM_DE_FICHIER__::
+ Comme au dessus mais envoie les messages de journal vers le nom de fichier.
+ L'option "Log" peut apparaître plus d'une fois par fichier de configuration.
+ Les messages sont envoyés à tous les journaux qui gèrent leur niveau
+ de sévérité.
+
+**Log** **[**__domain__,...**]**__minSeverity__[-__maxSeverity__] ... **file** __FILENAME__ +
+
+**Log** **[**__domain__,...**]**__minSeverity__[-__maxSeverity__] ... **stderr**|**stdout**|**syslog** ::
+ As above, but select messages by range of log severity __and__ by a
+ set of "logging domains". Each logging domain corresponds to an area of
+ functionality inside Tor. You can specify any number of severity ranges
+ for a single log statement, each of them prefixed by a comma-separated
+ list of logging domains. You can prefix a domain with $$~$$ to indicate
+ negation, and use * to indicate "all domains". If you specify a severity
+ range without a list of domains, it matches all domains. +
+ +
+ This is an advanced feature which is most useful for debugging one or two
+ of Tor's subsystems at a time. +
+ +
+ The currently recognized domains are: general, crypto, net, config, fs,
+ protocol, mm, http, app, control, circ, rend, bug, dir, dirserv, or, edge,
+ acct, hist, and handshake. Domain names are case-insensitive. +
+ +
+ For example, "`Log [handshake]debug [~net,~mm]info notice stdout`" sends
+ to stdout: all handshake messages of any severity, all info-and-higher
+ messages from domains other than networking and memory management, and all
+ messages of severity notice or higher.
+
+**LogMessageDomains** **0**|**1**::
+ If 1, Tor includes message domains with each log message. Every log
+ message currently has at least one domain; most currently have exactly
+ one. This doesn't affect controller log messages. (Default: 0)
+
+**OutboundBindAddress** __IP__::
+ Indique l'origine des connexions sortantes par l'adresse IP indiquée. C'est
+ utile uniquement si vous avez plusieurs interfaces réseau et que vous voulez
+ router les connexions sortantes de Tor vers une seule d'entre elles. Ce paramètre
+ est ignoré pour les connexions vers les adresses loopback (127.0.0.0/8 et ::1).
+
+**PidFile** __FICHIER__::
+ Au démarrage, écrit le PID dans le FICHIER. Lors d'une fermeture propre,
+ supprime le FICHIER.
+
+**ProtocolWarnings** **0**|**1**::
+ Si renseigné à 1, Tor journalisera au niveau \'warn' de nombreux autres cas qui
+ ne se conforment pas à la spécification Tor. En temps normal, ils sont journalisés
+ au niveau \'info'. (Défaut: 0)
+
+**RunAsDaemon** **0**|**1**::
+ Si spécifié à 1, Tor forke et devient un démon en tâche de fond. Cette option n'a aucun effet
+ sous Windows; vous pouvez utiliser l'option --service de la ligne de commande à la place.
+ (Défaut: 0)
+
+**LogTimeGranularity** __NUM__::
+ Set the resolution of timestamps in Tor's logs to NUM milliseconds.
+ NUM must be positive and either a divisor or a multiple of 1 second.
+ Note that this option only controls the granularity written by Tor to
+ a file or console log. Tor does not (for example) "batch up" log
+ messages to affect times logged by a controller, times attached to
+ syslog messages, or the mtime fields on log files. (Default: 1 second)
+
+**SafeLogging** **0**|**1**|**relay**::
+ Tor peut potentiellement masquer les messages sensibles dans votre
+ journal des évènements (ex: des adresses) en les remplaçant par la
+ chaîne [scrubbed]. Ainsi, le journal conserve son utilité sans laisser filtrer
+ des informations sur les sites qu'un utilisateur a consulté. +
+ +
+ Si cette option est mise à 0, Tor n'effectuera aucune modification. Si elle
+ est mise à 1, toutes les chaînes sensibles seront remplacées. Si elle est
+ mise à relay, tous les messages concernant le relais seront masqués mais
+ tous les messages concernant le client ne le seront pas. (Défaut: 1)
+
+**User** __UID__::
+ Au démarrage, change l'uid vers celui de cet utilisateur ainsi que son groupe.
+
+**HardwareAccel** **0**|**1**::
+ Si non nul, essaye d'utiliser le matériel interne dédié aux opérations de chiffrement
+ si disponible. (Défaut: 0)
+
+**AccelName** __NOM__::
+ Tente de charger le moteur dynamique d'accélération cryptographique du même nom dans OpenSSL. Cette option doit être utilisée si vous avez un tel moteur matériel.
+ Les noms peuvent être vérifiés avec la commande openssl engine.
+
+**AccelDir** __DIR__::
+ Indiquez cette option si vous utilisez du matériel d'accélération et que le moteur
+ de son implementation est situé ailleurs que dans l'emplacement par défaut d'OpenSSL.
+
+**AvoidDiskWrites** **0**|**1**::
+ Si différent de zéro, essaye d'écrire moins fréquemment sur le disque.
+ Cette optione est particulièrement utile lors de l'utilisation de carte flash ou
+ d'un support avec un nombre limité de cycles d'écriture. (Défaut: 0)
+
+**TunnelDirConns** **0**|**1**::
+ Si différent de zéro, on fera un circuit à un seul saut et une connexion chiffrée vers son ORPort, en cas de contact d'un serveur d'annuaire gérant cette option.
+ (Défaut: 1)
+
+**PreferTunneledDirConns** **0**|**1**::
+ Si non nul, nous éviterons les serveurs d'annuaire qui ne gèrent pas lesers that don't support tunneled
+ connexions tunnels aux annuaires, lorsque c'est possible. (Défaut: 1)
+
+**CircuitPriorityHalflife** __NUM1__::
+ Si cette valeur est indiquée, l'algorithme de choix des circuits et des relais
+ par défaut sera remplacé. Lorsque la valeur est 0, l'algorithme boucle sur
+ les circuits actifs d'une connexion. Lorsque la valeur est positive, l'algorithme
+ privilégiera les points les moins utilisés, l'utilisation étant exponentielle selon
+ la valeur CircuitPriorityHalflife (en secondes). Si cette option n'est pas indiquée
+ l'algorithme utilisera la valeur distribuée par le réseau. C'est une option avancée,
+ en règle générale, vous n'avez pas besoin de vous en inquiéter. (Défaut: non indiquée.)
+
+**DisableIOCP** **0**|**1**::
+ If Tor was built to use the Libevent's "bufferevents" networking code
+ and you're running on Windows, setting this option to 1 will tell Libevent
+ not to use the Windows IOCP networking API. (Default: 1)
+
+OPTIONS DU CLIENT
+-----------------
+
+Les options suivantes ne concernent que les clients (c'est à dire si
+**SocksPort** est non nul):
+
+**AllowInvalidNodes** **entry**|**exit**|**middle**|**introduction**|**rendezvous**|**...**::
+ Si certains serveurs Tor ne fonctionnent pas correctement, les autorités
+ d'annuaire peuvent les marquer manuellement comme invalides, indiquant
+ qu'il n'est pas recommandé de les utiliser comme noeud d'entrée ou de sortie.
+ Vous pouvez toutefois les utiliser entre les deux. Par défaut, cette option est
+ "middle,rendezvous", les autres choix n'étant pas conseillés.
+
+**ExcludeSingleHopRelays** **0**|**1**::
+ This option controls whether circuits built by Tor will include relays with
+ the AllowSingleHopExits flag set to true. If ExcludeSingleHopRelays is set
+ to 0, these relays will be included. Note that these relays might be at
+ higher risk of being seized or observed, so they are not normally
+ included. Also note that relatively few clients turn off this option,
+ so using these relays might make your client stand out.
+ (Default: 1)
+
+**Bridge** __IP__:__ORPort__ [empreinte]::
+ Lorsque cette option est utilisée en conjonction avec UseBridges, Tor
+ utilisera le relais situé à "IP:ORPORT" comme une "passerelle" vers le réseau
+ Tor. Si "empreinte" est fournie (même format que pour DirServer), Tor vérifiera
+ si le relais désigné dispose bien de la même. L'empreinte est aussi utilisée pour
+ vérifier le descripteur de passerelle dans l'autorité de passerelles si elle est fournie
+ et si UpdateBridgesFromAuthority est également activée.
+
+**LearnCircuitBuildTimeout** **0**|**1**::
+ If 0, CircuitBuildTimeout adaptive learning is disabled. (Default: 1)
+
+**CircuitBuildTimeout** __NUM__::
+
+ Try for at most NUM seconds when building circuits. If the circuit isn't
+ open in that time, give up on it. If LearnCircuitBuildTimeout is 1, this
+ value serves as the initial value to use before a timeout is learned. If
+ LearnCircuitBuildTimeout is 0, this value is the only value used.
+ (Default: 60 seconds.)
+
+**CircuitIdleTimeout** __NUM__::
+ Si un circuit n'a pas été utilisé depuis NUM secondes, alors il sera fermé.
+ Ainsi, lorsque le client Tor est inactif, il peut fermer ses circuits et ses
+ connexions TLS. De plus, si nous avons un circuit incapable de faire aboutir
+ nos requêtes, il n'occupera pas d'emplacement indéfiniment. (Défaut: 1
+ heure.)
+
+**CircuitStreamTimeout** __NUM__::
+ Si supérieur à zéro, cette option remplace notre timing interne sur le
+ décompte de secondes entre l'arrêt d'utilisation d'un circuit et la construction
+ d'un nouveau. Si votre réseau est particulièrement lent, vous pouvez
+ mettre 60 dans cette option. (Défaut: 0)
+
+**ClientOnly** **0**|**1**::
+ Lorsque cette option est à 1, Tor ne sera ni un serveur ni un serveur d'annuaire.
+ Par défaut, Tor se comporte comme un client tant que ORPort n'est pas
+ configuré. (Habituellement, vous n'avez pas besoin de spécifier cette option
+ Tor est assez intelligent pour savoir si vous avez une bande passante suffisante
+ et assez fiable pour vous comporter comme un serveur efficace.) (Défaut: 0)
+
+**ExcludeNodes** __node__,__node__,__...__::
+ Une liste des empreintes d'identifiants, de surnoms, de codes de pays et de motifs d'adresses
+ de noeuds à ne jamais utiliser lors de la construction d'un circuit. (Exemple:
+ ExcludeNodes SlowServer, $ EFFFFFFFFFFFFFFF, \{cc}, 255.254.0.0/8)
+
+**ExcludeExitNodes** __noeud__,__noeud__,__...__::
+ Une liste d'empreintes d'identité, de surnoms, de code de pays et de
+ motifs d'adresses de noeuds à ne jamais utiliser comme noeud de sortie.
+ A noter que tous les noeuds listés dans ExcludeNodes sont automatiquement
+ considéré comme faisant partie de celle-ci.
+
+**EntryNodes** __node__,__node__,__...__::
+ Une liste des empreintes d'identifiants, de surnoms, de codes de pays et de motifs d'adresses
+ de noeuds à utiliser pour le premier saut dans les circuits de sortie. Ils sont
+ traités seulement comme des préférences à moins que l'option StrictNodes (voir ci-dessous) soit indiquée.
+
+**ExitNodes** __node__,__node__,__...__::
+ Une liste des empreintes d'identifiants, de surnoms, de codes de pays et de motifs d'adresses
+ de noeuds à utiliser pour le dernier saut dans les circuits de sortie. Ils sont
+ traités seulement comme des préférences à moins que l'option StricNodes (voir ci-dessous) soit indiquée.
+
+**StrictNodes** **0**|**1**::
+ Si mise à 1 et que l'option EntryNodes est activée, Tor n'utilisera aucun
+ noeud de la liste EntryNodes comme noeud d'entrée sur un circuit normal.
+ Si mise à 1 et que l'option ExitNodes est activée, Tor n'utilisera aucun
+ noeud de la liste ExtNodes comme noeud de sorte. A noter que Tor peut
+ toujours les utiliser dans les circuits qui ne sortent pas comme les requêtes
+ d'annuaire et le circuits de services cachés.
+
+**FascistFirewall** **0**|**1**::
+ Si mise à 1, Tor créera des connexions sortantes vers les relais uniquement
+ sur les ports autorisés par votre firewall (par défaut 80 et 443; consultez
+ **FirewallPorts**). Cette option vous permet d'utiliser Tor comme client derrière
+ un firewall avec une politique restrictive mais ne vous permettra pas de monter
+ un serveur. Si vous préférez une configuration plus fine, utilisez l'option
+ ReachableAddresses à la place.
+
+**FirewallPorts** __PORTS__::
+ Une liste de ports que votre firewall vous permet de joindre. Utilisée uniquement
+ lorsque **FascistFirewall** est activé. Cette option est obsolète; utilisez
+ ReachableAddress à la place. (Défaut: 80, 443)
+
+**HidServAuth** __adresse-oignon__ __cookie-auth__ [__nom-service__]::
+ Autorisation client pour un service caché. Les adresses oignon contiennent 16
+ caractères dans a-z2-7 plus ".onion" et les cookies d'authentification contiennent
+ 22 caractères dans A-Za-z0-9+/. Le nom du service est utilisé uniquement pour
+ des besoins internes, par exemple pour les contrôleurs Tor. Cette option peut
+ être utilisée plusieurs fois pour différents services cachés. Si un service caché
+ demande une authentification et que cette option n'est pas activée, le service
+ caché sera inaccessible. Les services cachés peuvent être configuré pour forcer
+ l'autorisation en utilisant l'option **HiddenServiceAuthorizeClient**.
+
+**ReachableAddresses** __ADDR__[/__MASQ__][:__PORT__]...::
+ Une liste séparée par des virgules d'adresses IP et de ports auxquels votre
+ pare-feux vous autorise à vous connecter. Le format est le même que celui
+ des adresses dans ExitPolicy à l'exception du fait que "accept" est mis en
+ oeuvre uniquement si "reject" est utilisé. Par exemple, \'ReachableAddresses
+ 99.0.0.0/8, reject 18.0.0.0/8:80, accept \*:80' signifie que votre pare-feux vous
+ permet de vous connecter à tout dans le réseau 99, rejette les ports 80 du réseau
+ 18 et accepte les connexions sur le port 80 sinon. (Défaut: \'accept \*.*'.).
+
+**ReachableDirAddresses** __ADDR__[/__MASQ__][:__PORT__]...::
+ Comme **ReachableAddresses**, une liste d'adresse et de ports. Tor
+ utilisera ces restrictions lorsqu'il récupérera les information d'annuaire en
+ utilisant des requêtes HTTP GET standardes. Si cette option n'est pas remplie
+ explicitement, **ReachableAddresses** sera utilisée. Si **HTTPProxy** est
+ activée, alors les connexions passeront par ce proxy.
+
+**ReachableORAddresses** __ADDR__[/__MASQ__][:__PORT__]...::
+ Comme **ReachableAddresses*, une liste d'adresses et de ports. Tor
+ utilisera ces restrictions pour se connecter aux routeurs Oignons en
+ utilisant TLS/SSL. Si elle n'est pas explicitement remplie, la valeur inscrite
+ dans **ReachableAddresses** est utilisée. Si **HTTPSProxy** est activée
+ alors ces connexions se feront par ce proxy. +
+ +
+ La séparation entre **ReachableORAddresses** et
+ **ReachableDirAddresses** n'est intéressante que si vous vous connectez
+ par des proxys (voir **HTTPProxy** et **HTTPSProxy**). La majorité des
+ proxys limitent leur connexions TLS (que Tor utilise pour se connecter aux
+ routeurs Oignon) au port 443 et certains se limitent à des requêtes HTTP GET
+ (que Tor utilise pour récupérer les information d'annuaire) sur le port 80.
+
+**LongLivedPorts** __PORTS__::
+ Une liste de ports de services qui emploient des connexions de grande durée
+ (ex: le chat et les shells interactifs). Les circuits pour les flux utilisant ces ports
+ comporteront uniquement des noeuds à grande durée de vie pour réduire les
+ chances qu'un noeud s'arrête avant que le flux ne soit terminé. (Défaut: 21, 22,
+ 706, 1863, 5050, 5190, 5222, 5223, 6667, 6697, 8300)
+
+**MapAddress** __adresse__ __nouvelle_adresse__::
+ Lorsqu'une requête pour cette adresse arrive à Tor, il la réécrira en la
+ nouvelle adresse avant de la traiter. Par exemple, si vous désirez que les
+ connexions vers www.indymedia.org sortent par __torserver__ (où
+ __torserver__ est le surnom d'un serveur), utilisez "MapAddress
+ www.indymedia.org www.indymedia.org.torserver.exit".
+
+**NewCircuitPeriod** __NUM__::
+ Lance la construction d'un nouveau circuit tous les NUM secondes. (Défaut: 30
+ secondes)
+
+**MaxCircuitDirtiness** __NUM__::
+ Permet de réutiliser un circuit libéré il y a au moins NUM secondes mais
+ ne permet pas d'affecter un flux à un circuit trop ancien. (Défaut: 10 minutes)
+
+**NodeFamily** __node__,__node__,__...__::
+ The Tor servers, defined by their identity fingerprints or nicknames,
+ constitute a "family" of similar or co-administered servers, so never use
+ any two of them in the same circuit. Defining a NodeFamily is only needed
+ when a server doesn't list the family itself (with MyFamily). This option
+ can be used multiple times. In addition to nodes, you can also list
+ IP address and ranges and country codes in {curly braces}.
+
+**EnforceDistinctSubnets** **0**|**1**::
+ Si mise à 1, Tor n'utilisera pas dans le même circuit, deux serveurs dont
+ les adresses IP seraient "trop proches". Actuellement, deux adresses sont
+ "trop proches" si elles sont dans la même plage /16. (Défaut: 1)
+
+**SocksPort** __PORT__::
+ Déclare ce port comme celui de connexion des applications utilisant
+ le protocole Socks. Mettez le à 0 si vous ne voulez pas autoriser de
+ connexions d'applications. (Défaut: 9050)
+
+**SocksListenAddress** __IP__[:__PORT__]::
+ Écoute sur cette adresse les connexions des applications utilisant le
+ protocole Socks. (Défaut: 127.0.0.1) Vous pouvez également indiquer un
+ port (ex: 192.168.0.1:9100). Cette option peut être indiquée plusieurs fois
+ pour écouter sur plusieurs adresses/ports.
+
+**SocksPolicy** __politique__,__politique__,__...__::
+ Configure une politique d'entrée pour ce serveur, pour limiter qui peut se
+ connecter aux ports SocksPort et DNSPort. Les politiques ont le même
+ format que les politiques de sortie ci-dessous.
+
+**SocksTimeout** __NUM__::
+ Permet à une connexion socks d'attendre NUM secondes pour son initialisation
+ et NUM secondes pour trouver un circuit approprié avant d'échouer. (Défaut:
+ 2 minutes.)
+
+**TrackHostExits** __hôte__,__.domaine__,__...__::
+ Pour chaque valeur de cette liste séparée par des virgules, Tor tracera les
+ connexions récentes aux hôtes décrits dans cette valeur et tentera de réutiliser
+ le même noeud de sortie pour chacun. Si la valeur est préfixée avec un \'.\', elle
+ est traitée comme un domaine entier. Si une des valeurs est juste un \'.\', elle
+ sera traitée comme l'univers. Cette option est utile si vous vous connectez souvent
+ à des sites qui font expirer vos cookies d'authentification (i.e. qui ferment votre
+ session) si votre adresse IP change. A noter que cette option a l'inconvénient de
+ rendre moins opaque l'association entre un historique donné et un utilisateur.
+ Toutefois, ceux qui veulent y arriver peuvent, de toute manière, le faire à travers
+ les cookies ou d'autres protocoles spécifiques.
+
+**TrackHostExitsExpire** __NUM__::
+ Étant donné que les serveurs s'allument et s'éteignent, il est important
+ de mettre un terme à l'association entre un hôte et un serveur de sortie
+ après NUM secondes. Par défaut, cette valeur vaut 1800 seconde (30 minutes).
+
+**UpdateBridgesFromAuthority** **0**|**1**::
+ Lorsque cette option est activée (en conjonction avec UseBridges), Tor tentera
+ de récupérer les descripteurs de passerelles depuis l'autorité renseignée.
+ Il utilisera une requête directe si l'autorité répond par une erreur 404. (Défaut:0)
+
+**UseBridges** **0**|**1**::
+ Utilisée, cette option indique à Tor de transférer les descripteurs de chaque passerelle dans les
+ lignes de configuration "Bridge" et utilise ces relais comme portes d'entrées et d'annuaires.
+ (Défaut: 0)
+
+**UseEntryGuards** **0**|**1**::
+ Si cette option est mise à 1, uniquement quelques serveurs d'entrée sont utilisés
+ par Tor. Changer constamment de serveur permet à un adversaire qui en détient
+ quelques-uns d'améliorer ses chances d'observer des parties de vos chemins. (Défaut à 1.)
+
+**NumEntryGuards** __NUM__::
+ Si UseEntryGuards est enregistré à 1, nous essaierons d'utiliser un total de NUM routeurs
+ comme nos entrées à long terme pour nos circuits. (Défaut: 3.)
+
+**SafeSocks** **0**|**1**::
+ Lorsque cette option est activée, Tor rejettera les connexions d'application
+ qui utilisent des variantes non sécurisées du protocole socks -- celles qui
+ fournissent seulement une adresse IP, indiquant que l'application a déjà fait
+ la résolution DNS. Spécifiquement, ce sont les connexions socks4 et socks5
+ n'effectuant pas de résolution DNS distante. (Défaut à 0.)
+
+**TestSocks** **0**|**1**::
+ Lorsque cette option est activée, Tor consignera un message de notification
+ pour chaque connexion au port Socks indiquant si la requête employée est
+ saine ou non (consultez l'entrée ci-dessus sur SafeSocks). Permet de déterminer
+ si une application utilisant Tor génère des fuites de requêtes DNS. (Défaut: 0)
+
+**WarnUnsafeSocks** **0**|**1**::
+ When this option is enabled, Tor will warn whenever a request is
+ received that only contains an IP address instead of a hostname. Allowing
+ applications to do DNS resolves themselves is usually a bad idea and
+ can leak your location to attackers. (Default: 1)
+
+**VirtualAddrNetwork** __Address__/__bits__::
+ When Tor needs to assign a virtual (unused) address because of a MAPADDRESS
+ command from the controller or the AutomapHostsOnResolve feature, Tor
+ picks an unassigned address from this range. (Default:
+ 127.192.0.0/10) +
+ +
+ When providing proxy server service to a network of computers using a tool
+ like dns-proxy-tor, change this address to "10.192.0.0/10" or
+ "172.16.0.0/12". The default **VirtualAddrNetwork** address range on a
+ properly configured machine will route to the loopback interface. For
+ local use, no change to the default VirtualAddrNetwork setting is needed.
+
+**AllowNonRFC953Hostnames** **0**|**1**::
+ Lorsque cette option est désactivée, Tor bloquera les noms d'hôtes contenant
+ des caractères illégaux (comme @ et :) plutôt que de les faire résoudre par un
+ noeud de sortie. Permet d'identifier les tentatives accidentelles de résolution d'URLS.
+ (Défaut: 0)
+
+**AllowDotExit** **0**|**1**::
+ If enabled, we convert "www.google.com.foo.exit" addresses on the
+ SocksPort/TransPort/NATDPort into "www.google.com" addresses that exit from
+ the node "foo". Disabled by default since attacking websites and exit
+ relays can use it to manipulate your path selection. (Default: 0)
+
+**FastFirstHopPK** **0**|**1**::
+ Lorsque cette option est activée, Tor utilise l'étape de clef publique
+ comme premier saut de création de circuit. C'est assez sécurisé, sachant
+ que TLS a déjà été utilisé pour authentifier le relais et pour mettre en
+ place les clefs de sécurité ultérieures. Désactiver cette option rend la
+ construction de circuits plus longue. +
+ +
+ A noter que Tor utilisera toujours l'étape de clef publique comme premier
+ saut si il fonctionne en tant que relais et qu'il n'utilisera pas cette étape s'il
+ ne connaît pas la clef oignon du premier saut. (Défaut: 1)
+
+**TransPort** __PORT__::
+ Si non nul, active un proxy transparent sur le port __PORT__ (par convention,
+ 9040). Requiert un OS gérant les proxys transparents tels que pf sous BSD ou
+ iptables sous Linux. Si vous avez l'intention d'utiliser Tor en tant que proxy transparent
+ pour un réseau, vous devriez examiner et modifier la valeur par défaut de
+ VirtualAddrNetwork. Vous devriez également indiquer l'option TransListenAddress pour
+ le réseau que vous voulez proxyfier. (Défaut: 0).
+
+**TransListenAddress** __IP__[:__PORT__]::
+ Réserve cette adresse pour écouter les connexions de proxy transparent.
+ (Défaut: 127.0.0.1). C'est utile pour exporter un serveur proxy transparent à
+ un réseau entier.
+
+**NATDPort** __PORT__::
+ Permet à de vielles version de ipfw (inclus dans des versions anciennes de
+ FreeBSD) d'envoyer des connexions à travers Tor en utilisant le protocole NATD.
+ Cette option concerne uniquement les personnes ne pouvant utiliser TransPort.
+
+**NATDListenAddress** __IP__[:__PORT__]::
+ Écoute sur cette adresse pour les connexion NATD. (Défaut: 127.0.0.1).
+
+**AutomapHostsOnResolve** **0**|**1**::
+ Lorsque cette option est activée et que nous récupérons une requête de
+ résolution de nom qui se termine par un des suffixes de **AutomapHostsSuffixes**,
+ Tor affecte une adresse virtuelle non utilisée à cette adresse et la retourne.
+ C'est utile pour faire fonctionner les adresses ".onion" avec les applications
+ qui résolvent une adresse avant de s'y connecter. (Défaut: 0).
+
+**AutomapHostsSuffixes** __SUFFIX__,__SUFFIX__,__...__::
+ Une liste de suffixes, séparés par des virgules à utiliser avec **AutomapHostsOnResolve**.
+ Le suffixe "." est équivalent à "toutes les adresses." (Défaut: .exit,.onion).
+
+**DNSPort** __PORT__::
+ Si non nul, Tor écoutera les requêtes DNS UDP sur ce port et effectuera
+ des résolutions de manière anonyme. (Défaut: 0).
+
+**DNSListenAddress** __IP__[:__PORT__]::
+ Utiliser cette adresses pour écouter les connexions DNS. (Défaut: 127.0.0.1).
+
+**ClientDNSRejectInternalAddresses** **0**|**1**::
+ Si la valeur est vraie, Tor ne fera pas confiance aux réponses DNS récupérées
+ de manière anonyme qui correspondent à des adresses internes (comme
+ 127.0.0.1 ou 192.168.0.1). Cette option empêche certaines attaques basées
+ sur les navigateurs; ne la désactivez pas à moins de savoir ce que vous faîtes.
+ (Défaut: 1).
+
+**ClientRejectInternalAddresses** **0**|**1**::
+ If true, Tor does not try to fulfill requests to connect to an internal
+ address (like 127.0.0.1 or 192.168.0.1) __unless a exit node is
+ specifically requested__ (for example, via a .exit hostname, or a
+ controller request). (Default: 1).
+
+**DownloadExtraInfo** **0**|**1**::
+ Tor téléchargera et mettra en cache les documents "extra-info" si la valeur est vraie.
+ Ces documents contiennent des informations autres que les descripteurs standards
+ de routage des serveurs. Tor n'utilise pas ces informations en interne. Pour épargner
+ de la bande passante, laissez cette option de côté. (Défaut: 0).
+
+**FallbackNetworkstatusFile** __NOM_DE_FICHIER__::
+ Si Tor n'a pas de fichier de cache d'état de réseau, il utilisera celui-ci
+ à la place. Même si ce fichier est obsolète, Tor peut toujours l'utiliser
+ pour lister les mirroirs d'annuaire de manière à ne pas charger les
+ autorités. (Défaut: Aucun).
+
+**WarnPlaintextPorts** __port__,__port__,__...__::
+ Indique à Tor d'emmettre des avertissements lorsque l'utilisateur tente
+ de se connecter de manière anonyme à l'un de ces ports. Cette option est
+ destinée à alerter les utilisateurs des services qui risquent d'envoyer leur
+ mot de passe en clair. (Défaut: 23,109,110,143).
+
+**RejectPlaintextPorts** __port__,__port__,__...__::
+ Identique à WarnPlaintextPorts mais au lieu d'avertir sur l'utilisation risquée des ports, Tor
+ refusera la connexion. (Défaut: None).
+
+**AllowSingleHopCircuits** **0**|**1**::
+ When this option is set, the attached Tor controller can use relays
+ that have the **AllowSingleHopExits** option turned on to build
+ one-hop Tor connections. (Default: 0)
+
+OPTIONS DU SERVEUR
+------------------
+
+Les options suivantes ne concernent que les serveurs (c'est à dire si ORPort
+est non nul):
+
+**Address** __address__::
+ The IP address or fully qualified domain name of this server (e.g.
+ moria.mit.edu) You can leave this unset, and Tor will guess your IP
+ address. This IP address is the one used to tell clients and other
+ servers where to find your Tor server; it doesn't affect the IP that your
+ Tor client binds to. To bind to a different address, use the
+ *ListenAddress and OutboundBindAddress options.
+
+**AllowSingleHopExits** **0**|**1**::
+ This option controls whether clients can use this server as a single hop
+ proxy. If set to 1, clients can use this server as an exit even if it is
+ the only hop in the circuit. Note that most clients will refuse to use
+ servers that set this option, since most clients have
+ ExcludeSingleHopRelays set. (Default: 0)
+
+**AssumeReachable** **0**|**1**::
+ Cette option est utilisée lors de la mise en place d'un nouveau réseau
+ Tor. Si elle vaut 1, les tests d'accessibilité de ce serveur ne sont pas lancés,
+ les descripteurs de serveur sont envoyé immédiatement.
+ Si **AuthoritativeDirectory** est également activée, cette option indique
+ au serveur d'annuaire de ne pas lancer les tests d'accès distant et de lister
+ tous les serveurs connectés comme fonctionnels.
+
+**BridgeRelay** **0**|**1**::
+ Sets the relay to act as a "bridge" with respect to relaying connections
+ from bridge users to the Tor network. It mainly causes Tor to publish a
+ server descriptor to the bridge database, rather than publishing a relay
+ descriptor to the public directory authorities.
+
+**ContactInfo** __adresse_email__::
+ Information de contact administratif pour le serveur. Cette ligne peut être récupérée
+ par des robots de spam donc il faudra peut-être rendre difficile sa lecture comme une
+ adresse email.
+
+**ExitPolicy** __politique__,__politique__,__...__::
+ Configure une politique de sortie pour ce serveur. Chaque politique est de la forme
+ "**accept**|**reject** __ADDR__[/__MASQ__][:__PORT__]". Si /__MASQ__ n'est
+ pas défini, alors cette politique concerne uniquement l'hôte indiqué. Au lieu d'utiliser
+ un hôte ou un réseau, vous pouvez également employer "\*" pour l'univers (0.0.0.0/0).
+ __PORT__ peut être un port unique ou un interval de ports
+ "__PORT_DEBUT__-__PORT_FIN__", ou bien "\*". Si __PORT__ n'est pas défini,
+ "\*" sera utilisé. +
+ +
+ Par exemple, "accept 18.7.22.69:\*,reject 18.0.0.0/8:\*,accept \*:\*" rejetera
+ tout le trafic destiné au MIT à l'exception de web.mit.edu et acceptera tout
+ le reste. +
+ +
+ Pour indiquer tous les réseaux internes et locaux (inclus 0.0.0.0/8,
+ 169.254.0.0/16, 127.0.0.0/8, 192.168.0.0/16, 10.0.0.0/8, et
+ 172.16.0.0/12), vous pouvez utiliser l'alias "private" à la place d'une adresse.
+ Ces adresses sont rejetées par défaut (au début de votre politique de sortie),
+ ainsi que votre adresse IP publique à moins que vous ayez configuré
+ l'option ExitPolicyRejectPrivate à 0. Par exemple, une fois que vous l'aurez fait,
+ vous pouvez autoriser HTTP sur 127.0.0.1 et bloquer toutes les autres connexions
+ vers les réseaux internes avec "accept 127.0.0.1:80,reject private:\*", bien que
+ cela permette également les connexions à votre machine adressées à
+ votre adresse IP publique (externe). Consultez les RFC 1918 et 3330 pour plus
+ de détails sur les espaces internes et réservés d'adresses IP. +
+ +
+ Cette directive peut être spécifiée plusieurs fois de manière à ne pas tout
+ mettre dans une seule ligne. +
+ +
+ Les politiques sont exécutées dans l'ordre d'apparition et la première qui
+ correspond s'applique. Si vous voulez \_remplacer_ la politique de sortie
+ par défaut, terminez-la avec soit reject \*.*, soit accept \*.*. Sinon, vous
+ préfixez la politique de sortie par défaut. Cette dernière est la suivante: +
+
+ reject *:25
+ reject *:119
+ reject *:135-139
+ reject *:445
+ reject *:563
+ reject *:1214
+ reject *:4661-4666
+ reject *:6346-6429
+ reject *:6699
+ reject *:6881-6999
+ accept *:*
+
+**ExitPolicyRejectPrivate** **0**|**1**::
+ Rejette tous les réseaux privés (locaux), y compris votre adresse IP publique,
+ au début du votre politique de sortie. Consultez l'entrée du dessus sur ExitPolicy.
+ (Defaut: 1)
+
+**MaxOnionsPending** __NUM__::
+ Si vous avez plus que __NUM__ enveloppes à déchiffrer, les nouvelles sont
+ rejetées. (Défaut: 100)
+
+**MyFamily** __noeud__,__noeud__,__...__::
+ Déclare que ce serveur Tor est contrôlé ou administré par un groupe ou
+ par une organisation similaire aux autres serveurs, définis par leurs empreintes
+ d'identité ou par leur surnom. Lorsque deux serveurs déclarent appartenir à la
+ même "famille", les clients Tor ne les utiliseront pas dans un même circuit.
+ (Chaque serveur n'a besoin que de listes les autres serveurs dans sa famille;
+ il n'a pas besoin de se lister lui-même mais cela n'est pas perturbant.)
+
+**Nickname** __nom__::
+ Affecte le surnom du serveur à \'nom'. Les surnoms doivent comporter de 1 à 19
+ charactères et doivent contenir uniquement les charactères [a-zA-Z0-9].
+
+**NumCPUs** __num__::
+ How many processes to use at once for decrypting onionskins and other
+ parallelizable operations. If this is set to 0, Tor will try to detect
+ how many CPUs you have, defaulting to 1 if it can't tell. (Default: 0)
+
+**ORPort** __PORT__::
+ Indique ce port pour attendre les connexions des clients et des serveurs Tor.
+
+**ORListenAddress** __IP__[:__PORT__]::
+ Ecoute sur cette adresse IP les connexions des clients et des serveurs
+ Tor. Si vous indiquez un port, celui-ci est utilisé à la place de ORPort.
+ (Défaut:0.0.0.0) Cette directive peut être indiquée plusieurs fois pour
+ écouter sur plusieurs adresses/ports.
+
+**PortForwarding** **0**|**1**::
+ Attempt to automatically forward the DirPort and ORPort on a NAT router
+ connecting this Tor server to the Internet. If set, Tor will try both
+ NAT-PMP (common on Apple routers) and UPnP (common on routers from other
+ manufacturers). (Default: 0)
+
+**PortForwardingHelper** __filename__|__pathname__::
+ If PortForwarding is set, use this executable to configure the forwarding.
+ If set to a filename, the system path will be searched for the executable.
+ If set to a path, only the specified path will be executed.
+ (Default: tor-fw-helper)
+
+**PublishServerDescriptor** **0**|**1**|**v1**|**v2**|**v3**|**bridge**,**...**::
+ This option specifies which descriptors Tor will publish when acting as
+ a relay. You can
+ choose multiple arguments, separated by commas.
+ +
+ If this option is set to 0, Tor will not publish its
+ descriptors to any directories. (This is useful if you're testing
+ out your server, or if you're using a Tor controller that handles directory
+ publishing for you.) Otherwise, Tor will publish its descriptors of all
+ type(s) specified. The default is "1",
+ which means "if running as a server, publish the
+ appropriate descriptors to the authorities".
+
+**ShutdownWaitLength** __NUM__::
+ Lorsqu'un serveur Tor récupère un signal SIGINT, il commence à s'
+ arrêter: fermeture des écoutes, refus de nouveaux circuits. Après **NUM**
+ secondes, Tor s'arrête. Si le serveur reçoit un second signal SIGINT,
+ il s'arrête immédiatement. (Défaut: 30 secondes)
+
+**HeartbeatPeriod** __N__ **minutes**|**hours**|**days**|**weeks**::
+ Log a heartbeat message every **HeartbeatPeriod** seconds. This is
+ a log level __info__ message, designed to let you know your Tor
+ server is still alive and doing useful things. Settings this
+ to 0 will disable the heartbeat. (Default: 6 hours)
+
+**AccountingMax** __N__ **bytes**|**KB**|**MB**|**GB**|**TB**::
+ Never send more than the specified number of bytes in a given accounting
+ period, or receive more than that number in the period. For example, with
+ AccountingMax set to 1 GB, a server could send 900 MB and receive 800 MB
+ and continue running. It will only hibernate once one of the two reaches 1
+ GB. When the number of bytes gets low, Tor will stop accepting new
+ connections and circuits. When the number of bytes
+ is exhausted, Tor will hibernate until some
+ time in the next accounting period. To prevent all servers from waking at
+ the same time, Tor will also wait until a random point in each period
+ before waking up. If you have bandwidth cost issues, enabling hibernation
+ is preferable to setting a low bandwidth, since it provides users with a
+ collection of fast servers that are up some of the time, which is more
+ useful than a set of slow servers that are always "available".
+
+**AccountingStart** **day**|**week**|**month** [__jour__] __HH:MM__::
+ Indique la durée des périodes de décompte de bande passante. Si **month** est
+ indiqué, chaque période de décompte dure de __HH:MM__ du jour __jour__
+ jusqu'au jour du mois suivant, à la même heure. (le jour doit être compris entre 1
+ et 28.) Si **week** est indiqué, chaque période de décompte dure de __HH:MM__
+ du __jour__ à la même heure du même jour, une semaine plus tard, avec Lundi
+ comme jour 1 et Dimanche comme jour 7. Si **day** est indiqué, chaque période
+ de décompte court de l'heure __HH:MM__ à la même, le jour suivant. Toutes les
+ heures sont locales et sont exprimées sur sur 24 heures. (Défaut à "month 1 0:00".)
+
+**RefuseUnknownExits** **0**|**1**|**auto**::
+ Prevent nodes that don't appear in the consensus from exiting using this
+ relay. If the option is 1, we always block exit attempts from such
+ nodes; if it's 0, we never do, and if the option is "auto", then we do
+ whatever the authorities suggest in the consensus. (Defaults to auto.)
+
+**ServerDNSResolvConfFile** __nom_de_fichier__::
+ Remplace la configuration DNS par défaut avec celle du fichier
+ __nom_de_fichier__. Le format de fichier est le même que le standard
+ Unix "**resolv.conf**" (7). Cette option, comme les autres options
+ ServerDNS affecte seulement les résolutions de nom que votre serveur
+ effectue pour les clients. (Défaut: utilise la configuration DNS du système).
+
+**ServerDNSAllowBrokenConfig** **0**|**1**::
+ Si cette option est fausse, Tor s'arrête immédiatement en cas de
+ problème de lecture du fichier de configuration DNS ou dans la connexion
+ aux serveurs. Sinon, Tor continue à interroger les serveurs de noms du
+ du système jusqu'à ce que la requête réussisse. (Défaut: "1".)
+
+**ServerDNSSearchDomains** **0**|**1**::
+ Si mise à 1, les recherches se feront dans le domaine de recherche local.
+ Par exemple, si ce système est configuré pour croire qu'il est dans le domaine
+ "example.com" et qu'un client essaye de se connecter à "www", le client se
+ connectera à "www.example.com". Cette option affecte uniquement la résolution
+ de noms que votre serveur réalise pour les clients. (Défaut à "0".)
+
+**ServerDNSDetectHijacking** **0**|**1**::
+ Lorsque cette option est mise à 1, des tests réguliers sont lancés pour
+ déterminer si les serveurs de nom locaux ont été configurés pour générer
+ des réponses mensongères (en général vers un site de pub). Si c'est le cas,
+ Tor tentera de corriger cette situation. Cette option affecte uniquement la
+ résolution de noms que votre serveur effectue pour ses clients. (Défaut: "1".)
+
+**ServerDNSTestAddresses** __adresse__,__adresse__,__...__::
+ Lorsque les tests de détection de DNS menteurs sont lancés, ils vérifient si ces
+ adresses __valides__ sont redirigées. Si c'est le cas, le DNS est complètement
+ inutile et la politique de sortie est modifiée à "reject *.*". Cette option affecte
+ uniquement la résolution de noms que votre serveur effectue pour ses clients.
+ (Défaut: "www.google.com, www.mit.edu, www.yahoo.com, www.slashdot.org").
+
+**ServerDNSAllowNonRFC953Hostnames** **0**|**1**::
+ Lorsque cette option est désactivée, Tor ne lance aucune résolution sur les
+ noms contenant des caractères illégaux (comme @ et :) au lieu de les
+ envoyer sur un noeud de sortie pour être résolus. Cela permet de piéger
+ toute tentative accidentelle de résolution d'URL. Cette option affecte uniquement
+ les résolutions de nom que votre serveur réalise pour ses clients. (Defaut: 0)
+
+**BridgeRecordUsageByCountry** **0**|**1**::
+ Lorsque cette option est activée ainsi que BridgeRelay et que les données
+ GeoIP sont disponibles, Tor conservera un décompte pays par pays du nombre
+ d'adresses de clients qui l'ont contacter de manière à aider les autorité de
+ passerelles à deviner quels sont les pays qui bloquent les accès. (Défaut: 1)
+
+**ServerDNSRandomizeCase** **0**|**1**::
+ Lorsque cette option est affectée, Tor modifie aléatoirement la casse de
+ chaque caractère des requêtes DNS sortantes et vérifie que cette casse
+ correspond à celle de la réponse DNS. Ce hack nommé "0x20 hack" permet
+ de résister à des attaques d'empoisonnement DNS. Pour plus d'informations,
+ consultez "Increasing DNS Forgery Resistance through 0X20-Bit Encoding".
+ Cette option affecte uniquement les résolutions de noms effectuées par votre
+ serveur pour ses clients. (Défaut: 1)
+
+**GeoIPFile** __nom_de_fichier__::
+ Un nom de fichier contenant des données GeoIP à utiliser avec l'option BridgeRecordUsageByCountry.
+
+**CellStatistics** **0**|**1**::
+ When this option is enabled, Tor writes statistics on the mean time that
+ cells spend in circuit queues to disk every 24 hours. (Default: 0)
+
+**DirReqStatistics** **0**|**1**::
+ When this option is enabled, Tor writes statistics on the number and
+ response time of network status requests to disk every 24 hours.
+ (Default: 0)
+
+**EntryStatistics** **0**|**1**::
+ When this option is enabled, Tor writes statistics on the number of
+ directly connecting clients to disk every 24 hours. (Default: 0)
+
+**ExitPortStatistics** **0**|**1**::
+ When this option is enabled, Tor writes statistics on the number of relayed
+ bytes and opened stream per exit port to disk every 24 hours. (Default: 0)
+
+**ConnDirectionStatistics** **0**|**1**::
+ When this option is enabled, Tor writes statistics on the bidirectional use
+ of connections to disk every 24 hours. (Default: 0)
+
+**ExtraInfoStatistics** **0**|**1**::
+ Lorsque cette option est activée, Tor inclue dans les statistiques précédemment
+ citées, les documents d'informations supplémentaire qu'il envoie aux autorités
+ d'annuaire. (Défaut: 0)
+
+OPTIONS POUR LES SERVEURS D'ANNUAIRE
+------------------------------------
+
+Les options suivantes ne concernent que les serveur d'annuaire
+(c'est-à-dire, si DirPort est non nul):
+
+**AuthoritativeDirectory** **0**|**1**::
+ Lorsque cette option est placée à 1, Tor fonctionne en tant qu'autorité
+ d'annuaire. Au lieu de mettre en cache l'annuaire, il génère sa propre liste
+ de serveurs actifs, la signe et l'envoie aux clients. A moins que les clients
+ vous aient déjà identifié en tant qu'annuaire de confiance, vous n'avez
+ probablement pas besoin de cette option. Merci de vous coordonner avec
+ les autres administrateurs sur tor-ops(a)torproject.org si vous estimez que
+ vous être un annuaire.
+
+**DirPortFrontPage** __NOM_DE_FICHIER__::
+ Lorsque cette option est activée, elle prend un fichier HTML et le publie sur
+ "/" sur le port DirPort. Maintenant, les opérateurs de relais peuvent fournir un
+ message d'information sans avoir besoin de configurer un serveur web pour ça.
+ Un exemple de message d'information est disponible dans contrib/tor-exit-notice.html.
+
+**V1AuthoritativeDirectory** **0**|**1**::
+ Lorsque cette option est indiquée en plus de **AuthoritativeDirectory**,
+ Tor génère un annuaire et des documents de routage en version 1 (pour les
+ clients officiels jusqu'à la version 0.1.0.x).
+
+**V2AuthoritativeDirectory** **0**|**1**::
+ Lorsque cette option est indiquée en plus de **AuthoritativeDirectory**,
+ Tor génère des états réseau et des descripteurs de serveur de version 2,
+ tels que décrits dans doc/spec/dir-spec-v2.txt (pour les clients et les serveurs
+ de version 0.1.1.x et 0.1.2.x).
+
+**V2AuthoritativeDirectory** **0**|**1**::
+ Lorsque cette option est indiquée en plus de **AuthoritativeDirectory**,
+ Tor génère des états réseau et des descripteurs de serveur de version 3,
+ tels que décrits dans doc/spec/dir-spec.txt (pour les clients et les serveurs
+ de version au moins égale à 0.2.0.x).
+
+**VersioningAuthoritativeDirectory** **0**|**1**::
+ Lorsque cette option est mise à 1, Tor ajoute de l'information sur les
+ versions de Tor reconnues comme sûre pour cet annuaire public. Chaque
+ autorité en version 1 est automatiquement une autorité versionnée;
+ Les autorités en version 2 fournissent optionnellement ce service. Consultez
+ **RecommendedVersions**, **RecommendedClientVersions** et
+ **RecommendedServerVersions**.
+
+**NamingAuthoritativeDirectory** **0**|**1**::
+ Lorsque cette option est mise à 1, le serveur avertit qu'il tient compte
+ des liens surnoms-empreinte. Il incluera ce facteur dans les pages qu'il
+ publie sur l'état du réseau en listant les serveurs avec le drapeau "Named"
+ si un lien correct a pu être établi entre une empreinte et un surnom avec
+ le serveur de nom. Ces serveurs de noms refuseront d'accepter ou de publier
+ des descripteurs contenant des liens non vérifiés. Consultez **approved-routers**
+ dans la section **FICHIERS** ci-dessous.
+
+**HSAuthoritativeDir** **0**|**1**::
+ When this option is set in addition to **AuthoritativeDirectory**, Tor also
+ accepts and serves v0 hidden service descriptors,
+ which are produced and used by Tor 0.2.1.x and older. (Default: 0)
+
+**HidServDirectoryV2** **0**|**1**::
+ Lorsque cette option est activée, Tor acceptera et servira des
+ descripteurs de services cachés en version 2. Activer DirPort n'est
+ pas obligatoire pour ça, car les clients se connectent via le port
+ ORPort par défaut. (Défaut: 1)
+
+**BridgeAuthoritativeDir** **0**|**1**::
+ Lorsque cette option est activée en plus de **AuthoritativeDirectory**, Tor
+ accepte et fournit des descripteurs de routeurs tout en mettant en cache
+ et en fournissant les documents d'état de réseau plutôt que de les générer
+ lui-même. (Défaut: 0)
+
+**MinUptimeHidServDirectoryV2** __N__ **seconds**|**minutes**|**hours**|**days**|**weeks**::
+ Temps minimum d'activité pour qu'un annuaire de service caché v2 soit accepté
+ par les autorités d'annuaire. (Défaut: 24 hours)
+
+**DirPort** __PORT__::
+ Indique que le service d'annuaire est disponible sur ce port.
+
+**DirListenAddress** __IP__[:__PORT__]::
+ Écoute les requêtes d'annuaire sur cette adresse. Si vous avez indiqué
+ un port, celui-ci sera utilisé à la place de DirPort. (Défaut: 0.0.0.0)
+ Cette directive peut être indiquée plusieurs fois pour écouter sur plusieurs
+ adresses/ports.
+
+**DirPolicy** __politique__,__politique__,__...__::
+ Indique une politique d'entrée pour ce serveur afin de limiter qui peut
+ se connecter aux ports d'annuaire. Les politiques ont la même forme que
+ les politiques de sortie ci-dessus.
+
+OPTIONS DE SERVEUR D'AUTORITÉ D'ANNUAIRE
+---------------------------------------
+
+**RecommendedVersions** __CHAINE__::
+ CHAINE est une liste séparée par des virgules des versions de Tor qui sont
+ actuellement reconnues comme saines. La liste est intégrée à chaque annuaire
+ et les noeuds qui les interrogent peuvent savoir s'ils doivent être mis à jour.
+ Cette option peut apparaître plusieurs fois: les valeurs sur des lignes multiples
+ sont aggrégées ensemble. Lorsque cette option est utilisée, il faut activer aussi
+ l'option **VersioningAuthoritativeDirectory**.
+
+**RecommendedClientVersions** __CHAINE__::
+ CHAINE est une liste séparée par des virgules des versions de Tor reconnues
+ comme versions de client saines. Cette information est intégrée dans les
+ annuaires version 2. Si cette option n'est pas activée, la valeur de l'option
+ **RecommendedVersions** est utilisée à la place. Lorsque cette option est
+ activée, **VersioningAuthoritativeDirectory** doit l'être également.
+
+**RecommendedServerVersions** __CHAINE__::
+ CHAINE est une liste séparée par des virgules des versions serveur de Tor,
+ reconnues pour être saines. Cette information est intégrée dans les
+ annuaires version 2. Si cette option n'est pas activée, la valeur de l'option
+ **RecommendedVersions** est utilisée à la place. Lorsque cette option est
+ activée, **VersioningAuthoritativeDirectory** doit l'être également.
+
+**ConsensusParams** __STRING__::
+ STRING est une liste de paires clef=valeur séparées par des espaces que Tor
+ incluera dans la ligne "params" de son vote sur l'état du réseau.
+
+**DirAllowPrivateAddresses** **0**|**1**::
+ Si enregistré à 1, Tor acceptera des descripteurs de routeurs avec des éléments
+ arbitraires d'"adresse". Sinon, si l'adresse n'est pas une IP ou une IP privée,
+ il rejettera le descripteur de routeur. Par défaut à 0.
+
+**AuthDirBadDir** __Motif_Adresse...__::
+ Pour les autorités d'annuaire uniquement. Un jeu de motifs d'adresses des
+ serveurs qui seront listés comme mauvais annuaires dans tous les documents
+ d'état de réseau publiés par les annuaires, si **AuthDirListBadDirs** est activée.
+
+**AuthDirBadExit** __Motif_d_adresse...__::
+ Pour les autorités d'annuaire uniquement. Un jeu de motifs d'adresse de
+ serveurs qui seront identifiés comme mauvais noeuds de sortie dans tous
+ les documents d'état de réseau publié par cette autorité, si l'option
+ **AuthDirListBadExits** est activée.
+
+**AuthDirInvalid** __Motif_d_adresse...__::
+ Pour les autorités d'annuaire uniquement. Un jeu de motifs d'adresse de
+ serveurs qui seront pas identifiés comme "valides" dans tous
+ les documents d'état de réseau publié par cette autorité, si l'option
+ **AuthDirListBadExits** est activée.
+
+**AuthDirReject** __Motif_d_adresse...__::
+ Pour les autorités d'annuaire uniquement. Un jeu de motifs d'adresse de
+ serveurs qui seront pas du tout référencés par dans les documents d'état
+ de réseau publiés par cette autorité, ou accepté comme un adresse OR dans
+ aucun descripteur soumis à la publication par cette autorité.
+
+**AuthDirListBadDirs** **0**|**1**::
+ Pour les autorités d'annuaire uniquement. Lorsque cette option vaut
+ 1, cet annuaire dispose d'information sur les noeuds n'ayant pas
+ de cache d'annuaire. (Ne mettez pas la valeur à 1 à moins de vouloir
+ lister les annuaires non fonctionnels; sinon, vous votez en faveur de
+ tous les annuaires déclarés.)
+
+**AuthDirListBadExits** **0**|**1**::
+ Pour les autorités d'annuaire uniquement. Si mise à 1, cet annuaire
+ dispose d'information sur les noeuds qui ne peuvent pas être utilisés
+ pour sortir du réseau. (Ne mettez pas cette option à 1 à moins de vouloir
+ lister les noeuds qui ne fonctionnent pas; sinon, vous voterez en faveur
+ de ceux qui sont déclarés comme noeuds de sortie).
+
+**AuthDirRejectUnlisted** **0**|**1**::
+ Pour les autorités d'annuaire uniquement. Si mise à 1, cet annuaire
+ rejettera tous les descripteurs de serveurs qui ne sont pas listés dans
+ le fichier des empreintes. Agit comme un "bouton panique" en cas
+ d'attaque Sybil.
+
+**AuthDirMaxServersPerAddr** __NUM__::
+ Pour les autorités d'annuaire uniquement. Nombre maximum de serveurs
+ qui seront listés comme acceptables sur une seule adresse IP. A mettre à
+ "0" pour "no limit". (Défaut: 2)
+
+**AuthDirMaxServersPerAuthAddr** __NUM__::
+ Pour les autorités d'annuaire uniquement. Comme AuthDirMaxServersPerAddr
+ mais s'applique uniquement aux adresses partagées avec les autorités
+ d'annuaire. (Défaut: 5)
+
+**V3AuthVotingInterval** __N__ **minutes**|**hours**::
+ Pour les autorités d'annuaires V3 uniquement. Configure l'intervalle de vote
+ de référence du serveur. Le vote aura court selon un intervalle choisi en
+ consensus avec les intervalles de préférence de toutes les autorités.
+ Ce temps devrait se diviser en entier sur une journée. (Défaut: 1 hour)
+
+**V3AuthVoteDelay** __N__ **minutes**|**hours**::
+ Pour les autorités d'annuaires V3 uniquement. Configure la durée de
+ de référence du vote du serveur. Le délai sera le fruit d'un consensus
+ avec les délais de référence de toutes les autres autorités. (Défaut: 5 minutes.)
+
+**V3AuthDistDelay** __N__ **minutes**|**hours**::
+ Pour les autorités d'annuaires V3 uniquement. Configure la durée du délai
+ entre la publication du consensus et la signature une fois que toutes les autres
+ signatures des autres autorités ont été récupérées. Le délai sera le fruit d'un
+ consensus avec les délais de référence de toutes les autres autorités.
+ (Défaut: 5 minutes.)
+
+**V3AuthNIntervalsValid** __NUM__::
+ Pour les autorités d'annuaires V3 uniquement. Configure le nombre de
+ VotingIntervals pour lesquel chaque consensus doit être validé. Choisir un
+ chiffre important augmente les risques de partition du réseau; choisir un
+ chiffre faible augmente le trafic des annuaires. Notez que le nombre actuel
+ utilisé n'est pas celui du serveur mais le fruit d'un consensus avec les autres
+ autorités. Doit être au moins à 2. (Défaut: 3.)
+
+**V3BandwidthsFile** __FILENAME__::
+ V3 authoritative directories only. Configures the location of the
+ bandiwdth-authority generated file storing information on relays' measured
+ bandwidth capacities. (Default: unset.)
+
+OPTIONS DES SERVICES CACHÉS
+--------------------------
+
+Les options suivantes ne concernent que la configuration d'un service caché.
+
+**HiddenServiceDir** __REPERTOIRE__::
+ Enregistre les fichiers de données d'un service caché dans REPERTOIRE. Chaque service caché
+ doit avoir un répertoire séparé. Vous pouvez utiliser cette option plusieurs pour
+ indiquer des services multiples.
+
+**HiddenServicePort** __PORT_VIRT__ [__CIBLE__]::
+ Configure un port PORT_VIRT virtuel pour un service caché. Vous pouvez
+ utiliser cette option plusieurs fois, elle s'applique au service de la dernière
+ hiddenservicedir déclarée. Par défaut, cette option lie le port virtuel au même
+ port sur 127.0.0.1. Vous pouvez remplacer le port cible, l'adresse ou les deux
+ en indiquant une cible d'adresse, de port ou adresse:port. Vous pouvez également
+ plusieurs lignes avec le même PORT_VIRT: lorsqu'un utilisateur se connecte
+ à ce VIRT_PORT, une des CIBLEs de ces lignes sera choisie au hasard.
+
+**PublishHidServDescriptors** **0**|**1**::
+ Si mise à 0, Tor fera fonctionner tous les services cachés que vous aurez
+ configurés mais sans les exposer dans l'annuaire rendez-vous. Cette option
+ est utile uniquement si vous employez un contrôleur Tor qui gère la publication
+ des services cachés pour vous. (Défaut: 1)
+
+**HiddenServiceVersion** __version__,__version__,__...__::
+ Une liste de versions de descripteurs de service rendez-vous à publier
+ pour le service caché. Pour l'instant, seule la version 2 est gérée. (Défaut: 2)
+
+**HiddenServiceAuthorizeClient** __auth-type__ __client-name__,__client-name__,__...__::
+ If configured, the hidden service is accessible for authorized clients
+ only. The auth-type can either be \'basic' for a general-purpose
+ authorization protocol or \'stealth' for a less scalable protocol that also
+ hides service activity from unauthorized clients. Only clients that are
+ listed here are authorized to access the hidden service. Valid client names
+ are 1 to 19 characters long and only use characters in A-Za-z0-9+-_ (no
+ spaces). If this option is set, the hidden service is not accessible for
+ clients without authorization any more. Generated authorization data can be
+ found in the hostname file. Clients need to put this authorization data in
+ their configuration file using **HidServAuth**.
+
+**RendPostPeriod** __N__ **seconds**|**minutes**|**hours**|**days**|**weeks**::
+ Every time the specified period elapses, Tor uploads any rendezvous
+ service descriptors to the directory servers. This information is also
+ uploaded whenever it changes. (Default: 1 hour)
+
+OPTIONS DE TESTS RÉSEAU
+-----------------------
+
+Les options suivantes ne concernent que le lancement d'un réseau Tor de
+test.
+
+**TestingTorNetwork** **0**|**1**::
+ Si mise à 1, Tor ajuste les valeurs par défaut des options de configuration
+ ci-dessous, de manière à faciliter la mise en palce d'un réseau Tor de test.
+ Ne peut être activé uniquement si le jeu par défaut des DirServers n'est pas
+ utilisé. Ne peut être invalidé alors que Tor fonctionne. (Défaut: 0) +
+
+ ServerDNSAllowBrokenConfig 1
+ DirAllowPrivateAddresses 1
+ EnforceDistinctSubnets 0
+ AssumeReachable 1
+ AuthDirMaxServersPerAddr 0
+ AuthDirMaxServersPerAuthAddr 0
+ ClientDNSRejectInternalAddresses 0
+ ClientRejectInternalAddresses 0
+ ExitPolicyRejectPrivate 0
+ V3AuthVotingInterval 5 minutes
+ V3AuthVoteDelay 20 seconds
+ V3AuthDistDelay 20 seconds
+ MinUptimeHidServDirectoryV2 0 seconds
+ TestingV3AuthInitialVotingInterval 5 minutes
+ TestingV3AuthInitialVoteDelay 20 seconds
+ TestingV3AuthInitialDistDelay 20 seconds
+ TestingAuthDirTimeToLearnReachability 0 minutes
+ TestingEstimatedDescriptorPropagationTime 0 minutes
+
+**TestingV3AuthInitialVotingInterval** __N__ **minutes**|**hours**::
+ Comme V3AuthVotingInterval mais pour l'intervalle de vote initial avant
+ la création du premier consensus. Modifier ce paramètre requiert l'
+ activation de **TestingTorNetwork**. (Défaut: 30 minutes)
+
+**TestingV3AuthInitialVoteDelay** __N__ **minutes**|**hours**::
+ Comme TestingV3AuthInitialVoteDelay mais pour l'intervalle de vote initial
+ avant la création du premier consensus. Modifier ce paramètre requiert l'
+ activation de **TestingTorNetwork**. (Défaut: 5 minutes)
+
+**TestingV3AuthInitialDistDelay** __N__ **minutes**|**hours**::
+ Comme TestingV3AuthInitialDistDelay, mais pour l'intervalle de vote initial
+ avant la création du premier consensus. Modifier ce paramètre requiert l'
+ activation de **TestingTorNetwork**. (Défaut: 5 minutes)
+
+**TestingAuthDirTimeToLearnReachability** __N__ **minutes**|**hours**::
+ Après avoir démarré en tant qu'autorité, ne pas remonter le fait que les
+ routeurs fonctionnent jusqu'à ce que ce temps soit passé. Modifier cette
+ option implique que **TestingTorNetwork** soit activé. (Défaut: 30 minutes)
+
+**TestingEstimatedDescriptorPropagationTime** __N__ **minutes**|**hours**::
+ Les clients essaient de télécharger les descripteurs de routeur depuis le cache
+ des annuaires après cette période. Modifier cette option requiert l'activation de
+ **TestingTorNetwork**. (Défaut: 10 minutes)
+
+SIGNAUX
+-------
+
+Tor récupère les signaux suivants:
+
+**SIGTERM**::
+ Tor récupérera ce signal, nettoiera et effectuera une synchronisation sur disque si nécéssaire, et enfin, s'arrêtera.
+
+**SIGINT**::
+ Les clients Tor se comporteront comme avec SIGTERM; mais les serveurs Tor effectueront une
+ fermeture lente et contrôllée, en fermant les écoutes en en attendant 30 secondes avant de tout fermer.
+ (Le délai peut être configuré avec l'option de configuration ShutdownWaitLength.)
+
+**SIGHUP**::
+ The signal instructs Tor to reload its configuration (including closing and
+ reopening logs), and kill and restart its helper processes if applicable.
+
+**SIGUSR1**::
+ Journalise les statistiques à propos des connexions en cours et passées ainsi que sur le flux actuel.
+
+**SIGUSR2**::
+ Modifie tous les journaux au niveau debug. Vous pouvez récupérer les anciens niveaux de journalisation
+ en envoyant un signal SIGHUP.
+
+**SIGCHLD**::
+ Tor reçoit ce signal lorsque l'un de ses processus d'aide a fermé, de manière
+ à ce qu'il puisse effectuer un nettoyage.
+
+**SIGPIPE**::
+ Tor récupère ce signal et l'ignore.
+
+**SIGXFSZ**::
+ Si ce signal existe sur votre plateforme, Tor le récupère et l'ignore.
+
+FICHIERS
+--------
+
+**@CONFDIR@/torrc**::
+ Le fichier de configuration qui contient les paires "option valeur".
+
+**@LOCALSTATEDIR@/lib/tor/**::
+ Le processus Tor enregistre ses clefs et d'autres données à cet emplacement.
+
+__DataDirectory__**/cached-status/**::
+ Le document d'état du réseau téléchargé le plus récemment pour chaque
+ autorité. Chaque fichier contient un seul document; les noms de fichier sont
+ les empreintes hexadécimales des clefs d'identité des autorités d'annuaire.
+
+__DataDirectory__**/cached-descriptors** et **cached-descriptors.new**::
+ Ces fichiers contiennent le téléchargement des états des routeurs. Certains
+ routeurs peuvent apparaître plus d'une fois; dans ce cas, le descripteur le plus
+ récent est utilisé. Les lignes qui commencent par @ sont des annotations
+ contenant plus d'informations sur un routeur donné. Le fichier "new" est un
+ journal en ajout-seul; lorsqu'il devient trop important, toutes les entrées sont
+ fusionnées dans un nouveau fichier de cache de descripteurs.
+
+__DataDirectory__**/cached-routers** and **cached-routers.new**::
+ Versions obsolètes du cache des descripteurs. Lorsque Tor ne peut
+ pas trouver de nouveaux fichiers, il regarde à l'emplacement indiqué à la place.
+
+__DataDirectory__**/state**::
+ Un jeu persistant de clef-valeur. Elles sont documentées dans le
+ fichier. Elles incluent:
+ - Les noeuds d'entrées et leur état. - Les valeurs de décompte de bande passante (inutilisées pour
+ l'instant, voir plus loin).
+ - Quand le fichier a été écrit pour la dernière fois
+ - Quelle version de Tor a généré le fichier d'état
+ - Un court historique de l'utilisation de la bande passante tel que
+ produits dans les descripteurs du routeur.
+
+__DataDirectory__**/bw_accounting**::
+ Utilisé pour tracer les valeurs de décompte de bande passante (quand la
+ période actuelle commence et s'arrête; combien d'octets ont été lus et écrits
+ jusqu'à maintenant). Ce fichier est obsolète et les données sont maintenant
+ stockées dans le fichier \'state'. Uniquement lorsque le décompte de bande
+ passante a été activé.
+
+__DataDirectory__**/control_auth_cookie**::
+ Utilisé pour l'authentification par cookie pour le contrôleur. L'emplacement
+ peut être remplacé par l'option CookieAuthFile. Regénéré au démarrage.
+ Consultez control-spec.txt pour les détails. Utilisé uniquement lorsque
+ l'authentification est activée.
+
+__DataDirectory__**/clefs/***::
+ Seulement utilisé par les serveurs. Contient les clefs d'identité et les clefs oignons.
+
+__DataDirectory__**/empreinte**::
+ Uniquement utilisé par les serveurs. Contient l'empreinte de la clef d'identité du serveur.
+
+__DataDirectory__**/approved-routers**::
+ Uniquement pour les serveurs d'autorité d'annuaire (voir
+ **NamingAuthoritativeDirectory**). Ce fichier liste les liens surnom-
+ identité. Chaque ligne liste un surnom et une empreinte séparés par
+ un espace. Consultez votre fichier **fingerprint** dans __DataDirectory__
+ pour un exemple de ligne. Si le surnom est **!reject** alors les descripteurs
+ de l'identité (empreinte) sont rejetés par ce serveur. S'il est **!invalid**,
+ les descripteurs sont acceptés mais indiqués comme non valides dans
+ l'annuaire, ce qui est, non recommandé.
+
+__DataDirectory__**/router-stability**::
+ Utilisé uniquement par les serveurs d'autorité d'annuaires. Suit les mesures de
+ temps moyen avant échec des routeurs de manière à ce que les autorités aient une bonne
+ idée de la manière dont elles doivent appliquer leurs drapeaux Stable.
+
+__HiddenServiceDirectory__**/nom_d_hôte**::
+ L'<empreinte-encodée-en base32>du nom de domaine .onion pour ce service caché.
+ Si le service caché est restreint à des clients identifiés, ce fichier
+ contiendra également les données d'authentification pour tous les clients.
+
+__HiddenServiceDirectory__**/clef_privée**::
+ La clef privée pour ce service caché.
+
+__HiddenServiceDirectory__**/clefs_client**::
+ Données d'authentification pour un service caché uniquement accessible
+ par les clients identifiés.
+
+A VOIRE
+--------
+**privoxy**(1), **tsocks**(1), **torify**(1) +
+
+**https://www.torproject.org/**
+
+
+BUGS
+----
+
+Il en existe plein, probablement. Tor est encore en état de
+développement. Il est prié de les reporter.
+
+AUTEURS
+-------
+Roger Dingledine [arma at mit.edu] Nick Mathewson [nickm at alum.mit.edu]
+
Added: website/trunk/manpages/fr/torify.1.txt
===================================================================
--- website/trunk/manpages/fr/torify.1.txt (rev 0)
+++ website/trunk/manpages/fr/torify.1.txt 2011-03-03 13:39:36 UTC (rev 24296)
@@ -0,0 +1,51 @@
+//Droits d'auteur The Tor Project, Inc.
+//Se référer au fichier LICENSE pour toute information sur la license
+//Ceci est un fichier asciidoc utilisé pour générer la page principale manpage/html.
+//Apprenez asciidoc sur http://www.methods.co.nz/asciidoc/userguide.html
+TOR(1)
+======
+Peter Palfrader Jacob Appelbaum
+
+NOM
+----
+torify - adaptateur pour torsocks ou pour tsocks et tor
+
+SYNOPSIS
+--------
+**torify** __application__ [__arguments_de_l_application__]
+
+DESCRIPTION
+-----------
+**torify** est un simple adaptateur (wrapper) qui essaye de trouver le meilleur
+adaptateur de Tor disponible sur le système. Il appelle torsocks ou tsocks avec un
+fichier de configuration Tor spécifique. +
+
+torsocks est un adaptateur amélioré qui rejette explicitement le trafic UDP,
+effectue des requêtes DNS sécurisées et transforme correctement en socks vos
+connexions TCP. +
+
+tsocks est un adaptateur entre la bibliothèque tsocks et une application qui
+veux fonctionner à travers le protocole socks. +
+
+Merci de prendre conscience que les deux méthodes utilisent LD_PRELOAD et
+donc que torify ne peut pas s'appliquer sur des exécutables suid.
+
+AVERTISSEMENT
+-------
+Vous devez prendre conscience du fait que tsocks ne s'occupe de transformer
+les connexions TCP en conexions socks. En conséquence, celà n'inclus pas les
+requêtes de nom d'hôte qui seront toujours routées par la voie normale de
+votre système jusqu'à ce qu'elles soient résolues. L'outil **tor-resolve**
+peut s'avérer utile dans de tels cas. La FAQ Tor sur
+https://wiki.torproject.org/noreply/TheOnionRouter/TorFAQ dispose de plus
+d'informations sur ce sujet. +
+
+Lorsque l'application torify est utilisée avec torsocks, il n'y aura pas de
+fuite de données UDP ou de requêtes DNS. +
+
+Les deux sont à l'origine de fuites de données ICMP.
+
+VOIR AUSSI
+--------
+**tor**(1), **tor-resolve**(1), **torsocks**(1), **tsocks**(1),
+**tsocks.conf**(5).
Added: website/trunk/manpages/it/tor-resolve.1.txt
===================================================================
--- website/trunk/manpages/it/tor-resolve.1.txt (rev 0)
+++ website/trunk/manpages/it/tor-resolve.1.txt 2011-03-03 13:39:36 UTC (rev 24296)
@@ -0,0 +1,50 @@
+// Copyright (c) The Tor Project, Inc.
+// Si veda LICENSE per informazioni relative alla licenza
+// Questo è un file di tipo asciidoc utilizzato per generare pagine man o riferimenti html.
+// Impara a usare asciidoc al sito http://www.methods.co.nz/asciidoc/userguide.html
+tor-resolve(1)
+==============
+Peter Palfrader
+
+NOME
+----
+tor-resolve - risolve un nome di host in un indirizzo IP attraverso tor
+
+SOMMARIO
+--------
+**tor-resolve** [-4|-5] [-v] [-x]_nomehost_[_sokshost_[:_socksport_]]
+
+DESCRIZIONE
+-----------
+**tor-resolve** è un semplice script per connettersi al proxy SOCKS che conosce
+il comando SOCKS RESOLVE, consegna un nome host e restituisce un indirizzo IP.
+
+By default, **tor-resolve** uses the Tor server running on 127.0.0.1 on
+SOCKS port 9050. If this isn't what you want, you should specify an
+explicit __sockshost__ and/or __socksport__ on the command line.
+
+OPZIONI
+-------
+**-v**::
+Output dettagliato display.
+
+**-x**::
+Esegui una ricerca inversa: riceve il record PTR per un indirizzo IPv4.
+
+**-5**::
+Usa il protocollo SOCKS5. (Predefinito)
+
+**-4*::
+Usa il protocollo SOCKS4a invece del protocollo predefinito SOCKS5.Non
+supporta operazioni DNS inverse.
+
+SI VEDA ANCHE
+--------
+**tor**(1), **torify**(1). +
+
+Si veda doc/socks-extensions.txt nel pacchetto Tor per i dettagli
+protocollo.
+
+AUTORI
+-------
+Roger Dingledine <arma(a)mit.edu>, Nick Mathewson <nickm(a)alum.mit.edu>.
Added: website/trunk/manpages/it/torify.1.txt
===================================================================
--- website/trunk/manpages/it/torify.1.txt (rev 0)
+++ website/trunk/manpages/it/torify.1.txt 2011-03-03 13:39:36 UTC (rev 24296)
@@ -0,0 +1,51 @@
+// Copyright (c) The Tor Project, Inc.
+// Si veda LICENSE per informazioni sulla licenza
+// Il seguente file è di tipo asciidoc usato per generare pagine man e riferimenti html.
+// Impara ad usare asciidoc al sito http://www.methods.co.nz/asciidoc/userguide.html
+torify(1)
+=========
+Peter Palfrader Jacob Appelbaum
+
+NOME
+----
+torify - wrapper per torsocks o tsocks e tor
+
+SOMMARIO
+--------
+**torify**__applicazione__ [__argomenti dell'__ __applicazione]
+
+DESCRIZIONE
+-----------
+**torify** è un semplice wrapper che tenta di trovare il miglior wrapper Tor sottostante
+disponibile in un sistema. Questo richiama i torsock o tsock grazie a un spcifica
+configuarazione di file tor. +
+
+Torsocks è un wrapper con maggiori funzionalità che blocca esplicitamente
+UDP, risolve nomi di host in modo sicuro e ridirige le connessioni TCP.
+
+Lo stesso wrapper tsocks è una via di mezzo tra la libreria socks e
+l'applicazione che si desidera reindirizzare. +
+
+Si prega di notare che poiché entrambi i metodi usano LD_PRELOAD, torify non
+può essere applicato ai binari SUID.
+
+AVVISO
+-------
+Bisogna sapere che il modo di come tsocks funziona in questo momento
+reindirizza solo le connessioni TCP. È importante sapere che questo non
+include ricerche di nome di host che potrebbero essere trovate attraverso il
+proprio sistema di risoluzione sui propri servernomi di risoluzione. Lo
+strumento **tors-reosolve**(1) può essere un'utile soluzione altrernativa in
+alcuni casi. Le FAQ Tor al sito
+https://wiki.torproject.org/noreply/TheOnionRouter/TorFAQ possono fornire
+ulteriori informazioni su questo argomento. +
+
+Quando utilizzato con torsocks, torify potrebbe non divulgare le richieste
+DNS o i dati UDP. +
+
+Entrambi divulgheranno i dati ICMP.
+
+SI VEDA ANCHE
+--------
+**tor**(1), **tor-resolve**(1),**torsocks**(1), **tsocks**(1),
+**tsocks.conf**(5).
Added: website/trunk/manpages/my/tor-resolve.1.txt
===================================================================
--- website/trunk/manpages/my/tor-resolve.1.txt (rev 0)
+++ website/trunk/manpages/my/tor-resolve.1.txt 2011-03-03 13:39:36 UTC (rev 24296)
@@ -0,0 +1,46 @@
+// Copyright (c) The Tor Project, Inc.
+// See LICENSE for licensing information
+// This is an asciidoc file used to generate the manpage/html reference.
+Peter Palfrader
+
+Name----
+tor-resolve - tor ကိုအသံုးျပဳ၍ IP လိပ္စာ၏ hostname ကို ဆံုးျဖတ္ေပးျခင္း
+
+Synopsis
+--------
+**tor-resolve** [-4|-5] [-v] [-x] __hostname__ [__sockshost__[:__socksport__]]
+
+Description
+-----------
+**tor-resolve** ဆိုသည္မွာ socks resolve command မ်ားကိုသိေသာ socks proxy proxy
+ျဖင့္ ဆက္သြယ္ေပးသည့္ ရိုးရွင္းေသာ script တစ္ခုျဖစ္သည္။ hostname ကိုယူ၍ IP ကိုယူ၍ IP
+လိပ္စာကိုပန္ထုတ္ေပးသည္။
+
+By default, **tor-resolve** uses the Tor server running on 127.0.0.1 on
+SOCKS port 9050. If this isn't what you want, you should specify an
+explicit __sockshost__ and/or __socksport__ on the command line.
+
+Options
+-------
+vervose output ျပျခင္း
+
+**-x**::
+lookup ျပန္လုပ္ပါ၊ IPv4 လိပ္စာအတြက္ PTR မွတ္တမ္းယူပါ
+
+**-5**::
+socks5 protocol ကိုသံုပါ
+
+**-4**::
+ပံုမွန္ုဖစ္ေသာ socks5 protol ကိုသံုခင္းထက္ socks4a protocol ကိုသံုပါ၊
+DNS ျပန္လွန္ျခင္းကိုတာ့ လုပ္ေဆာင္မေပးႏင္ပါ
+
+See Also
+--------
+**tor**(1), **torify**(1). +
+
+protocol အေသးစိတ္ကိုသိရန္ tor package ထဲရွိ doc/socks-extensions.txt
+ကိုၾကည့္ပါ
+
+Authors
+-------
+Roger Dingledine <arma(a)mit.edu>, Nick Mathewson <nickm(a)alum.mit.edu>.
Added: website/trunk/manpages/my/tor.1.txt
===================================================================
--- website/trunk/manpages/my/tor.1.txt (rev 0)
+++ website/trunk/manpages/my/tor.1.txt 2011-03-03 13:39:36 UTC (rev 24296)
@@ -0,0 +1,1515 @@
+// Copyright (c) The Tor Project, Inc.
+// လိုင္စင္အခ်က္အလက္မ်ားအတြက္ လိုင္စင္ဖိုင္ကိုၾကည့္ရန္
+// This is an asciidoc file used to generate the manpage/html reference.
+// Learn asciidoc on http://www.methods.co.nz/asciidoc/userguide.html
+TOR(1)
+======
+
+အမည္
+----
+tor - ဒုတိယမ်ိဳးဆက္ onion router
+
+
+SYNOPSIS
+--------
+**tor** [__OPTION__ __value__]...
+
+ေဖာ္ျပခ်က္
+-----------
+tor သည္ connection-oriented (ယံုၾကည္စိတ္ခ်ရေသာ ဆက္သြယ္ေရးနည္းလမ္း) ျဖစ္ေသာ
+မိမိအသံုးျပဳေနသည့္ဆက္သြယ္ေရးလမ္းေၾကာင္းကုိ မသက္ဆုိင္သူမ်ား
+မသိရွိေစႏိုင္ေရးအတြက္ဖံုးကြယ္ေပးထားႏိုင္ေသာ
+ဆက္သြယ္ေရးဝန္ေဆာင္မႈတစ္ခုျဖစ္သည္။ သံုးစဲြသူက ရွိႏွင့္ၿပီးသား nodes (server,
+router စသည့္ ဆက္သြယ္ေရးဆံုမွတ္မ်ား) မ်ားမွတဆင့္ မူရင္းလမ္းေၾကာင္းတစ္ခု
+(soure routed path) ကိုေရြးခ်ယ္ေပး၍ ၎တို႔အခ်င္းခ်င္း virtual circuit
+တစ္ခုကုိတည္ေဆာက္လုိက္သည္။ ၎သည္ေရြးခ်ယ္ထားေသာ node မ်ားသာ
+အခ်င္းခ်င္းဆက္သြယ္သိရွိေနေစၿပီး အျခားမသက္ဆုိင္ေသာ node မ်ားႏွင့္
+ဆက္သြယ္ေဆာင္ရြက္ျခင္းမရွိေပ။ သက္ဆုိင္သည့္ ေနရာသို႔ေရာက္ရွိေသာအခါမွသာ traffic
+မ်ားကို အဆိုပါ node အခ်င္းခ်င္းသာ သိႏိုင္ေသာ Key တစ္ခု (symmetric key)
+ျဖင့္ျဖည္ထုတ္သည္။
+
+အၾကမ္းဖ်င္းအားျဖင့္ tor သည္ server မ်ားတစ္ခုႏွင့္ တစ္ခု အျပန္အလွန္
+စုဖြဲ႔ထားေသာ network တစ္ခုကို တည္ေဆာက္ေပးထားသည္။(၄င္းတို႔ကို "Onion router"
+မ်ားဟုေခၚသည္)။ သံုးစြဲသူက ထုိrouter မ်ားမွ တဆင့္ သူတို႔၏ Web Traffic, FTP,
+SSH စသည့္ TCP Streamမ်ားကုိ အျပန္ျပန္အလွန္လွန္ပုိ႔ေဆာင္ႏိုင္သည္။ သို႔ရာတြင္
+ထုိ Traffic မ်ား၏ မူလေပးပို႔သူ၏ ရင္းျမစ္ကုိ လက္ခံသူမ်ား၊
+ၾကားမွေစာင့္ၾကည့္ေနသူမ်ား၊ထုိမွ်သာမက Router မ်ားကုိယ္တိုင္ပင္လွ်င္
+လိုက္လံစံုစမ္းသိရွိရန္ ခဲယဥ္းေပလိမ့္မည္။====
+
+OPTIONS
+-------
+**-h**, **-help**::
+ အကူညီေတာင္းခံေသာစကားတိုေလးကိုေဖာ္ျပေပးၿပီး ထြက္ေပးသည္
+
+**-f** __FILE__::
+ FILE contains further "option value" paris. (Default: @CONFDIR@/torrc)
+
+**--hash-password**::
+ control port access မ်ားအတြက္ password မ်ားေျပာင္းထုတ္ေပးသည္
+
+**--list-fingerprint**::
+ အသံုးျပဳသူ၏ key မ်ားကို ေျပာင္းေပးၿပီး နာမည္ဝွက္ႏွင့္ လက္ေဗြကို ထုတ္ေပးသည္
+
+**--verify-config**::
+ configuration file ရ မရ အတည္ျပဳေပးသည္
+
+**--nt-service**::
+ **--service [install|remove|start|stop]** tor ၏ ဝင္းဒိုးကို စီမံသည္
+ NT/2000/XP service. လက္ရွိအသံုးျပဳရန္ညႊန္ၾကားခ်က္မ်ားကို ဒီမွာေတြ႔ႏိုင္သည္
+ https://wiki.torproject.org/noreply/TheOnionRouter/TorFAQ#WinNTService
+
+**--list-torrc-options**::
+ ရႏိုင္သည့္ေရြးခ်ယ္မႈတိုင္းကို ျပသည္
+
+**--version**::
+ tor version ကိုျပၿပီး ထြက္ေပးသည္
+
+**--quiet**::
+ tor ကို (အထူးေတာင္းဆိုေသာအေျခအေနမွလဲြ၍) console log ျဖင့္
+စတင္အသံုးမျပဳပါႏွင့္။ (ပံုမွန္အားျဖင့္ tor သည္ "notice" level
+ျဖင့္စတင္ေပးတတ္ၿပီး ျပဳျပင္ေျပာင္းလဲျခင္း သရုပ္ခဲြမႈ မလုပ္သ၍ console
+ကိုျမွင့္ေပးသည္)
+
+Other options can be specified either on the command-line (--option
+ value), or in the configuration file (option value or option "value").
+ Options are case-insensitive. C-style escaped characters are allowed inside
+ quoted values. Options on the command line take precedence over
+ options found in the configuration file, except indicated otherwise. To
+ split one configuration entry into multiple lines, use a single \ before
+ the end of the line. Comments can be used in such multiline entries, but
+ they must start at the beginning of a line.
+
+**BandwidthRate** __N__ **bytes**|**KB**|**MB**|**GB**::
+ A token bucket limits the average incoming bandwidth usage on this node to
+ the specified number of bytes per second, and the average outgoing
+ bandwidth usage to that same value. If you want to run a relay in the
+ public network, this needs to be _at the very least_ 20 KB (that is,
+ 20480 bytes). (Default: 5 MB)
+
+**BandwidthBurst** __N__ **bytes**|**KB**|**MB**|**GB**::
+ burst ဟုေခၚေသာ bandwidth rate ထက္ေက်ာ္၍ အမ်ားဆံုးသံုးစြဲႏိုင္သည့္ အဝင္ႏွင့္
+အထြက္ ႏွစ္ခုစလံုးအတြက္ token bucket ပမာဏကို သတ္မွတ္သည့္ byte ႏွင့္ေဖာ္ျပေသာ
+ဂဏန္းတန္ဖိုးတစ္ခု။ (ပံုမွန္အားျဖင့္ 10 MB ျဖစ္သည္)
+
+**MaxAdvertisedBandwidth** __N__ **bytes**|**KB**|**MB**|**GB**::
+ သတ္မွတ္လိုက္ပါကကၽြႏု္ပ္တို႔၏ BandwidthRate ေနရာတြင္ ဤပမာဏထက္ပို၍
+မေၾကျငာေတာ့ပါ။ သံုးစြဲသူမ်ားသည္ ေအာ္ပေရတာမ်ား၏ ဆာဗာမ်ားမွတဆင့္
+ဆားကစ္ဆက္သြယ္မႈေတာင္းဆုိျခင္းမ်ားလြန္းေသာေၾကာင့္ (ဆားကစ္ဆက္သြယ္မႈမ်ားေလ
+Bandwidth rate ႀကီးေလျဖစ္သည္) သံုးစြဲသူအေရအတြက္ ေလွ်ာ့ခ်လုိေနေသာ
+ေအာ္ပေရတာမ်ားအတြက္လည္းနက္ေဝါ့ခ္လုပ္ေဆာင္ခ်က္မ်ားကုိ ထိခိုက္မႈမရွိပဲ
+သူတို႔ဆာဗာမ်ား၏ CPU ေတာင္းဆုိခ်က္ကို ေလွ်ာ့ခ်ႏိုင္သည္။
+
+**RelayBandwidthRate** __N__ **bytes**|**KB**|**MB**|**GB**::
+ If not 0, a separate token bucket limits the average incoming bandwidth
+ usage for \_relayed traffic_ on this node to the specified number of bytes
+ per second, and the average outgoing bandwidth usage to that same value.
+ Relayed traffic currently is calculated to include answers to directory
+ requests, but that may change in future versions. (Default: 0)
+
+**RelayBandwidthBurst** __N__ **bytes**|**KB**|**MB**|**GB**::
+ If not 0, limit the maximum token bucket size (also known as the burst) for
+ \_relayed traffic_ to the given number of bytes in each direction.
+ (Default: 0)
+
+**PerConnBWRate** __N__ **bytes**|**KB**|**MB**|**GB**::
+ အတည္ျပဳၿပီးလွ်င္ connection တစ္ခုခ်င္းစီမွ non-relay မ်ားအတြက္ သီးျခား
+rate ကန္႔သတ္ျခင္းမ်ားကိုလုပ္ပါ။ network-wide တန္ဖိုးသည္ သေဘာတူ
+ထုတ္ျပန္ၿပီးျဖစ္ေသာေၾကာင့္ တန္ဖိုးမ်ားကို ေျပာင္းလဲရန္မလိုပါ။
+ထိုတန္ဖိုးမ်ားအတိုင္းသာ သင္၏ relay က သံုးေပးလိမ့္မည္။
+
+**PerConnBWRate** __N__ **bytes**|**KB**|**MB**|**GB**::
+ အတည္ျပဳၿပီးလွ်င္ connection တစ္ခုခ်င္းစီမွ non-relay မ်ားအတြက္ သီးျခား rate
+ကန္႔သတ္ျခင္းမ်ားကိုလုပ္ပါသည္။network-wide တန္ဖိုးသည္ သေဘာတူ
+ထုတ္ျပန္ၿပီးျဖစ္ေသာေၾကာင့္ တန္ဖိုးမ်ားကို ေျပာင္းလဲရန္မလိုပါ။
+ထိုတန္ဖိုးမ်ားအတိုင္းသာ သင္၏ relay က သံုးေပးလိမ့္မည္။
+
+**ConnLimit** __NUM__::
+ The minimum number of file descriptors that must be available to the Tor
+ process before it will start. Tor will ask the OS for as many file
+ descriptors as the OS will allow (you can find this by "ulimit -H -n").
+ If this number is less than ConnLimit, then Tor will refuse to start. +
+ +
+ You probably don't need to adjust this. It has no effect on Windows
+ since that platform lacks getrlimit(). (Default: 1000)
+
+**ConstrainedSockets** **0**|**1**::
+ ဤတန္ဖိုးကို သတ္မွတ္လိုက္ပါက Tor သည္ Kernel အားsocket အားလံုးတို႔အတြက္
+buffer size ကုိ **ConstrainedSockSize** တြင္သတ္မွတ္လုိက္ေသာ တန္ဖုိးသုိ႔
+ေလွ်ာ့ခ်ေစလိမ့္မည္။ TCP buffers ပမာဏအကန္႔အသတ္ရွိေနႏိုင္ေသာ "အတုအေယာင္ ဆာဗာ"
+(virtual servers) မ်ားႏွင့္ အျခားေသာအလားတူအေျခအေနမ်ားတြင္
+၎သည္အလြန္အသံုးအဝင္သည္။ အတုအေယာင္ဆာဗာမ်ားတြင္ "Error
+ creating network socket: No buffer space available"ဟူေသာ သတိေပးခ်က္သည္
+ျဖစ္ေပၚေလ့ရွိေသာ ျပႆနာတစ္ရပ္ျဖစ္၏။ ထိုျပႆနာကိုေျဖရွင္းရန္
+ပထမဦးစားေပးနည္းလမ္းမွာadministrator အေနျဖင့္ /proc/sys/net/ipv4/tcp_mem
+ထဲတြင္ (သို႔မဟုတ္) ၎ႏွင့္အလားတူ နည္းလမ္းျဖင့္ host ကုိယ္တုိင္၏ buffer pool
+ကို သြားျပင္ရန္ျဖစ္သည္။ ဒုတိယမွာ ယခု **ConstrainedSockets** နည္းလမ္းကုိ
+သံုးရန္ျဖစ္သည္။ အကယ္၍ TCP buffer အေရအတြက္သည္ သင့္ system တြင္
+ရွားပါးအဖုိးတန္ျဖစ္ေနပါျဖစ္ေနပါက DirPort option ကုိ မသံုးသင့္ေပ။ ထို႔အျပင္
+cached directory request မ်ားသည္လည္း အပုိ socket မ်ားကုိ အသံုးျပဳသည္ျဖစ္ရာ
+အဆိုပါ buffer ရွားပါးမႈျပႆနာကို ပိုမိုဆုိးဝါးေစသည္။ ဤ feature ကို "buffer
+space မေလာက္င" ဟူေသာ အေျခအေနရွိမွသာ အသံုးျပဳသင့္သည္။ TCP buffer ပမာဏကို
+ေလွ်ာ့ခ်ျခင္းသည္ ေကာ္နတ္ရွင္၏ window sizeကို သက္ေရာက္မႈရွိေစ၍
+ေဝးလံေသာကြန္ယက္လမ္းေၾကာင္းမ်ားတြင္ ေႏွးေကြးေလးလံျခင္းကုိ
+ျဖစ္ေပၚေစသည္။(ပံုမွန္-0)
+
+**ConstrainedSockSize** __N__ **bytes**|**KB**::
+ConstrainedSockets ကုိသတ္မွတ္လုိက္သည့္အခါ socket အားလံုးတို႔၏
+ထုတ္လႊင့္ႏွင့္လက္ခံ Buffer တန္ဖိုးအားလံုးကုိ ဤတြင္သတ္မွတ္ထားေသာ ဂဏန္းသို႔
+ေျပာင္းလဲေပးလိမ့္မည္။ 2048 ႏွင့္ 262144 အတြင္း 1024 bytes စီတုိးသြားေသာ
+တန္ဖိုးမ်ားျဖစ္ရန္လိုပါသည္။ ပံုမွန္အားျဖင့္ 8192
+ျဖစ္လွ်င္အေကာင္းဆံုးျဖစ္သည္။
+
+**ControlPort** __Port__::
+ယခုသတ္မွတ္လိုက္ေသာ Port မွတဆင့္ connection မ်ားျဖတ္သန္းမႈကုိ
+ခြင့္ျပဳမည္ျဖစ္ၿပီး ၎connection မ်ားအား Tor Control Protocol
+မ်ားကုိအသံုးျပဳျခင္းအားျဖင့္ Tor process ကုိထိန္းခ်ဳပ္ျခင္းအားခြင့္ျပဳမည္။
+(control-spec.txt ဖုိင္တြင္ေဖာ္ျပထားသည္) မွတ္သားရမည္မွာ
+**HashedControlPassword** သို႔မဟုတ္ **CookieAuthentication** တစ္ခုခုအား
+မသတ္မွတ္ရေသးပါက ဤလုပ္ေဆာင္ခ်က္သည္ Tor အားlocal host (မိမိစက္အတြင္းရွိ)
+မည္သည့္ process ကုိမဆုိ (မလုိလားအပ္ပဲ) ထိန္းခ်ဳပ္ခြင့္ေပးလိုက္ျခင္းကို
+ျဖစ္ေစႏိုင္သည္။ ဤေရြးခ်ယ္မႈအတြက္ Tor controller မ်ားစြာလိုအပ္သည္။
+အမ်ားဆံုးသံုးေသာတန္ဖုိးမွာ 9051 ျဖစ္သည္။
+
+**ControlListenAddress** __IP__[:__PORT__]::
+Controller မွလာေသာ ထိန္းခ်ဳပ္မႈမ်ားကုိ ရယူသည့္ listener ကို
+ယခုသတ္မွတ္လိုက္ေသာ IP address ႏွင့္တြဲဖက္အလုပ္လုပ္ေစျခင္းျဖစ္သည္။ အကယ္၍ port
+ကုိပါသတ္မွတ္လိုက္လွ်င္ ControlPort တြင္သတ္မွတ္ထားေသာ port ႏွင့္မတြဲပဲ
+ဤေနရာတြင္သတ္မွတ္လိုက္ေသာ Port ႏွင့္သာတြဲမည္။ အၾကံေပးလိုသည္မွာ
+သင့္ကုိယ္သင္ဘာလုပ္ေနသည္ဟု ေသခ်ာဂဏမသိပါက ဤညႊန္ၾကားခ်က္ကုိသူ႔ဘာသာသူေနပါေစ။
+အဘယ့္ေၾကာင့္ဆိုေသာ္ ကြန္ယက္တုိက္ခိုက္သူမ်ားအား Control listener
+ကိုေပးအသံုးျပဳေစျခင္းသည္အႏၲရာယ္ႀကီးမားေသာေၾကာင့္ျဖစ္ပါသည္။ (ပံုမွန္
+127.0.0.1) ဤညႊန္ၾကားခ်က္ကုိ တစ္ခုထက္ပိုေသာ IP address /port
+မ်ားအတြက္အႀကိမ္အေရအတြက္ မ်ားစြာအသံုးျပဳႏိုင္သည္။
+
+**ControlSocket** __Path__::
+ControlPort ႏွင့္အတူတူျဖစ္သည္။ သို႔ရာတြင္ TCP socket အတြက္မဟုတ္ပဲ Unix
+domain socket အတြက္ျဖစ္သည္။(Unix ႏွင့္ Unix ႏွင့္တူေသာ စနစ္မ်ားအတြက္သာ)
+
+**HashedControlPassword** __hashed_password__::
+အျခား process သည္ password ၏ one-way hash ကုိသိမွသာ Control port
+သို႔ဝင္ေရာက္လာေသာ connection မ်ားကုိျဖတ္သန္းဝင္ေရာက္ခြင့္ေပးသည္။ Password
+တစ္ခု၏ hash အား"tor --hash-password _password_" ကုိ run
+ျခင္းျဖင့္သိႏိုင္သည္။ လက္ခံႏိုင္သည့္ ေျမာက္မ်ားစြာေသာ password မ်ားကို
+HashedControlPassword အားအၾကိမ္မ်ားစြာအသံုးျပဳျခင္းျဖင့္ ထည့္သြင္းႏိုင္သည္။
+
+**CookieAuthentication** **0**|**1**::
+ဤတန္ဖိုးကို 1 ဟုသတ္မွတ္ထားပါက connection process သည္ Tor ၏ directory ထဲတြင္
+တည္ေဆာက္ထားေသာ"control_auth_cookie" ဆိုေသာဖုိင္အတြင္း ပါဝင္ေသာအရာမ်ားကုိ
+သိမွသာလွ်င္ Control port သုိ႔ဝင္ေရာက္လာေသာ connection မ်ားကုိ
+ျဖတ္သန္းခြင့္ေပးသည္။ ဤနည္းလမ္းကို သင္၏စနစ္အတြင္းရွိ ဖုိင္မ်ား၏
+လံုျခံဳေရးကိုအထူးေကာင္းမြန္စြာ ေဆာင္ရြက္ထားမွသာ အသံုးျပဳသင့္သည္။ (ပံုမွန္-
+0)
+
+**CookieAuthFile** __Path__::
+သတ္မွတ္ျပဳျပင္ထားပါက Tor cookie ဖုိင္၏ မူလအမည္ႏွင့္လမ္းေၾကာင္းမ်ားကုိ
+ေျပာင္းလဲလုိက္လိမ့္မည္။ (အေပၚမွCookieAuthentication ကိုေလ့လာပါ)
+
+**CookieAuthFileGroupReadable** **0**|**1**|__Groupname__::
+တန္ဖိုးကို 0 ဟုသတ္မွတ္လိုက္ပါက သတ္မွတ္ထားေသာ ဝင္းဒိုးဖိုင္စနစ္အုပ္စု
+(filesystem group)အား cookie ဖုိင္ကို ဖတ္ရႈခြင့္ မျပဳေတာ့ပါ။1
+ဟုသတ္မွတ္လိုက္လွ်င္ ပံုမွန္ GID မ်ားအား ဖတ္ရႈခြင့္ေပးထားသည္။
+(အျခားအုပ္စုမ်ားအား ဖတ္ရႈခြင့္ရရန္ကိုမူ လုပ္ေဆာင္ႏိုင္ျခင္းမရွိေသးပါ။
+အေၾကာင္းတစ္ခုခုေၾကာင့္ လိုအပ္ပါက ကၽြႏု္ပ္တို႕ထံ အသိေပးႏိုင္ပါသည္) (ပံုမွန္
+0)
+
+**DataDirectory** __DIR__::
+ အလုပ္လုပ္ေသာ အခ်က္အလက္မ်ားကုိ DIR တြင္သိမ္းဆည္းထားပါသည္။ (ပံုမွန္ -
+@LOCALSTATEDIR@/lib/tor)
+
+**DirServer** [__nickname__] [**flags**] __address__:__port__
+__fingerprint__::
+ပံုစံတက်မဟုတ္သည့္ authoritative directory server တစ္ခုကို ေပးထားသည့္ လိပ္စာ၊
+port ႏွင့္ သီးသန္႔ သတ္မွတ္ထားေသာKey တစ္ခုျဖင့္ အသံုးျပဳျခင္းျဖစ္သည္။
+ဤညႊန္ၾကားခ်က္ကုိ တစ္ခုထက္ပိုေသာ authoritative directory server မ်ားအတြက္
+အႀကိမ္ေပါင္းမ်ားစြာ ထပ္ခါတလဲလဲအသံုးျပဳႏိုင္သည္။ ညႊန္ၾကားခ်က္မ်ားကို space
+key ျဖင့္ျခားနားၿပီး directory ၏ authority အမ်ိဳးအစားကိုခြဲျခားသည္။
+ပံုမွန္မွာ ("non-v2") ဟုမသတ္မွတ္မျခင္း မည္သည့္ လုပ္ပိုင္ခြင့္ကုိမဆုိရရွိသည့္
+("v2")ပံုစံ directory မ်ားျဖစ္သည္။၎ဆာဗာမ်ားကို Tor အေနျဖင့္ ပံုစံေဟာင္း
+("v1") authority အျဖစ္လည္း အသံုးျပဳနိုင္သည္။ (Directory mirror မ်ားသာ
+၎တန္ဖုိးမ်ားကုိ အေလးထားသည္)၎ဆာဗာမ်ားကုိ "hs" ဟုသတ္မွတ္လုိက္ပါက hidden
+service မ်ားအတြက္ လုပ္ပုိင္ခြင့္ရွိသည့္ ဆာဗာအျဖစ္လည္းေကာင္း၊ "v1" ႏွင့္
+hs"ဟု သတ္မွတ္မထားပါကလည္း အလားတူအတုိင္း Tor ကသတ္မွတ္သည္။ "bridge
+ဟုသတ္မွတ္ထားပါက bridge authoritative အျဖစ္သတ္မွတ္သည္။"option=**port**"
+ဟုေပးထားပါက dirserver သို႔သြားေသာ encrypt လုပ္ထားသည့္ tunnel ကိုဖြင့္ရာတြင္
+၎ port ကုိသံုးလိမ့္မည္။ေနာက္ဆံုးအေနျဖင့္ "v3ident=**fp**"ဟုေပးထားပါက
+dirserverသည္ v3 directory authority ျဖစ္သြားၿပီး ေရရွည္ v3 sigining key သည္
+**fp** ဆိုေသာသီးသန္႔ အမွတ္အသား (fingerprint) တစ္ခုရလိမ့္မည္။အကယ္၍
+**dirserver** ညႊန္ၾကားခ်က္ေပးမထားပါက Tor အေနျဖင့္ မူရင္းပံုမွန္ directory
+server မ်ားကုိ အသံုးျပဳလိမ့္မည္။ဤေရြးခ်ယ္ညႊန္ၾကားခ်က္မ်ားသည္ သူ႔ directory
+autthority ႏွင့္သူ သီးသန္႔ရွိေသာ ကုိယ္ Tor network
+တစ္ခုတည္ေဆာက္ေရးအတြက္သာရည္ရြယ္ထားျခင္းျဖစ္ပါသည္။ သတ္မွတ္လိုက္ပါက
+သင္သည္အျခားအသံုးျပဳသူမ်ားႏွင့္ သိသာစြာကြဲျပားသြားလိမ့္မည္။
+အဘယ္ေၾကာင့္ဆုိေသာ္ သူတို႔လုပ္ေနေသာ သင္ႏွင့္တူသည့္authority မ်ားကုိ
+သင္ယံုၾကည္မည္မဟုတ္ေသာေၾကာင့္ျဖစ္ပါသည္။
+
+**AlternateDirAuthority** [__nickname__] [**flags**] __address__:__port__ __fingerprint__ +
+
+**AlternateHSAuthority** [__nickname__] [**flags**] __address__:__port__ __fingerprint__ +
+
+**AlternateBridgeAuthority** [__nickname__] [**flags**] __address__:__port__
+__ fingerprint__::
+DirServer ႏွင့္တူသည္ သို႔ေသာ္ ပံုမွန္ directory authority မ်ားမွ အနည္းငယ္ကုိ
+အစားထုိးထားသည္။ AlternateDirAuthority ကိုသည္ ပံုမွန္ Tor directory
+authority မ်ားကုိ အစားထုိးလိုက္သည္ သို႔ေသာ္ hidden service authority
+မ်ားႏွင့္ bridge authority မ်ားကုိ မူ မူလအတုိင္းထားလုိက္သည္။ ထုိနည္းတူစြာ
+AlternateHSAuthority သည္ ပံုမွန္ hidden service authority ကို အစားထုိးသည္။
+သုိ႔ေသာ္directory ႏွင့္ bridge authority မ်ားကိုမူ ဒီအတုိင္းထားသည္။
+
+**DisableAllSwap** **0**|**1**::
+1ဟု တန္ဖုိးသတ္မွတ္လိုက္ပါက Tor အေနျဖင့္ လက္ရွိႏွင့္ေနာက္လာမည့္ memory page
+မ်ားအားလံုးကို အေသပိတ္လိုက္သည္။ထုိ႔ေၾကာင့္ ေနာက္ထပ္ memory ကို
+မမွတ္သားႏိုင္ေတာ့ေပ။ Windows, OS X ႏွင့္ Solaris မ်ားတြင္ အသံုးျပဳ၍
+မရႏိုင္ပါ။ ဤလုပ္ေဆာင္ခ်က္ကိုလက္ရွိေခတ္ေပၚ GNU/Linus distribution
+မ်ားတြင္အသံုးျပဳႏိုင္မည္ဟု ယံုၾကည္ရပါသည္။ *BSD system မ်ားတြင္ အသံုးျပဳ၍
+ရႏိုင္ေလာက္သည္။ (မစမ္းသပ္ရေသးပါ)ဤညႊန္ၾကားခ်က္အတြက္ Tor ကုိ root အေနျဖင့္
+စတင္ လိုအပ္လိမ့္မည္။ **User** option ကုိအသံုးျပဳ၍ Tor ၏
+လုပ္ပိုင္ခြင့္မ်ားကုိ မွန္ကန္စြာေလွ်ာ့ခ်ေပးႏိုင္သည္။(ပံုမွန္ - 0)
+
+**FetchDirInfoEarly** **0**|**1**::
+1ဟုသတ္မွတ္ထားပါက ပံုမွန္ဆြဲယူသည့္ စံသတ္မွတ္ခ်က္မ်ား (normal criteria for
+fetching) ႏွင့္ မကုိက္ညီသည့္တုိင္ Tor သည္ directory အခ်က္အလက္မ်ားကုိ အျခား
+directory cache မ်ားကဲ့သို႔
+အၿမဲတမ္းဆြဲယူေနလိမ့္မည္။ပံုမွန္အသံုးျပဳသူမ်ားအေနျဖင့္ မူလအတိုင္းသာ
+ထားသင့္သည္။ (ပံုမွန္-0)
+
+**FetchDirInfoExtraEarly** **0**|**1**::
+1 ဟုေပးပါက Tor သည္ directory အခ်က္အလက္မ်ားကို အျခား directory
+မ်ားကမသိမ္းဆည္းခင္ကပင္ ဆြဲယူၿပီးျဖစ္ေနလိမ့္မည္။၎သည္ directory
+အခ်က္အလက္မ်ားကုိ စတင္သတ္မွတ္လုိက္သည္ႏွင့္တျပိဳင္နက္ ေဒါင္းလုပ္ဆြဲယူရန္
+ႀကိဳးစားလိမ့္မည္။ပံုမွန္အသံုးျပဳသူမ်ား မူလအတိုင္းသာထားသင့္သည္။(ပံုမွန္-0)
+
+**FetchHidServDescriptors** **0**|**1**::
+0 ဟုသတ္မွတ္လုိက္ပါက Tor သည္ hidden service descriptor မ်ားကုိ ဆံုရပ္
+directory မ်ားမွ မည္သည့္အခါမွ် မဆြဲယူေတာ့ပါ။ ဤညႊန္ၾကားခ်က္သည္ သင့္အေနျဖင့္
+ဆြဲယူထားေသာ hidden service မ်ားကုိ ကုိင္တြယ္ေပးေနသည့္ Tor controller
+ကုိအသံုးျပဳေနမွသာ အသံုးဝင္သည္။(ပံုမွန္- 0)
+
+**FetchServerDescriptors** **0**|**1**::
+0 ေပးထားပါက Tor သည္ မည္သည့္ network အခ်က္အလက္ အက်ဥ္းခ်ဳပ္ သို႔မဟုတ္
+directory server မ်ားထဲမွမည္သည့္ server descriptor ကိုမွ် ဆြဲယူမည္မဟုတ္ပါ။
+directory fetches မ်ားကုိ ကုိင္တြယ္ေနသည့္ Tor controller ကိုအသံုးျပဳေနမွ
+အသံုးဝင္သည္။(ပံုမွန္-1)
+
+**FetchUselessDescriptors** **0**|**1**::
+1 သတ္မွတ္လိုက္ပါက Tor သည္ ၎သိသမွ် authority မ်ားထံမွ မေဟာင္းႏြမ္းေသးသည့္
+မည္သည့္ descriptor ကုိမဆုိဆြဲယူပါလိမ့္မည္။ ထိုသုိ႔မဟုတ္ပါက ၎သည္ အသံုးမဝင္ေသာ
+descriptor မ်ား (ဥပမာ ပိတ္ထားေသာ router မ်ားမွ)
+ကိုဆြဲယူျခင္းျပဳလိမ့္မည္မဟုတ္ပါ။ ၎သည္ လိပ္စာတစ္ခုဆီသို႔ ထြက္ေသာ Tor node
+မ်ားကုိ တြက္ခ်က္သည့္ "exitlist" script ကိုအသံုးျပဳေနလွ်င္
+အသံုးဝင္သည္။(ပံုမွန္-0)
+
+**HTTPProxy** __host__[:__port__]::
+Tor သည္ သူ၏ directory request အားလံုးကုိ directory server မ်ားသို႔
+တိုက္ရိုက္မဆက္သြယ္ဘဲ ယခုသတ္မွတ္လိုက္ေသာ host ႏွင့္ port မွတဆင့္
+ျပဳလုပ္မည္ျဖစ္သည္။
+
+**HTTPProxyAuthenticator** __username:password__::
+သတ္မွတ္လိုက္ပါက Tor သည္ RFC 2617 သတ္မွတ္ခ်က္အရ အေျခခံ HTTP proxy
+authentication မ်ားကို ဤ username ၊ password ျဖင့္အသံုးျပဳမည္ျဖစ္သည္။
+ယခုလက္ရွိတြင္ Tor မွအေထာက္အပံ့ျပဳေသာ HTTP proxy authetication အတြက္သာ
+အသံုးျပဳႏိုင္သည္။ အကယ္၍ အျခား protocol မ်ားကုိ အေထာက္အပံ့ျပဳလိုပါက
+ျဖည့္စြက္ျပင္ဆင္ခ်က္မ်ားကုိ လြတ္လပ္စြာေပးပုိ႔ႏိုင္ပါသည္။
+
+**HTTPSProxy** __host__[:__port__]::
+Tor သည္ သူ၏ SSL request အားလံုးကုိ directory server မ်ားသို႔
+တိုက္ရိုက္မဆက္သြယ္ဘဲ ယခုသတ္မွတ္လိုက္ေသာ host ႏွင့္ port (host:443) မွတဆင့္
+ျပဳလုပ္မည္ျဖစ္သည္။သင္၏ HTTPS proxy သည္ တခ်ိဳ႕ေသာport မ်ားမွတဆင့္သာ
+ဆက္သြယ္ႏိုင္သည္ဆုိပါက **FascistFirewall** တြင္ သင္ဆက္သြယ္ရန္ႀကိဳးစားသည့္
+portမ်ားကုိ တားျမစ္လိုေကာင္းလိုႏိုင္ပါသည္။
+
+**HTTPSProxyAuthenticator** __username:password__::
+သတ္မွတ္လိုက္ပါက Tor သည္ RFC 2617 သတ္မွတ္ခ်က္အရ အေျခခံ HTTPS proxy
+authentication မ်ားကို ဤ username ၊ password ျဖင့္အသံုးျပဳမည္ျဖစ္သည္။
+ယခုလက္ရွိတြင္ Tor မွအေထာက္အပံ့ျပဳေသာ HTTPS proxy authetication အတြက္သာ
+အသံုးျပဳႏိုင္သည္။ အကယ္၍ အျခား protocol မ်ားကုိ အေထာက္အပံ့ျပဳလိုပါက
+ျဖည့္စြက္ျပင္ဆင္ခ်က္မ်ားကုိ လြတ္လပ္စြာေပးပုိ႔ႏိုင္ပါသည္။
+
+**Socks4Proxy** __host__[:__port__]::
+အားလံုးေသာ OR (SSL) connection မ်ားကုိ host:port ရွိ SOCKS 4 proxy မွတဆင့္သာ
+ဆက္သြယ္လိမ့္မည္။ (host:1080)
+
+**Socks5Proxy** __host__[:__port__]::
+အားလံုးေသာ OR (SSL) connection မ်ားကုိ host:port ရွိ SOCKS 5 proxy မွတဆင့္သာ
+ဆက္သြယ္လိမ့္မည္။ (host:1080)
+
+**Socks5ProxyUsername** __username__ +
+
+**Socks5ProxyPassword** __password__::
+သတ္မွတ္လိုက္ပါက RFC 1929 အရ SOCKS5 server သည္ username ၊ password
+ကိုေတာင္းခံလိမ့္မည္။ username ႏွင့္password ႏွစ္ခုစလံုးသည္ စာလံုးေပါင္း
+၁လံုးမွ ၂၅၅ လံုးအတြင္းျဖစ္ရမည္။
+
+**KeepalivePeriod** __NUM__::
+Firewall ကုိပြင့္ေနေသာအသံုးျပဳသည့္ ေကာ္နတ္ရွင္မ်ားကုိ မျဖဳတ္ခ်ေစရန္အတြက္ NUM
+စကၠန္႔တုိင္းတြင္ keepalive padding cell မ်ားကုိ ေပးပုိ႔သည္။connection သည္
+open circuit မဟုတ္ပါက NUM စကၠန္႔ေက်ာ္လြန္သြားလွ်င္ အသံုးမျပဳပဲ အားေနမည့္အစား
+ပိတ္သြားေစမည္။(ပံုမွန္ ၅မိနစ္)
+
+**Log** __minSeverity__[-__maxSeverity__] **stderr**|**stdout**|**syslog**::
+__minSeverity__ ႏွင့္ __maxSeverity__ ၾကားမွ message အားလံုးကုိ standard
+output stream ၊ standard error stream သို႔မဟုတ္ system log မ်ားဆီသုိ႔
+ေပးပုိ႔ေစသည္။ ("syslog" သည္ Unix တြင္သာ အသံုးျပဳႏိုင္သည္)။ အသိအမွတ္ျပဳေသာ
+ဆိုးဝါးသည့္အေျခအေနအဆင့္ဆင့္မွာdebug ၊ info ၊ notice ၊ warn ႏွင့္ err
+တို႔ျဖစ္သည္။ မ်ားေသာအားျဖင့္ "notice" ဟုသာေၾကျငာပါသည္။ အဘယ္ေၾကာင့္ဆုိေသာ္
+ပိုမိုျပည့္စံုစြာေဖာ္ျပျခင္းအားျဖင့္log ဖုိင္ကုိရရွိသြားသည့္
+တုိက္ခိုက္သူမ်ားအတြက္ အေရးႀကီးသည့္ အခ်က္အလက္မ်ားကုိ ေပးအပ္ေနသကဲ့သုိ႔
+မျဖစ္ေစရန္ျဖစ္သည္။အကယ္၍ ဆုိးဝါးေသာအေျခအေနတစ္ခုကိုသာ သတ္မွတ္ထားပါက ၎အေျခအေန
+(သို႔မဟုတ္) ထုိ႔ထက္ဆုိးဝါးလာမွသာ message မ်ားကုိ သတ္မွတ္ထားေသာေနရာသုိ႔
+ေပးပို႔ပါသည္။
+
+**Log** __minSeverity__[-__maxSeverity__] **file** __FILENAME__::
+အထက္တြင္ ေဖာ္ျပထားသည္ႏွင့္တူညီသည္။ သို႔ရာတြင္ message မ်ားကုိ သတ္မွတ္ထားေသာ
+ဖုိင္မ်ားသုိ႔ ေပးပို႔သည္။ Configuration file တြင္ "Log" ဆိုေသာေရြးခ်ယ္မႈကို
+တၾကိမ္ထက္ပို၍ေတြ႕ႏိုင္သည္။ messageမ်ားသည္ သတ္မွတ္ထားေသာ
+ဆိုးဝါးသည့္အေျခအေနႏွင့္ တုိက္ဆုိင္ပါက log မ်ားအားလံုးသို႔ ေပးပုိ႔သည္။
+
+**Log** **[**__domain__,...**]**__minSeverity__[-__maxSeverity__] ... **file** __FILENAME__ +
+
+**Log** **[**__domain__,...**]**__minSeverity__[-__maxSeverity__] ... **stderr**|**stdout**|**syslog** ::
+ As above, but select messages by range of log severity __and__ by a
+ set of "logging domains". Each logging domain corresponds to an area of
+ functionality inside Tor. You can specify any number of severity ranges
+ for a single log statement, each of them prefixed by a comma-separated
+ list of logging domains. You can prefix a domain with $$~$$ to indicate
+ negation, and use * to indicate "all domains". If you specify a severity
+ range without a list of domains, it matches all domains. +
+ +
+ This is an advanced feature which is most useful for debugging one or two
+ of Tor's subsystems at a time. +
+ +
+ The currently recognized domains are: general, crypto, net, config, fs,
+ protocol, mm, http, app, control, circ, rend, bug, dir, dirserv, or, edge,
+ acct, hist, and handshake. Domain names are case-insensitive. +
+ +
+ For example, "`Log [handshake]debug [~net,~mm]info notice stdout`" sends
+ to stdout: all handshake messages of any severity, all info-and-higher
+ messages from domains other than networking and memory management, and all
+ messages of severity notice or higher.
+
+**LogMessageDomains** **0**|**1**::
+ If 1, Tor includes message domains with each log message. Every log
+ message currently has at least one domain; most currently have exactly
+ one. This doesn't affect controller log messages. (Default: 0)
+
+**OutboundBindAddress** __IP__::
+ထြက္သြားေသာ Outbound ေကာ္နတ္ရွင္အားလံုးကုိ သတ္မွတ္ထားေသာ IP address
+တစ္ခုမွထြက္ေစရန္ျပဳလုပ္သည္။ ၎သည္ သင့္system တြင္ network
+cardေျမာက္မ်ားစြာရွိၿပီး Tor ၏ေကာ္နတ္ရွင္အားလံုးကုိ ၎တို႔အနက္မွ တစ္ခုထံမွသာ
+ထြက္သြားေစရန္အသံုးဝင္သည္။loopback address (127.0.0.0/8 ႏွင့္ ::1) သို႔လာေသာ
+ေကာ္နတ္ရွင္မ်ားကိုမူ လစ္လ်ဴရႈမည္။
+
+**PidFile** __FILE__::
+စတင္ခ်ိန္တြင္ PID ကုိ FILE သို႔ေရးေစသည္။ Clean Shutdown လုပ္ခ်ိန္တြင္ FILE
+ကုိဖ်က္ပစ္သည္။
+
+**ProtocolWarnings** **0**|**1**::
+1ဟုသတ္မွတ္ထားပါက Tor ၏စံခ်ိန္စံညႊန္းႏွင့္မညီေသာ အျခားသူမ်ား၏ ကိစၥမွန္သမွ်ကုိ
+ဆုိးဝါးေသာအေျခအေန "warn" level ျဖင့္ မွတ္သားထားမည္။ကုိက္ညီပါက "info"
+ဟုမွတ္သားမည္။(ပံုမွန္-0)
+
+**RunAsDaemon** **0**|**1**::
+1 ျဖစ္ခဲ့ပါလွ်င္ Tor သည္ ေနာက္ကြယ္သုိ႔ Daemonize ျဖစ္သြားမည္။ Windows
+ကိုအက်ိဳးသက္ေရာက္မႈမရွိပါ။ ထိုသို႔မဟုတ္ပါက--service command-line option
+ကိုသံုးပါ။(ပံုမွန္-0)
+
+**LogTimeGranularity** __NUM__::
+ Set the resolution of timestamps in Tor's logs to NUM milliseconds.
+ NUM must be positive and either a divisor or a multiple of 1 second.
+ Note that this option only controls the granularity written by Tor to
+ a file or console log. Tor does not (for example) "batch up" log
+ messages to affect times logged by a controller, times attached to
+ syslog messages, or the mtime fields on log files. (Default: 1 second)
+
+**SafeLogging** **0**|**1**|**relay**::
+Log message မ်ားမွ အေရးႀကီးေသာ အေၾကာင္းအရာမ်ားကို
+အစားထိုးျခင္းျဖင့္ပံုဖ်က္ႏိုင္သည္။ ဤနည္းျဖင့္ log
+မွတ္သားျခင္းသည္အသံုးဝင္ေနဆဲျဖစ္ေသာ္လည္းမည္သည့္ ဝက္ဘ္ဆုိဒ္ကုိ ၾကည့္ရႈခဲ့သည္
+စသည့္ အသံုးျပဳသူမ်ား၏ ကုိယ္ေရးအခ်က္အလက္မ်ားကုိ ေဖ်ာက္ဖ်က္ပစ္သည္။ 0 ဟု
+သတ္မွတ္ထားပါက အထက္ပါတို႔ကိုမလုပ္ေဆာင္ပါ။ relay မ်ားတြင္ သတ္မွတ္ပါမူ relay
+အေနျဖင့္ သံုးသမွ်ကို မွတ္သားသည္။ Client အေနျဖင့္
+သံုးသမွ်ကိုေဖ်ာက္ဖ်က္သည္။(ပံုမွန္-1)
+
+**User** __UID__::
+စတင္ခ်ိန္တြင္ လက္ရွိ user အတြက္ uid ကုိသတ္မွတ္၍ သူ၏ အဓိကအုပ္စုအတြက္ gid
+ကိုသတ္မွတ္သည္။
+
+**HardwareAccel** **0**|**1**::
+သုညမဟုတ္ပါက မူလကတည္းကပါဝင္ေသာ crypto hardware acceleration ကုိ
+ရႏိုင္ေသာအခ်ိန္တြင္ အသံုးျပဳရန္ႀကိဳးစားလိမ့္မည္။(ပံုမွန္ - 0)
+
+**AccelName** __NAME__::
+OpenSSL ကိုအသံု းျပဳေနစဥ္အတြင္း hardware crypto acceleration သည္ဤ NAME ၏
+dynamic engine ကုိေခၚသံုးရန္ႀကိဳးစားလိမ့္မည္။ မည္သည့္ dynamic hardware
+engine ကိုသံုးသည္ျဖစ္ေစ ၎ကိုအသံုးျပဳရမည္ျဖစ္သည္။ အမည္မ်ားကုိopenssl engine
+command ျဖင့္ စစ္ေဆးႏိုင္သည္။
+
+**AccelDir** __DIR__::
+၎ကို dynamic hardware acceleration ကိုအသံုးျပဳသည့္အခါႏွင့္ engine
+implementation library မ်ားသည္ ပုံမွန္ OpenSSL တြင္ရွိမေနပဲ
+အျခားေနရာတြင္ရွိေနပါကအသံုးျပဳသည္။
+
+**AvoidDiskWrites** **0**|**1**::
+သုညမဟုတ္ပါက hard disk ထဲသို႔ေရးသြင္းမႈမ်ားကုိ
+ပံုမွန္ထက္အႀကိမ္ေရေလွ်ာ့နည္းစြာ ျပဳလုပ္လိမ့္မည္။ ဤညႊန္ၾကားခ်က္သည္Flash
+memory သို႔မဟုတ္ ေရးသြင္းသည့္အႀကိမ္အေရအတြက္ကို ကန္႔သတ္ထားသည့္ media
+မ်ားေပၚမွအလုပ္လုပ္ေနလွ်င္အသံုးဝင္သည္။(ပံုမွန္ -0)
+
+**TunnelDirConns** **0**|**1**::
+သုညမဟုတ္လွ်င္ ကၽြႏု္ပ္တုိ႔ဆက္သြယ္လုိက္ေသာ directory server ကလည္း
+အေထာက္အပံ့ျပဳပါက၊ ၾကားခံအဆင့္ တစ္ခု (one hop) သာရွိေသာ encrypt လုပ္ထားသည့္
+ေကာ္နတ္ရွင္တစ္ခုကို ၎၏ ORPort မွတဆင့္ တည္ေဆာက္လိမ့္မည္။(ပံုမွန္ - 1)
+
+**PreferTunneledDirConns** **0**|**1**::
+သုညမဟုတ္ပါက၊ သီးသန္႕လွ်ိဳ႕ဝွက္ directory connection (tunneled directory
+connection) မ်ားကုိ အေထာက္အပံ့မျပဳသည့္directory server မ်ားကို ျဖစ္ႏိုင္သမွ်
+ေရွာင္ရွားလိမ့္မည္။(ပံုမွန္ -1)
+
+**CircuitPriorityHalflife** __NUM1__::
+တန္ဖုိးတစ္ခုသတ္မွတ္လိုက္ပါက မည္သည့္ ဆားကစ္၏ အခန္းသို႔ ပို႔ရမည္ သို႔မဟုတ္
+မည္သည့္ေနရာသုိ႔ လႊဲေျပာင္းရမည္ကုိေဖာ္ျပထားသည့္ မူရင္ algorithm
+ကုိေျပာင္းလဲပစ္လိုက္လိမ့္မည္။ သုညျဖစ္ေနေသာ္
+အလုပ္လုပ္ေနေသာေကာ္နတ္ရွင္အတြင္းရွိ ဆားကစ္အခန္းအျခင္းျခင္းအတြင္း
+အျပန္အလွန္ပို႔ေဆာင္ေနလိမ့္မည္။ အျခားအေပါင္းကိန္းတစ္ခုျဖစ္ခဲ့ေသာ္
+CircuitPriorityHalflife (စကၠန္႔)၏ ထပ္ကိန္းရင္းက်ေသာ
+အနည္းဆံုးအခန္းအေရအတြက္ရွိသည့္ ဆားကစ္မွတဆင့္ ပို႔ေဆာင္မည္။ ပံုမွန္အားျဖင့္
+ဤတန္ဖုိးကိုသတ္မွတ္မထားပါ။ လက္ရွိပံုမွန္ အေျခအေနကိုသာ ကၽြႏု္ပ္တို႔
+အၾကံျပဳလိုပါသည္။အဘယ္ေၾကာင့္ဆုိေသာ္ ဤညႊန္ၾကားခ်က္သည္
+အဆင့္ျမင့္လုပ္ေဆာင္ခ်က္တစ္ခုျဖစ္ၿပီး သင့္အေနျဖင့္ ဝင္ေရာက္မစြက္ဖက္သင့္ေသာ
+ညႊန္ၾကားခ်က္တစ္ခုျဖစ္ေသာေၾကာင့္ျဖစ္ပါသည္။(ပံုမွန္- တန္ဖုိးသတ္မွတ္မထားပါ)
+
+**DisableIOCP** **0**|**1**::
+ If Tor was built to use the Libevent's "bufferevents" networking code
+ and you're running on Windows, setting this option to 1 will tell Libevent
+ not to use the Windows IOCP networking API. (Default: 1)
+
+Client ဘက္မွ ညႊန္ၾကားခ်က္မ်ား (Client Options)
+
+ေအာက္ပါညႊန္ၾကားခ်က္မ်ားသည္ Client ဘက္တြင္သာ အသံုးဝင္သည္။ (**SocksPort**သည္
+သုညမဟုတ္ေသာအခါ)
+
+**AllowInvalidNodes** **entry**|**exit**|**middle**|**introduction**|**rendezvous**|**...**::
+အကယ္၍ အခ်ိဳ႕ေသာ Tor service မ်ားသည္ မွန္ကန္စြာအလုပ္မလုပ္ပါက directory
+authority မ်ားသည္ ၎တုိ႔ကုိအသံုးျပဳ၍မရဟု သတ္မွတ္လုိက္၏။ ဆိုလိုသည္မွာ ၎ကို
+သင့္ဆားကစ္၏ အဝင္သုိ႔မဟုတ္ အထြက္ေနရာတြင္ အသံုးမျပဳသင့္ဟူ၍ျဖစ္သည္။အခ်ိဳ႕ေသာ
+ဆားကစ္ေနရာမ်ားတြင္အသံုးျပဳႏိုင္ေသာ္လည္း မူရင္းတန္ဖုိး "middle,rendezvous"
+မွလြဲ၍ အျခားတန္ဖိုးမ်ားကို မသံုးသင့္ပါ။
+
+**ExcludeSingleHopRelays** **0**|**1**::
+ This option controls whether circuits built by Tor will include relays with
+ the AllowSingleHopExits flag set to true. If ExcludeSingleHopRelays is set
+ to 0, these relays will be included. Note that these relays might be at
+ higher risk of being seized or observed, so they are not normally
+ included. Also note that relatively few clients turn off this option,
+ so using these relays might make your client stand out.
+ (Default: 1)
+
+**Bridge** __IP__:__ORPort__ [fingerprint]::
+UseBridges ညႊန္ၾကားခ်က္ႏွင့္အတူ အသံုးျပဳသည္။ "IP:ORPort" တြင္ရွိ relay
+မ်ားကို "birdge"ပံုစံ ျဖင့္ Tor network ထဲသုိ႔လႊဲေျပာင္းေစျခင္းျဖစ္သည္။
+အကယ္၍ "fingerprint" ကုိေပးထားပါက (DirServer ႏွင့္ ပံုစံတူျဖစ္သည္) ၎ေနရာတြင္
+အလုပ္လုပ္ေနေသာrelay သည္ မွန္ကန္ေသာ သက္ေသခံခ်က္ (fingerprint)
+တစ္ခုရရွိမည္ျဖစ္သည္။ အကယ္၍ ေပးလည္းထားမည္၊ UpdateBridgesFromAuthority ကိုလည္း
+သတ္မွတ္ထားမည္ဆုိပါက သက္ေသခံခ်က္မ်ားကို bridge authority တြင္ရွိေသာ bridge
+descriptor မ်ားအား ၾကည့္ရႈစစ္ေဆးရာတြင္လည္း (look up) အသံုးျပဳသည္။
+
+**LearnCircuitBuildTimeout** **0**|**1**::
+ If 0, CircuitBuildTimeout adaptive learning is disabled. (Default: 1)
+
+**CircuitBuildTimeout** __NUM__::
+
+ Try for at most NUM seconds when building circuits. If the circuit isn't
+ open in that time, give up on it. If LearnCircuitBuildTimeout is 1, this
+ value serves as the initial value to use before a timeout is learned. If
+ LearnCircuitBuildTimeout is 0, this value is the only value used.
+ (Default: 60 seconds.)
+
+**CircuitIdleTimeout** __NUM__::
+အကယ္၍ ဆားကစ္တစ္ခုကို NUM စကၠန္႔အတြင္း အသံုးမျပဳပါက ပိတ္ပစ္လိုက္မည္။ အကယ္၍
+Tor client တစ္ခုသည္လံုးဝအားလပ္ေနပါက ထိုclientသည္ ၎၏ဆားကစ္မ်ားအားလံုးကို
+သက္တမ္းကုန္သြားေစလိမ့္မည္။ ထုိ႔ေနာက္သူ၏ TLS ေကာ္နတ္ရွင္မ်ားပါ
+လုိက္လံကုန္ဆံုးသြားလိမ့္မည္။ အကယ္၍ ကၽြႏု္ပ္တုိ႔လက္ခံရရွိေနေသာ request
+မ်ားအနက္မည္သည့္ request ႏွင့္မွ်အသံုးဝင္ျခင္းမရွိေသာ
+ဆားကစ္တစ္ခုတည္ေဆာက္ျခင္းကုိရပ္တန္႔လိုက္ပါက ၎ဆားကစ္သည္ ဆားကစ္စာရင္းထဲတြင္
+အၿမဲတမ္းေနရာယူထားျခင္းရွိမည္မဟုတ္ေတာ့ပါ။(ပံုမွန္- တစ္နာရီ)
+
+**CircuitStreamTimeout** __NUM__::
+အကယ္၍ သုညမဟုတ္ပါက ဆားကစ္တစ္ခုမွ လမ္းေၾကာင္းတစ္ခုကိုျဖတ္ခ်ၿပီး
+အျခားဆားကစ္တစ္ခုကို ႀကိဳးစားေနသည့္အခ်ိန္အပိုင္းအျခားတစ္ခုကုိ (စကၠန္႔ျဖင့္)
+ေျပာင္းလဲသတ္မွတ္လိုက္သည္။ အကယ္၍သင့္၏ network
+သည္အလြန္ေႏွးေကြးေနပါကသင့္အေနျဖင့္ 60 ကဲ့သို႔ေသာ နံပါတ္တစ္ခုကို
+ေျပာင္းလဲသတ္မွတ္လိုလိမ့္မည္။(ပံုမွန္ - 0)
+
+**ClientOnly** **0**|**1**::
+1 ဟုသတ္မွတ္ထားပါက၊ Tor သည္မည္သည့္အေနအထားတြင္မွ် server
+တစ္ခုကဲ့သို႔လုပ္ေဆာင္ျခင္း သို႔မဟုတ္ directory request
+မ်ားကုိတံု႕ျပန္ေျဖၾကားျခင္း ျပဳလိမ့္မည္မဟုတ္ပါ။ ပံုမွန္အားျဖင့္ ORPort
+ကုိconfigure လုပ္မထားပါက client တစ္လံုးကဲ့သုိ႔သာ
+လုပ္ေဆာင္ေစသည္။(အမ်ားအားျဖင့္ သင့္အေနျဖင့္ ေျပာင္းလဲသတ္မွတ္ရန္မလိုပါ။ Tor
+သည္ သင့္ထံတြင္ ဆာဗာတစ္လံုးျဖစ္ေလာက္သည့္ bandwidth ရွိမရွိႏွင့္
+ယံုၾကည္စိတ္ခ်ရမႈ ရွိမရွိကို အလိုအေလ်ာက္ခြဲျခားသိပါသည္။)(ပံုမွန္ - 0)
+
+**ExcludeNodes** __node__,__node__,__...__::
+ဆားကစ္တစ္ခုတည္ေဆာက္ေနစဥ္တြင္ လံုးဝ အသံုးျပဳျခင္းရွိမည္ မဟုတ္သည့္ node
+တစ္ခု၏ကိုယ္ပုိင္အမွတ္အသား၊ သက္ေသခံခ်က္၊ အမည္ဝွက္၊ ႏိုင္ငံအမွတ္အသား ႏွင့္
+လိပ္စာပံုစံမ်ားပါဝင္ေသာစာရင္းတစ္ခုျဖစ္သည္။ (Example: ExcludeNodes
+SlowServer, $ EFFFFFFFFFFFFFFF, \{cc}, 255.254.0.0/8)
+
+**ExcludeExitNodes** __node__,__node__,__...__::
+exit node ကိုေရြးခ်ယ္ရာတြင္ လံုးဝ အသံုးျပဳျခင္းရွိမည္ မဟုတ္သည့္ node
+တစ္ခု၏ကိုယ္ပုိင္အမွတ္အသား၊ သက္ေသခံခ်က္၊ အမည္ဝွက္၊ ႏိုင္ငံအမွတ္အသား ႏွင့္
+လိပ္စာပံုစံမ်ားပါဝင္ေသာစာရင္းတစ္ခုျဖစ္သည္။ ExcludeNodes တြင္ပါဝင္သည့္ node
+မ်ားစာရင္းသည္လည္း ဤစာရင္းတြင္အလိုအေလွ်ာက္ သတ္မွတ္ထည့္သြင္းျခင္းခံရမည္။
+
+**EntryNodes** __node__,__node__,__...__::
+ပံုမွန္ ဆားကစ္တစ္ခု၏ ပထမၾကားခံအဆင့္အတြက္ အသံုးျပဳမည့္ node
+တစ္ခု၏ကိုယ္ပုိင္အမွတ္အသား၊ သက္ေသခံခ်က္၊ အမည္ဝွက္၊ ႏိုင္ငံအမွတ္အသား ႏွင့္
+လိပ္စာပံုစံမ်ားပါဝင္ေသာစာရင္းတစ္ခုျဖစ္သည္။ StrictNodes ကုိသတ္မွတ္မထားပါက
+၎တုိ႔ကုိ ရည္ညႊန္းခ်က္တစ္ခုအျဖစ္သာ အသံုးျပဳမည္။
+
+**EntryNodes** __node__,__node__,__...__::
+ပံုမွန္ ဆားကစ္တစ္ခု၏ ပထမၾကားခံအဆင့္အတြက္ အသံုးျပဳမည့္ node
+တစ္ခု၏ကိုယ္ပုိင္အမွတ္အသား၊ သက္ေသခံခ်က္၊ အမည္ဝွက္၊ ႏိုင္ငံအမွတ္အသား ႏွင့္
+လိပ္စာပံုစံမ်ားပါဝင္ေသာစာရင္းတစ္ခုျဖစ္သည္။ StrictNodes ကုိသတ္မွတ္မထားပါက
+၎တုိ႔ကုိ ရည္ညႊန္းခ်က္တစ္ခုအျဖစ္သာ အသံုးျပဳမည္။
+
+**StrictNodes** **0**|**1**::
+1 ဟုသတ္မွတ္ထားၿပီး EntryNodes ကုိလည္းသတ္မွတ္ထားပါက EntryNodes စာရင္းရွိ node
+မ်ားမွအပ မည္သည့္ node ကိုမွ် ပံုမွန္ exit node
+တစ္ခု၏ေနာက္ဆံုးၾကားခံအဆင့္တြင္ အသံုးျပဳမည္မဟုတ္။ Tor သည္ ဤစာရင္းမ်ားကို
+ၾကားခံတစ္ခုသာရွိေသာ directory စာရင္းမ်ား သုိ႔မဟုတ္ hidden service
+ကုိအေထာက္အပံ့ျပဳသည့္ ဆားကစ္မ်ားကဲ့သုိ႔ exit circuit မ်ားတြင္လည္း
+အသံုးျပဳေကာင္း ျပဳလိမ့္မည္။
+
+**FascistFirewall** **0**|**1**::
+1 ဟုသတ္မွတ္လုိက္ပါက Tor သည္ Firewallမ်ားမွခြင့္ျပဳေသာ OR
+မ်ားအလုပ္လုပ္ေနသည့္ port မ်ားသို႔သာ အထြက္ေကာ္နတ္ရွင္မ်ားကုိ
+တည္ေဆာက္လိမ့္မည္။(ပံုမွန္ 80 မွ 443, **FirewallPort**) ၎သည္ Tor ကုိ firewall
+၏ေနာက္တြင္ သတ္မွတ္ထားသည့္ policy မ်ားေဘာင္အတြင္း၌ client တစ္ခုအျဖစ္
+အလုပ္လုပ္ေစလိမ့္မည္။ သို႔ရာတြင္ ဆာဗာအျဖစ္ကုိမူ အလုပ္လုပ္ႏိုင္ေတာ့မည္မဟုတ္ပါ။
+ပုိမိုေကာင္းမြန္ေသာ ထိန္းခ်ဳပ္မႈကိုအလုိရွိပါက ReachableAddresses
+အစားထိုးအသံုးျပဳပါ။
+
+**FirewallPorts** __PORTS__::
+Firewall မွဆက္သြယ္ခြင့္ျပဳထားေသာ port မ်ားစာရင္းျဖစ္သည္။ **FascistFirewall**
+ကိုသတ္မွတ္ထားမွသာ အသံုးျပဳပါ။ ဤညႊန္ၾကားခ်က္ကိုမႀကိဳက္ပါကReachableAddresses
+ကုိအစားထိုးအသံုးျပဳပါ။(ပံုမွန္ - 80,443)
+
+**HidServAuth** __onion-address__ __auth-cookie__ [__service-name__]::
+့Hidden service အတြက္ client စစ္ေဆးအတည္ျပဳေသာ စနစ္ျဖစ္သည္။ အသံုးျပဳႏိုင္ေသာ
+"onion address" သည္a-z2-7 ကဲ့သုိ႔ေသာ character ၁၆ခုႏွင့္ ".onion" ဟူေသာ
+extensionပါဝင္သည္။ အသံုးျပဳႏိုင္ေသာ auth cookie မ်ားသည္A-Za-z0-9+ ကဲ့သုိ႔ေသာ
+character ၂၂ ခုပါဝင္သည္။ Service-name ကိုမူ Tor controller ကဲ့သို႔
+အတြင္းပုိင္းကိစၥမ်ားတြင္သာ အသံုးျပဳသည္။ တစ္ခုထက္ပိုေသာ hidden service
+မ်ားအတြက္ အႀကိမ္ေရေျမာက္မ်ားစြာ အသံုးျပဳႏိုင္သည္။ အကယ္၍ hidden serviceသည္
+authorization ကုိအသံုးျပဳထားၿပီး ဤညႊန္ၾကားခ်က္ေပးမထားပါကhidden service ကုိ
+အသံုးမျပဳႏိုင္ပါ။ hidden service မ်ားကို လိုအပ္ေသာauthorization
+မ်ားရရွိရန္အတြက္ **HiddenServiceAuthorizeClient** သံုးကာ ျပဳျပင္ႏိုင္သည္။
+
+**ReachableAddresses** __ADDR__[/__MASK__][:__PORT__]...::
+Firewallမွ ျဖတ္သန္းခြင့္ျပဳသည့္ ေကာ္မာျဖင့္ ျခားထားေသာ IP address ႏွင့္ port
+မ်ားစာရင္းျဖစ္သည္။ "accept" ကုိ "reject" ဟုသီးသန္႔ေဖာ္ျပမထားပါက
+အလိုအေလွ်ာက္နားလည္သည္မွလြဲ၍ ExitPolicy တြင္ သံုးသည့္ address
+မ်ားပံုစံအတုိင္းျဖစ္သည္။ ဥပမာ 'ReachableAddresses 99.0.0.0/8, reject
+18.0.0.0/8:80, accept *:80' ၏အဓိပၸါယ္မွာ firewall သည္ 99.0.0.0 network အတြက္
+ေကာ္နတ္ရွင္မ်ားကုိသာလက္ခံမည္ျဖစ္ၿပီး Port 80 မွလာေသာ18.0.0.0 အတြက္ network
+မ်ားကုိ ျဖဳတ္ခ်မည္။ သို႔ေသာ္ တျခား လိပ္စာမ်ားအတြက္ port 80 connection
+မ်ားကုိမူလက္ခံမည္။(ပံုမွန္- "accept *:*")
+
+**ReachableDirAddresses** __ADDR__[/__MASK__][:__PORT__]...::
+**ReachableAddresses** ႏွင့္အလားတူ address ႏွင့္ port မ်ားစာရင္းျဖစ္သည္။ Tor
+သည္ directory information မ်ားကို HTTP GET requestမွတဆင့္ ရယူေနသည့္အခါ
+၎တားျမစ္ခ်က္မ်ားကုိ လိုက္နာသည္။ သီးသန္႔မသတ္မွတ္ပါက
+**ReachableAddresses**ကိုသာအသံုးျပဳမည္။ အကယ္၍**HTTPProxy**
+ကုိသတ္မွတ္လုိက္ပါက ၎ေကာ္နတ္ရွင္မ်ားသည္ proxy မွတဆင့္သာ သြားလိမ့္မည္။
+
+*ReachableORAddresses** __ADDR__[/__MASK__][:__PORT__]...::
+**ReachableAddresses** ႏွင့္အလားတူ address ႏွင့္ port မ်ားစာရင္းျဖစ္သည္။ Tor
+သည္ Onion router မ်ားႏွင့္ TLS/SSL ေကာ္နတ္ရွင္မ်ားျဖင့္ဆက္သြယ္ေနပါက
+၎တားျမစ္ခ်က္မ်ားကုိလိုက္နာသည္။ သီးသန္႔မသတ္မွတ္ပါက
+**ReachableAddresses**ကိုသာအသံုးျပဳမည္။ **HTTPSProxy** ကုိသတ္မွတ္လုိက္ပါက
+၎ေကာ္နတ္ရွင္မ်ားသည္ အဆိုပါ proxy မွတဆင့္သာ
+သြားလိမ့္မည္။**ReachableORAddresses** ႏွင့္ **ReachableDirAddresses**
+ျခားထားျခင္းမ်ားကို သင္သည္ proxy မွတဆင့္သာဆက္သြယ္ေနမွသာ အသံုးျပဳမည္။
+(**HTTPProxy** ႏွင့္ **HTTPSProxy** ကိုၾကည့္ပါ) ပေရာက္စီအမ်ားစုသည္Port 443 -
+TLS connection (Onion router မ်ားကုိ Tor မွဆက္သြယ္ရာတြင္သံုး) ကုိ
+ကန္႔သတ္သည္။ အခ်ိဳ႕သည္ port 80 - HTTP GET request (directory information
+မ်ားကိုဆြဲယူရာတြင္သံုး) ကုိကန္႔သတ္သည္။
+
+**LongLivedPorts** __PORTS__::
+ၾကာရွည္အလုပ္လုပ္မည့္ ေကာ္နတ္ရွင္မ်ားအတြက္အသံုးျပဳမည့္ service ေပးသည့္ port
+မ်ားစာရင္းျဖစ္သည္။(ဥပမာ- chat ႏွင့္ interactive shells) ဤ port
+မ်ားကိုအသံုးျပဳသည့္ stream circuit မ်ားသည္ stream မ်ားၿပီးဆံုးသြားပါက node
+မ်ားပိတ္မသြားပဲအသံုးျပဳခ်ိန္ၾကာရွည္မည့္node မ်ားသာျဖစ္သည္။ (ပံုမွန္- 21, 22
+706, 1863, 5050, 5190, 5222, 5223, 6667, 8300)
+
+**MapAddress** __address__ __newaddress__::
+Tor သို႔ address တစ္ခုအတြက္ request တစ္ခုေရာက္လာပါက ၎address ကို
+အလုပ္မလုပ္ခင္ newaddress ထဲတြင္ ျပန္ေရးသည္။ ဥပမာ - အကယ္၍ www.indymedia.org
+သို႔ _torserver_ မွတဆင့္(_torserver_သည္ server
+၏အမည္ဝွက္ျဖစ္သည္)ေကာ္နတ္ရွင္တစ္ခု အၿမဲတမ္းအလိုရွိသည္ဆိုပါက "MapAddress
+www.indymedia.org www.indymedia.org.torserver.exit" ဟု အသံုးျပဳႏိုင္သည္။
+
+**NewCircuitPeriod** __NUM__::
+စကၠန္႔မည္မွ်အၾကာတြင္ ဆားကစ္အသစ္တစ္ခုတည္ေဆာက္ရမည္ကို ဆံုးျဖတ္သည္။(ပံုမွန္ -
+၃၀ စကၠန္႔)
+
+**MaxCircuitDirtiness** __NUM__::
+လြန္ခဲ့ေသာ ယခုသတ္မွတ္လုိက္သည့္ စကၠန္႔မွ ဆားကစ္တစ္ခုကို
+ျပန္အသံုးျပဳရန္ျဖစ္သည္။ သို႔ရာတြင္ အလြန္ေဟာင္းႏြမ္းေနေသာဆားကစ္မ်ားသုိ႔
+stream အသစ္မ်ားထပ္မံဆက္သြယ္မည္ေတာ့မဟုတ္ေပ။(ပံုမွန္- ၁၀ မိနစ္)
+
+**NodeFamily** __node__,__node__,__...__::
+ The Tor servers, defined by their identity fingerprints or nicknames,
+ constitute a "family" of similar or co-administered servers, so never use
+ any two of them in the same circuit. Defining a NodeFamily is only needed
+ when a server doesn't list the family itself (with MyFamily). This option
+ can be used multiple times. In addition to nodes, you can also list
+ IP address and ranges and country codes in {curly braces}.
+
+**EnforceDistinctSubnets** **0**|**1**::
+1ျဖစ္ပါက Tor သည္ IP address ခ်င္းအလြန္နီးကပ္စြာ ရွိေနေသာ ဆာဗာႏွစ္ခုကို
+ဆားကစ္တစ္ခုထဲတြင္ မရွိေစပါ။ လက္ရွိတြင္တူညီေသာ /16 နက္ေဝါ့ခ္ထဲတြင္
+ဆာဗာႏွစ္ခုတည္ရွိေနလွ်င္ ၎ဆာဗာႏွစ္ခုသည္ "အလြန္နီးကပ္" ေနသည္။ (ပံုမွန္ - 1)
+
+**SocksPort** __PORT__::
+ဤေနရာတြင္ သတ္မွတ္လုိက္ေသာportကုိ Socks မ်ားႏွင့္ ဆက္သြယ္ေဆာင္ရြက္ေသာ
+application မ်ားမွလာေသာ ေကာ္နတ္ရွင္မ်ားကို လက္ခံေစသည္။ application
+မွဆက္သြယ္လာျခင္းကုိ အလိုမရွိပါက 0 ဟုသတ္မွတ္ထားႏိုင္သည္။(ပံုမွန္ - 9050)
+
+**SocksListenAddress** __IP__[:__PORT__]::
+ဤေနရာတြင္ သတ္မွတ္လုိက္ေသာ address ကုိ Socks မ်ားႏွင့္ ဆက္သြယ္ေဆာင္ရြက္ေသာ
+application မ်ားမွလာေသာ ေကာ္နတ္ရွင္မ်ားကို လက္ခံေစသည္။ (ပံုမွန္ -
+127.0.0.1) port ကိုလဲ သတ္မွတ္ႏိုင္သည္ (192.168.0.1:9100)ဤညႊန္ၾကားခ်က္ကို
+တစ္ခုထက္ပိုေသာ address:port မ်ားအတြက္အၾကိမ္မ်ားစြာ အသံုးျပဳနိုင္သည္။
+
+**SocksPolicy** __policy__,__policy__,__...__::
+ဆာဗာအတြက္ ဝင္ေပါက္ policy တစ္ခုကို SocksPort ႏွင့္ DNSPort မ်ားသို႔
+ဆက္သြယ္သူမ်ားကို ကန္႔သတ္ထားႏိုင္သည္။ေအာက္ရွိ exit policy မ်ားႏွင့္
+ပံုစံတူသည္။
+
+**SocksTimeout** __NUM__::
+ံHandshaking အတြက္ sock connection ကုိ သတ္မွတ္ထားေသာ အခ်ိန္အတြင္း
+ေစာင့္ေနေစသည္။ ထုိအခ်ိန္အတြင္းcircuit ဆက္သြယ္မႈမရွိပါက ျဖတ္ခ်မည္။(ပံုမွန္-
+၂မိနစ္)
+
+**TrackHostExits** __host__,__.domain__,__...__::
+ေကာ္မာခံထားေသာ တန္ဖုိးတစ္ခုစီအတြက္ လက္ရွိဆက္သြယ္ခဲ့ေသာ ေကာ္နတ္ရွင္မ်ားထဲမွ
+၎တန္ဖိုးမ်ားႏွင့္ ကိုက္ညီေသာexit node ကိုျပန္လည္ရွာေဖြအသံုးျပဳမည္။ အကယ္၍
+တန္ဖုိး၏ေရွ႕၌ "." ခံထားပါက domain တစ္ခုလံုးႏွင့္ ကုိက္ညီသည္ဟုယူဆသည္။ အကယ္၍
+တန္ဖိုးတစ္ခုသည္ "." တစ္ခုထည္းျဖစ္ပါက ၎သည္ မည္သည့္အရာႏွင့္မဆုိ ကုိက္ညီသည္ဟု
+ဆုိလိုသည္။၎သည္ သင္မၾကာခဏဆက္သြယ္ေနေသာဆုိဒ္တစ္ခု၏ authentication cookie
+မ်ားသည္ သင္၏ IP address ကုိေျပာင္းလုိက္ျခင္းေၾကာင့္ သက္တမ္းကုန္သြားပါက
+အသံုးဝင္သည္။ အသံုးျပဳခဲ့ေသာ မွတ္တမ္းမ်ားသည္ အသံုးျပဳသူတစ္ေယာက္ထည္း ႏွင့္
+သက္ဆုိင္ေနပါကလည္း ထူးျခားေသာ အက်ိဳးမဲ့မႈ မျဖစ္ေပၚေစပါ။သို႔ေသာ
+ၾကားျဖတ္ေစာင့္ၾကည့္လိုသူတစ္ဦးတစ္ေယာက္အေနျဖင့္မူ cookie မ်ားမွတဆင့္ျဖစ္ေစ
+protocol ႏွင့္ဆုိင္ေသာ နည္းလမ္းျဖင့္ျဖစ္ေစ အလြယ္တကူ ေစာင့္ၾကည့္ႏိုင္သည္။
+
+**TrackHostExitsExpire** __NUM__::
+exit server တက္လိုက္က်လိုက္ျဖစ္ေနပါက exit server ႏွင့္ hostအၾကားဆက္သြယ္မႈ
+သက္တမ္းကုန္မည့္ ၾကာခ်ိန္တစ္ခုသတ္မွတ္ႏိုင္သည္။ပံုမွန္အားျဖင့္ ၁၈၀၀ စကၠန္႔
+(မိနစ္ ၃၀) ျဖစ္သည္။
+
+**UpdateBridgesFromAuthority** **0**|**1**::
+သတ္မွတ္ထားပါက Tor သည္ Bridge descriptor မ်ားကို ျပဳျပင္ထားေသာ bridge
+authority မ်ားထံမွ ရႏိုင္သည့္အခ်ိန္တြင္ ဆြဲယူလိမ့္မည္။authority မွ 404
+ဟုတုိက္ရိုက္တုန္႔ျပန္လွ်င္ ဆက္လက္လုပ္ေဆာင္ျခင္းမျပဳေတာ့ေပ။(ပံုမွန္- 0)
+
+**UseBridges** **0**|**1**::
+သတ္မွတ္ထားပါက Tor သည္ "Bridge" config line မ်ားထဲရွိ bridge မ်ားမွ
+descriptor မ်ားကိုရယူလိမ့္မည္။ ထုိ႔ေနာက္၎relay မ်ားကို ဝင္ေပါက္ေစာင့္ၾကပ္သူ
+(entry guard) အေနျဖင့္လည္းေကာင္း directory guard
+အေနျဖင့္လည္းေကာင္းအသံုးျပဳလိမ့္မည္။(ပံုမွန္- 0)
+
+**UseEntryGuards** **0**|**1**::
+ဤတန္ဖုိးကို 1 ဟုသတ္မွတ္ထားပါက သက္တမ္းၾကာရွည္မည့္ entry server
+အနည္းငယ္ကိုသာရွာေဖြ၍ ၎တုိ႔ကို "ကပ္" ထားဖုိ႔ႀကိဳးစားလိမ့္မည္။ ၎ကို
+အသံုးျပဳရန္ဆံုးျဖတ္ႏိုင္သည္။ အဘယ္ေၾကာင့္ဆုိေသာ မၾကာခဏေျပာင္းေနေသာ
+ဆာဗာမ်ားကို ပိုင္ဆုိင္သူမ်ားသည္သင္၏ လမ္းေၾကာင္းမ်ားကုိ
+ေလ့လာေစာင့္ၾကည့္ႏိုင္သည့္ အႏၲရာယ္ရွိပါသည္။(ပံုမွန္ - 0)
+
+**NumEntryGuards** __NUM__::
+အကယ္၍ တန္ဖုိးကို 1 ဟုေပးထားပါက ဆားကစ္ထဲမွ သက္တမ္းၾကာရွည္မည့္ router
+စာရင္းကို ၁ ဟုယူဆလိမ့္မည္။(ပံုမွန္-၃ အထိ)
+
+**SafeSocks** **0**|**1**::
+ဤညႊန္ၾကားခ်က္ေပးထားပါက IP address ကို DNS ႏွင့္တိုက္ဆုိင္စစ္ေဆးၿပီး
+စိတ္မခ်ရေသာ socks protocol မ်ားမွ application ေကာ္နတ္ရွင္မ်ားကို Tor
+မွေန၍ျဖတ္ခ်လိမ့္မည္။ အထူးသျဖင့္ remote DNS မလုပ္ေသာ socks4 ႏွင့္ socks5
+မ်ားအတြက္ျဖစ္သည္။(ပံုမွန္-0)
+
+**TestSocks** **0**|**1**::
+ညႊန္ၾကားခ်က္ေပးလိုက္ပါက ေကာ္နတ္ရွင္တစ္ခုသည္ စိတ္ခ်ရေသာ sock ဟုတ္သည္ျဖစ္ေစ
+မဟုတ္သည္ျဖစ္ေစ မွတ္တမ္းဖုိင္တြင္ "notice-level" ဟုမွတ္ထားလိမ့္မည္။ ၎သည္ Tor
+ကိုအသံုးျပဳေနေသာ application တစ္ခုထံမွDNS request
+မ်ားေပါက္ၾကားမႈရွိသည္မရွိသည္ကို စစ္ေဆးရာတြင္ အသံုးဝင္သည္။(ပံုမွန္-0)
+
+**WarnUnsafeSocks** **0**|**1**::
+ When this option is enabled, Tor will warn whenever a request is
+ received that only contains an IP address instead of a hostname. Allowing
+ applications to do DNS resolves themselves is usually a bad idea and
+ can leak your location to attackers. (Default: 1)
+
+**VirtualAddrNetwork** __Address__/__bits__::
+ When Tor needs to assign a virtual (unused) address because of a MAPADDRESS
+ command from the controller or the AutomapHostsOnResolve feature, Tor
+ picks an unassigned address from this range. (Default:
+ 127.192.0.0/10) +
+ +
+ When providing proxy server service to a network of computers using a tool
+ like dns-proxy-tor, change this address to "10.192.0.0/10" or
+ "172.16.0.0/12". The default **VirtualAddrNetwork** address range on a
+ properly configured machine will route to the loopback interface. For
+ local use, no change to the default VirtualAddrNetwork setting is needed.
+
+**AllowNonRFC953Hostnames** **0**|**1**::
+ဤညႊန္ၾကားခ်က္ကုိ ပိတ္ထားပါက Tor သည္ အသံုးမျပဳရေသာ character (@ ႏွင့္ :
+မ်ားကဲ့သို႔) မ်ားႏွင္ေပးထားေသာhostname မ်ားအား ၎တို႔ကို exit node သို႔
+ေျဖရွင္းရန္ပို႔မည့္အစား ပိတ္ပစ္လိမ့္မည္။ URL မ်ားကုိ မေတာ္တဆ
+resolveလုပ္ျခင္းမွ ကာကြယ္ႏိုင္သည္။(ပံုမွန္-0)
+
+**AllowDotExit** **0**|**1**::
+ If enabled, we convert "www.google.com.foo.exit" addresses on the
+ SocksPort/TransPort/NATDPort into "www.google.com" addresses that exit from
+ the node "foo". Disabled by default since attacking websites and exit
+ relays can use it to manipulate your path selection. (Default: 0)
+
+**FastFirstHopPK** **0**|**1**::
+ဤညႊန္ၾကားခ်က္ေပးထားပါက Tor သည္ ဆားကစ္တည္ေဆာက္ရာတြင္ ပထမဆံုး ၾကားခံအဆင့္အတြက္
+(first-hop) ကိုအမ်ားသံုး key အဆင့္အတုိင္းအလုပ္လုပ္လိမ့္မည္။
+ဤညႊန္ၾကားခ်က္ကို ဒီအတိုင္းထားသည္ကအႏၲရာယ္ကင္းပါသည္။ အဘယ္ေၾကာင့္ဆိုေသာ္
+ကၽြႏု္ပ္တုိ႔သည္ relay မ်ားကိုauthenticate လုပ္ရာတြင္ TLS
+ကုိအသံုးျပဳေနၿပီးျဖစ္၍ forward-secure key
+ကိုတည္ေဆာက္ထားၿပီးသာျဖစ္ေနေသာေၾကာင့္ျဖစ္သည္။
+ဆားကစ္တည္ေဆာက္ျခင္းလုပ္ငန္းကိုေႏွးေကြးသြားေစႏိုင္သည္။သတိျပဳရန္မွာ Tor သည္
+ပထမဆံုး ၾကားခံအတြက္ အမ်ားသံုး key အဆင့္ကုိ relay အျဖစ္
+အလုပ္လုပ္ေနပါကအျမဲအသံုးျပဳသည္။ first hop ၏ onion key ကုိမသိေသးပါက အမ်ားသံုး
+key ကုိမသံုးပါ။(ပံုမွန္- 1)
+
+**TransPort** __PORT__::
+သုညမဟုတ္ပါက သတ္မွတ္လုိက္ေသာ port ရွိ transparent proxy
+အေထာက္အပ့ံကိုဖြင့္လိုက္ပါမည္ ( သေဘာတူညီခ်က္အရ 9040)BSD သို႔မဟုတ္ Linux's
+IPTables မ်ားကဲ့သုိ႔ OSက transparent proxy ကုိေထာက္ပံ့ရန္လဲလိုသည္။အကယ္၍ Tor
+ကို transparent proxy အျဖစ္အသံုးျပဳရန္စိတ္ကူးေနပါက VirtualAddrNetwork
+တန္ဖုိးကုိ မူရင္းမွေျပာင္းလဲရန္လိုေပလိမ့္မည္။Proxy လုပ္လိုေသာ network အတြက္
+TransListenAddress option ကုိလည္း သတ္မွတ္လိုလိမ့္မည္။(မူရင္း - 0)
+
+**TransListenAddress** __IP__[:__PORT__]::
+Transparent proxy connectionမ်ားကို ဤ IP မွတဆင့္လက္ခံမည္ျဖစ္သည္။ (ပံုမွန္-
+127.0.0.1) ၎သည္ networkႀကီးတစ္ခုလံုးသုိ႔ Transparent proxy ကုိတင္ပို႔ရာတြင္
+အသံုးဝင္သည္။
+
+**NATDPort** __PORT__::
+Tor မွတဆင့္ NATD protocol ကိုအသံုးျပဳ၍ ipfw အေဟာင္းမ်ားႏွင့္
+ေကာ္နတ္ရွင္ပုိ႔လႊတ္ရာတြင္သံုးသည္။ ဤညႊန္ၾကားခ်က္သည္TransPort
+ကုိမသံုးႏိုင္သူမ်ားအတြက္သာျဖစ္သည္။
+
+**NATDListenAddress** __IP__[:__PORT__]::
+သတ္မွတ္လိုက္ေသာ IP ကုိ NATD connection မ်ားကို လက္ခံရာတြင္သံုးသည္။(ပံုမွန္-
+127.0.0.1)
+
+**AutomapHostsOnResolve** **0**|**1**::
+သတ္မွတ္ေပးလိုက္သည္ႏွင့္ **AutomapHostsSuffixes** ထဲရွိ suffixတစ္ခုခုႏွင့္
+အဆံုးသတ္ထားေသာ address တစ္ခုကို ေျဖရွင္းေပးရန္ ေတာင္းဆိုလာလိမ့္မည္။ ထိုအခါ
+မသံုးေသာ အတုအေယာင္ address တစ္ခုႏွင့္ တြဲေပးလိုက္ၿပီး ၎အတုအေယာင္
+လိပ္စာအသစ္ကုိ return ျပန္လိုက္မည္။address မ်ားကိုေျဖရွင္းေပးၿပီး ".onion"
+လိပ္စာနွင့္ ခ်ိတ္ဆက္ေပးေသာ application မ်ားျပဳလုပ္ရာတြင္ အသံုးက်သည္။(ပံုမွန္
+- 0 )
+
+**AutomapHostsSuffixes** __SUFFIX__,__SUFFIX__,__...__::
+ေကာ္မာႏွင့္ ျခားထားေသာ suffix မ်ား၏ စာရင္းျဖစ္၍ **AutomapHostsOnResolve**
+ႏွင့္တြဲသံုးသည္။"." suffix သည္ ရွိသမွ် address အားလံုးျဖစ္သည္။(ပံုေသ .exit,
+.onion)
+
+**DNSPort** __PORT__::
+ဤေနရာတြင္ သတ္မွတ္လိုက္ေသာ port မွတဆင့္ UDP DNS request မ်ားကို
+အမည္ကိုထုတ္ေဖာ္ျခင္းမျပဳပဲေျဖရွင္းသည္။(ပံုမွန္- 0)
+
+**DNSListenAddress** __IP__[:__PORT__]::
+DNS connection မ်ားကုိ ဤIP မွတဆင့္ လက္ခံမည္။(ပံုမွန္- 127.0.0.1)
+
+**ClientDNSRejectInternalAddresses** **0**|**1**::
+1 သို႔သတ္မွတ္ထားပါက internal address မ်ား (127.0.0.1 (သို႔) 192.168.0.1)
+အေနျဖင့္ ဝင္ေရာက္လာေသာ အမည္မသိပဲရရွိထားေသာ DNS အေျဖမ်ားကိုTor
+မွယံုၾကည္လိမ့္မည္မဟုတ္ပါ။ ဤညႊန္ၾကားခ်က္သည္
+အခ်ိဳ႕ေသာဘေရာက္ဇာအေျချပဳတုိက္ခိုက္မႈမ်ားကို ကာကြယ္ႏိုင္သည္။
+ဘာလုပ္ေနမွန္းမသိပဲႏွင့္ ပိတ္မပစ္ပါႏွင့္။(ပံုမွန္- 1)
+
+**ClientRejectInternalAddresses** **0**|**1**::
+ If true, Tor does not try to fulfill requests to connect to an internal
+ address (like 127.0.0.1 or 192.168.0.1) __unless a exit node is
+ specifically requested__ (for example, via a .exit hostname, or a
+ controller request). (Default: 1).
+
+**DownloadExtraInfo** **0**|**1**::
+တန္ဖိုး 1 ျဖစ္ေနပါက ၊ "extra-info" document မ်ားကို ေဒါင္းလုပ္ဆြဲၿပီး
+အလြယ္တကူသံုးႏိုင္ရန္ သိမ္းထားလိမ့္မည္။၎document မ်ားတြင္ ဆာဗာ၏
+အခ်က္အလက္မ်ားအျပင္ ပံုမွန္ router descriptorမ်ားထဲမွ အခ်က္အလက္မ်ားလည္း
+ပါဝင္သည္။Tor ကုိယ္တုိင္အေနျဖင့္ ၎အခ်က္အလက္မ်ားကို အသံုးမျပဳပါ။ Bandwidth
+ကုိေခၽြတာရန္အတြက္ ပိတ္ထားပါ။(ပံုမွန္-0)
+
+**FallbackNetworkstatusFile** __FILENAME__::
+Tor ထံတြင္ သိမ္းဆည္းထားၿပီး networkstatus ဖိုင္မရွိပါက ဤညႊန္ၾကားခ်က္ကို
+အသံုးျပဳ၍ စတင္သည္။ ၎ဖိုင္သည္ ေဟာင္းႏြမ္းေနသည့္တိုင္Tor အေနျဖင့္ directory
+mirror မ်ားအေၾကာင္း ေလ့လာႏိုင္ရန္ အသံုးျပဳပါသည္။ ထိုအခါ authority မ်ာ ၎အတြက္
+ဝန္ပိျခင္း မျဖစ္ေစေတာ့ပါ။(ပံုမွန္- None)
+
+**WarnPlaintextPorts** __port__,__port__,__...__::
+အသံုးျပဳသူသည္ အမည္မသိ connection မ်ားကို ယခုသတ္မွတ္လုိက္ေသာ port မ်ားမွတဆင့္
+ဆက္သြယ္ရန္ ႀကိဳးစားပါက Tor မွ သတိေပးပါမည္။၎ညႊန္ၾကားခ်က္သည္
+အသံုးျပဳသူမ်ားအား password မ်ားကုိ ရိုးရွင္းေသာပံုစံျဖင့္ ပုိ႔ျခင္းကို
+သတိေပးရန္ ဒီဇိုင္းဆင္ထားျခင္းျဖစ္သည္။(ပံုမွန္- 20, 109, 110 , 143)
+
+**RejectPlaintextPorts** __port__,__port__,__...__::
+WarnPlaintextPorts ကဲ့သို႔ ျဖစ္သည္။ သို႔ေသာ္ အႏၲရာယ္မ်ားေသာ
+portအသံုးျပဳပံုကို သတိေပးမည့္အစား ပိတ္ပင္လုိက္သည္။(ပံုမွန္-None)
+
+**AllowSingleHopCircuits** **0**|**1**::
+ When this option is set, the attached Tor controller can use relays
+ that have the **AllowSingleHopExits** option turned on to build
+ one-hop Tor connections. (Default: 0)
+
+ဆာဗာညႊန္ၾကားခ်က္မ်ား
+
+ေအာက္ပါတုိ႔ကို ဆာဗာမ်ားတြင္သာ အသံုးျပဳႏိုင္သည္။(ORPort သည္ သုညမဟုတ္သည့္အခါ)
+
+**Address** __address__::
+ The IP address or fully qualified domain name of this server (e.g.
+ moria.mit.edu) You can leave this unset, and Tor will guess your IP
+ address. This IP address is the one used to tell clients and other
+ servers where to find your Tor server; it doesn't affect the IP that your
+ Tor client binds to. To bind to a different address, use the
+ *ListenAddress and OutboundBindAddress options.
+
+**AllowSingleHopExits** **0**|**1**::
+ This option controls whether clients can use this server as a single hop
+ proxy. If set to 1, clients can use this server as an exit even if it is
+ the only hop in the circuit. Note that most clients will refuse to use
+ servers that set this option, since most clients have
+ ExcludeSingleHopRelays set. (Default: 0)
+
+**AssumeReachable** **0**|**1**::
+Tor network အသစ္တစ္ခုကုိ စတင္ရာတြင္သံုးသည္။ တန္ဖိုး 1 သို႔သတ္မွတ္ထားပါက
+self-reachability testing ကုိ မျပဳလုပ္ပဲ server descriptor
+ကုိသာuploadလုပ္မည္။ အကယ္၍ **AuthoritativeDirectory** ကို သတ္မွတ္ထားပါက
+ဤညႊန္ၾကားခ်က္သည္ dirserver ကုိ remote reachability testingကို ေက်ာ္ေစၿပီး
+ခ်ိတ္ဆက္ထားေသာ ဆာဗာမွန္သမွ်ကို အလုပ္လုပ္ေနသည္ဟု မွတ္သားလိမ့္မည္။
+
+**BridgeRelay** **0**|**1**::
+ Sets the relay to act as a "bridge" with respect to relaying connections
+ from bridge users to the Tor network. It mainly causes Tor to publish a
+ server descriptor to the bridge database, rather than publishing a relay
+ descriptor to the public directory authorities.
+
+**ContactInfo** __email_address__::
+ထိန္းခ်ဳပ္သူ၏ ဆက္သြယ္ရန္လိပ္စာျဖစ္သည္။ ဤလုိင္းကုိ spam အမွတ္ျဖင့္ spam
+harvester မ်ား၏ ေကာက္ယူျခင္းကုိခံရႏိုင္သည္။E-mail လိပ္စာကို
+ေသေသခ်ာခ်ာေၾကျငာေပးရန္လိုသည္။
+
+**ExitPolicy** __policy__,__policy__,__...__::
+Exit policy မ်ားေၾကျငာရန္ျဖစ္သည္။ policy မ်ား၏ပံုစံမွာ"**accept**|**reject**
+__ADDR__[/__MASK__][:__PORT__]" ျဖစ္သည္။ အကယ္၍_MASK_ကုိ ဖယ္ထားပါက
+၎ေပၚလစီသည္ host တစ္ခုတည္းကုိ သက္ေရာက္ေစသည္။
+အမ်ားအားလံုးအေပၚသက္ေရာက္ေစလုိလွ်င္"*" ဟုသတ္မွတ္ႏိုငသည္။ _PORT_သည္ port
+တစ္ခုတည္းျဖစ္ၿပီး interval တစ္ခုအတြင္းရွိ port မ်ားကို
+"__FROM_PORT__-__TO_PORT__", (သို႔) "*" ျဖင့္သတ္မွတ္ႏိုင္သည္။ _PORT_ကုိ
+ဖယ္ထားပါက "*" ဟုဆုိလိုသည္။"accept 18.7.22.69:\*,reject 18.0.0.0/8:\*,accept
+\*:\*" သည္ MIT သို႔လာသည့္ မည္သည့္trafficကုိမဆုိ web.mit.edu အတြက္မွလြဲ၍
+အကုန္ပိတ္မည္။ က်န္ေသာaddress မ်ားအတြက္မူ လက္ခံမည္။internal ႏွင့္ link-local
+network မ်ားအားလံုးကုိ သတ္မွတ္လုိပါက (0.0.0.0/8,
+ 169.254.0.0/16, 127.0.0.0/8, 192.168.0.0/16, 10.0.0.0/8, and
+ 172.16.0.0/12) "private" ဆိုသည့္ အထူးျပဳကုိ address
+အစားထည့္ေပးရမည္။၎လိပ္စာမ်ားကို ExitPolicyRejectPrivate config option အား 0
+မလုပ္သေရြ႔သင္၏ public IP ႏွင့္အတူ ပံုမွန္အားျဖင့္ ပိတ္ပင္ထားသည္။ ဥပမာ
+"accept 127.0.0.1:80,reject private:\*" ျဖင့္ 127.0.0.1 သုိ႔လာေသာ HTTP
+မ်ားကုိခြင့္ျပဳၿပီး အျခား internal network မ်ားသို႔လာသည္ကို
+ပိတ္ႏိုင္သည္။သို႔ရာတြင္ public address သို႔ေၾကျငာထားေသာ သင့္ကြန္ျပဴတာထံသို႔
+၎ကြန္နက္ရွင္မ်ားကို ခြင့္ျပဳေနသည္လည္းျဖစ္ႏိုင္ျပန္သည္။ အဆုိပါ internal ႏွင့္
+reserved IP addressမ်ားအေၾကာင္းကုိ RFC 1918 ႏွင့္ RFC 3330
+တြင္ၾကည့္ႏိုင္သည္။ဤညႊန္ၾကားခ်က္ကုိ
+အၾကိမ္မ်ားစြာသံုးႏိုင္သည္။ဤညႊန္ၾကားခ်က္မ်ားသည္ အရင္ထည့္ထားေသာ ေပၚလစီမ်ားကုိ
+ဦးစားေပးသည္။ ပံုမွန္သည္ + ျဖစ္သည္။
+
+ reject *:25
+ reject *:119
+ reject *:135-139
+ reject *:445
+ reject *:563
+ reject *:1214
+ reject *:4661-4666
+ reject *:6346-6429
+ reject *:6699
+ reject *:6881-6999
+ accept *:*
+
+**ExitPolicyRejectPrivate** **0**|**1**::
+Local network အားလံုးႏွင့္ exit policy ၏အစရွိ သင္၏ public IP address ကုိပါ
+ပယ္ခ်မည္။ ၎ကို ExitPolicy တြင္ၾကည့္ႏိုင္သည္။(ပံုမွန္- 1)
+
+**MaxOnionsPending** __NUM__::
+decrypted လုပ္ရန္ေစာင့္ဆုိင္းေနသာ onionskins မ်ား ယခုအေရအတြက္ထက္
+ေက်ာ္လြန္ပါက ေနာက္ဆံုးေရာက္သည္မ်ားကို ပယ္ခ်မည္။(ပံုမွန္ - 100)
+
+**MyFamily** __node__,__node__,__...__::
+ဤTor serverႏွင့္၎ႏွင့္အလားတူဆာဗာမ်ားကို အဖြဲ႔အစည္းတစ္ခုထဲက
+ထိန္းခ်ဳပ္သည္ဟုေၾကျငာသည္။ ထိုအဖြဲ႔အစည္းကိုfingerprint ျဖင့္လည္းေကာင္း
+အမည္ဝွက္ျဖင့္လည္းေကာင္း အသိအမွတ္ျပဳသည္။ ဆာဗာႏွစ္ခုသည္ "မိသားစု" တစ္ခုတည္းဟု
+သတ္မွတ္ကTor client မ်ားသည္ ၎တုိ႔ကုိ ဆားကစ္တစ္ခုထဲတြင္ အသံုးမျပဳနိုင္ေတာ့ပါ။
+(ဆာဗာတစ္ခုစီသည္ အျခားဆာဗာမ်ားကို ေၾကျငာေပးရမည္။မိမိကုိယ္မိမိ ေၾကျငာရန္မလို)
+
+**Nickname** __name__::
+ဆာဗာ၏ အမည္ဝွက္ကို ေၾကျငာသည္။ စာလံုးေရ ၁လံုးမွ ၁၉ လံုးရွိရမည္ျဖစ္ျပီး (a မွ
+z, A မွ Z, 0 မွ 9) စာလံုးမ်ားသာ ပါဝင္ရမည္။
+
+**NumCPUs** __num__::
+ How many processes to use at once for decrypting onionskins and other
+ parallelizable operations. If this is set to 0, Tor will try to detect
+ how many CPUs you have, defaulting to 1 if it can't tell. (Default: 0)
+
+**ORPort** __PORT__::
+Tor client ႏွင့္ ဆာဗာမ်ားမွလာသည့္ ေကာ္နတ္ရွင္မ်ားကို ဤportမွတဆင့္ လက္ခံမည္။
+
+**ORListenAddress** __IP__[:__PORT__]::
+Tor client ႏွင့္ ဆာဗာမ်ားမွလာသည့္ ေကာ္နတ္ရွင္မ်ားကို ဤ IP
+မွတဆင့္လက္ခံမည္။Port ကုိသတ္မွတ္ထားပါက ORPort မွ portကုိမယူပဲ ဤတြင္
+သတ္မွတ္သည္ကိုသာ ယူမည္။ (ပံုမွန္ 0.0.0.0)ဤညႊန္ၾကားခ်က္ကိုမ်ားစြာေသာ IP:port
+မ်ားအတြက္ ႀကိမ္ဖန္မ်ားစြာ အသံုးျပဳႏိုင္သည္။
+
+**PortForwarding** **0**|**1**::
+ Attempt to automatically forward the DirPort and ORPort on a NAT router
+ connecting this Tor server to the Internet. If set, Tor will try both
+ NAT-PMP (common on Apple routers) and UPnP (common on routers from other
+ manufacturers). (Default: 0)
+
+**PortForwardingHelper** __filename__|__pathname__::
+ If PortForwarding is set, use this executable to configure the forwarding.
+ If set to a filename, the system path will be searched for the executable.
+ If set to a path, only the specified path will be executed.
+ (Default: tor-fw-helper)
+
+**PublishServerDescriptor** **0**|**1**|**v1**|**v2**|**v3**|**bridge**,**...**::
+ This option specifies which descriptors Tor will publish when acting as
+ a relay. You can
+ choose multiple arguments, separated by commas.
+ +
+ If this option is set to 0, Tor will not publish its
+ descriptors to any directories. (This is useful if you're testing
+ out your server, or if you're using a Tor controller that handles directory
+ publishing for you.) Otherwise, Tor will publish its descriptors of all
+ type(s) specified. The default is "1",
+ which means "if running as a server, publish the
+ appropriate descriptors to the authorities".
+
+**ShutdownWaitLength** __NUM__::
+ဆာဗာလည္းျဖစ္ SIGINT တစ္ခုကိုလည္း ရရွိပါက shutdown ပိတ္ပစ္လိုက္မည္။ listener
+မ်ားကုိလည္း ပိတ္လိုက္ၿပီးဆားကစ္အသစ္ျပဳျခင္းကိုလည္း ျငင္းဆန္မည္။
+သတ္မွတ္လိုက္ေသာ စကၠန္႔ၾကာျပီးသည့္ေနာက္တြင္ ထြက္လိုက္မည္။ေနာက္ထပ္ SIGINT
+တစ္ခုထပ္ရပါက ခ်က္ျခင္းပိတ္မည္။(ပံုမွန္-30 )
+
+**HeartbeatPeriod** __N__ **minutes**|**hours**|**days**|**weeks**::
+ Log a heartbeat message every **HeartbeatPeriod** seconds. This is
+ a log level __info__ message, designed to let you know your Tor
+ server is still alive and doing useful things. Settings this
+ to 0 will disable the heartbeat. (Default: 6 hours)
+
+**AccountingMax** __N__ **bytes**|**KB**|**MB**|**GB**|**TB**::
+ Never send more than the specified number of bytes in a given accounting
+ period, or receive more than that number in the period. For example, with
+ AccountingMax set to 1 GB, a server could send 900 MB and receive 800 MB
+ and continue running. It will only hibernate once one of the two reaches 1
+ GB. When the number of bytes gets low, Tor will stop accepting new
+ connections and circuits. When the number of bytes
+ is exhausted, Tor will hibernate until some
+ time in the next accounting period. To prevent all servers from waking at
+ the same time, Tor will also wait until a random point in each period
+ before waking up. If you have bandwidth cost issues, enabling hibernation
+ is preferable to setting a low bandwidth, since it provides users with a
+ collection of fast servers that are up some of the time, which is more
+ useful than a set of slow servers that are always "available".
+
+**AccountingStart** **day**|**week**|**month** [__day__] __HH:MM__::
+စာရင္းဇယားမ်ားလုပ္ေဆာင္ေနမည့္ ၾကာခ်ိန္ကုိေဖာ္ျပသည္။ **month** ကိုေပးထားပါက
+ထည့္သြင္းထားေသာအခ်ိန္နာရီ ေန႔ရက္တြင္စ၍ ၿပီးဆံုးမည့္လ၏ အလားတူ
+နာရီေန႔ရက္တြင္ျပီးဆံုးမည္။ (ေန႔ရက္မ်ားသည္ 1 မွ 28 အတြင္းသာျဖစ္ရမည္)**week**
+ဆိုလွ်င္လည္း အလားတူျဖစ္သည္။ ေန႔ရက္မ်ားအတြက္မူ တနလၤာသည္ 1 ျဖစ္၍ တနဂၤေႏြသည္ 7
+ျဖစ္သည္။**day** ဆိုလွ်င္လည္း ေနာက္တစ္ေန႔၏ ယင္းတြင္ေဖာ္ျပထားေသာ နာရီတြင္
+ျပီးဆံုးမည္။ နာရီမ်ားသည္ ၂၄ နာရီပံုစံျဖစ္သည္။
+
+**RefuseUnknownExits** **0**|**1**|**auto**::
+ Prevent nodes that don't appear in the consensus from exiting using this
+ relay. If the option is 1, we always block exit attempts from such
+ nodes; if it's 0, we never do, and if the option is "auto", then we do
+ whatever the authorities suggest in the consensus. (Defaults to auto.)
+
+**ServerDNSResolvConfFile** __filename__::
+ေပးလိုက္ေသာ ဖုိင္မွ configuration မ်ားျဖင့္ ျဖင့္ ပံုမွန္ DNS config မ်ားကုိ
+အစားထုိးလုိက္သည္။ ဖိုင္ပံုစံသည္စံ Unix "**resolv.conf**" ႏွင့္အတူတူျဖစ္သည္။
+အျခား ServerDNS option မ်ားကဲ့သုိ႔ name lookup မ်ားကိုClient အစား ဆာဗာမ်ားက
+လုပ္ျခင္းျဖစ္သည္။(ပံုမွန္အားျဖင့္ စနစ္၏ DNS configuration
+မ်ားအတုိင္းအလုပ္လုပ္သည္)
+
+**ServerDNSAllowBrokenConfig** **0**|**1**::
+တန္ဖုိးသည္ 0 ျဖစ္ေနပါက စနစ္၏ DNS configuration မ်ားတြင္
+ျပႆနာရွိလွ်င္လည္းေကာင္း nameserver မ်ားကို
+ဆက္သြယ္ရာတြင္ျပႆနာရွိလွ်င္လညး္ေကာင္း Tor ကုိခ်က္ျခင္းပိတ္သြားေစသည္။ မဟုတ္ပါက
+Tor သည္ အဆုိပါ လုပ္ငန္းမ်ားကုိမေအာင္ျမင္မခ်င္းေဆာင္ရြက္သည္။(ပံုမွန္ 1)
+
+**ServerDNSSearchDomains** **0**|**1**::
+တန္ဖုိး 1 ဟုသတ္မွတ္ပါက address မ်ားကုိ local search domain
+မ်ားတြင္ရွာေဖြမည္။ဥပမာ အကယ္၍ ယခုsystem သည္ "example.com" တြင္ပါဝင္သည္ဟု
+သတ္မွတ္ထားပါက client သည္ www သို႔ဆက္သြယ္၍ "www.example.com"
+သို႔ေရာက္သြားမည္။ ယခုညႊန္ၾကားခ်က္သည္ ame lookup မ်ားကိုClient အစား ဆာဗာမ်ားက
+လုပ္ျခင္းကိုသာသက္ေရာက္သည္။(ပံုမွန္ 0)
+
+**ServerDNSDetectHijacking** **0**|**1**::
+ယခုညႊန္ၾကားခ်က္ကို 1 ဟုေပးပါက ကၽြႏု္ပ္တို႔၏ local nameserver မ်ားသည္ hijack
+failing DNS request ကုိ configure လုပ္ထားမထားခဏခဏစစ္ေဆးေနမည္။ လုပ္ထားပါက
+၎ကုိျပင္ဆင္ရန္ၾကိဳးစားပါမည္။ ယခုညႊန္ၾကားခ်က္သည္ ame lookup မ်ားကိုClient
+အစား ဆာဗာမ်ားက လုပ္ျခင္းကုိသာ သက္ေရာက္သည္။
+
+**ServerDNSTestAddresses** __address__,__address__,__...__::
+DNS hijacking တစ္ခုကိုေတြ႕ရွိပါက ယခု _valid_ လိပ္စာမ်ားကို redirect
+လုပ္မေနေၾကာင္းေသခ်ာပါေစ။လုပ္ေနပါက ကၽြႏ္ုပ္တို႔၏ DNS သည္
+လံုးဝအသံုးမက်ျဖစ္သြားျပီး exit policy ကုိ "rejec*:*"
+ဟုသတ္မွတ္လုိက္မည္။ယခုညႊန္ၾကားခ်က္သည္ name lookup မ်ားကိုClient အစား
+ဆာဗာမ်ားက လုပ္ျခင္းကုိသာ သက္ေရာက္သည္။(ပံုမွန္အားျဖင့္ www.googlecom,
+www.mit.edu, www.yahoo.com, wwwl.slashdot.org)
+
+**ServerDNSAllowNonRFC953Hostnames** **0**|**1**::
+ဤညႊန္ၾကားခ်က္ကုိ ပိတ္ထားပါက Tor သည္ အသံုးမျပဳရေသာ character (@ ႏွင့္ :
+မ်ားကဲ့သို႔) မ်ားႏွင္ေပးထားေသာhostname မ်ားအား ၎တို႔ကို exit node သို႔
+ေျဖရွင္းရန္ပို႔မည့္အစား ပိတ္ပစ္လိမ့္မည္။ URL မ်ားကုိ မေတာ္တဆ
+resolveလုပ္ျခင္းမွ ကာကြယ္ႏိုင္သည္။ယခုညႊန္ၾကားခ်က္သည္ name lookup
+မ်ားကိုClient အစား ဆာဗာမ်ားက လုပ္ျခင္းကုိသာ သက္ေရာက္သည္။
+
+**BridgeRecordUsageByCountry** **0**|**1**::
+ဤညႊန္ၾကားခ်က္ကို လည္းဖြင့္ BridgeRelay ကိုလည္းဖြင့္ထားလွ်င္ GeoIP data
+မ်ားကိုရရွိမည္။Tor သည္၎တို႔မွတဆင့္ userမ်ားအသံုးျပဳေသာ တိုင္းျပည္ကိုသိႏိုင္၍
+မည္သည့္တုိင္းျပည္သည္ အသံုးျပဳခြင့္ ပိတ္ထားသည္ကုိ bridge authorityမ်ားမွ
+ခန္႔မွန္းႏိုင္သည္။(ပံုမွန္ - 1)
+
+**ServerDNSRandomizeCase** **0**|**1**::
+သတ္မွတ္ထားပါက အထြက္ DNS request မ်ားအတြက္ character မ်ား၏
+အၾကီးအေသးစာလံုးမ်ားကုိ က်ပန္းလုပ္ပစ္လုိက္မည္။ သို႔ေသာ္ reply မ်ားႏွင့္ေတာ့
+ကိုက္ညီေအာင္လုပ္လိမ့္မည္။ ၎ကို "0x20 hack" ဟုေခၚ၍ အခိ်ဳ႕ေသာ DNS poison
+တိုက္ခိုက္မႈမ်ားကို ခံႏိုင္ေရရွိေစသည္။ ပုိမိုသိလိုပါက "Increased DNS Forgery
+Resistance through
+ 0x20-Bit Encoding" ကုိၾကည့္ႏိုင္သည္။ ယခုညႊန္ၾကားခ်က္သည္ name lookup
+မ်ားကိုClient အစား ဆာဗာမ်ားက လုပ္ျခင္းကုိသာ သက္ေရာက္သည္။(ပံုမွန္ - 1)
+
+**GeoIPFile** __filename__::
+GeoIP data မ်ားပါဝင္ေသာ ဖိုင္အမည္ကိုသတ္မွတ္ႏိုင္သည္။
+BridgeRecordUsageByCountry ႏွင့္သံုးရန္ျဖစ္သည္။
+
+**CellStatistics** **0**|**1**::
+ When this option is enabled, Tor writes statistics on the mean time that
+ cells spend in circuit queues to disk every 24 hours. (Default: 0)
+
+**DirReqStatistics** **0**|**1**::
+ When this option is enabled, Tor writes statistics on the number and
+ response time of network status requests to disk every 24 hours.
+ (Default: 0)
+
+**EntryStatistics** **0**|**1**::
+ When this option is enabled, Tor writes statistics on the number of
+ directly connecting clients to disk every 24 hours. (Default: 0)
+
+**ExitPortStatistics** **0**|**1**::
+ When this option is enabled, Tor writes statistics on the number of relayed
+ bytes and opened stream per exit port to disk every 24 hours. (Default: 0)
+
+**ConnDirectionStatistics** **0**|**1**::
+ When this option is enabled, Tor writes statistics on the bidirectional use
+ of connections to disk every 24 hours. (Default: 0)
+
+**ExtraInfoStatistics** **0**|**1**::
+သတ္မွတ္က မွတ္သားထားသမွ် စာရင္းမ်ားႏွင့္ directory authority မ်ားသုိ႔ပို႔ေသာ
+အပုိအခ်က္အလက္ document မ်ားကိုပါ မွတ္သားမည္။(ပံုမွန္ 0)
+
+DIRECTORY SERVER OPTIONS
+------------------------
+
+ေအာက္ပါအခ်က္မ်ားသည္ directory server မ်ားအတြက္သာ အသံုးဝင္သည္။ (ORPort
+သုညမဟုတ္)
+
+**AuthoritativeDirectory** **0**|**1**::
+တန္ဖုိး 1 ဟုသတ္မွတ္ပါက Tor သည္ authoritative directory server
+အျဖစ္လုပ္ေဆာင္ပါမည္။ directory မ်ားကုိအျခားမွဆြဲယူသိမ္းဆည္းမည့္အစား
+ကုိယ္ပိုင္ ဆာဗာမ်ားစာရင္းကိုတည္ေဆာက္ကာ အမွတ္အသားျပဳ၍ Client
+မ်ားသို႔ေပးပုိ႔သည္။ client မ်ားသည့္သင့္ကုိ ယံုၾကည္စိတ္ခ်ရေသာ
+စာရင္းထဲမထည့္သြင္းပါက ဤညႊန္ၾကားခ်က္ကို သတ္မွတ္ရန္မလိုပါ။သင့္ကိုယ္သင္
+directory တစ္ခုျဖစ္သင့္သည္ဟုယူဆပါက tor-ops(a)torproject.org ရွိ အျခား admin
+မ်ားႏွင့္ တုိင္ပင္ပါ။
+
+**DirPortFrontPage** __FILENAME__::
+သတ္မွတ္ပါက ၎သည္ HTML ဖုိင္တစ္ခုကိုယူ၍ DirPort ေပၚ၌ "/"ဟု တင္လိုက္သည္။ ထိုအခါ
+relay operator မ်ားသည္တာဝန္မရွိေၾကာင္းျငင္းဆုိခ်က္မ်ား (Disclaimers)ကို
+သီးျခား web server မလိုပဲ တင္ထားႏိုင္ပါၿပီ။ contrib/tor-exit-notice.html
+နမူနာ disclaimer တစ္ခုရွိသည္။
+
+**V1AuthoritativeDirectory** **0**|**1**::
+ဤတန္ဖိုးကုိ **AuthoritativeDirectory** အျပင္သတ္မွတ္ထားပါက Tor သည္ version 1
+directory status ႏွင့္ လည္ပတ္ေနေသာ router documentမ်ားကုိ ထုတ္ေပးလိမ့္မည္။
+(for legacy
+ Tor clients up to 0.1.0.x)
+
+**V2AuthoritativeDirectory** **0**|**1**::
+ဤတန္ဖိုးကုိ **AuthoritativeDirectory** အျပင္သတ္မွတ္ထားပါက Tor သည္ doc/spec
+/dir-spec-v2.txt တြင္ေဖာ္ျပထားသည့္အတိုင္း version 2 directory status
+ႏွင့္server descriptor မ်ားကို ထုတ္ေပးလိမ့္မည္။ (0.1.1.x ႏွင့္ 0.1.2.x
+)မ်ားတြင္ လည္ပတ္ေနေသာ client ႏွင့္ ဆာဗာမ်ားအတြက္)
+
+**V3AuthoritativeDirectory** **0**|**1**::
+ဤတန္ဖိုးကုိ **AuthoritativeDirectory** အျပင္သတ္မွတ္ထားပါက Tor သည္ doc/spec
+/dir-spec.txt တြင္ေဖာ္ျပထားသည့္အတိုင္း version 3 directory status ထုတ္ေပး၍
+descriptor မ်ားကို ဝန္ေဆာင္မႈေပးလိမ့္မည္။ (ေနာက္ဆံုး 0.2.0.x တြင္
+လည္ပတ္ေနေသာ client ႏွင့္ ဆာဗာမ်ားအတြက္)
+
+**VersioningAuthoritativeDirectory** **0**|**1**::
+ဤတန္ဖုိးကို သတ္မွတ္လိုက္ပါက မည္သည့္ Tor version က directory မ်ား publish
+လုပ္ရန္အႏၲရာယ္ကင္းေနေသးေၾကာင္း အခ်က္အလက္မ်ားကုိ ေပါင္းထည့္ပါလိမ့္မည္။
+version 1 authority တစ္ခုစီသည္အလိုအေလွ်ာက္ versioning authority ျဖစ္ေန၍
+version 2 အတြက္မူ ေရြးခ်ယ္ခြင့္ေပးထားသည္။**RecommendedVersions**,
+ **RecommendedClientVersions**, နွင့္ **RecommendedServerVersions**
+ကုိၾကည့္ပါ။
+
+**NamingAuthoritativeDirectory** **0**|**1**::
+1 ဟုသတ္မွတ္လိုက္ပါက server တြင္အမည္ဝွက္ႏွင့္ fingerprintကုိ တြဲဖက္ထားေၾကာင္း
+ေၾကျငာလိမ့္မည္။ အကယ္၍ မွန္ကန္ေသာ အမည္ဝွက္ႏွင့္ fingerprint အတြဲအဖက္တစ္ခုကို
+dirserver တြင္စာရင္းေပးသြင္းလုိက္ပါက network-status page
+မ်ားတြင္လည္း"Named" ဟုသတ္မွတ္ထားေသာ ဆာဗာစာရင္းေအာက္တြင္လည္း
+ပါဝင္သြားလိမ့္မည္။ Naming dirserver မ်ားသည္ စာရင္းေပးသြင္းထားေသာ
+အတြဲအဖက္မ်ားႏွင့္ ဝိေရာဓိျဖစ္ေနေသာ descriptor မ်ားကုိ လက္ခံလိမ့္မည္
+(သို႔မဟုတ္) ေဖာ္ျပလိမ့္မည္ မဟုတ္ပါ။**FILES** ေအာက္ရွိ **approved-routers**
+တြင္ၾကည့္ပါ။
+
+**HSAuthoritativeDir** **0**|**1**::
+ When this option is set in addition to **AuthoritativeDirectory**, Tor also
+ accepts and serves v0 hidden service descriptors,
+ which are produced and used by Tor 0.2.1.x and older. (Default: 0)
+
+**HidServDirectoryV2** **0**|**1**::
+သတ္မွတ္လိုက္ပါက Tor သည္ v2 hidden service descriptor မ်ားကို
+ဝန္ေဆာင္မႈေပးလိမ့္မည္။ DirPort ကိုမလုိအပ္ပါ။အဘယ္ေၾကာင့္ဆုိေသာ္ client
+မ်ားသည္ ORPortမွ ဆက္သြယ္ေသာေၾကာင့္ျဖစ္သည္။
+
+**BridgeAuthoritativeDir** **0**|**1**::
+**AuthoritativeDirectory** အျပင္သတ္မွတ္လုိက္ပါက Tor သည္ router descriptor
+မ်ားကိုပါ ဝန္ေဆာင္မႈေပးလိမ့္မည္။သို႔ေသာ္ အဓိက network status document
+မ်ားကိုမူကုိယ္တုိင္ မထုတ္ပဲ အျခားမွ ဆြဲယူအသံုးျပဳမည္.(ပံုမွန္ - 0)
+
+**MinUptimeHidServDirectoryV2** __N__ **seconds**|**minutes**|**hours**|**days**|**weeks**::
+v2 hidden service directory ၏ အနည္းဆံုး အလုပ္လုပ္ခ်ိန္ကို authoritative
+directory မ်ားအလုပ္လုပ္ခ်ိန္ႏွင့္ အတူတူဟု လက္ခံထားသည္။(ပံုမွန္ - 24 hours)
+
+**DirPort** __PORT__::
+Directory service ကုိ ဤportမွတဆင့္ေၾကျငာသည္။
+
+**DirListenAddress** __IP__[:__PORT__]::
+Directory serviceကို IP ႏွင့္တြဲလိုက္သည္။ port
+ကုိသတ္မွတ္ပါကDirPortရွိportကုိမသံုးပဲ ဤတြဲထားေသာ port ကုိသံုးသည္။(ပံုမွန္ -
+0.0.0.0) တစ္ခုထက္ပိုေသာ IP:port မ်ားအတြက္ အၾကိမ္ေရမ်ားစြာ အသံုးျပဳနိင္သည္။
+
+**DirPolicy** __policy__,__policy__,__...__::
+ဆာဗာ၏ မည္သူသာလွ်င္ directory portမ်ားသုိ႔ဆက္သြယ္ႏိုင္ေၾကာင္း ဝင္ေပါက္
+ေပၚလစီကို သတ္မွတ္သည္။အထက္တြင္ေဖာ္ျပခဲ့သည့္ exit policy
+သတ္မွတ္ပံုႏွင့္တူညီသည္။
+
+DIRECTORY AUTHORITY SERVER OPTIONS
+----------------------------------
+
+**RecommendedVersions** __STRING__::
+STRING သည္ ေကာ္မာခံထားေသာ လက္ရွိစိတ္ခ်ရသည္ဟုယူဆထားေသာ Tor version
+မ်ားစာရင္းျဖစ္သည္။ဤစာရင္းသည္ directory တိုင္းတြင္ပါဝင္ၿပီး သူတို႔၏ directory
+ကုိ upgrade လုပ္ရန္လိုမလုိကို nodeမ်ားမွေန၍
+ဆြဲခ်ၾကည့္ရႈသည္။အၾကိမ္ေျမာက္ျမားစြာ အသံုးျပဳႏိုင္သည္။ ၎ကို သတ္မွတ္ထားပါက
+**VersioningAuthoritativeDirectory** ကိုပါ သတ္မွတ္ရန္လိုသည္။
+
+*RecommendedClientVersions** __STRING__::
+STRING သည္ ေကာ္မာခံထားေသာ client မ်ားအသံုးျပဳရန္လက္ရွိစိတ္ခ်ရသည္ဟုယူဆထားေသာ
+Tor version မ်ားစာရင္းျဖစ္သည္။version 2 directory မ်ားတြင္ပါဝင္သည္။
+သတ္မွတ္မထားပါက **RecommendedVersions** ကုိအသံုးျပဳေန၍ျဖစ္သည္။သတ္မွတ္ထားပါက
+**VersioningAuthoritativeDirectory** ကုိပါ အသံုးျပဳရမည္။
+
+**RecommendedServerVersions** __STRING__::
+STRING သည္ ေကာ္မာခံထားေသာ ဆာဗာမ်ားအသံုးျပဳရန္လက္ရွိစိတ္ခ်ရသည္ဟုယူဆထားေသာ Tor
+version မ်ားစာရင္းျဖစ္သည္။version 2 directory မ်ားတြင္ပါဝင္သည္။
+သတ္မွတ္မထားပါက **RecommendedVersions** ကုိအသံုးျပဳေန၍ျဖစ္သည္။သတ္မွတ္ထားပါက
+**VersioningAuthoritativeDirectory** ကုိပါ အသံုးျပဳရမည္။
+
+**ConsensusParams** __STRING__::
+ွSTRING သည္ space ျဖင့္ခြဲထားေသာ key=value စာရင္းမ်ားျဖစ္ျပီး Tor သည္
+"params" line ၏ သူ၏networkstatus မဲမ်ားတြင္ အသံုးျပဳသည္။
+
+DirAllowPrivateAddresses** **0**|**1**::
+တန္ဖုိး 1 သို႔သတ္မွတ္ထားပါက Tor သည္ router descriptor မ်ားႏွင့္ အျခား
+"Address" အစိတ္အပုိင္းမ်ားကုိ လက္ခံမည္။ မဟုတ္ပါကaddress သည္ IP
+addressမဟုတ္လွ်င္ router descriptor ကို ပယ္ဖ်က္မည္။ပံုမွန္ 0
+
+**AuthDirBadDir** __AddressPattern...__::
+Authoritative directory မ်ားသက္သက္ျဖစ္သည္။ နက္ေဝါ့ထဲရွိ မေကာင္းေသာ directory
+မ်ားဟု သတ္မွတ္ထားေသာ authority မ်ားစာရင္းျဖစ္သည္။(**AuthDirListBadDirs**
+ဟုသတ္မွတ္လွ်င္ networkstatus document ထဲတြင္ ေဖာ္ျပမည္)
+
+**AuthDirBadExit** __AddressPattern...__::
+authoritative directory မ်ားသက္သက္ျဖစ္သည္။ နက္ေဝါ့ထဲရွိ မေကာင္းေသာ exit
+မ်ားဟု သတ္မွတ္ထားေသာ authority မ်ားစာရင္းျဖစ္သည္။(**AuthDirListBadExits**
+ဟုသတ္မွတ္လွ်င္ networkstatus document ထဲတြင္ ေဖာ္ျပမည္)
+
+AuthDirInvalid** __AddressPattern...__::
+authoritative directory မ်ားသက္သက္ျဖစ္သည္။ ဆာဗာမ်ားအတြက္ “သံုး၍မရ”
+ဟုသတ္မွတ္ထားသည့္ address patten မ်ားျဖစ္သည္။
+
+**AuthDirReject** __AddressPattern__...::
+authoritative directory မ်ားသက္သက္ျဖစ္သည္။ ယခု ဆာဗာမွ ထုတ္ျပန္ေနေသာ မည္သည့္
+network status document တြင္မွ ေဖာ္ျပမည္မဟုတ္ေသာ သုိ႔မဟုတ္ OR address အျဖစ္
+မည္သည့္ descriptor မွလက္ခံမည္မဟုတ္ေသာ addresspattern မ်ားျဖစ္သည္။
+
+**AuthDirListBadDirs** **0**|**1**::
+authoritative directory မ်ားသက္သက္ျဖစ္သည္။ 1 ဟုသတ္မွတ္ပါက ယခု directory တြင္
+မည္သည့္ node သည္ directory cacheမ်ားအတြက္မသင့္ေလ်ာ္ဟု ေရြးခ်ယ္ရန္ပါလာသည္။
+(အသံုးမျပဳေသာ directory မ်ားကုိ badဟု ေၾကျငာရန္မရွိပါက အသံုးမျပဳပါႏွင့္။
+
+**AuthDirListBadExits** **0**|**1**::
+authoritative directory မ်ားသက္သက္ျဖစ္သည္။ 1 ဟုသတ္မွတ္ပါက ယခု directory
+တြင္ မည္သည့္ node သည္ exit nodeမ်ားအတြက္မသင့္ေလ်ာ္ဟု ေရြးခ်ယ္ရန္ပါလာသည္။
+(အသံုးမျပဳေသာ exit node မ်ားကုိ badဟု ေၾကျငာရန္မရွိပါက အသံုးမျပဳပါႏွင့္။
+
+**AuthDirRejectUnlisted** **0**|**1**::
+authoritative directory မ်ားသက္သက္ျဖစ္သည္။ 1 ဟုသတ္မွတ္ပါက directory server
+သည္တင္ထားေသာ fingerprint ဖိုင္ထဲတြင္ အေသးစိတ္ေဖာ္ျပမထားသည့္ server
+descriptor မ်ားကုိ ပယ္ဖ်က္လိမ့္မည္။ ၎ကုိ Sybil တုိက္ခိုက္မႈခံရပါက “ကယ္ၾကပါ
+ခလုတ္” အျဖစ္ မွတ္ယူႏိုင္သည္။(ပံုမွန္ 0)
+
+**AuthDirMaxServersPerAddr** __NUM__::
+authoritative directory မ်ားသက္သက္ျဖစ္သည္။ IP တစ္ခုတည္းအျဖစ္ လက္ခံႏိုင္ေသာ
+အနည္းဆံုးဆာဗာမ်ားအေရအတြက္ျဖစ္သည္။ "no limit" အတြက္ "0" ဟုေပးပါ။(ပံုမွန္ 2)
+
+**AuthDirMaxServersPerAuthAddr** __NUM__::
+authoritative directory မ်ားသက္သက္ျဖစ္သည္။
+AuthDirMaxServersPerAddrႏွင့္တူသည္။ သို႔ေသာ္ directory authority မ်ားႏွင့္
+ခြဲေဝထားေသာaddress မ်ားတြင္ သတ္မွတ္သည္။(ပံုမွန္ 5)
+
+**V3AuthVotingInterval** __N__ **minutes**|**hours**::
+V3 authoritative directory မ်ားအတြက္သာ။ server၏ voting interval
+ကုိေရြးခ်ယ္သည္။ Votingသည္ authority အားလံုး
+သတ္မွတ္ထားေသာအခ်ိန္အပုိင္းအျခားတြင္သာ တကယ္တမ္း စတင္သည္။ ေန႔တစ္ေန႔အတြင္း
+အညီအမွ်ခြဲႏိုင္ေသာ အခ်ိန္ျဖစ္ရမည္။(ဥပမာ 1hour)
+
+**V3AuthVoteDelay** __N__ **minutes**|**hours**::
+V3 authoritative directory မ်ားအတြက္သာ။ အျခား authority မ်ားမွ vote
+အားလံုးရရွိၿပီးဟုယူဆသည့္အခ်ိန္ႏွင့္ Vote
+ထုတ္ျပန္သည့္အခ်ိန္ၾကားျခားနားခ်ိန္ျဖစ္သည္။ ဆာဗာ၏အခ်ိန္ကုိမေရြးပဲ
+အားလံုးသေဘာတူသည့္ တကယ့္အခ်ိန္ကုိေရြးသည္။(ပံုမွန္ 5 minutes)
+
+**V3AuthDistDelay** __N__ **minutes**|**hours**::
+V3 authoritative directory မ်ားအတြက္သာ။အျခား authority မ်ားမွ signature
+မ်ားအားလံုးရရွိၿပီးဟုယူဆသည့္အခ်ိန္ႏွင့္
+ထုတ္ျပန္သည့္အခ်ိန္ၾကားျခားနားခ်ိန္ျဖစ္သည္။ဆာဗာ၏အခ်ိန္ကုိမေရြးပဲ
+အားလံုးသေဘာတူသည့္ တကယ့္အခ်ိန္ကုိေရြးသည္။(ပံုမွန္ 5 minutes)
+
+**V3AuthNIntervalsValid** __NUM__::
+V3 authoritative directory မ်ားအတြက္သာ။ vote လုပ္မည့္ အားလံုးသေဘာတူသည့္
+အခ်ိန္အပုိင္းအျခားတစ္ခုျဖစ္သည္။ နံပါတ္ျမင့္လွ်င္ network
+ပိုင္ျခားမႈအႏၲရာယ္ရွိသည္။ နည္းလွ်င္ directory trafficမ်ားမည္။
+ဆာဗာ၏အခ်ိန္ကုိမေရြးပဲ အားလံုးသေဘာတူသည့္ တကယ့္အခ်ိန္ကုိေရြးသည္။ အနည္းဆံုး 2
+ျဖစ္ရမည္။(ပံုမွန္ 3)
+
+**V3BandwidthsFile** __FILENAME__::
+ V3 authoritative directories only. Configures the location of the
+ bandiwdth-authority generated file storing information on relays' measured
+ bandwidth capacities. (Default: unset.)
+
+HIDDEN SERVICE OPTIONS
+----------------------
+
+ေအာက္ပါတုိ႔ကုိ hidden service မ်ားအတြက္သံုးပါသည္။
+
+**HiddenServiceDir** __DIRECTORY__::
+hidden service အတြက္ dataမ်ားကုိ ယခုသတ္မွတ္သည့္ ေနရာတြင္ သိမ္းသည္။ Hidden
+service တိုင္းအတြက္ သီးျခား directory ရွိသည္။ၾကိမ္ဖန္မ်ားစြာ
+အသံုးျပဳႏိုင္သည္။
+
+**HiddenServicePort** __VIRTPORT__ [__TARGET__]::
+hidden service မ်ားအတြက္ ဤေနရာတြင္ သတ္မွတ္သည့္ အတုအေယာင္portမ်ားဖန္တီးသည္။
+virtual port မ်ားစြာအတြက္ၾကိမ္ဖန္မ်ားစြာ အသံုးျပဳနီုင္သည္။ပံုမွန္အားျဖင့္
+virtual port ကို 127.0.0.1ရွိတူညီေသာ portနွင့္တြဲဆက္လုိက္ပါသည္။Target port,
+address မ်ားကို ျပင္ဆင္ႏိုင္သည္။ user ကဆက္သြယ္ပါက target တစ္ခုကို
+က်ပန္းေရြးခ်ယ္ေပးသည္။
+
+**PublishHidServDescriptors** **0**|**1**::
+0 သတ္မွတ္ပါက ျပဳလုပ္ထားသမွ် hidden service မ်ားကုိ လည္ပတ္ေစမည္။ သို႔ေသာ္
+rendezvous directory မ်ားထံသို႔မူမေၾကျငာေစပါ။ ဤညႊန္ၾကားခ်က္သည္ hidden
+service မ်ားကုိ ထုတ္ျပန္ေပးေနေသာ tor controller ရွိမွ အသံုးဝင္သည္။(ပံုမွန္
+1)
+
+**HiddenServiceVersion** __version__,__version__,__...__::
+့hidden service သို႔ publish လုပ္မည့္ rendezvous service descriptor version
+မ်ားစာရင္းျဖစ္သည္။ယခုမူ version 2 သာ ေထာက္ပံ့သည္။(ပံုမွန္ 2)
+
+**HiddenServiceAuthorizeClient** __auth-type__ __client-name__,__client-name__,__...__::
+သတ္မွတ္ထားပါက hidden service ကို ခြင့္ျပဳခ်က္ရရွိသည့္ client ကသာ
+အသံုးျပဳနိုင္သည္။auth-type အတြက္basic ဆိုလွ်င္ ဘက္စံုသံုးအတြက္ protocol
+stealth ဆိုလွ်င္ ခ်ိန္ညွိႏိုင္သည့္ service လႈပ္ရွားမႈမ်ားကိုပါ
+ဖုံးကြယ္ႏိုင္သည့္ protocolမ်ားျဖစ္သည္။
+
+**RendPostPeriod** __N__ **seconds**|**minutes**|**hours**|**days**|**weeks**::
+ Every time the specified period elapses, Tor uploads any rendezvous
+ service descriptors to the directory servers. This information is also
+ uploaded whenever it changes. (Default: 1 hour)
+
+TESTING NETWORK OPTIONS
+-----------------------
+
+ေအာက္ပါတို႔သည္ networkကို testing လုပ္ရာတြင္ သံုးသည္။
+
+**TestingTorNetwork** **0**|**1**::
+1သို႔သတ္မွတ္ထားပါက testingျပဳရာတြင္ လြယ္ကူေစသည္။ Tor runထားပါက
+ျပန္လည္ျပင္ဆင္၍မရ။(ပံုမွန္ 0)
+
+ ServerDNSAllowBrokenConfig 1
+ DirAllowPrivateAddresses 1
+ EnforceDistinctSubnets 0
+ AssumeReachable 1
+ AuthDirMaxServersPerAddr 0
+ AuthDirMaxServersPerAuthAddr 0
+ ClientDNSRejectInternalAddresses 0
+ ClientRejectInternalAddresses 0
+ ExitPolicyRejectPrivate 0
+ V3AuthVotingInterval 5 minutes
+ V3AuthVoteDelay 20 seconds
+ V3AuthDistDelay 20 seconds
+ MinUptimeHidServDirectoryV2 0 seconds
+ TestingV3AuthInitialVotingInterval 5 minutes
+ TestingV3AuthInitialVoteDelay 20 seconds
+ TestingV3AuthInitialDistDelay 20 seconds
+ TestingAuthDirTimeToLearnReachability 0 minutes
+ TestingEstimatedDescriptorPropagationTime 0 minutes
+
+**TestingV3AuthInitialVotingInterval** __N__ **minutes**|**hours**::
+V3AuthInitialVotingInterval အတုိင္းျဖစ္သည္။ အမ်ားသေဘာတူအခ်ိန္မသတ္မွတ္မီ
+အစပထမ voting interval အတြက္ျဖစ္သည္။**TestingTorNetwork** လိုအပ္သည္။(ပံုမွန္
+30 minutes)
+
+**TestingV3AuthInitialVoteDelay** __N__ **minutes**|**hours**::
+TestingV3AuthInitialVotingInterval အတုိင္းျဖစ္သည္။
+အမ်ားသေဘာတူအခ်ိန္မသတ္မွတ္မီ အစပထမ voting interval
+အတြက္ျဖစ္သည္။**TestingTorNetwork** လိုအပ္သည္။(ပံုမွန္ 5 minutes)
+
+**TestingV3AuthInitialDistDelay** __N__ **minutes**|**hours**::
+TestingV3AuthInitialVotingInterval အတုိင္းျဖစ္သည္။
+အမ်ားသေဘာတူအခ်ိန္မသတ္မွတ္မီ အစပထမ voting interval
+အတြက္ျဖစ္သည္။**TestingTorNetwork** လိုအပ္သည္။(ပံုမွန္ 5 minutes)
+
+**TestingAuthDirTimeToLearnReachability** __N__ **minutes**|**hours**::
+Authority တစ္ခုကို စတင္ၿပီးပါက routerမ်ားသည္ အလုပ္လုပ္ေနသည္ဟု
+ဤအခ်ိန္အပုိင္းအျခားမေက်ာ္လြန္မျခင္း မယူဆပါ။ **TestingTorNetwork**
+လုိအပ္သည္။(ပံုမွန္ 30 minutes)
+
+**TestingEstimatedDescriptorPropagationTime** __N__ **minutes**|**hours**::
+ဤအခ်ိန္အပုိင္းအျခားၿပီးပါက client မ်ားသည္ directory မွ router descriptor
+မ်ားကို download လုပ္ၾကလိမ့္မည္။**TestingTorNetwork** လုိအပ္သည္။(ပံုမွန္ 10
+minutes)
+
+SIGNALS
+-------
+
+ေအာက္ပါsignal မ်ားဖမ္းမိသည္။
+
+**SIGTERM**::
+Disk လိုအပ္ပါကကုိရွင္းလင္းခ်ိန္ညွိမည္။
+
+**SIGINT**::
+Tor client မ်ားသည္ SIGTERM ကဲ့သို႔ျပဳမူသည္။ Tor serverမ်ားမွာမူ
+ထိန္းခ်ဳပ္ထားေသာ ေႏွးေကြးစြာ shutdown ခ်ျခင္းကုိျပဳသည္။listener
+မ်ားကိုပိတ္ျပီး မထြက္မီ စကၠန္႔သံုးဆယ္ေစာင့္သည္။
+
+**SIGHUP**::
+ The signal instructs Tor to reload its configuration (including closing and
+ reopening logs), and kill and restart its helper processes if applicable.
+
+**SIGUSR1**::
+လက္ရွိနွင့္ အတိတ္ ၏ ေကာ္နတ္ရွင္ မွတ္တမ္းမ်ား အလုပ္ၿပီးေျမာက္မႈမ်ားျဖစ္သည္။
+
+**SIGUSR2**::
+log အားလံုးကုိ loglevel debug အျဖစ္ေျပာင္းသည္။ SIGHUP ပုိ႔ျခင္းျဖင့္ မူလ
+loglevel သို႔ျပန္သြားႏိုင္သည္။
+
+**SIGCHLD**::
+Helper process တစ္ခု ထြက္သြားျပီ။
+
+**SIGPIPE**::
+ဘာမွမဟုတ္။
+
+**SIGXFSZ**::
+ဘာမွမဟုတ္။
+
+FILES
+-----
+
+**@CONFDIR@/torrc**::
+ The configuration file, which contains "option value" pairs.
+
+**@LOCALSTATEDIR@/lib/tor/**::
+tor process သည္ key ႏွင့္ အျခားdataမ်ားကို ဤေနရာတြင္သိမ္းသည္။
+
+__DataDirectory__**/cached-status/**::
+ေနာက္ဆံုးရ authority တစ္ခုစီ၏ network status document မ်ားျဖစ္သည္။
+
+DataDirectory__**/cached-descriptors** and **cached-descriptors.new**::
+routerမ်ား၏ အေျခအေနျဖစ္သည္။ အခ်ိဳ႕router မ်ားတစ္ခုထက္ပိုပါေနပါက
+ေနာက္ဆံုးထုတ္ျပန္ထားေသာdescriptor မ်ားသံုး၍ျဖစ္သည္။ @ sign ပါရွိက
+အခ်က္အလက္မ်ားရွိေသးေၾကာင္းျပသသည္။
+
+__DataDirectory__**/cached-routers** and **cached-routers.new**::
+ေဟာင္းႏြမ္းေနေသာ cached-descriptors ႏွင့္ cached-descriptors.newမ်ားျဖစ္သည္။
+Tor သည္ file အသစ္မ်ားကိုရွာမေတြ႔ပါကဒီမွာလာရွာသည္။
+
+__DataDirectory__**/state**::
+persistent key-value mappingမ်ားျဖစ္သည္။
+
+_DataDirectory__**/bw_accounting**::
+bandwidth accounting တန္ဖုိးမ်ားကို ေျခရာေကာက္ရာတြင္သံုးသည္။
+
+__DataDirectory__**/control_auth_cookie**::
+controller ျဖင့္ cookie authentication လုပ္ရာတြင္သံုးသည္။ control-spec.txt
+ ဖိုင္တြင္ အေသးစိတ္ကုိၾကည့္ပါ။
+
+__DataDirectory__**/keys/***::
+ဆာဗာမ်ားသာ အသံုးျပဳေသာ ID key ႏွင့္ onion keyမ်ားျဖစ္သည္။
+
+__DataDirectory__**/fingerprint**::
+ဆာဗာမ်ားသာ အသံုးျပဳေသာ fingerprint ႏွင့္ ဆာဗာ၏ ID key မ်ာျဖစ္သည္။
+
+__DataDirectory__**/approved-routers**::
+name authoritative server မ်ားအတြက္ျဖစ္သည္။
+
+__DataDirectory__**/router-stability**::
+authoritative ဆာဗာမ်ားသာသံုးသည္။ router ၏အေျခအေနကုိ ေျခရာလက္ရာမ်ားျဖစ္သည္။
+
+__HiddenServiceDirectory__**/hostname**::
+ hidden service အတြက္<base32-encoded-fingerprint>.onion domain name
+ျဖစ္သည္။authorization မ်ားသံုးပါက authorization data မ်ားပါမည္။
+
+__HiddenServiceDirectory__**/private_key**::
+hidden service အတြက္ private key မ်ားျဖစ္သည္။
+
+__HiddenServiceDirectory__**/client_keys**::
+ခြင့္ျပဳခ်က္ရ client မ်ားသာဖြင့္ႏိုင္သည့္ hidden service မ်ား၏ authorization
+data မ်ားျဖစ္သည္။
+
+SEE ALSO
+--------
+**privoxy**(1), **tsocks**(1), **torify**(1) +
+
+**https://www.torproject.org/**
+
+
+BUGS
+----
+
+တည္ေဆာက္ဆဲအဆင့္ျဖစ္သျဖင့္ အမွားအယြင္းမ်ားစြာရွိႏိုင္သည္။ Bug မ်ားေတြ႔ပါက
+ေက်းဇူးျပဳ၍ သတင္းပို႔ပါ။
+
+ေရးသားသူမ်ား
+Roger Dingledine [arma at mit.edu] Nick Mathewson [nickm at alum.mit.edu]
+
Added: website/trunk/manpages/my/torify.1.txt
===================================================================
--- website/trunk/manpages/my/torify.1.txt (rev 0)
+++ website/trunk/manpages/my/torify.1.txt 2011-03-03 13:39:36 UTC (rev 24296)
@@ -0,0 +1,50 @@
+// Copyright (c) The Tor Project, Inc.
+// လိုင္စင္အခ်က္အလက္မ်ားအတြက္ လိုင္စင္ဖိုင္ကိုၾကည့္ရန္// This is an asciidoc file used to generate the manpage/html reference.
+// Learn asciidoc on http://www.methods.co.nz/asciidoc/userguide.html
+torify(1)
+=========
+Peter Palfrader Jacob Appelbaum
+
+NAME
+----
+torify - wrapper for torsocks or tsocks and tor
+
+SYNOPSIS
+--------
+**torify** __application__ [__application's__ __arguments__]
+
+ေဖာ္ပခ်က္
+-----------
+**torify** ဆိုသည္မွာ system တြင္ရရွိင္ေသာ အေကာင္းဆံု tor underlying
+ကိုရႏိင္ရန္ ႀကိဳပမ္းပးေသာ ရိုရိုစနစ္တစ္ခုျဖစ္သည္။ သူ႔ကိုtorsocks
+သို႔မဟုတ္ tsocks ဟု tor ၏ သီးခား configuration file က သတ္မွတ္ေခၚဆိုသည္။
+
+torsocks သည္ UDP ကို အေသးစိတ္ဖယ္ရွားေပးၿပီး သင္၏ TCP connections
+ကိုကြယ္ေဖ်ာက္ေပးျခင္းႏွင့္ DNS lookups မ်ားကိုလည္း စိတ္ခ်လံုၿခံဳစြာ
+ေျဖရွင္းေပးသည့္ အဆင့္ျမွင့္ထားေသာ စနစ္တစ္ခုျဖစ္သည္။
+
+tsocks ကေတာ့ သင္ ကြယ္ေဖ်ာက္အသံုးျပဳလိုေသာ application ႏွင့္ tsocks library
+ၾကားတြင္ ဆက္သြယ္ေပးသည့္ စနစ္ျဖစ္သည္။
+
+နည္းစနစ္ႏွစ္ခုလံုးတြင္ LD_PRELOAD ကိုအသံုးျပဳထားသျဖင့္ torify သည္ suid
+binaries မ်ားတြင္ အလုပ္မလုပ္ေပ။
+
+သတိေပးခ်က္
+-------
+သတိျပဳရမည္မွာ ယခု tsocks မ်ားအလုပ္လုပ္ပံုသည္ TCP connections မ်ားကိုသာ
+socksify လုပ္ေပးျခင္းျဖစ္သည္။သင္၏ပံုမွန္ name server မ်ားထဲတြင္
+ပံုမွန္လုပ္ေဆာင္ခ်က္မ်ားအတိုင္း route လုပ္ေနဆဲျဖစ္ေသာ hostname
+ရွာျခင္းမပါသည့္ အေျခအေနမ်ားတြင္သာ ျဖစ္သည္ကို သတိျပဳပါ။ **tor-resolve**(1)
+သည္ အခ်ိဳ႕ကိစၥမ်ားအတြက္ ေျဖရွင္းေပးႏိုင္သည္။အေသးစိတ္သိလိုပါက
+https://wiki.torproject.org/noreply/TheOnionRouter/TorFAQ ရွိ tor FAQ
+မ်ားတြင္ ၾကည့္ႏိုင္ပါသည္။
+
+torsocks ျဖင့္အသံုးျပဳေနခ်ိန္တြင္ DNS requests သို႔မဟုတ္ UDP data မ်ားကို
+ေပါက္ၾကားေစျခင္းမရွိေအာင္ ေဖ်ာက္ကြယ္သင့္ပါသည္။
+
+၂ မ်ိဳးစလံုးကေတာ့ ICMP data မ်ားကို ေဖာ္ျပေနပါလိမ့္မည္။
+
+ဒါေတြလည္းၾကည့္ပါ
+--------
+**tor**(1), **tor-resolve**(1), **torsocks**(1), **tsocks**(1),
+**tsocks.conf**(5).
Added: website/trunk/manpages/pl/tor-resolve.1.txt
===================================================================
--- website/trunk/manpages/pl/tor-resolve.1.txt (rev 0)
+++ website/trunk/manpages/pl/tor-resolve.1.txt 2011-03-03 13:39:36 UTC (rev 24296)
@@ -0,0 +1,50 @@
+// Copyright (c) The Tor Project, Inc.
+// Przeczytaj LICENSE, by poznać informacje o licencji
+// To jest plik asciidoc wykorzystywany do generowania odnośników manpage/html.
+// Naucz się asciidoc na http://www.methods.co.nz/asciidoc/userguide.html
+tor-resolve(1)
+==============
+Peter Palfrader
+
+NAZWA
+----
+tor-resolve - rozwiąż nazwę hosta na adres IP przez Tora
+
+SKŁADNIA
+--------
+**tor-resolve** [-4|-5] [-v] [-x] __hostname__ [__sockshost__[:__socksport__]]
+
+OPIS
+-----------
+**tor-resolve** to prosty script do łączenia się z serwerem proxy SOCKS, który zna
+komendę SOCKS RESOLVE, podawania mu nazwy hosta, i zwracania adresu IP.
+
+By default, **tor-resolve** uses the Tor server running on 127.0.0.1 on
+SOCKS port 9050. If this isn't what you want, you should specify an
+explicit __sockshost__ and/or __socksport__ on the command line.
+
+OPCJE
+-------
+**-v**::
+ Wyświetl szczegółowe informacje.
+
+**-x**::
+ Wykonaj sprawdzenie odwrotne: pobierz rekord PTR dla danego adresu IPv4.
+
+**-5**::
+ Używaj protokołu SOCKS5. (Domyślne)
+
+**-4**::
+ Używaj protokołu SOCKS4a zamiast domyślnego protokołu SOCKS5 Nie
+ obsługuje odwrotnych zapytań DNS.
+
+ZOBACZ TEŻ
+--------
+**tor**(1), **torify**(1). +
+
+Przeczytaj doc/socks-extensions.txt w paczce Tora, by poznać szczegóły
+protokołu.
+
+AUTORZY
+-------
+Roger Dingledine <arma(a)mit.edu>, Nick Mathewson <nickm(a)alum.mit.edu>.
Added: website/trunk/manpages/pl/tor.1.txt
===================================================================
--- website/trunk/manpages/pl/tor.1.txt (rev 0)
+++ website/trunk/manpages/pl/tor.1.txt 2011-03-03 13:39:36 UTC (rev 24296)
@@ -0,0 +1,1514 @@
+// Copyright (c) The Tor Project, Inc.
+// Przeczytaj LICENSE, by poznać informacje o licencji
+// To jest plik asciidoc wykorzystywany do generowania odnośników manpage/html.
+// Naucz się asciidoc na http://www.methods.co.nz/asciidoc/userguide.html
+TOR(1)
+==============
+
+NAZWA
+----
+tor - router cebulowy drugiej generacji
+
+
+SYNOPSIS
+--------
+**tor** [__OPTION__ __value__]...
+
+OPIS
+-----------
+__tor__ jest zorientowaną połączeniowo usługą komunikacji
+anonimizującej. Użytkownicy wybierają trasę przez zestaw węzłów i negocjują
+"wirtualny obwód" przez się, w której każdy węzeł zna swojego następnika i
+poprzednika, ale żadnych innych. Ruch płynący przez obwód jest rozpakowywany
+na każdym węźłe, korzystając z symetrycznego klucza, co pozwala poznać
+kolejny węzeł. +
+
+__tor__ dostarcza rozproszoną sieć serwerów ("routerów
+cebulowych"). Uzytkownicy przepuszczają swoje strumienie TCP -- ruch www,
+ftp, ssh, etc -- przez routery, zaś odbiorcy, obserwatorzy, a nawet same
+routery mają kłopot ze znalezieniem źródła strumienia.
+
+OPCJE
+-------
+**-h**, **-help**::
+Wyświetla krótką pomoc i wyłącza aplikację.
+
+**-f** __PLIK__::
+ PLIK zawiera dalsze pary "opcja wartość". (Domyślnie: @CONFDIR@/torrc)
+
+**--hash-password**::
+ Generuje hashowane hasło do dostępu do portu kontrolnego.
+
+**--list-fingerprint**::
+ Generuje Twoje klucze i wyświetla Twoją nazwę i odcisk palca klucza.
+
+**--verify-config**::
+Weryfikuje czy konfiguracja nie zawiera błędów.
+
+**--nt-service**::
+ **--service [install|remove|start|stop]** Zarządzaj usługą Tora na Windows
+ NT/2000/XP. Bieżące instrukcje można znaleźć na
+ https://wiki.torproject.org/noreply/TheOnionRouter/TorFAQ#WinNTService
+
+**--list-torrc-options**::
+ Wyświetl wszystkie opcje.
+
+**--version**::
+Wyświetla wersję Tor i zakańcza pracę.
+
+**--quiet**::
+ Nie uruchamiaj Tora z logowaniem na konsolę, chyba że jawnie to wymuszono.
+ (Domyślnie Tor wyświetla wiadomości na poziomie "notice" lub wyższym na
+ konsolę, do momentu, w którym przejrzy konfigurację.)
+
+Other options can be specified either on the command-line (--option
+ value), or in the configuration file (option value or option "value").
+ Options are case-insensitive. C-style escaped characters are allowed inside
+ quoted values. Options on the command line take precedence over
+ options found in the configuration file, except indicated otherwise. To
+ split one configuration entry into multiple lines, use a single \ before
+ the end of the line. Comments can be used in such multiline entries, but
+ they must start at the beginning of a line.
+
+**BandwidthRate** __N__ **bytes**|**KB**|**MB**|**GB**::
+ A token bucket limits the average incoming bandwidth usage on this node to
+ the specified number of bytes per second, and the average outgoing
+ bandwidth usage to that same value. If you want to run a relay in the
+ public network, this needs to be _at the very least_ 20 KB (that is,
+ 20480 bytes). (Default: 5 MB)
+
+**BandwidthBurst** __N__ **bytes**|**KB**|**MB**|**GB**::
+ Ogranicza maksymalny rozmiar zestawu tokenów (znany jako salwa) do podanej
+ liczby bajtów w każdym kierunku. (Domyślnie: 10 MB)
+
+**MaxAdvertisedBandwidth** __N__ **bytes**|**KB**|**MB**|**GB**::
+ Jeśli ustawione, nie podamy więcej niż ta przepustowość jako nasze
+ BandwidthRate. Operatorzy serwerów chcący zmniejszyć liczbę klientów
+ chcących przez nich budować obwody (jako że jest to proporcjonalne do
+ zgłaszanej przepustowości) mogą więc zmniejszyć zapotrzebowanie na CPU na ich serwerze
+ bez wpływu na wydajność sieci.
+
+**RelayBandwidthRate** __N__ **bytes**|**KB**|**MB**|**GB**::
+ If not 0, a separate token bucket limits the average incoming bandwidth
+ usage for \_relayed traffic_ on this node to the specified number of bytes
+ per second, and the average outgoing bandwidth usage to that same value.
+ Relayed traffic currently is calculated to include answers to directory
+ requests, but that may change in future versions. (Default: 0)
+
+**RelayBandwidthBurst** __N__ **bytes**|**KB**|**MB**|**GB**::
+ If not 0, limit the maximum token bucket size (also known as the burst) for
+ \_relayed traffic_ to the given number of bytes in each direction.
+ (Default: 0)
+
+**PerConnBWRate** __N__ **bajtów**|**KB**|**MB**|**GB**::
+ Jeśli ustawione, włącz osobne ograniczanie przepustowości dla każdego połączenia z nie-przekaźników.
+ Nie powinno być potrzeby zmiany tej wartości, gdyż wartość dla całej sieci jest
+ publikowana w dokumencie konsensusu, a Twój przekaxnik będzie używał tamtej wartości. (Domyślnie: 0)
+
+**PerConnBWBurst** __N__ **bajtów**|**KB**|**MB**|**GB**::
+ Jeśli ustawione, włącz osobne ograniczanie przepustowości dla każdego połączenia z nie-przekaźników.
+ Nie powinno być potrzeby zmiany tej wartości, gdyż wartość dla całej sieci jest
+ publikowana w dokumencie konsensusu, a Twój przekaxnik będzie używał tamtej wartości. (Domyślnie: 0)
+
+**ConnLimit** __NUM__::
+ The minimum number of file descriptors that must be available to the Tor
+ process before it will start. Tor will ask the OS for as many file
+ descriptors as the OS will allow (you can find this by "ulimit -H -n").
+ If this number is less than ConnLimit, then Tor will refuse to start. +
+ +
+ You probably don't need to adjust this. It has no effect on Windows
+ since that platform lacks getrlimit(). (Default: 1000)
+
+**ConstrainedSockets** **0**|**1**::
+ Jeśli ustawione, Tor powie systemowi, by spróbował zmniejszyć bufory wszystkich
+ gniazd do rozmiaru podanego w **ConstrainedSockSize**. Jest to przydatne dla
+ serwerów wirtualnych i innych środowisk, w których bufory TCP poziomu systemu mogą
+ zostać ograniczone. Jeśli jesteś na wirtualnym serwerze i napotkasz błąd "Error
+ creating network socket: No buffer space available", prawodpodobnie
+ doświadczasz tego problemu. +
+ +
+ Preferowanym rozwiązaniem jest, aby administrator zwiększył bufory dla
+ całego hosta poprzez /proc/sys/net/ipv4/tcp_mem lub równoważny mechanizm;
+ ta opcja jest drugim rozwiązaniem. +
+ +
+ Opcja DirPort nie powinna być używana, gdy bufory TCP są małe. ZAchowane
+ żądania do serwerów katologowych pobierają dodatkowe gniazda, co pogarsza
+ problem. +
+ +
+ **Nie** powinno się włączać tej opcji, jeśli nie napotkało się na błąd "no buffer
+ space available". Zmniejszanie buforów TCP ma wpływ na rozmiar okna w
+ strumieniu TCP i zmniejszy przepustowość proporcjonalnie do czasów przejścia
+ przez sieć na długich ścieżkach. (Domyślnie: 0.)
+
+**ConstrainedSockSize** __N__ **bajtów**|**KB**::
+ Gdy **ConstrainedSockets** jest włączone, bufory nadawcze i odbiorcze wszystkich
+ gniazd zostaną ustawione na ten limit. Musi to być wartość między 2048 a
+ 262144, w skokach co 1024 bajty. Domyślna wartość 8192 jest zalecana.
+
+**ControlPort** __Port__::
+ Jeśli ustawione, Tor będzie przyjmował połączenia na ten port i pozwoli tym
+ połączeniom kontrolować proces Tora z wykorzystaniem Protokołu Kontroli Tora
+ (opisanego w control-spec.txt). Uwaga: to pozwoli każdemu procesowi na hoście
+ lokalnym kotrolować Tora, chyba że ustawisz też jedną z opcji
+ **HashedControlPassword** lub **CookieAuthentication**. Ta
+ opcja jest wymagana przez wiele kontrolerów Tora; większość używa wartości 9051.
+
+**ControlListenAddress** __IP__[:__PORT__]::
+ Przypisz proces nasłuchujący kontrolera do tego adresu. Jeśli podasz port, przypisze
+ do tego portu zamiast tego podanego w ControlPort. Zalecamy trzymanie
+ się z dala od tej opcji, chyba że wiesz co robisz,
+ gdyż dawanie napastnikom dostępu do procesu nasłuchującego kontrolera jest naprawdę
+ niebezpieczne. (Domyślnie: 127.0.0.1) Ta derektywa może być podana wiele
+ razy, by przypisać proces do wielu adresów/portów.
+
+**ControlSocket** __Ścieżka__::
+ Jak ControlPort, ale nasłuchuje na gnieździe domeny Unix zamiast na gnieździe
+ TCP. (Tylko Unix i systemy Uniksopodobne.)
+
+**HashedControlPassword** __haszowane_hasło__::
+ Nie zezwalaj na żadne połączenia na porcie kontrolnym za wyjątkiem gdy
+ drugi proces zna hasło, którego skrótem jest __haszowane_hasło__. Możesz
+ obliczyć skrót hasła, uruchamiając "tor --hash-password
+ __hasło__". Możesz podać wiele przyjmowanych haseł, używając więcej
+ niż jednej linii HashedControlPassword.
+
+**CookieAuthentication** **0**|**1**::
+ Jeśli ta opcja jest ustawiona na 1, nie zezwalaj na żadne połączenia na porcie kontrolnym
+ za wyjątkiem gdy proces łączący się zna zawartość pliku o nazwie
+ "control_auth_cookie", który Tor stworzy w swoim katalogu danych. Ta
+ metoda uwierzytelniania powinna być używana tylko na systemach z dobrą ochroną
+ systemu plików. (Domyślnie: 0)
+
+**CookieAuthFile** __Ścieżka__::
+ Jeśli ustawione, zastępuje domyślną lokalizację i nazwę pliku
+ z ciasteczkiem Tora. (Zobacz CookieAuthentication wyżej.)
+
+**CookieAuthFileGroupReadable** **0**|**1**|__Nazwagrupy__::
+ Jeśli ta opcja ma wartość 0, nie pozwól grupie w systemie plików na odczyt
+ pliku z ciasteczkiem. Jeśli ta opcja ma wartość 1, spraw, by plik z ciasteczkiem był odczytywalny
+ przez domyślny GID. [Zrobienie pliku odczytywalnym przez inne grupy nie jest jeszcze
+ zaimplementowane; daj nam znać, jesli potrzebujesz tego z jakiegoś powodu.] (Domyślnie: 0).
+
+**DataDirectory** __KATALOG__::
+ Zapisz dane do pracy w katalogu KATALOG (Domyślnie: @LOCALSTATEDIR@/lib/tor)
+
+**DirServer** [__nazwa__] [**flagi**] __adres__:__port__ __OdciskPalca__::
+ Używaj niestandardowego serwera katlogowego pod podanym adresem
+ i portem, z podanym odciskiem pacla klucza. Ta opcja może być powtarzana
+ wiele razy, dla wielu serwerów katalogowych. Flagi są
+ rozdzielane spacjami i określają, jakim rodzajem serwera jest ten
+ serwer. Domyślne, każdy serwer jest autorytatywny dla bieżących katalogów stylu "v2",
+ chyba że podano opcję "no-v2". Jeśli podano flagę "v1", Tor
+ będzie używał tego serwera też do katalogów starego stylu (v1).
+ (Tylko serwery lustrzane katalogów patrzą na to.) Tor będzie
+ używał tego serwera jako serwera autorytatywnego dla informacji o usługach ukrytych, jeśli podano flagę "hs",
+ lub gdy flaga "v1" jest ustawiona, a flaga "no-hs" **nie** jest ustawiona.
+ Tor używał tego serwera jako serwera autorytatywnego mostków, jeśli
+ podano flagę "bridge". Jeśli podano flagę "orport=**port**", Tor będzie używał
+ podanego portu do otwierania zaszyfrowanych tuneli do tego serwera. Gdy podano flagę
+ "v3ident=**fp**", ten serwer jest serwerem katalogowym v3, którego
+ długoterminowy klucz podspisujący v3 ma odcisk palca **fp**. +
+ +
+ Jeśli nie podano żadnych linii **dirserver**, Tor będzie używał domyślnych serwerów
+ katalogowych. UWAGA: ta opcja jest do uruchamiania prywatnych sieci Tora
+ z własnymi centrami katalogowymi. Jeśli jej użyjesz, będzie można Cię odróżnić
+ od innych użytkowników, gdyż nie będziesz mieć zaufania do tych samych
+ serwerów, co oni.
+
+**AlternateDirAuthority** [__nazwa__] [**flagi**] __adres__:__port__ __OdciskPalca__ +
+
+**AlternateHSAuthority** [__nazwa__] [**flagi**] __adres__:__port__ __OdciskPalca__ +
+
+**AlternateBridgeAuthority** [__nazwa__] [**flagi**] __adres__:__port__ __ Odciskalca__::
+ Jak DirServer, ale zastępuje mniej z domyślnych serwerów katalogowych. Używanie
+ AlternateDirAuthority zastępuje domyślne serwery katalogwe Tora, ale
+ zostawia serwery katalogowe usług ukrytych i mostków nienaruszone.
+ Podobnie, używanie AlternateHSAuthority zastępuje domyślne serwery usług
+ ukrytych, ale nie serwery katalogowe lub mostków.
+
+**DisableAllSwap** **0**|**1**::
+ Jeśli ustawione na 1, Tor spróbuje zablokować wszystkie bieżące i przyszłe strony,
+ pamięci, by nie można ich było umieścić w przestrzeni wymiany. Windows, OS X i Solaris są obecnie
+ nieobsługiwane. Naszym zdaniem to działa na współczesnych dystrybucjach Gnu/Linux,
+ i powinno działać na systemach *BSD (niesprawdzone). Ta
+ opcja wymaga uruchomienia Tora z konta roota i powinno się ustawić opcję
+ **User**, by prawidłowo ograniczyć uprawnienia Tora. (Domyślnie: 0)
+
+**FetchDirInfoEarly** **0**|**1**::
+ Jeśli ustawione na 1, Tor zawsze pobierze informacje katalogowe,
+ nawet jeśli nie są spełnione normalne kryteria wczesnego
+ pobierania. Normalni użytkownicy powinni zostawić to wyłączone. (Domyślnie: 0)
+
+**FetchDirInfoExtraEarly** **0**|**1**::
+ Jeśli ustawione na 1, Tor pobierze informacje katalogowe przed innymi pamięciami
+ katalogowymi. Spróbuje pobrać informacje katalogowe bliżej początku
+ okresu konsensusu. Normalni użytkownicy powinni zostawić to wyłączone.
+ (Domyślnie: 0)
+
+**FetchHidServDescriptors** **0**|**1**::
+ Jeśli ustawione na 0, Tor nigdy nie pobierze żadnych deskryptorów usług ukrytych z
+ katalogów punktów spotkań. Ta opcja jest przydatna tylko wtedy, gdy używasz kontrolera Tora,
+ który za Ciebie zajmuje się pobieraniem usług ukrytych. (Domyślnie: 1)
+
+**FetchServerDescriptors** **0**|**1**::
+ Jeśli ustawione na 0, Tor nigdy nie pobierze żadnych podsumować stanu sieci czy deskryptorów
+ serwerów z serwerów katalogowych. Ta opcja jest przydatna tylko wtedy, gdy
+ używasz kontrolera Tora, który za Ciebie zajmuje się pobieraniem katalogów.
+ (Domyślnie: 1)
+
+**FetchUselessDescriptors** **0**|**1**::
+ Jeśli ustawione na 1, Tor pobierze każdy nieprzesarzały deskryptor z
+ serwerów, o którym się dowie. W innym przypadku, będzie unikać pobierania bezużytecznych
+ deskryptorów, na przykład z routerów, które nie są uruchomione. Ta opcja jest
+ przydatna, jeśli używasz skryptu "exitlist" do wyliczenia węzłów Tora,
+ z których można wyjść na określony adres. (Domyślnie: 0)
+
+**HTTPProxy** __host__[:__port__]::
+ Tor wyśle wszystkie żądania do katalogów przez ten host:port (lub host:80,
+ gdy nie podano portu), zamiast łączyć się bezpośrednio z serwerami
+ katalogowymi.
+
+**HTTPProxyAuthenticator** __nazwa:hasło__::
+ Jeśli określone, Tor będzie używał tej nazwy użytkownika i hasła do uwierzytelniania
+ Basic HTTP w proxy, jak podano w RFC 2617. Obecnie jest to jedyna metoda uwierzytelniania proxy HTTP
+ obsługiwana przez Tora; możesz wysłać łatę, jeśli chcesz mieć obsługę
+ innych metod.
+
+**HTTPSProxy** __host__[:__port__]::
+ Tor będzie wykonywał wszystkie swoje połączenia OR (SSL) przez ten host:port (lub
+ host:443, gdy nie podano portu), poprzez HTTP CONNECT zamiast łączyć się
+ bezpośrednio do serwerów. Możesz ustawić **FascistFirewall**, by ograniczyć
+ zbiór portów, do których możesz próbować się połączyć, jeśli Twój serwer proxy HTTPS
+ pozwala na połączenia tylko do pewnych portów.
+
+**HTTPSProxyAuthenticator** __nazwa:hasło__::
+ Jeśli podane, Tor będzie używał tej nazwy użytkownika i hasła do uwierzytelniania
+ Basic HTTP w proxy, jak podano w RFC 2617. Obecnie jest to jedyna metoda uwierzytelniania proxy HTTPS
+ obsługiwana przez Tora; możesz wysłać łatę, jeśli chcesz mieć obsługę
+ innych metod.
+
+**Socks4Proxy** __host__[:__port__]::
+ Tor będzie wykonywał wszystkie połączenia OR przez proxy SOCKS 4 pod adresem host:port
+ (lub host:1080, gdy nie podano portu).
+
+**Socks5Proxy** __host__[:__port__]::
+ Tor będzie wykonywał wszystkie połączenia OR przez proxy SOCKS 5 pod adresem host:port
+ (lub host:1080, gdy nie podano portu).
+
+**Socks5ProxyUsername** __nazwa__ +
+
+**Socks5ProxyPassword** __hasło__::
+ Jeśli podano, uwierzytelniaj się na serwerze proxy SOCKS 5 podając nazwę i hasło
+ według RFC 1929. Nazwa i hasło muszą mieć od 1 do
+ 255 znaków.
+
+**KeepalivePeriod** __NUM__::
+ By uniemożliwić firewallom rozłączanie przestarzałych połączeń, wyślij komórkę
+ utrzymywania poąłczenia co NUM sekund na wykorzystywanych otwartych poąłczeniach. Jeśli połączenie
+ nie ma otwartych obwodów, zostanie zamiast tego zamknięte po NUM sekundach
+ nieaktywności. (Domyślnie: 5 minutes)
+
+**Log** __minPoziom__[-__maxPoziom__] **stderr**|**stdout**|**syslog**::
+ Wyślij wszystkie wiadomości między __minPoziom__ a __maxPoziom__ na standardowe
+ wyjście, standardowe wyjście bęłdów, lub do dziennika systemowego. (Wartość
+ "syslog" jest obsługiwana tylko na systemach Unix.) Rozpoznawane poziomy powagi to
+ debug, info, notice, warn i err. Zalecamy używanie "notice" w większości przypadków,
+ gdyż cokolwiek więcej może dać wrażliwe informacje
+ napastnikowi, który uzyska logi. Jesli podano tylko jeden stopień powagi, wszystkie
+ wiadomości tego poziomu lub wyższego zostaną wysłane do podanego miejsca.
+
+**Log** __minPoziom__[-__maxPoziom__] **file** __NAZWAPLIKU__::
+ Jak wyżej, ale wyślij wiadomości logu do podanego pliku. Opcja
+ "Log" może pojawić się więcej niż raz w pliku konfiguracyjnym.
+ Wiadomości są wysyłane do wszystkich logów, do których pasuje ich
+ poziom powagi.
+
+**Log** **[**__domain__,...**]**__minSeverity__[-__maxSeverity__] ... **file** __FILENAME__ +
+
+**Log** **[**__domain__,...**]**__minSeverity__[-__maxSeverity__] ... **stderr**|**stdout**|**syslog** ::
+ As above, but select messages by range of log severity __and__ by a
+ set of "logging domains". Each logging domain corresponds to an area of
+ functionality inside Tor. You can specify any number of severity ranges
+ for a single log statement, each of them prefixed by a comma-separated
+ list of logging domains. You can prefix a domain with $$~$$ to indicate
+ negation, and use * to indicate "all domains". If you specify a severity
+ range without a list of domains, it matches all domains. +
+ +
+ This is an advanced feature which is most useful for debugging one or two
+ of Tor's subsystems at a time. +
+ +
+ The currently recognized domains are: general, crypto, net, config, fs,
+ protocol, mm, http, app, control, circ, rend, bug, dir, dirserv, or, edge,
+ acct, hist, and handshake. Domain names are case-insensitive. +
+ +
+ For example, "`Log [handshake]debug [~net,~mm]info notice stdout`" sends
+ to stdout: all handshake messages of any severity, all info-and-higher
+ messages from domains other than networking and memory management, and all
+ messages of severity notice or higher.
+
+**LogMessageDomains** **0**|**1**::
+ If 1, Tor includes message domains with each log message. Every log
+ message currently has at least one domain; most currently have exactly
+ one. This doesn't affect controller log messages. (Default: 0)
+
+**OutboundBindAddress** __IP__::
+ Spraw, by wszystkie wychodzące połączenia wychodziły z podanego adresu IP. To
+ jest przydatne tylko gdy masz wiele interfejsów sieciowych, a chcesz, by wszystkie
+ połączenia wychodzące Tora używaly jednego. Ta opcja będzie ignorowana dla
+ połączeń na adresy zwrotne (127.0.0.0/8 i ::1).
+
+**PidFile** __PLIK__::
+ Przy starcie zapisz nasz PID do pliku PLIK. Przy bezproblemowym wyjściu
+ usuń PLIK.
+
+**ProtocolWarnings** **0**|**1**::
+ Gdy 1, Tor będzie logował z powagą \'warn' różne przypadki, gdy inne strony nie
+ trzymają się specyfikacji Tora. W innym przypadku, są one logowane z powagą
+ \'info'. (Domyślnie: 0)
+
+**RunAsDaemon** **0**|**1**::
+ Gdy 1, Tor tworzy nowy proces i demonizuje się w tło. Ta opcja nic nie robi
+ na Windows; zamiast tego, trzeba użyć opcji --service.
+ (Domyślnie: 0)
+
+**LogTimeGranularity** __NUM__::
+ Set the resolution of timestamps in Tor's logs to NUM milliseconds.
+ NUM must be positive and either a divisor or a multiple of 1 second.
+ Note that this option only controls the granularity written by Tor to
+ a file or console log. Tor does not (for example) "batch up" log
+ messages to affect times logged by a controller, times attached to
+ syslog messages, or the mtime fields on log files. (Default: 1 second)
+
+**SafeLogging** **0**|**1**|**relay**::
+ Tor może wymazywać potencjalnie wrażliwe łańcuchy znaków z logów (np.
+ adresy), zastępując je napisem [scrubbed]. Tym sposobem logi dalej mogą
+ być użyteczne, ale nie zostaja w nich informacje identyfikujące osobę
+ o tym, jakie strony użytkownik mógł odwiedzić. +
+ +
+ Gdy ta opcja jest ustawiona na 0, Tor nie będzie nic wymazywał, gdy wynosi
+ 1, wszystkie potencjalnie wrażliwe napisy są zastępowane. Gdy jest ustawiona na
+ relay, wszystkie wiadomości logowania wygeneroweane podczas działania jakoprzekaźnik są czyszczone, ale
+ wszystkie wiadomości wygenerowane w czasie działania jako klient nie są. (Default: 1)
+
+**User** __UID__::
+ W czasie startu przełącz się na tego użytkownika i jego główną grupę.
+
+**HardwareAccel** **0**|**1**::
+ Gdy nie 0, spróbuj użyć wbudowanego (statycznego) sprzętowego przyspieszania kryptografii,
+ gdy dostępne. (Domyślnie: 0)
+
+**AccelName** __NAZWA__::
+ W czasie używania sprzętowego przyspieszania kryptografii OpenSSL spróbuj załadować dynamiczny
+ silnik o tej nazwie. To musi być używane do jakiegokolwiek dynamicznego sprzętowego silnika.
+ Nazwy mogą zostać zweryfikowane komendą openssl engine.
+
+**AccelDir** __DIR__::
+ Podaj tę ocję, gdy używasz dynamicznego sprzętowego przyspieszania, a biblioteka
+ implementująca silnik jest gdzieś poza domyślną lokalizacją OpenSSL.
+
+**AvoidDiskWrites** **0**|**1**::
+ Gdy nie 0, spróbuj zapisywać na dysk rzadziej niż w innych przypadkach.
+ Jest to przydatne w czasie działania z pamięci flash lub innych nośników, które obsługują
+ tlyko ograniczoną liczbę zapisów. (Domyślnie: 0)
+
+**TunnelDirConns** **0**|**1**::
+ Gdy nie 0, będziemy budować jednoelementowy obwód i wykonamy szyfrowane połączenie
+ przez port ORPort serwera katalogowego, z którym się łączymy, jeśli on to obsługuje.
+ (Domyślnie: 1)
+
+**PreferTunneledDirConns** **0**|**1**::
+ Gdy nie 0, będziemy unikać serwerów katalogowych, które nie obsługują tunelowanych
+ połączeń katalogowych, jesli możilwe. (Domyślnie: 1)
+
+**CircuitPriorityHalflife** __NUM1__::
+ Gdy ta wartość jest ustawiona, zmieniamy domyślny algorytm wyboru, którą
+ komórkę obwodu wysłać lub przekazać jako następną. Gdy wartość to 0,
+ chodzimy w kółko między aktywnymi obwodami w połączeniu, dostarczając jedną
+ komórkę z każdego po kolei. Gdy wartość jest dodatnia, preferujemy dostarczasnie
+ komórek z połaczenia o najniższej ważonej liczbie komórek, gdzie
+ komórki są ważone wykładniczo według dostarczonej wartości
+ CircuitPriorityHalflife (w sekundach). JEśli ta opcja nie jest w ogóle
+ ustawiona, używamy zachowania zalecanego w bieżącym konsensusie
+ stanu sieci (networkstatus). To jest zaawansowana opcja; nie powinno być potrzeby
+ jej zmiany. (Domyślnie: nie ustawiona.)
+
+**DisableIOCP** **0**|**1**::
+ If Tor was built to use the Libevent's "bufferevents" networking code
+ and you're running on Windows, setting this option to 1 will tell Libevent
+ not to use the Windows IOCP networking API. (Default: 1)
+
+OPCJE KLIENTA
+--------------
+
+Następujace opcje są przydatne tylko dla klientów (to znaczy, gdy
+**SocksPort** nie jest zerem):
+
+**AllowInvalidNodes** **entry**|**exit**|**middle**|**introduction**|**rendezvous**|**...**::
+ Jeśli niektóre serwery Tora wyraźnie działają źle, serwery
+ katalogowe mogą ręcznie oznaczyć je jako nieprawidłowe, co znaczy, że nie
+ zaleca się ich używania w miejscu wejścia lub wyjścia w Twoich obwodach. Możesz
+ jednak włączyć ich używanie w niektórych punktach obwodu. Domyślne to
+ "middle,rendezvous", a inne możliwości nie są zalecane.
+
+**ExcludeSingleHopRelays** **0**|**1**::
+ This option controls whether circuits built by Tor will include relays with
+ the AllowSingleHopExits flag set to true. If ExcludeSingleHopRelays is set
+ to 0, these relays will be included. Note that these relays might be at
+ higher risk of being seized or observed, so they are not normally
+ included. Also note that relatively few clients turn off this option,
+ so using these relays might make your client stand out.
+ (Default: 1)
+
+**Bridge** __IP__:__ORPort__ [OdciskPalca]::
+ Gdy właczone razem z UseBridges, instruuje Tora, by używał przekaźnika
+ pod adresem "IP:ORPort" jako "mostka" przekazującego do sieci Tora. Jeśli podano "OdciskPalca"
+ (w tym samym formacie, co w DirServer), sprawdzimy, czy przekaźnik
+ podany pod tym adresem ma właściwy odcisk palca. Używamy też tego
+ odcisku palca do znalezienia deskryptora mostku na serwerze mostków, jeśli
+ jest podany i UpdateBridgesFromAuthority też jest ustawione.
+
+**LearnCircuitBuildTimeout** **0**|**1**::
+ If 0, CircuitBuildTimeout adaptive learning is disabled. (Default: 1)
+
+**CircuitBuildTimeout** __NUM__::
+
+ Try for at most NUM seconds when building circuits. If the circuit isn't
+ open in that time, give up on it. If LearnCircuitBuildTimeout is 1, this
+ value serves as the initial value to use before a timeout is learned. If
+ LearnCircuitBuildTimeout is 0, this value is the only value used.
+ (Default: 60 seconds.)
+
+**CircuitIdleTimeout** __NUM__::
+ Jeśli trzymaliśmy czysty (nieużywany) obwód przez NUM sekund, to
+ zamykamy go. Dzięki temu, gdy klient Tora jest całkowicie bezczynny, może przedawnić wszystkie
+ swoje obwody, po czym może przedawnić połączenia TLS. Poza tym, jeśli zrobimy obwód,
+ który nie jest przydatny do wychodzenia dla żadnych otrzymywanych żądań, nie
+ będzie ciągle zapychał miejsca na liście obwodów. (Domyślnie: 1
+ godzina.)
+
+**CircuitStreamTimeout** __NUM__::
+ Jeśli nie jest zerem, ta opcja zmienia wewnętrzne mechanizmy przedawnienia co do tego,
+ ile sekund czekamy, zanim odłaczymy strumień od obwodu i spróbujemy nowego obwodu.
+ Jeśli Twoja się jest szczególnie wolna, możesz ustawić to na wartość
+ taką jak 60. (Domyślnie: 0)
+
+**ClientOnly** **0**|**1**::
+ Jeśli ustawione na 1, Tor w żadnym przypadku nie będzie działał jako serwer lub
+ obsługiwał żądania katalogowe. Domyślne jest działanie jako klient, chyba że ORPort jest
+ skonfigurowany. Zazwyczaj nie musisz tego ustawiać; Tor jest całkiem mądry w
+ domyslaniu się, czy jesteś wystarczająco wiarygodny i masz dość przepustowości łącza, aby być
+ przydatnym serwerem.) (Domyślnie: 0)
+
+**ExcludeNodes** __węzeł__,__węzeł__,__...__::
+ Lista odcisków palców, nazw, kodów państw i wzorców adresowych węzłów,
+ których nigdy nie używać do budowania obwodów. (Przykład:
+ ExcludeNodes SlowServer, $ EFFFFFFFFFFFFFFF, \{cc}, 255.254.0.0/8)
+
+**ExcludeExitNodes** __węzeł__,__węzeł__,__...__::
+ Lista odcisków palców, nazw, kodów państw i wzorców adresowych węzłów,
+ których nigdy nie używać w czasie wybierania węzła wyjściowego. Węzły
+ podane w ExcludeNodes są automatycznie brane jako część tej
+ listy.
+
+**EntryNodes** __węzeł__,__węzeł__,__...__::
+ Lista odcisków palców, nazw, kodów państw i wzorców adresowych węzłów,
+ których należy używać w czasie wybierania pierwszego węzła w normalnych
+ obwodach. Te węzły są traktowane tylko jako preferencja, chyba że
+ StrictNodes (patrz niżej) też jest ustawione.
+
+**ExitNodes** __węzeł__,__węzeł__,__...__::
+ Lista odcisków palców, nazw, kodów państw i wzorców adresowych węzłów,
+ których należy używać w czasie wybierania ostatniego węzła w normalnych
+ obwodach wychodzących. Te węzły są traktowane tylko jako preferencja, chyba że
+ StrictNodes (patrz niżej) też jest ustawione.
+
+**StrictNodes** **0**|**1**::
+ Gdy 1 i opcja konfiguracji EntryNodes jest ustawiona, Tor nigdy nie będzie
+ używał innych węzłów niż podane w EntryNodes jako pierwszego węzła normalnego obwodu.
+ Gdy 1 i opcja konfiguracji ExitNodes jest ustawiona, Tor nigdy nie będzie
+ używał innych węzłów niż podane w EntryNodes jako pierwszego węzła normalnego obwodu wychodzącego.
+ Tor może dalej używać tych węzłów do obwodów niewychodzących,jak
+ jednokrokowe pobieranie z katalogów czy obwody obsługujące usługi ukryte.
+
+**FascistFirewall** **0**|**1**::
+ Gdy 1, Tor będzie tworzył połaczenia wychodzące tlyko do ORs działających na portach,
+ na które pozwala Twój firewall (domyślnie to 80 i 443; zobacz **FirewallPorts**).
+ To pozwoli Ci uruchamiać Tora jako klienta za firewallem z
+ restrykcyjną polityką, ale nie pozwoli Ci prowadzić serwera za takim
+ firewallem. Jeśli wolisz lepszą kontrolę, użyj
+ ReachableAddresses zamiast tej opcji.
+
+**FirewallPorts** __PORTY__::
+ Lista portów, na połączenia do których pozwala Twój firewall. Używane tylko gdy
+ **FascistFirewall** jest ustawione. Ta opcja jest przestarzała; używaj ReachableAddresses
+ zamiast niej. (Domyślnie: 80, 443)
+
+**HidServAuth** __onion-adres__ __ciasteczko__ [__nazwa-usługi__]::
+ Uwierzytelnianie klienta dla usługi ukrytej. Prawidłowe adresy onion zawierają 16
+ znaków spośród a-z2-7 plus ".onion", prawidłowe ciasteczka uwierzytelniające zawierają 22
+ znaki spośród A-Za-z0-9+/. Nazwa usługi jest uzywana tylko do celów
+ wewnętrznych, np. dla kontrolerów Tora. Ta opcja może być użyta wiele razy
+ dla różnych usług ukrytych. Jeśli usługa ukryta używa uwierzytelniania a
+ ta opcja nie jest ustawiona, ta usługa jest niedostępna. Usługi
+ ukryte można skonfigurować, by wymagały uwierzytelniania za pomocą opcji **HiddenServiceAuthorizeClient**.
+
+**ReachableAddresses** __ADRES__[/__MASKA__][:__PORT__]...::
+ Rozdzielona przecinkami lista adresów IP i portów, na połączenia do których zezwala
+ Twój firewall. Format jest jak dla adresów w ExitPolicy poza tym,że
+ rozumiane jest "accept", chyba że jawnie podano "reject". Na
+ przykład, \'ReachableAddresses 99.0.0.0/8, reject 18.0.0.0/8:80, accept
+ \*:80' oznacza, że Twój firewall pozwala na połączenia do wszystkiego w sieci
+ 99, odrzuca połaczenia na port 80 do sieci 18, i pozwala na połączenia na port
+ 80 w innych przypadkach. (Domyślnie: \'accept \*:*'.)
+
+**ReachableDirAddresses** __ADRES__[/__MASKA__][:__PORT__]...::
+ Jak **ReachableAddresses**, lista adresów i portów. Tor będzie posłuszny
+ tym ograniczeniom podczas pobierania informacji katalogowych, wykorzystując standardowe żądania HTTP
+ GET. Jeśli nie podano jawnie, używana jest wartość
+ **ReachableAddresses**. Jeśli ustawiono **HTTPProxy**, to te połączenia
+ będą szły przez tamto proxy.
+
+**ReachableORAddresses** __ADRES__[/__MASKA__][:__PORT__]...::
+ Jak **ReachableAddresses**, lista adresów i portów. Tor będzie posłuszny
+ tym ograniczeniom w czasie łączenia się z Onion Routers, używając TLS/SSL. Jeśli nie
+ ustawione, używana jest wartość **ReachableAddresses**. Jeśli
+ **HTTPSProxy** jest ustawione, te połączenia będą szły przez to proxy. +
+ +
+ Rozdzielenie **ReachableORAddresses** i
+ **ReachableDirAddresses** jest interesujące tylko gdy łączysz się przez
+ serwery proxy (patrz **HTTPProxy** i **HTTPSProxy**). Większość serweró proxy ogranicza
+ połączenia TLS (których używa Tor do łączenia się z Onion Routers) na port 443,
+ a niektóre ograniczają żądania HTTP GET (których Tor używa do pobierania informacji
+ katalogowych) na port 80.
+
+**LongLivedPorts** __PORTS__::
+ Lista portów dla usług, które mają długotrwałe połączenia
+ (np. rozmowy czy powłoki interaktywne). Obwody dla strumieni używających tych
+ portów będą zawierały tylko węzły o długim czasie działania, by zmniejszyć szanse, że węzeł
+ wyłączy się zanim strumień się zakończy. (Domyślnie: 21, 22, 706, 1863,
+ 5050, 5190, 5222, 5223, 6667, 6697, 8300)
+
+**MapAddress** __adres__ __nowyadres__::
+ Gdy do Tora przychodzi żądanie dla danego adresu, przepisze je na nowyadres
+ zanim je przetworzy. Na przykład, jeśli chcesz, by połączenia do
+ www.indymedia.org wychodziły przez __torserwer__ (gdzie __torserwer__ jest nazwą
+ serwera), użyj "MapAddress www.indymedia.org
+ www.indymedia.org.torserver.exit".
+
+**NewCircuitPeriod** __NUM__::
+ Co NUM sekund rozpatrz, czy nie budować nowego obwodu. (Domyślnie: 30
+ sekund)
+
+**MaxCircuitDirtiness** __NUM__::
+ Można ponownie używać obwodu, który został po raz pierwszy użyty co najwyżej NUM sekund temu,
+ ale nigdy nie podłączaj nowego strumienia do obwodu, który jest za stary. (Domyślnie: 10
+ minut)
+
+**NodeFamily** __node__,__node__,__...__::
+ The Tor servers, defined by their identity fingerprints or nicknames,
+ constitute a "family" of similar or co-administered servers, so never use
+ any two of them in the same circuit. Defining a NodeFamily is only needed
+ when a server doesn't list the family itself (with MyFamily). This option
+ can be used multiple times. In addition to nodes, you can also list
+ IP address and ranges and country codes in {curly braces}.
+
+**EnforceDistinctSubnets** **0**|**1**::
+ Gdy 1, Tor nie umieści dwóch serwerów, których adresy IP są "za blisko siebie" w
+ tym samym obwodzie. Obecnie, dwa adresy są "za blisko siebie", gdy są w
+ tym samym zakresie /16. (Domyślnie: 1)
+
+**SocksPort** __PORT__::
+ Uruchom ten port do nasłuchiwania połączeń od aplikacji używających protokołu
+ Socks. Ustaw na 0, jeśli nie chcesz pozwolić na połączenia od
+ aplikacji. (Domyślnie: 9050)
+
+**SocksListenAddress** __IP__[:__PORT__]::
+ Przypisz się do tego adresu w celu nasłuchiwania połączeń od aplikacji używających protokołu
+ Socks. (Domyślnie: 127.0.0.1) Możesz też podać port (np.
+ 192.168.0.1:9100). Ta dyrektywa może być podana wiele razy do przypisania się
+ do wielu adresów/portów.
+
+**SocksPolicy** __polityka__,__polityka__,__...__::
+ Ustaw politykę wejściową dla tego serwera, by ograniczyć to, kto może połączyć się
+ z portami SocksPort i DNSPort. Polityki mają tę samą formę, co polityki
+ wyjścia poniżej.
+
+**SocksTimeout** __NUM__::
+ Pozwól połączeniu socks czekać NUM sekund przed wymianą danych, i NUM sekund
+ niepodłączonym, czekając na odpowiedni obwód, zanim zamkniemy to połączenie. (Domyślnie:
+ 2 minuty.)
+
+**TrackHostExits** __host__,__.domena__,__...__::
+ Dla każdej wartości z rozdzielonej przecinkami listy, Tor będzie śledził
+ ostatnie połączenia do hostów pasujących do tej wartości i będzie próbował ponownie użyć tego samego
+ węzła wyjściowego dla każdej z nich. Jesli wartość zaczyna się od \'.\', jest traktowana jako
+ pasująca do całej domeny. Jeśli jedną z wartosci jest po prostu \'.', oznacza to
+ pasowanie do wszystkiego. Ta opcja jest przydatna, jeśli często łączysz się ze stronami,
+ które przedawnią wszystkie Twoje ciasteczka uwierzytelniające (tzn. wylogują Cię), gdy
+ zmieni się Twój adres IP. Ta opcja ma tę wadę, że ujawnia,
+ że określona historia jest związana z pojedynczym użytkownikiem.
+ Ale większość ludzi, którzy chcieliby to obserwować, i tak będzie to obserwować poprzez
+ ciasteczka lub inne środki specyficzne dla protokołu.
+
+**TrackHostExitsExpire** __NUM__::
+ Jako że serwery wyjściowe włączają się i wyłączają, pożądane jest, by
+ powiązania między hostem i serwerem wyjściowym przedawniły się po NUM sekundach. Domyślnie jest to
+ 1800 sekund (30 minut).
+
+**UpdateBridgesFromAuthority** **0**|**1**::
+ Gdy ustawione (razem z UseBridges), Tor spróbuje pobrać deskryptory mostków
+ ze skonfigurowanych serwerów mostków, gdy jet to wykonalne. Potem spróbuje żądania
+ bezpośredniego, gdy serwer odpowie 404. (Domyślnie: 0)
+
+**UseBridges** **0**|**1**::
+ Gdy ustawione, Tor pobierze deskryptor każdego mostka podanego w liniach "Bridge",
+ i będzie używał tych przekaźników zarówno jako strażników wejściowych, jak i
+ strażników katalogowych. (Domyślnie: 0)
+
+**UseEntryGuards** **0**|**1**::
+ Gdy ta opcja jest ustawiona na 1, wybieramy kilka długoterminowych serwerów wejsciowychi próbujemy
+ się ich trzymać. Jest to pożądane, gdyż ciągłe zmiany serwerów
+ zwiększają szanse, że napastnik mający kilka serwerów będzie obserwował część
+ Twoich ścieżek. (Domyślnie ma wartość 1.)
+
+**NumEntryGuards** __NUM__::
+ Jeśli UseEntryGuards jest ustawione na 1, spróbujemy wybrać łącznie NUM routerów
+ jako długoterminowe punkty wejścia dla naszych obwodów. (Domyślnie ma wartość 3.)
+
+**SafeSocks** **0**|**1**::
+ Gdy ta opcja jest włączona, Tor będzie odrzucał połączenia aplikacji, które
+ używają niebezpiecznych wersji protokołu socks -- takich, które dostarczają tylko adres IP,
+ co znaczy, że aplikacja najpierw wykonuje rozwiązywanie DNS.
+ Ściśle mówiąc, są to protokoły socks4 i socks5, gdy nie robi się zdalnych operacji DNS.
+ (Domyślnie ma wartość 0.)
+
+**TestSocks** **0**|**1**::
+ Gdy ta opcja jest włączona, Tor wykona wpis do logu o poziomie notice dla
+ każdego połączenia na port Socks wskazując, czy żądanie używało bezpiecznego
+ protokołu socks, czy niebezpiecznej (patrz wyżej na SafeSocks). To
+ pomaga w określeniu, czy z aplikacji używającej Tora mogą wyciekać
+ żądania DNS. (Domyślnie: 0)
+
+**WarnUnsafeSocks** **0**|**1**::
+ When this option is enabled, Tor will warn whenever a request is
+ received that only contains an IP address instead of a hostname. Allowing
+ applications to do DNS resolves themselves is usually a bad idea and
+ can leak your location to attackers. (Default: 1)
+
+**VirtualAddrNetwork** __Address__/__bits__::
+ When Tor needs to assign a virtual (unused) address because of a MAPADDRESS
+ command from the controller or the AutomapHostsOnResolve feature, Tor
+ picks an unassigned address from this range. (Default:
+ 127.192.0.0/10) +
+ +
+ When providing proxy server service to a network of computers using a tool
+ like dns-proxy-tor, change this address to "10.192.0.0/10" or
+ "172.16.0.0/12". The default **VirtualAddrNetwork** address range on a
+ properly configured machine will route to the loopback interface. For
+ local use, no change to the default VirtualAddrNetwork setting is needed.
+
+**AllowNonRFC953Hostnames** **0**|**1**::
+ Gdy ta opcja jest wyłączona, Tor blokuje nazwy hostów zawierające nieprawidłowe
+ znaki (jak @ i :) zamiast wysyłać je do węzła wyjściowego do rozwiązania.
+ To pomaga w uchwyceniu przypadkowych prób rozwiązania adresów itd.
+ (Domyślnie: 0)
+
+**AllowDotExit** **0**|**1**::
+ If enabled, we convert "www.google.com.foo.exit" addresses on the
+ SocksPort/TransPort/NATDPort into "www.google.com" addresses that exit from
+ the node "foo". Disabled by default since attacking websites and exit
+ relays can use it to manipulate your path selection. (Default: 0)
+
+**FastFirstHopPK** **0**|**1**::
+ Gdy ta opcja jest wyłączona, Tor używa kroku klucza publicznego do pierwszego
+ skoku w tworzeniu obwodów. Omijanie tego jest ogólnie bezpieczne, gdyż już
+ użyliśmy TLS do uwierzytelnienia przekaźnika i do nawiązania kluczy bezpiecznych w forwardowaniu.
+ Wyłączenie tej opcji spowalnia budowanie obwodów. +
+ +
+ Tor zawsze użyje kroku klucza publicznego do pierwszego skoku, gdy działa jako
+ przekaźnik, a nigdy nie użyje kroku klucza publicznego, jeśli nie zna
+ jeszcze klucza onion pierwszego skoku. (Domyślnie: 1)
+
+**TransPort** __PORT__::
+ Jeśli nie zero, włącza obsługę przezroczystego proxy na porcie __PORT__ (według umowy,
+ 9040). Wymaga obsługi przezroczystych proxy w systemie operacyjnym, jak pf w systemach BSD czy
+ IPTables w Linuksie. Jeśli planuje się używać Tora jako przezroczyste proxy dla
+ sieci, powinno się sprawdzić i zmienić VirtualAddrNetwork z ustawienia
+ domyślnego. Powinno się też ustawić opcję TransListenAddress dla
+ sieci, w której ruchu chcesz pośredniczyć. (Domyślnie: 0).
+
+**TransListenAddress** __IP__[:__PORT__]::
+ Przypisz się do tego adresu w celu nasłuchiwania na połączenia przezroczystego proxy. (Domyślnie:
+ 127.0.0.1). Jest to użyteczne do eksportowania przezroczystego serwera proxy dla
+ całej sieci.
+
+**NATDPort** __PORT__::
+ Pozwól starym wersjom ipfw (dołaczonym w starych wersjach FreeBSD, etc.)
+ na wysyłanie połączeń przez Tora, wykorzystując protokół NATD. Ta opcja jest
+ tylko dla osób, które nie mogą używać TransPort.
+
+**NATDListenAddress** __IP__[:__PORT__]::
+ Przypisz się do tego adresu w celu nasłuchiwania na połączenia NATD. (Domyślnie: 127.0.0.1).
+
+**AutomapHostsOnResolve** **0**|**1**::
+ Gdy ta opcja jest włączona, a otrzymamy żądanie rozwiązania adresu
+ kończącego się na jeden z przyrostków w **AutomapHostsSuffixes**, mapujemy nieużywany
+ adres wirtualny na ten adres, po czym zwracamy nowy adres wirtualny.
+ To jest przydatne do sprawiania, by adresy ".onion" działały z aplikacjami, które
+ rozwiązują adresy, a potem się do nich łączą. (Domyślnie: 0).
+
+**AutomapHostsSuffixes** __PRZYROSTEK__,__PRZYROSTEK__,__...__::
+ Rozdzielona przecinkami lista przyrostków do używania z **AutomapHostsOnResolve**.
+ Przyrostek "." jest równoważny do "wszystkie adresy." (Domyślnie: .exit,.onion).
+
+**DNSPort** __PORT__::
+ Gdy nie zero, Tor nasłuchuje żądań DNS przez UDP na tym porcie i rozwiązuje je
+ anonimowo. (Domyślnie: 0).
+
+**DNSListenAddress** __IP__[:__PORT__]::
+ Przypisz się do tego adresu w celu nasłuchiwania na połączenia DNS. (Domyślnie: 127.0.0.1).
+
+**ClientDNSRejectInternalAddresses** **0**|**1**::
+ Jeśli włączone, Tor nie wierzy żadnej otrzymanej anonimowo odpowiedzi DNS, która
+ mówi, że adres rozwiązuje się na adres wewnętrzny (jak 127.0.0.1 czy
+ 192.168.0.1). Ta opcja zapobiega niektórym atakom opartym na przeglądarkach; nie
+ wyłączaj jej, chyba że wiesz, co robisz. (Domyślnie: 1).
+
+**ClientRejectInternalAddresses** **0**|**1**::
+ If true, Tor does not try to fulfill requests to connect to an internal
+ address (like 127.0.0.1 or 192.168.0.1) __unless a exit node is
+ specifically requested__ (for example, via a .exit hostname, or a
+ controller request). (Default: 1).
+
+**DownloadExtraInfo** **0**|**1**::
+ Jeśli włączone, Tor pobiera i zachowuje dokumenty "extra-info". Te dokumenty
+ zawierają informacje o serwerach inne niż informacje w ich normalnych
+ deskryptorach routerów. Tor sam nie używa tych informacji do niczego;
+ by zaoszczędzić przepustowość, zostaw tę opcję wyłączoną. (Domyślnie: 0).
+
+**FallbackNetworkstatusFile** __NAZWAPLIKU__::
+ Jeśli Tor nie ma zachowanego pliku networkstatus, zaczyna używać tego.
+ Nawet jeśli jest on przestarzały, Tor dalej może z niego skorzystać do
+ poznania serwerów lustrzanych katalogów, by nie musiał obciążać
+ serwerów katalogowych. (Domyślnie: Żaden).
+
+**WarnPlaintextPorts** __port__,__port__,__...__::
+ Mówi Torowi, by wyświetlił ostrzeżenie, gdy tylko użytkownik próbuje nawiązać anonimowe
+ połączenie na jeden z tych portów. Ta opcja jest do ostrzegania użytkowników
+ o usługach, przy których ryzykują wysyłanie hasła otwartym tekstem. (Domyślnie:
+ 23,109,110,143).
+
+**RejectPlaintextPorts** __port__,__port__,__...__::
+ Jak WarnPlaintextPorts, ale zamiast otrzegania o używaniu ryzykownych portów, Tor
+ odmówi wykonania połaczenia. (Domyślnie: Żaden).
+
+**AllowSingleHopCircuits** **0**|**1**::
+ When this option is set, the attached Tor controller can use relays
+ that have the **AllowSingleHopExits** option turned on to build
+ one-hop Tor connections. (Default: 0)
+
+OPCJE SERWERA
+--------------
+
+Następujące opcje są przydatne tylko dla serwerów (to jest, gdy ORPort jest
+niezerowy):
+
+**Address** __address__::
+ The IP address or fully qualified domain name of this server (e.g.
+ moria.mit.edu) You can leave this unset, and Tor will guess your IP
+ address. This IP address is the one used to tell clients and other
+ servers where to find your Tor server; it doesn't affect the IP that your
+ Tor client binds to. To bind to a different address, use the
+ *ListenAddress and OutboundBindAddress options.
+
+**AllowSingleHopExits** **0**|**1**::
+ This option controls whether clients can use this server as a single hop
+ proxy. If set to 1, clients can use this server as an exit even if it is
+ the only hop in the circuit. Note that most clients will refuse to use
+ servers that set this option, since most clients have
+ ExcludeSingleHopRelays set. (Default: 0)
+
+**AssumeReachable** **0**|**1**::
+ Ta opcja jest używana w czasie startu nowej sici Tora. Gdy ustawiona na 1,
+ nie wykonuj tesstów własnej osiągalności; po prostu wyślij swój deskryptor serwera
+ natychmiast. Jeśli **AuthoritativeDirectory** też jest włączone, ta opcja
+ instruuje serwer katalogowy, by też pominął zdalne test osiągalności i podaj
+ wszystkie połączone serwery jako działające.
+
+**BridgeRelay** **0**|**1**::
+ Sets the relay to act as a "bridge" with respect to relaying connections
+ from bridge users to the Tor network. It mainly causes Tor to publish a
+ server descriptor to the bridge database, rather than publishing a relay
+ descriptor to the public directory authorities.
+
+**ContactInfo** __adres_email__::
+ Informacje o kontakt z administratorem dla tego serwera. Ta linia może być pobrana
+ przez spamerów, więc możesz ukryć fakt, że jest to
+ adres email.
+
+**ExitPolicy** __polityka__,__polityka__,__...__::
+ Ustaw politykę wyjścia dla tego serwera. Każda polityka ma postać
+ "**accept**|**reject** __ADRES__[/__MASKA__][:__PORT__]". Jeśli /__MASKA__ zostanie
+ pominięta, ta polityka ma zastosowanietylko do podanego hosta. Zamiast podawać
+ hosta czy sieć, mozesz też użyć "\*", co oznacza wszystkie adresy (0.0.0.0/0).
+ __PORT__ może być pojedynczym numerem portu, przediałem portów
+ "__PORT_OD__-__PORT_DO__", lub "\*". Jeśli ominięto __PORT__, oznacza to
+ "\*". +
+ +
+ Na przykład, "accept 18.7.22.69:\*,reject 18.0.0.0/8:\*,accept \*:\*" odrzuciłoby
+ dowolny ruch skierowany do MIT z wyjątkiem web.mit.edu, i przyjęłoby
+ cokolwiek innego. +
+ +
+ Aby określić wszystkie wewnętrzne i sieci lokalne (łącznie z 0.0.0.0/8,
+ 169.254.0.0/16, 127.0.0.0/8, 192.168.0.0/16, 10.0.0.0/8 i
+ 172.16.0.0/12), możesz użyć aliasu "private" zamiast adresu.
+ Te adresy są odrzucane domyślnie (na początku Twojej polityki
+ wyjścia), razem z Twoim publicznym adresem IP, chyba że ustawisz opcję
+ ExitPolicyRejectPrivate na 0. Na przykład, gdy już to zrobisz, możesz
+ zezwolić na poąłczenia HTTP do 127.0.0.1 i blokować wszystkie inne połączenia do
+ sieci lokalnych poprzez "accept 127.0.0.1:80,reject private:\*", choć to
+ może zezwolić na poąłczenia do Twojego własnego komputera, które są adresowane na jego
+ publiczny (zewnętrzny) adres IP. Spójrz do RFC 1918 i RFC 3330 po więcej szczegółów
+ odnośnie wewnętrznej i zarezerwowanej przestrzeni adresów IP. +
+ +
+ Ta dyrektywa może być podana wiele razy, więc nie musisz umieszczać wszystkiego
+ w jednej linii. +
+ +
+ Polityki są brane pod uwagę od pierwszej do ostatniej, a pierwsza pasująca wygrywa. Jeśli chcesz
+ \_zmienić_ domyślną politykę wyjścia, zakończ swoją politykę albo poprzez
+ reject \*:* albo accept \*:*. W innym przypadku, \_powiększasz_
+ (dodajesz do) domyślną politykę wyjścia. Domyślna polityka wyjścia to: +
+
+ reject *:25
+ reject *:119
+ reject *:135-139
+ reject *:445
+ reject *:563
+ reject *:1214
+ reject *:4661-4666
+ reject *:6346-6429
+ reject *:6699
+ reject *:6881-6999
+ accept *:*
+
+**ExitPolicyRejectPrivate** **0**|**1**::
+ Odrzucaj wszystkie prywatne (lokalne) sieci, razem z Twoim publicznym adresem IP,
+ na początku Twojej polityki wyjścia. Patrz wyżej o ExitPolicy.
+ (Domyślnie: 1)
+
+**MaxOnionsPending** __NUM__::
+ Jeśli masz więcej niż ta liczba danych onionskin w kolejce do deszyfracji, odrzucaj
+ nowe. (Domyślnie: 100)
+
+**MyFamily** __węzeł__,__węzeł__,__...__::
+ Zadeklaruj, że ten serwer Tora jest kontrolowany lub zarządzany przez grupę lub
+ organizację identyczną lub podobną do tej z podanych serwerów, zdefiniowanych przez
+ ich odciski palców tożsamości lub nazwy. Gdy dwa serwery zadeklarują, że są w
+ tej samej \'rodzinie', klienci Tora nie będą ich używać w tym
+ samym obwodzie. (Każdy serwer musi podać tylko pozostałe w swojej
+ rodzinie; nie musi podawać siebie, ale to nie zaszkodzi.)
+
+**Nickname** __nazwa__::
+ Ustaw nazwę serwera na \'nazwa'. Nazwy muszą mieć między 1 a 19
+ znaków włącznie, i muszą zawierać tylko znaki z zestawu [a-zA-Z0-9].
+
+**NumCPUs** __num__::
+ How many processes to use at once for decrypting onionskins and other
+ parallelizable operations. If this is set to 0, Tor will try to detect
+ how many CPUs you have, defaulting to 1 if it can't tell. (Default: 0)
+
+**ORPort** __PORT__::
+ Zgłoś ten port do nasłuchiwania połączeń od klientów Tora i serwerów.
+
+**ORListenAddress** __IP__[:__PORT__]::
+ Przypisz się do teo adresu do nasłuchiwania połączeń od klientów Tora i
+ serwerów. Jeśli podasz port, przypnij się do tego portu zamiast do tego
+ podanego w ORPort. (Domyślnie: 0.0.0.0) Ta dyrektywa może być podana
+ wiele razy, by przypisać się do wielu adresów/portów.
+
+**PortForwarding** **0**|**1**::
+ Attempt to automatically forward the DirPort and ORPort on a NAT router
+ connecting this Tor server to the Internet. If set, Tor will try both
+ NAT-PMP (common on Apple routers) and UPnP (common on routers from other
+ manufacturers). (Default: 0)
+
+**PortForwardingHelper** __filename__|__pathname__::
+ If PortForwarding is set, use this executable to configure the forwarding.
+ If set to a filename, the system path will be searched for the executable.
+ If set to a path, only the specified path will be executed.
+ (Default: tor-fw-helper)
+
+**PublishServerDescriptor** **0**|**1**|**v1**|**v2**|**v3**|**bridge**,**...**::
+ This option specifies which descriptors Tor will publish when acting as
+ a relay. You can
+ choose multiple arguments, separated by commas.
+ +
+ If this option is set to 0, Tor will not publish its
+ descriptors to any directories. (This is useful if you're testing
+ out your server, or if you're using a Tor controller that handles directory
+ publishing for you.) Otherwise, Tor will publish its descriptors of all
+ type(s) specified. The default is "1",
+ which means "if running as a server, publish the
+ appropriate descriptors to the authorities".
+
+**ShutdownWaitLength** __NUM__::
+ Gdy otrzymamy SIGINT i jesteśmy serwerem, zaczynamy się wyłączać:
+ zamykamy procesy nasłuchujące i zaczynamy odrzucać nowe obwody. Po **NUM**
+ sekundach, wychodzimy. Jeśli dostaniemy drugi SIGINT, wychodzimy
+ natychmiast. (Domyślnie: 30 sekund)
+
+**HeartbeatPeriod** __N__ **minutes**|**hours**|**days**|**weeks**::
+ Log a heartbeat message every **HeartbeatPeriod** seconds. This is
+ a log level __info__ message, designed to let you know your Tor
+ server is still alive and doing useful things. Settings this
+ to 0 will disable the heartbeat. (Default: 6 hours)
+
+**AccountingMax** __N__ **bytes**|**KB**|**MB**|**GB**|**TB**::
+ Never send more than the specified number of bytes in a given accounting
+ period, or receive more than that number in the period. For example, with
+ AccountingMax set to 1 GB, a server could send 900 MB and receive 800 MB
+ and continue running. It will only hibernate once one of the two reaches 1
+ GB. When the number of bytes gets low, Tor will stop accepting new
+ connections and circuits. When the number of bytes
+ is exhausted, Tor will hibernate until some
+ time in the next accounting period. To prevent all servers from waking at
+ the same time, Tor will also wait until a random point in each period
+ before waking up. If you have bandwidth cost issues, enabling hibernation
+ is preferable to setting a low bandwidth, since it provides users with a
+ collection of fast servers that are up some of the time, which is more
+ useful than a set of slow servers that are always "available".
+
+**AccountingStart** **day**|**week**|**month** [__dzień__] __GG:MM__::
+ Określa, jak długo trwa okres liczenia. Jeśli podano **month**, każdy
+ okres liczenia trwa od chwili __GG:MM__ w __dzień__ dniu jednego
+ miesiąca do tego samego dnia i czasu następnego miesiąca. (Dzień musi być między 1 a
+ 28.) Jeśli podano **week**, każdy okres liczenia trwa od chwili __GG:MM__
+ dnia __dzień__ jednego tygodnia do tego samego dnia i czasu następnego tygodnia,
+ gdzie poniedziałek to dzień 1, a niedziela to dzień 7. Jeśli podano **day**, każdy
+ okres liczenia trwa od chwili __GG:MM__ każdego dnia do tego samego czasu dnia
+ następnego. Wszystkie czasy są lokalne i podane w formacie 24-godzinnym. (Domyślna wartość to
+ "month 1 0:00".)
+
+**RefuseUnknownExits** **0**|**1**|**auto**::
+ Prevent nodes that don't appear in the consensus from exiting using this
+ relay. If the option is 1, we always block exit attempts from such
+ nodes; if it's 0, we never do, and if the option is "auto", then we do
+ whatever the authorities suggest in the consensus. (Defaults to auto.)
+
+**ServerDNSResolvConfFile** __nazwapliku__::
+ Zmienia domyślną konfigurację DNS na konfigurację w pliku
+ __nazwapliku__. Format plik jest taki sam, jak format standardowego Uniksowego
+ pliku "**resolv.conf**"(7). Ta opcja, jak wszystkie inne opcje ServerDNS,
+ wpływa tylko na rozwiązywanie nazw, które Twój serwer wykonuje w imieniu klientów.
+ (Domyślna wartość to używanie systemowej konfiguracji DNS.)
+
+**ServerDNSAllowBrokenConfig** **0**|**1**::
+ Jeśli ta opcja jest ustawiona na fałsz, Tor wychodzi natychmiast, gdy są problemy
+ w parsowaniu systemowej konfiguracji DNS lub w łączeniu się z serwerami nazw.
+ W innym przypadku, Tor kontynuuje okresowo sprawdzać systemowe serwery nazw aż
+ w końcu mu się uda. (Domyślna wartość to "1".)
+
+**ServerDNSSearchDomains** **0**|**1**::
+ Jeśli ustawione na 1, będziemy szukać adresów w lokalnej domenie przeszukiwania.
+ Na przykład, jesli system jest skonfigurowany tak, by wierzył, że jest w
+ "example.com", a klient próbuje połaczyć się z "www", klient zostanie
+ połączony z "www.example.com". Ta opcja wpływa tylko na rozwiązywanie nazw, które
+ Twój serwer wykonuje w imieniu klientów. (Domyślna wartość to "0".)
+
+**ServerDNSDetectHijacking** **0**|**1**::
+ Gdy ta opcja jest ustawiona na 1, będziemy okresowo sprawdzać,
+ czy nasze lokalne serwery nazw zostały skonfigurowane, by przekierowywać nieudane żądania DNS
+ (zwykle do serwisu z reklamami). Jeśli są, będziemy próbować poprawić
+ to. Ta opcja wpływa tylko na rozwiązywanie nazw, które Twój serwer wykonuje
+ w imieniu klientów. (Domyślna wartość to "1".)
+
+**ServerDNSTestAddresses** __adres__,__adres__,__...__::
+ Gdy wykrywamy przekierowanie nieudanych żądań DNS, upewniamy się, że te __prawidłowe__ adresy
+ nie są przekierowywane. Jeśli są, nasz DNS jest kompletnie bezużyteczny,
+ i resetujemy naszą politykę na "reject *:*". Ta opcja wpływa tylko
+ na rozwiązywanie nazw, które Twój serwer wykonuje w imieniu klientów. (Domyślna wartość to
+ "www.google.com, www.mit.edu, www.yahoo.com, www.slashdot.org".)
+
+**ServerDNSAllowNonRFC953Hostnames** **0**|**1**::
+ Gdy ta opcja jest wyłączona, Tor nie próbuje rozwiązywać nazw
+ zawierających nieprawidłowe znaki (jak @ i :) zamiast wysyłać je do węzła
+ wyjściowego do rozwiązania. To pomaga złapać przypadkowe próby rozwiązywania
+ URLów itd. Ta opcja wpływa tylko na rozwiązywanie nazw, które Twój serwer wykonuje
+ w imieniu klientów. (Domyślnie: 0)
+
+**BridgeRecordUsageByCountry** **0**|**1**::
+ Gdy ta opcja jest włączona i BridgeRelay też jest włączone, a my mamy
+ dane GeoIP, Tor przechowuje licznik, według krajów, ile adresów
+ klientów skontaktowało się z nim, by to mogło pomóc serwerom mostów zgadnąć,
+ które kraje zablokowały dostęp do niego. (Domyślnie: 1)
+
+**ServerDNSRandomizeCase** **0**|**1**::
+ Gdy ta opcja jest ustawiona, Tor ustawia wielkość każdego znaku losowo w
+ wychodzących żądaniach DNS i sprawdza, czy wielkość zgadza się w odpowiedziach DNS.
+ Ta tak zwana "sztuczka 0x20" pomaga obronić się przed niektórymi atakami zatruwania DNS.
+ Po więcej informacji spójrz do "Increased DNS Forgery Resistance through
+ 0x20-Bit Encoding". Ta opcja wpływa tylko na rozwiązywanie nazw, które Twój serwer
+ wykonuje w imieniu klientów. (Domyślnie: 1)
+
+**GeoIPFile** __nazwapliku__::
+ Plik zawierajacy dane GeoIP, do używania z BridgeRecordUsageByCountry.
+
+**CellStatistics** **0**|**1**::
+ When this option is enabled, Tor writes statistics on the mean time that
+ cells spend in circuit queues to disk every 24 hours. (Default: 0)
+
+**DirReqStatistics** **0**|**1**::
+ When this option is enabled, Tor writes statistics on the number and
+ response time of network status requests to disk every 24 hours.
+ (Default: 0)
+
+**EntryStatistics** **0**|**1**::
+ When this option is enabled, Tor writes statistics on the number of
+ directly connecting clients to disk every 24 hours. (Default: 0)
+
+**ExitPortStatistics** **0**|**1**::
+ When this option is enabled, Tor writes statistics on the number of relayed
+ bytes and opened stream per exit port to disk every 24 hours. (Default: 0)
+
+**ConnDirectionStatistics** **0**|**1**::
+ When this option is enabled, Tor writes statistics on the bidirectional use
+ of connections to disk every 24 hours. (Default: 0)
+
+**ExtraInfoStatistics** **0**|**1**::
+ Gdy ta opcja jest włączona, Tor zawiera uprzednio zebrane statystyki w
+ swoich dokumentach extra-info, które wysyła do serwerów katalogowych.
+ (Domyślnie: 0)
+
+OPCJE SERWERA KATALOGOWEGO
+------------------------
+
+Następujace opcje są przydatne tylko dla serwerów katalogowych (to jest, gdy
+DirPort jest niezerowy):
+
+**AuthoritativeDirectory** **0**|**1**::
+ Gdy ta opcja jest ustawiona na 1, Tor działa jako autorytatywny serwer
+ katalogowy. Zamiast zachowywać katalog, generuje własną listę
+ dobrych serwerów, podpisuje ją, i wysyła ją do klientów. Jeśli klienci nie mają
+ Tego serwera zapisanego jako zaufany katalog, prawdopodobnie nie chcesz
+ ustawiać tej opcji. Prosimy skoordynować się z innymi administratorami na
+ tor-ops(a)torproject.org, jeśli Twoim zdaniem Twój serwer powinien być katalogiem.
+
+**DirPortFrontPage** __NAZWAPLIKU__::
+ Gdy ta opcja jest ustawiona, bierze plik HTML i publikuje go jako "/" na
+ porcie DirPort. Teraz operatorzy serwerów mogą dać dokument wypracia się odpowiedzialności bez potrzeby
+ uruchamiania osobnego serwer www. Przykładowy dokument jest w
+ contrib/tor-exit-notice.html.
+
+**V1AuthoritativeDirectory** **0**|**1**::
+ Gdy ta opcja jest ustawiona razem z **AuthoritativeDirectory**, Tor
+ generuje katalog w wersji 1 i dokument działających routerów (dla starych
+ klientów Tora do wersji 0.1.0.x).
+
+**V2AuthoritativeDirectory** **0**|**1**::
+ Gdy ta opcja jest ustawiona razem z **AuthoritativeDirectory**, Tor
+ generuje statusy sieci w wersji 2 i serwuje deskryptory itd. jak
+ opisano w doc/spec/dir-spec-v2.txt (dla klientów i serwerów Tora w wersjach
+ 0.1.1.x i 0.1.2.x).
+
+**V3AuthoritativeDirectory** **0**|**1**::
+ Gdy ta opcja jest ustawiona razem z **AuthoritativeDirectory**, Tor
+ generuje statusy sieci w wersji 3 i serwuje deskryptory itd. jak
+ opisano w doc/spec/dir-spec.txt (dla klientów i serwerów Tora w wersjach co
+ najmniej 0.2.0.x).
+
+**VersioningAuthoritativeDirectory** **0**|**1**::
+ Gdy ta opcja jest ustawiona na 1, Tor dodaje informacje, które wersje Tora
+ są bezpieczne do używania, w publikowanym katalogu. Każdy serwer autorytatywny
+ w wersji 1 jest automatycznie wersjonującym serwerem autorytatywnym; serwery
+ autorytatywne w wersji 2 dają te informacje opcjonalnie. Zobacz **RecommendedVersions**,
+ **RecommendedClientVersions** i **RecommendedServerVersions**.
+
+**NamingAuthoritativeDirectory** **0**|**1**::
+ Gdy ta opcja jest ustawiona na 1, ten serwer zgłasza, że ma
+ opinie o powiązaniach nazwa-odcisk palca. Będzie dołączał te
+ opinie w publikowanych przez siebie stronach o statusie sieci, listując serwery z
+ flagą "Named", jeśli prawidłowe powiązanie między nazwą i odciskiem palca
+ zostało zarejestrowane na serwerze. Nazywające serwery katalogowe odmówią przyjęcia
+ lub publikacji deskryptora, który przeczy zarejestrowanemu powiązaniu. Zobacz
+ **approved-routers** w sekcji **PLIKI** poniżej.
+
+**HSAuthoritativeDir** **0**|**1**::
+ When this option is set in addition to **AuthoritativeDirectory**, Tor also
+ accepts and serves v0 hidden service descriptors,
+ which are produced and used by Tor 0.2.1.x and older. (Default: 0)
+
+**HidServDirectoryV2** **0**|**1**::
+ Gdy ta opcja jest ustawiona, Tor przyjmuje i serwuje deskryptory usług ukrytych
+ w wersji 2. Ustawienie DirPort nie jest do tego wymagane, gdyż klienci
+ łączą się domyślnie przez ORPort. (Domyślnie: 1)
+
+**BridgeAuthoritativeDir** **0**|**1**::
+ Gdy ta opcja jest ustawiona razem z **AuthoritativeDirectory**, Tor
+ przyjmuje i serwuje deskryptory routerów, ale zapisuje i serwuje główne
+ dokumenty statusu sieci zamiast generować własny. (Domyślnie: 0)
+
+**MinUptimeHidServDirectoryV2** __N__ **seconds**|**minutes**|**hours**|**days**|**weeks**::
+ Minimalny czas działania katalogu usług ukrytych w wersji 2, by być zaakceptowanym przez
+ autorytatywne serwery katalogowe. (Domyślnie: 24 godziny)
+
+**DirPort** __PORT__::
+ Zgłaszaj usługę katalogową na tym porcie.
+
+**DirListenAddress** __IP__[:__PORT__]::
+ Przypisz usługę katalogową do tego adresu. Jeśli podasz port, przypisz do
+ tego portu zamiast do tego podanego w DirPort. (Domyślnie: 0.0.0.0)
+ Ta dyrektywa może być podana wiele razy, by przypisać się do wielu
+ adresów/portów.
+
+**DirPolicy** __polityka__,__polityka__,__...__::
+ Ustaw politykę wejściową tego serwera, by ograniczyć to, kto może połączyć się z
+ portami katalogowymi. Polityki mają ten sam format co polityki wyjścia powyżej.
+
+OPCJE AUTORATYWNEGO SERWERA KATALOGOWEGO
+----------------------------------
+
+**RecommendedVersions** __NAPIS__::
+ NAPIS jest rozdzieloną przecinkami listą wersji Tora obecnie uznawanych za
+ bezpieczne. Lista jest włączana w każdym katalogu, a węzły pobierające ten
+ katalog dowiadują się, czy muszą się zaktualizować. Ta opcja może pojawić się
+ wiele razy: wartości z różnych linii są łączone razem. Jeśli
+ to jest ustawione, **VersioningAuthoritativeDirectory** też powinno być ustawione.
+
+**RecommendedClientVersions** __NAPIS__::
+ NAPIS jest rozdzieloną przecinkami listą wersji Tora obecnie uznawanych za
+ bezpieczne dla klientów. Ta informacja jest dołączana do katalogów
+ wersji 2. Jeśli to nie jest ustawione, brana jest wartość **RecommendedVersions**.
+ Gdy to jest ustawione, **VersioningAuthoritativeDirectory** też
+ powinno być ustawione.
+
+**RecommendedServerVersions** __NAPIS__::
+ NAPIS jest rozdzieloną przecinkami listą wersji Tora obecnie uznawanych za
+ bezpieczne dla serwerów. Ta informacja jest dołączana do katalogów
+ wersji 2. Jeśli to nie jest ustawione, brana jest wartość **RecommendedVersions**.
+ Gdy to jest ustawione, **VersioningAuthoritativeDirectory** też
+ powinno być ustawione.
+
+**ConsensusParams** __NAPIS__::
+ NAPIS jest rozdzieloną spacjami listą par klucz=wartość, które Tor dołączy
+ w linii "params" swojego głosu networkstatus.
+
+**DirAllowPrivateAddresses** **0**|**1**::
+ Gdy ustawione na 1, Tor będzie przyjmował reskryptory routerów z dowolnymi elemenatmi
+ "Address". W innym przypadku, jeśli adres nie jest adresem IP lub jest prywatnym adresem
+ IP, Tor odrzuci deskryptor routera. Domyślna wartość to 0.
+
+**AuthDirBadDir** __WzorzecAdresów...__::
+ Tylko dla autorytatywnych serwerów katalogowych. Zestaw wzorców adresów dla serwerów, który
+ będzie podany jako złe serwery katalogowe w każdym dokumencie statusu sieci
+ wydanym przez ten serwer, jeśli ustawiono **AuthDirListBadDirs**.
+
+**AuthDirBadExit** __WzorzecAdresów...__::
+ Tylko dla autorytatywnych serwerów katalogowych. Zestaw wzorców adresów dla serwerów, który
+ będzie podany jako złe serwery wyjściowe w każdym dokumencie statusu sieci
+wydanym
+ przez ten serwer, jeśli ustawiono **AuthDirListBadExits**.
+
+**AuthDirInvalid** __WzorzecAdresów...__::
+ Tylko dla autorytatywnych serwerów katalogowych. Zestaw wzorców adresów dla serwerów, który
+ nigdy nie będzie podany jako prawidłowy ("valid") w każdym dokumencie statusu sieci
+wydanym
+ przez ten serwer.
+
+**AuthDirReject** __WzorzecAdresów__...::
+ Tylko dla autorytatywnych serwerów katalogowych. Zestaw wzorców adresów dla serwerów, który
+ nigdy nie będzie podany w każdym dokumencie statusu sieci
+ wydanym przez ten serwer lub przyjęty jako adres OR w jakimś deskryptorze
+ wysłanym do publikacji przez ten serwer.
+
+**AuthDirListBadDirs** **0**|**1**::
+ Tylko dla autorytatywnych serwerów katalogowych. Gdy ustawione na 1, ten serwer ma jakieś
+ opinie o tym, które węzły są nieprzydatne jako pamięci podręczne katalogów. (Nie ustawiaj
+ tego na 1, chyba że planujesz podawać niefunkcjonalne katalogi jako złe;
+ w innym przypadku efektywnie głosujesz na korzyść każdego zadeklarowanego
+ katalogu.)
+
+**AuthDirListBadExits** **0**|**1**::
+ Tylko dla autorytatywnych serwerów katalogowych. Gdy ustawione na 1, ten serwer ma jakieś
+ opinie o tym, które węzły są nieprzydatne jako węzły wyjściowe. (Nie ustawiaj tegona
+ 1, chyba że planujesz podawać niefunkcjonalne serweryu wyjściowe jako złe; w innym przypadku
+ efektywnie głosujesz na korzyść każdego zadeklarowanego serwera wyjściowego.)
+
+**AuthDirRejectUnlisted** **0**|**1**::
+ Tylko dla autorytatywnych serwerów katalogowych. Gdy ustawione na 1, serwer katalogowy odrzuca
+ wszystkie przysłane deskryptory serwerów, które nie są jawnie podane w
+ pliku z odciskami palców. To działa jak "guzik wyłączenia", gdy zostaniemy zaatakowani atakiem
+ Sybil. (Domyślnie: 0)
+
+**AuthDirMaxServersPerAddr** __NUM__::
+ Tylko dla autorytatywnych serwerów katalogowych. Maksymalna liczba serwerów, które będziemy
+ podawać jako akceptowalne na jednym adresie IP. Ustaw na "0", by uzyskać "bez ograniczeń".
+ (Domyślnie: 2)
+
+**AuthDirMaxServersPerAuthAddr** __NUM__::
+ Tylko dla autorytatywnych serwerów katalogowych. Jak AuthDirMaxServersPerAddr, ale ma zastosowanie
+ dla adresów współdzielonych z serwerami katalogowymi. (Domyślnie: 5)
+
+**V3AuthVotingInterval** __N__ **minutes**|**hours**::
+ Tylko dla autorytatywnych serwerów katalogowych w wersji 3. Ustawia preferowany przez serwer interwał
+ głosowania. Głosowanie odbędzie się __realnie__ w chwili wybranej
+ przez konsensus z preferowanych interwałów wszystkich serwerów. Ten okres
+ POWINIEN dzielić się równo w dniu. (Domyślnie: 1 godzina)
+
+**V3AuthVoteDelay** __N__ **minutes**|**hours**::
+ Tylko dla autorytatywnych serwerów katalogowych w wersji 3. Ustawia preferowane przez serwer opóźnienie
+ między opublikowaniem swojego głosu a założeniem, że otrzymał głosy ze wszystkich innych
+ serwerów. Realny czas używany nie jest preferowanym czasem
+ serwera, ale konsensusem między wszystkimi preferencjami. (Domyślnie: 5 minut.)
+
+**V3AuthDistDelay** __N__ **minutes**|**hours**::
+ Tylko dla autorytatywnych serwerów katalogowych w wersji 3. Ustawia preferowane przez serwer opóźnienie
+ między opublikowaniem swojego konsensusu i podpisu a założeniem, że otrzymał wszystkie podpisy
+ ze wszystkich innych serwerów. Realny czas używany
+ nie jest preferowanym czasem serwera, ale konsensusem między wszystkimi preferencjami.
+ (Domyślnie: 5 minut.)
+
+**V3AuthNIntervalsValid** __NUM__::
+ Tylko dla autorytatywnych serwerów katalogowych w wersji 3. Ustawia liczbę VotingIntervals,
+ przez które powinien konsensus być ważny. Wybieranie wysokich liczb
+ zwiększa ryzyko podziału sieci; wybieranie niskich liczb zwiększa ruch
+ w katalogach. Realna liczba wykorzystywanych interwałów nie jest preferowaną
+ liczbą serwera, ale konsensusem między wszystkimi preferencjami. Musi wynosić co
+ najmniej 2. (Domyślnie: 3.)
+
+**V3BandwidthsFile** __FILENAME__::
+ V3 authoritative directories only. Configures the location of the
+ bandiwdth-authority generated file storing information on relays' measured
+ bandwidth capacities. (Default: unset.)
+
+OPCJE USŁUG UKRYTYCH
+----------------------
+
+Następujace opcje są używane do konfigurowania usługi ukrytej.
+
+**HiddenServiceDir** __KATALOG__::
+ Przechowuj pliki danych usługi w katalogu KATALOG. Każda usługa ukryta
+ musi mieć oddzielny katalog. Możesz używać tej opcji wiele razy, by
+ określić wiele usług.
+
+**HiddenServicePort** __WIRTPORT__ [__CEL__]::
+ Konfiguruje port wirtualny WIRTPORT dla usługi ukrytej. Możesz użyć tej
+ opcji wiele razy; każdym razem ma zastosowanie do usługi używającej ostatniej
+ linii hiddenservicedir. Domyślnie ta opcja mapuje wirtualny port no
+ ten sam port na 127.0.0.1. Możesz zmienić port docelowy, adres, lub
+ oba podając cel w postaci adresu, portu lub pary adres:port. Możesz też mieć
+ wiele linii z tym samym portem WIRTPORT: gdy użytkownik połączy się z tym
+ portem WIRTPORT, jeden z CELów z tych linii zostanie wybrany losowo.
+
+**PublishHidServDescriptors** **0**|**1**::
+ Jeśli ustawione na 0, Tor będzie prowadził wszystkie skonfigurowane usługi ukryte, ale nie
+ wyśle ich do katalogu punktów spotkań. Ta opcja jest przydatna tylko jeśli
+ używasz kontrolera Tora, który za Ciebie zajmuje się publikowaniem usług ukrytych.
+ (Domyślnie: 1)
+
+**HiddenServiceVersion** __wersja__,__wersja__,__...__::
+ Lista wersji deskryptorów usług spotkań do publikacji dla usługi
+ ukrytej. W chwili obecnej obsługiwana jest tylko wersja 2. (Domyślnie: 2)
+
+**HiddenServiceAuthorizeClient** __typ-uwierz__ __nazwa-klienta__,__nazwa-klienta__,__...__::
+ Jeśli skonfigurowane, usługa ukryta jest dostępna tylko dla uwierzytelnionych klientów.
+ Parametr typ-uwierz może być albo \'basic' dla protokołu uwierzytelniania
+ ogólnego przeznaczenia lub \'stealth' dla mniej skalowalnego protokołu, który także
+ ukrywa działalność usługi ukrytej przed nieupoważnionymi klientami. Tylko podani tu klienci mają
+ dostęp do usługi ukrytej. Prawidłowe nazwy klientów
+ mają od 1 do 19 znaków z zestawu A-Za-z0-9+-_ (bez
+ spacji). Jeśli ta opcja jest ustawiona, usługa ukryta nie jest już dostępna dla
+ klientów bez upoważnienia. Wygenerowane dane upoważniające można znaleźć
+ w pliku hostname. Klienci muszą umieścić te dane upoważniające w
+ swoich plikach konfiguracyjnych, używając **HidServAuth**.
+
+**RendPostPeriod** __N__ **seconds**|**minutes**|**hours**|**days**|**weeks**::
+ Every time the specified period elapses, Tor uploads any rendezvous
+ service descriptors to the directory servers. This information is also
+ uploaded whenever it changes. (Default: 1 hour)
+
+OPCJE TESTOWANIA SIECI
+-----------------------
+
+Następujące opcje są używane do uruchamiania testowej sieci Tora.
+
+**TestingTorNetwork** **0**|**1**::
+ Gdy ustawione na 1, Tor zmienia domyślne wartości poniższych opcji konfiguracji,
+ by łatwiej było uruchomić testową sieć Tora. Może być ustawiona tylko gdyf
+ ustawiono niedomyślny zestaw serwerów DirServers. Nie można wyłączyć w czasie działania Tora.
+ (Domyślnie: 0) +
+
+ ServerDNSAllowBrokenConfig 1
+ DirAllowPrivateAddresses 1
+ EnforceDistinctSubnets 0
+ AssumeReachable 1
+ AuthDirMaxServersPerAddr 0
+ AuthDirMaxServersPerAuthAddr 0
+ ClientDNSRejectInternalAddresses 0
+ ClientRejectInternalAddresses 0
+ ExitPolicyRejectPrivate 0
+ V3AuthVotingInterval 5 minutes
+ V3AuthVoteDelay 20 seconds
+ V3AuthDistDelay 20 seconds
+ MinUptimeHidServDirectoryV2 0 seconds
+ TestingV3AuthInitialVotingInterval 5 minutes
+ TestingV3AuthInitialVoteDelay 20 seconds
+ TestingV3AuthInitialDistDelay 20 seconds
+ TestingAuthDirTimeToLearnReachability 0 minutes
+ TestingEstimatedDescriptorPropagationTime 0 minutes
+
+**TestingV3AuthInitialVotingInterval** __N__ **minutes**|**hours**::
+ Jak V3AuthVotingInterval, ale dla wstępnego głosowania przed stworzeniem
+ pierwszego konsensusu. Zmiana tego wymaga, by było ustawione
+ **TestingTorNetwork**. (Domyślnie: 30 minut)
+
+**TestingV3AuthInitialVoteDelay** __N__ **minutes**|**hours**::
+ Jak TestingV3AuthInitialVoteDelay, ale dla wstępnego głosowania przed stworzeniem
+ pierwszego konsensusu. Zmiana tego wymaga, by było ustawione
+ **TestingTorNetwork**. (Domyślnie: 5 minut)
+
+**TestingV3AuthInitialDistDelay** __N__ **minutes**|**hours**::
+ Jak TestingV3AuthInitialDistDelay, ale dla wstępnego głosowania przed stworzeniem
+ pierwszego konsensusu. Zmiana tego wymaga, by było ustawione
+ **TestingTorNetwork**. (Domyślnie: 5 minut)
+
+**TestingAuthDirTimeToLearnReachability** __N__ **minutes**|**hours**::
+ Po uruchomieniu serwera autoratywnego, nie rób założeń o tym, czy routery
+ działają, zanim nie upłynie ten czas. Zmiana tego wymaga, by było ustawione
+ **TestingTorNetwork**. (Domyślnie: 30 minut)
+
+**TestingEstimatedDescriptorPropagationTime** __N__ **minutes**|**hours**::
+ Klienci próbują pobierać deskryptory routerów z pamięci podręcznej katalogów po tym
+ czasie. Zmiana tego wymaga, by było ustawione **TestingTorNetwork**. (Domyślnie:
+ 10 minut)
+
+SYGNAŁY
+-------
+
+Tor łapie następujące sygnały:
+
+**SIGTERM**::
+ Tor złapie go, wyczyści stan i zsynchronizuje się na dysk, jeśli potrzeba, po czym wyjdzie.
+
+**SIGINT**::
+ Klienci Tora zachowują się jak z SIGTERM; ale serwery Tora wykonają kontrolowane,
+ powolne zamknięcie, zamykając procesy nasłuchujące i czekając 30 sekund przed wyjściem.
+ (Opóźnienie może być ustawione opcją konfiguracji ShutdownWaitLength.)
+
+**SIGHUP**::
+ The signal instructs Tor to reload its configuration (including closing and
+ reopening logs), and kill and restart its helper processes if applicable.
+
+**SIGUSR1**::
+ Zapisz statystyki o bieżących połączeniach, dawnych połaczeniach i przepustowości.
+
+**SIGUSR2**::
+ Przełącz wszystkie logi na poziom logowania debug. Możesz powrócić do poprzednich poziomów poprzez
+ wysłanie SIGHUP.
+
+**SIGCHLD**::
+ Tor otrzymuje ten sygnał, gdy jeden z jego procesów pomocniczych się zakończył, by mógł
+ posprzątać.
+
+**SIGPIPE**::
+ Tor łapie ten sygnał i ignoruje go.
+
+**SIGXFSZ**::
+ Jeśli ten sygnał istnieje na Twojej platformie, Tor łapie go i ignoruje.
+
+PLIKI
+-----
+
+**@CONFDIR@/torrc**::
+ Plik konfiguracji, zawierający pary "opcja wartość".
+
+**@LOCALSTATEDIR@/lib/tor/**::
+ Proces Tora zapisuje tu klucze i inne dane.
+
+__DataDirectory__**/cached-status/**::
+ Ostanio pobrany dokument statusu sieci dla kazdego serwera katalogowego.
+ Każdy plik zawiera jeden taki dokument; nazwy plików są szesnastkowymi
+ odciskami palców kluczy tożsamosci serwerów katalogowych.
+
+__DataDirectory__**/cached-descriptors** i **cached-descriptors.new**::
+ Te pliki zawierają pobrane statusy routerów. Niektóre routery mogą pojawić się więcej
+ niż raz; jeśli tak jest, używany jest ostatnio opublikowany deskryptor. Linie
+ zaczynające się znakami @ są adnotacjami zawierającymi więcej informacji o
+ danym routerze. Plik ".new" jest dziennikiem, do którego można tylko dopisywać; gdy urośnie
+ za duży, wszystkie wpisy są łączone w nowy plik z zapisanymi deskryptorami.
+
+__DataDirectory__**/cached-routers** i **cached-routers.new**::
+ Przestarzale wersje plików cached-descriptors i cached-descriptors.new. Gdy
+ Tor nie może znaleźć nowszych plików, sprawdza te.
+
+__DataDirectory__**/state**::
+ Zestaw trwałych odwzorowań klucz-wartość. Są one udokumentowane
+ w tym pliku. Zawierają one:
+ - Bieżących strażników wejściowych i ich status.
+ - Bieżące wartości obliczania przepustowości łącza (na razie nieużywane; patrz
+ niżej).
+ - Kiedy ten plik został ostatnio zapisany
+ - Która wersja Tora wygenerowała ten plik stanu
+ - Krótką historię wykorzystania łącza, wyprodukowaną w deskryptorach
+ routerów.
+
+__DataDirectory__**/bw_accounting**::
+ Używany do śledzenia wartości obliczania przepustowości łączą (gdy bieżący okres zaczyna się
+ i kończy; ile dotychczas odczytano i zapisano w bieżącym okresie). Ten plik
+ jest przestarzały, a dane są teraz przechowywane też w pliku \'state'. Używany
+ tylko, gdy właczone jest liczenie przepustowości.
+
+__DataDirectory__**/control_auth_cookie**::
+ Używane do uwierzytelniania ciasteczkami z kontrolerem. Lokalizacja może być
+ zmieniona opcją konfiguracji CookieAuthFile. Regenerowany w czasie startu. Zobacz
+ control-spec.txt, by poznać szczegóły. Używane tylko, gdy włączone jest uwierzytelnianie
+ ciasteczkami.
+
+__DataDirectory__**/keys/***::
+ Używane tylko przez serwery. Trzyma klucze tożsamości i klucze onion.
+
+__DataDirectory__**/fingerprint**::
+ Używane tylko przez serwery. Trzyma odcisk palca klucza tożsamości serwera.
+
+__DataDirectory__**/approved-routers**::
+ Tylko dla nazywających autorytatywnych serwerów katalogowych (patrz
+ **NamingAuthoritativeDirectory**). Ten plik zawiera powiązania nazw z tożsamościami.
+ Każda linia podaje nazwę i odcisk palca oddzielone znakami
+ białymi. Zobacz swój plik **fingerprint** w katalogu __DataDirectory__, dla przykładowej
+ linii. Jeśli nazwą jest **!reject**, to deskryptory z podanej
+ tożsamości (odcisku palca) są odrzucane przez ten serwer. Jeśli nazwą jest
+ **!invalid**, to deskryptory są przyjmowane, ale zaznaczane w katalogu jako
+ nieprawidłowe, to jest, nie zalecane.
+
+__DataDirectory__**/router-stability**::
+ Tylko dla autorytatywnych serwerów katalogowych. Śledzi pomiary
+ średnich czasów między awariami routerów, by serwery katalogowe dobrze wiedziały, jak
+ ustawić ich flagę Stable.
+
+__HiddenServiceDirectory__**/hostname**::
+ Nazwa domenowa <base32-encoded-fingerprint>.onion dla tej usługi ukrytej.
+ Jeśli dostep do usługi ukrytej jest ograniczony tylko dla upoważnionych klientów, ten plik
+ zawiera też dane upoważniające dla wszystkich klientów.
+
+__HiddenServiceDirectory__**/private_key**::
+ Klucz prywatny tej usługi ukrytej.
+
+__HiddenServiceDirectory__**/client_keys**::
+ Dane uwierzytelniające dla usługi ukrytej, która jest dostępna tylko dla
+ upoważnionych klientów.
+
+ZOBACZ TEŻ
+--------
+**privoxy**(1), **tsocks**(1), **torify**(1) +
+
+**https://www.torproject.org/**
+
+
+BŁĘDY
+----
+
+Zapewne dużo. Tor jest ciagle w rozwoju. Prosimy je zgłaszać.
+
+AUTORZY
+-------
+Roger Dingledine [arma at mit.edu] Nick Mathewson [nickm at alum.mit.edu]
+
Added: website/trunk/manpages/pl/torify.1.txt
===================================================================
--- website/trunk/manpages/pl/torify.1.txt (rev 0)
+++ website/trunk/manpages/pl/torify.1.txt 2011-03-03 13:39:36 UTC (rev 24296)
@@ -0,0 +1,51 @@
+// Copyright (c) The Tor Project, Inc.
+// Przeczytaj LICENSE, by poznać informacje o licencji
+// To jest plik asciidoc wykorzystywany do generowania odnośników manpage/html.
+// Naucz się asciidoc na http://www.methods.co.nz/asciidoc/userguide.html
+torify(1)
+==============
+Peter Palfrader Jacob Appelbaum
+
+NAZWA
+----
+torify - wrapper dla torsocks lub tsocks i tor
+
+SYNOPSIS
+--------
+**torify** __application__ [__application's__ __arguments__]
+
+OPIS
+-----------
+**torify** jest prostą owijką, która próbuje znaleźć najlepszą istniejacą
+owijkę dla Toraw systemie. Uruchamia torsocks lub tsocks ze specyficznym dla Tora
+plikiem konfiguracyjnym. +
+
+torsocks to ulepszona owijka, która jawnie odrzuca UDP, bezpiecznie wykonuje
+zapytania DNS i prawidłowo socksyfikuje Twoje połączenia TCP. +
+
+tsocks jest owijką między biblioteką tsocks a a plikacją, którą chcesz
+uruchomić z obsługą SOCKS. +
+
+Jako że obie metody używają LD_PRELOAD, torify nie może być używany do
+binarek mających ustawiony bit suid.
+
+UWAGA
+-------
+Wiedz, że w sposób, w jaki działa tsocks, tylko połączenia TCP dostają
+obsługę SOCKS. Wiedz, że w większości przypadków to nie obejmuje znajdowania
+nazw hostów, które dalej będą kierowane przez Twój normalny, systemowy
+mechanizm rozwiązywania nazw do Twoich zwyczajnych serwerów nazw. Narzędzie
+**tor-resolve**(1) może w niektórych przypadkach posłużyć jako obejście tego
+problemu. FAQ Tora pod adresem
+https://wiki.torproject.org/noreply/TheOnionRouter/TorFAQ może mieć więcej
+informacji na ten temat. +
+
+Gdy używa się go z torsocks, z torify nie powinny wyciekać żądania DNS lub
+dane UDP. +
+
+Z obydwu będą wyciekać dane ICMP.
+
+ZOBACZ RÓWNIEŻ
+--------
+**tor**(1), **tor-resolve**(1), **torsocks**(1), **tsocks**(1),
+**tsocks.conf**(5).
Added: website/trunk/manpages/po2man.sh
===================================================================
--- website/trunk/manpages/po2man.sh (rev 0)
+++ website/trunk/manpages/po2man.sh 2011-03-03 13:39:36 UTC (rev 24296)
@@ -0,0 +1,121 @@
+#!/bin/bash
+#
+# Author: Runa A. Sandvik, <runa.sandvik(a)gmail.com>
+# For The Tor Project, Inc.
+#
+# This is Free Software (GPLv3)
+# http://www.gnu.org/licenses/gpl-3.0.txt
+#
+# This script will convert translated po files back to manpages. Before
+# running the script, checkout the translation directory from
+# https://svn.torproject.org, and clone the tor repository from
+# git.torproject.org.
+#
+
+### Start config ###
+
+# Location of the translated manpages
+translated="$PWD"
+
+# Location of the website directory
+wml="`dirname $translated`"
+
+# Location of the English manpages. Assuming that the git clone of the
+# tor repository is relative to the website
+mandir="`dirname $wml`/tor/doc"
+
+# Location of the po files. Assuming that the translation directory is
+# relative to the website
+podir="`dirname $wml`/translation/projects/manpages/po"
+
+### End config ###
+
+# Find po files to convert
+po=`find $podir -type f -name \*.1.po`
+
+# For every po found, create and/or update the translated manpage.
+for file in $po ; do
+
+ # Get the basename of the file we are dealing with
+ pofile=`basename $file`
+
+ # Strip the file for its original extension and add .txt
+ manfile="${pofile%.*}.txt"
+
+ # Figure out which language we are dealing with.
+ lang=`dirname $file | sed "s#$podir/##"`
+
+ # The translated document is written if 80% or more of the po
+ # file has been translated. Also, po4a-translate will only write
+ # the translated document if 80% or more has been translated.
+ # However, it will delete the translated txt if less than 80%
+ # has been translated. To avoid having our current, translated
+ # txt files deleted, convert the po to a temp txt first. If this
+ # file was actually written, rename it to txt.
+
+ # Convert translated po files back to manpages.
+ function convert {
+ po4a-translate -f text -m "$mandir/$manfile" -p "$file" -l "$translated/$lang/tmp-$manfile" --master-charset utf-8 -L utf-8
+
+ # Check to see if the file was written. If yes, rename
+ # it.
+ if [ -e "$translated/$lang/tmp-$manfile" ]
+ then
+ mv "$translated/$lang/tmp-$manfile" "$translated/$lang/$manfile"
+
+ # If tor.1.po has been translated, we need to
+ # create tor-manual-dev.wml in the correct
+ # language directory.
+ if [ $manfile = "tor.1.txt" ]
+ then
+ if [ ! -e "$wml/docs/$lang/tor-manual-dev.wml" ]
+ then
+
+ if [ ! -d "$wml/docs/$lang/" ]
+ then
+ mkdir "$wml/docs/$lang/"
+ fi
+
+ # Copy template file for
+ # tor-manual-dev.wml, and
+ # replace "lang" with the
+ # correct name of the language
+ # directory.
+ cp "$translated/tor-manual-dev.wml" "$wml/docs/$lang"
+ sed -i "0,/lang/ s/lang/"$lang"/" "$wml/docs/$lang/tor-manual-dev.wml"
+ fi
+ fi
+ fi
+ }
+
+ # We have a few cases where the name of the language directory
+ # in the translations module is not equal the name of the
+ # language directory in the website module.
+
+ # For "zh_CN" use "zh-cn" instead
+ if [ $lang = "zh_CN" ]
+ then
+ lang="zh-cn"
+ convert
+ fi
+
+ # For "nb" use "no" instead
+ if [ $lang = "nb" ]
+ then
+ lang="no"
+ convert
+ fi
+
+ # For "sv" use "se" instead
+ if [ $lang = "sv" ]
+ then
+ lang="se"
+ convert
+ fi
+
+ # Convert everything else
+ if [[ $lang != "zh_CN" && $lang != "nb" && $lang != "sv" ]]
+ then
+ convert
+ fi
+done
Property changes on: website/trunk/manpages/po2man.sh
___________________________________________________________________
Added: svn:executable
+ *
Added: website/trunk/manpages/ro/tor-resolve.1.txt
===================================================================
--- website/trunk/manpages/ro/tor-resolve.1.txt (rev 0)
+++ website/trunk/manpages/ro/tor-resolve.1.txt 2011-03-03 13:39:36 UTC (rev 24296)
@@ -0,0 +1,48 @@
+// Copyright (c) The Tor Project, Inc.
+// Vezi LICENȚA pentru informații privind licențiere
+// Acesta este un fișier asciidoc folosit pentru a genera referințe manpage/html.
+// Află mai multe despre asciidoc pe adresa http://www.methods.co.nz/asciidoc/userguide.html
+tor-resolve(1)
+==============
+Peter Palfrader
+
+NUME
+----
+tor-resolve - află adresa IP a unui hostname prin intermediul tor
+
+REZUMAT
+--------
+**tor-resolve** [-4|-5] [-v] [-x] __hostname__ [__sockshost__[:__socksport__]]
+
+DESCRIERE
+--------
+**tor-resolve** este un script simplu folosit pentru conectarea la un proxy SOCKS care recunoaște
+comanda SOCKS RESOLVE, pe care o expediază către un hostname, și reîntoarce o adresă IP.
+
+By default, **tor-resolve** uses the Tor server running on 127.0.0.1 on
+SOCKS port 9050. If this isn't what you want, you should specify an
+explicit __sockshost__ and/or __socksport__ on the command line.
+
+OPȚIUNI
+-------
+**-v**::
+ Arată în modul verbose.
+
+**-x**::
+ Execută o căutare inversă: obține înregistrarea PTR pentru o adresa IPv4.
+
+**-5**::
+ Folosește protocolul SOCKS5. (Automat)
+
+**-4**::
+ Folosește protocolul SOCKS4a în locul protocolului implicit SOCKS5. Nu suportă DNS invers.
+
+VEZI ȘI
+--------
+**tor**(1), **torify**(1). +
+
+Vezi doc/socks-extensions.txt în pachetul Tor pentru detaliile protocolului.
+
+AUTORI
+--------
+Roger Dingledine <arma(a)mit.edu>, Nick Mathewson <nickm(a)alum.mit.edu>.
Added: website/trunk/manpages/ru/tor-resolve.1.txt
===================================================================
--- website/trunk/manpages/ru/tor-resolve.1.txt (rev 0)
+++ website/trunk/manpages/ru/tor-resolve.1.txt 2011-03-03 13:39:36 UTC (rev 24296)
@@ -0,0 +1,51 @@
+// Все права защищены (c) The Tor Project, Inc.
+// Для получения подробной информации о лицензировании, см. ЛИЦЕНЗИЯ
+// Это файл asciidoc, используемый для генерации ссылки на manpage/html.
+// Узнать больше о asciidoc можно здесь: http://www.methods.co.nz/asciidoc/userguide.html
+tor-resolve(1)
+==============
+Петер Пальфрадер (Peter Palfrader)
+
+НАЗВАНИЕ
+----
+tor-resolve - преобразуйте доменное имя в IP-адрес, используя tor
+
+КРАТКИЙ ОБЗОР
+--------
+**tor-resolve** [-4|-5] [-v] [-x] __hostname__ [__sockshost__[:__socksport__]]
+
+ОПИСАНИЕ
+-----------
+**tor-resolve** - это простой сценарий (скрипт) для подключения к SOCKS прокси, который использует
+команду SOCKS RESOLVE, передает доменное имя и возвращает IP-адрес.
+
+By default, **tor-resolve** uses the Tor server running on 127.0.0.1 on
+SOCKS port 9050. If this isn't what you want, you should specify an
+explicit __sockshost__ and/or __socksport__ on the command line.
+
+ОПЦИИ
+-------
+**-v**::
+ Отобразить подробный вывод данных.
+
+**-x**::
+ Выполнить реверсивный запрос: получить запись PTR для адреса IPv4.
+
+**-5**::
+ Использовать протокол SOCKS5. (По-умолчанию)
+
+**-4**::
+ Использовать протокол SOCKS4a вместа протокола по-умолчанию SOCKS5. Не поддерживает
+ реверсивный DNS.
+
+СМ. ТАКЖЕ
+--------
+**tor**(1), **torify**(1). +
+
+См. doc/socks-extensions.txt в установочном пакете Tor для получения более
+детальной информации о протоколе.
+
+АВТОРЫ
+-------
+Роджер Дингдайн (Roger Dingledine <arma(a)mit.edu>), Ник Мэтьюсон (Nick
+Mathewson <nickm(a)alum.mit.edu>).
Added: website/trunk/manpages/ru/torify.1.txt
===================================================================
--- website/trunk/manpages/ru/torify.1.txt (rev 0)
+++ website/trunk/manpages/ru/torify.1.txt 2011-03-03 13:39:36 UTC (rev 24296)
@@ -0,0 +1,52 @@
+// Все права защищены (c) The Tor Project, Inc.
+// Чтобы получить информацию о лицензировании, см. ЛИЦЕНЗИЯ
+// Это файл asciidoc, используемый для генерации ссылок на manpage/html.
+// Ознакомиться с asciidoc можно здесь: http://www.methods.co.nz/asciidoc/userguide.html
+торификация (1)
+=========
+Петер Пальфрадер (Peter Palfrader), Яком Эппелбаум (Jacob Appelbaum)
+
+НАИМЕНОВАНИЕ
+----
+torify - это упаковщик для torsocks или tsocks и tor
+
+КРАТКИЙ ОБЗОР
+--------
+**torify** __application__ [__application's__ __arguments__]
+
+ОПИСАНИЕ
+-----------
+**torify** это простой упаковщик, который ищет самый подходящий упаковщика для Tor,
+который доступен в системе. Он обращается к torsocks или tsocks, используя
+специфичный для tor конфигурационный файл. +
+
+torsocks - это улучшенный упаковщик, который исключает UDP трафик, безопасно
+удаляет DNS запросы и правильно соксифицирует (socksify) ваши TCP
+подключения. +
+
+Сам tsocks является упаковщиком между библиотекой tsocks и приложением,
+трафик которого должен проходить через socks. +
+
+Пожалуйста, учтите, так как оба метода используют LD_PRELOAD, торификация не
+может применяться к исполняемым файлам suid.
+
+ВНИМАНИЕ
+-------
+Вы должны знать, что в настоящее время tsocks поддерживает только
+подключения по TCP (то есть торифицируются только они). Пожалуйста, учтите,
+что в большинстве случаев это не затронет запросы доменных имен, которые бы
+маршрутизировались через вашу обычную систему преобразования к вашим обычным
+серверам преобразования имен. Инструмент **tor-resolve**(1) может оказаться
+полезным в некоторых случаях. Список часто задаваемых вопросов Tor (FAQ),
+доступный здесь https://wiki.torproject.org/noreply/TheOnionRouter/TorFAQ,
+может содержать более детальную ифнормацию об этом. +
+
+При использовании с torsocks, torify не должен допускать DNS утечки или
+потери данных UDP. +
+
+И то и другое приведет к утечке ICMP данных.
+
+СМ. ТАКЖЕ
+--------
+**tor**(1), **tor-resolve**(1), **torsocks**(1), **tsocks**(1),
+**tsocks.conf**(5).
Added: website/trunk/manpages/tor-manual-dev.wml
===================================================================
--- website/trunk/manpages/tor-manual-dev.wml (rev 0)
+++ website/trunk/manpages/tor-manual-dev.wml 2011-03-03 13:39:36 UTC (rev 24296)
@@ -0,0 +1,30 @@
+## translation metadata
+# Revision: $Revision: 23689 $
+
+#include "head.wmi" TITLE="Tor Project: manual"
+
+# Translators shouldn't translate this file, unless they want
+# to translate the whole man page too.
+<div id="content" class="clearfix">
+ <div id="breadcrumbs">
+ <a href="<page index>">Home » </a>
+ <a href="<page docs/documentation>">Documentation » </a>
+ <a href="<page docs/tor-doc-osx>">Tor Dev Manual</a>
+ </div>
+ <div id="maincol">
+ <:
+ die "Missing git clone" unless -d "$(TORGIT)";
+ my $man = `cat manpages/lang/tor.1.txt | asciidoc -d manpage -s -o - -`;
+ die "No manpage because of asciidoc error or file not available from git" unless $man;
+ print $man;
+ :>
+ </div>
+ <!-- END MAINCOL -->
+ <div id = "sidecol">
+#include "side.wmi"
+#include "info.wmi"
+ </div>
+ <!-- END SIDECOL -->
+</div>
+<!-- END CONTENT -->
+#include <foot.wmi>
Added: website/trunk/manpages/ur/tor-resolve.1.txt
===================================================================
--- website/trunk/manpages/ur/tor-resolve.1.txt (rev 0)
+++ website/trunk/manpages/ur/tor-resolve.1.txt 2011-03-03 13:39:36 UTC (rev 24296)
@@ -0,0 +1,40 @@
+کاپی رائٹ (سی) Tor منصوبہ.لائسنس کی معلومات کے لئے لائسنس دیکھو..یہ ایک
+asciidoc فائل ہےجسے مین صفہ/ایچ ٹی ایم ایل حوالہ دینے کے لیے استعمال کیا
+جاتا ہے.asciidoc سیکھنے کے لیے دیکھو
+http://www.methods.co.nz/asciidoc/userguide.htm -torحل
+پال فلاڈر
+
+----
+tor- حل کرنا۔ ایک آئی پی ایڈریس کوٹار کے ذریعے ہوسٹک کے نام میں حل کرنا
+
+--------
+tor-حل کرنا۔ ** [-4|-5] [-v] [-x] __ہوسٹ کا نام__[__ساکس ہوسٹ__[:__ساکس پورٹ__]]
+
+-----------
+**tor**-حل کرنا. ایک اسان سا اسکپرٹ ہے جو ساکس پروکسی سے منسالک کرنے کے لیے
+استعمال ہوتا ہے، اسے ساکس حل کرنے کا پتا ہوتا ہے، اسے ایک ہوسٹ نام دو، اور
+یہ آئی پی ایڈریس واپس کرے گا۔
+
+By default, **tor-resolve** uses the Tor server running on 127.0.0.1 on
+SOCKS port 9050. If this isn't what you want, you should specify an
+explicit __sockshost__ and/or __socksport__ on the command line.
+
+-------
+طول کلامی کی پیداوار دیکھانا
+
+الٹی کارکردگی دیکھانا, ایک IPv4 ایڈریس کے لئے PTR ریکارڈ حاصل کرنا
+
+SOCKS5 پروٹوکول استعمال کرنا
+
+ساکس 5 پروٹوکو ل کے بجائے ساکس 4 a پروٹوکو ل کا استعمال کرو۔ یہ ریورس DNS کی
+حمایت نہیں کرتا.
+
+یہ بھی دیکھو
+--------
+**(tor**(1), **torify**(1**
+
+Torپیکج پروٹوکول کی تفصیلات کیلے doc/socks-extensions.txt دستاویزات دیکھو
+
+مصنفین
+-------
+راجر ر ڈانگ لعڈان <arma(a)mit.edu>نک معٹیو <nickm(a)alum.mit.edu>
Added: website/trunk/manpages/zh-cn/tor-resolve.1.txt
===================================================================
--- website/trunk/manpages/zh-cn/tor-resolve.1.txt (rev 0)
+++ website/trunk/manpages/zh-cn/tor-resolve.1.txt 2011-03-03 13:39:36 UTC (rev 24296)
@@ -0,0 +1,49 @@
+// 版权所有 (c) Tor项目公司
+// 参见“许可”以获得许可信息。
+// 这是一个asciidoc文档,用于生成联机帮助页或HTML参考。
+// 要了解更多关于asciidoc文档,请登录 http://www.methods.co.nz/asciidoc/userguide.html
+tor-解析(1)
+==============
+Peter Palfrader
+
+名字
+----
+tor-resolve - resolve a hostname to an IP address via tor
+
+概要
+--------
+**tor-resolve** [-4|-5] [-v] [-x] __hostname__[__sockshost__[:__socksport__]]
+
+注释
+-----------
+**tor-resolve** is a simple script to connect to a SOCKS proxy that knows about
+the SOCKS RESOLVE command, hand it a hostname, and return an IP address.
+
+By default, **tor-resolve** uses the Tor server running on 127.0.0.1 on
+SOCKS port 9050. If this isn't what you want, you should specify an
+explicit __sockshost__ and/or __socksport__ on the command line.
+
+设置选项
+-------
+**-v**::
+ 显示详细的输出。
+
+**-x**::
+ 执行反向查找:获得IPv4地址的PTR记录。
+
+**-5**::
+ 使用SOCKS5协议。(默认)
+
+**-4**::
+ 使用SOCKS4a协议而不是默认的SOCKS5协议。不
+ 支持反向DNS。
+
+另请参阅
+--------
+**tor**(1), **torify**(1). +
+
+查看Tor安装包里的doc/socks-extensions.txt以获得关于协议的详细内容。
+
+作者
+-------
+罗杰·丁格莱丁<arma(a)mit.edu>,尼克·马修森<nickm(a)alum.mit.edu>。
1
0

03 Mar '11
commit 85dc1ad844373bb88fb67bc94e32269990438fcb
Author: Karsten Loesing <karsten.loesing(a)gmx.net>
Date: Wed Mar 2 20:32:09 2011 +0100
Remove bridge statistics from metrics-db.
---
config.template | 22 -
.../ernie/db/BridgeDescriptorParser.java | 158 ++-----
.../ernie/db/BridgeStatsFileHandler.java | 519 --------------------
src/org/torproject/ernie/db/Configuration.java | 59 +--
.../ernie/db/ConsensusStatsFileHandler.java | 282 -----------
src/org/torproject/ernie/db/Main.java | 39 +--
.../torproject/ernie/db/RelayDescriptorParser.java | 14 +-
.../ernie/db/SanitizedBridgesReader.java | 114 -----
.../ernie/test/SanitizedBridgesReaderTest.java | 33 --
9 files changed, 42 insertions(+), 1198 deletions(-)
diff --git a/config.template b/config.template
index 7385f7b..3477801 100644
--- a/config.template
+++ b/config.template
@@ -26,18 +26,6 @@
## download missing relay descriptors from
#DownloadFromDirectoryAuthorities 86.59.21.38,194.109.206.212,212.112.245.170
#
-## Import sanitized bridges from disk, if available
-#ImportSanitizedBridges 0
-#
-## Relative path to directory to import sanitized bridges from
-#SanitizedBridgesDirectory bridges/
-#
-## Keep a history of imported sanitized bridge descriptors. This history
-## can be useful when importing from a changing data source to avoid
-## importing descriptors more than once, but it can be confusing to users
-## who don't know about it.
-#KeepSanitizedBridgesImportHistory 0
-#
## Import bridge snapshots from disk, if available
#ImportBridgeSnapshots 0
#
@@ -75,10 +63,6 @@
## JDBC string for relay descriptor database
#RelayDescriptorDatabaseJDBC jdbc:postgresql://localhost/tordir?user=ernie&password=password
#
-## Write statistics about the current consensus and votes to the
-## website
-#WriteConsensusHealth 0
-#
## Write sanitized bridges to disk
#WriteSanitizedBridges 0
#
@@ -93,10 +77,4 @@
#
## Relative path to directory to write sanitized bridges to
#SanitizedBridgesWriteDirectory sanitized-bridges/
-#
-## Write consensus stats to disk
-#WriteConsensusStats 0
-#
-## Write bridge stats to disk
-#WriteBridgeStats 0
diff --git a/src/org/torproject/ernie/db/BridgeDescriptorParser.java b/src/org/torproject/ernie/db/BridgeDescriptorParser.java
index e2d8bd0..9453088 100644
--- a/src/org/torproject/ernie/db/BridgeDescriptorParser.java
+++ b/src/org/torproject/ernie/db/BridgeDescriptorParser.java
@@ -9,14 +9,9 @@ import java.util.logging.*;
import org.apache.commons.codec.digest.*;
public class BridgeDescriptorParser {
- private ConsensusStatsFileHandler csfh;
- private BridgeStatsFileHandler bsfh;
private SanitizedBridgesWriter sbw;
private Logger logger;
- public BridgeDescriptorParser(ConsensusStatsFileHandler csfh,
- BridgeStatsFileHandler bsfh, SanitizedBridgesWriter sbw) {
- this.csfh = csfh;
- this.bsfh = bsfh;
+ public BridgeDescriptorParser(SanitizedBridgesWriter sbw) {
this.sbw = sbw;
this.logger =
Logger.getLogger(BridgeDescriptorParser.class.getName());
@@ -25,139 +20,46 @@ public class BridgeDescriptorParser {
try {
BufferedReader br = new BufferedReader(new StringReader(
new String(allData, "US-ASCII")));
- SimpleDateFormat timeFormat = new SimpleDateFormat(
- "yyyy-MM-dd HH:mm:ss");
- timeFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
- String hashedIdentity = null, platformLine = null,
- publishedLine = null, geoipStartTimeLine = null,
- bridgeStatsEndLine = null;
boolean skip = false;
- String line = null;
- while ((line = br.readLine()) != null) {
- if (line.startsWith("r ")) {
- if (this.sbw != null) {
- if (sanitized) {
- this.sbw.storeSanitizedNetworkStatus(allData, dateTime);
- } else {
- this.sbw.sanitizeAndStoreNetworkStatus(allData, dateTime);
- }
+ String line = br.readLine();
+ if (line != null) {
+ return;
+ } else if (line.startsWith("r ")) {
+ if (this.sbw != null) {
+ if (sanitized) {
+ this.sbw.storeSanitizedNetworkStatus(allData, dateTime);
+ } else {
+ this.sbw.sanitizeAndStoreNetworkStatus(allData, dateTime);
}
- int runningBridges = 0;
- while ((line = br.readLine()) != null) {
- if (line.startsWith("s ") && line.contains(" Running")) {
- runningBridges++;
- }
- }
- if (this.csfh != null) {
- this.csfh.addBridgeConsensusResults(dateTime, runningBridges);
- }
- } else if (line.startsWith("router ")) {
- if (this.sbw != null) {
- if (sanitized) {
- this.sbw.storeSanitizedServerDescriptor(allData);
- } else {
- this.sbw.sanitizeAndStoreServerDescriptor(allData);
- }
- }
- } else if (line.startsWith("extra-info ")) {
- if (this.sbw != null) {
- if (sanitized) {
- this.sbw.storeSanitizedExtraInfoDescriptor(allData);
- } else {
- this.sbw.sanitizeAndStoreExtraInfoDescriptor(allData);
- }
- }
- hashedIdentity = sanitized ? line.split(" ")[2]
- : DigestUtils.shaHex(line.split(" ")[2]).toUpperCase();
- if (this.bsfh != null) {
- skip = this.bsfh.isKnownRelay(hashedIdentity);
- }
- } else if (!skip && line.startsWith("platform ")) {
- platformLine = line;
- } else if (!skip && line.startsWith("published ")) {
- publishedLine = line;
- } else if (line.startsWith("opt fingerprint") ||
- line.startsWith("fingerprint")) {
- String identity = line.substring(line.startsWith("opt ") ?
- "opt fingerprint".length() : "fingerprint".length()).
- replaceAll(" ", "").toLowerCase();
- hashedIdentity = sanitized ? identity
- : DigestUtils.shaHex(identity).toUpperCase();
- } else if (!skip && line.startsWith("geoip-start-time ")) {
- geoipStartTimeLine = line;
- } else if (!skip && line.startsWith("geoip-client-origins")
- && line.split(" ").length > 1) {
- if (publishedLine == null ||
- geoipStartTimeLine == null) {
- this.logger.warning("Either published line or "
- + "geoip-start-time line is not present in "
- + (sanitized ? "sanitized" : "non-sanitized")
- + " bridge descriptors from " + dateTime + ".");
- break;
- }
- long published = timeFormat.parse(publishedLine.
- substring("published ".length())).getTime();
- long started = timeFormat.parse(geoipStartTimeLine.
- substring("geoip-start-time ".length())).getTime();
- long seconds = (published - started) / 1000L;
- double allUsers = 0.0D;
- Map<String, String> obs = new HashMap<String, String>();
- String[] parts = line.split(" ")[1].split(",");
- for (String p : parts) {
- String country = p.substring(0, 2);
- double users = ((double) Long.parseLong(p.substring(3)) - 4L)
- * 86400.0D / ((double) seconds);
- allUsers += users;
- obs.put(country, String.format("%.2f", users));
- }
- obs.put("zy", String.format("%.2f", allUsers));
- String date = publishedLine.split(" ")[1];
- String time = publishedLine.split(" ")[2];
- if (this.bsfh != null) {
- this.bsfh.addObs(hashedIdentity, date, time, obs);
- }
- } else if (!skip && line.startsWith("bridge-stats-end ")) {
- bridgeStatsEndLine = line;
- } else if (!skip && line.startsWith("bridge-ips")
- && line.split(" ").length > 1) {
- if (bridgeStatsEndLine == null) {
- this.logger.warning("bridge-ips line without preceding "
- + "bridge-stats-end line in "
- + (sanitized ? "sanitized" : "non-sanitized")
- + " bridge descriptor.");
- break;
+ }
+ int runningBridges = 0;
+ while ((line = br.readLine()) != null) {
+ if (line.startsWith("s ") && line.contains(" Running")) {
+ runningBridges++;
}
- double allUsers = 0.0D;
- Map<String, String> obs = new HashMap<String, String>();
- String[] parts = line.split(" ")[1].split(",");
- for (String p : parts) {
- String country = p.substring(0, 2);
- double users = (double) Long.parseLong(p.substring(3)) - 4L;
- allUsers += users;
- obs.put(country, String.format("%.2f", users));
+ }
+ } else if (line.startsWith("router ")) {
+ if (this.sbw != null) {
+ if (sanitized) {
+ this.sbw.storeSanitizedServerDescriptor(allData);
+ } else {
+ this.sbw.sanitizeAndStoreServerDescriptor(allData);
}
- obs.put("zy", String.format("%.2f", allUsers));
- String date = bridgeStatsEndLine.split(" ")[1];
- String time = bridgeStatsEndLine.split(" ")[2];
- if (this.bsfh != null) {
- this.bsfh.addObs(hashedIdentity, date, time, obs);
+ }
+ } else if (line.startsWith("extra-info ")) {
+ if (this.sbw != null) {
+ if (sanitized) {
+ this.sbw.storeSanitizedExtraInfoDescriptor(allData);
+ } else {
+ this.sbw.sanitizeAndStoreExtraInfoDescriptor(allData);
}
}
}
- if (this.bsfh != null && platformLine != null &&
- platformLine.startsWith("platform Tor 0.2.2")) {
- String date = publishedLine.split(" ")[1];
- String time = publishedLine.split(" ")[2];
- this.bsfh.addZeroTwoTwoDescriptor(hashedIdentity, date, time);
- }
} catch (IOException e) {
this.logger.log(Level.WARNING, "Could not parse bridge descriptor.",
e);
return;
- } catch (ParseException e) {
- this.logger.log(Level.WARNING, "Could not parse bridge descriptor.",
- e);
- return;
}
}
}
+
diff --git a/src/org/torproject/ernie/db/BridgeStatsFileHandler.java b/src/org/torproject/ernie/db/BridgeStatsFileHandler.java
deleted file mode 100644
index 8a417b5..0000000
--- a/src/org/torproject/ernie/db/BridgeStatsFileHandler.java
+++ /dev/null
@@ -1,519 +0,0 @@
-/* Copyright 2010 The Tor Project
- * See LICENSE for licensing information */
-package org.torproject.ernie.db;
-
-import java.io.*;
-import java.sql.*;
-import java.text.*;
-import java.util.*;
-import java.util.logging.*;
-
-/**
- * Determines estimates of bridge users per country and day from the
- * extra-info descriptors that bridges publish. In a first step, the
- * number of unique IP addresses that bridges see are normalized to a
- * 24-hour period. In the next step, all bridges are excluded that have
- * been running as a relay. Finally, observations are summed up and
- * written to <code>stats/bridge-stats</code>.
- */
-public class BridgeStatsFileHandler {
-
- /**
- * Two-letter country codes of known countries.
- */
- private SortedSet<String> countries;
-
- /**
- * Intermediate results file containing bridge user numbers by country
- * as seen by single bridges, normalized to 24-hour periods.
- */
- private File bridgeStatsRawFile;
-
- /**
- * Bridge user numbers by country as seen by single bridges on a given
- * day. Map keys are bridge and date written as "bridge,date", map
- * values are lines as read from <code>stats/bridge-stats-raw</code>.
- */
- private SortedMap<String, Map<String, String>> bridgeUsersRaw;
-
- /**
- * Helper file containing the hashed relay identities of all known
- * relays. These hashes are compared to the bridge identity hashes to
- * exclude bridges that have been known as relays from the statistics.
- */
- private File hashedRelayIdentitiesFile;
-
- /**
- * Known hashed relay identities used to exclude bridges that have been
- * running as relays.
- */
- private SortedSet<String> hashedRelays;
-
- /**
- * Helper file containing extra-info descriptors published by 0.2.2.x
- * bridges. If these descriptors contain geoip-stats, they are not
- * included in the results, because stats are very likely broken.
- */
- private File zeroTwoTwoDescriptorsFile;
-
- /**
- * Extra-info descriptors published by 0.2.2.x bridges. If these
- * descriptors contain geoip-stats, they are not included in the
- * results, because stats are very likely broken.
- */
- private SortedSet<String> zeroTwoTwoDescriptors;
-
- /**
- * Final results file containing the number of bridge users per country
- * and day. This file is not read in during initialization, but
- * overwritten at the end of the execution.
- */
- private File bridgeStatsFile;
-
- /**
- * Logger for this class.
- */
- private Logger logger;
-
- /* Database connection string. */
- private String connectionURL = null;
-
- /**
- * Initializes this class, including reading in intermediate results
- * files <code>stats/bridge-stats-raw</code> and
- * <code>stats/hashed-relay-identities</code>.
- */
- public BridgeStatsFileHandler(String connectionURL) {
-
- /* Initialize set of known countries. */
- this.countries = new TreeSet<String>();
- this.countries.add("zy");
-
- /* Initialize local data structures to hold results. */
- this.bridgeUsersRaw = new TreeMap<String, Map<String, String>>();
- this.hashedRelays = new TreeSet<String>();
- this.zeroTwoTwoDescriptors = new TreeSet<String>();
-
- /* Initialize file names for intermediate and final results. */
- this.bridgeStatsRawFile = new File("stats/bridge-stats-raw");
- this.bridgeStatsFile = new File("stats/bridge-stats");
- this.hashedRelayIdentitiesFile = new File(
- "stats/hashed-relay-identities");
- this.zeroTwoTwoDescriptorsFile = new File(
- "stats/v022-bridge-descriptors");
-
- /* Initialize database connection string. */
- this.connectionURL = connectionURL;
-
- /* Initialize logger. */
- this.logger = Logger.getLogger(
- BridgeStatsFileHandler.class.getName());
-
- /* Read in bridge user numbers by country as seen by single bridges,
- * normalized to 24-hour periods. */
- if (this.bridgeStatsRawFile.exists()) {
- try {
- this.logger.fine("Reading file "
- + this.bridgeStatsRawFile.getAbsolutePath() + "...");
- BufferedReader br = new BufferedReader(new FileReader(
- this.bridgeStatsRawFile));
- String line = br.readLine();
- if (line != null) {
- /* The first line should contain headers that we need to parse
- * in order to learn what countries we were interested in when
- * writing this file. */
- if (!line.startsWith("bridge,date,time,")) {
- this.logger.warning("Incorrect first line '" + line + "' in "
- + this.bridgeStatsRawFile.getAbsolutePath() + "! This line "
- + "should contain headers! Aborting to read in this "
- + "file!");
- } else {
- String[] headers = line.split(",");
- for (int i = 3; i < headers.length; i++) {
- if (!headers[i].equals("all")) {
- this.countries.add(headers[i]);
- }
- }
- /* Read in the rest of the file. */
- while ((line = br.readLine()) != null) {
- String[] parts = line.split(",");
- if (parts.length != headers.length) {
- this.logger.warning("Corrupt line '" + line + "' in file "
- + this.bridgeStatsRawFile.getAbsolutePath()
- + "! Aborting to read this file!");
- break;
- }
- String hashedBridgeIdentity = parts[0];
- String date = parts[1];
- String time = parts[2];
- SortedMap<String, String> obs =
- new TreeMap<String, String>();
- for (int i = 3; i < parts.length; i++) {
- if (parts[i].equals("NA")) {
- continue;
- }
- if (headers[i].equals("all")) {
- obs.put("zy", parts[i]);
- } else {
- obs.put(headers[i], parts[i]);
- }
- }
- this.addObs(hashedBridgeIdentity, date, time, obs);
- }
- }
- }
- br.close();
- this.logger.fine("Finished reading file "
- + this.bridgeStatsRawFile.getAbsolutePath() + ".");
- } catch (IOException e) {
- this.logger.log(Level.WARNING, "Failed to read file "
- + this.bridgeStatsRawFile.getAbsolutePath() + "!", e);
- }
- }
-
- /* Read in known hashed relay identities used to exclude bridges that
- * have been running as relays. */
- if (this.hashedRelayIdentitiesFile.exists()) {
- try {
- this.logger.fine("Reading file "
- + this.hashedRelayIdentitiesFile.getAbsolutePath() + "...");
- BufferedReader br = new BufferedReader(new FileReader(
- this.hashedRelayIdentitiesFile));
- String line = null;
- /* Read in all lines from the file and memorize them. */
- while ((line = br.readLine()) != null) {
- this.hashedRelays.add(line);
- }
- br.close();
- this.logger.fine("Finished reading file "
- + this.hashedRelayIdentitiesFile.getAbsolutePath() + ".");
- } catch (IOException e) {
- this.logger.log(Level.WARNING, "Failed to read file "
- + this.hashedRelayIdentitiesFile.getAbsolutePath() + "!", e);
- }
- }
-
- /* Read in known extra-info descriptors published by 0.2.2.x
- * bridges. */
- if (this.zeroTwoTwoDescriptorsFile.exists()) {
- try {
- this.logger.fine("Reading file "
- + this.zeroTwoTwoDescriptorsFile.getAbsolutePath() + "...");
- BufferedReader br = new BufferedReader(new FileReader(
- this.zeroTwoTwoDescriptorsFile));
- String line = null;
- /* Read in all lines from the file and memorize them. */
- while ((line = br.readLine()) != null) {
- this.zeroTwoTwoDescriptors.add(line);
- }
- br.close();
- this.logger.fine("Finished reading file "
- + this.zeroTwoTwoDescriptorsFile.getAbsolutePath() + ".");
- } catch (IOException e) {
- this.logger.log(Level.WARNING, "Failed to read file "
- + this.zeroTwoTwoDescriptorsFile.getAbsolutePath() + "!", e);
- }
- }
- }
-
- /**
- * Adds a hashed relay identity string to the list of bridges that we
- * are going to ignore in the future. If we counted user numbers from
- * bridges that have been running as relays, our numbers would be far
- * higher than what we think is correct.
- */
- public void addHashedRelay(String hashedRelayIdentity) {
- if (!this.hashedRelays.contains(hashedRelayIdentity)) {
- this.logger.finer("Adding new hashed relay identity: "
- + hashedRelayIdentity);
- this.hashedRelays.add(hashedRelayIdentity);
- }
- }
-
- /**
- * Adds an extra-info descriptor identifier published by an 0.2.2.x
- * bridges. If this extra-info descriptor contains geoip-stats, they are
- * not included in the results, because stats are very likely broken.
- */
- public void addZeroTwoTwoDescriptor(String hashedBridgeIdentity,
- String date, String time) {
- String value = hashedBridgeIdentity.toUpperCase() + "," + date + ","
- + time;
- if (!this.zeroTwoTwoDescriptors.contains(value)) {
- this.logger.finer("Adding new bridge 0.2.2.x extra-info "
- + "descriptor: " + value);
- this.zeroTwoTwoDescriptors.add(value);
- }
- }
-
- /**
- * Returns whether the given fingerprint is a known hashed relay
- * identity. <code>BridgeDescriptorParser</code> uses this information
- * to decide whether to continue parsing a bridge extra-descriptor
- * descriptor or not.
- */
- public boolean isKnownRelay(String hashedBridgeIdentity) {
- return this.hashedRelays.contains(hashedBridgeIdentity);
- }
-
- /**
- * Adds bridge user numbers by country as seen by a single bridge on a
- * given date and time. Bridges can publish statistics on unique IP
- * addresses multiple times a day, but we only want to include one
- * observation per day. If we already have an observation from the given
- * bridge and day, we keep the one with the later publication time and
- * discard the other one.
- */
- public void addObs(String hashedIdentity, String date, String time,
- Map<String, String> obs) {
- for (String country : obs.keySet()) {
- this.countries.add(country);
- }
- String shortKey = hashedIdentity + "," + date;
- String longKey = shortKey + "," + time;
- SortedMap<String, Map<String, String>> tailMap =
- this.bridgeUsersRaw.tailMap(shortKey);
- String nextKey = tailMap.isEmpty() ? null : tailMap.firstKey();
- if (nextKey == null || !nextKey.startsWith(shortKey)) {
- this.logger.finer("Adding new bridge user numbers for key "
- + longKey);
- this.bridgeUsersRaw.put(longKey, obs);
- } else if (longKey.compareTo(nextKey) > 0) {
- this.logger.finer("Replacing existing bridge user numbers (" +
- nextKey + " with new numbers: " + longKey);
- this.bridgeUsersRaw.put(longKey, obs);
- } else {
- this.logger.finer("Not replacing existing bridge user numbers (" +
- nextKey + " with new numbers (" + longKey + ").");
- }
- }
-
- /**
- * Writes the list of hashed relay identities and bridge user numbers as
- * observed by single bridges to disk, aggregates per-day statistics for
- * all bridges, and writes those to disk, too.
- */
- public void writeFiles() {
-
- /* Write hashed relay identities to disk. */
- try {
- this.logger.fine("Writing file "
- + this.hashedRelayIdentitiesFile.getAbsolutePath() + "...");
- this.hashedRelayIdentitiesFile.getParentFile().mkdirs();
- BufferedWriter bw = new BufferedWriter(new FileWriter(
- this.hashedRelayIdentitiesFile));
- for (String hashedRelay : this.hashedRelays) {
- bw.append(hashedRelay + "\n");
- }
- bw.close();
- this.logger.fine("Finished writing file "
- + this.hashedRelayIdentitiesFile.getAbsolutePath() + ".");
- } catch (IOException e) {
- this.logger.log(Level.WARNING, "Failed to write "
- + this.hashedRelayIdentitiesFile.getAbsolutePath() + "!", e);
- }
-
- /* Write bridge extra-info descriptor identifiers to disk. */
- try {
- this.logger.fine("Writing file "
- + this.zeroTwoTwoDescriptorsFile.getAbsolutePath() + "...");
- this.zeroTwoTwoDescriptorsFile.getParentFile().mkdirs();
- BufferedWriter bw = new BufferedWriter(new FileWriter(
- this.zeroTwoTwoDescriptorsFile));
- for (String descriptorIdentifier : this.zeroTwoTwoDescriptors) {
- bw.append(descriptorIdentifier + "\n");
- }
- bw.close();
- this.logger.fine("Finished writing file "
- + this.zeroTwoTwoDescriptorsFile.getAbsolutePath() + ".");
- } catch (IOException e) {
- this.logger.log(Level.WARNING, "Failed to write "
- + this.zeroTwoTwoDescriptorsFile.getAbsolutePath() + "!", e);
- }
-
- /* Write observations made by single bridges to disk. */
- try {
- this.logger.fine("Writing file "
- + this.bridgeStatsRawFile.getAbsolutePath() + "...");
- this.bridgeStatsRawFile.getParentFile().mkdirs();
- BufferedWriter bw = new BufferedWriter(new FileWriter(
- this.bridgeStatsRawFile));
- bw.append("bridge,date,time");
- for (String c : this.countries) {
- if (c.equals("zy")) {
- bw.append(",all");
- } else {
- bw.append("," + c);
- }
- }
- bw.append("\n");
- for (Map.Entry<String, Map<String, String>> e :
- this.bridgeUsersRaw.entrySet()) {
- String longKey = e.getKey();
- String[] parts = longKey.split(",");
- String hashedBridgeIdentity = parts[0];
- String date = parts[1];
- String time = parts[2];
- if (!this.hashedRelays.contains(hashedBridgeIdentity) &&
- !this.zeroTwoTwoDescriptors.contains(longKey)) {
- Map<String, String> obs = e.getValue();
- StringBuilder sb = new StringBuilder(longKey);
- for (String c : this.countries) {
- sb.append("," + (obs.containsKey(c) &&
- !obs.get(c).startsWith("-") ? obs.get(c) : "NA"));
- }
- String line = sb.toString();
- bw.append(line + "\n");
- }
- }
- bw.close();
- this.logger.fine("Finished writing file "
- + this.bridgeStatsRawFile.getAbsolutePath() + ".");
- } catch (IOException e) {
- this.logger.log(Level.WARNING, "Failed to write "
- + this.bridgeStatsRawFile.getAbsolutePath() + "!", e);
- }
-
- /* Aggregate per-day statistics. */
- SortedMap<String, double[]> bridgeUsersPerDay =
- new TreeMap<String, double[]>();
- for (Map.Entry<String, Map<String, String>> e :
- this.bridgeUsersRaw.entrySet()) {
- String longKey = e.getKey();
- String[] parts = longKey.split(",");
- String hashedBridgeIdentity = parts[0];
- String date = parts[1];
- String time = parts[2];
- if (!this.hashedRelays.contains(hashedBridgeIdentity) &&
- !this.zeroTwoTwoDescriptors.contains(longKey)) {
- double[] users = bridgeUsersPerDay.get(date);
- Map<String, String> obs = e.getValue();
- if (users == null) {
- users = new double[this.countries.size()];
- bridgeUsersPerDay.put(date, users);
- }
- int i = 0;
- for (String c : this.countries) {
- if (obs.containsKey(c) && !obs.get(c).startsWith("-")) {
- users[i] += Double.parseDouble(obs.get(c));
- }
- i++;
- }
- }
- }
-
- /* Write final results of bridge users per day and country to
- * <code>stats/bridge-stats</code>. */
- try {
- this.logger.fine("Writing file "
- + this.bridgeStatsRawFile.getAbsolutePath() + "...");
- this.bridgeStatsFile.getParentFile().mkdirs();
- BufferedWriter bw = new BufferedWriter(new FileWriter(
- this.bridgeStatsFile));
- bw.append("date");
- for (String c : this.countries) {
- if (c.equals("zy")) {
- bw.append(",all");
- } else {
- bw.append("," + c);
- }
- }
- bw.append("\n");
-
- /* Write current observation. */
- for (Map.Entry<String, double[]> e : bridgeUsersPerDay.entrySet()) {
- String date = e.getKey();
- bw.append(date);
- double[] users = e.getValue();
- for (int i = 0; i < users.length; i++) {
- bw.append("," + String.format("%.2f", users[i]));
- }
- bw.append("\n");
- }
- bw.close();
- this.logger.fine("Finished writing file "
- + this.bridgeStatsFile.getAbsolutePath() + ".");
- } catch (IOException e) {
- this.logger.log(Level.WARNING, "Failed to write "
- + this.bridgeStatsFile.getAbsolutePath() + "!", e);
- }
-
- /* Add daily bridge users to database. */
- if (connectionURL != null) {
- try {
- List<String> countryList = new ArrayList<String>();
- for (String c : this.countries) {
- countryList.add(c);
- }
- Map<String, Integer> insertRows = new HashMap<String, Integer>(),
- updateRows = new HashMap<String, Integer>();
- for (Map.Entry<String, double[]> e :
- bridgeUsersPerDay.entrySet()) {
- String date = e.getKey();
- double[] users = e.getValue();
- for (int i = 0; i < users.length; i++) {
- int usersInt = (int) users[i];
- if (usersInt < 1) {
- continue;
- }
- String country = countryList.get(i);
- String key = date + "," + country;
- insertRows.put(key, usersInt);
- }
- }
- Connection conn = DriverManager.getConnection(connectionURL);
- conn.setAutoCommit(false);
- Statement statement = conn.createStatement();
- ResultSet rs = statement.executeQuery(
- "SELECT date, country, users FROM bridge_stats");
- while (rs.next()) {
- String date = rs.getDate(1).toString();
- String country = rs.getString(2);
- String key = date + "," + country;
- if (insertRows.containsKey(key)) {
- int insertRow = insertRows.remove(key);
- int oldUsers = rs.getInt(3);
- if (oldUsers != insertRow) {
- updateRows.put(key, insertRow);
- }
- }
- }
- rs.close();
- PreparedStatement psU = conn.prepareStatement(
- "UPDATE bridge_stats SET users = ? "
- + "WHERE date = ? AND country = ?");
- for (Map.Entry<String, Integer> e : updateRows.entrySet()) {
- String[] keyParts = e.getKey().split(",");
- java.sql.Date date = java.sql.Date.valueOf(keyParts[0]);
- String country = keyParts[1];
- int users = e.getValue();
- psU.clearParameters();
- psU.setInt(1, users);
- psU.setDate(2, date);
- psU.setString(3, country);
- psU.executeUpdate();
- }
- PreparedStatement psI = conn.prepareStatement(
- "INSERT INTO bridge_stats (users, date, country) "
- + "VALUES (?, ?, ?)");
- for (Map.Entry<String, Integer> e : insertRows.entrySet()) {
- String[] keyParts = e.getKey().split(",");
- java.sql.Date date = java.sql.Date.valueOf(keyParts[0]);
- String country = keyParts[1];
- int users = e.getValue();
- psI.clearParameters();
- psI.setInt(1, users);
- psI.setDate(2, date);
- psI.setString(3, country);
- psI.executeUpdate();
- }
- conn.commit();
- conn.close();
- } catch (SQLException e) {
- logger.log(Level.WARNING, "Failed to add daily bridge users to "
- + "database.", e);
- }
- }
- }
-}
-
diff --git a/src/org/torproject/ernie/db/Configuration.java b/src/org/torproject/ernie/db/Configuration.java
index b8f8f39..3554e23 100644
--- a/src/org/torproject/ernie/db/Configuration.java
+++ b/src/org/torproject/ernie/db/Configuration.java
@@ -13,8 +13,6 @@ import java.util.logging.*;
* configuration.
*/
public class Configuration {
- private boolean writeConsensusStats = false;
- private boolean writeBridgeStats = false;
private boolean writeDirectoryArchives = false;
private String directoryArchivesOutputDirectory = "directory-archive/";
private boolean importCachedRelayDescriptors = false;
@@ -30,9 +28,6 @@ public class Configuration {
private boolean replaceIPAddressesWithHashes = false;
private long limitBridgeDescriptorMappings = -1L;
private String sanitizedBridgesWriteDirectory = "sanitized-bridges/";
- private boolean importSanitizedBridges = false;
- private String sanitizedBridgesDirectory = "bridges/";
- private boolean keepSanitizedBridgesImportHistory = false;
private boolean importBridgeSnapshots = false;
private String bridgeSnapshotsDirectory = "bridge-directories/";
private boolean importWriteTorperfStats = false;
@@ -67,12 +62,6 @@ public class Configuration {
while ((line = br.readLine()) != null) {
if (line.startsWith("#") || line.length() < 1) {
continue;
- } else if (line.startsWith("WriteConsensusStats")) {
- this.writeConsensusStats = Integer.parseInt(
- line.split(" ")[1]) != 0;
- } else if (line.startsWith("WriteBridgeStats")) {
- this.writeBridgeStats = Integer.parseInt(
- line.split(" ")[1]) != 0;
} else if (line.startsWith("WriteDirectoryArchives")) {
this.writeDirectoryArchives = Integer.parseInt(
line.split(" ")[1]) != 0;
@@ -111,14 +100,6 @@ public class Configuration {
line.split(" ")[1]);
} else if (line.startsWith("SanitizedBridgesWriteDirectory")) {
this.sanitizedBridgesWriteDirectory = line.split(" ")[1];
- } else if (line.startsWith("ImportSanitizedBridges")) {
- this.importSanitizedBridges = Integer.parseInt(
- line.split(" ")[1]) != 0;
- } else if (line.startsWith("SanitizedBridgesDirectory")) {
- this.sanitizedBridgesDirectory = line.split(" ")[1];
- } else if (line.startsWith("KeepSanitizedBridgesImportHistory")) {
- this.keepSanitizedBridgesImportHistory = Integer.parseInt(
- line.split(" ")[1]) != 0;
} else if (line.startsWith("ImportBridgeSnapshots")) {
this.importBridgeSnapshots = Integer.parseInt(
line.split(" ")[1]) != 0;
@@ -184,13 +165,11 @@ public class Configuration {
/** Make some checks if configuration is valid. */
if (!this.importCachedRelayDescriptors &&
!this.importDirectoryArchives && !this.downloadRelayDescriptors &&
- !this.importSanitizedBridges && !this.importBridgeSnapshots &&
- !this.importWriteTorperfStats &&
+ !this.importBridgeSnapshots && !this.importWriteTorperfStats &&
!this.downloadProcessGetTorStats && !this.downloadExitList &&
!this.writeDirectoryArchives &&
!this.writeAggregateStatsDatabase &&
- !this.writeSanitizedBridges && !this.writeConsensusStats &&
- !this.writeBridgeStats) {
+ !this.writeSanitizedBridges) {
logger.warning("We have not been configured to read data from any "
+ "data source or write data to any data sink. You need to "
+ "edit your config file (" + configFile.getAbsolutePath()
@@ -199,8 +178,7 @@ public class Configuration {
}
if ((this.importCachedRelayDescriptors ||
this.importDirectoryArchives || this.downloadRelayDescriptors) &&
- !(this.writeDirectoryArchives || this.writeConsensusStats ||
- this.writeBridgeStats)) {
+ !this.writeDirectoryArchives) {
logger.warning("We are configured to import/download relay "
+ "descriptors, but we don't have a single data sink to write "
+ "relay descriptors to.");
@@ -212,23 +190,13 @@ public class Configuration {
+ "least one data sink, but we don't have a single data source "
+ "containing relay descriptors.");
}
- if (!(this.importCachedRelayDescriptors ||
- this.importDirectoryArchives || this.downloadRelayDescriptors ||
- this.importSanitizedBridges || this.importBridgeSnapshots) &&
- (this.writeBridgeStats || this.writeConsensusStats)) {
- logger.warning("We are configured to write relay or bridge "
- + "descriptors to at least one data sink, but we have neither "
- + "data sources containing relay nor bridge descriptors.");
- }
- if ((this.importSanitizedBridges || this.importBridgeSnapshots) &&
- !(this.writeSanitizedBridges || this.writeConsensusStats ||
- this.writeBridgeStats || this.writeAggregateStatsDatabase)) {
+ if (this.importBridgeSnapshots && !(this.writeSanitizedBridges ||
+ this.writeAggregateStatsDatabase)) {
logger.warning("We are configured to import/download bridge "
+ "descriptors, but we don't have a single data sink to write "
+ "bridge descriptors to.");
}
- if (!(this.importSanitizedBridges || this.importBridgeSnapshots) &&
- (this.writeSanitizedBridges)) {
+ if (!this.importBridgeSnapshots && this.writeSanitizedBridges) {
logger.warning("We are configured to write bridge descriptor to at "
+ "least one data sink, but we don't have a single data source "
+ "containing bridge descriptors.");
@@ -239,12 +207,6 @@ public class Configuration {
+ "but not to import them into the database.");
}
}
- public boolean getWriteConsensusStats() {
- return this.writeConsensusStats;
- }
- public boolean getWriteBridgeStats() {
- return this.writeBridgeStats;
- }
public boolean getWriteDirectoryArchives() {
return this.writeDirectoryArchives;
}
@@ -284,15 +246,6 @@ public class Configuration {
public String getSanitizedBridgesWriteDirectory() {
return this.sanitizedBridgesWriteDirectory;
}
- public boolean getImportSanitizedBridges() {
- return this.importSanitizedBridges;
- }
- public String getSanitizedBridgesDirectory() {
- return this.sanitizedBridgesDirectory;
- }
- public boolean getKeepSanitizedBridgesImportHistory() {
- return this.keepSanitizedBridgesImportHistory;
- }
public boolean getImportBridgeSnapshots() {
return this.importBridgeSnapshots;
}
diff --git a/src/org/torproject/ernie/db/ConsensusStatsFileHandler.java b/src/org/torproject/ernie/db/ConsensusStatsFileHandler.java
deleted file mode 100644
index 81e4e3a..0000000
--- a/src/org/torproject/ernie/db/ConsensusStatsFileHandler.java
+++ /dev/null
@@ -1,282 +0,0 @@
-/* Copyright 2010 The Tor Project
- * See LICENSE for licensing information */
-package org.torproject.ernie.db;
-
-import java.io.*;
-import java.sql.*;
-import java.text.*;
-import java.util.*;
-import java.util.logging.*;
-
-/**
- * Generates statistics on the average number of relays and bridges per
- * day. Accepts parse results from <code>RelayDescriptorParser</code> and
- * <code>BridgeDescriptorParser</code> and stores them in intermediate
- * result files <code>stats/consensus-stats-raw</code> and
- * <code>stats/bridge-consensus-stats-raw</code>. Writes final results to
- * <code>stats/consensus-stats</code> for all days for which at least half
- * of the expected consensuses or statuses are known.
- */
-public class ConsensusStatsFileHandler {
-
- /**
- * Intermediate results file holding the number of running bridges per
- * bridge status.
- */
- private File bridgeConsensusStatsRawFile;
-
- /**
- * Number of running bridges in a given bridge status. Map keys are
- * bridge status times formatted as "yyyy-MM-dd HH:mm:ss", map values
- * are lines as read from <code>stats/bridge-consensus-stats-raw</code>.
- */
- private SortedMap<String, String> bridgesRaw;
-
- /**
- * Average number of running bridges per day. Map keys are dates
- * formatted as "yyyy-MM-dd", map values are the last column as written
- * to <code>stats/consensus-stats</code>.
- */
- private SortedMap<String, String> bridgesPerDay;
-
- /**
- * Logger for this class.
- */
- private Logger logger;
-
- private int bridgeResultsAdded = 0;
-
- /* Database connection string. */
- private String connectionURL = null;
-
- /**
- * Initializes this class, including reading in intermediate results
- * files <code>stats/consensus-stats-raw</code> and
- * <code>stats/bridge-consensus-stats-raw</code> and final results file
- * <code>stats/consensus-stats</code>.
- */
- public ConsensusStatsFileHandler(String connectionURL) {
-
- /* Initialize local data structures to hold intermediate and final
- * results. */
- this.bridgesPerDay = new TreeMap<String, String>();
- this.bridgesRaw = new TreeMap<String, String>();
-
- /* Initialize file names for intermediate and final results files. */
- this.bridgeConsensusStatsRawFile = new File(
- "stats/bridge-consensus-stats-raw");
-
- /* Initialize database connection string. */
- this.connectionURL = connectionURL;
-
- /* Initialize logger. */
- this.logger = Logger.getLogger(
- ConsensusStatsFileHandler.class.getName());
-
- /* Read in number of running bridges per bridge status. */
- if (this.bridgeConsensusStatsRawFile.exists()) {
- try {
- this.logger.fine("Reading file "
- + this.bridgeConsensusStatsRawFile.getAbsolutePath() + "...");
- BufferedReader br = new BufferedReader(new FileReader(
- this.bridgeConsensusStatsRawFile));
- String line = null;
- while ((line = br.readLine()) != null) {
- if (line.startsWith("date")) {
- /* Skip headers. */
- continue;
- }
- String[] parts = line.split(",");
- if (parts.length != 2) {
- this.logger.warning("Corrupt line '" + line + "' in file "
- + this.bridgeConsensusStatsRawFile.getAbsolutePath()
- + "! Aborting to read this file!");
- break;
- }
- String dateTime = parts[0];
- this.bridgesRaw.put(dateTime, line);
- }
- br.close();
- this.logger.fine("Finished reading file "
- + this.bridgeConsensusStatsRawFile.getAbsolutePath() + ".");
- } catch (IOException e) {
- this.logger.log(Level.WARNING, "Failed to read file "
- + this.bridgeConsensusStatsRawFile.getAbsolutePath() + "!",
- e);
- }
- }
- }
-
- /**
- * Adds the intermediate results of the number of running bridges in a
- * given bridge status to the existing observations.
- */
- public void addBridgeConsensusResults(String published, int running) {
- String line = published + "," + running;
- if (!this.bridgesRaw.containsKey(published)) {
- this.logger.finer("Adding new bridge numbers: " + line);
- this.bridgesRaw.put(published, line);
- this.bridgeResultsAdded++;
- } else if (!line.equals(this.bridgesRaw.get(published))) {
- this.logger.warning("The numbers of running bridges we were just "
- + "given (" + line + ") are different from what we learned "
- + "before (" + this.bridgesRaw.get(published) + ")! "
- + "Overwriting!");
- this.bridgesRaw.put(published, line);
- }
- }
-
- /**
- * Aggregates the raw observations on relay and bridge numbers and
- * writes both raw and aggregate observations to disk.
- */
- public void writeFiles() {
-
- /* Did we learn anything new about average relay or bridge numbers in
- * this run? */
- boolean writeConsensusStats = false;
-
- /* Go through raw observations of numbers of running bridges in bridge
- * statuses, calculate averages per day, and add these averages to
- * final results. */
- if (!this.bridgesRaw.isEmpty()) {
- String tempDate = null;
- int brunning = 0, statuses = 0;
- Iterator<String> it = this.bridgesRaw.values().iterator();
- boolean haveWrittenFinalLine = false;
- while (it.hasNext() || !haveWrittenFinalLine) {
- String next = it.hasNext() ? it.next() : null;
- /* Finished reading a day or even all lines? */
- if (tempDate != null && (next == null
- || !next.substring(0, 10).equals(tempDate))) {
- /* Only write results if we have seen at least half of all
- * statuses. */
- if (statuses >= 24) {
- String line = "," + (brunning / statuses);
- /* Are our results new? */
- if (!this.bridgesPerDay.containsKey(tempDate)) {
- this.logger.finer("Adding new average bridge numbers: "
- + tempDate + line);
- this.bridgesPerDay.put(tempDate, line);
- writeConsensusStats = true;
- } else if (!line.equals(this.bridgesPerDay.get(tempDate))) {
- this.logger.finer("Replacing existing average bridge "
- + "numbers (" + this.bridgesPerDay.get(tempDate)
- + " with new numbers: " + line);
- this.bridgesPerDay.put(tempDate, line);
- writeConsensusStats = true;
- }
- }
- brunning = statuses = 0;
- haveWrittenFinalLine = (next == null);
- }
- /* Sum up number of running bridges. */
- if (next != null) {
- tempDate = next.substring(0, 10);
- statuses++;
- brunning += Integer.parseInt(next.split(",")[1]);
- }
- }
- }
-
- /* Write raw numbers of running bridges to disk. */
- try {
- this.logger.fine("Writing file "
- + this.bridgeConsensusStatsRawFile.getAbsolutePath() + "...");
- this.bridgeConsensusStatsRawFile.getParentFile().mkdirs();
- BufferedWriter bw = new BufferedWriter(
- new FileWriter(this.bridgeConsensusStatsRawFile));
- bw.append("datetime,brunning\n");
- for (String line : this.bridgesRaw.values()) {
- bw.append(line + "\n");
- }
- bw.close();
- this.logger.fine("Finished writing file "
- + this.bridgeConsensusStatsRawFile.getAbsolutePath() + ".");
- } catch (IOException e) {
- this.logger.log(Level.WARNING, "Failed to write file "
- + this.bridgeConsensusStatsRawFile.getAbsolutePath() + "!",
- e);
- }
-
- /* Add average number of bridges per day to the database. */
- if (connectionURL != null) {
- try {
- Map<String, String> insertRows = new HashMap<String, String>(),
- updateRows = new HashMap<String, String>();
- insertRows.putAll(this.bridgesPerDay);
- Connection conn = DriverManager.getConnection(connectionURL);
- conn.setAutoCommit(false);
- Statement statement = conn.createStatement();
- ResultSet rs = statement.executeQuery(
- "SELECT date, avg_running FROM bridge_network_size");
- while (rs.next()) {
- String date = rs.getDate(1).toString();
- if (insertRows.containsKey(date)) {
- String insertRow = insertRows.remove(date);
- long newAvgRunning = Long.parseLong(insertRow.substring(1));
- long oldAvgRunning = rs.getLong(2);
- if (newAvgRunning != oldAvgRunning) {
- updateRows.put(date, insertRow);
- }
- }
- }
- rs.close();
- PreparedStatement psU = conn.prepareStatement(
- "UPDATE bridge_network_size SET avg_running = ? "
- + "WHERE date = ?");
- for (Map.Entry<String, String> e : updateRows.entrySet()) {
- java.sql.Date date = java.sql.Date.valueOf(e.getKey());
- long avgRunning = Long.parseLong(e.getValue().substring(1));
- psU.clearParameters();
- psU.setLong(1, avgRunning);
- psU.setDate(2, date);
- psU.executeUpdate();
- }
- PreparedStatement psI = conn.prepareStatement(
- "INSERT INTO bridge_network_size (avg_running, date) "
- + "VALUES (?, ?)");
- for (Map.Entry<String, String> e : insertRows.entrySet()) {
- java.sql.Date date = java.sql.Date.valueOf(e.getKey());
- long avgRunning = Long.parseLong(e.getValue().substring(1));
- psI.clearParameters();
- psI.setLong(1, avgRunning);
- psI.setDate(2, date);
- psI.executeUpdate();
- }
- conn.commit();
- conn.close();
- } catch (SQLException e) {
- logger.log(Level.WARNING, "Failed to add average bridge numbers "
- + "to database.", e);
- }
- }
-
- /* Write stats. */
- StringBuilder dumpStats = new StringBuilder("Finished writing "
- + "statistics on bridge network statuses to disk.\nAdded "
- + this.bridgeResultsAdded + " bridge network status(es) in this "
- + "execution.");
- long now = System.currentTimeMillis();
- SimpleDateFormat dateTimeFormat =
- new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
- dateTimeFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
- if (this.bridgesRaw.isEmpty()) {
- dumpStats.append("\nNo bridge status known yet.");
- } else {
- dumpStats.append("\nLast known bridge status was published "
- + this.bridgesRaw.lastKey() + ".");
- try {
- if (now - 6L * 60L * 60L * 1000L > dateTimeFormat.parse(
- this.bridgesRaw.lastKey()).getTime()) {
- logger.warning("Last known bridge status is more than 6 hours "
- + "old: " + this.bridgesRaw.lastKey());
- }
- } catch (ParseException e) {
- /* Can't parse the timestamp? Whatever. */
- }
- }
- logger.info(dumpStats.toString());
- }
-}
-
diff --git a/src/org/torproject/ernie/db/Main.java b/src/org/torproject/ernie/db/Main.java
index 4dced2c..2dc0c86 100644
--- a/src/org/torproject/ernie/db/Main.java
+++ b/src/org/torproject/ernie/db/Main.java
@@ -33,12 +33,6 @@ public class Main {
// Define stats directory for temporary files
File statsDirectory = new File("stats");
- // Prepare bridge stats file handler
- BridgeStatsFileHandler bsfh = config.getWriteBridgeStats() ?
- new BridgeStatsFileHandler(
- config.getWriteAggregateStatsDatabase() ?
- config.getRelayDescriptorDatabaseJDBC() : null) : null;
-
// Prepare writing relay descriptor archive to disk
ArchiveWriter aw = config.getWriteDirectoryArchives() ?
new ArchiveWriter(
@@ -46,9 +40,8 @@ public class Main {
// Prepare relay descriptor parser (only if we are writing stats or
// directory archives to disk)
- RelayDescriptorParser rdp = config.getWriteBridgeStats() ||
- config.getWriteDirectoryArchives() ?
- new RelayDescriptorParser(bsfh, aw) : null;
+ RelayDescriptorParser rdp = aw != null ?
+ new RelayDescriptorParser(aw) : null;
// Import/download relay descriptors from the various sources
if (rdp != null) {
@@ -56,7 +49,7 @@ public class Main {
if (config.getDownloadRelayDescriptors()) {
List<String> dirSources =
config.getDownloadFromDirectoryAuthorities();
- boolean downloadCurrentConsensus = aw != null || bsfh != null;
+ boolean downloadCurrentConsensus = aw != null;
boolean downloadCurrentVotes = aw != null;
boolean downloadAllServerDescriptors = aw != null;
boolean downloadAllExtraInfos = aw != null;
@@ -100,12 +93,6 @@ public class Main {
aw = null;
}
- // Prepare consensus stats file handler
- ConsensusStatsFileHandler csfh = config.getWriteConsensusStats() ?
- new ConsensusStatsFileHandler(
- config.getWriteAggregateStatsDatabase() ?
- config.getRelayDescriptorDatabaseJDBC() : null) : null;
-
// Prepare sanitized bridge descriptor writer
SanitizedBridgesWriter sbw = config.getWriteSanitizedBridges() ?
new SanitizedBridgesWriter(
@@ -114,16 +101,10 @@ public class Main {
config.getLimitBridgeDescriptorMappings()) : null;
// Prepare bridge descriptor parser
- BridgeDescriptorParser bdp = config.getWriteConsensusStats() ||
- config.getWriteBridgeStats() || config.getWriteSanitizedBridges()
- ? new BridgeDescriptorParser(csfh, bsfh, sbw) : null;
+ BridgeDescriptorParser bdp = config.getWriteSanitizedBridges()
+ ? new BridgeDescriptorParser(sbw) : null;
// Import bridge descriptors
- if (bdp != null && config.getImportSanitizedBridges()) {
- new SanitizedBridgesReader(bdp,
- new File(config.getSanitizedBridgesDirectory()),
- statsDirectory, config.getKeepSanitizedBridgesImportHistory());
- }
if (bdp != null && config.getImportBridgeSnapshots()) {
new BridgeSnapshotReader(bdp,
new File(config.getBridgeSnapshotsDirectory()),
@@ -136,16 +117,6 @@ public class Main {
sbw = null;
}
- // Write updated stats files to disk
- if (bsfh != null) {
- bsfh.writeFiles();
- bsfh = null;
- }
- if (csfh != null) {
- csfh.writeFiles();
- csfh = null;
- }
-
// Import and process torperf stats
if (config.getImportWriteTorperfStats()) {
new TorperfProcessor(new File(config.getTorperfDirectory()),
diff --git a/src/org/torproject/ernie/db/RelayDescriptorParser.java b/src/org/torproject/ernie/db/RelayDescriptorParser.java
index fcfc0eb..bfd0033 100644
--- a/src/org/torproject/ernie/db/RelayDescriptorParser.java
+++ b/src/org/torproject/ernie/db/RelayDescriptorParser.java
@@ -18,11 +18,6 @@ import org.apache.commons.codec.binary.*;
public class RelayDescriptorParser {
/**
- * Stats file handler that accepts parse results for bridge statistics.
- */
- private BridgeStatsFileHandler bsfh;
-
- /**
* File writer that writes descriptor contents to files in a
* directory-archive directory structure.
*/
@@ -44,9 +39,7 @@ public class RelayDescriptorParser {
/**
* Initializes this class.
*/
- public RelayDescriptorParser(BridgeStatsFileHandler bsfh,
- ArchiveWriter aw) {
- this.bsfh = bsfh;
+ public RelayDescriptorParser(ArchiveWriter aw) {
this.aw = aw;
/* Initialize logger. */
@@ -121,11 +114,6 @@ public class RelayDescriptorParser {
}
}
if (isConsensus) {
- if (this.bsfh != null) {
- for (String hashedRelayIdentity : hashedRelayIdentities) {
- this.bsfh.addHashedRelay(hashedRelayIdentity);
- }
- }
if (this.rdd != null) {
this.rdd.haveParsedConsensus(validAfterTime, dirSources,
serverDescriptors);
diff --git a/src/org/torproject/ernie/db/SanitizedBridgesReader.java b/src/org/torproject/ernie/db/SanitizedBridgesReader.java
deleted file mode 100644
index 2ddf1dd..0000000
--- a/src/org/torproject/ernie/db/SanitizedBridgesReader.java
+++ /dev/null
@@ -1,114 +0,0 @@
-/* Copyright 2010 The Tor Project
- * See LICENSE for licensing information */
-package org.torproject.ernie.db;
-
-import java.io.*;
-import java.util.*;
-import java.util.logging.*;
-
-public class SanitizedBridgesReader {
- public SanitizedBridgesReader(BridgeDescriptorParser bdp,
- File bridgesDir, File statsDirectory, boolean keepImportHistory) {
-
- if (bdp == null || bridgesDir == null || statsDirectory == null) {
- throw new IllegalArgumentException();
- }
-
- Logger logger =
- Logger.getLogger(SanitizedBridgesReader.class.getName());
- SortedSet<String> bridgesImportHistory = new TreeSet<String>();
- File bridgesImportHistoryFile =
- new File(statsDirectory, "bridges-import-history");
- if (keepImportHistory && bridgesImportHistoryFile.exists()) {
- try {
- BufferedReader br = new BufferedReader(new FileReader(
- bridgesImportHistoryFile));
- String line = null;
- while ((line = br.readLine()) != null) {
- bridgesImportHistory.add(line);
- }
- br.close();
- } catch (IOException e) {
- logger.log(Level.WARNING, "Could not read in bridge descriptor "
- + "import history file. Skipping.");
- }
- }
- if (bridgesDir.exists()) {
- logger.fine("Importing files in directory " + bridgesDir + "/...");
- Stack<File> filesInInputDir = new Stack<File>();
- filesInInputDir.add(bridgesDir);
- List<File> problems = new ArrayList<File>();
- while (!filesInInputDir.isEmpty()) {
- File pop = filesInInputDir.pop();
- if (pop.isDirectory()) {
- for (File f : pop.listFiles()) {
- filesInInputDir.add(f);
- }
- continue;
- } else if (keepImportHistory && bridgesImportHistory.contains(
- pop.getName())) {
- continue;
- } else {
- try {
- BufferedInputStream bis = new BufferedInputStream(
- new FileInputStream(pop));
- ByteArrayOutputStream baos = new ByteArrayOutputStream();
- int len;
- byte[] data = new byte[1024];
- while ((len = bis.read(data, 0, 1024)) >= 0) {
- baos.write(data, 0, len);
- }
- bis.close();
- byte[] allData = baos.toByteArray();
- String fn = pop.getName();
- // TODO dateTime extraction doesn't work for sanitized network
- // statuses!
- String dateTime = fn.substring(0, 4) + "-" + fn.substring(4, 6)
- + "-" + fn.substring(6, 8) + " " + fn.substring(9, 11)
- + ":" + fn.substring(11, 13) + ":" + fn.substring(13, 15);
- bdp.parse(allData, dateTime, true);
- if (keepImportHistory) {
- bridgesImportHistory.add(pop.getName());
- }
- } catch (IOException e) {
- problems.add(pop);
- if (problems.size() > 3) {
- break;
- }
- }
- }
- }
- if (problems.isEmpty()) {
- logger.fine("Finished importing files in directory " + bridgesDir
- + "/.");
- } else {
- StringBuilder sb = new StringBuilder("Failed importing files in "
- + "directory " + bridgesDir + "/:");
- int printed = 0;
- for (File f : problems) {
- sb.append("\n " + f.getAbsolutePath());
- if (++printed >= 3) {
- sb.append("\n ... more");
- break;
- }
- }
- logger.warning(sb.toString());
- }
- if (keepImportHistory) {
- try {
- bridgesImportHistoryFile.getParentFile().mkdirs();
- BufferedWriter bw = new BufferedWriter(new FileWriter(
- bridgesImportHistoryFile));
- for (String line : bridgesImportHistory) {
- bw.write(line + "\n");
- }
- bw.close();
- } catch (IOException e) {
- logger.log(Level.WARNING, "Could not write bridge descriptor "
- + "import history file.");
- }
- }
- }
- }
-}
-
diff --git a/src/org/torproject/ernie/test/SanitizedBridgesReaderTest.java b/src/org/torproject/ernie/test/SanitizedBridgesReaderTest.java
deleted file mode 100644
index dd5f31e..0000000
--- a/src/org/torproject/ernie/test/SanitizedBridgesReaderTest.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/* Copyright 2011 The Tor Project
- * See LICENSE for licensing information */
-package org.torproject.ernie.test;
-
-import org.torproject.ernie.db.*;
-
-import java.io.*;
-
-import org.junit.*;
-import org.junit.rules.*;
-import static org.junit.Assert.*;
-
-public class SanitizedBridgesReaderTest {
-
- private File tempSanitizedBridgesDirectory;
- private File tempStatsDirectory;
-
- @Rule
- public TemporaryFolder folder = new TemporaryFolder();
-
- @Before
- public void createTempDirectories() {
- this.tempSanitizedBridgesDirectory = folder.newFolder("bridges");
- this.tempStatsDirectory = folder.newFolder("stats");
- }
-
- @Test(expected = IllegalArgumentException.class)
- public void testBridgeDescriptorParserNull() {
- new SanitizedBridgesReader(null, this.tempSanitizedBridgesDirectory,
- this.tempStatsDirectory, false);
- }
-}
-
1
0

[metrics-web/master] Prepare bridge statistics as part of metrics-web.
by karsten@torproject.org 03 Mar '11
by karsten@torproject.org 03 Mar '11
03 Mar '11
commit d547c8ecbadca64b046a041d94e80dddbeecc8c3
Author: Karsten Loesing <karsten.loesing(a)gmx.net>
Date: Wed Mar 2 20:31:42 2011 +0100
Prepare bridge statistics as part of metrics-web.
---
build.xml | 1 +
config.template | 15 +
lib/junit-4.8.2.jar | Bin 0 -> 237344 bytes
.../ernie/cron/BridgeDescriptorParser.java | 141 ++++++
.../ernie/cron/BridgeStatsFileHandler.java | 519 ++++++++++++++++++++
src/org/torproject/ernie/cron/Configuration.java | 27 +
.../ernie/cron/ConsensusStatsFileHandler.java | 282 +++++++++++
src/org/torproject/ernie/cron/Main.java | 34 ++-
.../ernie/cron/RelayDescriptorParser.java | 17 +-
.../ernie/cron/SanitizedBridgesReader.java | 114 +++++
.../ernie/test/SanitizedBridgesReaderTest.java | 33 ++
11 files changed, 1181 insertions(+), 2 deletions(-)
diff --git a/build.xml b/build.xml
index 446572b..cdae4e1 100644
--- a/build.xml
+++ b/build.xml
@@ -14,6 +14,7 @@
<pathelement path="${classes}"/>
<pathelement location="lib/commons-codec-1.4.jar"/>
<pathelement location="lib/postgresql-8.4-702.jdbc3.jar"/>
+ <pathelement location="lib/junit-4.8.2.jar"/>
</path>
<target name="init">
diff --git a/config.template b/config.template
index 1d0701c..f2dc9cb 100644
--- a/config.template
+++ b/config.template
@@ -10,6 +10,18 @@
## again, but it can be confusing to users who don't know about it.
#KeepDirectoryArchiveImportHistory 0
#
+## Import sanitized bridges from disk, if available
+#ImportSanitizedBridges 0
+#
+## Relative path to directory to import sanitized bridges from
+#SanitizedBridgesDirectory bridges/
+#
+## Keep a history of imported sanitized bridge descriptors. This history
+## can be useful when importing from a changing data source to avoid
+## importing descriptors more than once, but it can be confusing to users
+## who don't know about it.
+#KeepSanitizedBridgesImportHistory 0
+#
## Write relay descriptors to the database
#WriteRelayDescriptorDatabase 0
#
@@ -27,4 +39,7 @@
## Write statistics about the current consensus and votes to the
## website
#WriteConsensusHealth 0
+#
+## Write bridge stats to disk
+#WriteBridgeStats 0
diff --git a/lib/junit-4.8.2.jar b/lib/junit-4.8.2.jar
new file mode 100644
index 0000000..5b4bb84
Binary files /dev/null and b/lib/junit-4.8.2.jar differ
diff --git a/src/org/torproject/ernie/cron/BridgeDescriptorParser.java b/src/org/torproject/ernie/cron/BridgeDescriptorParser.java
new file mode 100644
index 0000000..4777f58
--- /dev/null
+++ b/src/org/torproject/ernie/cron/BridgeDescriptorParser.java
@@ -0,0 +1,141 @@
+/* Copyright 2011 The Tor Project
+ * See LICENSE for licensing information */
+package org.torproject.ernie.cron;
+
+import java.io.*;
+import java.text.*;
+import java.util.*;
+import java.util.logging.*;
+import org.apache.commons.codec.digest.*;
+
+public class BridgeDescriptorParser {
+ private ConsensusStatsFileHandler csfh;
+ private BridgeStatsFileHandler bsfh;
+ private Logger logger;
+ public BridgeDescriptorParser(ConsensusStatsFileHandler csfh,
+ BridgeStatsFileHandler bsfh) {
+ this.csfh = csfh;
+ this.bsfh = bsfh;
+ this.logger =
+ Logger.getLogger(BridgeDescriptorParser.class.getName());
+ }
+ public void parse(byte[] allData, String dateTime, boolean sanitized) {
+ try {
+ BufferedReader br = new BufferedReader(new StringReader(
+ new String(allData, "US-ASCII")));
+ SimpleDateFormat timeFormat = new SimpleDateFormat(
+ "yyyy-MM-dd HH:mm:ss");
+ timeFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
+ String hashedIdentity = null, platformLine = null,
+ publishedLine = null, geoipStartTimeLine = null,
+ bridgeStatsEndLine = null;
+ boolean skip = false;
+ String line = null;
+ while ((line = br.readLine()) != null) {
+ if (line.startsWith("r ")) {
+ int runningBridges = 0;
+ while ((line = br.readLine()) != null) {
+ if (line.startsWith("s ") && line.contains(" Running")) {
+ runningBridges++;
+ }
+ }
+ if (this.csfh != null) {
+ this.csfh.addBridgeConsensusResults(dateTime, runningBridges);
+ }
+ } else if (line.startsWith("router ")) {
+ } else if (line.startsWith("extra-info ")) {
+ hashedIdentity = sanitized ? line.split(" ")[2]
+ : DigestUtils.shaHex(line.split(" ")[2]).toUpperCase();
+ if (this.bsfh != null) {
+ skip = this.bsfh.isKnownRelay(hashedIdentity);
+ }
+ } else if (!skip && line.startsWith("platform ")) {
+ platformLine = line;
+ } else if (!skip && line.startsWith("published ")) {
+ publishedLine = line;
+ } else if (line.startsWith("opt fingerprint") ||
+ line.startsWith("fingerprint")) {
+ String identity = line.substring(line.startsWith("opt ") ?
+ "opt fingerprint".length() : "fingerprint".length()).
+ replaceAll(" ", "").toLowerCase();
+ hashedIdentity = sanitized ? identity
+ : DigestUtils.shaHex(identity).toUpperCase();
+ } else if (!skip && line.startsWith("geoip-start-time ")) {
+ geoipStartTimeLine = line;
+ } else if (!skip && line.startsWith("geoip-client-origins")
+ && line.split(" ").length > 1) {
+ if (publishedLine == null ||
+ geoipStartTimeLine == null) {
+ this.logger.warning("Either published line or "
+ + "geoip-start-time line is not present in "
+ + (sanitized ? "sanitized" : "non-sanitized")
+ + " bridge descriptors from " + dateTime + ".");
+ break;
+ }
+ long published = timeFormat.parse(publishedLine.
+ substring("published ".length())).getTime();
+ long started = timeFormat.parse(geoipStartTimeLine.
+ substring("geoip-start-time ".length())).getTime();
+ long seconds = (published - started) / 1000L;
+ double allUsers = 0.0D;
+ Map<String, String> obs = new HashMap<String, String>();
+ String[] parts = line.split(" ")[1].split(",");
+ for (String p : parts) {
+ String country = p.substring(0, 2);
+ double users = ((double) Long.parseLong(p.substring(3)) - 4L)
+ * 86400.0D / ((double) seconds);
+ allUsers += users;
+ obs.put(country, String.format("%.2f", users));
+ }
+ obs.put("zy", String.format("%.2f", allUsers));
+ String date = publishedLine.split(" ")[1];
+ String time = publishedLine.split(" ")[2];
+ if (this.bsfh != null) {
+ this.bsfh.addObs(hashedIdentity, date, time, obs);
+ }
+ } else if (!skip && line.startsWith("bridge-stats-end ")) {
+ bridgeStatsEndLine = line;
+ } else if (!skip && line.startsWith("bridge-ips")
+ && line.split(" ").length > 1) {
+ if (bridgeStatsEndLine == null) {
+ this.logger.warning("bridge-ips line without preceding "
+ + "bridge-stats-end line in "
+ + (sanitized ? "sanitized" : "non-sanitized")
+ + " bridge descriptor.");
+ break;
+ }
+ double allUsers = 0.0D;
+ Map<String, String> obs = new HashMap<String, String>();
+ String[] parts = line.split(" ")[1].split(",");
+ for (String p : parts) {
+ String country = p.substring(0, 2);
+ double users = (double) Long.parseLong(p.substring(3)) - 4L;
+ allUsers += users;
+ obs.put(country, String.format("%.2f", users));
+ }
+ obs.put("zy", String.format("%.2f", allUsers));
+ String date = bridgeStatsEndLine.split(" ")[1];
+ String time = bridgeStatsEndLine.split(" ")[2];
+ if (this.bsfh != null) {
+ this.bsfh.addObs(hashedIdentity, date, time, obs);
+ }
+ }
+ }
+ if (this.bsfh != null && platformLine != null &&
+ platformLine.startsWith("platform Tor 0.2.2")) {
+ String date = publishedLine.split(" ")[1];
+ String time = publishedLine.split(" ")[2];
+ this.bsfh.addZeroTwoTwoDescriptor(hashedIdentity, date, time);
+ }
+ } catch (IOException e) {
+ this.logger.log(Level.WARNING, "Could not parse bridge descriptor.",
+ e);
+ return;
+ } catch (ParseException e) {
+ this.logger.log(Level.WARNING, "Could not parse bridge descriptor.",
+ e);
+ return;
+ }
+ }
+}
+
diff --git a/src/org/torproject/ernie/cron/BridgeStatsFileHandler.java b/src/org/torproject/ernie/cron/BridgeStatsFileHandler.java
new file mode 100644
index 0000000..58ee3a2
--- /dev/null
+++ b/src/org/torproject/ernie/cron/BridgeStatsFileHandler.java
@@ -0,0 +1,519 @@
+/* Copyright 2011 The Tor Project
+ * See LICENSE for licensing information */
+package org.torproject.ernie.cron;
+
+import java.io.*;
+import java.sql.*;
+import java.text.*;
+import java.util.*;
+import java.util.logging.*;
+
+/**
+ * Determines estimates of bridge users per country and day from the
+ * extra-info descriptors that bridges publish. In a first step, the
+ * number of unique IP addresses that bridges see are normalized to a
+ * 24-hour period. In the next step, all bridges are excluded that have
+ * been running as a relay. Finally, observations are summed up and
+ * written to <code>stats/bridge-stats</code>.
+ */
+public class BridgeStatsFileHandler {
+
+ /**
+ * Two-letter country codes of known countries.
+ */
+ private SortedSet<String> countries;
+
+ /**
+ * Intermediate results file containing bridge user numbers by country
+ * as seen by single bridges, normalized to 24-hour periods.
+ */
+ private File bridgeStatsRawFile;
+
+ /**
+ * Bridge user numbers by country as seen by single bridges on a given
+ * day. Map keys are bridge and date written as "bridge,date", map
+ * values are lines as read from <code>stats/bridge-stats-raw</code>.
+ */
+ private SortedMap<String, Map<String, String>> bridgeUsersRaw;
+
+ /**
+ * Helper file containing the hashed relay identities of all known
+ * relays. These hashes are compared to the bridge identity hashes to
+ * exclude bridges that have been known as relays from the statistics.
+ */
+ private File hashedRelayIdentitiesFile;
+
+ /**
+ * Known hashed relay identities used to exclude bridges that have been
+ * running as relays.
+ */
+ private SortedSet<String> hashedRelays;
+
+ /**
+ * Helper file containing extra-info descriptors published by 0.2.2.x
+ * bridges. If these descriptors contain geoip-stats, they are not
+ * included in the results, because stats are very likely broken.
+ */
+ private File zeroTwoTwoDescriptorsFile;
+
+ /**
+ * Extra-info descriptors published by 0.2.2.x bridges. If these
+ * descriptors contain geoip-stats, they are not included in the
+ * results, because stats are very likely broken.
+ */
+ private SortedSet<String> zeroTwoTwoDescriptors;
+
+ /**
+ * Final results file containing the number of bridge users per country
+ * and day. This file is not read in during initialization, but
+ * overwritten at the end of the execution.
+ */
+ private File bridgeStatsFile;
+
+ /**
+ * Logger for this class.
+ */
+ private Logger logger;
+
+ /* Database connection string. */
+ private String connectionURL = null;
+
+ /**
+ * Initializes this class, including reading in intermediate results
+ * files <code>stats/bridge-stats-raw</code> and
+ * <code>stats/hashed-relay-identities</code>.
+ */
+ public BridgeStatsFileHandler(String connectionURL) {
+
+ /* Initialize set of known countries. */
+ this.countries = new TreeSet<String>();
+ this.countries.add("zy");
+
+ /* Initialize local data structures to hold results. */
+ this.bridgeUsersRaw = new TreeMap<String, Map<String, String>>();
+ this.hashedRelays = new TreeSet<String>();
+ this.zeroTwoTwoDescriptors = new TreeSet<String>();
+
+ /* Initialize file names for intermediate and final results. */
+ this.bridgeStatsRawFile = new File("stats/bridge-stats-raw");
+ this.bridgeStatsFile = new File("stats/bridge-stats");
+ this.hashedRelayIdentitiesFile = new File(
+ "stats/hashed-relay-identities");
+ this.zeroTwoTwoDescriptorsFile = new File(
+ "stats/v022-bridge-descriptors");
+
+ /* Initialize database connection string. */
+ this.connectionURL = connectionURL;
+
+ /* Initialize logger. */
+ this.logger = Logger.getLogger(
+ BridgeStatsFileHandler.class.getName());
+
+ /* Read in bridge user numbers by country as seen by single bridges,
+ * normalized to 24-hour periods. */
+ if (this.bridgeStatsRawFile.exists()) {
+ try {
+ this.logger.fine("Reading file "
+ + this.bridgeStatsRawFile.getAbsolutePath() + "...");
+ BufferedReader br = new BufferedReader(new FileReader(
+ this.bridgeStatsRawFile));
+ String line = br.readLine();
+ if (line != null) {
+ /* The first line should contain headers that we need to parse
+ * in order to learn what countries we were interested in when
+ * writing this file. */
+ if (!line.startsWith("bridge,date,time,")) {
+ this.logger.warning("Incorrect first line '" + line + "' in "
+ + this.bridgeStatsRawFile.getAbsolutePath() + "! This line "
+ + "should contain headers! Aborting to read in this "
+ + "file!");
+ } else {
+ String[] headers = line.split(",");
+ for (int i = 3; i < headers.length; i++) {
+ if (!headers[i].equals("all")) {
+ this.countries.add(headers[i]);
+ }
+ }
+ /* Read in the rest of the file. */
+ while ((line = br.readLine()) != null) {
+ String[] parts = line.split(",");
+ if (parts.length != headers.length) {
+ this.logger.warning("Corrupt line '" + line + "' in file "
+ + this.bridgeStatsRawFile.getAbsolutePath()
+ + "! Aborting to read this file!");
+ break;
+ }
+ String hashedBridgeIdentity = parts[0];
+ String date = parts[1];
+ String time = parts[2];
+ SortedMap<String, String> obs =
+ new TreeMap<String, String>();
+ for (int i = 3; i < parts.length; i++) {
+ if (parts[i].equals("NA")) {
+ continue;
+ }
+ if (headers[i].equals("all")) {
+ obs.put("zy", parts[i]);
+ } else {
+ obs.put(headers[i], parts[i]);
+ }
+ }
+ this.addObs(hashedBridgeIdentity, date, time, obs);
+ }
+ }
+ }
+ br.close();
+ this.logger.fine("Finished reading file "
+ + this.bridgeStatsRawFile.getAbsolutePath() + ".");
+ } catch (IOException e) {
+ this.logger.log(Level.WARNING, "Failed to read file "
+ + this.bridgeStatsRawFile.getAbsolutePath() + "!", e);
+ }
+ }
+
+ /* Read in known hashed relay identities used to exclude bridges that
+ * have been running as relays. */
+ if (this.hashedRelayIdentitiesFile.exists()) {
+ try {
+ this.logger.fine("Reading file "
+ + this.hashedRelayIdentitiesFile.getAbsolutePath() + "...");
+ BufferedReader br = new BufferedReader(new FileReader(
+ this.hashedRelayIdentitiesFile));
+ String line = null;
+ /* Read in all lines from the file and memorize them. */
+ while ((line = br.readLine()) != null) {
+ this.hashedRelays.add(line);
+ }
+ br.close();
+ this.logger.fine("Finished reading file "
+ + this.hashedRelayIdentitiesFile.getAbsolutePath() + ".");
+ } catch (IOException e) {
+ this.logger.log(Level.WARNING, "Failed to read file "
+ + this.hashedRelayIdentitiesFile.getAbsolutePath() + "!", e);
+ }
+ }
+
+ /* Read in known extra-info descriptors published by 0.2.2.x
+ * bridges. */
+ if (this.zeroTwoTwoDescriptorsFile.exists()) {
+ try {
+ this.logger.fine("Reading file "
+ + this.zeroTwoTwoDescriptorsFile.getAbsolutePath() + "...");
+ BufferedReader br = new BufferedReader(new FileReader(
+ this.zeroTwoTwoDescriptorsFile));
+ String line = null;
+ /* Read in all lines from the file and memorize them. */
+ while ((line = br.readLine()) != null) {
+ this.zeroTwoTwoDescriptors.add(line);
+ }
+ br.close();
+ this.logger.fine("Finished reading file "
+ + this.zeroTwoTwoDescriptorsFile.getAbsolutePath() + ".");
+ } catch (IOException e) {
+ this.logger.log(Level.WARNING, "Failed to read file "
+ + this.zeroTwoTwoDescriptorsFile.getAbsolutePath() + "!", e);
+ }
+ }
+ }
+
+ /**
+ * Adds a hashed relay identity string to the list of bridges that we
+ * are going to ignore in the future. If we counted user numbers from
+ * bridges that have been running as relays, our numbers would be far
+ * higher than what we think is correct.
+ */
+ public void addHashedRelay(String hashedRelayIdentity) {
+ if (!this.hashedRelays.contains(hashedRelayIdentity)) {
+ this.logger.finer("Adding new hashed relay identity: "
+ + hashedRelayIdentity);
+ this.hashedRelays.add(hashedRelayIdentity);
+ }
+ }
+
+ /**
+ * Adds an extra-info descriptor identifier published by an 0.2.2.x
+ * bridges. If this extra-info descriptor contains geoip-stats, they are
+ * not included in the results, because stats are very likely broken.
+ */
+ public void addZeroTwoTwoDescriptor(String hashedBridgeIdentity,
+ String date, String time) {
+ String value = hashedBridgeIdentity.toUpperCase() + "," + date + ","
+ + time;
+ if (!this.zeroTwoTwoDescriptors.contains(value)) {
+ this.logger.finer("Adding new bridge 0.2.2.x extra-info "
+ + "descriptor: " + value);
+ this.zeroTwoTwoDescriptors.add(value);
+ }
+ }
+
+ /**
+ * Returns whether the given fingerprint is a known hashed relay
+ * identity. <code>BridgeDescriptorParser</code> uses this information
+ * to decide whether to continue parsing a bridge extra-descriptor
+ * descriptor or not.
+ */
+ public boolean isKnownRelay(String hashedBridgeIdentity) {
+ return this.hashedRelays.contains(hashedBridgeIdentity);
+ }
+
+ /**
+ * Adds bridge user numbers by country as seen by a single bridge on a
+ * given date and time. Bridges can publish statistics on unique IP
+ * addresses multiple times a day, but we only want to include one
+ * observation per day. If we already have an observation from the given
+ * bridge and day, we keep the one with the later publication time and
+ * discard the other one.
+ */
+ public void addObs(String hashedIdentity, String date, String time,
+ Map<String, String> obs) {
+ for (String country : obs.keySet()) {
+ this.countries.add(country);
+ }
+ String shortKey = hashedIdentity + "," + date;
+ String longKey = shortKey + "," + time;
+ SortedMap<String, Map<String, String>> tailMap =
+ this.bridgeUsersRaw.tailMap(shortKey);
+ String nextKey = tailMap.isEmpty() ? null : tailMap.firstKey();
+ if (nextKey == null || !nextKey.startsWith(shortKey)) {
+ this.logger.finer("Adding new bridge user numbers for key "
+ + longKey);
+ this.bridgeUsersRaw.put(longKey, obs);
+ } else if (longKey.compareTo(nextKey) > 0) {
+ this.logger.finer("Replacing existing bridge user numbers (" +
+ nextKey + " with new numbers: " + longKey);
+ this.bridgeUsersRaw.put(longKey, obs);
+ } else {
+ this.logger.finer("Not replacing existing bridge user numbers (" +
+ nextKey + " with new numbers (" + longKey + ").");
+ }
+ }
+
+ /**
+ * Writes the list of hashed relay identities and bridge user numbers as
+ * observed by single bridges to disk, aggregates per-day statistics for
+ * all bridges, and writes those to disk, too.
+ */
+ public void writeFiles() {
+
+ /* Write hashed relay identities to disk. */
+ try {
+ this.logger.fine("Writing file "
+ + this.hashedRelayIdentitiesFile.getAbsolutePath() + "...");
+ this.hashedRelayIdentitiesFile.getParentFile().mkdirs();
+ BufferedWriter bw = new BufferedWriter(new FileWriter(
+ this.hashedRelayIdentitiesFile));
+ for (String hashedRelay : this.hashedRelays) {
+ bw.append(hashedRelay + "\n");
+ }
+ bw.close();
+ this.logger.fine("Finished writing file "
+ + this.hashedRelayIdentitiesFile.getAbsolutePath() + ".");
+ } catch (IOException e) {
+ this.logger.log(Level.WARNING, "Failed to write "
+ + this.hashedRelayIdentitiesFile.getAbsolutePath() + "!", e);
+ }
+
+ /* Write bridge extra-info descriptor identifiers to disk. */
+ try {
+ this.logger.fine("Writing file "
+ + this.zeroTwoTwoDescriptorsFile.getAbsolutePath() + "...");
+ this.zeroTwoTwoDescriptorsFile.getParentFile().mkdirs();
+ BufferedWriter bw = new BufferedWriter(new FileWriter(
+ this.zeroTwoTwoDescriptorsFile));
+ for (String descriptorIdentifier : this.zeroTwoTwoDescriptors) {
+ bw.append(descriptorIdentifier + "\n");
+ }
+ bw.close();
+ this.logger.fine("Finished writing file "
+ + this.zeroTwoTwoDescriptorsFile.getAbsolutePath() + ".");
+ } catch (IOException e) {
+ this.logger.log(Level.WARNING, "Failed to write "
+ + this.zeroTwoTwoDescriptorsFile.getAbsolutePath() + "!", e);
+ }
+
+ /* Write observations made by single bridges to disk. */
+ try {
+ this.logger.fine("Writing file "
+ + this.bridgeStatsRawFile.getAbsolutePath() + "...");
+ this.bridgeStatsRawFile.getParentFile().mkdirs();
+ BufferedWriter bw = new BufferedWriter(new FileWriter(
+ this.bridgeStatsRawFile));
+ bw.append("bridge,date,time");
+ for (String c : this.countries) {
+ if (c.equals("zy")) {
+ bw.append(",all");
+ } else {
+ bw.append("," + c);
+ }
+ }
+ bw.append("\n");
+ for (Map.Entry<String, Map<String, String>> e :
+ this.bridgeUsersRaw.entrySet()) {
+ String longKey = e.getKey();
+ String[] parts = longKey.split(",");
+ String hashedBridgeIdentity = parts[0];
+ String date = parts[1];
+ String time = parts[2];
+ if (!this.hashedRelays.contains(hashedBridgeIdentity) &&
+ !this.zeroTwoTwoDescriptors.contains(longKey)) {
+ Map<String, String> obs = e.getValue();
+ StringBuilder sb = new StringBuilder(longKey);
+ for (String c : this.countries) {
+ sb.append("," + (obs.containsKey(c) &&
+ !obs.get(c).startsWith("-") ? obs.get(c) : "NA"));
+ }
+ String line = sb.toString();
+ bw.append(line + "\n");
+ }
+ }
+ bw.close();
+ this.logger.fine("Finished writing file "
+ + this.bridgeStatsRawFile.getAbsolutePath() + ".");
+ } catch (IOException e) {
+ this.logger.log(Level.WARNING, "Failed to write "
+ + this.bridgeStatsRawFile.getAbsolutePath() + "!", e);
+ }
+
+ /* Aggregate per-day statistics. */
+ SortedMap<String, double[]> bridgeUsersPerDay =
+ new TreeMap<String, double[]>();
+ for (Map.Entry<String, Map<String, String>> e :
+ this.bridgeUsersRaw.entrySet()) {
+ String longKey = e.getKey();
+ String[] parts = longKey.split(",");
+ String hashedBridgeIdentity = parts[0];
+ String date = parts[1];
+ String time = parts[2];
+ if (!this.hashedRelays.contains(hashedBridgeIdentity) &&
+ !this.zeroTwoTwoDescriptors.contains(longKey)) {
+ double[] users = bridgeUsersPerDay.get(date);
+ Map<String, String> obs = e.getValue();
+ if (users == null) {
+ users = new double[this.countries.size()];
+ bridgeUsersPerDay.put(date, users);
+ }
+ int i = 0;
+ for (String c : this.countries) {
+ if (obs.containsKey(c) && !obs.get(c).startsWith("-")) {
+ users[i] += Double.parseDouble(obs.get(c));
+ }
+ i++;
+ }
+ }
+ }
+
+ /* Write final results of bridge users per day and country to
+ * <code>stats/bridge-stats</code>. */
+ try {
+ this.logger.fine("Writing file "
+ + this.bridgeStatsRawFile.getAbsolutePath() + "...");
+ this.bridgeStatsFile.getParentFile().mkdirs();
+ BufferedWriter bw = new BufferedWriter(new FileWriter(
+ this.bridgeStatsFile));
+ bw.append("date");
+ for (String c : this.countries) {
+ if (c.equals("zy")) {
+ bw.append(",all");
+ } else {
+ bw.append("," + c);
+ }
+ }
+ bw.append("\n");
+
+ /* Write current observation. */
+ for (Map.Entry<String, double[]> e : bridgeUsersPerDay.entrySet()) {
+ String date = e.getKey();
+ bw.append(date);
+ double[] users = e.getValue();
+ for (int i = 0; i < users.length; i++) {
+ bw.append("," + String.format("%.2f", users[i]));
+ }
+ bw.append("\n");
+ }
+ bw.close();
+ this.logger.fine("Finished writing file "
+ + this.bridgeStatsFile.getAbsolutePath() + ".");
+ } catch (IOException e) {
+ this.logger.log(Level.WARNING, "Failed to write "
+ + this.bridgeStatsFile.getAbsolutePath() + "!", e);
+ }
+
+ /* Add daily bridge users to database. */
+ if (connectionURL != null) {
+ try {
+ List<String> countryList = new ArrayList<String>();
+ for (String c : this.countries) {
+ countryList.add(c);
+ }
+ Map<String, Integer> insertRows = new HashMap<String, Integer>(),
+ updateRows = new HashMap<String, Integer>();
+ for (Map.Entry<String, double[]> e :
+ bridgeUsersPerDay.entrySet()) {
+ String date = e.getKey();
+ double[] users = e.getValue();
+ for (int i = 0; i < users.length; i++) {
+ int usersInt = (int) users[i];
+ if (usersInt < 1) {
+ continue;
+ }
+ String country = countryList.get(i);
+ String key = date + "," + country;
+ insertRows.put(key, usersInt);
+ }
+ }
+ Connection conn = DriverManager.getConnection(connectionURL);
+ conn.setAutoCommit(false);
+ Statement statement = conn.createStatement();
+ ResultSet rs = statement.executeQuery(
+ "SELECT date, country, users FROM bridge_stats");
+ while (rs.next()) {
+ String date = rs.getDate(1).toString();
+ String country = rs.getString(2);
+ String key = date + "," + country;
+ if (insertRows.containsKey(key)) {
+ int insertRow = insertRows.remove(key);
+ int oldUsers = rs.getInt(3);
+ if (oldUsers != insertRow) {
+ updateRows.put(key, insertRow);
+ }
+ }
+ }
+ rs.close();
+ PreparedStatement psU = conn.prepareStatement(
+ "UPDATE bridge_stats SET users = ? "
+ + "WHERE date = ? AND country = ?");
+ for (Map.Entry<String, Integer> e : updateRows.entrySet()) {
+ String[] keyParts = e.getKey().split(",");
+ java.sql.Date date = java.sql.Date.valueOf(keyParts[0]);
+ String country = keyParts[1];
+ int users = e.getValue();
+ psU.clearParameters();
+ psU.setInt(1, users);
+ psU.setDate(2, date);
+ psU.setString(3, country);
+ psU.executeUpdate();
+ }
+ PreparedStatement psI = conn.prepareStatement(
+ "INSERT INTO bridge_stats (users, date, country) "
+ + "VALUES (?, ?, ?)");
+ for (Map.Entry<String, Integer> e : insertRows.entrySet()) {
+ String[] keyParts = e.getKey().split(",");
+ java.sql.Date date = java.sql.Date.valueOf(keyParts[0]);
+ String country = keyParts[1];
+ int users = e.getValue();
+ psI.clearParameters();
+ psI.setInt(1, users);
+ psI.setDate(2, date);
+ psI.setString(3, country);
+ psI.executeUpdate();
+ }
+ conn.commit();
+ conn.close();
+ } catch (SQLException e) {
+ logger.log(Level.WARNING, "Failed to add daily bridge users to "
+ + "database.", e);
+ }
+ }
+ }
+}
+
diff --git a/src/org/torproject/ernie/cron/Configuration.java b/src/org/torproject/ernie/cron/Configuration.java
index 66ad778..818f9e9 100644
--- a/src/org/torproject/ernie/cron/Configuration.java
+++ b/src/org/torproject/ernie/cron/Configuration.java
@@ -16,12 +16,16 @@ public class Configuration {
private boolean importDirectoryArchives = false;
private String directoryArchivesDirectory = "archives/";
private boolean keepDirectoryArchiveImportHistory = false;
+ private boolean importSanitizedBridges = false;
+ private String sanitizedBridgesDirectory = "bridges/";
+ private boolean keepSanitizedBridgesImportHistory = false;
private boolean writeRelayDescriptorDatabase = false;
private String relayDescriptorDatabaseJdbc =
"jdbc:postgresql://localhost/tordir?user=metrics&password=password";
private boolean writeRelayDescriptorsRawFiles = false;
private String relayDescriptorRawFilesDirectory = "pg-import/";
private boolean writeConsensusHealth = false;
+ private boolean writeBridgeStats = false;
public Configuration() {
/* Initialize logger. */
@@ -47,6 +51,14 @@ public class Configuration {
} else if (line.startsWith("KeepDirectoryArchiveImportHistory")) {
this.keepDirectoryArchiveImportHistory = Integer.parseInt(
line.split(" ")[1]) != 0;
+ } else if (line.startsWith("ImportSanitizedBridges")) {
+ this.importSanitizedBridges = Integer.parseInt(
+ line.split(" ")[1]) != 0;
+ } else if (line.startsWith("SanitizedBridgesDirectory")) {
+ this.sanitizedBridgesDirectory = line.split(" ")[1];
+ } else if (line.startsWith("KeepSanitizedBridgesImportHistory")) {
+ this.keepSanitizedBridgesImportHistory = Integer.parseInt(
+ line.split(" ")[1]) != 0;
} else if (line.startsWith("WriteRelayDescriptorDatabase")) {
this.writeRelayDescriptorDatabase = Integer.parseInt(
line.split(" ")[1]) != 0;
@@ -60,6 +72,9 @@ public class Configuration {
} else if (line.startsWith("WriteConsensusHealth")) {
this.writeConsensusHealth = Integer.parseInt(
line.split(" ")[1]) != 0;
+ } else if (line.startsWith("WriteBridgeStats")) {
+ this.writeBridgeStats = Integer.parseInt(
+ line.split(" ")[1]) != 0;
} else {
logger.severe("Configuration file contains unrecognized "
+ "configuration key in line '" + line + "'! Exiting!");
@@ -97,6 +112,15 @@ public class Configuration {
public boolean getWriteRelayDescriptorDatabase() {
return this.writeRelayDescriptorDatabase;
}
+ public boolean getImportSanitizedBridges() {
+ return this.importSanitizedBridges;
+ }
+ public String getSanitizedBridgesDirectory() {
+ return this.sanitizedBridgesDirectory;
+ }
+ public boolean getKeepSanitizedBridgesImportHistory() {
+ return this.keepSanitizedBridgesImportHistory;
+ }
public String getRelayDescriptorDatabaseJDBC() {
return this.relayDescriptorDatabaseJdbc;
}
@@ -109,5 +133,8 @@ public class Configuration {
public boolean getWriteConsensusHealth() {
return this.writeConsensusHealth;
}
+ public boolean getWriteBridgeStats() {
+ return this.writeBridgeStats;
+ }
}
diff --git a/src/org/torproject/ernie/cron/ConsensusStatsFileHandler.java b/src/org/torproject/ernie/cron/ConsensusStatsFileHandler.java
new file mode 100644
index 0000000..4ad5300
--- /dev/null
+++ b/src/org/torproject/ernie/cron/ConsensusStatsFileHandler.java
@@ -0,0 +1,282 @@
+/* Copyright 2011 The Tor Project
+ * See LICENSE for licensing information */
+package org.torproject.ernie.cron;
+
+import java.io.*;
+import java.sql.*;
+import java.text.*;
+import java.util.*;
+import java.util.logging.*;
+
+/**
+ * Generates statistics on the average number of relays and bridges per
+ * day. Accepts parse results from <code>RelayDescriptorParser</code> and
+ * <code>BridgeDescriptorParser</code> and stores them in intermediate
+ * result files <code>stats/consensus-stats-raw</code> and
+ * <code>stats/bridge-consensus-stats-raw</code>. Writes final results to
+ * <code>stats/consensus-stats</code> for all days for which at least half
+ * of the expected consensuses or statuses are known.
+ */
+public class ConsensusStatsFileHandler {
+
+ /**
+ * Intermediate results file holding the number of running bridges per
+ * bridge status.
+ */
+ private File bridgeConsensusStatsRawFile;
+
+ /**
+ * Number of running bridges in a given bridge status. Map keys are
+ * bridge status times formatted as "yyyy-MM-dd HH:mm:ss", map values
+ * are lines as read from <code>stats/bridge-consensus-stats-raw</code>.
+ */
+ private SortedMap<String, String> bridgesRaw;
+
+ /**
+ * Average number of running bridges per day. Map keys are dates
+ * formatted as "yyyy-MM-dd", map values are the last column as written
+ * to <code>stats/consensus-stats</code>.
+ */
+ private SortedMap<String, String> bridgesPerDay;
+
+ /**
+ * Logger for this class.
+ */
+ private Logger logger;
+
+ private int bridgeResultsAdded = 0;
+
+ /* Database connection string. */
+ private String connectionURL = null;
+
+ /**
+ * Initializes this class, including reading in intermediate results
+ * files <code>stats/consensus-stats-raw</code> and
+ * <code>stats/bridge-consensus-stats-raw</code> and final results file
+ * <code>stats/consensus-stats</code>.
+ */
+ public ConsensusStatsFileHandler(String connectionURL) {
+
+ /* Initialize local data structures to hold intermediate and final
+ * results. */
+ this.bridgesPerDay = new TreeMap<String, String>();
+ this.bridgesRaw = new TreeMap<String, String>();
+
+ /* Initialize file names for intermediate and final results files. */
+ this.bridgeConsensusStatsRawFile = new File(
+ "stats/bridge-consensus-stats-raw");
+
+ /* Initialize database connection string. */
+ this.connectionURL = connectionURL;
+
+ /* Initialize logger. */
+ this.logger = Logger.getLogger(
+ ConsensusStatsFileHandler.class.getName());
+
+ /* Read in number of running bridges per bridge status. */
+ if (this.bridgeConsensusStatsRawFile.exists()) {
+ try {
+ this.logger.fine("Reading file "
+ + this.bridgeConsensusStatsRawFile.getAbsolutePath() + "...");
+ BufferedReader br = new BufferedReader(new FileReader(
+ this.bridgeConsensusStatsRawFile));
+ String line = null;
+ while ((line = br.readLine()) != null) {
+ if (line.startsWith("date")) {
+ /* Skip headers. */
+ continue;
+ }
+ String[] parts = line.split(",");
+ if (parts.length != 2) {
+ this.logger.warning("Corrupt line '" + line + "' in file "
+ + this.bridgeConsensusStatsRawFile.getAbsolutePath()
+ + "! Aborting to read this file!");
+ break;
+ }
+ String dateTime = parts[0];
+ this.bridgesRaw.put(dateTime, line);
+ }
+ br.close();
+ this.logger.fine("Finished reading file "
+ + this.bridgeConsensusStatsRawFile.getAbsolutePath() + ".");
+ } catch (IOException e) {
+ this.logger.log(Level.WARNING, "Failed to read file "
+ + this.bridgeConsensusStatsRawFile.getAbsolutePath() + "!",
+ e);
+ }
+ }
+ }
+
+ /**
+ * Adds the intermediate results of the number of running bridges in a
+ * given bridge status to the existing observations.
+ */
+ public void addBridgeConsensusResults(String published, int running) {
+ String line = published + "," + running;
+ if (!this.bridgesRaw.containsKey(published)) {
+ this.logger.finer("Adding new bridge numbers: " + line);
+ this.bridgesRaw.put(published, line);
+ this.bridgeResultsAdded++;
+ } else if (!line.equals(this.bridgesRaw.get(published))) {
+ this.logger.warning("The numbers of running bridges we were just "
+ + "given (" + line + ") are different from what we learned "
+ + "before (" + this.bridgesRaw.get(published) + ")! "
+ + "Overwriting!");
+ this.bridgesRaw.put(published, line);
+ }
+ }
+
+ /**
+ * Aggregates the raw observations on relay and bridge numbers and
+ * writes both raw and aggregate observations to disk.
+ */
+ public void writeFiles() {
+
+ /* Did we learn anything new about average relay or bridge numbers in
+ * this run? */
+ boolean writeConsensusStats = false;
+
+ /* Go through raw observations of numbers of running bridges in bridge
+ * statuses, calculate averages per day, and add these averages to
+ * final results. */
+ if (!this.bridgesRaw.isEmpty()) {
+ String tempDate = null;
+ int brunning = 0, statuses = 0;
+ Iterator<String> it = this.bridgesRaw.values().iterator();
+ boolean haveWrittenFinalLine = false;
+ while (it.hasNext() || !haveWrittenFinalLine) {
+ String next = it.hasNext() ? it.next() : null;
+ /* Finished reading a day or even all lines? */
+ if (tempDate != null && (next == null
+ || !next.substring(0, 10).equals(tempDate))) {
+ /* Only write results if we have seen at least half of all
+ * statuses. */
+ if (statuses >= 24) {
+ String line = "," + (brunning / statuses);
+ /* Are our results new? */
+ if (!this.bridgesPerDay.containsKey(tempDate)) {
+ this.logger.finer("Adding new average bridge numbers: "
+ + tempDate + line);
+ this.bridgesPerDay.put(tempDate, line);
+ writeConsensusStats = true;
+ } else if (!line.equals(this.bridgesPerDay.get(tempDate))) {
+ this.logger.finer("Replacing existing average bridge "
+ + "numbers (" + this.bridgesPerDay.get(tempDate)
+ + " with new numbers: " + line);
+ this.bridgesPerDay.put(tempDate, line);
+ writeConsensusStats = true;
+ }
+ }
+ brunning = statuses = 0;
+ haveWrittenFinalLine = (next == null);
+ }
+ /* Sum up number of running bridges. */
+ if (next != null) {
+ tempDate = next.substring(0, 10);
+ statuses++;
+ brunning += Integer.parseInt(next.split(",")[1]);
+ }
+ }
+ }
+
+ /* Write raw numbers of running bridges to disk. */
+ try {
+ this.logger.fine("Writing file "
+ + this.bridgeConsensusStatsRawFile.getAbsolutePath() + "...");
+ this.bridgeConsensusStatsRawFile.getParentFile().mkdirs();
+ BufferedWriter bw = new BufferedWriter(
+ new FileWriter(this.bridgeConsensusStatsRawFile));
+ bw.append("datetime,brunning\n");
+ for (String line : this.bridgesRaw.values()) {
+ bw.append(line + "\n");
+ }
+ bw.close();
+ this.logger.fine("Finished writing file "
+ + this.bridgeConsensusStatsRawFile.getAbsolutePath() + ".");
+ } catch (IOException e) {
+ this.logger.log(Level.WARNING, "Failed to write file "
+ + this.bridgeConsensusStatsRawFile.getAbsolutePath() + "!",
+ e);
+ }
+
+ /* Add average number of bridges per day to the database. */
+ if (connectionURL != null) {
+ try {
+ Map<String, String> insertRows = new HashMap<String, String>(),
+ updateRows = new HashMap<String, String>();
+ insertRows.putAll(this.bridgesPerDay);
+ Connection conn = DriverManager.getConnection(connectionURL);
+ conn.setAutoCommit(false);
+ Statement statement = conn.createStatement();
+ ResultSet rs = statement.executeQuery(
+ "SELECT date, avg_running FROM bridge_network_size");
+ while (rs.next()) {
+ String date = rs.getDate(1).toString();
+ if (insertRows.containsKey(date)) {
+ String insertRow = insertRows.remove(date);
+ long newAvgRunning = Long.parseLong(insertRow.substring(1));
+ long oldAvgRunning = rs.getLong(2);
+ if (newAvgRunning != oldAvgRunning) {
+ updateRows.put(date, insertRow);
+ }
+ }
+ }
+ rs.close();
+ PreparedStatement psU = conn.prepareStatement(
+ "UPDATE bridge_network_size SET avg_running = ? "
+ + "WHERE date = ?");
+ for (Map.Entry<String, String> e : updateRows.entrySet()) {
+ java.sql.Date date = java.sql.Date.valueOf(e.getKey());
+ long avgRunning = Long.parseLong(e.getValue().substring(1));
+ psU.clearParameters();
+ psU.setLong(1, avgRunning);
+ psU.setDate(2, date);
+ psU.executeUpdate();
+ }
+ PreparedStatement psI = conn.prepareStatement(
+ "INSERT INTO bridge_network_size (avg_running, date) "
+ + "VALUES (?, ?)");
+ for (Map.Entry<String, String> e : insertRows.entrySet()) {
+ java.sql.Date date = java.sql.Date.valueOf(e.getKey());
+ long avgRunning = Long.parseLong(e.getValue().substring(1));
+ psI.clearParameters();
+ psI.setLong(1, avgRunning);
+ psI.setDate(2, date);
+ psI.executeUpdate();
+ }
+ conn.commit();
+ conn.close();
+ } catch (SQLException e) {
+ logger.log(Level.WARNING, "Failed to add average bridge numbers "
+ + "to database.", e);
+ }
+ }
+
+ /* Write stats. */
+ StringBuilder dumpStats = new StringBuilder("Finished writing "
+ + "statistics on bridge network statuses to disk.\nAdded "
+ + this.bridgeResultsAdded + " bridge network status(es) in this "
+ + "execution.");
+ long now = System.currentTimeMillis();
+ SimpleDateFormat dateTimeFormat =
+ new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ dateTimeFormat.setTimeZone(TimeZone.getTimeZone("UTC"));
+ if (this.bridgesRaw.isEmpty()) {
+ dumpStats.append("\nNo bridge status known yet.");
+ } else {
+ dumpStats.append("\nLast known bridge status was published "
+ + this.bridgesRaw.lastKey() + ".");
+ try {
+ if (now - 6L * 60L * 60L * 1000L > dateTimeFormat.parse(
+ this.bridgesRaw.lastKey()).getTime()) {
+ logger.warning("Last known bridge status is more than 6 hours "
+ + "old: " + this.bridgesRaw.lastKey());
+ }
+ } catch (ParseException e) {
+ /* Can't parse the timestamp? Whatever. */
+ }
+ }
+ logger.info(dumpStats.toString());
+ }
+}
+
diff --git a/src/org/torproject/ernie/cron/Main.java b/src/org/torproject/ernie/cron/Main.java
index 1a125bc..0551586 100644
--- a/src/org/torproject/ernie/cron/Main.java
+++ b/src/org/torproject/ernie/cron/Main.java
@@ -33,6 +33,11 @@ public class Main {
// Define stats directory for temporary files
File statsDirectory = new File("stats");
+ // Prepare bridge stats file handler
+ BridgeStatsFileHandler bsfh = config.getWriteBridgeStats() ?
+ new BridgeStatsFileHandler(
+ config.getRelayDescriptorDatabaseJDBC()) : null;
+
// Prepare consensus health checker
ConsensusHealthChecker chc = config.getWriteConsensusHealth() ?
new ConsensusHealthChecker() : null;
@@ -50,7 +55,7 @@ public class Main {
// Prepare relay descriptor parser (only if we are writing the
// consensus-health page to disk)
RelayDescriptorParser rdp = chc != null || rddi != null ?
- new RelayDescriptorParser(chc, rddi) : null;
+ new RelayDescriptorParser(chc, rddi, bsfh) : null;
// Import relay descriptors
if (rdp != null) {
@@ -73,6 +78,33 @@ public class Main {
chc = null;
}
+ // Prepare consensus stats file handler (used for stats on running
+ // bridges only)
+ ConsensusStatsFileHandler csfh = config.getWriteBridgeStats() ?
+ new ConsensusStatsFileHandler(
+ config.getRelayDescriptorDatabaseJDBC()) : null;
+
+ // Prepare bridge descriptor parser
+ BridgeDescriptorParser bdp = config.getWriteBridgeStats() ?
+ new BridgeDescriptorParser(csfh, bsfh) : null;
+
+ // Import bridge descriptors
+ if (bdp != null && config.getImportSanitizedBridges()) {
+ new SanitizedBridgesReader(bdp,
+ new File(config.getSanitizedBridgesDirectory()),
+ statsDirectory, config.getKeepSanitizedBridgesImportHistory());
+ }
+
+ // Write updated stats files to disk
+ if (bsfh != null) {
+ bsfh.writeFiles();
+ bsfh = null;
+ }
+ if (csfh != null) {
+ csfh.writeFiles();
+ csfh = null;
+ }
+
// Remove lock file
lf.releaseLock();
diff --git a/src/org/torproject/ernie/cron/RelayDescriptorParser.java b/src/org/torproject/ernie/cron/RelayDescriptorParser.java
index d02022a..a9a0d3d 100644
--- a/src/org/torproject/ernie/cron/RelayDescriptorParser.java
+++ b/src/org/torproject/ernie/cron/RelayDescriptorParser.java
@@ -18,6 +18,11 @@ import org.apache.commons.codec.binary.*;
public class RelayDescriptorParser {
/**
+ * Stats file handler that accepts parse results for bridge statistics.
+ */
+ private BridgeStatsFileHandler bsfh;
+
+ /**
* Relay descriptor database importer that stores relay descriptor
* contents for later evaluation.
*/
@@ -36,9 +41,10 @@ public class RelayDescriptorParser {
* Initializes this class.
*/
public RelayDescriptorParser(ConsensusHealthChecker chc,
- RelayDescriptorDatabaseImporter rddi) {
+ RelayDescriptorDatabaseImporter rddi, BridgeStatsFileHandler bsfh) {
this.chc = chc;
this.rddi = rddi;
+ this.bsfh = bsfh;
/* Initialize logger. */
this.logger = Logger.getLogger(RelayDescriptorParser.class.getName());
@@ -76,6 +82,7 @@ public class RelayDescriptorParser {
orPort = 0L, dirPort = 0L;
SortedSet<String> relayFlags = null;
StringBuilder rawStatusEntry = null;
+ SortedSet<String> hashedRelayIdentities = new TreeSet<String>();
while ((line = br.readLine()) != null) {
if (line.equals("vote-status vote")) {
isConsensus = false;
@@ -111,6 +118,9 @@ public class RelayDescriptorParser {
relayIdentity = Hex.encodeHexString(
Base64.decodeBase64(parts[2] + "=")).
toLowerCase();
+ hashedRelayIdentities.add(DigestUtils.shaHex(
+ Base64.decodeBase64(parts[2] + "=")).
+ toUpperCase());
serverDesc = Hex.encodeHexString(Base64.decodeBase64(
parts[3] + "=")).toLowerCase();
published = parseFormat.parse(parts[4] + " " + parts[5]).
@@ -144,6 +154,11 @@ public class RelayDescriptorParser {
}
}
if (isConsensus) {
+ if (this.bsfh != null) {
+ for (String hashedRelayIdentity : hashedRelayIdentities) {
+ this.bsfh.addHashedRelay(hashedRelayIdentity);
+ }
+ }
if (this.chc != null) {
this.chc.processConsensus(validAfterTime, data);
}
diff --git a/src/org/torproject/ernie/cron/SanitizedBridgesReader.java b/src/org/torproject/ernie/cron/SanitizedBridgesReader.java
new file mode 100644
index 0000000..b7f1d44
--- /dev/null
+++ b/src/org/torproject/ernie/cron/SanitizedBridgesReader.java
@@ -0,0 +1,114 @@
+/* Copyright 2011 The Tor Project
+ * See LICENSE for licensing information */
+package org.torproject.ernie.cron;
+
+import java.io.*;
+import java.util.*;
+import java.util.logging.*;
+
+public class SanitizedBridgesReader {
+ public SanitizedBridgesReader(BridgeDescriptorParser bdp,
+ File bridgesDir, File statsDirectory, boolean keepImportHistory) {
+
+ if (bdp == null || bridgesDir == null || statsDirectory == null) {
+ throw new IllegalArgumentException();
+ }
+
+ Logger logger =
+ Logger.getLogger(SanitizedBridgesReader.class.getName());
+ SortedSet<String> bridgesImportHistory = new TreeSet<String>();
+ File bridgesImportHistoryFile =
+ new File(statsDirectory, "bridges-import-history");
+ if (keepImportHistory && bridgesImportHistoryFile.exists()) {
+ try {
+ BufferedReader br = new BufferedReader(new FileReader(
+ bridgesImportHistoryFile));
+ String line = null;
+ while ((line = br.readLine()) != null) {
+ bridgesImportHistory.add(line);
+ }
+ br.close();
+ } catch (IOException e) {
+ logger.log(Level.WARNING, "Could not read in bridge descriptor "
+ + "import history file. Skipping.");
+ }
+ }
+ if (bridgesDir.exists()) {
+ logger.fine("Importing files in directory " + bridgesDir + "/...");
+ Stack<File> filesInInputDir = new Stack<File>();
+ filesInInputDir.add(bridgesDir);
+ List<File> problems = new ArrayList<File>();
+ while (!filesInInputDir.isEmpty()) {
+ File pop = filesInInputDir.pop();
+ if (pop.isDirectory()) {
+ for (File f : pop.listFiles()) {
+ filesInInputDir.add(f);
+ }
+ continue;
+ } else if (keepImportHistory && bridgesImportHistory.contains(
+ pop.getName())) {
+ continue;
+ } else {
+ try {
+ BufferedInputStream bis = new BufferedInputStream(
+ new FileInputStream(pop));
+ ByteArrayOutputStream baos = new ByteArrayOutputStream();
+ int len;
+ byte[] data = new byte[1024];
+ while ((len = bis.read(data, 0, 1024)) >= 0) {
+ baos.write(data, 0, len);
+ }
+ bis.close();
+ byte[] allData = baos.toByteArray();
+ String fn = pop.getName();
+ // TODO dateTime extraction doesn't work for sanitized network
+ // statuses!
+ String dateTime = fn.substring(0, 4) + "-" + fn.substring(4, 6)
+ + "-" + fn.substring(6, 8) + " " + fn.substring(9, 11)
+ + ":" + fn.substring(11, 13) + ":" + fn.substring(13, 15);
+ bdp.parse(allData, dateTime, true);
+ if (keepImportHistory) {
+ bridgesImportHistory.add(pop.getName());
+ }
+ } catch (IOException e) {
+ problems.add(pop);
+ if (problems.size() > 3) {
+ break;
+ }
+ }
+ }
+ }
+ if (problems.isEmpty()) {
+ logger.fine("Finished importing files in directory " + bridgesDir
+ + "/.");
+ } else {
+ StringBuilder sb = new StringBuilder("Failed importing files in "
+ + "directory " + bridgesDir + "/:");
+ int printed = 0;
+ for (File f : problems) {
+ sb.append("\n " + f.getAbsolutePath());
+ if (++printed >= 3) {
+ sb.append("\n ... more");
+ break;
+ }
+ }
+ logger.warning(sb.toString());
+ }
+ if (keepImportHistory) {
+ try {
+ bridgesImportHistoryFile.getParentFile().mkdirs();
+ BufferedWriter bw = new BufferedWriter(new FileWriter(
+ bridgesImportHistoryFile));
+ for (String line : bridgesImportHistory) {
+ bw.write(line + "\n");
+ }
+ bw.close();
+ } catch (IOException e) {
+ logger.log(Level.WARNING, "Could not write bridge descriptor "
+ + "import history file.");
+ }
+ }
+ }
+ }
+}
+
diff --git a/src/org/torproject/ernie/test/SanitizedBridgesReaderTest.java b/src/org/torproject/ernie/test/SanitizedBridgesReaderTest.java
new file mode 100644
index 0000000..6dd9132
--- /dev/null
+++ b/src/org/torproject/ernie/test/SanitizedBridgesReaderTest.java
@@ -0,0 +1,33 @@
+/* Copyright 2011 The Tor Project
+ * See LICENSE for licensing information */
+package org.torproject.ernie.test;
+
+import org.torproject.ernie.cron.*;
+
+import java.io.*;
+
+import org.junit.*;
+import org.junit.rules.*;
+import static org.junit.Assert.*;
+
+public class SanitizedBridgesReaderTest {
+
+ private File tempSanitizedBridgesDirectory;
+ private File tempStatsDirectory;
+
+ @Rule
+ public TemporaryFolder folder = new TemporaryFolder();
+
+ @Before
+ public void createTempDirectories() {
+ this.tempSanitizedBridgesDirectory = folder.newFolder("bridges");
+ this.tempStatsDirectory = folder.newFolder("stats");
+ }
+
+ @Test(expected = IllegalArgumentException.class)
+ public void testBridgeDescriptorParserNull() {
+ new SanitizedBridgesReader(null, this.tempSanitizedBridgesDirectory,
+ this.tempStatsDirectory, false);
+ }
+}
+
1
0
commit ab33cdf934692ed00fc38ea4b9e69ac33a437fcc
Author: Mike Perry <mikeperry-git(a)fscked.org>
Date: Thu Mar 3 01:56:17 2011 -0800
Update submodule....
---
TorCtl | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/TorCtl b/TorCtl
index 62e4705..6eeffeb 160000
--- a/TorCtl
+++ b/TorCtl
@@ -1 +1 @@
-Subproject commit 62e470554c12e3fa0edd948d8f2c7c7a02217635
+Subproject commit 6eeffeb4f20aefb2f859a9f5754c34342abc307e
1
0

03 Mar '11
commit 6eeffeb4f20aefb2f859a9f5754c34342abc307e
Author: Mike Perry <mikeperry-git(a)fscked.org>
Date: Thu Mar 3 01:38:15 2011 -0800
Try to catch an AttributeError early..
It may be silently killing the bwauths on some platforms..
---
PathSupport.py | 6 +++++-
1 files changed, 5 insertions(+), 1 deletions(-)
diff --git a/PathSupport.py b/PathSupport.py
index 3fefb24..e3ddfd1 100644
--- a/PathSupport.py
+++ b/PathSupport.py
@@ -1342,7 +1342,11 @@ class SmartSocket(_SocketWrapper):
def __del__(self):
SmartSocket._table_lock.acquire()
- SmartSocket.port_table.remove(self.__local_addr)
+ try:
+ SmartSocket.port_table.remove(self.__local_addr)
+ except AttributeError,e:
+ traceback.print_exc()
+ plog("WARN", "Hrm. Socket instance without local_addr attribute?")
SmartSocket._table_lock.release()
plog("DEBUG", "Removed "+self.__local_addr+" from our local port list")
1
0

[torspec/master] Clarify that circwindow overrides the default of 1000 in tor-spec too
by nickm@torproject.org 03 Mar '11
by nickm@torproject.org 03 Mar '11
03 Mar '11
commit 92fe1a5cbbd8477b381bbfc40d1fe2a41ee19d5f
Author: Nick Mathewson <nickm(a)torproject.org>
Date: Thu Mar 3 00:00:15 2011 -0500
Clarify that circwindow overrides the default of 1000 in tor-spec too
---
tor-spec.txt | 4 +++-
1 files changed, 3 insertions(+), 1 deletions(-)
diff --git a/tor-spec.txt b/tor-spec.txt
index 91ad561..e889431 100644
--- a/tor-spec.txt
+++ b/tor-spec.txt
@@ -965,7 +965,9 @@ see tor-design.pdf.
do not apply to cells that the OR receives from one host and relays
to another.
- Each 'window' value is initially set to 1000 data cells
+ Each 'window' value is initially set based on the consensus parameter
+ 'circwindow' in the directory (see dir-spec.txt), or to 1000 data cells
+ if no 'circwindow' value is given,
in each direction (cells that are not data cells do not affect
the window). When an OR is willing to deliver more cells, it sends a
RELAY_SENDME cell towards the OP, with Stream ID zero. When an OR
1
0

r24295: {arm} Adding config option for the connection panel refresh rate. (in arm/trunk: . src/interface/connections)
by Damian Johnson 03 Mar '11
by Damian Johnson 03 Mar '11
03 Mar '11
Author: atagar
Date: 2011-03-03 04:32:17 +0000 (Thu, 03 Mar 2011)
New Revision: 24295
Modified:
arm/trunk/armrc.sample
arm/trunk/src/interface/connections/connPanel.py
Log:
Adding config option for the connection panel refresh rate.
Modified: arm/trunk/armrc.sample
===================================================================
--- arm/trunk/armrc.sample 2011-03-03 04:16:21 UTC (rev 24294)
+++ arm/trunk/armrc.sample 2011-03-03 04:32:17 UTC (rev 24295)
@@ -155,6 +155,11 @@
# ---------------------------------
# oldPanel
# includes the old connection panel in the interface
+# refreshRate
+# rate at which the connection panel contents is redrawn (if higher than the
+# connection resolution rate then reducing this won't casue new data to
+# appear more frequently - just increase the rate at which the uptime field
+# is updated)
# newPanel
# includes the new connection panel in the interface
# showColumn.*
@@ -162,6 +167,7 @@
features.connection.oldPanel true
features.connection.newPanel false
+features.connection.refreshRate 10
features.connection.showColumn.fingerprint true
features.connection.showColumn.nickname true
features.connection.showColumn.destination true
Modified: arm/trunk/src/interface/connections/connPanel.py
===================================================================
--- arm/trunk/src/interface/connections/connPanel.py 2011-03-03 04:16:21 UTC (rev 24294)
+++ arm/trunk/src/interface/connections/connPanel.py 2011-03-03 04:32:17 UTC (rev 24295)
@@ -9,10 +9,8 @@
from interface.connections import listings
from util import connections, enum, log, panel, torTools, uiTools
-REDRAW_RATE = 10 # TODO: make a config option
+DEFAULT_CONFIG = {"features.connection.refreshRate": 10}
-DEFAULT_CONFIG = {}
-
# height of the detail panel content, not counting top and bottom border
DETAILS_HEIGHT = 7
@@ -33,7 +31,8 @@
#self.sortOrdering = DEFAULT_SORT_ORDER
self._config = dict(DEFAULT_CONFIG)
if config:
- config.update(self._config)
+ config.update(self._config, {
+ "features.connection.refreshRate": 1})
# TODO: test and add to the sample armrc
#self.sortOrdering = config.getIntCSV("features.connections.order", self.sortOrdering, 3, 0, 6)
@@ -99,7 +98,7 @@
while not self._halt:
currentTime = time.time()
- if self._isPaused or currentTime - lastDraw < REDRAW_RATE:
+ if self._isPaused or currentTime - lastDraw < self._config["features.connection.refreshRate"]:
self._cond.acquire()
if not self._halt: self._cond.wait(0.2)
self._cond.release()
@@ -107,7 +106,7 @@
# updates content if their's new results, otherwise just redraws
self._update()
self.redraw(True)
- lastDraw += REDRAW_RATE
+ lastDraw += self._config["features.connection.refreshRate"]
def draw(self, width, height):
self.valsLock.acquire()
1
0

r24294: {arm} Adding config options for displaying the new and/or old conf (in arm/trunk: . src/interface)
by Damian Johnson 03 Mar '11
by Damian Johnson 03 Mar '11
03 Mar '11
Author: atagar
Date: 2011-03-03 04:16:21 +0000 (Thu, 03 Mar 2011)
New Revision: 24294
Modified:
arm/trunk/armrc.sample
arm/trunk/src/interface/controller.py
Log:
Adding config options for displaying the new and/or old config panel.
Modified: arm/trunk/armrc.sample
===================================================================
--- arm/trunk/armrc.sample 2011-03-03 03:37:40 UTC (rev 24293)
+++ arm/trunk/armrc.sample 2011-03-03 04:16:21 UTC (rev 24294)
@@ -153,9 +153,15 @@
# Parameters for connection display
# ---------------------------------
-# features.connection.showColumn.*
+# oldPanel
+# includes the old connection panel in the interface
+# newPanel
+# includes the new connection panel in the interface
+# showColumn.*
# toggles the visability of the connection table columns
+features.connection.oldPanel true
+features.connection.newPanel false
features.connection.showColumn.fingerprint true
features.connection.showColumn.nickname true
features.connection.showColumn.destination true
Modified: arm/trunk/src/interface/controller.py
===================================================================
--- arm/trunk/src/interface/controller.py 2011-03-03 03:37:40 UTC (rev 24293)
+++ arm/trunk/src/interface/controller.py 2011-03-03 04:16:21 UTC (rev 24294)
@@ -31,8 +31,6 @@
import graphing.connStats
import graphing.resourceStats
-INCLUDE_CONNPANEL_2 = False
-
CONFIRM_QUIT = True
REFRESH_RATE = 5 # seconds between redrawing screen
MAX_REGEX_FILTERS = 5 # maximum number of previous regex filters that'll be remembered
@@ -45,17 +43,17 @@
PAGES = [
["graph", "log"],
["conn"],
+ ["conn2"],
["config"],
["torrc"]]
-if INCLUDE_CONNPANEL_2:
- PAGES.append(["conn2"])
-
PAUSEABLE = ["header", "graph", "log", "conn", "conn2"]
CONFIG = {"log.torrc.readFailed": log.WARN,
"features.graph.type": 1,
"features.config.prepopulateEditValues": True,
+ "features.connection.oldPanel": True,
+ "features.connection.newPanel": False,
"queries.refreshRate.rate": 5,
"log.torEventTypeUnrecognized": log.NOTICE,
"features.graph.bw.prepopulate": True,
@@ -560,8 +558,18 @@
# before being positioned - the following is a quick hack til rewritten
panels["log"].setPaused(True)
- panels["conn"] = connPanel.ConnPanel(stdscr, conn, isBlindMode)
- panels["conn2"] = interface.connections.connPanel.ConnectionPanel(stdscr, config)
+ if CONFIG["features.connection.oldPanel"]:
+ panels["conn"] = connPanel.ConnPanel(stdscr, conn, isBlindMode)
+ else:
+ panels["conn"] = panel.Panel(stdscr, "blank", 0, 0, 0)
+ PAUSEABLE.remove("conn")
+
+ if CONFIG["features.connection.newPanel"]:
+ panels["conn2"] = interface.connections.connPanel.ConnectionPanel(stdscr, config)
+ else:
+ panels["conn2"] = panel.Panel(stdscr, "blank", 0, 0, 0)
+ PAUSEABLE.remove("conn2")
+
panels["control"] = ControlPanel(stdscr, isBlindMode)
panels["config"] = configPanel.ConfigPanel(stdscr, configPanel.State.TOR, config)
panels["torrc"] = torrcPanel.TorrcPanel(stdscr, torrcPanel.Config.TORRC, config)
@@ -587,7 +595,8 @@
conn.add_event_listener(panels["graph"].stats["bandwidth"])
conn.add_event_listener(panels["graph"].stats["system resources"])
if not isBlindMode: conn.add_event_listener(panels["graph"].stats["connections"])
- conn.add_event_listener(panels["conn"])
+ if CONFIG["features.connection.oldPanel"]:
+ conn.add_event_listener(panels["conn"])
conn.add_event_listener(sighupTracker)
# prepopulates bandwidth values from state file
@@ -614,7 +623,8 @@
# tells revised panels to run as daemons
panels["header"].start()
panels["log"].start()
- panels["conn2"].start()
+ if CONFIG["features.connection.newPanel"]:
+ panels["conn2"].start()
# warns if tor isn't updating descriptors
#try:
@@ -673,7 +683,8 @@
#panels["header"]._updateParams(True)
# other panels that use torrc data
- panels["conn"].resetOptions()
+ if CONFIG["features.connection.oldPanel"]:
+ panels["conn"].resetOptions()
#if not isBlindMode: panels["graph"].stats["connections"].resetOptions(conn)
#panels["graph"].stats["bandwidth"].resetOptions()
@@ -734,7 +745,8 @@
isUnresponsive = False
log.log(log.NOTICE, "Relay resumed")
- panels["conn"].reset()
+ if CONFIG["features.connection.oldPanel"]:
+ panels["conn"].reset()
# TODO: part two of hack to prevent premature drawing by log panel
if page == 0 and not isPaused: panels["log"].setPaused(False)
@@ -828,11 +840,11 @@
# stops panel daemons
panels["header"].stop()
- panels["conn2"].stop()
+ if CONFIG["features.connection.newPanel"]: panels["conn2"].stop()
panels["log"].stop()
panels["header"].join()
- panels["conn2"].join()
+ if CONFIG["features.connection.newPanel"]: panels["conn2"].join()
panels["log"].join()
# joins on utility daemon threads - this might take a moment since
@@ -855,10 +867,15 @@
if key == curses.KEY_LEFT: page = (page - 1) % len(PAGES)
else: page = (page + 1) % len(PAGES)
- # skip connections listing if it's disabled
- if page == 1 and isBlindMode:
- if key == curses.KEY_LEFT: page = (page - 1) % len(PAGES)
- else: page = (page + 1) % len(PAGES)
+ # skip connections listings if it's disabled
+ while True:
+ if page == 1 and (isBlindMode or not CONFIG["features.connection.oldPanel"]):
+ if key == curses.KEY_LEFT: page = (page - 1) % len(PAGES)
+ else: page = (page + 1) % len(PAGES)
+ elif page == 2 and (isBlindMode or not CONFIG["features.connection.newPanel"]):
+ if key == curses.KEY_LEFT: page = (page - 1) % len(PAGES)
+ else: page = (page + 1) % len(PAGES)
+ else: break
# pauses panels that aren't visible to prevent events from accumilating
# (otherwise they'll wait on the curses lock which might get demanding)
@@ -967,7 +984,9 @@
if resolverUtil == None: resolverUtil = "auto"
popup.addfstr(4, 41, "<b>u</b>: resolving utility (<b>%s</b>)" % resolverUtil)
- allowDnsLabel = "allow" if panels["conn"].allowDNS else "disallow"
+ if CONFIG["features.connection.oldPanel"]:
+ allowDnsLabel = "allow" if panels["conn"].allowDNS else "disallow"
+ else: allowDnsLabel = "disallow"
popup.addfstr(5, 2, "<b>r</b>: permit DNS resolution (<b>%s</b>)" % allowDnsLabel)
popup.addfstr(5, 41, "<b>s</b>: sort ordering")
@@ -1275,7 +1294,7 @@
setPauseState(panels, isPaused, page)
finally:
panel.CURSES_LOCK.release()
- elif key == 27 and panels["conn"].listingType == connPanel.LIST_HOSTNAME and panels["control"].resolvingCounter != -1:
+ elif CONFIG["features.connection.oldPanel"] and key == 27 and panels["conn"].listingType == connPanel.LIST_HOSTNAME and panels["control"].resolvingCounter != -1:
# canceling hostname resolution (esc on any page)
panels["conn"].listingType = connPanel.LIST_IP
panels["control"].resolvingCounter = -1
@@ -1577,7 +1596,7 @@
setPauseState(panels, isPaused, page)
finally:
panel.CURSES_LOCK.release()
- elif page == 2 and (key == ord('c') or key == ord('C')) and False:
+ elif page == 3 and (key == ord('c') or key == ord('C')) and False:
# TODO: disabled for now (probably gonna be going with separate pages
# rather than popup menu)
# provides menu to pick config being displayed
@@ -1600,7 +1619,7 @@
if selection != -1: panels["torrc"].setConfigType(selection)
selectiveRefresh(panels, page)
- elif page == 2 and (key == ord('w') or key == ord('W')):
+ elif page == 3 and (key == ord('w') or key == ord('W')):
# display a popup for saving the current configuration
panel.CURSES_LOCK.acquire()
try:
@@ -1730,7 +1749,7 @@
panel.CURSES_LOCK.release()
panels["config"].redraw(True)
- elif page == 2 and (key == ord('s') or key == ord('S')):
+ elif page == 3 and (key == ord('s') or key == ord('S')):
# set ordering for config options
titleLabel = "Config Option Ordering:"
options = [configPanel.FIELD_ATTR[field][0] for field in configPanel.Field.values()]
@@ -1751,7 +1770,7 @@
panels["config"].setSortOrder(resultEnums)
panels["config"].redraw(True)
- elif page == 2 and uiTools.isSelectionKey(key):
+ elif page == 3 and uiTools.isSelectionKey(key):
# let the user edit the configuration value, unchanged if left blank
panel.CURSES_LOCK.acquire()
try:
@@ -1807,7 +1826,7 @@
setPauseState(panels, isPaused, page)
finally:
panel.CURSES_LOCK.release()
- elif page == 3 and key == ord('r') or key == ord('R'):
+ elif page == 4 and key == ord('r') or key == ord('R'):
# reloads torrc, providing a notice if successful or not
loadedTorrc = torConfig.getTorrc()
loadedTorrc.getLock().acquire()
@@ -1837,11 +1856,11 @@
elif page == 1:
panels["conn"].handleKey(key)
elif page == 2:
+ panels["conn2"].handleKey(key)
+ elif page == 3:
panels["config"].handleKey(key)
- elif page == 3:
+ elif page == 4:
panels["torrc"].handleKey(key)
- elif page == 4:
- panels["conn2"].handleKey(key)
def startTorMonitor(startTime, loggedEvents, isBlindMode):
try:
1
0

r24293: {arm} Adding a config option for connection panel column visabilit (in arm/trunk: . src/interface src/interface/connections)
by Damian Johnson 03 Mar '11
by Damian Johnson 03 Mar '11
03 Mar '11
Author: atagar
Date: 2011-03-03 03:37:40 +0000 (Thu, 03 Mar 2011)
New Revision: 24293
Modified:
arm/trunk/armrc.sample
arm/trunk/src/interface/connections/listings.py
arm/trunk/src/interface/controller.py
Log:
Adding a config option for connection panel column visability.
Modified: arm/trunk/armrc.sample
===================================================================
--- arm/trunk/armrc.sample 2011-03-02 21:16:07 UTC (rev 24292)
+++ arm/trunk/armrc.sample 2011-03-03 03:37:40 UTC (rev 24293)
@@ -151,6 +151,16 @@
features.graph.bw.accounting.rate 10
features.graph.bw.accounting.isTimeLong false
+# Parameters for connection display
+# ---------------------------------
+# features.connection.showColumn.*
+# toggles the visability of the connection table columns
+
+features.connection.showColumn.fingerprint true
+features.connection.showColumn.nickname true
+features.connection.showColumn.destination true
+features.connection.showColumn.expanedIp true
+
# Thread pool size for hostname resolutions
# Determines the maximum number of concurrent requests. Upping this to around
# thirty or so seems to be problematic, causing intermittently seizing.
Modified: arm/trunk/src/interface/connections/listings.py
===================================================================
--- arm/trunk/src/interface/connections/listings.py 2011-03-02 21:16:07 UTC (rev 24292)
+++ arm/trunk/src/interface/connections/listings.py 2011-03-03 03:37:40 UTC (rev 24293)
@@ -7,15 +7,14 @@
from util import connections, enum, hostnames, torTools, uiTools
# Connection Categories:
-# Inbound Relay connection, coming to us.
-# Outbound Relay connection, leaving us.
-# Exit Outbound relay connection leaving the Tor network.
-# Socks Application client connection.
-# Client Circuits for our client traffic.
-# Directory Fetching tor consensus information.
-# Control Tor controller (arm, vidalia, etc).
+# Inbound Relay connection, coming to us.
+# Outbound Relay connection, leaving us.
+# Exit Outbound relay connection leaving the Tor network.
+# Client Circuits for our client traffic.
+# Application Socks connections using Tor.
+# Directory Fetching tor consensus information.
+# Control Tor controller (arm, vidalia, etc).
-# TODO: add recognizing of CLIENT connection type
DestAttr = enum.Enum("NONE", "LOCALE", "HOSTNAME")
Category = enum.Enum("INBOUND", "OUTBOUND", "EXIT", "CLIENT", "APPLICATION", "DIRECTORY", "CONTROL")
CATEGORY_COLOR = {Category.INBOUND: "green", Category.OUTBOUND: "blue",
@@ -28,6 +27,14 @@
LABEL_FORMAT = "%s --> %s %s%s"
LABEL_MIN_PADDING = 2 # min space between listing label and following data
+CONFIG = {"features.connection.showColumn.fingerprint": True,
+ "features.connection.showColumn.nickname": True,
+ "features.connection.showColumn.destination": True,
+ "features.connection.showColumn.expanedIp": True}
+
+def loadConfig(config):
+ config.update(CONFIG)
+
class Endpoint:
"""
Collection of attributes associated with a connection endpoint. This is a
@@ -348,18 +355,18 @@
usedSpace += len(src) + len(dst) # base data requires 47 characters
- if width > usedSpace + 42:
+ if width > usedSpace + 42 and CONFIG["features.connection.showColumn.fingerprint"]:
# show fingerprint (column width: 42 characters)
etc += "%-40s " % self.foreign.getFingerprint()
usedSpace += 42
- if addrDiffer and width > usedSpace + 28:
+ if addrDiffer and width > usedSpace + 28 and CONFIG["features.connection.showColumn.expanedIp"]:
# include the internal address in the src (extra 28 characters)
internalAddress = "%s:%s" % (self.local.getIpAddr(), self.local.getPort())
src = "%-21s --> %s" % (internalAddress, src)
usedSpace += 28
- if width > usedSpace + 10:
+ if width > usedSpace + 10 and CONFIG["features.connection.showColumn.nickname"]:
# show nickname (column width: remainder)
nicknameSpace = width - usedSpace
nicknameLabel = uiTools.cropStr(self.foreign.getNickname(), nicknameSpace, 0)
@@ -371,17 +378,17 @@
usedSpace += len(stc)
minHostnameSpace = 40
- if width > usedSpace + minHostnameSpace + 28:
+ if width > usedSpace + minHostnameSpace + 28 and CONFIG["features.connection.showColumn.destination"]:
# show destination ip/port/locale (column width: 28 characters)
etc += "%-26s " % dstAddress
usedSpace += 28
- if width > usedSpace + minHostnameSpace + 42:
+ if width > usedSpace + minHostnameSpace + 42 and CONFIG["features.connection.showColumn.fingerprint"]:
# show fingerprint (column width: 42 characters)
etc += "%-40s " % self.foreign.getFingerprint()
usedSpace += 42
- if width > usedSpace + minHostnameSpace + 17:
+ if width > usedSpace + minHostnameSpace + 17 and CONFIG["features.connection.showColumn.nickname"]:
# show nickname (column width: min 17 characters, uses half of the remainder)
nicknameSpace = 15 + (width - (usedSpace + minHostnameSpace + 17)) / 2
nicknameLabel = uiTools.cropStr(self.foreign.getNickname(), nicknameSpace, 0)
@@ -417,12 +424,14 @@
# if there's room then also show a column with the destination
# ip/port/locale (column width: 28 characters)
isIpLocaleIncluded = width > usedSpace + 45
+ isIpLocaleIncluded &= CONFIG["features.connection.showColumn.destination"]
if isIpLocaleIncluded: nicknameSpace -= 28
- nicknameSpace = width - usedSpace - 28 if isIpLocaleVisible else width - usedSpace
- nicknameLabel = uiTools.cropStr(self.foreign.getNickname(), nicknameSpace, 0)
- etc += ("%%-%is " % nicknameSpace) % nicknameLabel
- usedSpace += nicknameSpace + 2
+ if CONFIG["features.connection.showColumn.nickname"]:
+ nicknameSpace = width - usedSpace - 28 if isIpLocaleVisible else width - usedSpace
+ nicknameLabel = uiTools.cropStr(self.foreign.getNickname(), nicknameSpace, 0)
+ etc += ("%%-%is " % nicknameSpace) % nicknameLabel
+ usedSpace += nicknameSpace + 2
if isIpLocaleIncluded:
etc += "%-26s " % dstAddress
@@ -434,12 +443,12 @@
else: dst = self.foreign.getNickname()
minBaseSpace = 50
- if width > usedSpace + minBaseSpace + 42:
+ if width > usedSpace + minBaseSpace + 42 and CONFIG["features.connection.showColumn.fingerprint"]:
# show fingerprint (column width: 42 characters)
etc += "%-40s " % self.foreign.getFingerprint()
usedSpace += 42
- if width > usedSpace + minBaseSpace + 28:
+ if width > usedSpace + minBaseSpace + 28 and CONFIG["features.connection.showColumn.destination"]:
# show destination ip/port/locale (column width: 28 characters)
etc += "%-26s " % dstAddress
usedSpace += 28
Modified: arm/trunk/src/interface/controller.py
===================================================================
--- arm/trunk/src/interface/controller.py 2011-03-02 21:16:07 UTC (rev 24292)
+++ arm/trunk/src/interface/controller.py 2011-03-03 03:37:40 UTC (rev 24293)
@@ -25,6 +25,7 @@
import fileDescriptorPopup
import interface.connections.connPanel
+import interface.connections.listings
from util import conf, log, connections, hostnames, panel, sysTools, torConfig, torTools, uiTools
import graphing.bandwidthStats
import graphing.connStats
@@ -426,6 +427,7 @@
config = conf.getConfig("arm")
config.update(CONFIG)
graphing.graphPanel.loadConfig(config)
+ interface.connections.listings.loadConfig(config)
# adds events needed for arm functionality to the torTools REQ_EVENTS mapping
# (they're then included with any setControllerEvents call, and log a more
1
0